diff --git a/erpnext/accounts/DocType Mapper/Delivery Note-Sales Invoice/Delivery Note-Sales Invoice.txt b/accounts/DocType Mapper/Delivery Note-Sales Invoice/Delivery Note-Sales Invoice.txt
similarity index 100%
rename from erpnext/accounts/DocType Mapper/Delivery Note-Sales Invoice/Delivery Note-Sales Invoice.txt
rename to accounts/DocType Mapper/Delivery Note-Sales Invoice/Delivery Note-Sales Invoice.txt
diff --git a/erpnext/accounts/DocType Mapper/Project-Sales Invoice/Project-Sales Invoice.txt b/accounts/DocType Mapper/Project-Sales Invoice/Project-Sales Invoice.txt
similarity index 100%
rename from erpnext/accounts/DocType Mapper/Project-Sales Invoice/Project-Sales Invoice.txt
rename to accounts/DocType Mapper/Project-Sales Invoice/Project-Sales Invoice.txt
diff --git a/erpnext/accounts/DocType Mapper/Purchase Order-Purchase Invoice/Purchase Order-Purchase Invoice.txt b/accounts/DocType Mapper/Purchase Order-Purchase Invoice/Purchase Order-Purchase Invoice.txt
similarity index 100%
rename from erpnext/accounts/DocType Mapper/Purchase Order-Purchase Invoice/Purchase Order-Purchase Invoice.txt
rename to accounts/DocType Mapper/Purchase Order-Purchase Invoice/Purchase Order-Purchase Invoice.txt
diff --git a/erpnext/accounts/DocType Mapper/Purchase Receipt-Purchase Invoice/Purchase Receipt-Purchase Invoice.txt b/accounts/DocType Mapper/Purchase Receipt-Purchase Invoice/Purchase Receipt-Purchase Invoice.txt
similarity index 100%
rename from erpnext/accounts/DocType Mapper/Purchase Receipt-Purchase Invoice/Purchase Receipt-Purchase Invoice.txt
rename to accounts/DocType Mapper/Purchase Receipt-Purchase Invoice/Purchase Receipt-Purchase Invoice.txt
diff --git a/erpnext/accounts/DocType Mapper/Sales Order-Sales Invoice/Sales Order-Sales Invoice.txt b/accounts/DocType Mapper/Sales Order-Sales Invoice/Sales Order-Sales Invoice.txt
similarity index 100%
rename from erpnext/accounts/DocType Mapper/Sales Order-Sales Invoice/Sales Order-Sales Invoice.txt
rename to accounts/DocType Mapper/Sales Order-Sales Invoice/Sales Order-Sales Invoice.txt
diff --git a/erpnext/accounts/GL Mapper/Journal Voucher/Journal Voucher.txt b/accounts/GL Mapper/Journal Voucher/Journal Voucher.txt
similarity index 100%
rename from erpnext/accounts/GL Mapper/Journal Voucher/Journal Voucher.txt
rename to accounts/GL Mapper/Journal Voucher/Journal Voucher.txt
diff --git a/erpnext/accounts/GL Mapper/POS with write off/POS with write off.txt b/accounts/GL Mapper/POS with write off/POS with write off.txt
similarity index 100%
rename from erpnext/accounts/GL Mapper/POS with write off/POS with write off.txt
rename to accounts/GL Mapper/POS with write off/POS with write off.txt
diff --git a/erpnext/accounts/GL Mapper/POS/POS.txt b/accounts/GL Mapper/POS/POS.txt
similarity index 100%
rename from erpnext/accounts/GL Mapper/POS/POS.txt
rename to accounts/GL Mapper/POS/POS.txt
diff --git a/erpnext/accounts/GL Mapper/Purchase Invoice with write off/Purchase Invoice with write off.txt b/accounts/GL Mapper/Purchase Invoice with write off/Purchase Invoice with write off.txt
similarity index 100%
rename from erpnext/accounts/GL Mapper/Purchase Invoice with write off/Purchase Invoice with write off.txt
rename to accounts/GL Mapper/Purchase Invoice with write off/Purchase Invoice with write off.txt
diff --git a/erpnext/accounts/GL Mapper/Purchase Invoice/Purchase Invoice.txt b/accounts/GL Mapper/Purchase Invoice/Purchase Invoice.txt
similarity index 100%
rename from erpnext/accounts/GL Mapper/Purchase Invoice/Purchase Invoice.txt
rename to accounts/GL Mapper/Purchase Invoice/Purchase Invoice.txt
diff --git a/erpnext/accounts/GL Mapper/Sales Invoice/Sales Invoice.txt b/accounts/GL Mapper/Sales Invoice/Sales Invoice.txt
similarity index 100%
rename from erpnext/accounts/GL Mapper/Sales Invoice/Sales Invoice.txt
rename to accounts/GL Mapper/Sales Invoice/Sales Invoice.txt
diff --git a/erpnext/accounts/Print Format/Cheque Printing Format/Cheque Printing Format.txt b/accounts/Print Format/Cheque Printing Format/Cheque Printing Format.txt
similarity index 100%
rename from erpnext/accounts/Print Format/Cheque Printing Format/Cheque Printing Format.txt
rename to accounts/Print Format/Cheque Printing Format/Cheque Printing Format.txt
diff --git a/erpnext/accounts/Print Format/Form 16A Print Format/Form 16A Print Format.txt b/accounts/Print Format/Form 16A Print Format/Form 16A Print Format.txt
similarity index 100%
rename from erpnext/accounts/Print Format/Form 16A Print Format/Form 16A Print Format.txt
rename to accounts/Print Format/Form 16A Print Format/Form 16A Print Format.txt
diff --git a/erpnext/accounts/Print Format/POS Invoice/POS Invoice.txt b/accounts/Print Format/POS Invoice/POS Invoice.txt
similarity index 100%
rename from erpnext/accounts/Print Format/POS Invoice/POS Invoice.txt
rename to accounts/Print Format/POS Invoice/POS Invoice.txt
diff --git a/erpnext/accounts/Print Format/Payment Receipt Voucher/Payment Receipt Voucher.txt b/accounts/Print Format/Payment Receipt Voucher/Payment Receipt Voucher.txt
similarity index 100%
rename from erpnext/accounts/Print Format/Payment Receipt Voucher/Payment Receipt Voucher.txt
rename to accounts/Print Format/Payment Receipt Voucher/Payment Receipt Voucher.txt
diff --git a/erpnext/accounts/Print Format/Sales Invoice Classic/Sales Invoice Classic.txt b/accounts/Print Format/Sales Invoice Classic/Sales Invoice Classic.txt
similarity index 100%
rename from erpnext/accounts/Print Format/Sales Invoice Classic/Sales Invoice Classic.txt
rename to accounts/Print Format/Sales Invoice Classic/Sales Invoice Classic.txt
diff --git a/erpnext/accounts/Print Format/Sales Invoice Modern/Sales Invoice Modern.txt b/accounts/Print Format/Sales Invoice Modern/Sales Invoice Modern.txt
similarity index 100%
rename from erpnext/accounts/Print Format/Sales Invoice Modern/Sales Invoice Modern.txt
rename to accounts/Print Format/Sales Invoice Modern/Sales Invoice Modern.txt
diff --git a/erpnext/accounts/Print Format/Sales Invoice Spartan/Sales Invoice Spartan.txt b/accounts/Print Format/Sales Invoice Spartan/Sales Invoice Spartan.txt
similarity index 100%
rename from erpnext/accounts/Print Format/Sales Invoice Spartan/Sales Invoice Spartan.txt
rename to accounts/Print Format/Sales Invoice Spartan/Sales Invoice Spartan.txt
diff --git "a/erpnext/accounts/TDS Rate Chart/Rate chart \05001-07-2010\051/Rate chart \05001-07-2010\051.txt" "b/accounts/TDS Rate Chart/Rate chart \05001-07-2010\051/Rate chart \05001-07-2010\051.txt"
similarity index 100%
rename from "erpnext/accounts/TDS Rate Chart/Rate chart \05001-07-2010\051/Rate chart \05001-07-2010\051.txt"
rename to "accounts/TDS Rate Chart/Rate chart \05001-07-2010\051/Rate chart \05001-07-2010\051.txt"
diff --git a/erpnext/accounts/TDS Rate Chart/TDS Rate Chart October 2009 Onwards/TDS Rate Chart October 2009 Onwards.txt b/accounts/TDS Rate Chart/TDS Rate Chart October 2009 Onwards/TDS Rate Chart October 2009 Onwards.txt
similarity index 100%
rename from erpnext/accounts/TDS Rate Chart/TDS Rate Chart October 2009 Onwards/TDS Rate Chart October 2009 Onwards.txt
rename to accounts/TDS Rate Chart/TDS Rate Chart October 2009 Onwards/TDS Rate Chart October 2009 Onwards.txt
diff --git a/erpnext/accounts/TDS Rate Chart/TDS Rate Chart for 2009-10/TDS Rate Chart for 2009-10.txt b/accounts/TDS Rate Chart/TDS Rate Chart for 2009-10/TDS Rate Chart for 2009-10.txt
similarity index 100%
rename from erpnext/accounts/TDS Rate Chart/TDS Rate Chart for 2009-10/TDS Rate Chart for 2009-10.txt
rename to accounts/TDS Rate Chart/TDS Rate Chart for 2009-10/TDS Rate Chart for 2009-10.txt
diff --git a/erpnext/accounts/__init__.py b/accounts/__init__.py
similarity index 100%
rename from erpnext/accounts/__init__.py
rename to accounts/__init__.py
diff --git a/erpnext/accounts/doctype/__init__.py b/accounts/doctype/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/__init__.py
rename to accounts/doctype/__init__.py
diff --git a/erpnext/accounts/doctype/account/__init__.py b/accounts/doctype/account/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/account/__init__.py
rename to accounts/doctype/account/__init__.py
diff --git a/erpnext/accounts/doctype/account/account.js b/accounts/doctype/account/account.js
similarity index 100%
rename from erpnext/accounts/doctype/account/account.js
rename to accounts/doctype/account/account.js
diff --git a/erpnext/accounts/doctype/account/account.py b/accounts/doctype/account/account.py
similarity index 97%
rename from erpnext/accounts/doctype/account/account.py
rename to accounts/doctype/account/account.py
index 79ca322..180aeaa 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/accounts/doctype/account/account.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/account/account.txt b/accounts/doctype/account/account.txt
similarity index 100%
rename from erpnext/accounts/doctype/account/account.txt
rename to accounts/doctype/account/account.txt
diff --git a/erpnext/accounts/doctype/account_balance/__init__.py b/accounts/doctype/account_balance/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/account_balance/__init__.py
rename to accounts/doctype/account_balance/__init__.py
diff --git a/erpnext/accounts/doctype/account_balance/account_balance.txt b/accounts/doctype/account_balance/account_balance.txt
similarity index 100%
rename from erpnext/accounts/doctype/account_balance/account_balance.txt
rename to accounts/doctype/account_balance/account_balance.txt
diff --git a/erpnext/accounts/doctype/bank_reconciliation/__init__.py b/accounts/doctype/bank_reconciliation/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/bank_reconciliation/__init__.py
rename to accounts/doctype/bank_reconciliation/__init__.py
diff --git a/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.js b/accounts/doctype/bank_reconciliation/bank_reconciliation.js
similarity index 100%
rename from erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.js
rename to accounts/doctype/bank_reconciliation/bank_reconciliation.js
diff --git a/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py b/accounts/doctype/bank_reconciliation/bank_reconciliation.py
similarity index 92%
rename from erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py
rename to accounts/doctype/bank_reconciliation/bank_reconciliation.py
index 4bf5e97..29cfa51 100644
--- a/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.py
+++ b/accounts/doctype/bank_reconciliation/bank_reconciliation.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.txt b/accounts/doctype/bank_reconciliation/bank_reconciliation.txt
similarity index 100%
rename from erpnext/accounts/doctype/bank_reconciliation/bank_reconciliation.txt
rename to accounts/doctype/bank_reconciliation/bank_reconciliation.txt
diff --git a/erpnext/accounts/doctype/bank_reconciliation_detail/__init__.py b/accounts/doctype/bank_reconciliation_detail/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/bank_reconciliation_detail/__init__.py
rename to accounts/doctype/bank_reconciliation_detail/__init__.py
diff --git a/erpnext/accounts/doctype/bank_reconciliation_detail/bank_reconciliation_detail.txt b/accounts/doctype/bank_reconciliation_detail/bank_reconciliation_detail.txt
similarity index 100%
rename from erpnext/accounts/doctype/bank_reconciliation_detail/bank_reconciliation_detail.txt
rename to accounts/doctype/bank_reconciliation_detail/bank_reconciliation_detail.txt
diff --git a/erpnext/accounts/doctype/budget_control/__init__.py b/accounts/doctype/budget_control/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/budget_control/__init__.py
rename to accounts/doctype/budget_control/__init__.py
diff --git a/erpnext/accounts/doctype/budget_control/budget_control.py b/accounts/doctype/budget_control/budget_control.py
similarity index 94%
rename from erpnext/accounts/doctype/budget_control/budget_control.py
rename to accounts/doctype/budget_control/budget_control.py
index c088ade..183e39b 100644
--- a/erpnext/accounts/doctype/budget_control/budget_control.py
+++ b/accounts/doctype/budget_control/budget_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/budget_control/budget_control.txt b/accounts/doctype/budget_control/budget_control.txt
similarity index 100%
rename from erpnext/accounts/doctype/budget_control/budget_control.txt
rename to accounts/doctype/budget_control/budget_control.txt
diff --git a/erpnext/accounts/doctype/budget_detail/__init__.py b/accounts/doctype/budget_detail/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/budget_detail/__init__.py
rename to accounts/doctype/budget_detail/__init__.py
diff --git a/erpnext/accounts/doctype/budget_detail/budget_detail.txt b/accounts/doctype/budget_detail/budget_detail.txt
similarity index 100%
rename from erpnext/accounts/doctype/budget_detail/budget_detail.txt
rename to accounts/doctype/budget_detail/budget_detail.txt
diff --git a/erpnext/accounts/doctype/budget_distribution/__init__.py b/accounts/doctype/budget_distribution/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/budget_distribution/__init__.py
rename to accounts/doctype/budget_distribution/__init__.py
diff --git a/erpnext/accounts/doctype/budget_distribution/budget_distribution.js b/accounts/doctype/budget_distribution/budget_distribution.js
similarity index 100%
rename from erpnext/accounts/doctype/budget_distribution/budget_distribution.js
rename to accounts/doctype/budget_distribution/budget_distribution.js
diff --git a/erpnext/accounts/doctype/budget_distribution/budget_distribution.py b/accounts/doctype/budget_distribution/budget_distribution.py
similarity index 100%
rename from erpnext/accounts/doctype/budget_distribution/budget_distribution.py
rename to accounts/doctype/budget_distribution/budget_distribution.py
diff --git a/erpnext/accounts/doctype/budget_distribution/budget_distribution.txt b/accounts/doctype/budget_distribution/budget_distribution.txt
similarity index 100%
rename from erpnext/accounts/doctype/budget_distribution/budget_distribution.txt
rename to accounts/doctype/budget_distribution/budget_distribution.txt
diff --git a/erpnext/accounts/doctype/budget_distribution_detail/__init__.py b/accounts/doctype/budget_distribution_detail/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/budget_distribution_detail/__init__.py
rename to accounts/doctype/budget_distribution_detail/__init__.py
diff --git a/erpnext/accounts/doctype/budget_distribution_detail/budget_distribution_detail.txt b/accounts/doctype/budget_distribution_detail/budget_distribution_detail.txt
similarity index 100%
rename from erpnext/accounts/doctype/budget_distribution_detail/budget_distribution_detail.txt
rename to accounts/doctype/budget_distribution_detail/budget_distribution_detail.txt
diff --git a/erpnext/accounts/doctype/c_form/__init__.py b/accounts/doctype/c_form/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/c_form/__init__.py
rename to accounts/doctype/c_form/__init__.py
diff --git a/erpnext/accounts/doctype/c_form/c_form.js b/accounts/doctype/c_form/c_form.js
similarity index 100%
rename from erpnext/accounts/doctype/c_form/c_form.js
rename to accounts/doctype/c_form/c_form.js
diff --git a/erpnext/accounts/doctype/c_form/c_form.py b/accounts/doctype/c_form/c_form.py
similarity index 100%
rename from erpnext/accounts/doctype/c_form/c_form.py
rename to accounts/doctype/c_form/c_form.py
diff --git a/erpnext/accounts/doctype/c_form/c_form.txt b/accounts/doctype/c_form/c_form.txt
similarity index 100%
rename from erpnext/accounts/doctype/c_form/c_form.txt
rename to accounts/doctype/c_form/c_form.txt
diff --git a/erpnext/accounts/doctype/c_form_invoice_detail/__init__.py b/accounts/doctype/c_form_invoice_detail/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/c_form_invoice_detail/__init__.py
rename to accounts/doctype/c_form_invoice_detail/__init__.py
diff --git a/erpnext/accounts/doctype/c_form_invoice_detail/c_form_invoice_detail.txt b/accounts/doctype/c_form_invoice_detail/c_form_invoice_detail.txt
similarity index 100%
rename from erpnext/accounts/doctype/c_form_invoice_detail/c_form_invoice_detail.txt
rename to accounts/doctype/c_form_invoice_detail/c_form_invoice_detail.txt
diff --git a/erpnext/accounts/doctype/cost_center/__init__.py b/accounts/doctype/cost_center/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/cost_center/__init__.py
rename to accounts/doctype/cost_center/__init__.py
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.js b/accounts/doctype/cost_center/cost_center.js
similarity index 100%
rename from erpnext/accounts/doctype/cost_center/cost_center.js
rename to accounts/doctype/cost_center/cost_center.js
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.py b/accounts/doctype/cost_center/cost_center.py
similarity index 100%
rename from erpnext/accounts/doctype/cost_center/cost_center.py
rename to accounts/doctype/cost_center/cost_center.py
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.txt b/accounts/doctype/cost_center/cost_center.txt
similarity index 100%
rename from erpnext/accounts/doctype/cost_center/cost_center.txt
rename to accounts/doctype/cost_center/cost_center.txt
diff --git a/erpnext/accounts/doctype/fiscal_year/__init__.py b/accounts/doctype/fiscal_year/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/fiscal_year/__init__.py
rename to accounts/doctype/fiscal_year/__init__.py
diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.js b/accounts/doctype/fiscal_year/fiscal_year.js
similarity index 100%
rename from erpnext/accounts/doctype/fiscal_year/fiscal_year.js
rename to accounts/doctype/fiscal_year/fiscal_year.js
diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py b/accounts/doctype/fiscal_year/fiscal_year.py
similarity index 96%
rename from erpnext/accounts/doctype/fiscal_year/fiscal_year.py
rename to accounts/doctype/fiscal_year/fiscal_year.py
index 3ef2776..7070203 100644
--- a/erpnext/accounts/doctype/fiscal_year/fiscal_year.py
+++ b/accounts/doctype/fiscal_year/fiscal_year.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/fiscal_year/fiscal_year.txt b/accounts/doctype/fiscal_year/fiscal_year.txt
similarity index 100%
rename from erpnext/accounts/doctype/fiscal_year/fiscal_year.txt
rename to accounts/doctype/fiscal_year/fiscal_year.txt
diff --git a/erpnext/accounts/doctype/form_16a/__init__.py b/accounts/doctype/form_16a/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/form_16a/__init__.py
rename to accounts/doctype/form_16a/__init__.py
diff --git a/erpnext/accounts/doctype/form_16a/form_16a.js b/accounts/doctype/form_16a/form_16a.js
similarity index 100%
rename from erpnext/accounts/doctype/form_16a/form_16a.js
rename to accounts/doctype/form_16a/form_16a.js
diff --git a/erpnext/accounts/doctype/form_16a/form_16a.py b/accounts/doctype/form_16a/form_16a.py
similarity index 95%
rename from erpnext/accounts/doctype/form_16a/form_16a.py
rename to accounts/doctype/form_16a/form_16a.py
index a254ef4..900a283 100644
--- a/erpnext/accounts/doctype/form_16a/form_16a.py
+++ b/accounts/doctype/form_16a/form_16a.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/form_16a/form_16a.txt b/accounts/doctype/form_16a/form_16a.txt
similarity index 100%
rename from erpnext/accounts/doctype/form_16a/form_16a.txt
rename to accounts/doctype/form_16a/form_16a.txt
diff --git a/erpnext/accounts/doctype/form_16a_ack_detail/__init__.py b/accounts/doctype/form_16a_ack_detail/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/form_16a_ack_detail/__init__.py
rename to accounts/doctype/form_16a_ack_detail/__init__.py
diff --git a/erpnext/accounts/doctype/form_16a_ack_detail/form_16a_ack_detail.txt b/accounts/doctype/form_16a_ack_detail/form_16a_ack_detail.txt
similarity index 100%
rename from erpnext/accounts/doctype/form_16a_ack_detail/form_16a_ack_detail.txt
rename to accounts/doctype/form_16a_ack_detail/form_16a_ack_detail.txt
diff --git a/erpnext/accounts/doctype/form_16a_tax_detail/__init__.py b/accounts/doctype/form_16a_tax_detail/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/form_16a_tax_detail/__init__.py
rename to accounts/doctype/form_16a_tax_detail/__init__.py
diff --git a/erpnext/accounts/doctype/form_16a_tax_detail/form_16a_tax_detail.txt b/accounts/doctype/form_16a_tax_detail/form_16a_tax_detail.txt
similarity index 100%
rename from erpnext/accounts/doctype/form_16a_tax_detail/form_16a_tax_detail.txt
rename to accounts/doctype/form_16a_tax_detail/form_16a_tax_detail.txt
diff --git a/erpnext/accounts/doctype/gl_control/__init__.py b/accounts/doctype/gl_control/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/gl_control/__init__.py
rename to accounts/doctype/gl_control/__init__.py
diff --git a/erpnext/accounts/doctype/gl_control/gl_control.py b/accounts/doctype/gl_control/gl_control.py
similarity index 98%
rename from erpnext/accounts/doctype/gl_control/gl_control.py
rename to accounts/doctype/gl_control/gl_control.py
index bd10d6c..957b10e 100644
--- a/erpnext/accounts/doctype/gl_control/gl_control.py
+++ b/accounts/doctype/gl_control/gl_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist, clone
 from webnotes.model.code import get_obj
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 from webnotes.utils.email_lib import sendmail
 
 in_transaction = webnotes.conn.in_transaction
diff --git a/erpnext/accounts/doctype/gl_control/gl_control.txt b/accounts/doctype/gl_control/gl_control.txt
similarity index 100%
rename from erpnext/accounts/doctype/gl_control/gl_control.txt
rename to accounts/doctype/gl_control/gl_control.txt
diff --git a/erpnext/accounts/doctype/gl_entry/__init__.py b/accounts/doctype/gl_entry/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/gl_entry/__init__.py
rename to accounts/doctype/gl_entry/__init__.py
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/accounts/doctype/gl_entry/gl_entry.py
similarity index 97%
rename from erpnext/accounts/doctype/gl_entry/gl_entry.py
rename to accounts/doctype/gl_entry/gl_entry.py
index 85670ab..6010b88 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.py
+++ b/accounts/doctype/gl_entry/gl_entry.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.txt b/accounts/doctype/gl_entry/gl_entry.txt
similarity index 100%
rename from erpnext/accounts/doctype/gl_entry/gl_entry.txt
rename to accounts/doctype/gl_entry/gl_entry.txt
diff --git a/erpnext/accounts/doctype/journal_voucher/__init__.py b/accounts/doctype/journal_voucher/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/journal_voucher/__init__.py
rename to accounts/doctype/journal_voucher/__init__.py
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.js b/accounts/doctype/journal_voucher/journal_voucher.js
similarity index 100%
rename from erpnext/accounts/doctype/journal_voucher/journal_voucher.js
rename to accounts/doctype/journal_voucher/journal_voucher.js
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/accounts/doctype/journal_voucher/journal_voucher.py
similarity index 99%
rename from erpnext/accounts/doctype/journal_voucher/journal_voucher.py
rename to accounts/doctype/journal_voucher/journal_voucher.py
index 1c01700..86765b6 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/accounts/doctype/journal_voucher/journal_voucher.py
@@ -23,7 +23,7 @@
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.txt b/accounts/doctype/journal_voucher/journal_voucher.txt
similarity index 100%
rename from erpnext/accounts/doctype/journal_voucher/journal_voucher.txt
rename to accounts/doctype/journal_voucher/journal_voucher.txt
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher_list.js b/accounts/doctype/journal_voucher/journal_voucher_list.js
similarity index 100%
rename from erpnext/accounts/doctype/journal_voucher/journal_voucher_list.js
rename to accounts/doctype/journal_voucher/journal_voucher_list.js
diff --git a/erpnext/accounts/doctype/journal_voucher_detail/__init__.py b/accounts/doctype/journal_voucher_detail/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/journal_voucher_detail/__init__.py
rename to accounts/doctype/journal_voucher_detail/__init__.py
diff --git a/erpnext/accounts/doctype/journal_voucher_detail/journal_voucher_detail.txt b/accounts/doctype/journal_voucher_detail/journal_voucher_detail.txt
similarity index 100%
rename from erpnext/accounts/doctype/journal_voucher_detail/journal_voucher_detail.txt
rename to accounts/doctype/journal_voucher_detail/journal_voucher_detail.txt
diff --git a/erpnext/accounts/doctype/lease_agreement/__init__.py b/accounts/doctype/lease_agreement/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/lease_agreement/__init__.py
rename to accounts/doctype/lease_agreement/__init__.py
diff --git a/erpnext/accounts/doctype/lease_agreement/lease_agreement.js b/accounts/doctype/lease_agreement/lease_agreement.js
similarity index 100%
rename from erpnext/accounts/doctype/lease_agreement/lease_agreement.js
rename to accounts/doctype/lease_agreement/lease_agreement.js
diff --git a/erpnext/accounts/doctype/lease_agreement/lease_agreement.py b/accounts/doctype/lease_agreement/lease_agreement.py
similarity index 100%
rename from erpnext/accounts/doctype/lease_agreement/lease_agreement.py
rename to accounts/doctype/lease_agreement/lease_agreement.py
diff --git a/erpnext/accounts/doctype/lease_agreement/lease_agreement.txt b/accounts/doctype/lease_agreement/lease_agreement.txt
similarity index 100%
rename from erpnext/accounts/doctype/lease_agreement/lease_agreement.txt
rename to accounts/doctype/lease_agreement/lease_agreement.txt
diff --git a/erpnext/accounts/doctype/lease_installment/__init__.py b/accounts/doctype/lease_installment/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/lease_installment/__init__.py
rename to accounts/doctype/lease_installment/__init__.py
diff --git a/erpnext/accounts/doctype/lease_installment/lease_installment.txt b/accounts/doctype/lease_installment/lease_installment.txt
similarity index 100%
rename from erpnext/accounts/doctype/lease_installment/lease_installment.txt
rename to accounts/doctype/lease_installment/lease_installment.txt
diff --git a/erpnext/accounts/doctype/mis_control/__init__.py b/accounts/doctype/mis_control/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/mis_control/__init__.py
rename to accounts/doctype/mis_control/__init__.py
diff --git a/erpnext/accounts/doctype/mis_control/mis_control.py b/accounts/doctype/mis_control/mis_control.py
similarity index 98%
rename from erpnext/accounts/doctype/mis_control/mis_control.py
rename to accounts/doctype/mis_control/mis_control.py
index f32b3e6..202864e 100644
--- a/erpnext/accounts/doctype/mis_control/mis_control.py
+++ b/accounts/doctype/mis_control/mis_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/mis_control/mis_control.txt b/accounts/doctype/mis_control/mis_control.txt
similarity index 100%
rename from erpnext/accounts/doctype/mis_control/mis_control.txt
rename to accounts/doctype/mis_control/mis_control.txt
diff --git a/erpnext/accounts/doctype/mode_of_payment/__init__.py b/accounts/doctype/mode_of_payment/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/mode_of_payment/__init__.py
rename to accounts/doctype/mode_of_payment/__init__.py
diff --git a/erpnext/accounts/doctype/mode_of_payment/mode_of_payment.js b/accounts/doctype/mode_of_payment/mode_of_payment.js
similarity index 100%
rename from erpnext/accounts/doctype/mode_of_payment/mode_of_payment.js
rename to accounts/doctype/mode_of_payment/mode_of_payment.js
diff --git a/erpnext/accounts/doctype/mode_of_payment/mode_of_payment.txt b/accounts/doctype/mode_of_payment/mode_of_payment.txt
similarity index 100%
rename from erpnext/accounts/doctype/mode_of_payment/mode_of_payment.txt
rename to accounts/doctype/mode_of_payment/mode_of_payment.txt
diff --git a/erpnext/accounts/doctype/multi_ledger_report/__init__.py b/accounts/doctype/multi_ledger_report/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/multi_ledger_report/__init__.py
rename to accounts/doctype/multi_ledger_report/__init__.py
diff --git a/erpnext/accounts/doctype/multi_ledger_report/multi_ledger_report.js b/accounts/doctype/multi_ledger_report/multi_ledger_report.js
similarity index 100%
rename from erpnext/accounts/doctype/multi_ledger_report/multi_ledger_report.js
rename to accounts/doctype/multi_ledger_report/multi_ledger_report.js
diff --git a/erpnext/accounts/doctype/multi_ledger_report/multi_ledger_report.py b/accounts/doctype/multi_ledger_report/multi_ledger_report.py
similarity index 98%
rename from erpnext/accounts/doctype/multi_ledger_report/multi_ledger_report.py
rename to accounts/doctype/multi_ledger_report/multi_ledger_report.py
index 53d011f..51dad0f 100755
--- a/erpnext/accounts/doctype/multi_ledger_report/multi_ledger_report.py
+++ b/accounts/doctype/multi_ledger_report/multi_ledger_report.py
@@ -19,7 +19,7 @@
 from webnotes.utils import add_days, cint, cstr, flt, getdate
 from webnotes.model.doclist import getlist
 from webnotes.model.code import get_obj
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 sql = webnotes.conn.sql
 get_value = webnotes.conn.get_value
diff --git a/erpnext/accounts/doctype/multi_ledger_report/multi_ledger_report.txt b/accounts/doctype/multi_ledger_report/multi_ledger_report.txt
similarity index 100%
rename from erpnext/accounts/doctype/multi_ledger_report/multi_ledger_report.txt
rename to accounts/doctype/multi_ledger_report/multi_ledger_report.txt
diff --git a/erpnext/accounts/doctype/multi_ledger_report_detail/__init__.py b/accounts/doctype/multi_ledger_report_detail/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/multi_ledger_report_detail/__init__.py
rename to accounts/doctype/multi_ledger_report_detail/__init__.py
diff --git a/erpnext/accounts/doctype/multi_ledger_report_detail/multi_ledger_report_detail.txt b/accounts/doctype/multi_ledger_report_detail/multi_ledger_report_detail.txt
similarity index 100%
rename from erpnext/accounts/doctype/multi_ledger_report_detail/multi_ledger_report_detail.txt
rename to accounts/doctype/multi_ledger_report_detail/multi_ledger_report_detail.txt
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/__init__.py b/accounts/doctype/payment_to_invoice_matching_tool/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/payment_to_invoice_matching_tool/__init__.py
rename to accounts/doctype/payment_to_invoice_matching_tool/__init__.py
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.js b/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.js
similarity index 100%
rename from erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.js
rename to accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.js
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py b/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py
similarity index 95%
rename from erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py
rename to accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py
index d28f89b..0d838db 100644
--- a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py
+++ b/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.txt b/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.txt
similarity index 100%
rename from erpnext/accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.txt
rename to accounts/doctype/payment_to_invoice_matching_tool/payment_to_invoice_matching_tool.txt
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool/test_ir.py b/accounts/doctype/payment_to_invoice_matching_tool/test_ir.py
similarity index 100%
rename from erpnext/accounts/doctype/payment_to_invoice_matching_tool/test_ir.py
rename to accounts/doctype/payment_to_invoice_matching_tool/test_ir.py
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/__init__.py b/accounts/doctype/payment_to_invoice_matching_tool_detail/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/__init__.py
rename to accounts/doctype/payment_to_invoice_matching_tool_detail/__init__.py
diff --git a/erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/payment_to_invoice_matching_tool_detail.txt b/accounts/doctype/payment_to_invoice_matching_tool_detail/payment_to_invoice_matching_tool_detail.txt
similarity index 100%
rename from erpnext/accounts/doctype/payment_to_invoice_matching_tool_detail/payment_to_invoice_matching_tool_detail.txt
rename to accounts/doctype/payment_to_invoice_matching_tool_detail/payment_to_invoice_matching_tool_detail.txt
diff --git a/erpnext/accounts/doctype/period_closing_voucher/__init__.py b/accounts/doctype/period_closing_voucher/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/period_closing_voucher/__init__.py
rename to accounts/doctype/period_closing_voucher/__init__.py
diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js b/accounts/doctype/period_closing_voucher/period_closing_voucher.js
similarity index 100%
rename from erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.js
rename to accounts/doctype/period_closing_voucher/period_closing_voucher.js
diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py b/accounts/doctype/period_closing_voucher/period_closing_voucher.py
similarity index 96%
rename from erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
rename to accounts/doctype/period_closing_voucher/period_closing_voucher.py
index 860fdd1..f8d2c54 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
+++ b/accounts/doctype/period_closing_voucher/period_closing_voucher.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.txt b/accounts/doctype/period_closing_voucher/period_closing_voucher.txt
similarity index 100%
rename from erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.txt
rename to accounts/doctype/period_closing_voucher/period_closing_voucher.txt
diff --git a/erpnext/accounts/doctype/pos_setting/__init__.py b/accounts/doctype/pos_setting/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/pos_setting/__init__.py
rename to accounts/doctype/pos_setting/__init__.py
diff --git a/erpnext/accounts/doctype/pos_setting/pos_setting.js b/accounts/doctype/pos_setting/pos_setting.js
similarity index 100%
rename from erpnext/accounts/doctype/pos_setting/pos_setting.js
rename to accounts/doctype/pos_setting/pos_setting.js
diff --git a/erpnext/accounts/doctype/pos_setting/pos_setting.py b/accounts/doctype/pos_setting/pos_setting.py
similarity index 89%
rename from erpnext/accounts/doctype/pos_setting/pos_setting.py
rename to accounts/doctype/pos_setting/pos_setting.py
index a485be9..fff3a34 100755
--- a/erpnext/accounts/doctype/pos_setting/pos_setting.py
+++ b/accounts/doctype/pos_setting/pos_setting.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/pos_setting/pos_setting.txt b/accounts/doctype/pos_setting/pos_setting.txt
similarity index 100%
rename from erpnext/accounts/doctype/pos_setting/pos_setting.txt
rename to accounts/doctype/pos_setting/pos_setting.txt
diff --git a/erpnext/accounts/doctype/purchase_invoice/__init__.py b/accounts/doctype/purchase_invoice/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/purchase_invoice/__init__.py
rename to accounts/doctype/purchase_invoice/__init__.py
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/accounts/doctype/purchase_invoice/purchase_invoice.js
similarity index 98%
rename from erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
rename to accounts/doctype/purchase_invoice/purchase_invoice.js
index c6f9e97..8d37b77 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -17,8 +17,8 @@
 cur_frm.cscript.tname = "Purchase Invoice Item";
 cur_frm.cscript.fname = "entries";
 cur_frm.cscript.other_fname = "purchase_tax_details";
-wn.require('erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
-wn.require('erpnext/buying/doctype/purchase_common/purchase_common.js');
+wn.require('app/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
+wn.require('app/buying/doctype/purchase_common/purchase_common.js');
 
 // On Load
 // --------
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py
similarity index 98%
rename from erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
rename to accounts/doctype/purchase_invoice/purchase_invoice.py
index d9c3fb1..969f99c 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.txt b/accounts/doctype/purchase_invoice/purchase_invoice.txt
similarity index 100%
rename from erpnext/accounts/doctype/purchase_invoice/purchase_invoice.txt
rename to accounts/doctype/purchase_invoice/purchase_invoice.txt
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js b/accounts/doctype/purchase_invoice/purchase_invoice_list.js
similarity index 100%
rename from erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js
rename to accounts/doctype/purchase_invoice/purchase_invoice_list.js
diff --git a/erpnext/accounts/doctype/purchase_invoice_advance/__init__.py b/accounts/doctype/purchase_invoice_advance/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/purchase_invoice_advance/__init__.py
rename to accounts/doctype/purchase_invoice_advance/__init__.py
diff --git a/erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.txt b/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.txt
similarity index 100%
rename from erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.txt
rename to accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.txt
diff --git a/erpnext/accounts/doctype/purchase_invoice_item/__init__.py b/accounts/doctype/purchase_invoice_item/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/purchase_invoice_item/__init__.py
rename to accounts/doctype/purchase_invoice_item/__init__.py
diff --git a/erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.txt b/accounts/doctype/purchase_invoice_item/purchase_invoice_item.txt
similarity index 100%
rename from erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.txt
rename to accounts/doctype/purchase_invoice_item/purchase_invoice_item.txt
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges/__init__.py b/accounts/doctype/purchase_taxes_and_charges/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/purchase_taxes_and_charges/__init__.py
rename to accounts/doctype/purchase_taxes_and_charges/__init__.py
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt b/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt
similarity index 100%
rename from erpnext/accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt
rename to accounts/doctype/purchase_taxes_and_charges/purchase_taxes_and_charges.txt
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/__init__.py b/accounts/doctype/purchase_taxes_and_charges_master/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/purchase_taxes_and_charges_master/__init__.py
rename to accounts/doctype/purchase_taxes_and_charges_master/__init__.py
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js b/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
similarity index 100%
rename from erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
rename to accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py b/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
similarity index 86%
rename from erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
rename to accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
index 7c2ca7e..3368709 100644
--- a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
+++ b/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.txt b/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.txt
similarity index 100%
rename from erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.txt
rename to accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.txt
diff --git a/erpnext/accounts/doctype/sales_invoice/__init__.py b/accounts/doctype/sales_invoice/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/sales_invoice/__init__.py
rename to accounts/doctype/sales_invoice/__init__.py
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js
similarity index 98%
rename from erpnext/accounts/doctype/sales_invoice/sales_invoice.js
rename to accounts/doctype/sales_invoice/sales_invoice.js
index 9e0a4eb..091c652 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/accounts/doctype/sales_invoice/sales_invoice.js
@@ -22,10 +22,10 @@
 // print heading
 cur_frm.pformat.print_heading = 'Invoice';
 
-wn.require('erpnext/selling/doctype/sales_common/sales_common.js');
-wn.require('erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
-wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
-wn.require('erpnext/setup/doctype/notification_control/notification_control.js');
+wn.require('app/selling/doctype/sales_common/sales_common.js');
+wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
+wn.require('app/utilities/doctype/sms_control/sms_control.js');
+wn.require('app/setup/doctype/notification_control/notification_control.js');
 
 // On Load
 // -------
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py
similarity index 98%
rename from erpnext/accounts/doctype/sales_invoice/sales_invoice.py
rename to accounts/doctype/sales_invoice/sales_invoice.py
index 29fde39..e015731 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/accounts/doctype/sales_invoice/sales_invoice.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr,date_diff, default_fields, flt, fmt_money, formatdate, generate_hash,getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common,month_name, now, nowdate, replace_newlines, sendmail, set_default,str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr,date_diff, default_fields, flt, fmt_money, formatdate,getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common,month_name, now, nowdate, replace_newlines, sendmail, set_default,str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 in_transaction = webnotes.conn.in_transaction
 convert_to_lists = webnotes.conn.convert_to_lists
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.txt b/accounts/doctype/sales_invoice/sales_invoice.txt
similarity index 100%
rename from erpnext/accounts/doctype/sales_invoice/sales_invoice.txt
rename to accounts/doctype/sales_invoice/sales_invoice.txt
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js b/accounts/doctype/sales_invoice/sales_invoice_list.js
similarity index 100%
rename from erpnext/accounts/doctype/sales_invoice/sales_invoice_list.js
rename to accounts/doctype/sales_invoice/sales_invoice_list.js
diff --git a/erpnext/accounts/doctype/sales_invoice_advance/__init__.py b/accounts/doctype/sales_invoice_advance/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/sales_invoice_advance/__init__.py
rename to accounts/doctype/sales_invoice_advance/__init__.py
diff --git a/erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.txt b/accounts/doctype/sales_invoice_advance/sales_invoice_advance.txt
similarity index 100%
rename from erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.txt
rename to accounts/doctype/sales_invoice_advance/sales_invoice_advance.txt
diff --git a/erpnext/accounts/doctype/sales_invoice_item/__init__.py b/accounts/doctype/sales_invoice_item/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/sales_invoice_item/__init__.py
rename to accounts/doctype/sales_invoice_item/__init__.py
diff --git a/erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.txt b/accounts/doctype/sales_invoice_item/sales_invoice_item.txt
similarity index 100%
rename from erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.txt
rename to accounts/doctype/sales_invoice_item/sales_invoice_item.txt
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges/__init__.py b/accounts/doctype/sales_taxes_and_charges/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/sales_taxes_and_charges/__init__.py
rename to accounts/doctype/sales_taxes_and_charges/__init__.py
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.txt b/accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.txt
similarity index 100%
rename from erpnext/accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.txt
rename to accounts/doctype/sales_taxes_and_charges/sales_taxes_and_charges.txt
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/__init__.py b/accounts/doctype/sales_taxes_and_charges_master/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/sales_taxes_and_charges_master/__init__.py
rename to accounts/doctype/sales_taxes_and_charges_master/__init__.py
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js b/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
similarity index 100%
rename from erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
rename to accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py b/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
similarity index 100%
rename from erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
rename to accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.py
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.txt b/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.txt
similarity index 100%
rename from erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.txt
rename to accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.txt
diff --git a/erpnext/accounts/doctype/tds_category/__init__.py b/accounts/doctype/tds_category/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/tds_category/__init__.py
rename to accounts/doctype/tds_category/__init__.py
diff --git a/erpnext/accounts/doctype/tds_category/tds_category.js b/accounts/doctype/tds_category/tds_category.js
similarity index 100%
rename from erpnext/accounts/doctype/tds_category/tds_category.js
rename to accounts/doctype/tds_category/tds_category.js
diff --git a/erpnext/accounts/doctype/tds_category/tds_category.py b/accounts/doctype/tds_category/tds_category.py
similarity index 85%
rename from erpnext/accounts/doctype/tds_category/tds_category.py
rename to accounts/doctype/tds_category/tds_category.py
index 027c807..ad4f780 100644
--- a/erpnext/accounts/doctype/tds_category/tds_category.py
+++ b/accounts/doctype/tds_category/tds_category.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/tds_category/tds_category.txt b/accounts/doctype/tds_category/tds_category.txt
similarity index 100%
rename from erpnext/accounts/doctype/tds_category/tds_category.txt
rename to accounts/doctype/tds_category/tds_category.txt
diff --git a/erpnext/accounts/doctype/tds_category_account/__init__.py b/accounts/doctype/tds_category_account/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/tds_category_account/__init__.py
rename to accounts/doctype/tds_category_account/__init__.py
diff --git a/erpnext/accounts/doctype/tds_category_account/tds_category_account.txt b/accounts/doctype/tds_category_account/tds_category_account.txt
similarity index 100%
rename from erpnext/accounts/doctype/tds_category_account/tds_category_account.txt
rename to accounts/doctype/tds_category_account/tds_category_account.txt
diff --git a/erpnext/accounts/doctype/tds_control/__init__.py b/accounts/doctype/tds_control/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/tds_control/__init__.py
rename to accounts/doctype/tds_control/__init__.py
diff --git a/erpnext/accounts/doctype/tds_control/tds_control.py b/accounts/doctype/tds_control/tds_control.py
similarity index 95%
rename from erpnext/accounts/doctype/tds_control/tds_control.py
rename to accounts/doctype/tds_control/tds_control.py
index 5853081..c947e6f 100644
--- a/erpnext/accounts/doctype/tds_control/tds_control.py
+++ b/accounts/doctype/tds_control/tds_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/tds_control/tds_control.txt b/accounts/doctype/tds_control/tds_control.txt
similarity index 100%
rename from erpnext/accounts/doctype/tds_control/tds_control.txt
rename to accounts/doctype/tds_control/tds_control.txt
diff --git a/erpnext/accounts/doctype/tds_detail/__init__.py b/accounts/doctype/tds_detail/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/tds_detail/__init__.py
rename to accounts/doctype/tds_detail/__init__.py
diff --git a/erpnext/accounts/doctype/tds_detail/tds_detail.txt b/accounts/doctype/tds_detail/tds_detail.txt
similarity index 100%
rename from erpnext/accounts/doctype/tds_detail/tds_detail.txt
rename to accounts/doctype/tds_detail/tds_detail.txt
diff --git a/erpnext/accounts/doctype/tds_payment/__init__.py b/accounts/doctype/tds_payment/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/tds_payment/__init__.py
rename to accounts/doctype/tds_payment/__init__.py
diff --git a/erpnext/accounts/doctype/tds_payment/tds_payment.js b/accounts/doctype/tds_payment/tds_payment.js
similarity index 100%
rename from erpnext/accounts/doctype/tds_payment/tds_payment.js
rename to accounts/doctype/tds_payment/tds_payment.js
diff --git a/erpnext/accounts/doctype/tds_payment/tds_payment.py b/accounts/doctype/tds_payment/tds_payment.py
similarity index 94%
rename from erpnext/accounts/doctype/tds_payment/tds_payment.py
rename to accounts/doctype/tds_payment/tds_payment.py
index fa14f86..b682b61 100644
--- a/erpnext/accounts/doctype/tds_payment/tds_payment.py
+++ b/accounts/doctype/tds_payment/tds_payment.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/tds_payment/tds_payment.txt b/accounts/doctype/tds_payment/tds_payment.txt
similarity index 100%
rename from erpnext/accounts/doctype/tds_payment/tds_payment.txt
rename to accounts/doctype/tds_payment/tds_payment.txt
diff --git a/erpnext/accounts/doctype/tds_payment_detail/__init__.py b/accounts/doctype/tds_payment_detail/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/tds_payment_detail/__init__.py
rename to accounts/doctype/tds_payment_detail/__init__.py
diff --git a/erpnext/accounts/doctype/tds_payment_detail/tds_payment_detail.txt b/accounts/doctype/tds_payment_detail/tds_payment_detail.txt
similarity index 100%
rename from erpnext/accounts/doctype/tds_payment_detail/tds_payment_detail.txt
rename to accounts/doctype/tds_payment_detail/tds_payment_detail.txt
diff --git a/erpnext/accounts/doctype/tds_rate_chart/__init__.py b/accounts/doctype/tds_rate_chart/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/tds_rate_chart/__init__.py
rename to accounts/doctype/tds_rate_chart/__init__.py
diff --git a/erpnext/accounts/doctype/tds_rate_chart/tds_rate_chart.txt b/accounts/doctype/tds_rate_chart/tds_rate_chart.txt
similarity index 100%
rename from erpnext/accounts/doctype/tds_rate_chart/tds_rate_chart.txt
rename to accounts/doctype/tds_rate_chart/tds_rate_chart.txt
diff --git a/erpnext/accounts/doctype/tds_rate_detail/__init__.py b/accounts/doctype/tds_rate_detail/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/tds_rate_detail/__init__.py
rename to accounts/doctype/tds_rate_detail/__init__.py
diff --git a/erpnext/accounts/doctype/tds_rate_detail/tds_rate_detail.txt b/accounts/doctype/tds_rate_detail/tds_rate_detail.txt
similarity index 100%
rename from erpnext/accounts/doctype/tds_rate_detail/tds_rate_detail.txt
rename to accounts/doctype/tds_rate_detail/tds_rate_detail.txt
diff --git a/erpnext/accounts/doctype/tds_return_acknowledgement/__init__.py b/accounts/doctype/tds_return_acknowledgement/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/tds_return_acknowledgement/__init__.py
rename to accounts/doctype/tds_return_acknowledgement/__init__.py
diff --git a/erpnext/accounts/doctype/tds_return_acknowledgement/tds_return_acknowledgement.js b/accounts/doctype/tds_return_acknowledgement/tds_return_acknowledgement.js
similarity index 100%
rename from erpnext/accounts/doctype/tds_return_acknowledgement/tds_return_acknowledgement.js
rename to accounts/doctype/tds_return_acknowledgement/tds_return_acknowledgement.js
diff --git a/erpnext/accounts/doctype/tds_return_acknowledgement/tds_return_acknowledgement.txt b/accounts/doctype/tds_return_acknowledgement/tds_return_acknowledgement.txt
similarity index 100%
rename from erpnext/accounts/doctype/tds_return_acknowledgement/tds_return_acknowledgement.txt
rename to accounts/doctype/tds_return_acknowledgement/tds_return_acknowledgement.txt
diff --git a/erpnext/accounts/doctype/trend_analyzer_control/__init__.py b/accounts/doctype/trend_analyzer_control/__init__.py
similarity index 100%
rename from erpnext/accounts/doctype/trend_analyzer_control/__init__.py
rename to accounts/doctype/trend_analyzer_control/__init__.py
diff --git a/erpnext/accounts/doctype/trend_analyzer_control/trend_analyzer_control.py b/accounts/doctype/trend_analyzer_control/trend_analyzer_control.py
similarity index 95%
rename from erpnext/accounts/doctype/trend_analyzer_control/trend_analyzer_control.py
rename to accounts/doctype/trend_analyzer_control/trend_analyzer_control.py
index a97cd6c..b5e291a 100755
--- a/erpnext/accounts/doctype/trend_analyzer_control/trend_analyzer_control.py
+++ b/accounts/doctype/trend_analyzer_control/trend_analyzer_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/accounts/doctype/trend_analyzer_control/trend_analyzer_control.txt b/accounts/doctype/trend_analyzer_control/trend_analyzer_control.txt
similarity index 100%
rename from erpnext/accounts/doctype/trend_analyzer_control/trend_analyzer_control.txt
rename to accounts/doctype/trend_analyzer_control/trend_analyzer_control.txt
diff --git a/erpnext/accounts/page/__init__.py b/accounts/page/__init__.py
similarity index 100%
rename from erpnext/accounts/page/__init__.py
rename to accounts/page/__init__.py
diff --git a/erpnext/accounts/page/accounts_browser/__init__.py b/accounts/page/accounts_browser/__init__.py
similarity index 100%
rename from erpnext/accounts/page/accounts_browser/__init__.py
rename to accounts/page/accounts_browser/__init__.py
diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.css b/accounts/page/accounts_browser/accounts_browser.css
similarity index 100%
rename from erpnext/accounts/page/accounts_browser/accounts_browser.css
rename to accounts/page/accounts_browser/accounts_browser.css
diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.html b/accounts/page/accounts_browser/accounts_browser.html
similarity index 100%
rename from erpnext/accounts/page/accounts_browser/accounts_browser.html
rename to accounts/page/accounts_browser/accounts_browser.html
diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.js b/accounts/page/accounts_browser/accounts_browser.js
similarity index 100%
rename from erpnext/accounts/page/accounts_browser/accounts_browser.js
rename to accounts/page/accounts_browser/accounts_browser.js
diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.py b/accounts/page/accounts_browser/accounts_browser.py
similarity index 100%
rename from erpnext/accounts/page/accounts_browser/accounts_browser.py
rename to accounts/page/accounts_browser/accounts_browser.py
diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.txt b/accounts/page/accounts_browser/accounts_browser.txt
similarity index 100%
rename from erpnext/accounts/page/accounts_browser/accounts_browser.txt
rename to accounts/page/accounts_browser/accounts_browser.txt
diff --git a/erpnext/accounts/page/accounts_home/__init__.py b/accounts/page/accounts_home/__init__.py
similarity index 100%
rename from erpnext/accounts/page/accounts_home/__init__.py
rename to accounts/page/accounts_home/__init__.py
diff --git a/erpnext/accounts/page/accounts_home/accounts_home.html b/accounts/page/accounts_home/accounts_home.html
similarity index 100%
rename from erpnext/accounts/page/accounts_home/accounts_home.html
rename to accounts/page/accounts_home/accounts_home.html
diff --git a/erpnext/accounts/page/accounts_home/accounts_home.js b/accounts/page/accounts_home/accounts_home.js
similarity index 100%
rename from erpnext/accounts/page/accounts_home/accounts_home.js
rename to accounts/page/accounts_home/accounts_home.js
diff --git a/erpnext/accounts/page/accounts_home/accounts_home.txt b/accounts/page/accounts_home/accounts_home.txt
similarity index 100%
rename from erpnext/accounts/page/accounts_home/accounts_home.txt
rename to accounts/page/accounts_home/accounts_home.txt
diff --git a/erpnext/accounts/page/financial_analytics/__init__.py b/accounts/page/financial_analytics/__init__.py
similarity index 100%
rename from erpnext/accounts/page/financial_analytics/__init__.py
rename to accounts/page/financial_analytics/__init__.py
diff --git a/erpnext/accounts/page/financial_analytics/financial_analytics.js b/accounts/page/financial_analytics/financial_analytics.js
similarity index 99%
rename from erpnext/accounts/page/financial_analytics/financial_analytics.js
rename to accounts/page/financial_analytics/financial_analytics.js
index 95350a0..20632de 100644
--- a/erpnext/accounts/page/financial_analytics/financial_analytics.js
+++ b/accounts/page/financial_analytics/financial_analytics.js
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
-wn.require("js/app/account_tree_grid.js");
+wn.require("app/js/account_tree_grid.js");
 
 wn.pages['financial-analytics'].onload = function(wrapper) { 
 	wn.ui.make_app_page({
diff --git a/erpnext/accounts/page/financial_analytics/financial_analytics.txt b/accounts/page/financial_analytics/financial_analytics.txt
similarity index 100%
rename from erpnext/accounts/page/financial_analytics/financial_analytics.txt
rename to accounts/page/financial_analytics/financial_analytics.txt
diff --git a/erpnext/accounts/page/financial_statements/__init__.py b/accounts/page/financial_statements/__init__.py
similarity index 100%
rename from erpnext/accounts/page/financial_statements/__init__.py
rename to accounts/page/financial_statements/__init__.py
diff --git a/erpnext/accounts/page/financial_statements/financial_statements.html b/accounts/page/financial_statements/financial_statements.html
similarity index 100%
rename from erpnext/accounts/page/financial_statements/financial_statements.html
rename to accounts/page/financial_statements/financial_statements.html
diff --git a/erpnext/accounts/page/financial_statements/financial_statements.js b/accounts/page/financial_statements/financial_statements.js
similarity index 100%
rename from erpnext/accounts/page/financial_statements/financial_statements.js
rename to accounts/page/financial_statements/financial_statements.js
diff --git a/erpnext/accounts/page/financial_statements/financial_statements.txt b/accounts/page/financial_statements/financial_statements.txt
similarity index 100%
rename from erpnext/accounts/page/financial_statements/financial_statements.txt
rename to accounts/page/financial_statements/financial_statements.txt
diff --git a/erpnext/accounts/page/general_ledger/__init__.py b/accounts/page/general_ledger/__init__.py
similarity index 100%
rename from erpnext/accounts/page/general_ledger/__init__.py
rename to accounts/page/general_ledger/__init__.py
diff --git a/erpnext/accounts/page/general_ledger/general_ledger.css b/accounts/page/general_ledger/general_ledger.css
similarity index 100%
rename from erpnext/accounts/page/general_ledger/general_ledger.css
rename to accounts/page/general_ledger/general_ledger.css
diff --git a/erpnext/accounts/page/general_ledger/general_ledger.html b/accounts/page/general_ledger/general_ledger.html
similarity index 100%
rename from erpnext/accounts/page/general_ledger/general_ledger.html
rename to accounts/page/general_ledger/general_ledger.html
diff --git a/erpnext/accounts/page/general_ledger/general_ledger.js b/accounts/page/general_ledger/general_ledger.js
similarity index 100%
rename from erpnext/accounts/page/general_ledger/general_ledger.js
rename to accounts/page/general_ledger/general_ledger.js
diff --git a/erpnext/accounts/page/general_ledger/general_ledger.txt b/accounts/page/general_ledger/general_ledger.txt
similarity index 100%
rename from erpnext/accounts/page/general_ledger/general_ledger.txt
rename to accounts/page/general_ledger/general_ledger.txt
diff --git a/erpnext/accounts/page/trial_balance/__init__.py b/accounts/page/trial_balance/__init__.py
similarity index 100%
rename from erpnext/accounts/page/trial_balance/__init__.py
rename to accounts/page/trial_balance/__init__.py
diff --git a/erpnext/accounts/page/trial_balance/trial_balance.js b/accounts/page/trial_balance/trial_balance.js
similarity index 95%
rename from erpnext/accounts/page/trial_balance/trial_balance.js
rename to accounts/page/trial_balance/trial_balance.js
index 071af67..3504ae0 100644
--- a/erpnext/accounts/page/trial_balance/trial_balance.js
+++ b/accounts/page/trial_balance/trial_balance.js
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
-wn.require("js/app/account_tree_grid.js");
+wn.require("app/js/account_tree_grid.js");
 
 wn.pages['trial-balance'].onload = function(wrapper) { 
 	wn.ui.make_app_page({
diff --git a/erpnext/accounts/page/trial_balance/trial_balance.txt b/accounts/page/trial_balance/trial_balance.txt
similarity index 100%
rename from erpnext/accounts/page/trial_balance/trial_balance.txt
rename to accounts/page/trial_balance/trial_balance.txt
diff --git a/erpnext/accounts/search_criteria/__init__.py b/accounts/search_criteria/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/__init__.py
rename to accounts/search_criteria/__init__.py
diff --git a/erpnext/accounts/search_criteria/accounts_payable/__init__.py b/accounts/search_criteria/accounts_payable/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/accounts_payable/__init__.py
rename to accounts/search_criteria/accounts_payable/__init__.py
diff --git a/erpnext/accounts/search_criteria/accounts_payable/accounts_payable.js b/accounts/search_criteria/accounts_payable/accounts_payable.js
similarity index 100%
rename from erpnext/accounts/search_criteria/accounts_payable/accounts_payable.js
rename to accounts/search_criteria/accounts_payable/accounts_payable.js
diff --git a/erpnext/accounts/search_criteria/accounts_payable/accounts_payable.py b/accounts/search_criteria/accounts_payable/accounts_payable.py
similarity index 100%
rename from erpnext/accounts/search_criteria/accounts_payable/accounts_payable.py
rename to accounts/search_criteria/accounts_payable/accounts_payable.py
diff --git a/erpnext/accounts/search_criteria/accounts_payable/accounts_payable.sql b/accounts/search_criteria/accounts_payable/accounts_payable.sql
similarity index 100%
rename from erpnext/accounts/search_criteria/accounts_payable/accounts_payable.sql
rename to accounts/search_criteria/accounts_payable/accounts_payable.sql
diff --git a/erpnext/accounts/search_criteria/accounts_payable/accounts_payable.txt b/accounts/search_criteria/accounts_payable/accounts_payable.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/accounts_payable/accounts_payable.txt
rename to accounts/search_criteria/accounts_payable/accounts_payable.txt
diff --git a/erpnext/accounts/search_criteria/accounts_receivable/__init__.py b/accounts/search_criteria/accounts_receivable/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/accounts_receivable/__init__.py
rename to accounts/search_criteria/accounts_receivable/__init__.py
diff --git a/erpnext/accounts/search_criteria/accounts_receivable/accounts_receivable.js b/accounts/search_criteria/accounts_receivable/accounts_receivable.js
similarity index 100%
rename from erpnext/accounts/search_criteria/accounts_receivable/accounts_receivable.js
rename to accounts/search_criteria/accounts_receivable/accounts_receivable.js
diff --git a/erpnext/accounts/search_criteria/accounts_receivable/accounts_receivable.py b/accounts/search_criteria/accounts_receivable/accounts_receivable.py
similarity index 100%
rename from erpnext/accounts/search_criteria/accounts_receivable/accounts_receivable.py
rename to accounts/search_criteria/accounts_receivable/accounts_receivable.py
diff --git a/erpnext/accounts/search_criteria/accounts_receivable/accounts_receivable.sql b/accounts/search_criteria/accounts_receivable/accounts_receivable.sql
similarity index 100%
rename from erpnext/accounts/search_criteria/accounts_receivable/accounts_receivable.sql
rename to accounts/search_criteria/accounts_receivable/accounts_receivable.sql
diff --git a/erpnext/accounts/search_criteria/accounts_receivable/accounts_receivable.txt b/accounts/search_criteria/accounts_receivable/accounts_receivable.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/accounts_receivable/accounts_receivable.txt
rename to accounts/search_criteria/accounts_receivable/accounts_receivable.txt
diff --git a/erpnext/accounts/search_criteria/bank_clearance_report/__init__.py b/accounts/search_criteria/bank_clearance_report/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/bank_clearance_report/__init__.py
rename to accounts/search_criteria/bank_clearance_report/__init__.py
diff --git a/erpnext/accounts/search_criteria/bank_clearance_report/bank_clearance_report.js b/accounts/search_criteria/bank_clearance_report/bank_clearance_report.js
similarity index 100%
rename from erpnext/accounts/search_criteria/bank_clearance_report/bank_clearance_report.js
rename to accounts/search_criteria/bank_clearance_report/bank_clearance_report.js
diff --git a/erpnext/accounts/search_criteria/bank_clearance_report/bank_clearance_report.txt b/accounts/search_criteria/bank_clearance_report/bank_clearance_report.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/bank_clearance_report/bank_clearance_report.txt
rename to accounts/search_criteria/bank_clearance_report/bank_clearance_report.txt
diff --git a/erpnext/accounts/search_criteria/bank_reconciliation_statement/__init__.py b/accounts/search_criteria/bank_reconciliation_statement/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/bank_reconciliation_statement/__init__.py
rename to accounts/search_criteria/bank_reconciliation_statement/__init__.py
diff --git a/erpnext/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.js b/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.js
similarity index 100%
rename from erpnext/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.js
rename to accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.js
diff --git a/erpnext/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.py b/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.py
similarity index 100%
rename from erpnext/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.py
rename to accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.py
diff --git a/erpnext/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.txt b/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.txt
rename to accounts/search_criteria/bank_reconciliation_statement/bank_reconciliation_statement.txt
diff --git a/erpnext/accounts/search_criteria/budget_variance_report/__init__.py b/accounts/search_criteria/budget_variance_report/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/budget_variance_report/__init__.py
rename to accounts/search_criteria/budget_variance_report/__init__.py
diff --git a/erpnext/accounts/search_criteria/budget_variance_report/budget_variance_report.js b/accounts/search_criteria/budget_variance_report/budget_variance_report.js
similarity index 100%
rename from erpnext/accounts/search_criteria/budget_variance_report/budget_variance_report.js
rename to accounts/search_criteria/budget_variance_report/budget_variance_report.js
diff --git a/erpnext/accounts/search_criteria/budget_variance_report/budget_variance_report.py b/accounts/search_criteria/budget_variance_report/budget_variance_report.py
similarity index 100%
rename from erpnext/accounts/search_criteria/budget_variance_report/budget_variance_report.py
rename to accounts/search_criteria/budget_variance_report/budget_variance_report.py
diff --git a/erpnext/accounts/search_criteria/budget_variance_report/budget_variance_report.sql b/accounts/search_criteria/budget_variance_report/budget_variance_report.sql
similarity index 100%
rename from erpnext/accounts/search_criteria/budget_variance_report/budget_variance_report.sql
rename to accounts/search_criteria/budget_variance_report/budget_variance_report.sql
diff --git a/erpnext/accounts/search_criteria/budget_variance_report/budget_variance_report.txt b/accounts/search_criteria/budget_variance_report/budget_variance_report.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/budget_variance_report/budget_variance_report.txt
rename to accounts/search_criteria/budget_variance_report/budget_variance_report.txt
diff --git a/erpnext/accounts/search_criteria/business_associate_commission_report/__init__.py b/accounts/search_criteria/business_associate_commission_report/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/business_associate_commission_report/__init__.py
rename to accounts/search_criteria/business_associate_commission_report/__init__.py
diff --git a/erpnext/accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.js b/accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.js
similarity index 100%
rename from erpnext/accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.js
rename to accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.js
diff --git a/erpnext/accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.py b/accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.py
similarity index 100%
rename from erpnext/accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.py
rename to accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.py
diff --git a/erpnext/accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.txt b/accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.txt
rename to accounts/search_criteria/business_associate_commission_report/business_associate_commission_report.txt
diff --git a/erpnext/accounts/search_criteria/cash_flow_statement/__init__.py b/accounts/search_criteria/cash_flow_statement/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/cash_flow_statement/__init__.py
rename to accounts/search_criteria/cash_flow_statement/__init__.py
diff --git a/erpnext/accounts/search_criteria/cash_flow_statement/cash_flow_statement.py b/accounts/search_criteria/cash_flow_statement/cash_flow_statement.py
similarity index 100%
rename from erpnext/accounts/search_criteria/cash_flow_statement/cash_flow_statement.py
rename to accounts/search_criteria/cash_flow_statement/cash_flow_statement.py
diff --git a/erpnext/accounts/search_criteria/collection_report/__init__.py b/accounts/search_criteria/collection_report/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/collection_report/__init__.py
rename to accounts/search_criteria/collection_report/__init__.py
diff --git a/erpnext/accounts/search_criteria/collection_report/collection_report.js b/accounts/search_criteria/collection_report/collection_report.js
similarity index 100%
rename from erpnext/accounts/search_criteria/collection_report/collection_report.js
rename to accounts/search_criteria/collection_report/collection_report.js
diff --git a/erpnext/accounts/search_criteria/collection_report/collection_report.py b/accounts/search_criteria/collection_report/collection_report.py
similarity index 100%
rename from erpnext/accounts/search_criteria/collection_report/collection_report.py
rename to accounts/search_criteria/collection_report/collection_report.py
diff --git a/erpnext/accounts/search_criteria/collection_report/collection_report.sql b/accounts/search_criteria/collection_report/collection_report.sql
similarity index 100%
rename from erpnext/accounts/search_criteria/collection_report/collection_report.sql
rename to accounts/search_criteria/collection_report/collection_report.sql
diff --git a/erpnext/accounts/search_criteria/collection_report/collection_report.txt b/accounts/search_criteria/collection_report/collection_report.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/collection_report/collection_report.txt
rename to accounts/search_criteria/collection_report/collection_report.txt
diff --git a/erpnext/accounts/search_criteria/cost_center_wise_expense/__init__.py b/accounts/search_criteria/cost_center_wise_expense/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/cost_center_wise_expense/__init__.py
rename to accounts/search_criteria/cost_center_wise_expense/__init__.py
diff --git a/erpnext/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.js b/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.js
similarity index 100%
rename from erpnext/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.js
rename to accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.js
diff --git a/erpnext/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.py b/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.py
similarity index 100%
rename from erpnext/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.py
rename to accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.py
diff --git a/erpnext/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.sql b/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.sql
similarity index 100%
rename from erpnext/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.sql
rename to accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.sql
diff --git a/erpnext/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.txt b/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.txt
rename to accounts/search_criteria/cost_center_wise_expense/cost_center_wise_expense.txt
diff --git a/erpnext/accounts/search_criteria/creditors_ledger/__init__.py b/accounts/search_criteria/creditors_ledger/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/creditors_ledger/__init__.py
rename to accounts/search_criteria/creditors_ledger/__init__.py
diff --git a/erpnext/accounts/search_criteria/creditors_ledger/creditors_ledger.js b/accounts/search_criteria/creditors_ledger/creditors_ledger.js
similarity index 100%
rename from erpnext/accounts/search_criteria/creditors_ledger/creditors_ledger.js
rename to accounts/search_criteria/creditors_ledger/creditors_ledger.js
diff --git a/erpnext/accounts/search_criteria/creditors_ledger/creditors_ledger.py b/accounts/search_criteria/creditors_ledger/creditors_ledger.py
similarity index 100%
rename from erpnext/accounts/search_criteria/creditors_ledger/creditors_ledger.py
rename to accounts/search_criteria/creditors_ledger/creditors_ledger.py
diff --git a/erpnext/accounts/search_criteria/creditors_ledger/creditors_ledger.sql b/accounts/search_criteria/creditors_ledger/creditors_ledger.sql
similarity index 100%
rename from erpnext/accounts/search_criteria/creditors_ledger/creditors_ledger.sql
rename to accounts/search_criteria/creditors_ledger/creditors_ledger.sql
diff --git a/erpnext/accounts/search_criteria/creditors_ledger/creditors_ledger.txt b/accounts/search_criteria/creditors_ledger/creditors_ledger.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/creditors_ledger/creditors_ledger.txt
rename to accounts/search_criteria/creditors_ledger/creditors_ledger.txt
diff --git a/erpnext/accounts/search_criteria/debtors_ledger/__init__.py b/accounts/search_criteria/debtors_ledger/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/debtors_ledger/__init__.py
rename to accounts/search_criteria/debtors_ledger/__init__.py
diff --git a/erpnext/accounts/search_criteria/debtors_ledger/debtors_ledger.js b/accounts/search_criteria/debtors_ledger/debtors_ledger.js
similarity index 100%
rename from erpnext/accounts/search_criteria/debtors_ledger/debtors_ledger.js
rename to accounts/search_criteria/debtors_ledger/debtors_ledger.js
diff --git a/erpnext/accounts/search_criteria/debtors_ledger/debtors_ledger.py b/accounts/search_criteria/debtors_ledger/debtors_ledger.py
similarity index 100%
rename from erpnext/accounts/search_criteria/debtors_ledger/debtors_ledger.py
rename to accounts/search_criteria/debtors_ledger/debtors_ledger.py
diff --git a/erpnext/accounts/search_criteria/debtors_ledger/debtors_ledger.sql b/accounts/search_criteria/debtors_ledger/debtors_ledger.sql
similarity index 100%
rename from erpnext/accounts/search_criteria/debtors_ledger/debtors_ledger.sql
rename to accounts/search_criteria/debtors_ledger/debtors_ledger.sql
diff --git a/erpnext/accounts/search_criteria/debtors_ledger/debtors_ledger.txt b/accounts/search_criteria/debtors_ledger/debtors_ledger.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/debtors_ledger/debtors_ledger.txt
rename to accounts/search_criteria/debtors_ledger/debtors_ledger.txt
diff --git a/erpnext/accounts/search_criteria/general_ledger/__init__.py b/accounts/search_criteria/general_ledger/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/general_ledger/__init__.py
rename to accounts/search_criteria/general_ledger/__init__.py
diff --git a/erpnext/accounts/search_criteria/general_ledger/general_ledger.js b/accounts/search_criteria/general_ledger/general_ledger.js
similarity index 100%
rename from erpnext/accounts/search_criteria/general_ledger/general_ledger.js
rename to accounts/search_criteria/general_ledger/general_ledger.js
diff --git a/erpnext/accounts/search_criteria/general_ledger/general_ledger.py b/accounts/search_criteria/general_ledger/general_ledger.py
similarity index 100%
rename from erpnext/accounts/search_criteria/general_ledger/general_ledger.py
rename to accounts/search_criteria/general_ledger/general_ledger.py
diff --git a/erpnext/accounts/search_criteria/general_ledger/general_ledger.sql b/accounts/search_criteria/general_ledger/general_ledger.sql
similarity index 100%
rename from erpnext/accounts/search_criteria/general_ledger/general_ledger.sql
rename to accounts/search_criteria/general_ledger/general_ledger.sql
diff --git a/erpnext/accounts/search_criteria/general_ledger/general_ledger.txt b/accounts/search_criteria/general_ledger/general_ledger.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/general_ledger/general_ledger.txt
rename to accounts/search_criteria/general_ledger/general_ledger.txt
diff --git a/erpnext/accounts/search_criteria/invoices_overdue/__init__.py b/accounts/search_criteria/invoices_overdue/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/invoices_overdue/__init__.py
rename to accounts/search_criteria/invoices_overdue/__init__.py
diff --git a/erpnext/accounts/search_criteria/invoices_overdue/invoices_overdue.txt b/accounts/search_criteria/invoices_overdue/invoices_overdue.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/invoices_overdue/invoices_overdue.txt
rename to accounts/search_criteria/invoices_overdue/invoices_overdue.txt
diff --git a/erpnext/accounts/search_criteria/itemwise_purchase_register/__init__.py b/accounts/search_criteria/itemwise_purchase_register/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/itemwise_purchase_register/__init__.py
rename to accounts/search_criteria/itemwise_purchase_register/__init__.py
diff --git a/erpnext/accounts/search_criteria/itemwise_purchase_register/itemwise_purchase_register.js b/accounts/search_criteria/itemwise_purchase_register/itemwise_purchase_register.js
similarity index 100%
rename from erpnext/accounts/search_criteria/itemwise_purchase_register/itemwise_purchase_register.js
rename to accounts/search_criteria/itemwise_purchase_register/itemwise_purchase_register.js
diff --git a/erpnext/accounts/search_criteria/itemwise_purchase_register/itemwise_purchase_register.txt b/accounts/search_criteria/itemwise_purchase_register/itemwise_purchase_register.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/itemwise_purchase_register/itemwise_purchase_register.txt
rename to accounts/search_criteria/itemwise_purchase_register/itemwise_purchase_register.txt
diff --git a/erpnext/accounts/search_criteria/itemwise_sales_register/__init__.py b/accounts/search_criteria/itemwise_sales_register/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/itemwise_sales_register/__init__.py
rename to accounts/search_criteria/itemwise_sales_register/__init__.py
diff --git a/erpnext/accounts/search_criteria/itemwise_sales_register/itemwise_sales_register.js b/accounts/search_criteria/itemwise_sales_register/itemwise_sales_register.js
similarity index 100%
rename from erpnext/accounts/search_criteria/itemwise_sales_register/itemwise_sales_register.js
rename to accounts/search_criteria/itemwise_sales_register/itemwise_sales_register.js
diff --git a/erpnext/accounts/search_criteria/itemwise_sales_register/itemwise_sales_register.txt b/accounts/search_criteria/itemwise_sales_register/itemwise_sales_register.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/itemwise_sales_register/itemwise_sales_register.txt
rename to accounts/search_criteria/itemwise_sales_register/itemwise_sales_register.txt
diff --git a/erpnext/accounts/search_criteria/monthly_transaction_summary/__init__.py b/accounts/search_criteria/monthly_transaction_summary/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/monthly_transaction_summary/__init__.py
rename to accounts/search_criteria/monthly_transaction_summary/__init__.py
diff --git a/erpnext/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.js b/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.js
similarity index 100%
rename from erpnext/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.js
rename to accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.js
diff --git a/erpnext/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.py b/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.py
similarity index 100%
rename from erpnext/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.py
rename to accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.py
diff --git a/erpnext/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.sql b/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.sql
similarity index 100%
rename from erpnext/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.sql
rename to accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.sql
diff --git a/erpnext/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.txt b/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.txt
rename to accounts/search_criteria/monthly_transaction_summary/monthly_transaction_summary.txt
diff --git a/erpnext/accounts/search_criteria/payment_receipt_report/__init__.py b/accounts/search_criteria/payment_receipt_report/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/payment_receipt_report/__init__.py
rename to accounts/search_criteria/payment_receipt_report/__init__.py
diff --git a/erpnext/accounts/search_criteria/payment_receipt_report/payment_receipt_report.py b/accounts/search_criteria/payment_receipt_report/payment_receipt_report.py
similarity index 100%
rename from erpnext/accounts/search_criteria/payment_receipt_report/payment_receipt_report.py
rename to accounts/search_criteria/payment_receipt_report/payment_receipt_report.py
diff --git a/erpnext/accounts/search_criteria/payment_receipt_report/payment_receipt_report.sql b/accounts/search_criteria/payment_receipt_report/payment_receipt_report.sql
similarity index 100%
rename from erpnext/accounts/search_criteria/payment_receipt_report/payment_receipt_report.sql
rename to accounts/search_criteria/payment_receipt_report/payment_receipt_report.sql
diff --git a/erpnext/accounts/search_criteria/payment_receipt_report/payment_receipt_report.txt b/accounts/search_criteria/payment_receipt_report/payment_receipt_report.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/payment_receipt_report/payment_receipt_report.txt
rename to accounts/search_criteria/payment_receipt_report/payment_receipt_report.txt
diff --git a/erpnext/accounts/search_criteria/purchase_register/__init__.py b/accounts/search_criteria/purchase_register/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/purchase_register/__init__.py
rename to accounts/search_criteria/purchase_register/__init__.py
diff --git a/erpnext/accounts/search_criteria/purchase_register/purchase_register.py b/accounts/search_criteria/purchase_register/purchase_register.py
similarity index 100%
rename from erpnext/accounts/search_criteria/purchase_register/purchase_register.py
rename to accounts/search_criteria/purchase_register/purchase_register.py
diff --git a/erpnext/accounts/search_criteria/purchase_register/purchase_register.txt b/accounts/search_criteria/purchase_register/purchase_register.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/purchase_register/purchase_register.txt
rename to accounts/search_criteria/purchase_register/purchase_register.txt
diff --git a/erpnext/accounts/search_criteria/sales_register/__init__.py b/accounts/search_criteria/sales_register/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/sales_register/__init__.py
rename to accounts/search_criteria/sales_register/__init__.py
diff --git a/erpnext/accounts/search_criteria/sales_register/sales_register.js b/accounts/search_criteria/sales_register/sales_register.js
similarity index 100%
rename from erpnext/accounts/search_criteria/sales_register/sales_register.js
rename to accounts/search_criteria/sales_register/sales_register.js
diff --git a/erpnext/accounts/search_criteria/sales_register/sales_register.py b/accounts/search_criteria/sales_register/sales_register.py
similarity index 100%
rename from erpnext/accounts/search_criteria/sales_register/sales_register.py
rename to accounts/search_criteria/sales_register/sales_register.py
diff --git a/erpnext/accounts/search_criteria/sales_register/sales_register.txt b/accounts/search_criteria/sales_register/sales_register.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/sales_register/sales_register.txt
rename to accounts/search_criteria/sales_register/sales_register.txt
diff --git a/erpnext/accounts/search_criteria/tds_return/__init__.py b/accounts/search_criteria/tds_return/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/tds_return/__init__.py
rename to accounts/search_criteria/tds_return/__init__.py
diff --git a/erpnext/accounts/search_criteria/tds_return/tds_return.js b/accounts/search_criteria/tds_return/tds_return.js
similarity index 100%
rename from erpnext/accounts/search_criteria/tds_return/tds_return.js
rename to accounts/search_criteria/tds_return/tds_return.js
diff --git a/erpnext/accounts/search_criteria/tds_return/tds_return.py b/accounts/search_criteria/tds_return/tds_return.py
similarity index 100%
rename from erpnext/accounts/search_criteria/tds_return/tds_return.py
rename to accounts/search_criteria/tds_return/tds_return.py
diff --git a/erpnext/accounts/search_criteria/tds_return/tds_return.sql b/accounts/search_criteria/tds_return/tds_return.sql
similarity index 100%
rename from erpnext/accounts/search_criteria/tds_return/tds_return.sql
rename to accounts/search_criteria/tds_return/tds_return.sql
diff --git a/erpnext/accounts/search_criteria/tds_return/tds_return.txt b/accounts/search_criteria/tds_return/tds_return.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/tds_return/tds_return.txt
rename to accounts/search_criteria/tds_return/tds_return.txt
diff --git a/erpnext/accounts/search_criteria/trend_analyzer/__init__.py b/accounts/search_criteria/trend_analyzer/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/trend_analyzer/__init__.py
rename to accounts/search_criteria/trend_analyzer/__init__.py
diff --git a/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.js b/accounts/search_criteria/trend_analyzer/trend_analyzer.js
similarity index 100%
rename from erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.js
rename to accounts/search_criteria/trend_analyzer/trend_analyzer.js
diff --git a/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.py b/accounts/search_criteria/trend_analyzer/trend_analyzer.py
similarity index 100%
rename from erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.py
rename to accounts/search_criteria/trend_analyzer/trend_analyzer.py
diff --git a/erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.txt b/accounts/search_criteria/trend_analyzer/trend_analyzer.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/trend_analyzer/trend_analyzer.txt
rename to accounts/search_criteria/trend_analyzer/trend_analyzer.txt
diff --git a/erpnext/accounts/search_criteria/trial_balance/__init__.py b/accounts/search_criteria/trial_balance/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/trial_balance/__init__.py
rename to accounts/search_criteria/trial_balance/__init__.py
diff --git a/erpnext/accounts/search_criteria/trial_balance/trial_balance.js b/accounts/search_criteria/trial_balance/trial_balance.js
similarity index 100%
rename from erpnext/accounts/search_criteria/trial_balance/trial_balance.js
rename to accounts/search_criteria/trial_balance/trial_balance.js
diff --git a/erpnext/accounts/search_criteria/trial_balance/trial_balance.py b/accounts/search_criteria/trial_balance/trial_balance.py
similarity index 100%
rename from erpnext/accounts/search_criteria/trial_balance/trial_balance.py
rename to accounts/search_criteria/trial_balance/trial_balance.py
diff --git a/erpnext/accounts/search_criteria/trial_balance/trial_balance.txt b/accounts/search_criteria/trial_balance/trial_balance.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/trial_balance/trial_balance.txt
rename to accounts/search_criteria/trial_balance/trial_balance.txt
diff --git a/erpnext/accounts/search_criteria/voucher_wise_tax_details/__init__.py b/accounts/search_criteria/voucher_wise_tax_details/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/voucher_wise_tax_details/__init__.py
rename to accounts/search_criteria/voucher_wise_tax_details/__init__.py
diff --git a/erpnext/accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.js b/accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.js
similarity index 100%
rename from erpnext/accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.js
rename to accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.js
diff --git a/erpnext/accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.py b/accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.py
similarity index 100%
rename from erpnext/accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.py
rename to accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.py
diff --git a/erpnext/accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.txt b/accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.txt
rename to accounts/search_criteria/voucher_wise_tax_details/voucher_wise_tax_details.txt
diff --git a/erpnext/accounts/search_criteria/yearly_transaction_summary/__init__.py b/accounts/search_criteria/yearly_transaction_summary/__init__.py
similarity index 100%
rename from erpnext/accounts/search_criteria/yearly_transaction_summary/__init__.py
rename to accounts/search_criteria/yearly_transaction_summary/__init__.py
diff --git a/erpnext/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.js b/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.js
similarity index 100%
rename from erpnext/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.js
rename to accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.js
diff --git a/erpnext/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.py b/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.py
similarity index 100%
rename from erpnext/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.py
rename to accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.py
diff --git a/erpnext/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.sql b/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.sql
similarity index 100%
rename from erpnext/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.sql
rename to accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.sql
diff --git a/erpnext/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.txt b/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.txt
similarity index 100%
rename from erpnext/accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.txt
rename to accounts/search_criteria/yearly_transaction_summary/yearly_transaction_summary.txt
diff --git a/erpnext/accounts/utils/__init__.py b/accounts/utils/__init__.py
similarity index 100%
rename from erpnext/accounts/utils/__init__.py
rename to accounts/utils/__init__.py
diff --git a/build.json b/build.json
deleted file mode 100644
index 420e5f4..0000000
--- a/build.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-	"public/css/all-web.css": [
-		"erpnext/startup/startup.css",
-		"erpnext/website/css/website.css"	
-	],
-	"public/css/all-app.css": [
-		"erpnext/startup/startup.css"
-	],
-	"public/js/all-web.js": [
-		"erpnext/startup/startup.js",
-		"conf.js"
-	],
-	"public/js/all-app.js": [
-		"erpnext/startup/startup.js",
-		"erpnext/startup/js/modules.js",
-		"erpnext/startup/js/toolbar.js",
-		"erpnext/startup/js/feature_setup.js",
-		"conf.js"
-	],
-}
\ No newline at end of file
diff --git a/erpnext/buying/DocType Mapper/Purchase Request-Purchase Order/Purchase Request-Purchase Order.txt b/buying/DocType Mapper/Purchase Request-Purchase Order/Purchase Request-Purchase Order.txt
similarity index 100%
rename from erpnext/buying/DocType Mapper/Purchase Request-Purchase Order/Purchase Request-Purchase Order.txt
rename to buying/DocType Mapper/Purchase Request-Purchase Order/Purchase Request-Purchase Order.txt
diff --git a/erpnext/buying/DocType Mapper/Purchase Request-Supplier Quotation/Purchase Request-Supplier Quotation.txt b/buying/DocType Mapper/Purchase Request-Supplier Quotation/Purchase Request-Supplier Quotation.txt
similarity index 100%
rename from erpnext/buying/DocType Mapper/Purchase Request-Supplier Quotation/Purchase Request-Supplier Quotation.txt
rename to buying/DocType Mapper/Purchase Request-Supplier Quotation/Purchase Request-Supplier Quotation.txt
diff --git a/erpnext/buying/DocType Mapper/Sales Order-Purchase Request/Sales Order-Purchase Request.txt b/buying/DocType Mapper/Sales Order-Purchase Request/Sales Order-Purchase Request.txt
similarity index 100%
rename from erpnext/buying/DocType Mapper/Sales Order-Purchase Request/Sales Order-Purchase Request.txt
rename to buying/DocType Mapper/Sales Order-Purchase Request/Sales Order-Purchase Request.txt
diff --git a/erpnext/buying/DocType Mapper/Supplier Quotation-Purchase Order/Supplier Quotation-Purchase Order.txt b/buying/DocType Mapper/Supplier Quotation-Purchase Order/Supplier Quotation-Purchase Order.txt
similarity index 100%
rename from erpnext/buying/DocType Mapper/Supplier Quotation-Purchase Order/Supplier Quotation-Purchase Order.txt
rename to buying/DocType Mapper/Supplier Quotation-Purchase Order/Supplier Quotation-Purchase Order.txt
diff --git a/erpnext/buying/Print Format/Purchase Order Classic/Purchase Order Classic.txt b/buying/Print Format/Purchase Order Classic/Purchase Order Classic.txt
similarity index 100%
rename from erpnext/buying/Print Format/Purchase Order Classic/Purchase Order Classic.txt
rename to buying/Print Format/Purchase Order Classic/Purchase Order Classic.txt
diff --git a/erpnext/buying/Print Format/Purchase Order Modern/Purchase Order Modern.txt b/buying/Print Format/Purchase Order Modern/Purchase Order Modern.txt
similarity index 100%
rename from erpnext/buying/Print Format/Purchase Order Modern/Purchase Order Modern.txt
rename to buying/Print Format/Purchase Order Modern/Purchase Order Modern.txt
diff --git a/erpnext/buying/Print Format/Purchase Order Spartan/Purchase Order Spartan.txt b/buying/Print Format/Purchase Order Spartan/Purchase Order Spartan.txt
similarity index 100%
rename from erpnext/buying/Print Format/Purchase Order Spartan/Purchase Order Spartan.txt
rename to buying/Print Format/Purchase Order Spartan/Purchase Order Spartan.txt
diff --git a/erpnext/buying/__init__.py b/buying/__init__.py
similarity index 100%
rename from erpnext/buying/__init__.py
rename to buying/__init__.py
diff --git a/erpnext/buying/doctype/__init__.py b/buying/doctype/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/__init__.py
rename to buying/doctype/__init__.py
diff --git a/erpnext/buying/doctype/purchase_common/__init__.py b/buying/doctype/purchase_common/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/purchase_common/__init__.py
rename to buying/doctype/purchase_common/__init__.py
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.js b/buying/doctype/purchase_common/purchase_common.js
similarity index 100%
rename from erpnext/buying/doctype/purchase_common/purchase_common.js
rename to buying/doctype/purchase_common/purchase_common.js
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.py b/buying/doctype/purchase_common/purchase_common.py
similarity index 98%
rename from erpnext/buying/doctype/purchase_common/purchase_common.py
rename to buying/doctype/purchase_common/purchase_common.py
index 4c307e6..e8cfa58 100644
--- a/erpnext/buying/doctype/purchase_common/purchase_common.py
+++ b/buying/doctype/purchase_common/purchase_common.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/buying/doctype/purchase_common/purchase_common.txt b/buying/doctype/purchase_common/purchase_common.txt
similarity index 100%
rename from erpnext/buying/doctype/purchase_common/purchase_common.txt
rename to buying/doctype/purchase_common/purchase_common.txt
diff --git a/erpnext/buying/doctype/purchase_order/__init__.py b/buying/doctype/purchase_order/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/purchase_order/__init__.py
rename to buying/doctype/purchase_order/__init__.py
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/buying/doctype/purchase_order/purchase_order.js
similarity index 96%
rename from erpnext/buying/doctype/purchase_order/purchase_order.js
rename to buying/doctype/purchase_order/purchase_order.js
index 4e8c2c0..0eb830b 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/buying/doctype/purchase_order/purchase_order.js
@@ -18,10 +18,10 @@
 cur_frm.cscript.fname = "po_details";
 cur_frm.cscript.other_fname = "purchase_tax_details";
 
-wn.require('erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
-wn.require('erpnext/buying/doctype/purchase_common/purchase_common.js');
-wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
-wn.require('erpnext/setup/doctype/notification_control/notification_control.js');
+wn.require('app/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
+wn.require('app/buying/doctype/purchase_common/purchase_common.js');
+wn.require('app/utilities/doctype/sms_control/sms_control.js');
+wn.require('app/setup/doctype/notification_control/notification_control.js');
 
 cur_frm.cscript.onload = function(doc, cdt, cdn) {
 	// set missing values in parent doc
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/buying/doctype/purchase_order/purchase_order.py
similarity index 97%
rename from erpnext/buying/doctype/purchase_order/purchase_order.py
rename to buying/doctype/purchase_order/purchase_order.py
index 65efd37..814d646 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/buying/doctype/purchase_order/purchase_order.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.txt b/buying/doctype/purchase_order/purchase_order.txt
similarity index 100%
rename from erpnext/buying/doctype/purchase_order/purchase_order.txt
rename to buying/doctype/purchase_order/purchase_order.txt
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order_list.js b/buying/doctype/purchase_order/purchase_order_list.js
similarity index 100%
rename from erpnext/buying/doctype/purchase_order/purchase_order_list.js
rename to buying/doctype/purchase_order/purchase_order_list.js
diff --git a/erpnext/buying/doctype/purchase_order_item/__init__.py b/buying/doctype/purchase_order_item/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/purchase_order_item/__init__.py
rename to buying/doctype/purchase_order_item/__init__.py
diff --git a/erpnext/buying/doctype/purchase_order_item/purchase_order_item.txt b/buying/doctype/purchase_order_item/purchase_order_item.txt
similarity index 100%
rename from erpnext/buying/doctype/purchase_order_item/purchase_order_item.txt
rename to buying/doctype/purchase_order_item/purchase_order_item.txt
diff --git a/erpnext/buying/doctype/purchase_order_item_supplied/__init__.py b/buying/doctype/purchase_order_item_supplied/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/purchase_order_item_supplied/__init__.py
rename to buying/doctype/purchase_order_item_supplied/__init__.py
diff --git a/erpnext/buying/doctype/purchase_order_item_supplied/purchase_order_item_supplied.txt b/buying/doctype/purchase_order_item_supplied/purchase_order_item_supplied.txt
similarity index 100%
rename from erpnext/buying/doctype/purchase_order_item_supplied/purchase_order_item_supplied.txt
rename to buying/doctype/purchase_order_item_supplied/purchase_order_item_supplied.txt
diff --git a/erpnext/buying/doctype/purchase_receipt_item_supplied/__init__.py b/buying/doctype/purchase_receipt_item_supplied/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/purchase_receipt_item_supplied/__init__.py
rename to buying/doctype/purchase_receipt_item_supplied/__init__.py
diff --git a/erpnext/buying/doctype/purchase_receipt_item_supplied/purchase_receipt_item_supplied.txt b/buying/doctype/purchase_receipt_item_supplied/purchase_receipt_item_supplied.txt
similarity index 100%
rename from erpnext/buying/doctype/purchase_receipt_item_supplied/purchase_receipt_item_supplied.txt
rename to buying/doctype/purchase_receipt_item_supplied/purchase_receipt_item_supplied.txt
diff --git a/erpnext/buying/doctype/purchase_request/__init__.py b/buying/doctype/purchase_request/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/purchase_request/__init__.py
rename to buying/doctype/purchase_request/__init__.py
diff --git a/erpnext/buying/doctype/purchase_request/purchase_request.js b/buying/doctype/purchase_request/purchase_request.js
similarity index 97%
rename from erpnext/buying/doctype/purchase_request/purchase_request.js
rename to buying/doctype/purchase_request/purchase_request.js
index 733da52..5209339 100644
--- a/erpnext/buying/doctype/purchase_request/purchase_request.js
+++ b/buying/doctype/purchase_request/purchase_request.js
@@ -17,8 +17,8 @@
 cur_frm.cscript.tname = "Purchase Request Item";
 cur_frm.cscript.fname = "indent_details";
 
-wn.require('erpnext/buying/doctype/purchase_common/purchase_common.js');
-wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
+wn.require('app/buying/doctype/purchase_common/purchase_common.js');
+wn.require('app/utilities/doctype/sms_control/sms_control.js');
 	
 //========================== On Load =================================================
 cur_frm.cscript.onload = function(doc, cdt, cdn) {
diff --git a/erpnext/buying/doctype/purchase_request/purchase_request.py b/buying/doctype/purchase_request/purchase_request.py
similarity index 96%
rename from erpnext/buying/doctype/purchase_request/purchase_request.py
rename to buying/doctype/purchase_request/purchase_request.py
index 324af2a..a1b0985 100644
--- a/erpnext/buying/doctype/purchase_request/purchase_request.py
+++ b/buying/doctype/purchase_request/purchase_request.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/buying/doctype/purchase_request/purchase_request.txt b/buying/doctype/purchase_request/purchase_request.txt
similarity index 100%
rename from erpnext/buying/doctype/purchase_request/purchase_request.txt
rename to buying/doctype/purchase_request/purchase_request.txt
diff --git a/erpnext/buying/doctype/purchase_request/purchase_request_list.js b/buying/doctype/purchase_request/purchase_request_list.js
similarity index 100%
rename from erpnext/buying/doctype/purchase_request/purchase_request_list.js
rename to buying/doctype/purchase_request/purchase_request_list.js
diff --git a/erpnext/buying/doctype/purchase_request_item/__init__.py b/buying/doctype/purchase_request_item/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/purchase_request_item/__init__.py
rename to buying/doctype/purchase_request_item/__init__.py
diff --git a/erpnext/buying/doctype/purchase_request_item/purchase_request_item.txt b/buying/doctype/purchase_request_item/purchase_request_item.txt
similarity index 100%
rename from erpnext/buying/doctype/purchase_request_item/purchase_request_item.txt
rename to buying/doctype/purchase_request_item/purchase_request_item.txt
diff --git a/erpnext/buying/doctype/quality_inspection/__init__.py b/buying/doctype/quality_inspection/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/quality_inspection/__init__.py
rename to buying/doctype/quality_inspection/__init__.py
diff --git a/erpnext/buying/doctype/quality_inspection/quality_inspection.js b/buying/doctype/quality_inspection/quality_inspection.js
similarity index 100%
rename from erpnext/buying/doctype/quality_inspection/quality_inspection.js
rename to buying/doctype/quality_inspection/quality_inspection.js
diff --git a/erpnext/buying/doctype/quality_inspection/quality_inspection.py b/buying/doctype/quality_inspection/quality_inspection.py
similarity index 91%
rename from erpnext/buying/doctype/quality_inspection/quality_inspection.py
rename to buying/doctype/quality_inspection/quality_inspection.py
index 1baac21..22eeb92 100644
--- a/erpnext/buying/doctype/quality_inspection/quality_inspection.py
+++ b/buying/doctype/quality_inspection/quality_inspection.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/buying/doctype/quality_inspection/quality_inspection.txt b/buying/doctype/quality_inspection/quality_inspection.txt
similarity index 100%
rename from erpnext/buying/doctype/quality_inspection/quality_inspection.txt
rename to buying/doctype/quality_inspection/quality_inspection.txt
diff --git a/erpnext/buying/doctype/quality_inspection_reading/__init__.py b/buying/doctype/quality_inspection_reading/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/quality_inspection_reading/__init__.py
rename to buying/doctype/quality_inspection_reading/__init__.py
diff --git a/erpnext/buying/doctype/quality_inspection_reading/quality_inspection_reading.txt b/buying/doctype/quality_inspection_reading/quality_inspection_reading.txt
similarity index 100%
rename from erpnext/buying/doctype/quality_inspection_reading/quality_inspection_reading.txt
rename to buying/doctype/quality_inspection_reading/quality_inspection_reading.txt
diff --git a/erpnext/buying/doctype/supplier/__init__.py b/buying/doctype/supplier/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/supplier/__init__.py
rename to buying/doctype/supplier/__init__.py
diff --git a/erpnext/buying/doctype/supplier/supplier.js b/buying/doctype/supplier/supplier.js
similarity index 97%
rename from erpnext/buying/doctype/supplier/supplier.js
rename to buying/doctype/supplier/supplier.js
index a5b928f..e3f591c 100644
--- a/erpnext/buying/doctype/supplier/supplier.js
+++ b/buying/doctype/supplier/supplier.js
@@ -14,8 +14,8 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-wn.require('erpnext/setup/doctype/contact_control/contact_control.js');
-wn.require('erpnext/support/doctype/communication/communication.js');
+wn.require('app/setup/doctype/contact_control/contact_control.js');
+wn.require('app/support/doctype/communication/communication.js');
 
 cur_frm.cscript.onload = function(doc,dt,dn){
 
diff --git a/erpnext/buying/doctype/supplier/supplier.py b/buying/doctype/supplier/supplier.py
similarity index 96%
rename from erpnext/buying/doctype/supplier/supplier.py
rename to buying/doctype/supplier/supplier.py
index d77be88..7a063b1 100644
--- a/erpnext/buying/doctype/supplier/supplier.py
+++ b/buying/doctype/supplier/supplier.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/buying/doctype/supplier/supplier.txt b/buying/doctype/supplier/supplier.txt
similarity index 100%
rename from erpnext/buying/doctype/supplier/supplier.txt
rename to buying/doctype/supplier/supplier.txt
diff --git a/erpnext/buying/doctype/supplier/supplier_list.js b/buying/doctype/supplier/supplier_list.js
similarity index 100%
rename from erpnext/buying/doctype/supplier/supplier_list.js
rename to buying/doctype/supplier/supplier_list.js
diff --git a/erpnext/buying/doctype/supplier_quotation/__init__.py b/buying/doctype/supplier_quotation/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/supplier_quotation/__init__.py
rename to buying/doctype/supplier_quotation/__init__.py
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js b/buying/doctype/supplier_quotation/supplier_quotation.js
similarity index 96%
rename from erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
rename to buying/doctype/supplier_quotation/supplier_quotation.js
index 6135ad4..faaf296 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -20,8 +20,8 @@
 cur_frm.cscript.other_fname = "purchase_tax_details";
 
 // attach required files
-wn.require('erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
-wn.require('erpnext/buying/doctype/purchase_common/purchase_common.js');
+wn.require('app/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
+wn.require('app/buying/doctype/purchase_common/purchase_common.js');
 
 cur_frm.cscript.onload = function(doc, dt, dn) {
 	// set missing values in parent doc
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.py b/buying/doctype/supplier_quotation/supplier_quotation.py
similarity index 100%
rename from erpnext/buying/doctype/supplier_quotation/supplier_quotation.py
rename to buying/doctype/supplier_quotation/supplier_quotation.py
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.txt b/buying/doctype/supplier_quotation/supplier_quotation.txt
similarity index 100%
rename from erpnext/buying/doctype/supplier_quotation/supplier_quotation.txt
rename to buying/doctype/supplier_quotation/supplier_quotation.txt
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.js b/buying/doctype/supplier_quotation/supplier_quotation_list.js
similarity index 100%
rename from erpnext/buying/doctype/supplier_quotation/supplier_quotation_list.js
rename to buying/doctype/supplier_quotation/supplier_quotation_list.js
diff --git a/erpnext/buying/doctype/supplier_quotation_item/__init__.py b/buying/doctype/supplier_quotation_item/__init__.py
similarity index 100%
rename from erpnext/buying/doctype/supplier_quotation_item/__init__.py
rename to buying/doctype/supplier_quotation_item/__init__.py
diff --git a/erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.txt b/buying/doctype/supplier_quotation_item/supplier_quotation_item.txt
similarity index 100%
rename from erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.txt
rename to buying/doctype/supplier_quotation_item/supplier_quotation_item.txt
diff --git a/erpnext/buying/page/__init__.py b/buying/page/__init__.py
similarity index 100%
rename from erpnext/buying/page/__init__.py
rename to buying/page/__init__.py
diff --git a/erpnext/buying/page/buying_home/__init__.py b/buying/page/buying_home/__init__.py
similarity index 100%
rename from erpnext/buying/page/buying_home/__init__.py
rename to buying/page/buying_home/__init__.py
diff --git a/erpnext/buying/page/buying_home/buying_home.html b/buying/page/buying_home/buying_home.html
similarity index 100%
rename from erpnext/buying/page/buying_home/buying_home.html
rename to buying/page/buying_home/buying_home.html
diff --git a/erpnext/buying/page/buying_home/buying_home.js b/buying/page/buying_home/buying_home.js
similarity index 100%
rename from erpnext/buying/page/buying_home/buying_home.js
rename to buying/page/buying_home/buying_home.js
diff --git a/erpnext/buying/page/buying_home/buying_home.txt b/buying/page/buying_home/buying_home.txt
similarity index 100%
rename from erpnext/buying/page/buying_home/buying_home.txt
rename to buying/page/buying_home/buying_home.txt
diff --git a/erpnext/buying/page/purchase_analytics/__init__.py b/buying/page/purchase_analytics/__init__.py
similarity index 100%
rename from erpnext/buying/page/purchase_analytics/__init__.py
rename to buying/page/purchase_analytics/__init__.py
diff --git a/erpnext/buying/page/purchase_analytics/purchase_analytics.js b/buying/page/purchase_analytics/purchase_analytics.js
similarity index 100%
rename from erpnext/buying/page/purchase_analytics/purchase_analytics.js
rename to buying/page/purchase_analytics/purchase_analytics.js
diff --git a/erpnext/buying/page/purchase_analytics/purchase_analytics.txt b/buying/page/purchase_analytics/purchase_analytics.txt
similarity index 100%
rename from erpnext/buying/page/purchase_analytics/purchase_analytics.txt
rename to buying/page/purchase_analytics/purchase_analytics.txt
diff --git a/erpnext/buying/report/supplier_quotations/supplier_quotations.txt b/buying/report/supplier_quotations/supplier_quotations.txt
similarity index 100%
rename from erpnext/buying/report/supplier_quotations/supplier_quotations.txt
rename to buying/report/supplier_quotations/supplier_quotations.txt
diff --git a/erpnext/buying/search_criteria/__init__.py b/buying/search_criteria/__init__.py
similarity index 100%
rename from erpnext/buying/search_criteria/__init__.py
rename to buying/search_criteria/__init__.py
diff --git a/erpnext/buying/search_criteria/itemwise_purchase_details/__init__.py b/buying/search_criteria/itemwise_purchase_details/__init__.py
similarity index 100%
rename from erpnext/buying/search_criteria/itemwise_purchase_details/__init__.py
rename to buying/search_criteria/itemwise_purchase_details/__init__.py
diff --git a/erpnext/buying/search_criteria/itemwise_purchase_details/itemwise_purchase_details.js b/buying/search_criteria/itemwise_purchase_details/itemwise_purchase_details.js
similarity index 100%
rename from erpnext/buying/search_criteria/itemwise_purchase_details/itemwise_purchase_details.js
rename to buying/search_criteria/itemwise_purchase_details/itemwise_purchase_details.js
diff --git a/erpnext/buying/search_criteria/itemwise_purchase_details/itemwise_purchase_details.txt b/buying/search_criteria/itemwise_purchase_details/itemwise_purchase_details.txt
similarity index 100%
rename from erpnext/buying/search_criteria/itemwise_purchase_details/itemwise_purchase_details.txt
rename to buying/search_criteria/itemwise_purchase_details/itemwise_purchase_details.txt
diff --git a/erpnext/buying/search_criteria/pending_po_items_to_bill/__init__.py b/buying/search_criteria/pending_po_items_to_bill/__init__.py
similarity index 100%
rename from erpnext/buying/search_criteria/pending_po_items_to_bill/__init__.py
rename to buying/search_criteria/pending_po_items_to_bill/__init__.py
diff --git a/erpnext/buying/search_criteria/pending_po_items_to_bill/pending_po_items_to_bill.js b/buying/search_criteria/pending_po_items_to_bill/pending_po_items_to_bill.js
similarity index 100%
rename from erpnext/buying/search_criteria/pending_po_items_to_bill/pending_po_items_to_bill.js
rename to buying/search_criteria/pending_po_items_to_bill/pending_po_items_to_bill.js
diff --git a/erpnext/buying/search_criteria/pending_po_items_to_bill/pending_po_items_to_bill.txt b/buying/search_criteria/pending_po_items_to_bill/pending_po_items_to_bill.txt
similarity index 100%
rename from erpnext/buying/search_criteria/pending_po_items_to_bill/pending_po_items_to_bill.txt
rename to buying/search_criteria/pending_po_items_to_bill/pending_po_items_to_bill.txt
diff --git a/erpnext/buying/search_criteria/pending_po_items_to_receive/__init__.py b/buying/search_criteria/pending_po_items_to_receive/__init__.py
similarity index 100%
rename from erpnext/buying/search_criteria/pending_po_items_to_receive/__init__.py
rename to buying/search_criteria/pending_po_items_to_receive/__init__.py
diff --git a/erpnext/buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.js b/buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.js
similarity index 100%
rename from erpnext/buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.js
rename to buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.js
diff --git a/erpnext/buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.py b/buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.py
similarity index 100%
rename from erpnext/buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.py
rename to buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.py
diff --git a/erpnext/buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.txt b/buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.txt
similarity index 100%
rename from erpnext/buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.txt
rename to buying/search_criteria/pending_po_items_to_receive/pending_po_items_to_receive.txt
diff --git a/erpnext/buying/search_criteria/purchase_in_transit/__init__.py b/buying/search_criteria/purchase_in_transit/__init__.py
similarity index 100%
rename from erpnext/buying/search_criteria/purchase_in_transit/__init__.py
rename to buying/search_criteria/purchase_in_transit/__init__.py
diff --git a/erpnext/buying/search_criteria/purchase_in_transit/purchase_in_transit.js b/buying/search_criteria/purchase_in_transit/purchase_in_transit.js
similarity index 100%
rename from erpnext/buying/search_criteria/purchase_in_transit/purchase_in_transit.js
rename to buying/search_criteria/purchase_in_transit/purchase_in_transit.js
diff --git a/erpnext/buying/search_criteria/purchase_in_transit/purchase_in_transit.py b/buying/search_criteria/purchase_in_transit/purchase_in_transit.py
similarity index 100%
rename from erpnext/buying/search_criteria/purchase_in_transit/purchase_in_transit.py
rename to buying/search_criteria/purchase_in_transit/purchase_in_transit.py
diff --git a/erpnext/buying/search_criteria/purchase_in_transit/purchase_in_transit.txt b/buying/search_criteria/purchase_in_transit/purchase_in_transit.txt
similarity index 100%
rename from erpnext/buying/search_criteria/purchase_in_transit/purchase_in_transit.txt
rename to buying/search_criteria/purchase_in_transit/purchase_in_transit.txt
diff --git a/data/master.sql.gz b/data/master.sql.gz
deleted file mode 100644
index e9896e4..0000000
--- a/data/master.sql.gz
+++ /dev/null
Binary files differ
diff --git a/erpnext/.no_timestamps b/erpnext/.no_timestamps
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/.no_timestamps
+++ /dev/null
diff --git a/erpnext/home/page/.DS_Store b/erpnext/home/page/.DS_Store
deleted file mode 100644
index 5008ddf..0000000
--- a/erpnext/home/page/.DS_Store
+++ /dev/null
Binary files differ
diff --git a/erpnext/selling/page/sales_dashboard/__init__.py b/erpnext/selling/page/sales_dashboard/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/selling/page/sales_dashboard/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/selling/page/sales_dashboard/sales_dashboard.html b/erpnext/selling/page/sales_dashboard/sales_dashboard.html
deleted file mode 100644
index ec76d44..0000000
--- a/erpnext/selling/page/sales_dashboard/sales_dashboard.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<div class="layout_wrapper">
-<div id="pt_header"></div>
-<div id="pt_filters"></div>
-<p>&nbsp;</p>
-<div id="plot_test"></div>
-</div>
\ No newline at end of file
diff --git a/erpnext/selling/page/sales_dashboard/sales_dashboard.js b/erpnext/selling/page/sales_dashboard/sales_dashboard.js
deleted file mode 100644
index e7d1e61..0000000
--- a/erpnext/selling/page/sales_dashboard/sales_dashboard.js
+++ /dev/null
@@ -1,316 +0,0 @@
-// ERPNext - web based ERP (http://erpnext.com)
-// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-// 
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-pscript['onload_Sales Dashboard'] = function() {
-  var h = new PageHeader('pt_header','Sales Dashboard');
-  
-  pscript.make_filters(); 
-  $dh(pscript.mnt_div);
-  $dh(pscript.mnt_div1);
-  //pscript.dx_axis = [];
-
-	wn.require('js/lib/jqplot/css/jqplot.css');
-	wn.require('js/lib/jqplot/jquery.jqplot.min.js');
-	pscript.all_onchnge();
-}
-//=======================================================================
-pscript.make_filters = function(){
-  this.tab = make_table('pt_filters', 2, 4, '800px', ['200px','200px','200px','200px'], {padding: '2px'});
-  pscript.fiscal_year();
-  pscript.report_type();
-  pscript.item_grp();
-  pscript.month_lst();
-}
-//=======================================================================
-
-pscript.fiscal_year=function(){
-  var me = this;
-  $td(this.tab,0,0).innerHTML = "Select Year";
-  this.sel_fy = $a($td(this.tab,1,0), 'select', null, {width:'120px'});
-  $c_obj('Plot Control', 'get_fiscal_year', '', function(r,rt){
-    if(r.message)  fy_lst = r.message;
-    else  fy_lst = [];
-    empty_select(me.sel_fy);
-    add_sel_options(me.sel_fy,fy_lst);
-    me.sel_fy.value = sys_defaults.fiscal_year;
-  });
-  
-}
-
-//=======================================================================
-
-pscript.report_type=function(){
-  $td(this.tab,0,1).innerHTML = "Select Report";
-  this.sel_rpt = $a($td(this.tab,1,1), 'select', null, {width:'120px'});
-  rpt_lst = ['Monthly','Weekly']; 
-  add_sel_options(this.sel_rpt,rpt_lst);
-}
-
-//=======================================================================
-
-pscript.item_grp=function(){
-  var me = this;
-  
-  $td(this.tab,0,2).innerHTML = "Select Item Group";
-  
-  this.sel_grp = $a($td(this.tab,1,2), 'select', null, {width:'120px'});
-  $c_obj('Plot Control', 'get_item_groups', '', function(r,rt){
-    
-    itg_lst = r.message;
-    itg_lst.push('All');
-    
-    empty_select(me.sel_grp);
-    add_sel_options(me.sel_grp, itg_lst.reverse());
-  });
-  
-}
-
-//=======================================================================
-
-pscript.month_lst=function(){
-  pscript.mnt_div1 = $a($td(this.tab,0,3));
-  pscript.mnt_div1.innerHTML = "Select Month";
-  pscript.mnt_div = $a($td(this.tab,1,3));
-  this.sel_mnt = $a(pscript.mnt_div, 'select', null, {width:'120px'});
-  mnt_lst = ['All','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; 
-  add_sel_options(this.sel_mnt,mnt_lst);
-}
-
-//=======================================================================
-pscript.all_onchnge = function(){
-  pscript.report_change();
-  pscript.fiscal_year_onchnage();
-  pscript.month_onchange();
-  pscript.item_grp_onchange();
-  pscript.monthly();
-}
-
-//=======================================================================
-pscript.report_change = function(){
-  var me = this;
-  this.sel_rpt.onchange = function(){
-    
-    $dh(pscript.mnt_div);
-    $dh(pscript.mnt_div1);
-    if(me.sel_rpt.value == 'Monthly'){
-      
-      pscript.monthly();
-    }
-    
-    else if(me.sel_rpt.value == 'Weekly'){
-      $ds(pscript.mnt_div); 
-      $ds(pscript.mnt_div1);
-      me.sel_mnt.value = 'All';
-      pscript.get_x_dates();
-
-    }
-    
-    else{
-      me.sel_mnt.value = 'All';
-      $i('plot_test').innerHTML = '';
-    }
-  }
-
-}
-//=======================================================================
-pscript.fiscal_year_onchnage = function(){
-  var me = this;
-  this.sel_fy.onchange = function(){ 
-
-    if(me.sel_rpt.value == 'Monthly'){
-      
-      me.sel_mnt.value = 'All';
-      $dh(pscript.mnt_div); 
-      $dh(pscript.mnt_div1);     
-      pscript.monthly();
-    }
-    else if(me.sel_rpt.value == 'Weekly' && me.sel_mnt.value){
-    
-      pscript.get_x_dates();
-      
-    }
-    
-    else{
-      me.sel_mnt.value = 'All';
-      me.sel_rpt.value == '';
-      $i('plot_test').innerHTML = '';
-      
-    }
-  }
-
-}
-//=======================================================================
-pscript.month_onchange = function(){
-  this.sel_mnt.onchange = function(){
-    pscript.get_x_dates();
-    
-  }
-}
-//=======================================================================
-
-pscript.item_grp_onchange=function(){
-  var me = this;
-  this.sel_grp.onchange = function(){
-  
-    if(me.sel_rpt.value == 'Monthly'){
-      
-      me.sel_mnt.value = 'All';
-      $dh(pscript.mnt_div); 
-      $dh(pscript.mnt_div1);     
-      pscript.monthly();
-    }
-    else if(me.sel_rpt.value == 'Weekly' && me.sel_mnt.value){
-    
-      pscript.get_x_dates();
-      
-    }
-    
-    else{
-      me.sel_mnt.value = 'All';
-      me.sel_rpt.value == '';
-      $i('plot_test').innerHTML = '';
-      
-    }
-  }
-    
-  }
-
-//=======================================================================
-
-pscript.get_x_dates=function(){
-  
-  if(this.sel_mnt.value !='All'){
-    
-    pscript.weekly();
-  }
-  else{ 
-    
-    $c_obj('Plot Control','yr_wk_dates',this.sel_fy.value,
-      function(r,rt){
-        
-        pscript.dx_axis = r.message[0];
-        
-        pscript.x_axis = r.message[1];
-        
-        pscript.yearly();
-      }
-    );
-    
-  }
-}
-
-//=======================================================================
-pscript.draw_graph1 = function(x_axis,line1,t) {
-  
-  t = t + " ("+sys_defaults.currency +")";
-  $i('plot_test').innerHTML = '';
-  // div plot_test contains the container div
-  $.jqplot('plot_test',  [line1],{
-    title:t,
-    axesDefaults: {
-      min:0  
-    },
-    
-    axes:{ 
-      xaxis:{ticks:x_axis}
-    }
-  });
-}
-//=======================================================================
-pscript.monthly = function(){
-  var callback = function(r,rt){
-    x_axis = r.message.x_axis;
-    msg_data = r.message.msg_data; 
-    
-    var line1 = [];
-    for(var i=0; i<x_axis.length;i++){
-      var f =0
-      for(var j=0; j<msg_data.length;j++){
-        if(msg_data[j] && x_axis[i]){
-          if(x_axis[i][1] == msg_data[j][1])
-          { 
-            line1.push([i+1,flt(msg_data[j][0])]);
-            f = 1
-          }
-          
-        }
-      }
-      if(f == 0){
-        line1.push([i+1,0]);
-      }
-    }
-    pscript.draw_graph1(x_axis,line1,'Monthly Sales');
-  }
-  var val2 = '';
-  if(this.sel_grp.value != 'All') val2 = this.sel_grp.value;
-  $c_obj('Plot Control','get_monthwise_amount',[this.sel_fy.value,val2],callback);
-}
-
-//=======================================================================
-
-pscript.weekly = function(){
-  
-  var callback = function(r,rt){
-    
-    x_axis =[[1,'Week1'],[2,'Week2'],[3,'Week3'],[4,'Week4'],[5,'Week5'],[6,'Week6']];
-    var line1 = [];
-    for(var i=0; i<x_axis.length;i++){
-      var f = 0;
-      for(var j=0; j<r.message.length;j++){
-        if(r.message[j]){
-          if(r.message[j][1] == x_axis[i][1]){ line1.push([i+1,flt(r.message[j][0])]); f=1;}}
-      }
-      if(f == 0){
-        line1.push([i+1,0]);
-      }
-    }
-    
-    pscript.draw_graph1(x_axis,line1,'Weekly Sales');
-  }
-  dict_mnt={'Jan':1,'Feb':2,'Mar':3,'Apr':4,'May':5,'Jun':6,'Jul':7,'Aug':8,'Sep':9,'Oct':10,'Nov':11,'Dec':12};
-  var val3 = '';
-  if(this.sel_grp.value != 'All') val3 = this.sel_grp.value;
-  $c_obj('Plot Control','get_weekwise_amount',[dict_mnt[this.sel_mnt.value],this.sel_fy.value,val3],callback);
-}
-
-//=======================================================================
-
-pscript.yearly = function(){
-  
-  var callback = function(r,rt){
-      
-    var line1 = [];
-    for(var i=0; i<pscript.x_axis.length;i++){
-      var f = 0
-      for(var j=0; j<r.message.length;j++){
-        if(r.message[j]){
-
-          if((r.message[j][1] == pscript.x_axis[i][1]) && (r.message[j][2] == pscript.x_axis[i][2])){ line1.push([pscript.x_axis[i][0],r.message[j][0]]); break; f =1;}
-      }
-      }
-      if(f == 0){
-        line1.push([pscript.x_axis[i][0],0]);
-      }
-    }
-    
-    pscript.draw_graph1(pscript.dx_axis,line1,'Year-Weekly Sales');
-  }
-  var val2 = '';
-  if(this.sel_grp.value != 'All') val2 = this.sel_grp.value;
-  
-  
-  $c_obj('Plot Control','get_year_weekwise_amount',[this.sel_fy.value,val2],callback);
-} 
\ No newline at end of file
diff --git a/erpnext/selling/page/sales_dashboard/sales_dashboard.txt b/erpnext/selling/page/sales_dashboard/sales_dashboard.txt
deleted file mode 100644
index 1e80e2c..0000000
--- a/erpnext/selling/page/sales_dashboard/sales_dashboard.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-# Page, Sales Dashboard
-[
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2010-10-12 15:19:32',
-		'docstatus': 0,
-		'modified': '2010-09-25 00:00:00',
-		'modified_by': 'Administrator',
-		'owner': 'harshada@webnotestech.com'
-	},
-
-	# These values are common for all Page
-	{
-		'doctype': 'Page',
-		'module': 'Selling',
-		'name': '__common__',
-		'page_name': 'Sales Dashboard',
-		'show_in_menu': 0,
-		'standard': 'Yes'
-	},
-
-	# These values are common for all Page Role
-	{
-		'doctype': 'Page Role',
-		'idx': 1,
-		'name': '__common__',
-		'parent': 'Sales Dashboard',
-		'parentfield': 'roles',
-		'parenttype': 'Page',
-		'role': 'Sales Manager'
-	},
-
-	# Page, Sales Dashboard
-	{
-		'doctype': 'Page',
-		'name': 'Sales Dashboard'
-	},
-
-	# Page Role
-	{
-		'doctype': 'Page Role'
-	}
-]
\ No newline at end of file
diff --git a/erpnext/home/__init__.py b/home/__init__.py
similarity index 100%
rename from erpnext/home/__init__.py
rename to home/__init__.py
diff --git a/erpnext/home/doctype/__init__.py b/home/doctype/__init__.py
similarity index 100%
rename from erpnext/home/doctype/__init__.py
rename to home/doctype/__init__.py
diff --git a/erpnext/home/doctype/company_control/__init__.py b/home/doctype/company_control/__init__.py
similarity index 100%
rename from erpnext/home/doctype/company_control/__init__.py
rename to home/doctype/company_control/__init__.py
diff --git a/erpnext/home/doctype/company_control/company_control.py b/home/doctype/company_control/company_control.py
similarity index 93%
rename from erpnext/home/doctype/company_control/company_control.py
rename to home/doctype/company_control/company_control.py
index 2e2d302..0899bed 100644
--- a/erpnext/home/doctype/company_control/company_control.py
+++ b/home/doctype/company_control/company_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/home/doctype/company_control/company_control.txt b/home/doctype/company_control/company_control.txt
similarity index 100%
rename from erpnext/home/doctype/company_control/company_control.txt
rename to home/doctype/company_control/company_control.txt
diff --git a/erpnext/home/doctype/feed/__init__.py b/home/doctype/feed/__init__.py
similarity index 100%
rename from erpnext/home/doctype/feed/__init__.py
rename to home/doctype/feed/__init__.py
diff --git a/erpnext/home/doctype/feed/feed.py b/home/doctype/feed/feed.py
similarity index 85%
rename from erpnext/home/doctype/feed/feed.py
rename to home/doctype/feed/feed.py
index 23ab4a3..07243bb 100644
--- a/erpnext/home/doctype/feed/feed.py
+++ b/home/doctype/feed/feed.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/home/doctype/feed/feed.txt b/home/doctype/feed/feed.txt
similarity index 100%
rename from erpnext/home/doctype/feed/feed.txt
rename to home/doctype/feed/feed.txt
diff --git a/erpnext/home/doctype/home_control/__init__.py b/home/doctype/home_control/__init__.py
similarity index 100%
rename from erpnext/home/doctype/home_control/__init__.py
rename to home/doctype/home_control/__init__.py
diff --git a/erpnext/home/doctype/home_control/home_control.py b/home/doctype/home_control/home_control.py
similarity index 98%
rename from erpnext/home/doctype/home_control/home_control.py
rename to home/doctype/home_control/home_control.py
index 1a8be78..dd6eeec 100644
--- a/erpnext/home/doctype/home_control/home_control.py
+++ b/home/doctype/home_control/home_control.py
@@ -18,7 +18,7 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes import session, msgprint, errprint
 
diff --git a/erpnext/home/doctype/home_control/home_control.txt b/home/doctype/home_control/home_control.txt
similarity index 100%
rename from erpnext/home/doctype/home_control/home_control.txt
rename to home/doctype/home_control/home_control.txt
diff --git a/erpnext/home/page/__init__.py b/home/page/__init__.py
similarity index 100%
rename from erpnext/home/page/__init__.py
rename to home/page/__init__.py
diff --git a/erpnext/home/page/activity/__init__.py b/home/page/activity/__init__.py
similarity index 100%
rename from erpnext/home/page/activity/__init__.py
rename to home/page/activity/__init__.py
diff --git a/erpnext/home/page/activity/activity.css b/home/page/activity/activity.css
similarity index 100%
rename from erpnext/home/page/activity/activity.css
rename to home/page/activity/activity.css
diff --git a/erpnext/home/page/activity/activity.html b/home/page/activity/activity.html
similarity index 100%
rename from erpnext/home/page/activity/activity.html
rename to home/page/activity/activity.html
diff --git a/erpnext/home/page/activity/activity.js b/home/page/activity/activity.js
similarity index 100%
rename from erpnext/home/page/activity/activity.js
rename to home/page/activity/activity.js
diff --git a/erpnext/home/page/activity/activity.py b/home/page/activity/activity.py
similarity index 100%
rename from erpnext/home/page/activity/activity.py
rename to home/page/activity/activity.py
diff --git a/erpnext/home/page/activity/activity.txt b/home/page/activity/activity.txt
similarity index 100%
rename from erpnext/home/page/activity/activity.txt
rename to home/page/activity/activity.txt
diff --git a/erpnext/home/page/attributions/__init__.py b/home/page/attributions/__init__.py
similarity index 100%
rename from erpnext/home/page/attributions/__init__.py
rename to home/page/attributions/__init__.py
diff --git a/erpnext/home/page/attributions/attributions.css b/home/page/attributions/attributions.css
similarity index 100%
rename from erpnext/home/page/attributions/attributions.css
rename to home/page/attributions/attributions.css
diff --git a/erpnext/home/page/attributions/attributions.html b/home/page/attributions/attributions.html
similarity index 100%
rename from erpnext/home/page/attributions/attributions.html
rename to home/page/attributions/attributions.html
diff --git a/erpnext/home/page/attributions/attributions.js b/home/page/attributions/attributions.js
similarity index 100%
rename from erpnext/home/page/attributions/attributions.js
rename to home/page/attributions/attributions.js
diff --git a/erpnext/home/page/attributions/attributions.py b/home/page/attributions/attributions.py
similarity index 100%
rename from erpnext/home/page/attributions/attributions.py
rename to home/page/attributions/attributions.py
diff --git a/erpnext/home/page/attributions/attributions.txt b/home/page/attributions/attributions.txt
similarity index 100%
rename from erpnext/home/page/attributions/attributions.txt
rename to home/page/attributions/attributions.txt
diff --git a/erpnext/home/page/dashboard/__init__.py b/home/page/dashboard/__init__.py
similarity index 100%
rename from erpnext/home/page/dashboard/__init__.py
rename to home/page/dashboard/__init__.py
diff --git a/erpnext/home/page/dashboard/dashboard.css b/home/page/dashboard/dashboard.css
similarity index 100%
rename from erpnext/home/page/dashboard/dashboard.css
rename to home/page/dashboard/dashboard.css
diff --git a/erpnext/home/page/dashboard/dashboard.html b/home/page/dashboard/dashboard.html
similarity index 100%
rename from erpnext/home/page/dashboard/dashboard.html
rename to home/page/dashboard/dashboard.html
diff --git a/erpnext/home/page/dashboard/dashboard.js b/home/page/dashboard/dashboard.js
similarity index 91%
rename from erpnext/home/page/dashboard/dashboard.js
rename to home/page/dashboard/dashboard.js
index fba3cd7..743f84e 100644
--- a/erpnext/home/page/dashboard/dashboard.js
+++ b/home/page/dashboard/dashboard.js
@@ -16,12 +16,12 @@
 
 pscript.onload_dashboard = function() {
 	// load jqplot
-	wn.require('js/lib/jqplot/css/jqplot.css');
-	wn.require('js/lib/jqplot/jquery.jqplot.min.js');
-	wn.require('js/lib/jqplot/jqplot-plugins/jqplot.barRenderer.js'); 
-	wn.require('js/lib/jqplot/jqplot-plugins/jqplot.canvasAxisTickRenderer.min.js');
-	wn.require('js/lib/jqplot/jqplot-plugins/jqplot.canvasTextRenderer.min.js');
-	wn.require('js/lib/jqplot/jqplot-plugins/jqplot.categoryAxisRenderer.min.js');
+	wn.require('lib/js/lib/jqplot/css/jqplot.css');
+	wn.require('lib/js/lib/jqplot/jquery.jqplot.min.js');
+	wn.require('lib/js/lib/jqplot/jqplot-plugins/jqplot.barRenderer.js'); 
+	wn.require('lib/js/lib/jqplot/jqplot-plugins/jqplot.canvasAxisTickRenderer.min.js');
+	wn.require('lib/js/lib/jqplot/jqplot-plugins/jqplot.canvasTextRenderer.min.js');
+	wn.require('lib/js/lib/jqplot/jqplot-plugins/jqplot.categoryAxisRenderer.min.js');
 
 
 	pscript.dashboard_settings = {
diff --git a/erpnext/home/page/dashboard/dashboard.py b/home/page/dashboard/dashboard.py
similarity index 100%
rename from erpnext/home/page/dashboard/dashboard.py
rename to home/page/dashboard/dashboard.py
diff --git a/erpnext/home/page/dashboard/dashboard.txt b/home/page/dashboard/dashboard.txt
similarity index 100%
rename from erpnext/home/page/dashboard/dashboard.txt
rename to home/page/dashboard/dashboard.txt
diff --git a/erpnext/home/page/desktop/__init__.py b/home/page/desktop/__init__.py
similarity index 100%
rename from erpnext/home/page/desktop/__init__.py
rename to home/page/desktop/__init__.py
diff --git a/erpnext/home/page/desktop/desktop.css b/home/page/desktop/desktop.css
similarity index 97%
rename from erpnext/home/page/desktop/desktop.css
rename to home/page/desktop/desktop.css
index 59e50eb..7b8c21e 100644
--- a/erpnext/home/page/desktop/desktop.css
+++ b/home/page/desktop/desktop.css
@@ -17,7 +17,7 @@
 .sprite-todo{ background-position: 0 -1290px; width: 40px; height: 34px; } 
 .sprite-website{ background-position: 0 -1374px; width: 40px; height: 40px; } 
 
-.sprite-image { background-image: url("images/sprite-desktop.png"); }
+.sprite-image { background-image: url("app/images/sprite-desktop.png"); }
 
 
 .sprite-account{ margin-top: 8px; margin-left: 12px; } 
diff --git a/erpnext/home/page/desktop/desktop.html b/home/page/desktop/desktop.html
similarity index 100%
rename from erpnext/home/page/desktop/desktop.html
rename to home/page/desktop/desktop.html
diff --git a/erpnext/home/page/desktop/desktop.js b/home/page/desktop/desktop.js
similarity index 100%
rename from erpnext/home/page/desktop/desktop.js
rename to home/page/desktop/desktop.js
diff --git a/erpnext/home/page/desktop/desktop.txt b/home/page/desktop/desktop.txt
similarity index 100%
rename from erpnext/home/page/desktop/desktop.txt
rename to home/page/desktop/desktop.txt
diff --git a/erpnext/home/page/profile_settings/__init__.py b/home/page/profile_settings/__init__.py
similarity index 100%
rename from erpnext/home/page/profile_settings/__init__.py
rename to home/page/profile_settings/__init__.py
diff --git a/erpnext/home/page/profile_settings/profile_settings.html b/home/page/profile_settings/profile_settings.html
similarity index 100%
rename from erpnext/home/page/profile_settings/profile_settings.html
rename to home/page/profile_settings/profile_settings.html
diff --git a/erpnext/home/page/profile_settings/profile_settings.js b/home/page/profile_settings/profile_settings.js
similarity index 100%
rename from erpnext/home/page/profile_settings/profile_settings.js
rename to home/page/profile_settings/profile_settings.js
diff --git a/erpnext/home/page/profile_settings/profile_settings.py b/home/page/profile_settings/profile_settings.py
similarity index 100%
rename from erpnext/home/page/profile_settings/profile_settings.py
rename to home/page/profile_settings/profile_settings.py
diff --git a/erpnext/home/page/profile_settings/profile_settings.txt b/home/page/profile_settings/profile_settings.txt
similarity index 100%
rename from erpnext/home/page/profile_settings/profile_settings.txt
rename to home/page/profile_settings/profile_settings.txt
diff --git a/erpnext/hr/Deduction Type/Income Tax/Income Tax.txt b/hr/Deduction Type/Income Tax/Income Tax.txt
similarity index 100%
rename from erpnext/hr/Deduction Type/Income Tax/Income Tax.txt
rename to hr/Deduction Type/Income Tax/Income Tax.txt
diff --git a/erpnext/hr/Deduction Type/Professional Tax/Professional Tax.txt b/hr/Deduction Type/Professional Tax/Professional Tax.txt
similarity index 100%
rename from erpnext/hr/Deduction Type/Professional Tax/Professional Tax.txt
rename to hr/Deduction Type/Professional Tax/Professional Tax.txt
diff --git a/erpnext/hr/Deduction Type/Provident Fund/Provident Fund.txt b/hr/Deduction Type/Provident Fund/Provident Fund.txt
similarity index 100%
rename from erpnext/hr/Deduction Type/Provident Fund/Provident Fund.txt
rename to hr/Deduction Type/Provident Fund/Provident Fund.txt
diff --git a/erpnext/hr/DocType Mapper/Appraisal Template-Appraisal/Appraisal Template-Appraisal.txt b/hr/DocType Mapper/Appraisal Template-Appraisal/Appraisal Template-Appraisal.txt
similarity index 100%
rename from erpnext/hr/DocType Mapper/Appraisal Template-Appraisal/Appraisal Template-Appraisal.txt
rename to hr/DocType Mapper/Appraisal Template-Appraisal/Appraisal Template-Appraisal.txt
diff --git a/erpnext/hr/DocType Mapper/Salary Structure-Salary Slip/Salary Structure-Salary Slip.txt b/hr/DocType Mapper/Salary Structure-Salary Slip/Salary Structure-Salary Slip.txt
similarity index 100%
rename from erpnext/hr/DocType Mapper/Salary Structure-Salary Slip/Salary Structure-Salary Slip.txt
rename to hr/DocType Mapper/Salary Structure-Salary Slip/Salary Structure-Salary Slip.txt
diff --git a/erpnext/hr/Earning Type/Basic/Basic.txt b/hr/Earning Type/Basic/Basic.txt
similarity index 100%
rename from erpnext/hr/Earning Type/Basic/Basic.txt
rename to hr/Earning Type/Basic/Basic.txt
diff --git a/erpnext/hr/Earning Type/House Rent Allowance/House Rent Allowance.txt b/hr/Earning Type/House Rent Allowance/House Rent Allowance.txt
similarity index 100%
rename from erpnext/hr/Earning Type/House Rent Allowance/House Rent Allowance.txt
rename to hr/Earning Type/House Rent Allowance/House Rent Allowance.txt
diff --git a/erpnext/hr/Expense Type/Calls/Calls.txt b/hr/Expense Type/Calls/Calls.txt
similarity index 100%
rename from erpnext/hr/Expense Type/Calls/Calls.txt
rename to hr/Expense Type/Calls/Calls.txt
diff --git a/erpnext/hr/Expense Type/Food/Food.txt b/hr/Expense Type/Food/Food.txt
similarity index 100%
rename from erpnext/hr/Expense Type/Food/Food.txt
rename to hr/Expense Type/Food/Food.txt
diff --git a/erpnext/hr/Expense Type/Medical/Medical.txt b/hr/Expense Type/Medical/Medical.txt
similarity index 100%
rename from erpnext/hr/Expense Type/Medical/Medical.txt
rename to hr/Expense Type/Medical/Medical.txt
diff --git a/erpnext/hr/Expense Type/Others/Others.txt b/hr/Expense Type/Others/Others.txt
similarity index 100%
rename from erpnext/hr/Expense Type/Others/Others.txt
rename to hr/Expense Type/Others/Others.txt
diff --git a/erpnext/hr/Expense Type/Travel/Travel.txt b/hr/Expense Type/Travel/Travel.txt
similarity index 100%
rename from erpnext/hr/Expense Type/Travel/Travel.txt
rename to hr/Expense Type/Travel/Travel.txt
diff --git a/erpnext/hr/Leave Type/Casual Leave/Casual Leave.txt b/hr/Leave Type/Casual Leave/Casual Leave.txt
similarity index 100%
rename from erpnext/hr/Leave Type/Casual Leave/Casual Leave.txt
rename to hr/Leave Type/Casual Leave/Casual Leave.txt
diff --git a/erpnext/hr/Leave Type/Compensatory Off/Compensatory Off.txt b/hr/Leave Type/Compensatory Off/Compensatory Off.txt
similarity index 100%
rename from erpnext/hr/Leave Type/Compensatory Off/Compensatory Off.txt
rename to hr/Leave Type/Compensatory Off/Compensatory Off.txt
diff --git a/erpnext/hr/Leave Type/Leave Without Pay/Leave Without Pay.txt b/hr/Leave Type/Leave Without Pay/Leave Without Pay.txt
similarity index 100%
rename from erpnext/hr/Leave Type/Leave Without Pay/Leave Without Pay.txt
rename to hr/Leave Type/Leave Without Pay/Leave Without Pay.txt
diff --git a/erpnext/hr/Leave Type/Privilege Leave/Privilege Leave.txt b/hr/Leave Type/Privilege Leave/Privilege Leave.txt
similarity index 100%
rename from erpnext/hr/Leave Type/Privilege Leave/Privilege Leave.txt
rename to hr/Leave Type/Privilege Leave/Privilege Leave.txt
diff --git a/erpnext/hr/Leave Type/Sick Leave/Sick Leave.txt b/hr/Leave Type/Sick Leave/Sick Leave.txt
similarity index 100%
rename from erpnext/hr/Leave Type/Sick Leave/Sick Leave.txt
rename to hr/Leave Type/Sick Leave/Sick Leave.txt
diff --git a/erpnext/hr/__init__.py b/hr/__init__.py
similarity index 100%
rename from erpnext/hr/__init__.py
rename to hr/__init__.py
diff --git a/erpnext/hr/doctype/__init__.py b/hr/doctype/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/__init__.py
rename to hr/doctype/__init__.py
diff --git a/erpnext/hr/doctype/appraisal/__init__.py b/hr/doctype/appraisal/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/appraisal/__init__.py
rename to hr/doctype/appraisal/__init__.py
diff --git a/erpnext/hr/doctype/appraisal/appraisal.js b/hr/doctype/appraisal/appraisal.js
similarity index 100%
rename from erpnext/hr/doctype/appraisal/appraisal.js
rename to hr/doctype/appraisal/appraisal.js
diff --git a/erpnext/hr/doctype/appraisal/appraisal.py b/hr/doctype/appraisal/appraisal.py
similarity index 95%
rename from erpnext/hr/doctype/appraisal/appraisal.py
rename to hr/doctype/appraisal/appraisal.py
index 13d2f3f..b0652db 100644
--- a/erpnext/hr/doctype/appraisal/appraisal.py
+++ b/hr/doctype/appraisal/appraisal.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/hr/doctype/appraisal/appraisal.txt b/hr/doctype/appraisal/appraisal.txt
similarity index 100%
rename from erpnext/hr/doctype/appraisal/appraisal.txt
rename to hr/doctype/appraisal/appraisal.txt
diff --git a/erpnext/hr/doctype/appraisal/appraisal_list.js b/hr/doctype/appraisal/appraisal_list.js
similarity index 100%
rename from erpnext/hr/doctype/appraisal/appraisal_list.js
rename to hr/doctype/appraisal/appraisal_list.js
diff --git a/erpnext/hr/doctype/appraisal_goal/__init__.py b/hr/doctype/appraisal_goal/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/appraisal_goal/__init__.py
rename to hr/doctype/appraisal_goal/__init__.py
diff --git a/erpnext/hr/doctype/appraisal_goal/appraisal_goal.txt b/hr/doctype/appraisal_goal/appraisal_goal.txt
similarity index 100%
rename from erpnext/hr/doctype/appraisal_goal/appraisal_goal.txt
rename to hr/doctype/appraisal_goal/appraisal_goal.txt
diff --git a/erpnext/hr/doctype/appraisal_template/__init__.py b/hr/doctype/appraisal_template/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/appraisal_template/__init__.py
rename to hr/doctype/appraisal_template/__init__.py
diff --git a/erpnext/hr/doctype/appraisal_template/appraisal_template.txt b/hr/doctype/appraisal_template/appraisal_template.txt
similarity index 100%
rename from erpnext/hr/doctype/appraisal_template/appraisal_template.txt
rename to hr/doctype/appraisal_template/appraisal_template.txt
diff --git a/erpnext/hr/doctype/appraisal_template_goal/__init__.py b/hr/doctype/appraisal_template_goal/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/appraisal_template_goal/__init__.py
rename to hr/doctype/appraisal_template_goal/__init__.py
diff --git a/erpnext/hr/doctype/appraisal_template_goal/appraisal_template_goal.txt b/hr/doctype/appraisal_template_goal/appraisal_template_goal.txt
similarity index 100%
rename from erpnext/hr/doctype/appraisal_template_goal/appraisal_template_goal.txt
rename to hr/doctype/appraisal_template_goal/appraisal_template_goal.txt
diff --git a/erpnext/hr/doctype/attendance/__init__.py b/hr/doctype/attendance/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/attendance/__init__.py
rename to hr/doctype/attendance/__init__.py
diff --git a/erpnext/hr/doctype/attendance/attendance.js b/hr/doctype/attendance/attendance.js
similarity index 100%
rename from erpnext/hr/doctype/attendance/attendance.js
rename to hr/doctype/attendance/attendance.js
diff --git a/erpnext/hr/doctype/attendance/attendance.py b/hr/doctype/attendance/attendance.py
similarity index 94%
rename from erpnext/hr/doctype/attendance/attendance.py
rename to hr/doctype/attendance/attendance.py
index 9d52a8b..79425fc 100644
--- a/erpnext/hr/doctype/attendance/attendance.py
+++ b/hr/doctype/attendance/attendance.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/hr/doctype/attendance/attendance.txt b/hr/doctype/attendance/attendance.txt
similarity index 100%
rename from erpnext/hr/doctype/attendance/attendance.txt
rename to hr/doctype/attendance/attendance.txt
diff --git a/erpnext/hr/doctype/attendance/attendance_list.js b/hr/doctype/attendance/attendance_list.js
similarity index 100%
rename from erpnext/hr/doctype/attendance/attendance_list.js
rename to hr/doctype/attendance/attendance_list.js
diff --git a/erpnext/hr/doctype/attendance_control_panel/__init__.py b/hr/doctype/attendance_control_panel/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/attendance_control_panel/__init__.py
rename to hr/doctype/attendance_control_panel/__init__.py
diff --git a/erpnext/hr/doctype/attendance_control_panel/attendance_control_panel.js b/hr/doctype/attendance_control_panel/attendance_control_panel.js
similarity index 100%
rename from erpnext/hr/doctype/attendance_control_panel/attendance_control_panel.js
rename to hr/doctype/attendance_control_panel/attendance_control_panel.js
diff --git a/erpnext/hr/doctype/attendance_control_panel/attendance_control_panel.py b/hr/doctype/attendance_control_panel/attendance_control_panel.py
similarity index 94%
rename from erpnext/hr/doctype/attendance_control_panel/attendance_control_panel.py
rename to hr/doctype/attendance_control_panel/attendance_control_panel.py
index d845d10..2878e3c 100644
--- a/erpnext/hr/doctype/attendance_control_panel/attendance_control_panel.py
+++ b/hr/doctype/attendance_control_panel/attendance_control_panel.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/hr/doctype/attendance_control_panel/attendance_control_panel.txt b/hr/doctype/attendance_control_panel/attendance_control_panel.txt
similarity index 100%
rename from erpnext/hr/doctype/attendance_control_panel/attendance_control_panel.txt
rename to hr/doctype/attendance_control_panel/attendance_control_panel.txt
diff --git a/erpnext/hr/doctype/branch/__init__.py b/hr/doctype/branch/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/branch/__init__.py
rename to hr/doctype/branch/__init__.py
diff --git a/erpnext/hr/doctype/branch/branch.txt b/hr/doctype/branch/branch.txt
similarity index 100%
rename from erpnext/hr/doctype/branch/branch.txt
rename to hr/doctype/branch/branch.txt
diff --git a/erpnext/hr/doctype/deduction_type/__init__.py b/hr/doctype/deduction_type/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/deduction_type/__init__.py
rename to hr/doctype/deduction_type/__init__.py
diff --git a/erpnext/hr/doctype/deduction_type/deduction_type.txt b/hr/doctype/deduction_type/deduction_type.txt
similarity index 100%
rename from erpnext/hr/doctype/deduction_type/deduction_type.txt
rename to hr/doctype/deduction_type/deduction_type.txt
diff --git a/erpnext/hr/doctype/department/__init__.py b/hr/doctype/department/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/department/__init__.py
rename to hr/doctype/department/__init__.py
diff --git a/erpnext/hr/doctype/department/department.txt b/hr/doctype/department/department.txt
similarity index 100%
rename from erpnext/hr/doctype/department/department.txt
rename to hr/doctype/department/department.txt
diff --git a/erpnext/hr/doctype/designation/__init__.py b/hr/doctype/designation/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/designation/__init__.py
rename to hr/doctype/designation/__init__.py
diff --git a/erpnext/hr/doctype/designation/designation.txt b/hr/doctype/designation/designation.txt
similarity index 100%
rename from erpnext/hr/doctype/designation/designation.txt
rename to hr/doctype/designation/designation.txt
diff --git a/erpnext/hr/doctype/earning_type/__init__.py b/hr/doctype/earning_type/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/earning_type/__init__.py
rename to hr/doctype/earning_type/__init__.py
diff --git a/erpnext/hr/doctype/earning_type/earning_type.txt b/hr/doctype/earning_type/earning_type.txt
similarity index 100%
rename from erpnext/hr/doctype/earning_type/earning_type.txt
rename to hr/doctype/earning_type/earning_type.txt
diff --git a/erpnext/hr/doctype/employee/__init__.py b/hr/doctype/employee/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/employee/__init__.py
rename to hr/doctype/employee/__init__.py
diff --git a/erpnext/hr/doctype/employee/employee.js b/hr/doctype/employee/employee.js
similarity index 100%
rename from erpnext/hr/doctype/employee/employee.js
rename to hr/doctype/employee/employee.js
diff --git a/erpnext/hr/doctype/employee/employee.py b/hr/doctype/employee/employee.py
similarity index 95%
rename from erpnext/hr/doctype/employee/employee.py
rename to hr/doctype/employee/employee.py
index bb9a4ef..26681dd 100644
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/hr/doctype/employee/employee.py
@@ -17,12 +17,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 sql = webnotes.conn.sql
 get_value = webnotes.conn.get_value
diff --git a/erpnext/hr/doctype/employee/employee.txt b/hr/doctype/employee/employee.txt
similarity index 100%
rename from erpnext/hr/doctype/employee/employee.txt
rename to hr/doctype/employee/employee.txt
diff --git a/erpnext/hr/doctype/employee/employee_list.js b/hr/doctype/employee/employee_list.js
similarity index 100%
rename from erpnext/hr/doctype/employee/employee_list.js
rename to hr/doctype/employee/employee_list.js
diff --git a/erpnext/hr/doctype/employee_education/__init__.py b/hr/doctype/employee_education/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/employee_education/__init__.py
rename to hr/doctype/employee_education/__init__.py
diff --git a/erpnext/hr/doctype/employee_education/employee_education.txt b/hr/doctype/employee_education/employee_education.txt
similarity index 100%
rename from erpnext/hr/doctype/employee_education/employee_education.txt
rename to hr/doctype/employee_education/employee_education.txt
diff --git a/erpnext/hr/doctype/employee_external_work_history/__init__.py b/hr/doctype/employee_external_work_history/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/employee_external_work_history/__init__.py
rename to hr/doctype/employee_external_work_history/__init__.py
diff --git a/erpnext/hr/doctype/employee_external_work_history/employee_external_work_history.txt b/hr/doctype/employee_external_work_history/employee_external_work_history.txt
similarity index 100%
rename from erpnext/hr/doctype/employee_external_work_history/employee_external_work_history.txt
rename to hr/doctype/employee_external_work_history/employee_external_work_history.txt
diff --git a/erpnext/hr/doctype/employee_internal_work_history/__init__.py b/hr/doctype/employee_internal_work_history/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/employee_internal_work_history/__init__.py
rename to hr/doctype/employee_internal_work_history/__init__.py
diff --git a/erpnext/hr/doctype/employee_internal_work_history/employee_internal_work_history.txt b/hr/doctype/employee_internal_work_history/employee_internal_work_history.txt
similarity index 100%
rename from erpnext/hr/doctype/employee_internal_work_history/employee_internal_work_history.txt
rename to hr/doctype/employee_internal_work_history/employee_internal_work_history.txt
diff --git a/erpnext/hr/doctype/employee_training/__init__.py b/hr/doctype/employee_training/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/employee_training/__init__.py
rename to hr/doctype/employee_training/__init__.py
diff --git a/erpnext/hr/doctype/employee_training/employee_training.txt b/hr/doctype/employee_training/employee_training.txt
similarity index 100%
rename from erpnext/hr/doctype/employee_training/employee_training.txt
rename to hr/doctype/employee_training/employee_training.txt
diff --git a/erpnext/hr/doctype/employment_type/__init__.py b/hr/doctype/employment_type/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/employment_type/__init__.py
rename to hr/doctype/employment_type/__init__.py
diff --git a/erpnext/hr/doctype/employment_type/employment_type.txt b/hr/doctype/employment_type/employment_type.txt
similarity index 100%
rename from erpnext/hr/doctype/employment_type/employment_type.txt
rename to hr/doctype/employment_type/employment_type.txt
diff --git a/erpnext/hr/doctype/expense_claim/__init__.py b/hr/doctype/expense_claim/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/expense_claim/__init__.py
rename to hr/doctype/expense_claim/__init__.py
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/hr/doctype/expense_claim/expense_claim.js
similarity index 98%
rename from erpnext/hr/doctype/expense_claim/expense_claim.js
rename to hr/doctype/expense_claim/expense_claim.js
index eabb476..a4d26ea 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/hr/doctype/expense_claim/expense_claim.js
@@ -94,7 +94,7 @@
 	cur_frm.cscript.calculate_total(doc,cdt,cdn);
 }
 
-wn.require('erpnext/setup/doctype/notification_control/notification_control.js');
+wn.require('app/setup/doctype/notification_control/notification_control.js');
 
 cur_frm.cscript.approve = function(doc,cdt,cdn){
 
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/hr/doctype/expense_claim/expense_claim.py
similarity index 94%
rename from erpnext/hr/doctype/expense_claim/expense_claim.py
rename to hr/doctype/expense_claim/expense_claim.py
index ee02dc3..b8bd41e 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.py
+++ b/hr/doctype/expense_claim/expense_claim.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.txt b/hr/doctype/expense_claim/expense_claim.txt
similarity index 100%
rename from erpnext/hr/doctype/expense_claim/expense_claim.txt
rename to hr/doctype/expense_claim/expense_claim.txt
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim_list.js b/hr/doctype/expense_claim/expense_claim_list.js
similarity index 100%
rename from erpnext/hr/doctype/expense_claim/expense_claim_list.js
rename to hr/doctype/expense_claim/expense_claim_list.js
diff --git a/erpnext/hr/doctype/expense_claim_detail/__init__.py b/hr/doctype/expense_claim_detail/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/expense_claim_detail/__init__.py
rename to hr/doctype/expense_claim_detail/__init__.py
diff --git a/erpnext/hr/doctype/expense_claim_detail/expense_claim_detail.txt b/hr/doctype/expense_claim_detail/expense_claim_detail.txt
similarity index 100%
rename from erpnext/hr/doctype/expense_claim_detail/expense_claim_detail.txt
rename to hr/doctype/expense_claim_detail/expense_claim_detail.txt
diff --git a/erpnext/hr/doctype/expense_claim_type/__init__.py b/hr/doctype/expense_claim_type/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/expense_claim_type/__init__.py
rename to hr/doctype/expense_claim_type/__init__.py
diff --git a/erpnext/hr/doctype/expense_claim_type/expense_claim_type.txt b/hr/doctype/expense_claim_type/expense_claim_type.txt
similarity index 100%
rename from erpnext/hr/doctype/expense_claim_type/expense_claim_type.txt
rename to hr/doctype/expense_claim_type/expense_claim_type.txt
diff --git a/erpnext/hr/doctype/grade/__init__.py b/hr/doctype/grade/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/grade/__init__.py
rename to hr/doctype/grade/__init__.py
diff --git a/erpnext/hr/doctype/grade/grade.txt b/hr/doctype/grade/grade.txt
similarity index 100%
rename from erpnext/hr/doctype/grade/grade.txt
rename to hr/doctype/grade/grade.txt
diff --git a/erpnext/hr/doctype/holiday/__init__.py b/hr/doctype/holiday/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/holiday/__init__.py
rename to hr/doctype/holiday/__init__.py
diff --git a/erpnext/hr/doctype/holiday/holiday.txt b/hr/doctype/holiday/holiday.txt
similarity index 100%
rename from erpnext/hr/doctype/holiday/holiday.txt
rename to hr/doctype/holiday/holiday.txt
diff --git a/erpnext/hr/doctype/holiday_list/__init__.py b/hr/doctype/holiday_list/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/holiday_list/__init__.py
rename to hr/doctype/holiday_list/__init__.py
diff --git a/erpnext/hr/doctype/holiday_list/holiday_list.py b/hr/doctype/holiday_list/holiday_list.py
similarity index 94%
rename from erpnext/hr/doctype/holiday_list/holiday_list.py
rename to hr/doctype/holiday_list/holiday_list.py
index dc75e9a..a5763ad 100644
--- a/erpnext/hr/doctype/holiday_list/holiday_list.py
+++ b/hr/doctype/holiday_list/holiday_list.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/hr/doctype/holiday_list/holiday_list.txt b/hr/doctype/holiday_list/holiday_list.txt
similarity index 100%
rename from erpnext/hr/doctype/holiday_list/holiday_list.txt
rename to hr/doctype/holiday_list/holiday_list.txt
diff --git a/erpnext/hr/doctype/leave_allocation/__init__.py b/hr/doctype/leave_allocation/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/leave_allocation/__init__.py
rename to hr/doctype/leave_allocation/__init__.py
diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.js b/hr/doctype/leave_allocation/leave_allocation.js
similarity index 100%
rename from erpnext/hr/doctype/leave_allocation/leave_allocation.js
rename to hr/doctype/leave_allocation/leave_allocation.js
diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.py b/hr/doctype/leave_allocation/leave_allocation.py
similarity index 95%
rename from erpnext/hr/doctype/leave_allocation/leave_allocation.py
rename to hr/doctype/leave_allocation/leave_allocation.py
index bf10468..3b8576f 100755
--- a/erpnext/hr/doctype/leave_allocation/leave_allocation.py
+++ b/hr/doctype/leave_allocation/leave_allocation.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/hr/doctype/leave_allocation/leave_allocation.txt b/hr/doctype/leave_allocation/leave_allocation.txt
similarity index 100%
rename from erpnext/hr/doctype/leave_allocation/leave_allocation.txt
rename to hr/doctype/leave_allocation/leave_allocation.txt
diff --git a/erpnext/hr/doctype/leave_application/__init__.py b/hr/doctype/leave_application/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/leave_application/__init__.py
rename to hr/doctype/leave_application/__init__.py
diff --git a/erpnext/hr/doctype/leave_application/leave_application.js b/hr/doctype/leave_application/leave_application.js
similarity index 100%
rename from erpnext/hr/doctype/leave_application/leave_application.js
rename to hr/doctype/leave_application/leave_application.js
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/hr/doctype/leave_application/leave_application.py
similarity index 95%
rename from erpnext/hr/doctype/leave_application/leave_application.py
rename to hr/doctype/leave_application/leave_application.py
index b17b91f..68a5d3e 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/hr/doctype/leave_application/leave_application.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/hr/doctype/leave_application/leave_application.txt b/hr/doctype/leave_application/leave_application.txt
similarity index 100%
rename from erpnext/hr/doctype/leave_application/leave_application.txt
rename to hr/doctype/leave_application/leave_application.txt
diff --git a/erpnext/hr/doctype/leave_application/leave_application_list.js b/hr/doctype/leave_application/leave_application_list.js
similarity index 100%
rename from erpnext/hr/doctype/leave_application/leave_application_list.js
rename to hr/doctype/leave_application/leave_application_list.js
diff --git a/erpnext/hr/doctype/leave_control_panel/__init__.py b/hr/doctype/leave_control_panel/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/leave_control_panel/__init__.py
rename to hr/doctype/leave_control_panel/__init__.py
diff --git a/erpnext/hr/doctype/leave_control_panel/leave_control_panel.js b/hr/doctype/leave_control_panel/leave_control_panel.js
similarity index 100%
rename from erpnext/hr/doctype/leave_control_panel/leave_control_panel.js
rename to hr/doctype/leave_control_panel/leave_control_panel.js
diff --git a/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py b/hr/doctype/leave_control_panel/leave_control_panel.py
similarity index 92%
rename from erpnext/hr/doctype/leave_control_panel/leave_control_panel.py
rename to hr/doctype/leave_control_panel/leave_control_panel.py
index 13c886e..270bf30 100644
--- a/erpnext/hr/doctype/leave_control_panel/leave_control_panel.py
+++ b/hr/doctype/leave_control_panel/leave_control_panel.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/hr/doctype/leave_control_panel/leave_control_panel.txt b/hr/doctype/leave_control_panel/leave_control_panel.txt
similarity index 100%
rename from erpnext/hr/doctype/leave_control_panel/leave_control_panel.txt
rename to hr/doctype/leave_control_panel/leave_control_panel.txt
diff --git a/erpnext/hr/doctype/leave_type/__init__.py b/hr/doctype/leave_type/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/leave_type/__init__.py
rename to hr/doctype/leave_type/__init__.py
diff --git a/erpnext/hr/doctype/leave_type/leave_type.txt b/hr/doctype/leave_type/leave_type.txt
similarity index 100%
rename from erpnext/hr/doctype/leave_type/leave_type.txt
rename to hr/doctype/leave_type/leave_type.txt
diff --git a/erpnext/hr/doctype/other_income_detail/__init__.py b/hr/doctype/other_income_detail/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/other_income_detail/__init__.py
rename to hr/doctype/other_income_detail/__init__.py
diff --git a/erpnext/hr/doctype/other_income_detail/other_income_detail.txt b/hr/doctype/other_income_detail/other_income_detail.txt
similarity index 100%
rename from erpnext/hr/doctype/other_income_detail/other_income_detail.txt
rename to hr/doctype/other_income_detail/other_income_detail.txt
diff --git a/erpnext/hr/doctype/salary_manager/__init__.py b/hr/doctype/salary_manager/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/salary_manager/__init__.py
rename to hr/doctype/salary_manager/__init__.py
diff --git a/erpnext/hr/doctype/salary_manager/salary_manager.js b/hr/doctype/salary_manager/salary_manager.js
similarity index 100%
rename from erpnext/hr/doctype/salary_manager/salary_manager.js
rename to hr/doctype/salary_manager/salary_manager.js
diff --git a/erpnext/hr/doctype/salary_manager/salary_manager.py b/hr/doctype/salary_manager/salary_manager.py
similarity index 96%
rename from erpnext/hr/doctype/salary_manager/salary_manager.py
rename to hr/doctype/salary_manager/salary_manager.py
index 317e72d..a8d5d24 100644
--- a/erpnext/hr/doctype/salary_manager/salary_manager.py
+++ b/hr/doctype/salary_manager/salary_manager.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 sql = webnotes.conn.sql
 get_value = webnotes.conn.get_value
diff --git a/erpnext/hr/doctype/salary_manager/salary_manager.txt b/hr/doctype/salary_manager/salary_manager.txt
similarity index 100%
rename from erpnext/hr/doctype/salary_manager/salary_manager.txt
rename to hr/doctype/salary_manager/salary_manager.txt
diff --git a/erpnext/hr/doctype/salary_manager/test_salary_manager.py b/hr/doctype/salary_manager/test_salary_manager.py
similarity index 100%
rename from erpnext/hr/doctype/salary_manager/test_salary_manager.py
rename to hr/doctype/salary_manager/test_salary_manager.py
diff --git a/erpnext/hr/doctype/salary_slip/__init__.py b/hr/doctype/salary_slip/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/salary_slip/__init__.py
rename to hr/doctype/salary_slip/__init__.py
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.js b/hr/doctype/salary_slip/salary_slip.js
similarity index 100%
rename from erpnext/hr/doctype/salary_slip/salary_slip.js
rename to hr/doctype/salary_slip/salary_slip.js
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/hr/doctype/salary_slip/salary_slip.py
similarity index 97%
rename from erpnext/hr/doctype/salary_slip/salary_slip.py
rename to hr/doctype/salary_slip/salary_slip.py
index ff72652..197c3bd 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/hr/doctype/salary_slip/salary_slip.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.txt b/hr/doctype/salary_slip/salary_slip.txt
similarity index 100%
rename from erpnext/hr/doctype/salary_slip/salary_slip.txt
rename to hr/doctype/salary_slip/salary_slip.txt
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip_list.js b/hr/doctype/salary_slip/salary_slip_list.js
similarity index 100%
rename from erpnext/hr/doctype/salary_slip/salary_slip_list.js
rename to hr/doctype/salary_slip/salary_slip_list.js
diff --git a/erpnext/hr/doctype/salary_slip_deduction/__init__.py b/hr/doctype/salary_slip_deduction/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/salary_slip_deduction/__init__.py
rename to hr/doctype/salary_slip_deduction/__init__.py
diff --git a/erpnext/hr/doctype/salary_slip_deduction/salary_slip_deduction.txt b/hr/doctype/salary_slip_deduction/salary_slip_deduction.txt
similarity index 100%
rename from erpnext/hr/doctype/salary_slip_deduction/salary_slip_deduction.txt
rename to hr/doctype/salary_slip_deduction/salary_slip_deduction.txt
diff --git a/erpnext/hr/doctype/salary_slip_earning/__init__.py b/hr/doctype/salary_slip_earning/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/salary_slip_earning/__init__.py
rename to hr/doctype/salary_slip_earning/__init__.py
diff --git a/erpnext/hr/doctype/salary_slip_earning/salary_slip_earning.txt b/hr/doctype/salary_slip_earning/salary_slip_earning.txt
similarity index 100%
rename from erpnext/hr/doctype/salary_slip_earning/salary_slip_earning.txt
rename to hr/doctype/salary_slip_earning/salary_slip_earning.txt
diff --git a/erpnext/hr/doctype/salary_structure/__init__.py b/hr/doctype/salary_structure/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/salary_structure/__init__.py
rename to hr/doctype/salary_structure/__init__.py
diff --git a/erpnext/hr/doctype/salary_structure/listview.js b/hr/doctype/salary_structure/listview.js
similarity index 100%
rename from erpnext/hr/doctype/salary_structure/listview.js
rename to hr/doctype/salary_structure/listview.js
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.js b/hr/doctype/salary_structure/salary_structure.js
similarity index 100%
rename from erpnext/hr/doctype/salary_structure/salary_structure.js
rename to hr/doctype/salary_structure/salary_structure.js
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.py b/hr/doctype/salary_structure/salary_structure.py
similarity index 94%
rename from erpnext/hr/doctype/salary_structure/salary_structure.py
rename to hr/doctype/salary_structure/salary_structure.py
index c4fd54a..8551032 100644
--- a/erpnext/hr/doctype/salary_structure/salary_structure.py
+++ b/hr/doctype/salary_structure/salary_structure.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/hr/doctype/salary_structure/salary_structure.txt b/hr/doctype/salary_structure/salary_structure.txt
similarity index 100%
rename from erpnext/hr/doctype/salary_structure/salary_structure.txt
rename to hr/doctype/salary_structure/salary_structure.txt
diff --git a/erpnext/hr/doctype/salary_structure_deduction/__init__.py b/hr/doctype/salary_structure_deduction/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/salary_structure_deduction/__init__.py
rename to hr/doctype/salary_structure_deduction/__init__.py
diff --git a/erpnext/hr/doctype/salary_structure_deduction/salary_structure_deduction.txt b/hr/doctype/salary_structure_deduction/salary_structure_deduction.txt
similarity index 100%
rename from erpnext/hr/doctype/salary_structure_deduction/salary_structure_deduction.txt
rename to hr/doctype/salary_structure_deduction/salary_structure_deduction.txt
diff --git a/erpnext/hr/doctype/salary_structure_earning/__init__.py b/hr/doctype/salary_structure_earning/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/salary_structure_earning/__init__.py
rename to hr/doctype/salary_structure_earning/__init__.py
diff --git a/erpnext/hr/doctype/salary_structure_earning/salary_structure_earning.txt b/hr/doctype/salary_structure_earning/salary_structure_earning.txt
similarity index 100%
rename from erpnext/hr/doctype/salary_structure_earning/salary_structure_earning.txt
rename to hr/doctype/salary_structure_earning/salary_structure_earning.txt
diff --git a/erpnext/hr/page/__init__.py b/hr/page/__init__.py
similarity index 100%
rename from erpnext/hr/page/__init__.py
rename to hr/page/__init__.py
diff --git a/erpnext/hr/page/hr_home/__init__.py b/hr/page/hr_home/__init__.py
similarity index 100%
rename from erpnext/hr/page/hr_home/__init__.py
rename to hr/page/hr_home/__init__.py
diff --git a/erpnext/hr/page/hr_home/hr_home.html b/hr/page/hr_home/hr_home.html
similarity index 100%
rename from erpnext/hr/page/hr_home/hr_home.html
rename to hr/page/hr_home/hr_home.html
diff --git a/erpnext/hr/page/hr_home/hr_home.js b/hr/page/hr_home/hr_home.js
similarity index 100%
rename from erpnext/hr/page/hr_home/hr_home.js
rename to hr/page/hr_home/hr_home.js
diff --git a/erpnext/hr/page/hr_home/hr_home.txt b/hr/page/hr_home/hr_home.txt
similarity index 100%
rename from erpnext/hr/page/hr_home/hr_home.txt
rename to hr/page/hr_home/hr_home.txt
diff --git a/erpnext/hr/search_criteria/__init__.py b/hr/search_criteria/__init__.py
similarity index 100%
rename from erpnext/hr/search_criteria/__init__.py
rename to hr/search_criteria/__init__.py
diff --git a/erpnext/hr/search_criteria/employee_appraisals/__init__.py b/hr/search_criteria/employee_appraisals/__init__.py
similarity index 100%
rename from erpnext/hr/search_criteria/employee_appraisals/__init__.py
rename to hr/search_criteria/employee_appraisals/__init__.py
diff --git a/erpnext/hr/search_criteria/employee_appraisals/employee_appraisals.txt b/hr/search_criteria/employee_appraisals/employee_appraisals.txt
similarity index 100%
rename from erpnext/hr/search_criteria/employee_appraisals/employee_appraisals.txt
rename to hr/search_criteria/employee_appraisals/employee_appraisals.txt
diff --git a/erpnext/hr/search_criteria/employee_information/__init__.py b/hr/search_criteria/employee_information/__init__.py
similarity index 100%
rename from erpnext/hr/search_criteria/employee_information/__init__.py
rename to hr/search_criteria/employee_information/__init__.py
diff --git a/erpnext/hr/search_criteria/employee_information/employee_information.py b/hr/search_criteria/employee_information/employee_information.py
similarity index 100%
rename from erpnext/hr/search_criteria/employee_information/employee_information.py
rename to hr/search_criteria/employee_information/employee_information.py
diff --git a/erpnext/hr/search_criteria/employee_information/employee_information.txt b/hr/search_criteria/employee_information/employee_information.txt
similarity index 100%
rename from erpnext/hr/search_criteria/employee_information/employee_information.txt
rename to hr/search_criteria/employee_information/employee_information.txt
diff --git a/erpnext/hr/search_criteria/employees_birthday/__init__.py b/hr/search_criteria/employees_birthday/__init__.py
similarity index 100%
rename from erpnext/hr/search_criteria/employees_birthday/__init__.py
rename to hr/search_criteria/employees_birthday/__init__.py
diff --git a/erpnext/hr/search_criteria/employees_birthday/employees_birthday.txt b/hr/search_criteria/employees_birthday/employees_birthday.txt
similarity index 100%
rename from erpnext/hr/search_criteria/employees_birthday/employees_birthday.txt
rename to hr/search_criteria/employees_birthday/employees_birthday.txt
diff --git a/erpnext/hr/search_criteria/employeewise_balance_leave_report/__init__.py b/hr/search_criteria/employeewise_balance_leave_report/__init__.py
similarity index 100%
rename from erpnext/hr/search_criteria/employeewise_balance_leave_report/__init__.py
rename to hr/search_criteria/employeewise_balance_leave_report/__init__.py
diff --git a/erpnext/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.js b/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.js
similarity index 100%
rename from erpnext/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.js
rename to hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.js
diff --git a/erpnext/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.py b/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.py
similarity index 100%
rename from erpnext/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.py
rename to hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.py
diff --git a/erpnext/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.sql b/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.sql
similarity index 100%
rename from erpnext/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.sql
rename to hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.sql
diff --git a/erpnext/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.txt b/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.txt
similarity index 100%
rename from erpnext/hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.txt
rename to hr/search_criteria/employeewise_balance_leave_report/employeewise_balance_leave_report.txt
diff --git a/erpnext/hr/search_criteria/expense_claims/__init__.py b/hr/search_criteria/expense_claims/__init__.py
similarity index 100%
rename from erpnext/hr/search_criteria/expense_claims/__init__.py
rename to hr/search_criteria/expense_claims/__init__.py
diff --git a/erpnext/hr/search_criteria/expense_claims/expense_claims.txt b/hr/search_criteria/expense_claims/expense_claims.txt
similarity index 100%
rename from erpnext/hr/search_criteria/expense_claims/expense_claims.txt
rename to hr/search_criteria/expense_claims/expense_claims.txt
diff --git a/erpnext/hr/search_criteria/monthly_attendance_details/__init__.py b/hr/search_criteria/monthly_attendance_details/__init__.py
similarity index 100%
rename from erpnext/hr/search_criteria/monthly_attendance_details/__init__.py
rename to hr/search_criteria/monthly_attendance_details/__init__.py
diff --git a/erpnext/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.js b/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.js
similarity index 100%
rename from erpnext/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.js
rename to hr/search_criteria/monthly_attendance_details/monthly_attendance_details.js
diff --git a/erpnext/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.py b/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.py
similarity index 100%
rename from erpnext/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.py
rename to hr/search_criteria/monthly_attendance_details/monthly_attendance_details.py
diff --git a/erpnext/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.sql b/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.sql
similarity index 100%
rename from erpnext/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.sql
rename to hr/search_criteria/monthly_attendance_details/monthly_attendance_details.sql
diff --git a/erpnext/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.txt b/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.txt
similarity index 100%
rename from erpnext/hr/search_criteria/monthly_attendance_details/monthly_attendance_details.txt
rename to hr/search_criteria/monthly_attendance_details/monthly_attendance_details.txt
diff --git a/erpnext/hr/search_criteria/monthly_salary_register/__init__.py b/hr/search_criteria/monthly_salary_register/__init__.py
similarity index 100%
rename from erpnext/hr/search_criteria/monthly_salary_register/__init__.py
rename to hr/search_criteria/monthly_salary_register/__init__.py
diff --git a/erpnext/hr/search_criteria/monthly_salary_register/monthly_salary_register.py b/hr/search_criteria/monthly_salary_register/monthly_salary_register.py
similarity index 100%
rename from erpnext/hr/search_criteria/monthly_salary_register/monthly_salary_register.py
rename to hr/search_criteria/monthly_salary_register/monthly_salary_register.py
diff --git a/erpnext/hr/search_criteria/monthly_salary_register/monthly_salary_register.txt b/hr/search_criteria/monthly_salary_register/monthly_salary_register.txt
similarity index 100%
rename from erpnext/hr/search_criteria/monthly_salary_register/monthly_salary_register.txt
rename to hr/search_criteria/monthly_salary_register/monthly_salary_register.txt
diff --git a/erpnext/hr/search_criteria/new_or_left_employees_for_a_month/__init__.py b/hr/search_criteria/new_or_left_employees_for_a_month/__init__.py
similarity index 100%
rename from erpnext/hr/search_criteria/new_or_left_employees_for_a_month/__init__.py
rename to hr/search_criteria/new_or_left_employees_for_a_month/__init__.py
diff --git a/erpnext/hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.js b/hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.js
similarity index 100%
rename from erpnext/hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.js
rename to hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.js
diff --git a/erpnext/hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.py b/hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.py
similarity index 100%
rename from erpnext/hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.py
rename to hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.py
diff --git a/erpnext/hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.txt b/hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.txt
similarity index 100%
rename from erpnext/hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.txt
rename to hr/search_criteria/new_or_left_employees_for_a_month/new_or_left_employees_for_a_month.txt
diff --git a/erpnext/hr/search_criteria/salary_register/__init__.py b/hr/search_criteria/salary_register/__init__.py
similarity index 100%
rename from erpnext/hr/search_criteria/salary_register/__init__.py
rename to hr/search_criteria/salary_register/__init__.py
diff --git a/erpnext/hr/search_criteria/salary_register/salary_register.js b/hr/search_criteria/salary_register/salary_register.js
similarity index 100%
rename from erpnext/hr/search_criteria/salary_register/salary_register.js
rename to hr/search_criteria/salary_register/salary_register.js
diff --git a/erpnext/hr/search_criteria/salary_register/salary_register.py b/hr/search_criteria/salary_register/salary_register.py
similarity index 100%
rename from erpnext/hr/search_criteria/salary_register/salary_register.py
rename to hr/search_criteria/salary_register/salary_register.py
diff --git a/erpnext/hr/search_criteria/salary_register/salary_register.txt b/hr/search_criteria/salary_register/salary_register.txt
similarity index 100%
rename from erpnext/hr/search_criteria/salary_register/salary_register.txt
rename to hr/search_criteria/salary_register/salary_register.txt
diff --git a/erpnext/hr/search_criteria/salary_slips/__init__.py b/hr/search_criteria/salary_slips/__init__.py
similarity index 100%
rename from erpnext/hr/search_criteria/salary_slips/__init__.py
rename to hr/search_criteria/salary_slips/__init__.py
diff --git a/erpnext/hr/search_criteria/salary_slips/salary_slips.txt b/hr/search_criteria/salary_slips/salary_slips.txt
similarity index 100%
rename from erpnext/hr/search_criteria/salary_slips/salary_slips.txt
rename to hr/search_criteria/salary_slips/salary_slips.txt
diff --git a/erpnext/hr/search_criteria/salary_structure_details/__init__.py b/hr/search_criteria/salary_structure_details/__init__.py
similarity index 100%
rename from erpnext/hr/search_criteria/salary_structure_details/__init__.py
rename to hr/search_criteria/salary_structure_details/__init__.py
diff --git a/erpnext/hr/search_criteria/salary_structure_details/salary_structure_details.txt b/hr/search_criteria/salary_structure_details/salary_structure_details.txt
similarity index 100%
rename from erpnext/hr/search_criteria/salary_structure_details/salary_structure_details.txt
rename to hr/search_criteria/salary_structure_details/salary_structure_details.txt
diff --git a/install_erpnext.py b/install_erpnext.py
index 240eca6..0577d6a 100644
--- a/install_erpnext.py
+++ b/install_erpnext.py
@@ -72,11 +72,9 @@
 	# manipulate content
 	import re
 	
-	# set new_dbname, new_dbpassword, modules_path, files_path, backup_path, log_file_name
+	# set new_dbname, new_dbpassword, files_path, backup_path, log_file_name
 	content = re.sub("db_name.*", "db_name = '%s'" % new_dbname, content)
 	content = re.sub("db_password.*", "db_password = '%s'" % new_dbpassword, content)
-	content = re.sub("modules_path.*", "modules_path = '%s'" % \
-		os.path.join(erpnext_path, 'erpnext'), content)
 	content = re.sub("files_path.*", "files_path = '%s'" % \
 		os.path.join(erpnext_path, 'files'), content)
 	content = re.sub("backup_path.*", "backup_path = '%s'" % \
@@ -91,10 +89,9 @@
 
 # install db
 import sys
-sys.path.append(erpnext_path)
-sys.path.append(os.path.join(erpnext_path, 'lib', 'py'))
-import conf
-sys.path.append(conf.modules_path)
+sys.path.append('.')
+sys.path.append('lib')
+sys.path.append('app')
 
 from webnotes.install_lib.install import Installer
 inst = Installer('root', root_pwd)
diff --git a/erpnext/patches/__init__.py b/patches/__init__.py
similarity index 100%
rename from erpnext/patches/__init__.py
rename to patches/__init__.py
diff --git a/erpnext/patches/april_2012/__init__.py b/patches/april_2012/__init__.py
similarity index 100%
rename from erpnext/patches/april_2012/__init__.py
rename to patches/april_2012/__init__.py
diff --git a/erpnext/patches/april_2012/after_sync_cleanup.py b/patches/april_2012/after_sync_cleanup.py
similarity index 100%
rename from erpnext/patches/april_2012/after_sync_cleanup.py
rename to patches/april_2012/after_sync_cleanup.py
diff --git a/erpnext/patches/april_2012/change_cacheitem_schema.py b/patches/april_2012/change_cacheitem_schema.py
similarity index 100%
rename from erpnext/patches/april_2012/change_cacheitem_schema.py
rename to patches/april_2012/change_cacheitem_schema.py
diff --git a/erpnext/patches/april_2012/delete_about_contact.py b/patches/april_2012/delete_about_contact.py
similarity index 100%
rename from erpnext/patches/april_2012/delete_about_contact.py
rename to patches/april_2012/delete_about_contact.py
diff --git a/erpnext/patches/april_2012/naming_series_patch.py b/patches/april_2012/naming_series_patch.py
similarity index 100%
rename from erpnext/patches/april_2012/naming_series_patch.py
rename to patches/april_2012/naming_series_patch.py
diff --git a/erpnext/patches/april_2012/reload_c_form.py b/patches/april_2012/reload_c_form.py
similarity index 100%
rename from erpnext/patches/april_2012/reload_c_form.py
rename to patches/april_2012/reload_c_form.py
diff --git a/erpnext/patches/april_2012/remove_default_from_rv_detail.py b/patches/april_2012/remove_default_from_rv_detail.py
similarity index 100%
rename from erpnext/patches/april_2012/remove_default_from_rv_detail.py
rename to patches/april_2012/remove_default_from_rv_detail.py
diff --git a/erpnext/patches/april_2012/repost_stock_for_posting_time.py b/patches/april_2012/repost_stock_for_posting_time.py
similarity index 100%
rename from erpnext/patches/april_2012/repost_stock_for_posting_time.py
rename to patches/april_2012/repost_stock_for_posting_time.py
diff --git a/erpnext/patches/april_2012/serial_no_fixes.py b/patches/april_2012/serial_no_fixes.py
similarity index 100%
rename from erpnext/patches/april_2012/serial_no_fixes.py
rename to patches/april_2012/serial_no_fixes.py
diff --git a/erpnext/patches/april_2012/update_appraisal_permission.py b/patches/april_2012/update_appraisal_permission.py
similarity index 100%
rename from erpnext/patches/april_2012/update_appraisal_permission.py
rename to patches/april_2012/update_appraisal_permission.py
diff --git a/erpnext/patches/april_2012/update_permlevel_in_address.py b/patches/april_2012/update_permlevel_in_address.py
similarity index 100%
rename from erpnext/patches/april_2012/update_permlevel_in_address.py
rename to patches/april_2012/update_permlevel_in_address.py
diff --git a/erpnext/patches/april_2012/update_role_in_address.py b/patches/april_2012/update_role_in_address.py
similarity index 100%
rename from erpnext/patches/april_2012/update_role_in_address.py
rename to patches/april_2012/update_role_in_address.py
diff --git a/erpnext/patches/august_2012/__init__.py b/patches/august_2012/__init__.py
similarity index 100%
rename from erpnext/patches/august_2012/__init__.py
rename to patches/august_2012/__init__.py
diff --git a/erpnext/patches/august_2012/change_profile_permission.py b/patches/august_2012/change_profile_permission.py
similarity index 100%
rename from erpnext/patches/august_2012/change_profile_permission.py
rename to patches/august_2012/change_profile_permission.py
diff --git a/erpnext/patches/august_2012/changed_blog_date_format.py b/patches/august_2012/changed_blog_date_format.py
similarity index 100%
rename from erpnext/patches/august_2012/changed_blog_date_format.py
rename to patches/august_2012/changed_blog_date_format.py
diff --git a/erpnext/patches/august_2012/remove_cash_flow_statement.py b/patches/august_2012/remove_cash_flow_statement.py
similarity index 100%
rename from erpnext/patches/august_2012/remove_cash_flow_statement.py
rename to patches/august_2012/remove_cash_flow_statement.py
diff --git a/erpnext/patches/august_2012/report_supplier_quotations.py b/patches/august_2012/report_supplier_quotations.py
similarity index 100%
rename from erpnext/patches/august_2012/report_supplier_quotations.py
rename to patches/august_2012/report_supplier_quotations.py
diff --git a/erpnext/patches/august_2012/repost_billed_amt.py b/patches/august_2012/repost_billed_amt.py
similarity index 100%
rename from erpnext/patches/august_2012/repost_billed_amt.py
rename to patches/august_2012/repost_billed_amt.py
diff --git a/erpnext/patches/august_2012/task_allocated_to_assigned.py b/patches/august_2012/task_allocated_to_assigned.py
similarity index 100%
rename from erpnext/patches/august_2012/task_allocated_to_assigned.py
rename to patches/august_2012/task_allocated_to_assigned.py
diff --git a/erpnext/patches/before_jan_2012/Discount_purchase_cycle.py b/patches/before_jan_2012/Discount_purchase_cycle.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/Discount_purchase_cycle.py
rename to patches/before_jan_2012/Discount_purchase_cycle.py
diff --git a/erpnext/patches/before_jan_2012/__init__.py b/patches/before_jan_2012/__init__.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/__init__.py
rename to patches/before_jan_2012/__init__.py
diff --git a/erpnext/patches/before_jan_2012/accounts_default_form.py b/patches/before_jan_2012/accounts_default_form.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/accounts_default_form.py
rename to patches/before_jan_2012/accounts_default_form.py
diff --git a/erpnext/patches/before_jan_2012/auto_indent.py b/patches/before_jan_2012/auto_indent.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/auto_indent.py
rename to patches/before_jan_2012/auto_indent.py
diff --git a/erpnext/patches/before_jan_2012/c_form_patch.py b/patches/before_jan_2012/c_form_patch.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/c_form_patch.py
rename to patches/before_jan_2012/c_form_patch.py
diff --git a/erpnext/patches/before_jan_2012/delivery_billing_status_patch.py b/patches/before_jan_2012/delivery_billing_status_patch.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/delivery_billing_status_patch.py
rename to patches/before_jan_2012/delivery_billing_status_patch.py
diff --git a/erpnext/patches/before_jan_2012/deploy_email_digest.py b/patches/before_jan_2012/deploy_email_digest.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/deploy_email_digest.py
rename to patches/before_jan_2012/deploy_email_digest.py
diff --git a/erpnext/patches/before_jan_2012/edigest_enable_income_year_to_date.py b/patches/before_jan_2012/edigest_enable_income_year_to_date.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/edigest_enable_income_year_to_date.py
rename to patches/before_jan_2012/edigest_enable_income_year_to_date.py
diff --git a/erpnext/patches/before_jan_2012/employeewise_balance_leave_report.py b/patches/before_jan_2012/employeewise_balance_leave_report.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/employeewise_balance_leave_report.py
rename to patches/before_jan_2012/employeewise_balance_leave_report.py
diff --git a/erpnext/patches/before_jan_2012/erpnext_structure_cleanup.py b/patches/before_jan_2012/erpnext_structure_cleanup.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/erpnext_structure_cleanup.py
rename to patches/before_jan_2012/erpnext_structure_cleanup.py
diff --git a/erpnext/patches/before_jan_2012/index_patch.py b/patches/before_jan_2012/index_patch.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/index_patch.py
rename to patches/before_jan_2012/index_patch.py
diff --git a/erpnext/patches/before_jan_2012/install_print_formats.py b/patches/before_jan_2012/install_print_formats.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/install_print_formats.py
rename to patches/before_jan_2012/install_print_formats.py
diff --git a/erpnext/patches/before_jan_2012/lcw_patch.py b/patches/before_jan_2012/lcw_patch.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/lcw_patch.py
rename to patches/before_jan_2012/lcw_patch.py
diff --git a/erpnext/patches/before_jan_2012/p1.py b/patches/before_jan_2012/p1.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/p1.py
rename to patches/before_jan_2012/p1.py
diff --git a/erpnext/patches/before_jan_2012/packing_slip.py b/patches/before_jan_2012/packing_slip.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/packing_slip.py
rename to patches/before_jan_2012/packing_slip.py
diff --git a/erpnext/patches/before_jan_2012/price_list_patch.py b/patches/before_jan_2012/price_list_patch.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/price_list_patch.py
rename to patches/before_jan_2012/price_list_patch.py
diff --git a/erpnext/patches/before_jan_2012/print_hide_price_list.py b/patches/before_jan_2012/print_hide_price_list.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/print_hide_price_list.py
rename to patches/before_jan_2012/print_hide_price_list.py
diff --git a/erpnext/patches/before_jan_2012/profile_mark_not_in_create.py b/patches/before_jan_2012/profile_mark_not_in_create.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/profile_mark_not_in_create.py
rename to patches/before_jan_2012/profile_mark_not_in_create.py
diff --git a/erpnext/patches/before_jan_2012/project_patch.py b/patches/before_jan_2012/project_patch.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/project_patch.py
rename to patches/before_jan_2012/project_patch.py
diff --git a/erpnext/patches/before_jan_2012/reload_address.py b/patches/before_jan_2012/reload_address.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/reload_address.py
rename to patches/before_jan_2012/reload_address.py
diff --git a/erpnext/patches/before_jan_2012/reload_bom.py b/patches/before_jan_2012/reload_bom.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/reload_bom.py
rename to patches/before_jan_2012/reload_bom.py
diff --git a/erpnext/patches/before_jan_2012/reload_doclayer.py b/patches/before_jan_2012/reload_doclayer.py
similarity index 96%
rename from erpnext/patches/before_jan_2012/reload_doclayer.py
rename to patches/before_jan_2012/reload_doclayer.py
index deb6f05..2da9187 100644
--- a/erpnext/patches/before_jan_2012/reload_doclayer.py
+++ b/patches/before_jan_2012/reload_doclayer.py
@@ -29,5 +29,5 @@
 	d.dt = "Customize Form"
 	d.dt_label = "Customize Form View"
 	d.save(1)
-	from webnotes.session_cache import clear
+	from webnotes.sessions import clear
 	clear()
diff --git a/erpnext/patches/before_jan_2012/reload_email_digest.py b/patches/before_jan_2012/reload_email_digest.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/reload_email_digest.py
rename to patches/before_jan_2012/reload_email_digest.py
diff --git a/erpnext/patches/before_jan_2012/reload_employeewise_balance_leave_report.py b/patches/before_jan_2012/reload_employeewise_balance_leave_report.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/reload_employeewise_balance_leave_report.py
rename to patches/before_jan_2012/reload_employeewise_balance_leave_report.py
diff --git a/erpnext/patches/before_jan_2012/reload_flat_bom.py b/patches/before_jan_2012/reload_flat_bom.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/reload_flat_bom.py
rename to patches/before_jan_2012/reload_flat_bom.py
diff --git a/erpnext/patches/before_jan_2012/reload_gl_mapper.py b/patches/before_jan_2012/reload_gl_mapper.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/reload_gl_mapper.py
rename to patches/before_jan_2012/reload_gl_mapper.py
diff --git a/erpnext/patches/before_jan_2012/reload_lc_wizard.py b/patches/before_jan_2012/reload_lc_wizard.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/reload_lc_wizard.py
rename to patches/before_jan_2012/reload_lc_wizard.py
diff --git a/erpnext/patches/before_jan_2012/reload_print_format.py b/patches/before_jan_2012/reload_print_format.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/reload_print_format.py
rename to patches/before_jan_2012/reload_print_format.py
diff --git a/erpnext/patches/before_jan_2012/reload_project_task.py b/patches/before_jan_2012/reload_project_task.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/reload_project_task.py
rename to patches/before_jan_2012/reload_project_task.py
diff --git a/erpnext/patches/before_jan_2012/reload_reco.py b/patches/before_jan_2012/reload_reco.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/reload_reco.py
rename to patches/before_jan_2012/reload_reco.py
diff --git a/erpnext/patches/before_jan_2012/reload_rv.py b/patches/before_jan_2012/reload_rv.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/reload_rv.py
rename to patches/before_jan_2012/reload_rv.py
diff --git a/erpnext/patches/before_jan_2012/reload_support_ticket.py b/patches/before_jan_2012/reload_support_ticket.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/reload_support_ticket.py
rename to patches/before_jan_2012/reload_support_ticket.py
diff --git a/erpnext/patches/before_jan_2012/remove_duplicate_table_mapper_detail.py b/patches/before_jan_2012/remove_duplicate_table_mapper_detail.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/remove_duplicate_table_mapper_detail.py
rename to patches/before_jan_2012/remove_duplicate_table_mapper_detail.py
diff --git a/erpnext/patches/before_jan_2012/remove_extra_button_from_email_digest.py b/patches/before_jan_2012/remove_extra_button_from_email_digest.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/remove_extra_button_from_email_digest.py
rename to patches/before_jan_2012/remove_extra_button_from_email_digest.py
diff --git a/erpnext/patches/before_jan_2012/remove_old_cp_email_settings.py b/patches/before_jan_2012/remove_old_cp_email_settings.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/remove_old_cp_email_settings.py
rename to patches/before_jan_2012/remove_old_cp_email_settings.py
diff --git a/erpnext/patches/before_jan_2012/remove_page_break_from_defaults.py b/patches/before_jan_2012/remove_page_break_from_defaults.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/remove_page_break_from_defaults.py
rename to patches/before_jan_2012/remove_page_break_from_defaults.py
diff --git a/erpnext/patches/before_jan_2012/remove_previous_field_property_setter.py b/patches/before_jan_2012/remove_previous_field_property_setter.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/remove_previous_field_property_setter.py
rename to patches/before_jan_2012/remove_previous_field_property_setter.py
diff --git a/erpnext/patches/before_jan_2012/repost_account_bal.py b/patches/before_jan_2012/repost_account_bal.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/repost_account_bal.py
rename to patches/before_jan_2012/repost_account_bal.py
diff --git a/erpnext/patches/before_jan_2012/repost_stock.py b/patches/before_jan_2012/repost_stock.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/repost_stock.py
rename to patches/before_jan_2012/repost_stock.py
diff --git a/erpnext/patches/before_jan_2012/sal_man_patch.py b/patches/before_jan_2012/sal_man_patch.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/sal_man_patch.py
rename to patches/before_jan_2012/sal_man_patch.py
diff --git a/erpnext/patches/before_jan_2012/task_email_notification.py b/patches/before_jan_2012/task_email_notification.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/task_email_notification.py
rename to patches/before_jan_2012/task_email_notification.py
diff --git a/erpnext/patches/before_jan_2012/update_0_idx.py b/patches/before_jan_2012/update_0_idx.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/update_0_idx.py
rename to patches/before_jan_2012/update_0_idx.py
diff --git a/erpnext/patches/before_jan_2012/update_gle_against_voucher_for_jv.py b/patches/before_jan_2012/update_gle_against_voucher_for_jv.py
similarity index 100%
rename from erpnext/patches/before_jan_2012/update_gle_against_voucher_for_jv.py
rename to patches/before_jan_2012/update_gle_against_voucher_for_jv.py
diff --git a/erpnext/patches/jan_mar_2012/__init__.py b/patches/jan_mar_2012/__init__.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/__init__.py
rename to patches/jan_mar_2012/__init__.py
diff --git a/erpnext/patches/jan_mar_2012/account_type_patch.py b/patches/jan_mar_2012/account_type_patch.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/account_type_patch.py
rename to patches/jan_mar_2012/account_type_patch.py
diff --git a/erpnext/patches/jan_mar_2012/add_roles_to_admin.py b/patches/jan_mar_2012/add_roles_to_admin.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/add_roles_to_admin.py
rename to patches/jan_mar_2012/add_roles_to_admin.py
diff --git a/erpnext/patches/jan_mar_2012/allocated_to_profile.py b/patches/jan_mar_2012/allocated_to_profile.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/allocated_to_profile.py
rename to patches/jan_mar_2012/allocated_to_profile.py
diff --git a/erpnext/patches/jan_mar_2012/apps/__init__.py b/patches/jan_mar_2012/apps/__init__.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/apps/__init__.py
rename to patches/jan_mar_2012/apps/__init__.py
diff --git a/erpnext/patches/jan_mar_2012/apps/todo_item.py b/patches/jan_mar_2012/apps/todo_item.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/apps/todo_item.py
rename to patches/jan_mar_2012/apps/todo_item.py
diff --git a/erpnext/patches/jan_mar_2012/cancel_purchase_returned.py b/patches/jan_mar_2012/cancel_purchase_returned.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/cancel_purchase_returned.py
rename to patches/jan_mar_2012/cancel_purchase_returned.py
diff --git a/erpnext/patches/jan_mar_2012/clear_session_cache.py b/patches/jan_mar_2012/clear_session_cache.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/clear_session_cache.py
rename to patches/jan_mar_2012/clear_session_cache.py
diff --git a/erpnext/patches/jan_mar_2012/convert_tables_to_utf8.py b/patches/jan_mar_2012/convert_tables_to_utf8.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/convert_tables_to_utf8.py
rename to patches/jan_mar_2012/convert_tables_to_utf8.py
diff --git a/erpnext/patches/jan_mar_2012/customer_address_contact_patch.py b/patches/jan_mar_2012/customer_address_contact_patch.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/customer_address_contact_patch.py
rename to patches/jan_mar_2012/customer_address_contact_patch.py
diff --git a/erpnext/patches/jan_mar_2012/delete_pur_of_service.py b/patches/jan_mar_2012/delete_pur_of_service.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/delete_pur_of_service.py
rename to patches/jan_mar_2012/delete_pur_of_service.py
diff --git a/erpnext/patches/jan_mar_2012/deploy_packing_slip.py b/patches/jan_mar_2012/deploy_packing_slip.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/deploy_packing_slip.py
rename to patches/jan_mar_2012/deploy_packing_slip.py
diff --git a/erpnext/patches/jan_mar_2012/doclabel_in_doclayer.py b/patches/jan_mar_2012/doclabel_in_doclayer.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/doclabel_in_doclayer.py
rename to patches/jan_mar_2012/doclabel_in_doclayer.py
diff --git a/erpnext/patches/jan_mar_2012/dt_map_fix.py b/patches/jan_mar_2012/dt_map_fix.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/dt_map_fix.py
rename to patches/jan_mar_2012/dt_map_fix.py
diff --git a/erpnext/patches/jan_mar_2012/email_settings_reload.py b/patches/jan_mar_2012/email_settings_reload.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/email_settings_reload.py
rename to patches/jan_mar_2012/email_settings_reload.py
diff --git a/erpnext/patches/jan_mar_2012/fix_packing_slip.py b/patches/jan_mar_2012/fix_packing_slip.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/fix_packing_slip.py
rename to patches/jan_mar_2012/fix_packing_slip.py
diff --git a/erpnext/patches/jan_mar_2012/jan_production_patches.py b/patches/jan_mar_2012/jan_production_patches.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/jan_production_patches.py
rename to patches/jan_mar_2012/jan_production_patches.py
diff --git a/erpnext/patches/jan_mar_2012/label_cleanup.py b/patches/jan_mar_2012/label_cleanup.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/label_cleanup.py
rename to patches/jan_mar_2012/label_cleanup.py
diff --git a/erpnext/patches/jan_mar_2012/map_conversion_rate.py b/patches/jan_mar_2012/map_conversion_rate.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/map_conversion_rate.py
rename to patches/jan_mar_2012/map_conversion_rate.py
diff --git a/erpnext/patches/jan_mar_2012/mapper_fix.py b/patches/jan_mar_2012/mapper_fix.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/mapper_fix.py
rename to patches/jan_mar_2012/mapper_fix.py
diff --git a/erpnext/patches/jan_mar_2012/navupdate.py b/patches/jan_mar_2012/navupdate.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/navupdate.py
rename to patches/jan_mar_2012/navupdate.py
diff --git a/erpnext/patches/jan_mar_2012/no_copy_patch.py b/patches/jan_mar_2012/no_copy_patch.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/no_copy_patch.py
rename to patches/jan_mar_2012/no_copy_patch.py
diff --git a/erpnext/patches/jan_mar_2012/pending_patches.py b/patches/jan_mar_2012/pending_patches.py
similarity index 98%
rename from erpnext/patches/jan_mar_2012/pending_patches.py
rename to patches/jan_mar_2012/pending_patches.py
index c1d19e7..f98b13f 100644
--- a/erpnext/patches/jan_mar_2012/pending_patches.py
+++ b/patches/jan_mar_2012/pending_patches.py
@@ -46,7 +46,7 @@
 	sql("update `tabDocField` set allow_on_submit = 1 where fieldname = 'page_break'")
 	sql("update `tabDocField` set allow_on_submit = 1 where fieldname in ('indent_details', 'po_details', 'purchase_receipt_details', 'entries', 'sales_order_details', 'delivery_note_details', 'quotation_details') and fieldtype = 'Table'")
 		
-	from webnotes.session_cache import clear_cache
+	from webnotes.sessions import clear_cache
 	clear_cache(webnotes.session['user'])
 
 	# FEATURES SETUP
diff --git a/erpnext/patches/jan_mar_2012/pos_setting_patch.py b/patches/jan_mar_2012/pos_setting_patch.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/pos_setting_patch.py
rename to patches/jan_mar_2012/pos_setting_patch.py
diff --git a/erpnext/patches/jan_mar_2012/print_hide_totals.py b/patches/jan_mar_2012/print_hide_totals.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/print_hide_totals.py
rename to patches/jan_mar_2012/print_hide_totals.py
diff --git a/erpnext/patches/jan_mar_2012/production_cleanup.py b/patches/jan_mar_2012/production_cleanup.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/production_cleanup.py
rename to patches/jan_mar_2012/production_cleanup.py
diff --git a/erpnext/patches/jan_mar_2012/reload_doctype.py b/patches/jan_mar_2012/reload_doctype.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/reload_doctype.py
rename to patches/jan_mar_2012/reload_doctype.py
diff --git a/erpnext/patches/jan_mar_2012/reload_item.py b/patches/jan_mar_2012/reload_item.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/reload_item.py
rename to patches/jan_mar_2012/reload_item.py
diff --git a/erpnext/patches/jan_mar_2012/reload_mapper.py b/patches/jan_mar_2012/reload_mapper.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/reload_mapper.py
rename to patches/jan_mar_2012/reload_mapper.py
diff --git a/erpnext/patches/jan_mar_2012/reload_po_pr_mapper.py b/patches/jan_mar_2012/reload_po_pr_mapper.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/reload_po_pr_mapper.py
rename to patches/jan_mar_2012/reload_po_pr_mapper.py
diff --git a/erpnext/patches/jan_mar_2012/reload_quote.py b/patches/jan_mar_2012/reload_quote.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/reload_quote.py
rename to patches/jan_mar_2012/reload_quote.py
diff --git a/erpnext/patches/jan_mar_2012/reload_table.py b/patches/jan_mar_2012/reload_table.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/reload_table.py
rename to patches/jan_mar_2012/reload_table.py
diff --git a/erpnext/patches/jan_mar_2012/remove_archive.py b/patches/jan_mar_2012/remove_archive.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/remove_archive.py
rename to patches/jan_mar_2012/remove_archive.py
diff --git a/erpnext/patches/jan_mar_2012/remove_get_tds_button.py b/patches/jan_mar_2012/remove_get_tds_button.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/remove_get_tds_button.py
rename to patches/jan_mar_2012/remove_get_tds_button.py
diff --git a/erpnext/patches/jan_mar_2012/remove_series_defval.py b/patches/jan_mar_2012/remove_series_defval.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/remove_series_defval.py
rename to patches/jan_mar_2012/remove_series_defval.py
diff --git a/erpnext/patches/jan_mar_2012/rename_dt.py b/patches/jan_mar_2012/rename_dt.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/rename_dt.py
rename to patches/jan_mar_2012/rename_dt.py
diff --git a/erpnext/patches/jan_mar_2012/serial_no_add_opt.py b/patches/jan_mar_2012/serial_no_add_opt.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/serial_no_add_opt.py
rename to patches/jan_mar_2012/serial_no_add_opt.py
diff --git a/erpnext/patches/jan_mar_2012/stable_branch_shift_09_01_12.py b/patches/jan_mar_2012/stable_branch_shift_09_01_12.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/stable_branch_shift_09_01_12.py
rename to patches/jan_mar_2012/stable_branch_shift_09_01_12.py
diff --git a/erpnext/patches/jan_mar_2012/stock_entry_others_patch.py b/patches/jan_mar_2012/stock_entry_others_patch.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/stock_entry_others_patch.py
rename to patches/jan_mar_2012/stock_entry_others_patch.py
diff --git a/erpnext/patches/jan_mar_2012/subcon_default_val.py b/patches/jan_mar_2012/subcon_default_val.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/subcon_default_val.py
rename to patches/jan_mar_2012/subcon_default_val.py
diff --git a/erpnext/patches/jan_mar_2012/sync_ref_db.py b/patches/jan_mar_2012/sync_ref_db.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/sync_ref_db.py
rename to patches/jan_mar_2012/sync_ref_db.py
diff --git a/erpnext/patches/jan_mar_2012/update_purpose_se.py b/patches/jan_mar_2012/update_purpose_se.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/update_purpose_se.py
rename to patches/jan_mar_2012/update_purpose_se.py
diff --git a/erpnext/patches/jan_mar_2012/update_se_fld_options.py b/patches/jan_mar_2012/update_se_fld_options.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/update_se_fld_options.py
rename to patches/jan_mar_2012/update_se_fld_options.py
diff --git a/erpnext/patches/jan_mar_2012/update_stockreco_perm.py b/patches/jan_mar_2012/update_stockreco_perm.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/update_stockreco_perm.py
rename to patches/jan_mar_2012/update_stockreco_perm.py
diff --git a/erpnext/patches/jan_mar_2012/website/__init__.py b/patches/jan_mar_2012/website/__init__.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/website/__init__.py
rename to patches/jan_mar_2012/website/__init__.py
diff --git a/erpnext/patches/jan_mar_2012/website/all.py b/patches/jan_mar_2012/website/all.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/website/all.py
rename to patches/jan_mar_2012/website/all.py
diff --git a/erpnext/patches/jan_mar_2012/website/allow_product_delete.py b/patches/jan_mar_2012/website/allow_product_delete.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/website/allow_product_delete.py
rename to patches/jan_mar_2012/website/allow_product_delete.py
diff --git a/erpnext/patches/jan_mar_2012/website/analytics.py b/patches/jan_mar_2012/website/analytics.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/website/analytics.py
rename to patches/jan_mar_2012/website/analytics.py
diff --git a/erpnext/patches/jan_mar_2012/website/cleanups.py b/patches/jan_mar_2012/website/cleanups.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/website/cleanups.py
rename to patches/jan_mar_2012/website/cleanups.py
diff --git a/erpnext/patches/jan_mar_2012/website/domain_list.py b/patches/jan_mar_2012/website/domain_list.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/website/domain_list.py
rename to patches/jan_mar_2012/website/domain_list.py
diff --git a/erpnext/patches/jan_mar_2012/website/feed.py b/patches/jan_mar_2012/website/feed.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/website/feed.py
rename to patches/jan_mar_2012/website/feed.py
diff --git a/erpnext/patches/jan_mar_2012/website/file_data_rename.py b/patches/jan_mar_2012/website/file_data_rename.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/website/file_data_rename.py
rename to patches/jan_mar_2012/website/file_data_rename.py
diff --git a/erpnext/patches/jan_mar_2012/website/getfile_rename.py b/patches/jan_mar_2012/website/getfile_rename.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/website/getfile_rename.py
rename to patches/jan_mar_2012/website/getfile_rename.py
diff --git a/erpnext/patches/jan_mar_2012/website/login.py b/patches/jan_mar_2012/website/login.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/website/login.py
rename to patches/jan_mar_2012/website/login.py
diff --git a/erpnext/patches/jan_mar_2012/website/website.py b/patches/jan_mar_2012/website/website.py
similarity index 100%
rename from erpnext/patches/jan_mar_2012/website/website.py
rename to patches/jan_mar_2012/website/website.py
diff --git a/erpnext/patches/july_2012/__init__.py b/patches/july_2012/__init__.py
similarity index 100%
rename from erpnext/patches/july_2012/__init__.py
rename to patches/july_2012/__init__.py
diff --git a/erpnext/patches/july_2012/address_contact_perms.py b/patches/july_2012/address_contact_perms.py
similarity index 100%
rename from erpnext/patches/july_2012/address_contact_perms.py
rename to patches/july_2012/address_contact_perms.py
diff --git a/erpnext/patches/july_2012/auth_table.py b/patches/july_2012/auth_table.py
similarity index 100%
rename from erpnext/patches/july_2012/auth_table.py
rename to patches/july_2012/auth_table.py
diff --git a/erpnext/patches/july_2012/bin_permission.py b/patches/july_2012/bin_permission.py
similarity index 100%
rename from erpnext/patches/july_2012/bin_permission.py
rename to patches/july_2012/bin_permission.py
diff --git a/erpnext/patches/july_2012/blog_guest_permission.py b/patches/july_2012/blog_guest_permission.py
similarity index 100%
rename from erpnext/patches/july_2012/blog_guest_permission.py
rename to patches/july_2012/blog_guest_permission.py
diff --git a/erpnext/patches/july_2012/default_freeze_account.py b/patches/july_2012/default_freeze_account.py
similarity index 100%
rename from erpnext/patches/july_2012/default_freeze_account.py
rename to patches/july_2012/default_freeze_account.py
diff --git a/erpnext/patches/july_2012/deprecate_bulk_rename.py b/patches/july_2012/deprecate_bulk_rename.py
similarity index 100%
rename from erpnext/patches/july_2012/deprecate_bulk_rename.py
rename to patches/july_2012/deprecate_bulk_rename.py
diff --git a/erpnext/patches/july_2012/deprecate_import_data_control.py b/patches/july_2012/deprecate_import_data_control.py
similarity index 100%
rename from erpnext/patches/july_2012/deprecate_import_data_control.py
rename to patches/july_2012/deprecate_import_data_control.py
diff --git a/erpnext/patches/july_2012/packing_list_cleanup_and_serial_no.py b/patches/july_2012/packing_list_cleanup_and_serial_no.py
similarity index 100%
rename from erpnext/patches/july_2012/packing_list_cleanup_and_serial_no.py
rename to patches/july_2012/packing_list_cleanup_and_serial_no.py
diff --git a/erpnext/patches/july_2012/project_patch_repeat.py b/patches/july_2012/project_patch_repeat.py
similarity index 100%
rename from erpnext/patches/july_2012/project_patch_repeat.py
rename to patches/july_2012/project_patch_repeat.py
diff --git a/erpnext/patches/july_2012/reload_pr_po_mapper.py b/patches/july_2012/reload_pr_po_mapper.py
similarity index 100%
rename from erpnext/patches/july_2012/reload_pr_po_mapper.py
rename to patches/july_2012/reload_pr_po_mapper.py
diff --git a/erpnext/patches/july_2012/remove_event_role_owner_match.py b/patches/july_2012/remove_event_role_owner_match.py
similarity index 100%
rename from erpnext/patches/july_2012/remove_event_role_owner_match.py
rename to patches/july_2012/remove_event_role_owner_match.py
diff --git a/erpnext/patches/july_2012/repost_stock_due_to_wrong_packing_list.py b/patches/july_2012/repost_stock_due_to_wrong_packing_list.py
similarity index 100%
rename from erpnext/patches/july_2012/repost_stock_due_to_wrong_packing_list.py
rename to patches/july_2012/repost_stock_due_to_wrong_packing_list.py
diff --git a/erpnext/patches/july_2012/supplier_quotation.py b/patches/july_2012/supplier_quotation.py
similarity index 100%
rename from erpnext/patches/july_2012/supplier_quotation.py
rename to patches/july_2012/supplier_quotation.py
diff --git a/erpnext/patches/july_2012/sync_trial_balance.py b/patches/july_2012/sync_trial_balance.py
similarity index 100%
rename from erpnext/patches/july_2012/sync_trial_balance.py
rename to patches/july_2012/sync_trial_balance.py
diff --git a/erpnext/patches/july_2012/unicode_conf.py b/patches/july_2012/unicode_conf.py
similarity index 100%
rename from erpnext/patches/july_2012/unicode_conf.py
rename to patches/july_2012/unicode_conf.py
diff --git a/erpnext/patches/july_2012/update_purchase_tax.py b/patches/july_2012/update_purchase_tax.py
similarity index 100%
rename from erpnext/patches/july_2012/update_purchase_tax.py
rename to patches/july_2012/update_purchase_tax.py
diff --git a/erpnext/patches/june_2012/__init__.py b/patches/june_2012/__init__.py
similarity index 100%
rename from erpnext/patches/june_2012/__init__.py
rename to patches/june_2012/__init__.py
diff --git a/erpnext/patches/june_2012/alter_tabsessions.py b/patches/june_2012/alter_tabsessions.py
similarity index 100%
rename from erpnext/patches/june_2012/alter_tabsessions.py
rename to patches/june_2012/alter_tabsessions.py
diff --git a/erpnext/patches/june_2012/barcode_in_feature_setup.py b/patches/june_2012/barcode_in_feature_setup.py
similarity index 100%
rename from erpnext/patches/june_2012/barcode_in_feature_setup.py
rename to patches/june_2012/barcode_in_feature_setup.py
diff --git a/erpnext/patches/june_2012/cache_item_table.py b/patches/june_2012/cache_item_table.py
similarity index 100%
rename from erpnext/patches/june_2012/cache_item_table.py
rename to patches/june_2012/cache_item_table.py
diff --git a/erpnext/patches/june_2012/cms2.py b/patches/june_2012/cms2.py
similarity index 100%
rename from erpnext/patches/june_2012/cms2.py
rename to patches/june_2012/cms2.py
diff --git a/erpnext/patches/june_2012/copy_uom_for_pur_inv_item.py b/patches/june_2012/copy_uom_for_pur_inv_item.py
similarity index 100%
rename from erpnext/patches/june_2012/copy_uom_for_pur_inv_item.py
rename to patches/june_2012/copy_uom_for_pur_inv_item.py
diff --git a/erpnext/patches/june_2012/delete_old_parent_entries.py b/patches/june_2012/delete_old_parent_entries.py
similarity index 100%
rename from erpnext/patches/june_2012/delete_old_parent_entries.py
rename to patches/june_2012/delete_old_parent_entries.py
diff --git a/erpnext/patches/june_2012/fetch_organization_from_lead.py b/patches/june_2012/fetch_organization_from_lead.py
similarity index 100%
rename from erpnext/patches/june_2012/fetch_organization_from_lead.py
rename to patches/june_2012/fetch_organization_from_lead.py
diff --git a/erpnext/patches/june_2012/reports_list_permission.py b/patches/june_2012/reports_list_permission.py
similarity index 100%
rename from erpnext/patches/june_2012/reports_list_permission.py
rename to patches/june_2012/reports_list_permission.py
diff --git a/erpnext/patches/june_2012/series_unique_patch.py b/patches/june_2012/series_unique_patch.py
similarity index 100%
rename from erpnext/patches/june_2012/series_unique_patch.py
rename to patches/june_2012/series_unique_patch.py
diff --git a/erpnext/patches/june_2012/set_recurring_type.py b/patches/june_2012/set_recurring_type.py
similarity index 100%
rename from erpnext/patches/june_2012/set_recurring_type.py
rename to patches/june_2012/set_recurring_type.py
diff --git a/erpnext/patches/june_2012/support_ticket_autoreply.py b/patches/june_2012/support_ticket_autoreply.py
similarity index 100%
rename from erpnext/patches/june_2012/support_ticket_autoreply.py
rename to patches/june_2012/support_ticket_autoreply.py
diff --git a/erpnext/patches/mar_2012/__init__.py b/patches/mar_2012/__init__.py
similarity index 100%
rename from erpnext/patches/mar_2012/__init__.py
rename to patches/mar_2012/__init__.py
diff --git a/erpnext/patches/mar_2012/add_fieldnames.py b/patches/mar_2012/add_fieldnames.py
similarity index 100%
rename from erpnext/patches/mar_2012/add_fieldnames.py
rename to patches/mar_2012/add_fieldnames.py
diff --git a/erpnext/patches/mar_2012/clean_property_setter.py b/patches/mar_2012/clean_property_setter.py
similarity index 100%
rename from erpnext/patches/mar_2012/clean_property_setter.py
rename to patches/mar_2012/clean_property_setter.py
diff --git a/erpnext/patches/mar_2012/cleanup_control_panel.py b/patches/mar_2012/cleanup_control_panel.py
similarity index 100%
rename from erpnext/patches/mar_2012/cleanup_control_panel.py
rename to patches/mar_2012/cleanup_control_panel.py
diff --git a/erpnext/patches/mar_2012/create_custom_fields.py b/patches/mar_2012/create_custom_fields.py
similarity index 100%
rename from erpnext/patches/mar_2012/create_custom_fields.py
rename to patches/mar_2012/create_custom_fields.py
diff --git a/erpnext/patches/mar_2012/delete_docformat.py b/patches/mar_2012/delete_docformat.py
similarity index 100%
rename from erpnext/patches/mar_2012/delete_docformat.py
rename to patches/mar_2012/delete_docformat.py
diff --git a/erpnext/patches/mar_2012/doctype_get_refactor.py b/patches/mar_2012/doctype_get_refactor.py
similarity index 100%
rename from erpnext/patches/mar_2012/doctype_get_refactor.py
rename to patches/mar_2012/doctype_get_refactor.py
diff --git a/erpnext/patches/mar_2012/earning_deduction_type_patch.py b/patches/mar_2012/earning_deduction_type_patch.py
similarity index 100%
rename from erpnext/patches/mar_2012/earning_deduction_type_patch.py
rename to patches/mar_2012/earning_deduction_type_patch.py
diff --git a/erpnext/patches/mar_2012/is_submittable_patch.py b/patches/mar_2012/is_submittable_patch.py
similarity index 100%
rename from erpnext/patches/mar_2012/is_submittable_patch.py
rename to patches/mar_2012/is_submittable_patch.py
diff --git a/erpnext/patches/mar_2012/pos_invoice_fix.py b/patches/mar_2012/pos_invoice_fix.py
similarity index 100%
rename from erpnext/patches/mar_2012/pos_invoice_fix.py
rename to patches/mar_2012/pos_invoice_fix.py
diff --git a/erpnext/patches/mar_2012/so_rv_mapper_fix.py b/patches/mar_2012/so_rv_mapper_fix.py
similarity index 100%
rename from erpnext/patches/mar_2012/so_rv_mapper_fix.py
rename to patches/mar_2012/so_rv_mapper_fix.py
diff --git a/erpnext/patches/mar_2012/usertags.py b/patches/mar_2012/usertags.py
similarity index 100%
rename from erpnext/patches/mar_2012/usertags.py
rename to patches/mar_2012/usertags.py
diff --git a/erpnext/patches/may_2012/__init__.py b/patches/may_2012/__init__.py
similarity index 100%
rename from erpnext/patches/may_2012/__init__.py
rename to patches/may_2012/__init__.py
diff --git a/erpnext/patches/may_2012/cleanup_notification_control.py b/patches/may_2012/cleanup_notification_control.py
similarity index 100%
rename from erpnext/patches/may_2012/cleanup_notification_control.py
rename to patches/may_2012/cleanup_notification_control.py
diff --git a/erpnext/patches/may_2012/cleanup_property_setter.py b/patches/may_2012/cleanup_property_setter.py
similarity index 100%
rename from erpnext/patches/may_2012/cleanup_property_setter.py
rename to patches/may_2012/cleanup_property_setter.py
diff --git a/erpnext/patches/may_2012/clear_session_cache.py b/patches/may_2012/clear_session_cache.py
similarity index 100%
rename from erpnext/patches/may_2012/clear_session_cache.py
rename to patches/may_2012/clear_session_cache.py
diff --git a/erpnext/patches/may_2012/create_report_manager_role.py b/patches/may_2012/create_report_manager_role.py
similarity index 100%
rename from erpnext/patches/may_2012/create_report_manager_role.py
rename to patches/may_2012/create_report_manager_role.py
diff --git a/erpnext/patches/may_2012/cs_server_readonly.py b/patches/may_2012/cs_server_readonly.py
similarity index 100%
rename from erpnext/patches/may_2012/cs_server_readonly.py
rename to patches/may_2012/cs_server_readonly.py
diff --git a/erpnext/patches/may_2012/customize_form_cleanup.py b/patches/may_2012/customize_form_cleanup.py
similarity index 100%
rename from erpnext/patches/may_2012/customize_form_cleanup.py
rename to patches/may_2012/customize_form_cleanup.py
diff --git a/erpnext/patches/may_2012/page_role_series_fix.py b/patches/may_2012/page_role_series_fix.py
similarity index 100%
rename from erpnext/patches/may_2012/page_role_series_fix.py
rename to patches/may_2012/page_role_series_fix.py
diff --git a/erpnext/patches/may_2012/profile_perm_patch.py b/patches/may_2012/profile_perm_patch.py
similarity index 100%
rename from erpnext/patches/may_2012/profile_perm_patch.py
rename to patches/may_2012/profile_perm_patch.py
diff --git a/erpnext/patches/may_2012/reload_customer_address_contact.py b/patches/may_2012/reload_customer_address_contact.py
similarity index 100%
rename from erpnext/patches/may_2012/reload_customer_address_contact.py
rename to patches/may_2012/reload_customer_address_contact.py
diff --git a/erpnext/patches/may_2012/reload_reports.py b/patches/may_2012/reload_reports.py
similarity index 100%
rename from erpnext/patches/may_2012/reload_reports.py
rename to patches/may_2012/reload_reports.py
diff --git a/erpnext/patches/may_2012/reload_sales_invoice_pf.py b/patches/may_2012/reload_sales_invoice_pf.py
similarity index 100%
rename from erpnext/patches/may_2012/reload_sales_invoice_pf.py
rename to patches/may_2012/reload_sales_invoice_pf.py
diff --git a/erpnext/patches/may_2012/reload_so_pending_items.py b/patches/may_2012/reload_so_pending_items.py
similarity index 100%
rename from erpnext/patches/may_2012/reload_so_pending_items.py
rename to patches/may_2012/reload_so_pending_items.py
diff --git a/erpnext/patches/may_2012/remove_communication_log.py b/patches/may_2012/remove_communication_log.py
similarity index 100%
rename from erpnext/patches/may_2012/remove_communication_log.py
rename to patches/may_2012/remove_communication_log.py
diff --git a/erpnext/patches/may_2012/remove_euro_currency.py b/patches/may_2012/remove_euro_currency.py
similarity index 100%
rename from erpnext/patches/may_2012/remove_euro_currency.py
rename to patches/may_2012/remove_euro_currency.py
diff --git a/erpnext/patches/may_2012/rename_prev_doctype.py b/patches/may_2012/rename_prev_doctype.py
similarity index 100%
rename from erpnext/patches/may_2012/rename_prev_doctype.py
rename to patches/may_2012/rename_prev_doctype.py
diff --git a/erpnext/patches/may_2012/renamedt_in_custom_search_criteria.py b/patches/may_2012/renamedt_in_custom_search_criteria.py
similarity index 100%
rename from erpnext/patches/may_2012/renamedt_in_custom_search_criteria.py
rename to patches/may_2012/renamedt_in_custom_search_criteria.py
diff --git a/erpnext/patches/may_2012/same_purchase_rate_patch.py b/patches/may_2012/same_purchase_rate_patch.py
similarity index 100%
rename from erpnext/patches/may_2012/same_purchase_rate_patch.py
rename to patches/may_2012/same_purchase_rate_patch.py
diff --git a/erpnext/patches/may_2012/std_pf_readonly.py b/patches/may_2012/std_pf_readonly.py
similarity index 100%
rename from erpnext/patches/may_2012/std_pf_readonly.py
rename to patches/may_2012/std_pf_readonly.py
diff --git a/erpnext/patches/may_2012/stock_reco_patch.py b/patches/may_2012/stock_reco_patch.py
similarity index 100%
rename from erpnext/patches/may_2012/stock_reco_patch.py
rename to patches/may_2012/stock_reco_patch.py
diff --git a/erpnext/patches/patch_list.py b/patches/patch_list.py
similarity index 100%
rename from erpnext/patches/patch_list.py
rename to patches/patch_list.py
diff --git a/erpnext/patches/september_2012/__init__.py b/patches/september_2012/__init__.py
similarity index 100%
rename from erpnext/patches/september_2012/__init__.py
rename to patches/september_2012/__init__.py
diff --git a/erpnext/patches/september_2012/add_stock_ledger_entry_index.py b/patches/september_2012/add_stock_ledger_entry_index.py
similarity index 100%
rename from erpnext/patches/september_2012/add_stock_ledger_entry_index.py
rename to patches/september_2012/add_stock_ledger_entry_index.py
diff --git a/erpnext/patches/september_2012/all_permissions_patch.py b/patches/september_2012/all_permissions_patch.py
similarity index 100%
rename from erpnext/patches/september_2012/all_permissions_patch.py
rename to patches/september_2012/all_permissions_patch.py
diff --git a/erpnext/patches/september_2012/communication_delete_permission.py b/patches/september_2012/communication_delete_permission.py
similarity index 100%
rename from erpnext/patches/september_2012/communication_delete_permission.py
rename to patches/september_2012/communication_delete_permission.py
diff --git a/erpnext/patches/september_2012/customer_permission_patch.py b/patches/september_2012/customer_permission_patch.py
similarity index 100%
rename from erpnext/patches/september_2012/customer_permission_patch.py
rename to patches/september_2012/customer_permission_patch.py
diff --git a/erpnext/patches/september_2012/plot_patch.py b/patches/september_2012/plot_patch.py
similarity index 100%
rename from erpnext/patches/september_2012/plot_patch.py
rename to patches/september_2012/plot_patch.py
diff --git a/erpnext/patches/september_2012/reload_criteria_stock_ledger.py b/patches/september_2012/reload_criteria_stock_ledger.py
similarity index 100%
rename from erpnext/patches/september_2012/reload_criteria_stock_ledger.py
rename to patches/september_2012/reload_criteria_stock_ledger.py
diff --git a/erpnext/patches/september_2012/stock_report_permissions_for_accounts.py b/patches/september_2012/stock_report_permissions_for_accounts.py
similarity index 100%
rename from erpnext/patches/september_2012/stock_report_permissions_for_accounts.py
rename to patches/september_2012/stock_report_permissions_for_accounts.py
diff --git a/erpnext/production/__init__.py b/production/__init__.py
similarity index 100%
rename from erpnext/production/__init__.py
rename to production/__init__.py
diff --git a/erpnext/production/doctype/__init__.py b/production/doctype/__init__.py
similarity index 100%
rename from erpnext/production/doctype/__init__.py
rename to production/doctype/__init__.py
diff --git a/erpnext/production/doctype/bom/__init__.py b/production/doctype/bom/__init__.py
similarity index 100%
rename from erpnext/production/doctype/bom/__init__.py
rename to production/doctype/bom/__init__.py
diff --git a/erpnext/production/doctype/bom/bom.js b/production/doctype/bom/bom.js
similarity index 100%
rename from erpnext/production/doctype/bom/bom.js
rename to production/doctype/bom/bom.js
diff --git a/erpnext/production/doctype/bom/bom.py b/production/doctype/bom/bom.py
similarity index 100%
rename from erpnext/production/doctype/bom/bom.py
rename to production/doctype/bom/bom.py
diff --git a/erpnext/production/doctype/bom/bom.txt b/production/doctype/bom/bom.txt
similarity index 100%
rename from erpnext/production/doctype/bom/bom.txt
rename to production/doctype/bom/bom.txt
diff --git a/erpnext/production/doctype/bom/bom_list.js b/production/doctype/bom/bom_list.js
similarity index 100%
rename from erpnext/production/doctype/bom/bom_list.js
rename to production/doctype/bom/bom_list.js
diff --git a/erpnext/production/doctype/bom_control/__init__.py b/production/doctype/bom_control/__init__.py
similarity index 100%
rename from erpnext/production/doctype/bom_control/__init__.py
rename to production/doctype/bom_control/__init__.py
diff --git a/erpnext/production/doctype/bom_control/bom_control.py b/production/doctype/bom_control/bom_control.py
similarity index 98%
rename from erpnext/production/doctype/bom_control/bom_control.py
rename to production/doctype/bom_control/bom_control.py
index cc32533..f93cca2 100644
--- a/erpnext/production/doctype/bom_control/bom_control.py
+++ b/production/doctype/bom_control/bom_control.py
@@ -23,7 +23,7 @@
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/production/doctype/bom_control/bom_control.txt b/production/doctype/bom_control/bom_control.txt
similarity index 100%
rename from erpnext/production/doctype/bom_control/bom_control.txt
rename to production/doctype/bom_control/bom_control.txt
diff --git a/erpnext/production/doctype/bom_explosion_item/__init__.py b/production/doctype/bom_explosion_item/__init__.py
similarity index 100%
rename from erpnext/production/doctype/bom_explosion_item/__init__.py
rename to production/doctype/bom_explosion_item/__init__.py
diff --git a/erpnext/production/doctype/bom_explosion_item/bom_explosion_item.txt b/production/doctype/bom_explosion_item/bom_explosion_item.txt
similarity index 100%
rename from erpnext/production/doctype/bom_explosion_item/bom_explosion_item.txt
rename to production/doctype/bom_explosion_item/bom_explosion_item.txt
diff --git a/erpnext/production/doctype/bom_item/__init__.py b/production/doctype/bom_item/__init__.py
similarity index 100%
rename from erpnext/production/doctype/bom_item/__init__.py
rename to production/doctype/bom_item/__init__.py
diff --git a/erpnext/production/doctype/bom_item/bom_item.txt b/production/doctype/bom_item/bom_item.txt
similarity index 100%
rename from erpnext/production/doctype/bom_item/bom_item.txt
rename to production/doctype/bom_item/bom_item.txt
diff --git a/erpnext/production/doctype/bom_operation/__init__.py b/production/doctype/bom_operation/__init__.py
similarity index 100%
rename from erpnext/production/doctype/bom_operation/__init__.py
rename to production/doctype/bom_operation/__init__.py
diff --git a/erpnext/production/doctype/bom_operation/bom_operation.txt b/production/doctype/bom_operation/bom_operation.txt
similarity index 100%
rename from erpnext/production/doctype/bom_operation/bom_operation.txt
rename to production/doctype/bom_operation/bom_operation.txt
diff --git a/erpnext/production/doctype/production_control/__init__.py b/production/doctype/production_control/__init__.py
similarity index 100%
rename from erpnext/production/doctype/production_control/__init__.py
rename to production/doctype/production_control/__init__.py
diff --git a/erpnext/production/doctype/production_control/production_control.py b/production/doctype/production_control/production_control.py
similarity index 93%
rename from erpnext/production/doctype/production_control/production_control.py
rename to production/doctype/production_control/production_control.py
index b7ce73c..8c120ad 100644
--- a/erpnext/production/doctype/production_control/production_control.py
+++ b/production/doctype/production_control/production_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/production/doctype/production_control/production_control.txt b/production/doctype/production_control/production_control.txt
similarity index 100%
rename from erpnext/production/doctype/production_control/production_control.txt
rename to production/doctype/production_control/production_control.txt
diff --git a/erpnext/production/doctype/production_order/__init__.py b/production/doctype/production_order/__init__.py
similarity index 100%
rename from erpnext/production/doctype/production_order/__init__.py
rename to production/doctype/production_order/__init__.py
diff --git a/erpnext/production/doctype/production_order/production_order.js b/production/doctype/production_order/production_order.js
similarity index 100%
rename from erpnext/production/doctype/production_order/production_order.js
rename to production/doctype/production_order/production_order.js
diff --git a/erpnext/production/doctype/production_order/production_order.py b/production/doctype/production_order/production_order.py
similarity index 94%
rename from erpnext/production/doctype/production_order/production_order.py
rename to production/doctype/production_order/production_order.py
index 19b3f33..915c80d 100644
--- a/erpnext/production/doctype/production_order/production_order.py
+++ b/production/doctype/production_order/production_order.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/production/doctype/production_order/production_order.txt b/production/doctype/production_order/production_order.txt
similarity index 100%
rename from erpnext/production/doctype/production_order/production_order.txt
rename to production/doctype/production_order/production_order.txt
diff --git a/erpnext/production/doctype/production_order/production_order_list.js b/production/doctype/production_order/production_order_list.js
similarity index 100%
rename from erpnext/production/doctype/production_order/production_order_list.js
rename to production/doctype/production_order/production_order_list.js
diff --git a/erpnext/production/doctype/production_plan_item/__init__.py b/production/doctype/production_plan_item/__init__.py
similarity index 100%
rename from erpnext/production/doctype/production_plan_item/__init__.py
rename to production/doctype/production_plan_item/__init__.py
diff --git a/erpnext/production/doctype/production_plan_item/production_plan_item.txt b/production/doctype/production_plan_item/production_plan_item.txt
similarity index 100%
rename from erpnext/production/doctype/production_plan_item/production_plan_item.txt
rename to production/doctype/production_plan_item/production_plan_item.txt
diff --git a/erpnext/production/doctype/production_plan_sales_order/__init__.py b/production/doctype/production_plan_sales_order/__init__.py
similarity index 100%
rename from erpnext/production/doctype/production_plan_sales_order/__init__.py
rename to production/doctype/production_plan_sales_order/__init__.py
diff --git a/erpnext/production/doctype/production_plan_sales_order/production_plan_sales_order.txt b/production/doctype/production_plan_sales_order/production_plan_sales_order.txt
similarity index 100%
rename from erpnext/production/doctype/production_plan_sales_order/production_plan_sales_order.txt
rename to production/doctype/production_plan_sales_order/production_plan_sales_order.txt
diff --git a/erpnext/production/doctype/production_planning_tool/__init__.py b/production/doctype/production_planning_tool/__init__.py
similarity index 100%
rename from erpnext/production/doctype/production_planning_tool/__init__.py
rename to production/doctype/production_planning_tool/__init__.py
diff --git a/erpnext/production/doctype/production_planning_tool/production_planning_tool.js b/production/doctype/production_planning_tool/production_planning_tool.js
similarity index 100%
rename from erpnext/production/doctype/production_planning_tool/production_planning_tool.js
rename to production/doctype/production_planning_tool/production_planning_tool.js
diff --git a/erpnext/production/doctype/production_planning_tool/production_planning_tool.py b/production/doctype/production_planning_tool/production_planning_tool.py
similarity index 100%
rename from erpnext/production/doctype/production_planning_tool/production_planning_tool.py
rename to production/doctype/production_planning_tool/production_planning_tool.py
diff --git a/erpnext/production/doctype/production_planning_tool/production_planning_tool.txt b/production/doctype/production_planning_tool/production_planning_tool.txt
similarity index 100%
rename from erpnext/production/doctype/production_planning_tool/production_planning_tool.txt
rename to production/doctype/production_planning_tool/production_planning_tool.txt
diff --git a/erpnext/production/doctype/workstation/__init__.py b/production/doctype/workstation/__init__.py
similarity index 100%
rename from erpnext/production/doctype/workstation/__init__.py
rename to production/doctype/workstation/__init__.py
diff --git a/erpnext/production/doctype/workstation/workstation.js b/production/doctype/workstation/workstation.js
similarity index 100%
rename from erpnext/production/doctype/workstation/workstation.js
rename to production/doctype/workstation/workstation.js
diff --git a/erpnext/production/doctype/workstation/workstation.py b/production/doctype/workstation/workstation.py
similarity index 88%
rename from erpnext/production/doctype/workstation/workstation.py
rename to production/doctype/workstation/workstation.py
index 6d9f3ae..3d0cfda 100644
--- a/erpnext/production/doctype/workstation/workstation.py
+++ b/production/doctype/workstation/workstation.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/production/doctype/workstation/workstation.txt b/production/doctype/workstation/workstation.txt
similarity index 100%
rename from erpnext/production/doctype/workstation/workstation.txt
rename to production/doctype/workstation/workstation.txt
diff --git a/erpnext/production/page/__init__.py b/production/page/__init__.py
similarity index 100%
rename from erpnext/production/page/__init__.py
rename to production/page/__init__.py
diff --git a/erpnext/production/page/production_home/__init__.py b/production/page/production_home/__init__.py
similarity index 100%
rename from erpnext/production/page/production_home/__init__.py
rename to production/page/production_home/__init__.py
diff --git a/erpnext/production/page/production_home/production_home.html b/production/page/production_home/production_home.html
similarity index 100%
rename from erpnext/production/page/production_home/production_home.html
rename to production/page/production_home/production_home.html
diff --git a/erpnext/production/page/production_home/production_home.js b/production/page/production_home/production_home.js
similarity index 100%
rename from erpnext/production/page/production_home/production_home.js
rename to production/page/production_home/production_home.js
diff --git a/erpnext/production/page/production_home/production_home.txt b/production/page/production_home/production_home.txt
similarity index 100%
rename from erpnext/production/page/production_home/production_home.txt
rename to production/page/production_home/production_home.txt
diff --git a/erpnext/production/search_criteria/__init__.py b/production/search_criteria/__init__.py
similarity index 100%
rename from erpnext/production/search_criteria/__init__.py
rename to production/search_criteria/__init__.py
diff --git a/erpnext/production/search_criteria/consumption_against_production/__init__.py b/production/search_criteria/consumption_against_production/__init__.py
similarity index 100%
rename from erpnext/production/search_criteria/consumption_against_production/__init__.py
rename to production/search_criteria/consumption_against_production/__init__.py
diff --git a/erpnext/production/search_criteria/consumption_against_production/consumption_against_production.txt b/production/search_criteria/consumption_against_production/consumption_against_production.txt
similarity index 100%
rename from erpnext/production/search_criteria/consumption_against_production/consumption_against_production.txt
rename to production/search_criteria/consumption_against_production/consumption_against_production.txt
diff --git a/erpnext/production/search_criteria/itemwise_production_report/__init__.py b/production/search_criteria/itemwise_production_report/__init__.py
similarity index 100%
rename from erpnext/production/search_criteria/itemwise_production_report/__init__.py
rename to production/search_criteria/itemwise_production_report/__init__.py
diff --git a/erpnext/production/search_criteria/itemwise_production_report/itemwise_production_report.js b/production/search_criteria/itemwise_production_report/itemwise_production_report.js
similarity index 100%
rename from erpnext/production/search_criteria/itemwise_production_report/itemwise_production_report.js
rename to production/search_criteria/itemwise_production_report/itemwise_production_report.js
diff --git a/erpnext/production/search_criteria/itemwise_production_report/itemwise_production_report.txt b/production/search_criteria/itemwise_production_report/itemwise_production_report.txt
similarity index 100%
rename from erpnext/production/search_criteria/itemwise_production_report/itemwise_production_report.txt
rename to production/search_criteria/itemwise_production_report/itemwise_production_report.txt
diff --git a/erpnext/production/search_criteria/production_orders_in_process/__init__.py b/production/search_criteria/production_orders_in_process/__init__.py
similarity index 100%
rename from erpnext/production/search_criteria/production_orders_in_process/__init__.py
rename to production/search_criteria/production_orders_in_process/__init__.py
diff --git a/erpnext/production/search_criteria/production_orders_in_process/production_orders_in_process.txt b/production/search_criteria/production_orders_in_process/production_orders_in_process.txt
similarity index 100%
rename from erpnext/production/search_criteria/production_orders_in_process/production_orders_in_process.txt
rename to production/search_criteria/production_orders_in_process/production_orders_in_process.txt
diff --git a/erpnext/projects/__init__.py b/projects/__init__.py
similarity index 100%
rename from erpnext/projects/__init__.py
rename to projects/__init__.py
diff --git a/erpnext/projects/doctype/__init__.py b/projects/doctype/__init__.py
similarity index 100%
rename from erpnext/projects/doctype/__init__.py
rename to projects/doctype/__init__.py
diff --git a/erpnext/projects/doctype/project/__init__.py b/projects/doctype/project/__init__.py
similarity index 100%
rename from erpnext/projects/doctype/project/__init__.py
rename to projects/doctype/project/__init__.py
diff --git a/erpnext/projects/doctype/project/help.md b/projects/doctype/project/help.md
similarity index 100%
rename from erpnext/projects/doctype/project/help.md
rename to projects/doctype/project/help.md
diff --git a/erpnext/projects/doctype/project/project.js b/projects/doctype/project/project.js
similarity index 95%
rename from erpnext/projects/doctype/project/project.js
rename to projects/doctype/project/project.js
index eca9261..eb3edbd 100644
--- a/erpnext/projects/doctype/project/project.js
+++ b/projects/doctype/project/project.js
@@ -19,7 +19,7 @@
 cur_frm.cscript.refresh = function(doc) {
 	if(!doc.__islocal) {
 		// refresh gantt chart
-		wn.require('erpnext/projects/gantt_task.js');
+		wn.require('app/projects/gantt_task.js');
 		if(!cur_frm.gantt_area)
 			cur_frm.gantt_area = $('<div>')
 				.appendTo(cur_frm.fields_dict.project_tasks.wrapper);
diff --git a/erpnext/projects/doctype/project/project.py b/projects/doctype/project/project.py
similarity index 94%
rename from erpnext/projects/doctype/project/project.py
rename to projects/doctype/project/project.py
index 659e757..50d3d60 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/projects/doctype/project/project.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/projects/doctype/project/project.txt b/projects/doctype/project/project.txt
similarity index 100%
rename from erpnext/projects/doctype/project/project.txt
rename to projects/doctype/project/project.txt
diff --git a/erpnext/projects/doctype/project/project_list.js b/projects/doctype/project/project_list.js
similarity index 100%
rename from erpnext/projects/doctype/project/project_list.js
rename to projects/doctype/project/project_list.js
diff --git a/erpnext/projects/doctype/project_control/__init__.py b/projects/doctype/project_control/__init__.py
similarity index 100%
rename from erpnext/projects/doctype/project_control/__init__.py
rename to projects/doctype/project_control/__init__.py
diff --git a/erpnext/projects/doctype/project_control/project_control.py b/projects/doctype/project_control/project_control.py
similarity index 95%
rename from erpnext/projects/doctype/project_control/project_control.py
rename to projects/doctype/project_control/project_control.py
index 8369aab..ab48341 100644
--- a/erpnext/projects/doctype/project_control/project_control.py
+++ b/projects/doctype/project_control/project_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, set_default, str_esc_quote, user_format, validate_email_add, add_days
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, set_default, str_esc_quote, user_format, validate_email_add, add_days
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 from webnotes.utils.email_lib import sendmail
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/projects/doctype/project_milestone/__init__.py b/projects/doctype/project_milestone/__init__.py
similarity index 100%
rename from erpnext/projects/doctype/project_milestone/__init__.py
rename to projects/doctype/project_milestone/__init__.py
diff --git a/erpnext/projects/doctype/project_milestone/project_milestone.txt b/projects/doctype/project_milestone/project_milestone.txt
similarity index 100%
rename from erpnext/projects/doctype/project_milestone/project_milestone.txt
rename to projects/doctype/project_milestone/project_milestone.txt
diff --git a/erpnext/projects/doctype/task/__init__.py b/projects/doctype/task/__init__.py
similarity index 100%
rename from erpnext/projects/doctype/task/__init__.py
rename to projects/doctype/task/__init__.py
diff --git a/erpnext/projects/doctype/task/task.js b/projects/doctype/task/task.js
similarity index 100%
rename from erpnext/projects/doctype/task/task.js
rename to projects/doctype/task/task.js
diff --git a/erpnext/projects/doctype/task/task.py b/projects/doctype/task/task.py
similarity index 90%
rename from erpnext/projects/doctype/task/task.py
rename to projects/doctype/task/task.py
index c9b106f..423d343 100644
--- a/erpnext/projects/doctype/task/task.py
+++ b/projects/doctype/task/task.py
@@ -18,13 +18,13 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.utils.email_lib import sendmail
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 sql = webnotes.conn.sql
 
diff --git a/erpnext/projects/doctype/task/task.txt b/projects/doctype/task/task.txt
similarity index 100%
rename from erpnext/projects/doctype/task/task.txt
rename to projects/doctype/task/task.txt
diff --git a/erpnext/projects/doctype/task/task_list.js b/projects/doctype/task/task_list.js
similarity index 100%
rename from erpnext/projects/doctype/task/task_list.js
rename to projects/doctype/task/task_list.js
diff --git a/erpnext/projects/doctype/timesheet/__init__.py b/projects/doctype/timesheet/__init__.py
similarity index 100%
rename from erpnext/projects/doctype/timesheet/__init__.py
rename to projects/doctype/timesheet/__init__.py
diff --git a/erpnext/projects/doctype/timesheet/timesheet.js b/projects/doctype/timesheet/timesheet.js
similarity index 100%
rename from erpnext/projects/doctype/timesheet/timesheet.js
rename to projects/doctype/timesheet/timesheet.js
diff --git a/erpnext/projects/doctype/timesheet/timesheet.py b/projects/doctype/timesheet/timesheet.py
similarity index 93%
rename from erpnext/projects/doctype/timesheet/timesheet.py
rename to projects/doctype/timesheet/timesheet.py
index 4dbbc91..492d225 100644
--- a/erpnext/projects/doctype/timesheet/timesheet.py
+++ b/projects/doctype/timesheet/timesheet.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/projects/doctype/timesheet/timesheet.txt b/projects/doctype/timesheet/timesheet.txt
similarity index 100%
rename from erpnext/projects/doctype/timesheet/timesheet.txt
rename to projects/doctype/timesheet/timesheet.txt
diff --git a/erpnext/projects/doctype/timesheet/timesheet_list.js b/projects/doctype/timesheet/timesheet_list.js
similarity index 100%
rename from erpnext/projects/doctype/timesheet/timesheet_list.js
rename to projects/doctype/timesheet/timesheet_list.js
diff --git a/erpnext/projects/doctype/timesheet_detail/__init__.py b/projects/doctype/timesheet_detail/__init__.py
similarity index 100%
rename from erpnext/projects/doctype/timesheet_detail/__init__.py
rename to projects/doctype/timesheet_detail/__init__.py
diff --git a/erpnext/projects/doctype/timesheet_detail/timesheet_detail.txt b/projects/doctype/timesheet_detail/timesheet_detail.txt
similarity index 100%
rename from erpnext/projects/doctype/timesheet_detail/timesheet_detail.txt
rename to projects/doctype/timesheet_detail/timesheet_detail.txt
diff --git a/erpnext/projects/page/__init__.py b/projects/page/__init__.py
similarity index 100%
rename from erpnext/projects/page/__init__.py
rename to projects/page/__init__.py
diff --git a/erpnext/projects/page/projects/__init__.py b/projects/page/projects/__init__.py
similarity index 100%
rename from erpnext/projects/page/projects/__init__.py
rename to projects/page/projects/__init__.py
diff --git a/erpnext/projects/page/projects/projects.css b/projects/page/projects/projects.css
similarity index 100%
rename from erpnext/projects/page/projects/projects.css
rename to projects/page/projects/projects.css
diff --git a/erpnext/projects/page/projects/projects.html b/projects/page/projects/projects.html
similarity index 100%
rename from erpnext/projects/page/projects/projects.html
rename to projects/page/projects/projects.html
diff --git a/erpnext/projects/page/projects/projects.js b/projects/page/projects/projects.js
similarity index 96%
rename from erpnext/projects/page/projects/projects.js
rename to projects/page/projects/projects.js
index 8f91f12..ef81718 100644
--- a/erpnext/projects/page/projects/projects.js
+++ b/projects/page/projects/projects.js
@@ -17,7 +17,7 @@
 pscript.onload_Projects = function(wrapper) {
 	wn.ui.make_app_page({parent:wrapper, title:'Gantt Chart: All Tasks', single_column:true});
 	if(!erpnext.show_task_gantt)
-		wn.require('js/app/gantt_task.js');
+		wn.require('app/js/gantt_task.js');
 
 	var gantt_area = $('<div>').appendTo($(wrapper).find('.layout-main'));
 	erpnext.show_task_gantt(gantt_area);
diff --git a/erpnext/projects/page/projects/projects.py b/projects/page/projects/projects.py
similarity index 100%
rename from erpnext/projects/page/projects/projects.py
rename to projects/page/projects/projects.py
diff --git a/erpnext/projects/page/projects/projects.txt b/projects/page/projects/projects.txt
similarity index 100%
rename from erpnext/projects/page/projects/projects.txt
rename to projects/page/projects/projects.txt
diff --git a/erpnext/projects/page/projects_home/__init__.py b/projects/page/projects_home/__init__.py
similarity index 100%
rename from erpnext/projects/page/projects_home/__init__.py
rename to projects/page/projects_home/__init__.py
diff --git a/erpnext/projects/page/projects_home/projects_home.html b/projects/page/projects_home/projects_home.html
similarity index 100%
rename from erpnext/projects/page/projects_home/projects_home.html
rename to projects/page/projects_home/projects_home.html
diff --git a/erpnext/projects/page/projects_home/projects_home.js b/projects/page/projects_home/projects_home.js
similarity index 100%
rename from erpnext/projects/page/projects_home/projects_home.js
rename to projects/page/projects_home/projects_home.js
diff --git a/erpnext/projects/page/projects_home/projects_home.txt b/projects/page/projects_home/projects_home.txt
similarity index 100%
rename from erpnext/projects/page/projects_home/projects_home.txt
rename to projects/page/projects_home/projects_home.txt
diff --git a/erpnext/projects/search_criteria/__init__.py b/projects/search_criteria/__init__.py
similarity index 100%
rename from erpnext/projects/search_criteria/__init__.py
rename to projects/search_criteria/__init__.py
diff --git a/erpnext/projects/search_criteria/projectwise_delivered_qty_and_costs/__init__.py b/projects/search_criteria/projectwise_delivered_qty_and_costs/__init__.py
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_delivered_qty_and_costs/__init__.py
rename to projects/search_criteria/projectwise_delivered_qty_and_costs/__init__.py
diff --git a/erpnext/projects/search_criteria/projectwise_delivered_qty_and_costs/projectwise_delivered_qty_and_costs.js b/projects/search_criteria/projectwise_delivered_qty_and_costs/projectwise_delivered_qty_and_costs.js
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_delivered_qty_and_costs/projectwise_delivered_qty_and_costs.js
rename to projects/search_criteria/projectwise_delivered_qty_and_costs/projectwise_delivered_qty_and_costs.js
diff --git a/erpnext/projects/search_criteria/projectwise_delivered_qty_and_costs/projectwise_delivered_qty_and_costs.txt b/projects/search_criteria/projectwise_delivered_qty_and_costs/projectwise_delivered_qty_and_costs.txt
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_delivered_qty_and_costs/projectwise_delivered_qty_and_costs.txt
rename to projects/search_criteria/projectwise_delivered_qty_and_costs/projectwise_delivered_qty_and_costs.txt
diff --git a/erpnext/projects/search_criteria/projectwise_pending_qty_and_costs/__init__.py b/projects/search_criteria/projectwise_pending_qty_and_costs/__init__.py
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_pending_qty_and_costs/__init__.py
rename to projects/search_criteria/projectwise_pending_qty_and_costs/__init__.py
diff --git a/erpnext/projects/search_criteria/projectwise_pending_qty_and_costs/projectwise_pending_qty_and_costs.js b/projects/search_criteria/projectwise_pending_qty_and_costs/projectwise_pending_qty_and_costs.js
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_pending_qty_and_costs/projectwise_pending_qty_and_costs.js
rename to projects/search_criteria/projectwise_pending_qty_and_costs/projectwise_pending_qty_and_costs.js
diff --git a/erpnext/projects/search_criteria/projectwise_pending_qty_and_costs/projectwise_pending_qty_and_costs.txt b/projects/search_criteria/projectwise_pending_qty_and_costs/projectwise_pending_qty_and_costs.txt
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_pending_qty_and_costs/projectwise_pending_qty_and_costs.txt
rename to projects/search_criteria/projectwise_pending_qty_and_costs/projectwise_pending_qty_and_costs.txt
diff --git a/erpnext/projects/search_criteria/projectwise_purchase_details/__init__.py b/projects/search_criteria/projectwise_purchase_details/__init__.py
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_purchase_details/__init__.py
rename to projects/search_criteria/projectwise_purchase_details/__init__.py
diff --git a/erpnext/projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.js b/projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.js
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.js
rename to projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.js
diff --git a/erpnext/projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.py b/projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.py
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.py
rename to projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.py
diff --git a/erpnext/projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.txt b/projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.txt
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.txt
rename to projects/search_criteria/projectwise_purchase_details/projectwise_purchase_details.txt
diff --git a/erpnext/projects/search_criteria/projectwise_sales_details/__init__.py b/projects/search_criteria/projectwise_sales_details/__init__.py
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_sales_details/__init__.py
rename to projects/search_criteria/projectwise_sales_details/__init__.py
diff --git a/erpnext/projects/search_criteria/projectwise_sales_details/projectwise_sales_details.js b/projects/search_criteria/projectwise_sales_details/projectwise_sales_details.js
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_sales_details/projectwise_sales_details.js
rename to projects/search_criteria/projectwise_sales_details/projectwise_sales_details.js
diff --git a/erpnext/projects/search_criteria/projectwise_sales_details/projectwise_sales_details.py b/projects/search_criteria/projectwise_sales_details/projectwise_sales_details.py
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_sales_details/projectwise_sales_details.py
rename to projects/search_criteria/projectwise_sales_details/projectwise_sales_details.py
diff --git a/erpnext/projects/search_criteria/projectwise_sales_details/projectwise_sales_details.txt b/projects/search_criteria/projectwise_sales_details/projectwise_sales_details.txt
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_sales_details/projectwise_sales_details.txt
rename to projects/search_criteria/projectwise_sales_details/projectwise_sales_details.txt
diff --git a/erpnext/projects/search_criteria/projectwise_sales_orders/__init__.py b/projects/search_criteria/projectwise_sales_orders/__init__.py
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_sales_orders/__init__.py
rename to projects/search_criteria/projectwise_sales_orders/__init__.py
diff --git a/erpnext/projects/search_criteria/projectwise_sales_orders/projectwise_sales_orders.txt b/projects/search_criteria/projectwise_sales_orders/projectwise_sales_orders.txt
similarity index 100%
rename from erpnext/projects/search_criteria/projectwise_sales_orders/projectwise_sales_orders.txt
rename to projects/search_criteria/projectwise_sales_orders/projectwise_sales_orders.txt
diff --git a/erpnext/projects/search_criteria/timesheet_report/__init__.py b/projects/search_criteria/timesheet_report/__init__.py
similarity index 100%
rename from erpnext/projects/search_criteria/timesheet_report/__init__.py
rename to projects/search_criteria/timesheet_report/__init__.py
diff --git a/erpnext/projects/search_criteria/timesheet_report/timesheet_report.js b/projects/search_criteria/timesheet_report/timesheet_report.js
similarity index 100%
rename from erpnext/projects/search_criteria/timesheet_report/timesheet_report.js
rename to projects/search_criteria/timesheet_report/timesheet_report.js
diff --git a/erpnext/projects/search_criteria/timesheet_report/timesheet_report.txt b/projects/search_criteria/timesheet_report/timesheet_report.txt
similarity index 100%
rename from erpnext/projects/search_criteria/timesheet_report/timesheet_report.txt
rename to projects/search_criteria/timesheet_report/timesheet_report.txt
diff --git a/public/app.html b/public/app.html
deleted file mode 100644
index 96a693e..0000000
--- a/public/app.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html>
-<head>
-	<meta charset="utf-8">
-	<title>ERPNext</title>
-	<meta name="author" content="">
-	<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon">
-	<link rel="icon" href="images/favicon.ico" type="image/x-icon">
-	<script type="text/javascript" src="js/lib/jquery/jquery.min.js"></script>
-	<script type="text/javascript">
-	// browser support
-	if(($.browser.mozilla && parseFloat($.browser.version)<4) ||
-		($.browser.msie && parseFloat($.browser.version)<9) ||
-		($.browser.webkit && parseFloat($.browser.version)<533) ) {
-			window.location.href= 'unsupported.html';			
-		}
-	window.app = true;
-	</script>
-	<script type="text/javascript" src="js/all-app.js"></script>
-	<link type="text/css" rel="stylesheet" href="css/all-app.css">
-</head>
-<body>
-	<header></header>
-	<div id="body_div">
-	</div>
-	<footer></footer>
-</body>
\ No newline at end of file
diff --git a/public/blank.html b/public/blank.html
deleted file mode 100644
index e69de29..0000000
--- a/public/blank.html
+++ /dev/null
diff --git a/public/build.json b/public/build.json
new file mode 100644
index 0000000..8764bec
--- /dev/null
+++ b/public/build.json
@@ -0,0 +1,20 @@
+{
+	"public/css/all-web.css": [
+		"app/startup/startup.css",
+		"app/website/css/website.css"	
+	],
+	"public/css/all-app.css": [
+		"app/startup/startup.css"
+	],
+	"public/js/all-web.js": [
+		"app/startup/startup.js",
+		"app/public/js/conf.js"
+	],
+	"public/js/all-app.js": [
+		"app/startup/startup.js",
+		"app/startup/js/modules.js",
+		"app/startup/js/toolbar.js",
+		"app/startup/js/feature_setup.js",
+		"app/public/js/conf.js"
+	],
+}
\ No newline at end of file
diff --git a/public/css/all-app.css b/public/css/all-app.css
deleted file mode 100644
index 3d9ba3c..0000000
--- a/public/css/all-app.css
+++ /dev/null
@@ -1,4177 +0,0 @@
-
-/*
- *	lib/css/bootstrap/headings.css
- */
-/* heading from bootstrap */
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 0;
-  font-weight: bold;
-  color: #333333;
-  text-rendering: optimizelegibility;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  color: #999999;
-}
-h1 {
-  font-size: 280%;
-  line-height: 120%;
-}
-h1 small {
-  font-size: 150%;
-}
-h2 {
-  font-size: 200%;
-  line-height: 120%;
-}
-h2 small {
-  font-size: 150%;
-}
-h3 {
-  font-size: 210%;
-  font-size: 150%;
-}
-h3 small {
-  font-size: 130%;
-}
-h4, h5, h6 {
-  font-size: 150%;
-}
-h4 {
-  font-size: 113%;
-}
-h4 small {
-  font-size: 100%;
-}
-h5 {
-  font-size: 100%;
-}
-h6 {
-  font-size: 11px;
-  color: #999999;
-  text-transform: uppercase;
-}
-
-/*
- *	lib/css/bootstrap/buttons.css
- */
-.close {
-  font-family: Helvetica, Sans;
-  float: right;
-  font-size: 20px;
-  font-weight: bold;
-  line-height: 18px;
-  color: #000000;
-  text-shadow: 0 1px 0 #ffffff;
-  opacity: 0.2;
-  filter: alpha(opacity=20);
-}
-.close:hover {
-  color: #000000;
-  text-decoration: none;
-  opacity: 0.4;
-  filter: alpha(opacity=40);
-  cursor: pointer;
-}
-.btn {
-  display: inline-block;
-  padding: 4px 10px 4px;
-  font-size: 13px;
-  line-height: 18px;
-  color: #333333;
-  text-align: center;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  background-color: #fafafa;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-repeat: no-repeat;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
-  border: 1px solid #ccc;
-  border-bottom-color: #bbb;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  cursor: pointer;
-  *margin-left: .3em;
-}
-.btn:first-child {
-  *margin-left: 0;
-}
-.btn:hover {
-  color: #333333;
-  text-decoration: none;
-  background-color: #e6e6e6;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-  -moz-transition: background-position 0.1s linear;
-  -ms-transition: background-position 0.1s linear;
-  -o-transition: background-position 0.1s linear;
-  transition: background-position 0.1s linear;
-}
-.btn:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn.active, .btn:active {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  background-color: #e6e6e6;
-  background-color: #d9d9d9 \9;
-  color: rgba(0, 0, 0, 0.5);
-  outline: 0;
-}
-.btn.disabled, .btn[disabled] {
-  cursor: default;
-  background-image: none;
-  background-color: #e6e6e6;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-large {
-  padding: 9px 14px;
-  font-size: 15px;
-  line-height: normal;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.btn-large .icon {
-  margin-top: 1px;
-}
-.btn-small {
-  padding: 4px 9px;
-  font-size: 11px;
-  line-height: 16px;
-}
-.btn-small .icon {
-  margin-top: -1px;
-}
-.btn-primary,
-.btn-primary:hover,
-.btn-warning,
-.btn-warning:hover,
-.btn-danger,
-.btn-danger:hover,
-.btn-success,
-.btn-success:hover,
-.btn-info,
-.btn-info:hover {
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  color: #ffffff;
-}
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-.btn-primary {
-  background-color: #006dcc;
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(top, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-primary:hover,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  background-color: #0044cc;
-}
-.btn-primary:active, .btn-primary.active {
-  background-color: #003399 \9;
-}
-.btn-warning {
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -ms-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(top, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-warning:hover,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  background-color: #f89406;
-}
-.btn-warning:active, .btn-warning.active {
-  background-color: #c67605 \9;
-}
-.btn-danger {
-  background-color: #da4f49;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(top, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-danger:hover,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  background-color: #bd362f;
-}
-.btn-danger:active, .btn-danger.active {
-  background-color: #942a25 \9;
-}
-.btn-success {
-  background-color: #5bb75b;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -ms-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(top, #62c462, #51a351);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-success:hover,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  background-color: #51a351;
-}
-.btn-success:active, .btn-success.active {
-  background-color: #408140 \9;
-}
-.btn-info {
-  background-color: #49afcd;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(top, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-info:hover,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  background-color: #2f96b4;
-}
-.btn-info:active, .btn-info.active {
-  background-color: #24748c \9;
-}
-button.btn, input[type="submit"].btn {
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button.btn.large, input[type="submit"].btn.large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-button.btn.small, input[type="submit"].btn.small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-.btn-group {
-  position: relative;
-  *zoom: 1;
-  *margin-left: .3em;
-}
-.btn-group:before, .btn-group:after {
-  display: table;
-  content: "";
-}
-.btn-group:after {
-  clear: both;
-}
-.btn-group:first-child {
-  *margin-left: 0;
-}
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-.btn-toolbar {
-  margin-top: 9px;
-  margin-bottom: 9px;
-}
-.btn-toolbar .btn-group {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-.btn-group .btn {
-  position: relative;
-  float: left;
-  margin-left: -1px;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group .btn:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.btn-group .btn:last-child, .btn-group .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.btn-group .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 6px;
-  -moz-border-radius-topleft: 6px;
-  border-top-left-radius: 6px;
-  -webkit-border-bottom-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  border-bottom-left-radius: 6px;
-}
-.btn-group .btn.large:last-child, .btn-group .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-  -moz-border-radius-bottomright: 6px;
-  border-bottom-right-radius: 6px;
-}
-.btn-group .btn:hover,
-.btn-group .btn:focus,
-.btn-group .btn:active,
-.btn-group .btn.active {
-  z-index: 2;
-}
-.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  *padding-top: 5px;
-  *padding-bottom: 5px;
-}
-.btn-group.open {
-  *z-index: 1000;
-}
-.btn-group.open .dropdown-menu {
-  display: block;
-  margin-top: 1px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.btn .caret {
-  margin-top: 7px;
-  margin-left: 0;
-}
-.btn:hover .caret, .open.btn-group .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.btn-primary .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret {
-  border-top-color: #ffffff;
-  opacity: 0.75;
-  filter: alpha(opacity=75);
-}
-.btn-small .caret {
-  margin-top: 4px;
-}
-
-/*
- *	lib/css/bootstrap/navbar.css
- */
-.nav {
-  margin-left: 0;
-  margin-bottom: 18px;
-  list-style: none;
-}
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav-list {
-  padding-left: 14px;
-  padding-right: 14px;
-  margin-bottom: 0;
-}
-.nav-list > li > a, .nav-list .nav-header {
-  display: block;
-  padding: 3px 15px;
-  margin-left: -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.nav-list .nav-header {
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 18px;
-  color: #999999;
-  text-transform: uppercase;
-}
-.nav-list > li + .nav-header {
-  margin-top: 9px;
-}
-.nav-list .active > a, .nav-list .active > a:hover {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #0088cc;
-}
-.nav-list [class^="icon-"] {
-  margin-right: 2px;
-}
-.nav-tabs, .nav-pills {
-  *zoom: 1;
-}
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  content: "";
-}
-.nav-tabs:after, .nav-pills:after {
-  clear: both;
-}
-.nav-tabs > li, .nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a, .nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  padding-top: 9px;
-  padding-bottom: 9px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-.nav-tabs > .active > a, .nav-tabs > .active > a:hover {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.nav-pills .active > a, .nav-pills .active > a:hover {
-  color: #ffffff;
-  background-color: #0088cc;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.nav-tabs.nav-stacked > li > a:hover {
-  border-color: #ddd;
-  z-index: 2;
-}
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-.nav-tabs .dropdown-menu, .nav-pills .dropdown-menu {
-  margin-top: 1px;
-  border-width: 1px;
-}
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.nav-tabs .dropdown-toggle .caret, .nav-pills .dropdown-toggle .caret {
-  border-top-color: #0088cc;
-  margin-top: 6px;
-}
-.nav-tabs .dropdown-toggle:hover .caret, .nav-pills .dropdown-toggle:hover .caret {
-  border-top-color: #005580;
-}
-.nav-tabs .active .dropdown-toggle .caret, .nav-pills .active .dropdown-toggle .caret {
-  border-top-color: #333333;
-}
-.nav > .dropdown.active > a:hover {
-  color: #000000;
-  cursor: pointer;
-}
-.nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > .open.active > a:hover {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-.nav .open .caret, .nav .open.active .caret, .nav .open a:hover .caret {
-  border-top-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-
-.navbar {
-  overflow: visible;
-  margin-bottom: 18px;
-}
-.navbar-inner {
-  padding-left: 20px;
-  padding-right: 20px;
-  background-color: #2c2c2c;
-  background-image: -moz-linear-gradient(top, #333333, #222222);
-  background-image: -ms-linear-gradient(top, #333333, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
-  background-image: -webkit-linear-gradient(top, #333333, #222222);
-  background-image: -o-linear-gradient(top, #333333, #222222);
-  background-image: linear-gradient(top, #333333, #222222);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-}
-.btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  background-color: #2c2c2c;
-  background-image: -moz-linear-gradient(top, #333333, #222222);
-  background-image: -ms-linear-gradient(top, #333333, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
-  background-image: -webkit-linear-gradient(top, #333333, #222222);
-  background-image: -o-linear-gradient(top, #333333, #222222);
-  background-image: linear-gradient(top, #333333, #222222);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
-  border-color: #222222 #222222 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-}
-.btn-navbar:hover,
-.btn-navbar:active,
-.btn-navbar.active,
-.btn-navbar.disabled,
-.btn-navbar[disabled] {
-  background-color: #222222;
-}
-.btn-navbar:active, .btn-navbar.active {
-  background-color: #080808 \9;
-}
-.btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-  -moz-border-radius: 1px;
-  border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-.nav-collapse.collapse {
-  height: auto;
-}
-.navbar .brand:hover {
-  text-decoration: none;
-}
-.navbar .brand {
-  float: left;
-  display: block;
-  padding: 8px 20px 12px;
-  font-size: 20px;
-  font-weight: 200;
-  line-height: 1;
-  color: #ffffff;
-}
-.navbar .navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-  color: #999999;
-}
-.navbar .navbar-text a:hover {
-  color: #ffffff;
-  background-color: transparent;
-}
-.navbar .btn, .navbar .btn-group {
-  margin-top: 5px;
-}
-.navbar .btn-group .btn {
-  margin-top: 0;
-}
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-.navbar-form:before, .navbar-form:after {
-  display: table;
-  content: "";
-}
-.navbar-form:after {
-  clear: both;
-}
-.navbar-form input, .navbar-form select {
-  display: inline-block;
-  margin-top: 5px;
-  margin-bottom: 0;
-}
-.navbar-form .radio, .navbar-form .checkbox {
-  margin-top: 5px;
-}
-.navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 6px;
-  margin-bottom: 0;
-}
-.navbar-search .search-query {
-  padding: 4px 9px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  color: #ffffff;
-  color: rgba(255, 255, 255, 0.75);
-  background: #666;
-  background: rgba(255, 255, 255, 0.3);
-  border: 1px solid #111;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  -webkit-transition: none;
-  -moz-transition: none;
-  -ms-transition: none;
-  -o-transition: none;
-  transition: none;
-}
-.navbar-search .search-query :-moz-placeholder {
-  color: #eeeeee;
-}
-.navbar-search .search-query::-webkit-input-placeholder {
-  color: #eeeeee;
-}
-.navbar-search .search-query:hover {
-  color: #ffffff;
-  background-color: #999999;
-  background-color: rgba(255, 255, 255, 0.5);
-}
-.navbar-search .search-query:focus, .navbar-search .search-query.focused {
-  padding: 5px 10px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  outline: 0;
-}
-.navbar-fixed-top {
-  position: fixed;
-  top: 0;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-}
-.navbar-fixed-top .navbar-inner {
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right;
-}
-.navbar .nav > li {
-  display: block;
-  float: left;
-}
-.navbar .nav > li > a {
-  float: none;
-  padding: 10px 10px 11px;
-  line-height: 19px;
-  color: #999999;
-  text-decoration: none;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.navbar .nav > li > a:hover {
-  background-color: transparent;
-  color: #ffffff;
-  text-decoration: none;
-}
-.navbar .nav .active > a, .navbar .nav .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #222222;
-  background-color: rgba(0, 0, 0, 0.5);
-}
-.navbar .divider-vertical {
-  height: 40px;
-  width: 1px;
-  margin: 0 9px;
-  overflow: hidden;
-  background-color: #222222;
-  border-right: 1px solid #333333;
-}
-.navbar .nav.pull-right {
-  margin-left: 10px;
-  margin-right: 0;
-}
-.navbar .dropdown-menu {
-  margin-top: 1px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.navbar .dropdown-menu:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-  top: -7px;
-  left: 9px;
-}
-.navbar .dropdown-menu:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  position: absolute;
-  top: -6px;
-  left: 10px;
-}
-.navbar .nav .dropdown-toggle .caret, .navbar .nav .open.dropdown .caret {
-  border-top-color: #ffffff;
-}
-.navbar .nav .active .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.navbar .nav .open > .dropdown-toggle, .navbar .nav .active > .dropdown-toggle, .navbar .nav .open.active > .dropdown-toggle {
-  background-color: transparent;
-}
-.navbar .nav .active > .dropdown-toggle:hover {
-  color: #ffffff;
-}
-.navbar .nav.pull-right .dropdown-menu {
-  left: auto;
-  right: 0;
-}
-.navbar .nav.pull-right .dropdown-menu:before {
-  left: auto;
-  right: 12px;
-}
-.navbar .nav.pull-right .dropdown-menu:after {
-  left: auto;
-  right: 13px;
-}
-
-/* ajax spinner */
-.navbar #spinner {
-	display: block;
-	float: right;
-	width: 20px;
-	margin-bottom: -5px;
-	margin-top: 10px;
-	visibility: hidden;
-}
-
-.navbar-inner {
-	padding: 0px 20px;
-}
-
-
-/*
- *	lib/css/bootstrap/dropdown.css
- */
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active, .open .dropdown-toggle {
-  outline: 0;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  text-indent: -99999px;
-  *text-indent: 0;
-  vertical-align: top;
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid #000000;
-  opacity: 0.3;
-  filter: alpha(opacity=30);
-  content: "\2193";
-}
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-.dropdown:hover .caret, .open.dropdown .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  float: left;
-  display: none;
-  min-width: 160px;
-  max-width: 220px;
-  _width: 160px;
-  padding: 4px 0;
-  margin: 0;
-  list-style: none;
-  background-color: #ffffff;
-  border-color: #ccc;
-  border-color: rgba(0, 0, 0, 0.2);
-  border-style: solid;
-  border-width: 1px;
-  -webkit-border-radius: 0 0 5px 5px;
-  -moz-border-radius: 0 0 5px 5px;
-  border-radius: 0 0 5px 5px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-}
-.dropdown-menu.bottom-up {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 2px;
-}
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 5px 1px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-  *width: 100%;
-  *margin: -5px 0 5px;
-}
-.dropdown-menu a {
-  display: block;
-  padding: 3px 15px;
-  clear: both;
-  font-weight: normal;
-  line-height: 18px;
-  color: #555555;
-  white-space: nowrap;
-}
-.dropdown-menu li > a:hover, .dropdown-menu .active > a, .dropdown-menu .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #0088cc;
-}
-.dropdown.open {
-  *z-index: 1000;
-}
-.dropdown.open .dropdown-toggle {
-  color: #ffffff;
-  background: #ccc;
-  background: rgba(0, 0, 0, 0.3);
-}
-.dropdown.open .dropdown-menu {
-  display: block;
-}
-
-/*
- *	lib/css/bootstrap/tooltip.css
- */
-.tooltip {
-  position: absolute;
-  z-index: 1020;
-  display: block;
-  visibility: visible;
-  padding: 5px;
-  font-size: 11px;
-  opacity: 0;
-  filter: alpha(opacity=0);
-}
-.tooltip.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.tooltip.top {
-  margin-top: -2px;
-}
-.tooltip.right {
-  margin-left: 2px;
-}
-.tooltip.bottom {
-  margin-top: 2px;
-}
-.tooltip.left {
-  margin-left: -2px;
-}
-.tooltip.top .tooltip-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.tooltip-inner {
-  max-width: 200px;
-  padding: 3px 8px;
-  color: #ffffff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #000000;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1010;
-  display: none;
-  padding: 5px;
-}
-.popover.top {
-  margin-top: -5px;
-}
-.popover.right {
-  margin-left: 5px;
-}
-.popover.bottom {
-  margin-top: 5px;
-}
-.popover.left {
-  margin-left: -5px;
-}
-.popover.top .arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.popover.right .arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.popover.bottom .arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.popover.left .arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.popover .arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover-inner {
-  padding: 3px;
-  width: 280px;
-  overflow: hidden;
-  background: #000000;
-  background: rgba(0, 0, 0, 0.8);
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-}
-.popover-title {
-  padding: 9px 15px;
-  line-height: 1;
-  background-color: #f5f5f5;
-  border-bottom: 1px solid #eee;
-  -webkit-border-radius: 3px 3px 0 0;
-  -moz-border-radius: 3px 3px 0 0;
-  border-radius: 3px 3px 0 0;
-}
-.popover-content {
-  padding: 14px;
-  background-color: #ffffff;
-  -webkit-border-radius: 0 0 3px 3px;
-  -moz-border-radius: 0 0 3px 3px;
-  border-radius: 0 0 3px 3px;
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.popover-content p, .popover-content ul, .popover-content ol {
-  margin-bottom: 0;
-}
-
-/*
- *	lib/css/bootstrap/label.css
- */
-.label {
-  padding: 2px 4px 3px;
-  font-size: 11.049999999999999px;
-  font-weight: bold;
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #999999;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.label:hover {
-  color: #ffffff;
-  text-decoration: none;
-}
-.label-important {
-  background-color: #b94a48;
-}
-.label-important:hover {
-  background-color: #953b39;
-}
-.label-warning {
-  background-color: #f89406;
-}
-.label-warning:hover {
-  background-color: #c67605;
-}
-.label-success {
-  background-color: #468847;
-}
-.label-success:hover {
-  background-color: #356635;
-}
-.label-info {
-  background-color: #3a87ad;
-}
-.label-info:hover {
-  background-color: #2d6987;
-}
-
-/*
- *	lib/css/bootstrap/icons.css
- */
-[class^="icon-"],
-[class*=" icon-"] {
-  display: inline-block;
-  width: 15px;
-  height: 14px;
-  *margin-right: .3em;
-  line-height: 14px;
-  vertical-align: text-top;
-  background-image: url("../images/lib/icons/glyphicons-halflings.png");
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-}
-
-[class^="icon-"]:last-child,
-[class*=" icon-"]:last-child {
-  *margin-left: 0;
-}
-
-.icon-white {
-  background-image: url("../images/lib/icons/glyphicons-halflings-white.png");
-}
-
-.icon-glass {
-  background-position: 0      0;
-}
-
-.icon-music {
-  background-position: -24px 0;
-}
-
-.icon-search {
-  background-position: -48px 0;
-}
-
-.icon-envelope {
-  background-position: -72px 0;
-}
-
-.icon-heart {
-  background-position: -96px 0;
-}
-
-.icon-star {
-  background-position: -120px 0;
-}
-
-.icon-star-empty {
-  background-position: -144px 0;
-}
-
-.icon-user {
-  background-position: -168px 0;
-}
-
-.icon-film {
-  background-position: -192px 0;
-}
-
-.icon-th-large {
-  background-position: -216px 0;
-}
-
-.icon-th {
-  background-position: -240px 0;
-}
-
-.icon-th-list {
-  background-position: -264px 0;
-}
-
-.icon-ok {
-  background-position: -288px 0;
-}
-
-.icon-remove {
-  background-position: -312px 0;
-}
-
-.icon-zoom-in {
-  background-position: -336px 0;
-}
-
-.icon-zoom-out {
-  background-position: -360px 0;
-}
-
-.icon-off {
-  background-position: -384px 0;
-}
-
-.icon-signal {
-  background-position: -408px 0;
-}
-
-.icon-cog {
-  background-position: -432px 0;
-}
-
-.icon-trash {
-  background-position: -456px 0;
-}
-
-.icon-home {
-  background-position: 0 -24px;
-}
-
-.icon-file {
-  background-position: -24px -24px;
-}
-
-.icon-time {
-  background-position: -48px -24px;
-}
-
-.icon-road {
-  background-position: -72px -24px;
-}
-
-.icon-download-alt {
-  background-position: -96px -24px;
-}
-
-.icon-download {
-  background-position: -120px -24px;
-}
-
-.icon-upload {
-  background-position: -144px -24px;
-}
-
-.icon-inbox {
-  background-position: -168px -24px;
-}
-
-.icon-play-circle {
-  background-position: -192px -24px;
-}
-
-.icon-repeat {
-  background-position: -216px -24px;
-}
-
-.icon-refresh {
-  background-position: -240px -24px;
-}
-
-.icon-list-alt {
-  background-position: -264px -24px;
-}
-
-.icon-lock {
-  background-position: -287px -24px;
-}
-
-.icon-flag {
-  background-position: -312px -24px;
-}
-
-.icon-headphones {
-  background-position: -336px -24px;
-}
-
-.icon-volume-off {
-  background-position: -360px -24px;
-}
-
-.icon-volume-down {
-  background-position: -384px -24px;
-}
-
-.icon-volume-up {
-  background-position: -408px -24px;
-}
-
-.icon-qrcode {
-  background-position: -432px -24px;
-}
-
-.icon-barcode {
-  background-position: -456px -24px;
-}
-
-.icon-tag {
-  background-position: 0 -48px;
-}
-
-.icon-tags {
-  background-position: -25px -48px;
-}
-
-.icon-book {
-  background-position: -48px -48px;
-}
-
-.icon-bookmark {
-  background-position: -72px -48px;
-}
-
-.icon-print {
-  background-position: -96px -48px;
-}
-
-.icon-camera {
-  background-position: -120px -48px;
-}
-
-.icon-font {
-  background-position: -144px -48px;
-}
-
-.icon-bold {
-  background-position: -167px -48px;
-}
-
-.icon-italic {
-  background-position: -192px -48px;
-}
-
-.icon-text-height {
-  background-position: -216px -48px;
-}
-
-.icon-text-width {
-  background-position: -240px -48px;
-}
-
-.icon-align-left {
-  background-position: -264px -48px;
-}
-
-.icon-align-center {
-  background-position: -288px -48px;
-}
-
-.icon-align-right {
-  background-position: -312px -48px;
-}
-
-.icon-align-justify {
-  background-position: -336px -48px;
-}
-
-.icon-list {
-  background-position: -360px -48px;
-}
-
-.icon-indent-left {
-  background-position: -384px -48px;
-}
-
-.icon-indent-right {
-  background-position: -408px -48px;
-}
-
-.icon-facetime-video {
-  background-position: -432px -48px;
-}
-
-.icon-picture {
-  background-position: -456px -48px;
-}
-
-.icon-pencil {
-  background-position: 0 -72px;
-}
-
-.icon-map-marker {
-  background-position: -24px -72px;
-}
-
-.icon-adjust {
-  background-position: -48px -72px;
-}
-
-.icon-tint {
-  background-position: -72px -72px;
-}
-
-.icon-edit {
-  background-position: -96px -72px;
-}
-
-.icon-share {
-  background-position: -120px -72px;
-}
-
-.icon-check {
-  background-position: -144px -72px;
-}
-
-.icon-move {
-  background-position: -168px -72px;
-}
-
-.icon-step-backward {
-  background-position: -192px -72px;
-}
-
-.icon-fast-backward {
-  background-position: -216px -72px;
-}
-
-.icon-backward {
-  background-position: -240px -72px;
-}
-
-.icon-play {
-  background-position: -264px -72px;
-}
-
-.icon-pause {
-  background-position: -288px -72px;
-}
-
-.icon-stop {
-  background-position: -312px -72px;
-}
-
-.icon-forward {
-  background-position: -336px -72px;
-}
-
-.icon-fast-forward {
-  background-position: -360px -72px;
-}
-
-.icon-step-forward {
-  background-position: -384px -72px;
-}
-
-.icon-eject {
-  background-position: -408px -72px;
-}
-
-.icon-chevron-left {
-  background-position: -432px -72px;
-}
-
-.icon-chevron-right {
-  background-position: -456px -72px;
-}
-
-.icon-plus-sign {
-  background-position: 0 -96px;
-}
-
-.icon-minus-sign {
-  background-position: -24px -96px;
-}
-
-.icon-remove-sign {
-  background-position: -48px -96px;
-}
-
-.icon-ok-sign {
-  background-position: -72px -96px;
-}
-
-.icon-question-sign {
-  background-position: -96px -96px;
-}
-
-.icon-info-sign {
-  background-position: -120px -96px;
-}
-
-.icon-screenshot {
-  background-position: -144px -96px;
-}
-
-.icon-remove-circle {
-  background-position: -168px -96px;
-}
-
-.icon-ok-circle {
-  background-position: -192px -96px;
-}
-
-.icon-ban-circle {
-  background-position: -216px -96px;
-}
-
-.icon-arrow-left {
-  background-position: -240px -96px;
-}
-
-.icon-arrow-right {
-  background-position: -264px -96px;
-}
-
-.icon-arrow-up {
-  background-position: -289px -96px;
-}
-
-.icon-arrow-down {
-  background-position: -312px -96px;
-}
-
-.icon-share-alt {
-  background-position: -336px -96px;
-}
-
-.icon-resize-full {
-  background-position: -360px -96px;
-}
-
-.icon-resize-small {
-  background-position: -384px -96px;
-}
-
-.icon-plus {
-  background-position: -408px -96px;
-}
-
-.icon-minus {
-  background-position: -433px -96px;
-}
-
-.icon-asterisk {
-  background-position: -456px -96px;
-}
-
-.icon-exclamation-sign {
-  background-position: 0 -120px;
-}
-
-.icon-gift {
-  background-position: -24px -120px;
-}
-
-.icon-leaf {
-  background-position: -48px -120px;
-}
-
-.icon-fire {
-  background-position: -72px -120px;
-}
-
-.icon-eye-open {
-  background-position: -96px -120px;
-}
-
-.icon-eye-close {
-  background-position: -120px -120px;
-}
-
-.icon-warning-sign {
-  background-position: -144px -120px;
-}
-
-.icon-plane {
-  background-position: -168px -120px;
-}
-
-.icon-calendar {
-  background-position: -192px -120px;
-}
-
-.icon-random {
-  background-position: -216px -120px;
-}
-
-.icon-comment {
-  background-position: -240px -120px;
-}
-
-.icon-magnet {
-  background-position: -264px -120px;
-}
-
-.icon-chevron-up {
-  background-position: -288px -120px;
-}
-
-.icon-chevron-down {
-  background-position: -313px -119px;
-}
-
-.icon-retweet {
-  background-position: -336px -120px;
-}
-
-.icon-shopping-cart {
-  background-position: -360px -120px;
-}
-
-.icon-folder-close {
-  background-position: -384px -120px;
-}
-
-.icon-folder-open {
-  background-position: -408px -120px;
-}
-
-.icon-resize-vertical {
-  background-position: -432px -119px;
-}
-
-.icon-resize-horizontal {
-  background-position: -456px -118px;
-}
-
-.icon-hdd {
-  background-position: 0 -144px;
-}
-
-.icon-bullhorn {
-  background-position: -24px -144px;
-}
-
-.icon-bell {
-  background-position: -48px -144px;
-}
-
-.icon-certificate {
-  background-position: -72px -144px;
-}
-
-.icon-thumbs-up {
-  background-position: -96px -144px;
-}
-
-.icon-thumbs-down {
-  background-position: -120px -144px;
-}
-
-.icon-hand-right {
-  background-position: -144px -144px;
-}
-
-.icon-hand-left {
-  background-position: -168px -144px;
-}
-
-.icon-hand-up {
-  background-position: -192px -144px;
-}
-
-.icon-hand-down {
-  background-position: -216px -144px;
-}
-
-.icon-circle-arrow-right {
-  background-position: -240px -144px;
-}
-
-.icon-circle-arrow-left {
-  background-position: -264px -144px;
-}
-
-.icon-circle-arrow-up {
-  background-position: -288px -144px;
-}
-
-.icon-circle-arrow-down {
-  background-position: -312px -144px;
-}
-
-.icon-globe {
-  background-position: -336px -144px;
-}
-
-.icon-wrench {
-  background-position: -360px -144px;
-}
-
-.icon-tasks {
-  background-position: -384px -144px;
-}
-
-.icon-filter {
-  background-position: -408px -144px;
-}
-
-.icon-briefcase {
-  background-position: -432px -144px;
-}
-
-.icon-fullscreen {
-  background-position: -456px -144px;
-}
-
-/*
- *	lib/css/bootstrap/popover.css
- */
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1010;
-  display: none;
-  padding: 5px;
-}
-.popover.top {
-  margin-top: -5px;
-}
-.popover.right {
-  margin-left: 5px;
-}
-.popover.bottom {
-  margin-top: 5px;
-}
-.popover.left {
-  margin-left: -5px;
-}
-.popover.top .arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.popover.right .arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.popover.bottom .arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.popover.left .arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.popover .arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover-inner {
-  padding: 3px;
-  width: 280px;
-  overflow: hidden;
-  background: #000000;
-  background: rgba(0, 0, 0, 0.8);
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-}
-.popover-title {
-  padding: 9px 15px;
-  line-height: 1;
-  background-color: #f5f5f5;
-  border-bottom: 1px solid #eee;
-  -webkit-border-radius: 3px 3px 0 0;
-  -moz-border-radius: 3px 3px 0 0;
-  border-radius: 3px 3px 0 0;
-}
-.popover-content {
-  padding: 14px;
-  background-color: #ffffff;
-  -webkit-border-radius: 0 0 3px 3px;
-  -moz-border-radius: 0 0 3px 3px;
-  border-radius: 0 0 3px 3px;
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.popover-content p, .popover-content ul, .popover-content ol {
-  margin-bottom: 0;
-}
-
-/*
- *	lib/css/bootstrap/progress.css
- */
-@-webkit-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-@-moz-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-@-ms-keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-@-o-keyframes progress-bar-stripes {
-  from {
-    background-position: 0 0;
-  }
-  to {
-    background-position: 40px 0;
-  }
-}
-
-@keyframes progress-bar-stripes {
-  from {
-    background-position: 40px 0;
-  }
-  to {
-    background-position: 0 0;
-  }
-}
-
-.progress {
-  height: 20px;
-  margin-bottom: 20px;
-  overflow: hidden;
-  background-color: #f7f7f7;
-  background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
-  background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
-  background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
-  background-repeat: repeat-x;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-          box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-}
-
-.progress .bar {
-  float: left;
-  width: 0;
-  height: 100%;
-  font-size: 12px;
-  color: #ffffff;
-  text-align: center;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #0e90d2;
-  background-image: -moz-linear-gradient(top, #149bdf, #0480be);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
-  background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
-  background-image: -o-linear-gradient(top, #149bdf, #0480be);
-  background-image: linear-gradient(to bottom, #149bdf, #0480be);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-     -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-transition: width 0.6s ease;
-     -moz-transition: width 0.6s ease;
-       -o-transition: width 0.6s ease;
-          transition: width 0.6s ease;
-}
-
-.progress .bar + .bar {
-  -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-     -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-          box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-}
-
-.progress-striped .bar {
-  background-color: #149bdf;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  -webkit-background-size: 40px 40px;
-     -moz-background-size: 40px 40px;
-       -o-background-size: 40px 40px;
-          background-size: 40px 40px;
-}
-
-.progress.active .bar {
-  -webkit-animation: progress-bar-stripes 2s linear infinite;
-     -moz-animation: progress-bar-stripes 2s linear infinite;
-      -ms-animation: progress-bar-stripes 2s linear infinite;
-       -o-animation: progress-bar-stripes 2s linear infinite;
-          animation: progress-bar-stripes 2s linear infinite;
-}
-
-.progress-danger .bar,
-.progress .bar-danger {
-  background-color: #dd514c;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);
-}
-
-.progress-danger.progress-striped .bar,
-.progress-striped .bar-danger {
-  background-color: #ee5f5b;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-
-.progress-success .bar,
-.progress .bar-success {
-  background-color: #5eb95e;
-  background-image: -moz-linear-gradient(top, #62c462, #57a957);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
-  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
-  background-image: -o-linear-gradient(top, #62c462, #57a957);
-  background-image: linear-gradient(to bottom, #62c462, #57a957);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);
-}
-
-.progress-success.progress-striped .bar,
-.progress-striped .bar-success {
-  background-color: #62c462;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-
-.progress-info .bar,
-.progress .bar-info {
-  background-color: #4bb1cf;
-  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);
-}
-
-.progress-info.progress-striped .bar,
-.progress-striped .bar-info {
-  background-color: #5bc0de;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-
-.progress-warning .bar,
-.progress .bar-warning {
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(to bottom, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
-}
-
-.progress-warning.progress-striped .bar,
-.progress-striped .bar-warning {
-  background-color: #fbb450;
-  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-
-/*
- *	lib/css/legacy/body.css
- */
-html { 
-	margin: 0px;
-	padding: 0px;
-}
-
-body {	
-	margin: 0px;
-	padding: 0px;
-	font-size: 14px;
-	color: #000;
-}
-
-/* font settings */
-
-h1, h2, h3, h4, h5 {
-	font-family: Arial, sans-serif;
-	margin-top: 0.2em;
-}
-
-body {
-	font-family: Arial, sans-serif;
-	font-size: 13px;
-	background-color: #eee;
-}
-
-footer {
-	background: #b7b7b7; /* Old browsers */
-	background: -moz-linear-gradient(top,  #b7b7b7 0%, #eeeeee 36%); /* FF3.6+ */
-	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b7b7b7), color-stop(36%,#eeeeee)); /* Chrome,Safari4+ */
-	background: -webkit-linear-gradient(top,  #b7b7b7 0%,#eeeeee 36%); /* Chrome10+,Safari5.1+ */
-	background: -o-linear-gradient(top,  #b7b7b7 0%,#eeeeee 36%); /* Opera 11.10+ */
-	background: -ms-linear-gradient(top,  #b7b7b7 0%,#eeeeee 36%); /* IE10+ */
-	background: linear-gradient(top,  #b7b7b7 0%,#eeeeee 36%); /* W3C */
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#b7b7b7', endColorstr='#eeeeee',GradientType=0 ); /* IE6-9 */
-	border-top: 1px solid #999;
-	text-align: center;
-	color: inherit;
-	padding: 10px;
-	font-size: 12px;
-	line-height: 1.7;
-}
-
-span, div, td, input, textarea, button, select {
-	font-family: inherit;
-}
-
-
-.markdown pre {
-    background-color: #F5F5F5;
-    border: 1px solid rgba(0, 0, 0, 0.15);
-    border-radius: 4px 4px 4px 4px;
-    display: block;
-    font-size: 12.025px;
-    line-height: 18px;
-    margin: 0 0 15px;
-    padding: 8.5px;
-    white-space: pre-wrap;
-    word-wrap: break-word;
-}
-
-.markdown code, .markdown pre {
-    border-radius: 3px 3px 3px 3px;
-    color: #333333;
-    font-family: Menlo,Monaco,Consolas,"Courier New",monospace;
-    font-size: 12px;
-}
-
-button { margin: 2px; margin-left: 0px; }
-
-label {
-	padding-top: 15px;
-	color: #404040;
-}
-
-select, input, textarea { 
-	border: 1px solid #ccc; 
-	-moz-border-radius: 4px;
-	-webkit-border-radius: 4px;
-	font-size: inherit;
-	padding: 4px;
-	color: #444;
-	-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-	-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-	box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-textarea { 
-	font-family: inherit; 
-	height: 120px; 
-	width: 90%; 
-	font-size: inherit; 
-	white-space: normal;
-}
-
-table { padding: 0px; border-collapse: 'collapse'}
-
-td { 
-	padding:0px; 
-	margin: 0px; 
-	vertical-align: top; 
-}
-
-p {
-	margin: 0px 0px 9px 0px;
-	line-height: 1.5em;
-}
-
-li {
-	line-height: 1.5em;
-}
-
-hr {
-  clear: both;
-  margin: 18px 0;
-  border: 0;
-  border-top: 1px solid #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-
-/* links */
-
-a:active { outline:none; }
-
-a {
-  color: #0088cc;
-  text-decoration: none;
-}
-a:hover {
-  color: #005580;
-  text-decoration: underline;
-}
-
-.link_type {
-	padding:2px;
-	color: #0088cc;
-	cursor: pointer;
-}
-
-.link_type:hover {
-	color: #005580;
-	text-decoration: underline;
-}
-
-:focus { -moz-outline-style:none; }
-
-table.simpletable { border-collapse: collapse; margin-bottom: 10px;}
-table.simpletable td {border: 1pt solid #000; vertical-align: top; padding: 2px; }
-
-div.fix_ff_cursor { overflow: auto; }
-
-/* --- Layout --- */
-
-div.comment { color: #444; }
-
-.small {
-	font-size: 12px;
-}
-
-.help {
-	margin-bottom: 3px;
-	color: #888;
-}
-
-div#body_div {
-	padding-right: 7px;
-	padding-top: 70px;
-	padding-bottom: 50px;
-	min-height: 400px;
-}
-
-.content {
-	margin: auto;
-	width: 900px;
-}
-
-.background-fade-in {
-	-webkit-transition: background 1s ease-in; /* property duration timing-function delay */
-    -moz-transition: background 1s ease-in;
-    -o-transition: background 1s ease-in;
-    transition: background 1s ease-in;
-}
-
-header .container {
-	width: 900px;
-	margin: auto;
-}
-
-@media (max-width: 1200px) {
-	header .container, .content {
-		width: 900px;
-	}
-}
-
-@media (min-width: 1200px) and (max-width: 1599px) {
-	header .container, .content {
-		width: 1100px;
-	}
-}
-
-@media (min-width: 1600px) {
-	header .container, .content {
-		width: 1100px;
-	}
-	div#body_div {
-		min-height: 900px;
-	}
-}
-
-div.no_script {
-	display: none;
-}
-
-div.loading_div {
-	background-color: #FFFFCC;
-	z-index: 1999;
-	right: 5px;
-	width: 90px;
-	display: none;
-	text-align: center;
-	padding: 2px;
-	border: 1px solid #FF4;
-}
-
-div.std-footer {
-	margin: 13px -15px;
-	border-top: 1px solid #AAA;
-	padding: 13px;
-}
-
-div.std-footer-item {
-	margin: 0px 13px 13px 0px;
-}
-
-.shadow {
-	-moz-box-shadow: 0px 2px 2px #888;
-	-webkit-box-shadow: 0px 2px 2px #888;
- 	box-shadow: 0px 2px 2px #888;
-}
-
-.round {
-	-webkit-border-radius: 5px;
-	-moz-border-radius: 5px;
-	border-radius: 5px;	
-}
-
-.layout_wrapper, .layout-wrapper {
-	-moz-box-shadow: 0px 0px 9px rgba(0,0,0,0.5);
-	-webkit-box-shadow: 0px 0px 9px rgba(0,0,0,0.5);
-	box-shadow: 0px 0px 9px rgba(0,0,0,0.5);
-	background-color: #fff;
-	padding: 15px;
-	-webkit-border-radius: 5px;
-	-moz-border-radius: 5px;
-	border-radius: 5px;	
-	overflow: hidden;
-}
-
-.layout-wrapper-appframe {
-	padding: 0px;
-}
-
-.layout-wrapper-background {
-	background-color: #fafafa !important;
-	padding: 0px;
-}
-
-.layout-main {
-	padding: 15px;
-	background-color: #fff;
-}
-
-.layout-main-section {
-	width: 71%;
-	float: left;
-	padding: 15px;
-	background-color: #FFF;
-	min-height: 600px;
-	-moz-box-shadow:    2px 0px 1px #ddd;
-	-webkit-box-shadow: 2px 0px 1px #ddd;
-	box-shadow:         2px 0px 1px #ddd;
-}
-
-.layout-side-section {
-	width: 22%;
-	/*float: right;*/
-	color: #606060; 
-	overflow-x: hidden;
-	padding: 15px;
-	min-height: 600px;
-}
-
-/* from bootstrap */
-.container {
-  margin-left: auto;
-  margin-right: auto;
-  zoom: 1;
-}
-.container:before, .container:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.container:after {
-  clear: both;
-}
-
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #eee;
-  border: 1px solid rgba(0, 0, 0, 0.05);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-
-.avatar-small {
-	display: inline-block; 
-	width: 24px;
-	height: 20px;
-	vertical-align: middle;
-	overflow: hidden;
-	margin: 0px 3px;
-	border-radius: 3px;
-	-moz-border-radius: 3px;
-	-webkit-border-radius: 3px;
-}
-.avatar-small img {
-	width: 24px; 
-}
-
-.erpnext-logo {
-	position: fixed;
-	bottom: 5px;
-	left: 5px;
-	height: 30px;
-	width: 30px;
-	background: url('../images/erpnext-fade.png') no-repeat top left;
-}
-
-.markdown p {
-	font-size: 13px;
-}
-
-.markdown h1 {
-	margin-bottom: 9px;
-}
-
-.markdown h2 {
-	margin-bottom: 7px;
-}
-
-.markdown h3, .markdown h4 {
-	margin-bottom: 5px;
-}
-
-/*
- *	lib/css/legacy/messages.css
- */
-
-/* FLOATING MESSAGE */
-
-.btn-img { cursor: pointer; }
-
-div.fetching { color: #888; text-align:right; }
-
-.msgprint {
-	min-height: 60px; 
-	max-height: 500px;
-	padding: 9px;
-	color: #333;
-	overflow: auto;
-}
-
-div.notice {
-	postion: absolute;
-	background-color: #000;
-	-moz-border-radius: 5px; -webkit-border-radius: 5px;
-	opacity: 0.6;
-	right: 0;
-	top: 0;
-	margin-top: 8px;
-	z-index: -1;
-	padding: 8px;
-}
-
-/** help **/
-
-.info-box {
-    background-color: #F8F8F8;
-    border: 1px solid #CCCCCC;
-    border-radius: 3px 3px 3px 3px;
-    line-height: 1.6em;
-    overflow: auto;
-    padding: 6px 10px;
-	margin-bottom: 9px;
-}
-
-.help_box, .help-box {
-	background-color: #ffe;
-	padding: 9px 9px 9px 9px;
-	border: 1px dashed #fc7;
-	margin: 11px 0px;
-}
-
-.help-box, .help-box p, .help-box h1, .help-box h2, .help-box h3, .help-box h4 {
-	color: #643;
-}
-
-
-/*
- *	lib/css/legacy/forms.css
- */
-/* FORMS */
-
-div.form-title {
-	/*background-color: #e0eeff;*/
-	padding: 5px 19px 15px 19px;
-	margin: -15px -15px 0px -15px;
-	border-bottom: 1px solid #eee;
-}
-
-.appframe-titlebar .label {
-	vertical-align: middle;
-	margin-right: 7px;
-}
-
-div.form-intro-area {
-	padding: 9px 9px 0px 9px;
-	margin: 0px 0px 15px 0px;
-}
-
-div.form-section-head {
-	margin: 11px -15px 3px -15px;
-	border-top: 1px solid #ccc;
-	padding: 11px 23px 0px 23px;
-}
-
-div.form-layout-row:first-child .form-section-head {
-	border-top: 0px solid #ccc !important;
-	margin-top: 0px;
-	padding-top: 0px;
-}
-
-div.form-section-head h3 {
-	line-height: 20px;
-}
-
-div.form-section-head hr {
-	margin: 9px 0px;
-}
-
-
-div.frm_print_wrapper {
-	background-color:#FFF;
-	border:1px solid #444;
-	padding: 40px;
-
-	box-shadow:1px 1px 8px #229;
-	-moz-box-shadow: 1px 1px 8px #229;
-	-webkit-box-shadow: 1px 1px 8px #229;
-}
-
-div.page_break {
-	margin: 24px 0px;
-	border-top: 1px dashed #888;
-}
-
-div.dialog_frm {
-	position: relative;
-	margin: 10px;
-}
-
-
-
-/*------------------*/
-
-.top_cell {
-	height: 50px;
-}
-
-div.attach_area {
-	padding: 8px;
-	margin: 8px;
-	background-color: #EEE;
-}
-
-div.attach_area table {
-	width: 100%;
-}
-
-.tablabel_normal {
-	margin: 0 4px 0 0;
-	padding: 3px 5px;
-	line-height: 1.3em;
-	display: inline;
-	cursor: pointer;
-}
-
-.tablabel_selected {
-	margin: 0 4px 0 0;
-	padding: 3px 5px;
-	line-height: 1.3em;
-	font-weight: bold;
-	display: inline;
-	cursor: pointer;
-	color: #000;
-}
-
-.scrollhead_wrapper {
-	position: absolute;
-	z-index: 1;
-	height: 30px;
-}
-
-.treeimg {
-	cursor: pointer;
-	margin-right: 3px;
-}
-
-
-.sectionCell {
-	padding: 5px;
-	vertical-align: top;
-}
-
-.code_area {
-	width: 80%;
-	margin: 8px;
-	padding: 4px;
-	background-color: #F8F8F8;
-	border: 1px solid #CCC;
-	overflow-x: auto;
-}
-
-.code_text {
-	width: 100%;
-	height: 360px;
-	margin-top: 3px;
-	font-family: Courier, Fixed;
-	font-size: 12px;
-}
-
-div.time_field select{
-	display: inline;
-	margin: 2px;
-	width: 45px;
-}
-
-/* sidebar */
-
-div.sidebar-comment-wrapper input {
-	width: 50%;
-}
-div.sidebar-comment-message {
-	margin-top: 8px;
-	color: #777;
-}
-
-div.sidebar-comment-text {
-	font-size: 12px;
-	font-weight: bold;
-	margin-top: 8px;
-	color: #444;
-}
-div.sidebar-comment-info {
-	color: #777;
-}
-
-/*
- *	lib/css/legacy/fields.css
- */
-/* Documents */
-
-.frm_field_table {
-        width: 100%;
-        border-collapse: collapse;
-}
-
-.datalabelcell { 
-        padding: 2px 0px; 
-        width: 160px; 
-        vertical-align: top; 
-}
-.datainputcell { padding: 2px 0px; }
-
-
-.help ol {
-	padding-left: 19px;
-}
-
-.field_description_top {
-	margin-bottom: 3px;
-}
-
-.input_area input, select, textarea { 
-	font-size: 14px;
-	padding: 2px;
-
-	-webkit-border-radius: 3px;
-	-moz-border-radius: 3px;
-	border-radius: 3px;
-}
-
-.input_area input { 
-	width: 80%; 
-	margin: 0px; 
-}
-.input_area select { 
-	width: 80%; 
-}
-.input_area textarea { 
-	width: 90%; 
-}
-
-.disp_area { 
-	width: 80%; 
-	padding: 2px 0px; 
-	font-size: 12px; 
-	background-color: #eee;
-	padding: 2px;
-	border: 1px solid #ddd;
-	
-	-webkit-border-radius: 3px;
-	-moz-border-radius: 3px;
-	border-radius: 3px;	
-}
-.disp_area_no_val { 
-	min-height: 14px; 
-}
-
-.no_img {
-	padding: 40px;
-	width: 100px;
-	height: 20px;
-	color: #888;
-	text-align: center;
-	border: 1px solid #AAA;
-}
-
-.input-mandatory {
-	font-size: 14px !important;
-	font-weight: bold;
-}
-
-.field-to-update {
-	background-color:#FEE;
-}
-
-.field-has-error {
-	border: 2px solid #C00;
-}
-
-/*
- *	lib/css/legacy/grid.css
- */
-
-.grid_wrapper {
-	position: relative;
-	overflow: auto;
-	border: 1px solid #AAA;
-	width: 100%;
-	margin-bottom: 8px;
-	background-color: #f8f8f8;	
-}
-
-div.grid_tbarlinks {
-	border-bottom: 0px;
-	padding: 4px 4px 2px 4px;
-	width: 190px;
-	float: right;
-	margin-right: 12px;
-
-	-webkit-border-top-left-radius: 5px;
-	-webkit-border-top-right-radius: 5px;
-	-moz-border-radius-topleft: 5px;
-	-moz-border-radius-topright: 5px;
-	border-top-left-radius: 5px;
-	border-top-right-radius: 5px;
-
-	background: #dddddd; /* Old browsers */
-	background: -moz-linear-gradient(top,  #dddddd 0%, #bbbbbb 100%); /* FF3.6+ */
-	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#dddddd), color-stop(100%,#bbbbbb)); /* Chrome,Safari4+ */
-	background: -webkit-linear-gradient(top,  #dddddd 0%,#bbbbbb 100%); /* Chrome10+,Safari5.1+ */
-	background: -o-linear-gradient(top,  #dddddd 0%,#bbbbbb 100%); /* Opera 11.10+ */
-	background: -ms-linear-gradient(top,  #dddddd 0%,#bbbbbb 100%); /* IE10+ */
-	background: linear-gradient(to bottom,  #dddddd 0%,#bbbbbb 100%); /* W3C */
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dddddd', endColorstr='#bbbbbb',GradientType=0 ); /* IE6-9 */
-
-}
-
-.grid_tab_wrapper {
-	position: absolute;
-	top: 40px;
-	border-bottom: 1px solid #DDD;
-}
-
-.grid_table, .grid_head_table  {
-	table-layout: fixed;
-	border-collapse: collapse;
-	/*width: 100%;*/
-}
-
-.grid_cell {
-	border-right: 1px solid #ddd;
-	padding: 0px;
-	background-color: #fff;
-}
-
-.grid_head_wrapper {
-	position: absolute;
-	z-index: 1;
-	height: 40px;
-	padding: 0px;
-	overflow: hidden;
-	/*background-color: #fff;*/
-}
-
-.grid_head_table td {
-	border-right: 1px solid #AAA;
-	border-bottom: 1px solid #AAA;
-	height: 40px;
-	padding: 0px;
-
-	background: #eeeeee; /* Old browsers */
-	background: -moz-linear-gradient(top,  #eeeeee 0%, #cccccc 100%); /* FF3.6+ */
-	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eeeeee), color-stop(100%,#cccccc)); /* Chrome,Safari4+ */
-	background: -webkit-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* Chrome10+,Safari5.1+ */
-	background: -o-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* Opera 11.10+ */
-	background: -ms-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* IE10+ */
-	background: linear-gradient(to bottom,  #eeeeee 0%,#cccccc 100%); /* W3C */
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#cccccc',GradientType=0 ); /* IE6-9 */
-}
-
-.grid_head_table td div {
-	color: #222;
-	font-weight: bold;
-	overflow: hidden;
-	padding: 2px 0px;
-	text-align: center;	
-}
-
-.grid_selector {
-	padding: 1px;
-	border-right: 1px solid #DDD;
-	width: 20px;
-	background-color: #fff;
-}
-
-.grid_cell_div {
-	padding: 2px;
-	cursor: pointer;
-	overflow: hidden;
-	border: 2px solid #FFF;
-}
-
-.grid_cell_div_selected {
-	border: 2px solid #88f;
-}
-
-.grid_cell_div input, .grid_cell_div select, .grid_cell_div div input {
-	margin: 0px;
-	border: 0px;
-	width: 100%;
- 	margin: 0px;
- }
-
-.grid_cell_div textarea {
-	border: 3px solid #abf;
-	height:200px;
-	width: 300px;
-	z-index: 10;
-	position:absolute;
-}
-
-.gridDivSelected option { border: 0px; }
-
-/*
- *	lib/css/legacy/listing.css
- */
-
-
-/* SRS */
-
-table.srs_result_tab {
-	border: 2px solid #AAA;
-	border-collapse: collapse;
-}
-
-/* firefox bug fix for disappering borders */
-table.srs_result_tab td, table.srs_result_tab tr, table.srs_result_tab tbody, table.srs_result_tab div {
-	position: static;
-}
-
-table.srs_result_tab td {
-	padding: 3px 2px;
-	position: static;
-}
-
-div.srs_body_area {
-}
-
-div.srs_results_area {
-}
-
-div.srs_filter_wrapper {
-	border: 1px solid #CCF;
-	
-	background-color: #EEF;
-	margin:0px 0px 8px 0px;
-
-	-moz-border-radius: 5px;
-	-webkit-border-radius: 5px;
-	border-radius: 5px;
-}
-
-div.srs_filter_area {
-	padding: 8px;
-}
-
-div.srs_filter_area td {
-	vertical-align: middle;
-}
-
-/*
- *	lib/css/legacy/report.css
- */
-
-/* Reports */
-
-div.report_grid_area {
-	position: relative;
-	padding: 8px;
-}
-
-
-div.report_tab { 
-	border: 1px solid #AAA; 
-	position: relative; 
-	overflow: auto; 
-}
-
-div.report_no_data {
-	padding: 8px;
-	background-color: #EEE;
-	border: 1px solid #DDD;
-	position: absolute;
-	margin-left: 40%;
-	margin-top: 50px;
-	display: none;	
-}
-
-div.report_htitle {
-	float: left;
-	padding: 2px;
-	font-size: 14px;
-	font-weight: bold;
-	margin-left: 4px;
-	color: #665;
-	/*font-weight: bold;*/
-}
-
-div.report_tbar {
-	background-color: #EEF;
-	border: 1px solid #CCF;
-	border-bottom: 0px;
-	height: 28px;
-}
-
-div.report_tbar table{
-	width: 100%;
-}
-div.report_tbar table td {
-	
-}
-div.report_tbar table td div {
-	position: relative;
-}
-div.report_tbar button, div.report_tbar select, div.report_tbar img {
-	font-size: 11px;
-	margin: 0px;
-}
-
-div.report_head_wrapper {
-	position: absolute;
-	height: 24px;
-	top: 0px;
-	z-index: 1;
-}
-
-div.report_tab_wrapper {
-	position: absolute;
-	border-bottom: 1px solid #AAA;
-	border-top: 1px solid #AAA;
-}
-
-div.report_tab_wrapper table, div.report_head_wrapper table {
-	table-layout: fixed;
-	border-collapse: collapse;
-	/*width: 100%;*/
-}
-
-div.report_tab_wrapper table td, div.report_head_wrapper table td {
-	border-left: 1px solid #AAA;
-	border-right: 1px solid #AAA;
-	border-bottom: 1px solid #AAA;
-	overflow: hidden;
-	padding: 0px;
-}
-
-div.report_tab_wrapper table td div, div.report_head_wrapper table td div {
-	padding: 3px;
-	overflow: hidden;
-}
-
-.report_head_cell {
-	background-color: #EEE;
-	border-bottom: 1px solid #AA9;
-	text-align: center;
-	font-weight: bold;
-}
-.report_head_cell div {
-	color:#222; 
-	height: 18px;
-}
-
-
-/* FINDER */
-
-div.finder_wrapper {
-}
-
-div.finder_body_area {
-	margin: 16px;
-}
-
-div.finder_body {
-	display: none;
-}
-
-div.finder_advanced_area table {
-	width: 80%;
-}
-
-div.finder_advanced_area textarea {
-	width: 80%;
-}
-
-div.finder_filter_area {
-	position: relative;
-}
-
-div.filter_head {
-	font-size: 14px;
-	margin-bottom: 2px;
-}
-div.filter_dt_head {
-	font-size: 14px;
-	font-weight: bold;
-	margin-bottom: 2px;
-}
-table.filter_tab {
-	width: 96%;
-	border-collapse: collapse;
-}
-
-table.filter_tab td {
-	width: 50%;
-}
-
-div.finder_picker_area {
-	
-}
-div.builder_field {
-	margin: 0px;
-}
-div.builder_dt_head {
-	font-size: 14px;
-	font-weight: bold;
-	margin-bottom: 2px;
-}
-
-div.builder_field table {
-	width: 90%;
-	border-collapse: collapse;
-}
-
-div.builder_label {
-	height: 20px;
-}
-
-div.builder_head {
-	font-size: 16px;
-	font-weight: bold;
-	color: #AB6;
-}
-
-table.builder_tab {
-	width: 96%;
-	border-collapse: collapse;
-}
-
-table.builder_tab td {
-	width: 33%;
-	padding: 2px;
-}
-
-/*
- *	lib/css/legacy/dialog.css
- */
-/***** Dialogs *******/
-
-div.dialog_wrapper {
-	position: absolute;
-	width: 440px;
-	display: none;
-	z-index: 90;
-	background-color: #FFF;
-	box-shadow:1px 1px 8px #444;
-	-moz-box-shadow: 1px 1px 8px #444;
-	-webkit-box-shadow: 1px 1px 8px #444;
-	
-	border-radius: 5px;
-	-moz-border-radius: 5px;
-	-webkit-border-radius: 5px;
-	
-	overflow: hidden;
-}
-
-div.dialog_head {
-	height: 22px;
-	padding: 4px;
-	background-color: #222;
-	color: #FFF;
-}
-
-div.dialog_body {
-	padding: 8px 8px 16px;
-	border-radius: 5px;
-	-moz-border-radius: 5px;
-	-webkit-border-radius: 5px;	
-}
-
-div.dialog_back {
-	position: fixed;
-	display: none;
-	top: 0px;
-	left: 0px;
-	bottom: 0px;
-	right: 0px;
-	background-color: #aaa;
-	opacity: 0.6;
-	z-index: 50;
-	text-align: center;
-}
-
-div.dialog_message {
-	display: none;
-	position: absolute;
-	width: 250px;
-	font-size: 12px;
-	z-index: 91;
-	background-color:#FFF;
-	padding: 12px;
-	border: 1px solid #444;
-}
-
-div.dialog_row {
-	padding: 8px 8px 0px 8px;
-}
-
-div.dialog_row table {
-	width: 100%;
-}
-
-div.dialog_row table td {
-}
-
-div.dialog_row input[type="text"], div.dialog_row input[type="password"], div.dialog_row textarea, div.dialog_row select {
-	width: 80%;
-	font-size: 14px;
-}
-
-div.dialog_row table td textarea {
-	width: 80%;
-	height: 200px;
-	font-size: 12px;
-}
-
-
-/*
- *	lib/css/legacy/tabs.css
- */
-
-/******* TABS ********/
-
-div.box_label_wrapper {
-	border-bottom: 6px solid #777;
-}
-
-div.box_label_body {
-	height: 22px;
-}
-
-ul.box_tabs {
-	margin: 0px;
-	padding: 0px;
-	list-style: none;
-}
-
-ul.box_tabs li {
-	height: 22px;
-	float:left;
-	font-size: 12px;
-	text-decoration: underline;
-	
-	background-color: #DDD;
-	
-	margin:0;
-	margin-left: 4px;
-	padding:0 0 0 9px;
-	cursor: pointer;
-}
-
-ul.box_tabs li a {
-	display:block;
-	padding:3px 15px 3px 6px;
-	text-decoration: none;
-}
-
-ul.box_tabs li.box_tab_mouseover {
-	background-color: #BBB;
-}
-
-ul.box_tabs li.box_tab_selected {	
-	background-color: #777;
-	
-	background: -webkit-gradient(linear, left top, left bottom, from(#999), to(#777));
-	background: -moz-linear-gradient(top, #999, #777);
-		
-	color: #FFF;
-	font-weight:bold;
-	
-}
-ul.box_tabs li.box_tab_selected a {
-	color: #fff;
-}
-
-/*
- *	lib/css/legacy/sidebar.css
- */
-div.psidebar {
-}
-
-div.psidebar div.head {
-	font-size: 14px;
-	font-weight: bold;
-	color: #555;
-	margin-bottom: 12px;
-}
-
-div.psidebar div.section {
-	margin-bottom: 11px;
-	overflow: hidden;
-}
-
-div.psidebar div.section-head {
-	padding: 5px 11px;
-	border-bottom: 1px solid #aaa;
-}
-
-div.psidebar div.section-body {
-	margin: 7px 11px 11px 11px;
-}
-
-div.psidebar div.section-item {
-	margin-bottom: 7px;
-}
-
-div.psidebar div.section-item, div.psidebar .section-link {
-	color: #666;
-}
-
-/*
- *	lib/css/ui/common.css
- */
-.navbar-icon-home {
-	vertical-align: middle;
-	opacity: 0.4;
-	Filter:alpha(opacity=40); /* For IE8 and earlier */
-}
-
-.navbar-icon-home:hover,
-.navbar-icon-home:focus,
-.navbar-icon-home:active,
-.navbar-icon-home-hover{
-	opacity:1;
-	Filter:alpha(opacity=100); /* For IE8 and earlier */
-}
-
-
-/*
- *	lib/css/ui/list.css
- */
-.hide {
-	display: none;
-}
-
-.list-filters {
-	margin: 7px 0px;
-}
-
-.wnlist .img-load {
-	display: none;
-	float: left;
-	margin-bottom: 8px;
-}
-
-/* list-row */
-div.list-row {
-	border-bottom: 1px solid #ddd;
-	padding: 5px 0px;
-}
-
-div.list-row .label {
-	margin-right: 4px;
-}
-
-div.list-row table {
-	table-layout: fixed;
-	border-collapse: collapse;
-	width: 100%;
-}
-
-div.list-row table td {
-	overflow: hidden;
-	/*padding-right: 3px;*/
-	padding: 0px 3px;
-	vertical-align: middle;
-	height: 24px;
-	max-height: 24px;
-	word-wrap: break-word;
-}
-
-div.paging-button {
-	text-align: center;
-	padding: 11px 0px;
-}
-
-div.show_filters {
-	display: none;
-}
-
-div.filter_list {
-	padding: 13px;
-}
-
-div.show_filters.well {
-	margin-top: 11px;
-	margin-bottom: 11px;
-}
-
-div.filter_list .run_btn {
-	text-align: right;
-}
-
-div.filter_list .add_filter {
-	margin: 3px 0px;
-}
-
-div.list_filter {
-	margin: 7px 0px;
-}
-
-div.list_filter input, div.list_filter select {
-	width: 130px;
-	margin-right: 7px;
-}
-
-/* bar */
-
-span.bar-outer {
-	display: inline-block;
-	margin: 0px 7px;
-	margin-top: 3px;
-	background-color: #fff;
-	border: 1px solid #aaa;
-	height: 10px;
-}
-
-span.bar-inner {
-	display: inline-block;
-	background-color: #bdf;
-	height: 100%;
-	margin-bottom: 2px;
-	float: left;
-}
-span.bar-complete {
-	background-color: #009900;
-}
-span.bar-empty {
-	background-color: #990000;
-}
-
-
-/* stats */
-
-div.stat-wrapper {
-	margin-bottom: 19px;
-}
-
-div.stat-grid {
-	margin-top: 9px;
-	overflow: hidden;
-}
-
-div.stat-label {
-	position: relative;
-	padding: 3px;
-	text-align: center;
-	font-size: 11px;
-}
-div.stat-label, div.stat-label a {
-	z-index: 5;
-}
-
-div.stat-item {
-	position: relative;
-	margin-bottom: 7px;
-	background-color: #fff;
-	height: 18px;
-	border: 1px solid #aaa;
-	border-radius: 9px;
-	-webkit-border-radius: 9px;
-	-moz-border-radius: 9px;
-	overflow: hidden;
-}
-
-div.stat-bar {
-	position: absolute;
-	left: 0px;
-	height: 100%;
-	z-index: 0;
-	/* So that this div is also curved like the enclosing one */
-	border-radius: 9px;
-	-webkit-border-radius: 9px;
-	-moz-border-radius: 9px;
-
-	background: #e0ff84; /* Old browsers */
-	background: -moz-linear-gradient(top,  #e0ff84 0%, #a4e567 100%); /* FF3.6+ */
-	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e0ff84), color-stop(100%,#a4e567)); /* Chrome,Safari4+ */
-	background: -webkit-linear-gradient(top,  #e0ff84 0%,#a4e567 100%); /* Chrome10+,Safari5.1+ */
-	background: -o-linear-gradient(top,  #e0ff84 0%,#a4e567 100%); /* Opera 11.10+ */
-	background: -ms-linear-gradient(top,  #e0ff84 0%,#a4e567 100%); /* IE10+ */
-	background: linear-gradient(top,  #e0ff84 0%,#a4e567 100%); /* W3C */
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e0ff84', endColorstr='#a4e567',GradientType=0 ); /* IE6-9 */
-}
-
-/*
- *	lib/css/ui/views.css
- */
-
-.breadcrumb-area, .breadcrumb-area span {
-	vertical-align: middle;
-}
-
-div.appframe-titlebar {
-	padding: 6px;
-	background: #eeeeee; /* Old browsers */
-	background: -moz-linear-gradient(top,  #eeeeee 0%, #cccccc 100%); /* FF3.6+ */
-	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eeeeee), color-stop(100%,#cccccc)); /* Chrome,Safari4+ */
-	background: -webkit-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* Chrome10+,Safari5.1+ */
-	background: -o-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* Opera 11.10+ */
-	background: -ms-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* IE10+ */
-	background: linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* W3C */
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#cccccc',GradientType=0 ); /* IE6-9 */
-	border-bottom: 1px solid #aaa;
-	min-height: 1.2em;
-	border-radius: 5px 5px 0px 0px;
-	-webkit-border-radius: 5px 5px 0px 0px;
-	-moz-border-radius: 5px 5px 0px 0px;
-
-	text-shadow: 0px 1px 1px #fff;
-	color: #555;
-}
-
-span.appframe-title {
-	font-size: 160%;
-	font-weight: bold;
-}
-
-div.appframe-toolbar {
-	padding: 4px;
-	background: #eeeeee;
-	border-top: 1px solid #f8f8f8;
-	border-bottom: 1px solid #ccc;
-}
-
-div.appframe-toolbar .label {
-	margin: 2px 2px;
-}
-
-div.appframe-toolbar input, div.appframe-toolbar select {
-	font-size: 80%;
-	margin: 2px 2px;
-}
-div.appframe-toolbar button {
-	padding: 3px 7px !important;
-}
-
-
-
-/*
- *	lib/css/ui/fonts.css
- */
-@font-face {
-  font-family: 'Pontano Sans';
-  font-style: normal;
-  font-weight: 800;
-  src: url('fonts/pontanosans.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Droid Sans';
-  font-style: normal;
-  font-weight: normal;
-  src: local('Droid Sans'), local('DroidSans'), url('fonts/droidsans.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'PT Sans';
-  font-style: normal;
-  font-weight: normal;
-  src: local('PT Sans'), local('PTSans-Regular'), url('fonts/ptsans.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Open Sans';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Open Sans'), local('OpenSans'), url('fonts/opensans.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Lato';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Lato Regular'), local('Lato-Regular'), url('fonts/lato.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Cabin';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Cabin Regular'), local('Cabin-Regular'), url('fonts/cabin.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Pacifico';
-  font-style: normal;
-  font-weight: normal;
-  src: local('Pacifico Regular'), local('Pacifico-Regular'), url('fonts/pacifico.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Oleo Script';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Oleo Script'), local('OleoScript-Regular'), url('fonts/oleoscript.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Cookie';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Cookie-Regular'), url('fonts/cookie.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Marck Script';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Marck Script'), local('MarckScript-Regular'), url('fonts/marckscript.woff') format('woff');
-}
-
-
-/*
- *	lib/js/lib/Aristo/aristo.selected.css
- */
-/*
- * jQuery UI CSS Framework 1.8.7
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
-
-
-/*
- * jQuery UI CSS Framework 1.8.7
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- *
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller
- */
-
-
-/* Component containers
-----------------------------------*/
-.ui-widget { font-family: Arial,sans-serif; font-size: 1.1em; }
-.ui-widget .ui-widget { font-size: 1em; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial,sans-serif; font-size: 1em; }
-.ui-widget-content { border: 1px solid #B6B6B6; background: #ffffff; color: #4F4F4F; }
-.ui-widget-content a { color: #4F4F4F; }
-.ui-widget-header { border: 1px solid #B6B6B6; color: #4F4F4F; font-weight: bold; }
-.ui-widget-header {
-	background: #ededed url(../js/lib/Aristo/images/bg_fallback.png) 0 0 repeat-x; /* Old browsers */
-		background: -moz-linear-gradient(top, #ededed 0%, #c4c4c4 100%); /* FF3.6+ */
-		background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ededed), color-stop(100%,#c4c4c4)); /* Chrome,Safari4+ */
-		background: -webkit-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Chrome10+,Safari5.1+ */
-		background: -o-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Opera11.10+ */
-		background: -ms-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* IE10+ */
-		background: linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* W3C */
-}
-.ui-widget-header a { color: #4F4F4F; }
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #B6B6B6; font-weight: normal; color: #4F4F4F; }
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { 
-	background: #ededed url(../js/lib/Aristo/images/bg_fallback.png) 0 0 repeat-x; /* Old browsers */
-		background: -moz-linear-gradient(top, #ededed 0%, #c4c4c4 100%); /* FF3.6+ */
-		background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ededed), color-stop(100%,#c4c4c4)); /* Chrome,Safari4+ */
-		background: -webkit-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Chrome10+,Safari5.1+ */
-		background: -o-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* Opera11.10+ */
-		background: -ms-linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* IE10+ */
-		background: linear-gradient(top, #ededed 0%,#c4c4c4 100%); /* W3C */
-	-webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset;
-	-moz-box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset;
-	box-shadow: 0 1px 0 rgba(255,255,255,0.6) inset;
-}
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #4F4F4F; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #9D9D9D; font-weight: normal; color: #313131; }
-.ui-state-hover a, .ui-state-hover a:hover { color: #313131; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { 
-	outline: none;
-	color: #1c4257; border: 1px solid #7096ab;
-	background: #ededed url(../js/lib/Aristo/images/bg_fallback.png) 0 -50px repeat-x; /* Old browsers */
-		background: -moz-linear-gradient(top, #b9e0f5 0%, #92bdd6 100%); /* FF3.6+ */
-		background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b9e0f5), color-stop(100%,#92bdd6)); /* Chrome,Safari4+ */
-		background: -webkit-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Chrome10+,Safari5.1+ */
-		background: -o-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* Opera11.10+ */
-		background: -ms-linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* IE10+ */
-		background: linear-gradient(top, #b9e0f5 0%,#92bdd6 100%); /* W3C */
-	-webkit-box-shadow: none;
-	-moz-box-shadow: none;
-	box-shadow: none;
-}
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #313131; text-decoration: none; }
-.ui-widget :active { outline: none; }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  { border: 1px solid #d2dbf4; background: #f4f8fd; color: #0d2054; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; }
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #e2d0d0; background: #fcf0f0; color: #280b0b; -moz-border-radius: 0 !important; -webkit-border-radius: 0 !important; border-radius: 0 !important; }
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
-.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
-.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
-.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
-.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { width: 16px; height: 16px; background-image: url(../js/lib/Aristo/images/ui-icons_222222_256x240.png); }
-.ui-widget-content .ui-icon {background-image: url(../js/lib/Aristo/images/ui-icons_222222_256x240.png); }
-.ui-widget-header .ui-icon {background-image: url(../js/lib/Aristo/images/ui-icons_222222_256x240.png); }
-.ui-state-default .ui-icon { background-image: url(../js/lib/Aristo/images/ui-icons_454545_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(../js/lib/Aristo/images/ui-icons_454545_256x240.png); }
-.ui-state-active .ui-icon {background-image: url(../js/lib/Aristo/images/ui-icons_454545_256x240.png); }
-.ui-state-highlight .ui-icon {background-image: url(../js/lib/Aristo/images/ui-icons_454545_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background: url(../js/lib/Aristo/images/icon_sprite.png) -16px 0 no-repeat !important; }
-.ui-state-highlight .ui-icon, .ui-state-error .ui-icon { margin-top: -1px; }
-
-/* positioning */
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background: url(../js/lib/Aristo/images/icon_sprite.png) 0 0 no-repeat !important; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-off { background-position: -96px -144px; }
-.ui-icon-radio-on { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; }
-.ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; }
-.ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; }
-.ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; }
-.ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; }
-.ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; }
-.ui-corner-right {  -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; }
-.ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; }
-.ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; }
-
-/* Overlays */
-.ui-widget-overlay { background: #262b33; opacity: .70;filter:Alpha(Opacity=70); }
-.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #000000; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
-
-/*
- * jQuery UI Autocomplete 1.8.7
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Autocomplete#theming
- */
-.ui-autocomplete {
-	position: absolute; cursor: default; z-index: 3;
-		-moz-border-radius: 0; 
-		-webkit-border-radius: 0;
-		border-radius: 0;
-			-moz-box-shadow: 0 1px 5px rgba(0,0,0,0.3);
-			-webkit-box-shadow: 0 1px 5px rgba(0,0,0,0.3);
-			box-shadow: 0 1px 5px rgba(0,0,0,0.3);
-}	
-
-/* workarounds */
-* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
-
-/*
- * jQuery UI Menu 1.8.7
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Menu#theming
- */
-.ui-menu {
-	list-style:none;
-	padding: 2px;
-	margin: 0;
-	display:block;
-	float: left;
-}
-.ui-menu .ui-menu {
-	margin-top: -3px;
-}
-.ui-menu .ui-menu-item {
-	margin:0;
-	padding: 0;
-	zoom: 1;
-	float: left;
-	clear: left;
-	width: 100%;
-}
-.ui-menu .ui-menu-item a {
-	text-decoration:none;
-	display:block;
-	padding:.2em .4em;
-	line-height:1.5;
-	zoom:1;
-}
-.ui-menu .ui-menu-item a.ui-state-hover,
-.ui-menu .ui-menu-item a.ui-state-active {
-	font-weight: normal;
-	margin: -1px;
-	background: #5f83b9;
-	color: #FFFFFF;
-	border-color: #466086;
-		-moz-border-radius: 0; 
-		-webkit-border-radius: 0;
-		border-radius: 0;
-}
-
-/*
- * jQuery UI Datepicker 1.8.7
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker#theming
- */
-.ui-datepicker { width: 17em; padding: 0; display: none; border-color: #DDDDDD; }
-.ui-datepicker {
-	-moz-box-shadow: 0 4px 8px rgba(0,0,0,0.5);
-	-webkit-box-shadow: 0 4px 8px rgba(0,0,0,0.5);
-	box-shadow: 0 4px 8px rgba(0,0,0,0.5);
-}
-.ui-datepicker .ui-datepicker-header { position:relative; padding:.35em 0; border: none; border-bottom: 1px solid #B6B6B6; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; }
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 6px; width: 1.8em; height: 1.8em; }
-.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { border: 1px none; }
-.ui-datepicker .ui-datepicker-prev { left:2px; }
-.ui-datepicker .ui-datepicker-next { right:2px; }
-.ui-datepicker .ui-datepicker-prev span { background-position: 0px -32px !important; }
-.ui-datepicker .ui-datepicker-next span { background-position: -16px -32px !important; }
-.ui-datepicker .ui-datepicker-prev-hover span { background-position: 0px -48px !important; }
-.ui-datepicker .ui-datepicker-next-hover span { background-position: -16px -48px !important; }
-.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; background: url(../js/lib/Aristo/images/icon_sprite.png) no-repeat; }
-.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; font-size: 12px; text-shadow: 0 1px 0 rgba(255,255,255,0.6); }
-.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
-.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month, 
-.ui-datepicker select.ui-datepicker-year { width: 49%;}
-.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
-.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
-.ui-datepicker td { border: 0; padding: 1px; }
-.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
-.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
-.ui-datepicker table .ui-state-highlight { border-color: #5F83B9; }
-.ui-datepicker table .ui-state-hover { background: #5F83B9; color: #FFF; font-weight: bold; text-shadow: 0 1px 1px #234386; -webkit-box-shadow: 0 0px 0 rgba(255,255,255,0.6) inset; -moz-box-shadow: 0 0px 0 rgba(255,255,255,0.6) inset; box-shadow: 0 0px 0 rgba(255,255,255,0.6) inset; border-color: #5F83B9; }
-.ui-datepicker-calendar .ui-state-default { background: transparent; border-color: #FFF; }
-.ui-datepicker-calendar .ui-state-active { background: #5F83B9; border-color: #5F83B9; color: #FFF; font-weight: bold; text-shadow: 0 1px 1px #234386; }
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi { width:auto; }
-.ui-datepicker-multi .ui-datepicker-group { float:left; }
-.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
-.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
-.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
-.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; }
-
-/* RTL support */
-.ui-datepicker-rtl { direction: rtl; }
-.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-datepicker-cover {
-    display: none; /*sorry for IE5*/
-    display/**/: block; /*sorry for IE5*/
-    position: absolute; /*must have*/
-    z-index: -1; /*must have*/
-    filter: mask(); /*must have*/
-    top: -4px; /*must have*/
-    left: -4px; /*must have*/
-    width: 200px; /*must have*/
-    height: 200px; /*must have*/
-}
-
-
-
-/*
- *	erpnext/startup/startup.css
- */
-h1, h2, h3, h4, h5 {
-	font-family: Arial, Helvetica, sans-serif;
-	margin-top: 0.2em;
-}
-
-body {
-	font-family: Arial, Helvetica, sans-serif;
-	font-size: 13px;
-}
-
-span, div, td, input, textarea, button, select {
-	font-family: inherit;
-}
-
-.small {
-	font-size: 11.5px;
-}
-
-.erpnext-footer {
-	margin: 11px auto;
-	text-align: center;
-}
-
-.navbar-new-comments {
-	margin: -3px 0px;
-	padding: 2px;
-	min-width: 20px;
-	text-align: center;
-	display: inline-block;
-	border-radius: 2px;
-	color: #999999;
-	background-color: #333131;
-}
-
-.navbar-new-comments:hover,
-.navbar-new-comments:active,
-.navbar-new-comments:focus {
-	color: #fff;
-}
-
-.navbar-new-comments-true {
-	color: #fff;
-	background-color: #B00D07;
-}
-
-/*extra size menus for recent*/
-.dropdown-menu#toolbar-recent, .dropdown-menu#toolbar-options, .dropdown-menu#toolbar-help{
-	min-width: 160px !important;
-	max-width: 260px !important;
-}
-
-.expiry-info {
-	margin-top: 40px;
-	margin-bottom: -40px;
-	text-align: center;
-	background-color: rgb(255, 255, 204);
-	padding: 7px;
-	z-index: 1;
-}
-
-.show-all-reports {
-	margin-top: 5px;
-	font-size: 11px;
-}
diff --git a/public/css/all-web.css b/public/css/all-web.css
deleted file mode 100644
index e38859e..0000000
--- a/public/css/all-web.css
+++ /dev/null
@@ -1,2794 +0,0 @@
-
-/*
- *	lib/css/bootstrap/headings.css
- */
-/* heading from bootstrap */
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  margin: 0;
-  font-weight: bold;
-  color: #333333;
-  text-rendering: optimizelegibility;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  font-weight: normal;
-  color: #999999;
-}
-h1 {
-  font-size: 280%;
-  line-height: 120%;
-}
-h1 small {
-  font-size: 150%;
-}
-h2 {
-  font-size: 200%;
-  line-height: 120%;
-}
-h2 small {
-  font-size: 150%;
-}
-h3 {
-  font-size: 210%;
-  font-size: 150%;
-}
-h3 small {
-  font-size: 130%;
-}
-h4, h5, h6 {
-  font-size: 150%;
-}
-h4 {
-  font-size: 113%;
-}
-h4 small {
-  font-size: 100%;
-}
-h5 {
-  font-size: 100%;
-}
-h6 {
-  font-size: 11px;
-  color: #999999;
-  text-transform: uppercase;
-}
-
-/*
- *	lib/css/bootstrap/buttons.css
- */
-.close {
-  font-family: Helvetica, Sans;
-  float: right;
-  font-size: 20px;
-  font-weight: bold;
-  line-height: 18px;
-  color: #000000;
-  text-shadow: 0 1px 0 #ffffff;
-  opacity: 0.2;
-  filter: alpha(opacity=20);
-}
-.close:hover {
-  color: #000000;
-  text-decoration: none;
-  opacity: 0.4;
-  filter: alpha(opacity=40);
-  cursor: pointer;
-}
-.btn {
-  display: inline-block;
-  padding: 4px 10px 4px;
-  font-size: 13px;
-  line-height: 18px;
-  color: #333333;
-  text-align: center;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  background-color: #fafafa;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-repeat: no-repeat;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
-  border: 1px solid #ccc;
-  border-bottom-color: #bbb;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  cursor: pointer;
-  *margin-left: .3em;
-}
-.btn:first-child {
-  *margin-left: 0;
-}
-.btn:hover {
-  color: #333333;
-  text-decoration: none;
-  background-color: #e6e6e6;
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-  -moz-transition: background-position 0.1s linear;
-  -ms-transition: background-position 0.1s linear;
-  -o-transition: background-position 0.1s linear;
-  transition: background-position 0.1s linear;
-}
-.btn:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn.active, .btn:active {
-  background-image: none;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  background-color: #e6e6e6;
-  background-color: #d9d9d9 \9;
-  color: rgba(0, 0, 0, 0.5);
-  outline: 0;
-}
-.btn.disabled, .btn[disabled] {
-  cursor: default;
-  background-image: none;
-  background-color: #e6e6e6;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn-large {
-  padding: 9px 14px;
-  font-size: 15px;
-  line-height: normal;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.btn-large .icon {
-  margin-top: 1px;
-}
-.btn-small {
-  padding: 4px 9px;
-  font-size: 11px;
-  line-height: 16px;
-}
-.btn-small .icon {
-  margin-top: -1px;
-}
-.btn-primary,
-.btn-primary:hover,
-.btn-warning,
-.btn-warning:hover,
-.btn-danger,
-.btn-danger:hover,
-.btn-success,
-.btn-success:hover,
-.btn-info,
-.btn-info:hover {
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  color: #ffffff;
-}
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-.btn-primary {
-  background-color: #006dcc;
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(top, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-primary:hover,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled] {
-  background-color: #0044cc;
-}
-.btn-primary:active, .btn-primary.active {
-  background-color: #003399 \9;
-}
-.btn-warning {
-  background-color: #faa732;
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-image: -ms-linear-gradient(top, #fbb450, #f89406);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(top, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-warning:hover,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  background-color: #f89406;
-}
-.btn-warning:active, .btn-warning.active {
-  background-color: #c67605 \9;
-}
-.btn-danger {
-  background-color: #da4f49;
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(top, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-danger:hover,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  background-color: #bd362f;
-}
-.btn-danger:active, .btn-danger.active {
-  background-color: #942a25 \9;
-}
-.btn-success {
-  background-color: #5bb75b;
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-image: -ms-linear-gradient(top, #62c462, #51a351);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(top, #62c462, #51a351);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-success:hover,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  background-color: #51a351;
-}
-.btn-success:active, .btn-success.active {
-  background-color: #408140 \9;
-}
-.btn-info {
-  background-color: #49afcd;
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(top, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.btn-info:hover,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  background-color: #2f96b4;
-}
-.btn-info:active, .btn-info.active {
-  background-color: #24748c \9;
-}
-button.btn, input[type="submit"].btn {
-  *padding-top: 2px;
-  *padding-bottom: 2px;
-}
-button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-button.btn.large, input[type="submit"].btn.large {
-  *padding-top: 7px;
-  *padding-bottom: 7px;
-}
-button.btn.small, input[type="submit"].btn.small {
-  *padding-top: 3px;
-  *padding-bottom: 3px;
-}
-.btn-group {
-  position: relative;
-  *zoom: 1;
-  *margin-left: .3em;
-}
-.btn-group:before, .btn-group:after {
-  display: table;
-  content: "";
-}
-.btn-group:after {
-  clear: both;
-}
-.btn-group:first-child {
-  *margin-left: 0;
-}
-.btn-group + .btn-group {
-  margin-left: 5px;
-}
-.btn-toolbar {
-  margin-top: 9px;
-  margin-bottom: 9px;
-}
-.btn-toolbar .btn-group {
-  display: inline-block;
-  *display: inline;
-  /* IE7 inline-block hack */
-
-  *zoom: 1;
-}
-.btn-group .btn {
-  position: relative;
-  float: left;
-  margin-left: -1px;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.btn-group .btn:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 4px;
-  -moz-border-radius-topleft: 4px;
-  border-top-left-radius: 4px;
-  -webkit-border-bottom-left-radius: 4px;
-  -moz-border-radius-bottomleft: 4px;
-  border-bottom-left-radius: 4px;
-}
-.btn-group .btn:last-child, .btn-group .dropdown-toggle {
-  -webkit-border-top-right-radius: 4px;
-  -moz-border-radius-topright: 4px;
-  border-top-right-radius: 4px;
-  -webkit-border-bottom-right-radius: 4px;
-  -moz-border-radius-bottomright: 4px;
-  border-bottom-right-radius: 4px;
-}
-.btn-group .btn.large:first-child {
-  margin-left: 0;
-  -webkit-border-top-left-radius: 6px;
-  -moz-border-radius-topleft: 6px;
-  border-top-left-radius: 6px;
-  -webkit-border-bottom-left-radius: 6px;
-  -moz-border-radius-bottomleft: 6px;
-  border-bottom-left-radius: 6px;
-}
-.btn-group .btn.large:last-child, .btn-group .large.dropdown-toggle {
-  -webkit-border-top-right-radius: 6px;
-  -moz-border-radius-topright: 6px;
-  border-top-right-radius: 6px;
-  -webkit-border-bottom-right-radius: 6px;
-  -moz-border-radius-bottomright: 6px;
-  border-bottom-right-radius: 6px;
-}
-.btn-group .btn:hover,
-.btn-group .btn:focus,
-.btn-group .btn:active,
-.btn-group .btn.active {
-  z-index: 2;
-}
-.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group .dropdown-toggle {
-  padding-left: 8px;
-  padding-right: 8px;
-  -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  *padding-top: 5px;
-  *padding-bottom: 5px;
-}
-.btn-group.open {
-  *z-index: 1000;
-}
-.btn-group.open .dropdown-menu {
-  display: block;
-  margin-top: 1px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.btn .caret {
-  margin-top: 7px;
-  margin-left: 0;
-}
-.btn:hover .caret, .open.btn-group .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.btn-primary .caret,
-.btn-danger .caret,
-.btn-info .caret,
-.btn-success .caret {
-  border-top-color: #ffffff;
-  opacity: 0.75;
-  filter: alpha(opacity=75);
-}
-.btn-small .caret {
-  margin-top: 4px;
-}
-
-/*
- *	lib/css/bootstrap/navbar.css
- */
-.nav {
-  margin-left: 0;
-  margin-bottom: 18px;
-  list-style: none;
-}
-.nav > li > a {
-  display: block;
-}
-.nav > li > a:hover {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav-list {
-  padding-left: 14px;
-  padding-right: 14px;
-  margin-bottom: 0;
-}
-.nav-list > li > a, .nav-list .nav-header {
-  display: block;
-  padding: 3px 15px;
-  margin-left: -15px;
-  margin-right: -15px;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.nav-list .nav-header {
-  font-size: 11px;
-  font-weight: bold;
-  line-height: 18px;
-  color: #999999;
-  text-transform: uppercase;
-}
-.nav-list > li + .nav-header {
-  margin-top: 9px;
-}
-.nav-list .active > a, .nav-list .active > a:hover {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
-  background-color: #0088cc;
-}
-.nav-list [class^="icon-"] {
-  margin-right: 2px;
-}
-.nav-tabs, .nav-pills {
-  *zoom: 1;
-}
-.nav-tabs:before,
-.nav-pills:before,
-.nav-tabs:after,
-.nav-pills:after {
-  display: table;
-  content: "";
-}
-.nav-tabs:after, .nav-pills:after {
-  clear: both;
-}
-.nav-tabs > li, .nav-pills > li {
-  float: left;
-}
-.nav-tabs > li > a, .nav-pills > li > a {
-  padding-right: 12px;
-  padding-left: 12px;
-  margin-right: 2px;
-  line-height: 14px;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  padding-top: 9px;
-  padding-bottom: 9px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover {
-  border-color: #eeeeee #eeeeee #dddddd;
-}
-.nav-tabs > .active > a, .nav-tabs > .active > a:hover {
-  color: #555555;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-  cursor: default;
-}
-.nav-pills > li > a {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  margin-top: 2px;
-  margin-bottom: 2px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.nav-pills .active > a, .nav-pills .active > a:hover {
-  color: #ffffff;
-  background-color: #0088cc;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li > a {
-  margin-right: 0;
-}
-.nav-tabs.nav-stacked {
-  border-bottom: 0;
-}
-.nav-tabs.nav-stacked > li > a {
-  border: 1px solid #ddd;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.nav-tabs.nav-stacked > li:first-child > a {
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs.nav-stacked > li:last-child > a {
-  -webkit-border-radius: 0 0 4px 4px;
-  -moz-border-radius: 0 0 4px 4px;
-  border-radius: 0 0 4px 4px;
-}
-.nav-tabs.nav-stacked > li > a:hover {
-  border-color: #ddd;
-  z-index: 2;
-}
-.nav-pills.nav-stacked > li > a {
-  margin-bottom: 3px;
-}
-.nav-pills.nav-stacked > li:last-child > a {
-  margin-bottom: 1px;
-}
-.nav-tabs .dropdown-menu, .nav-pills .dropdown-menu {
-  margin-top: 1px;
-  border-width: 1px;
-}
-.nav-pills .dropdown-menu {
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.nav-tabs .dropdown-toggle .caret, .nav-pills .dropdown-toggle .caret {
-  border-top-color: #0088cc;
-  margin-top: 6px;
-}
-.nav-tabs .dropdown-toggle:hover .caret, .nav-pills .dropdown-toggle:hover .caret {
-  border-top-color: #005580;
-}
-.nav-tabs .active .dropdown-toggle .caret, .nav-pills .active .dropdown-toggle .caret {
-  border-top-color: #333333;
-}
-.nav > .dropdown.active > a:hover {
-  color: #000000;
-  cursor: pointer;
-}
-.nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > .open.active > a:hover {
-  color: #ffffff;
-  background-color: #999999;
-  border-color: #999999;
-}
-.nav .open .caret, .nav .open.active .caret, .nav .open a:hover .caret {
-  border-top-color: #ffffff;
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-
-.navbar {
-  overflow: visible;
-  margin-bottom: 18px;
-}
-.navbar-inner {
-  padding-left: 20px;
-  padding-right: 20px;
-  background-color: #2c2c2c;
-  background-image: -moz-linear-gradient(top, #333333, #222222);
-  background-image: -ms-linear-gradient(top, #333333, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
-  background-image: -webkit-linear-gradient(top, #333333, #222222);
-  background-image: -o-linear-gradient(top, #333333, #222222);
-  background-image: linear-gradient(top, #333333, #222222);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-}
-.btn-navbar {
-  display: none;
-  float: right;
-  padding: 7px 10px;
-  margin-left: 5px;
-  margin-right: 5px;
-  background-color: #2c2c2c;
-  background-image: -moz-linear-gradient(top, #333333, #222222);
-  background-image: -ms-linear-gradient(top, #333333, #222222);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
-  background-image: -webkit-linear-gradient(top, #333333, #222222);
-  background-image: -o-linear-gradient(top, #333333, #222222);
-  background-image: linear-gradient(top, #333333, #222222);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
-  border-color: #222222 #222222 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
-}
-.btn-navbar:hover,
-.btn-navbar:active,
-.btn-navbar.active,
-.btn-navbar.disabled,
-.btn-navbar[disabled] {
-  background-color: #222222;
-}
-.btn-navbar:active, .btn-navbar.active {
-  background-color: #080808 \9;
-}
-.btn-navbar .icon-bar {
-  display: block;
-  width: 18px;
-  height: 2px;
-  background-color: #f5f5f5;
-  -webkit-border-radius: 1px;
-  -moz-border-radius: 1px;
-  border-radius: 1px;
-  -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
-}
-.btn-navbar .icon-bar + .icon-bar {
-  margin-top: 3px;
-}
-.nav-collapse.collapse {
-  height: auto;
-}
-.navbar .brand:hover {
-  text-decoration: none;
-}
-.navbar .brand {
-  float: left;
-  display: block;
-  padding: 8px 20px 12px;
-  font-size: 20px;
-  font-weight: 200;
-  line-height: 1;
-  color: #ffffff;
-}
-.navbar .navbar-text {
-  margin-bottom: 0;
-  line-height: 40px;
-  color: #999999;
-}
-.navbar .navbar-text a:hover {
-  color: #ffffff;
-  background-color: transparent;
-}
-.navbar .btn, .navbar .btn-group {
-  margin-top: 5px;
-}
-.navbar .btn-group .btn {
-  margin-top: 0;
-}
-.navbar-form {
-  margin-bottom: 0;
-  *zoom: 1;
-}
-.navbar-form:before, .navbar-form:after {
-  display: table;
-  content: "";
-}
-.navbar-form:after {
-  clear: both;
-}
-.navbar-form input, .navbar-form select {
-  display: inline-block;
-  margin-top: 5px;
-  margin-bottom: 0;
-}
-.navbar-form .radio, .navbar-form .checkbox {
-  margin-top: 5px;
-}
-.navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] {
-  margin-top: 3px;
-}
-.navbar-search {
-  position: relative;
-  float: left;
-  margin-top: 6px;
-  margin-bottom: 0;
-}
-.navbar-search .search-query {
-  padding: 4px 9px;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 1;
-  color: #ffffff;
-  color: rgba(255, 255, 255, 0.75);
-  background: #666;
-  background: rgba(255, 255, 255, 0.3);
-  border: 1px solid #111;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15);
-  -webkit-transition: none;
-  -moz-transition: none;
-  -ms-transition: none;
-  -o-transition: none;
-  transition: none;
-}
-.navbar-search .search-query :-moz-placeholder {
-  color: #eeeeee;
-}
-.navbar-search .search-query::-webkit-input-placeholder {
-  color: #eeeeee;
-}
-.navbar-search .search-query:hover {
-  color: #ffffff;
-  background-color: #999999;
-  background-color: rgba(255, 255, 255, 0.5);
-}
-.navbar-search .search-query:focus, .navbar-search .search-query.focused {
-  padding: 5px 10px;
-  color: #333333;
-  text-shadow: 0 1px 0 #ffffff;
-  background-color: #ffffff;
-  border: 0;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  outline: 0;
-}
-.navbar-fixed-top {
-  position: fixed;
-  top: 0;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-}
-.navbar-fixed-top .navbar-inner {
-  padding-left: 0;
-  padding-right: 0;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.navbar .nav {
-  position: relative;
-  left: 0;
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-}
-.navbar .nav.pull-right {
-  float: right;
-}
-.navbar .nav > li {
-  display: block;
-  float: left;
-}
-.navbar .nav > li > a {
-  float: none;
-  padding: 10px 10px 11px;
-  line-height: 19px;
-  color: #999999;
-  text-decoration: none;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.navbar .nav > li > a:hover {
-  background-color: transparent;
-  color: #ffffff;
-  text-decoration: none;
-}
-.navbar .nav .active > a, .navbar .nav .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #222222;
-  background-color: rgba(0, 0, 0, 0.5);
-}
-.navbar .divider-vertical {
-  height: 40px;
-  width: 1px;
-  margin: 0 9px;
-  overflow: hidden;
-  background-color: #222222;
-  border-right: 1px solid #333333;
-}
-.navbar .nav.pull-right {
-  margin-left: 10px;
-  margin-right: 0;
-}
-.navbar .dropdown-menu {
-  margin-top: 1px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.navbar .dropdown-menu:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-  top: -7px;
-  left: 9px;
-}
-.navbar .dropdown-menu:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  position: absolute;
-  top: -6px;
-  left: 10px;
-}
-.navbar .nav .dropdown-toggle .caret, .navbar .nav .open.dropdown .caret {
-  border-top-color: #ffffff;
-}
-.navbar .nav .active .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.navbar .nav .open > .dropdown-toggle, .navbar .nav .active > .dropdown-toggle, .navbar .nav .open.active > .dropdown-toggle {
-  background-color: transparent;
-}
-.navbar .nav .active > .dropdown-toggle:hover {
-  color: #ffffff;
-}
-.navbar .nav.pull-right .dropdown-menu {
-  left: auto;
-  right: 0;
-}
-.navbar .nav.pull-right .dropdown-menu:before {
-  left: auto;
-  right: 12px;
-}
-.navbar .nav.pull-right .dropdown-menu:after {
-  left: auto;
-  right: 13px;
-}
-
-/* ajax spinner */
-.navbar #spinner {
-	display: block;
-	float: right;
-	width: 20px;
-	margin-bottom: -5px;
-	margin-top: 10px;
-	visibility: hidden;
-}
-
-.navbar-inner {
-	padding: 0px 20px;
-}
-
-
-/*
- *	lib/css/bootstrap/dropdown.css
- */
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle {
-  *margin-bottom: -3px;
-}
-.dropdown-toggle:active, .open .dropdown-toggle {
-  outline: 0;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  text-indent: -99999px;
-  *text-indent: 0;
-  vertical-align: top;
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid #000000;
-  opacity: 0.3;
-  filter: alpha(opacity=30);
-  content: "\2193";
-}
-.dropdown .caret {
-  margin-top: 8px;
-  margin-left: 2px;
-}
-.dropdown:hover .caret, .open.dropdown .caret {
-  opacity: 1;
-  filter: alpha(opacity=100);
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  float: left;
-  display: none;
-  min-width: 160px;
-  max-width: 220px;
-  _width: 160px;
-  padding: 4px 0;
-  margin: 0;
-  list-style: none;
-  background-color: #ffffff;
-  border-color: #ccc;
-  border-color: rgba(0, 0, 0, 0.2);
-  border-style: solid;
-  border-width: 1px;
-  -webkit-border-radius: 0 0 5px 5px;
-  -moz-border-radius: 0 0 5px 5px;
-  border-radius: 0 0 5px 5px;
-  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding;
-  background-clip: padding-box;
-  *border-right-width: 2px;
-  *border-bottom-width: 2px;
-}
-.dropdown-menu.bottom-up {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 2px;
-}
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 5px 1px;
-  overflow: hidden;
-  background-color: #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-  *width: 100%;
-  *margin: -5px 0 5px;
-}
-.dropdown-menu a {
-  display: block;
-  padding: 3px 15px;
-  clear: both;
-  font-weight: normal;
-  line-height: 18px;
-  color: #555555;
-  white-space: nowrap;
-}
-.dropdown-menu li > a:hover, .dropdown-menu .active > a, .dropdown-menu .active > a:hover {
-  color: #ffffff;
-  text-decoration: none;
-  background-color: #0088cc;
-}
-.dropdown.open {
-  *z-index: 1000;
-}
-.dropdown.open .dropdown-toggle {
-  color: #ffffff;
-  background: #ccc;
-  background: rgba(0, 0, 0, 0.3);
-}
-.dropdown.open .dropdown-menu {
-  display: block;
-}
-
-/*
- *	lib/css/bootstrap/tooltip.css
- */
-.tooltip {
-  position: absolute;
-  z-index: 1020;
-  display: block;
-  visibility: visible;
-  padding: 5px;
-  font-size: 11px;
-  opacity: 0;
-  filter: alpha(opacity=0);
-}
-.tooltip.in {
-  opacity: 0.8;
-  filter: alpha(opacity=80);
-}
-.tooltip.top {
-  margin-top: -2px;
-}
-.tooltip.right {
-  margin-left: 2px;
-}
-.tooltip.bottom {
-  margin-top: 2px;
-}
-.tooltip.left {
-  margin-left: -2px;
-}
-.tooltip.top .tooltip-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.tooltip.left .tooltip-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.tooltip.bottom .tooltip-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.tooltip.right .tooltip-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.tooltip-inner {
-  max-width: 200px;
-  padding: 3px 8px;
-  color: #ffffff;
-  text-align: center;
-  text-decoration: none;
-  background-color: #000000;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.tooltip-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1010;
-  display: none;
-  padding: 5px;
-}
-.popover.top {
-  margin-top: -5px;
-}
-.popover.right {
-  margin-left: 5px;
-}
-.popover.bottom {
-  margin-top: 5px;
-}
-.popover.left {
-  margin-left: -5px;
-}
-.popover.top .arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.popover.right .arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.popover.bottom .arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.popover.left .arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.popover .arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover-inner {
-  padding: 3px;
-  width: 280px;
-  overflow: hidden;
-  background: #000000;
-  background: rgba(0, 0, 0, 0.8);
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-}
-.popover-title {
-  padding: 9px 15px;
-  line-height: 1;
-  background-color: #f5f5f5;
-  border-bottom: 1px solid #eee;
-  -webkit-border-radius: 3px 3px 0 0;
-  -moz-border-radius: 3px 3px 0 0;
-  border-radius: 3px 3px 0 0;
-}
-.popover-content {
-  padding: 14px;
-  background-color: #ffffff;
-  -webkit-border-radius: 0 0 3px 3px;
-  -moz-border-radius: 0 0 3px 3px;
-  border-radius: 0 0 3px 3px;
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.popover-content p, .popover-content ul, .popover-content ol {
-  margin-bottom: 0;
-}
-
-/*
- *	lib/css/bootstrap/icons.css
- */
-[class^="icon-"],
-[class*=" icon-"] {
-  display: inline-block;
-  width: 15px;
-  height: 14px;
-  *margin-right: .3em;
-  line-height: 14px;
-  vertical-align: text-top;
-  background-image: url("../images/lib/icons/glyphicons-halflings.png");
-  background-position: 14px 14px;
-  background-repeat: no-repeat;
-}
-
-[class^="icon-"]:last-child,
-[class*=" icon-"]:last-child {
-  *margin-left: 0;
-}
-
-.icon-white {
-  background-image: url("../images/lib/icons/glyphicons-halflings-white.png");
-}
-
-.icon-glass {
-  background-position: 0      0;
-}
-
-.icon-music {
-  background-position: -24px 0;
-}
-
-.icon-search {
-  background-position: -48px 0;
-}
-
-.icon-envelope {
-  background-position: -72px 0;
-}
-
-.icon-heart {
-  background-position: -96px 0;
-}
-
-.icon-star {
-  background-position: -120px 0;
-}
-
-.icon-star-empty {
-  background-position: -144px 0;
-}
-
-.icon-user {
-  background-position: -168px 0;
-}
-
-.icon-film {
-  background-position: -192px 0;
-}
-
-.icon-th-large {
-  background-position: -216px 0;
-}
-
-.icon-th {
-  background-position: -240px 0;
-}
-
-.icon-th-list {
-  background-position: -264px 0;
-}
-
-.icon-ok {
-  background-position: -288px 0;
-}
-
-.icon-remove {
-  background-position: -312px 0;
-}
-
-.icon-zoom-in {
-  background-position: -336px 0;
-}
-
-.icon-zoom-out {
-  background-position: -360px 0;
-}
-
-.icon-off {
-  background-position: -384px 0;
-}
-
-.icon-signal {
-  background-position: -408px 0;
-}
-
-.icon-cog {
-  background-position: -432px 0;
-}
-
-.icon-trash {
-  background-position: -456px 0;
-}
-
-.icon-home {
-  background-position: 0 -24px;
-}
-
-.icon-file {
-  background-position: -24px -24px;
-}
-
-.icon-time {
-  background-position: -48px -24px;
-}
-
-.icon-road {
-  background-position: -72px -24px;
-}
-
-.icon-download-alt {
-  background-position: -96px -24px;
-}
-
-.icon-download {
-  background-position: -120px -24px;
-}
-
-.icon-upload {
-  background-position: -144px -24px;
-}
-
-.icon-inbox {
-  background-position: -168px -24px;
-}
-
-.icon-play-circle {
-  background-position: -192px -24px;
-}
-
-.icon-repeat {
-  background-position: -216px -24px;
-}
-
-.icon-refresh {
-  background-position: -240px -24px;
-}
-
-.icon-list-alt {
-  background-position: -264px -24px;
-}
-
-.icon-lock {
-  background-position: -287px -24px;
-}
-
-.icon-flag {
-  background-position: -312px -24px;
-}
-
-.icon-headphones {
-  background-position: -336px -24px;
-}
-
-.icon-volume-off {
-  background-position: -360px -24px;
-}
-
-.icon-volume-down {
-  background-position: -384px -24px;
-}
-
-.icon-volume-up {
-  background-position: -408px -24px;
-}
-
-.icon-qrcode {
-  background-position: -432px -24px;
-}
-
-.icon-barcode {
-  background-position: -456px -24px;
-}
-
-.icon-tag {
-  background-position: 0 -48px;
-}
-
-.icon-tags {
-  background-position: -25px -48px;
-}
-
-.icon-book {
-  background-position: -48px -48px;
-}
-
-.icon-bookmark {
-  background-position: -72px -48px;
-}
-
-.icon-print {
-  background-position: -96px -48px;
-}
-
-.icon-camera {
-  background-position: -120px -48px;
-}
-
-.icon-font {
-  background-position: -144px -48px;
-}
-
-.icon-bold {
-  background-position: -167px -48px;
-}
-
-.icon-italic {
-  background-position: -192px -48px;
-}
-
-.icon-text-height {
-  background-position: -216px -48px;
-}
-
-.icon-text-width {
-  background-position: -240px -48px;
-}
-
-.icon-align-left {
-  background-position: -264px -48px;
-}
-
-.icon-align-center {
-  background-position: -288px -48px;
-}
-
-.icon-align-right {
-  background-position: -312px -48px;
-}
-
-.icon-align-justify {
-  background-position: -336px -48px;
-}
-
-.icon-list {
-  background-position: -360px -48px;
-}
-
-.icon-indent-left {
-  background-position: -384px -48px;
-}
-
-.icon-indent-right {
-  background-position: -408px -48px;
-}
-
-.icon-facetime-video {
-  background-position: -432px -48px;
-}
-
-.icon-picture {
-  background-position: -456px -48px;
-}
-
-.icon-pencil {
-  background-position: 0 -72px;
-}
-
-.icon-map-marker {
-  background-position: -24px -72px;
-}
-
-.icon-adjust {
-  background-position: -48px -72px;
-}
-
-.icon-tint {
-  background-position: -72px -72px;
-}
-
-.icon-edit {
-  background-position: -96px -72px;
-}
-
-.icon-share {
-  background-position: -120px -72px;
-}
-
-.icon-check {
-  background-position: -144px -72px;
-}
-
-.icon-move {
-  background-position: -168px -72px;
-}
-
-.icon-step-backward {
-  background-position: -192px -72px;
-}
-
-.icon-fast-backward {
-  background-position: -216px -72px;
-}
-
-.icon-backward {
-  background-position: -240px -72px;
-}
-
-.icon-play {
-  background-position: -264px -72px;
-}
-
-.icon-pause {
-  background-position: -288px -72px;
-}
-
-.icon-stop {
-  background-position: -312px -72px;
-}
-
-.icon-forward {
-  background-position: -336px -72px;
-}
-
-.icon-fast-forward {
-  background-position: -360px -72px;
-}
-
-.icon-step-forward {
-  background-position: -384px -72px;
-}
-
-.icon-eject {
-  background-position: -408px -72px;
-}
-
-.icon-chevron-left {
-  background-position: -432px -72px;
-}
-
-.icon-chevron-right {
-  background-position: -456px -72px;
-}
-
-.icon-plus-sign {
-  background-position: 0 -96px;
-}
-
-.icon-minus-sign {
-  background-position: -24px -96px;
-}
-
-.icon-remove-sign {
-  background-position: -48px -96px;
-}
-
-.icon-ok-sign {
-  background-position: -72px -96px;
-}
-
-.icon-question-sign {
-  background-position: -96px -96px;
-}
-
-.icon-info-sign {
-  background-position: -120px -96px;
-}
-
-.icon-screenshot {
-  background-position: -144px -96px;
-}
-
-.icon-remove-circle {
-  background-position: -168px -96px;
-}
-
-.icon-ok-circle {
-  background-position: -192px -96px;
-}
-
-.icon-ban-circle {
-  background-position: -216px -96px;
-}
-
-.icon-arrow-left {
-  background-position: -240px -96px;
-}
-
-.icon-arrow-right {
-  background-position: -264px -96px;
-}
-
-.icon-arrow-up {
-  background-position: -289px -96px;
-}
-
-.icon-arrow-down {
-  background-position: -312px -96px;
-}
-
-.icon-share-alt {
-  background-position: -336px -96px;
-}
-
-.icon-resize-full {
-  background-position: -360px -96px;
-}
-
-.icon-resize-small {
-  background-position: -384px -96px;
-}
-
-.icon-plus {
-  background-position: -408px -96px;
-}
-
-.icon-minus {
-  background-position: -433px -96px;
-}
-
-.icon-asterisk {
-  background-position: -456px -96px;
-}
-
-.icon-exclamation-sign {
-  background-position: 0 -120px;
-}
-
-.icon-gift {
-  background-position: -24px -120px;
-}
-
-.icon-leaf {
-  background-position: -48px -120px;
-}
-
-.icon-fire {
-  background-position: -72px -120px;
-}
-
-.icon-eye-open {
-  background-position: -96px -120px;
-}
-
-.icon-eye-close {
-  background-position: -120px -120px;
-}
-
-.icon-warning-sign {
-  background-position: -144px -120px;
-}
-
-.icon-plane {
-  background-position: -168px -120px;
-}
-
-.icon-calendar {
-  background-position: -192px -120px;
-}
-
-.icon-random {
-  background-position: -216px -120px;
-}
-
-.icon-comment {
-  background-position: -240px -120px;
-}
-
-.icon-magnet {
-  background-position: -264px -120px;
-}
-
-.icon-chevron-up {
-  background-position: -288px -120px;
-}
-
-.icon-chevron-down {
-  background-position: -313px -119px;
-}
-
-.icon-retweet {
-  background-position: -336px -120px;
-}
-
-.icon-shopping-cart {
-  background-position: -360px -120px;
-}
-
-.icon-folder-close {
-  background-position: -384px -120px;
-}
-
-.icon-folder-open {
-  background-position: -408px -120px;
-}
-
-.icon-resize-vertical {
-  background-position: -432px -119px;
-}
-
-.icon-resize-horizontal {
-  background-position: -456px -118px;
-}
-
-.icon-hdd {
-  background-position: 0 -144px;
-}
-
-.icon-bullhorn {
-  background-position: -24px -144px;
-}
-
-.icon-bell {
-  background-position: -48px -144px;
-}
-
-.icon-certificate {
-  background-position: -72px -144px;
-}
-
-.icon-thumbs-up {
-  background-position: -96px -144px;
-}
-
-.icon-thumbs-down {
-  background-position: -120px -144px;
-}
-
-.icon-hand-right {
-  background-position: -144px -144px;
-}
-
-.icon-hand-left {
-  background-position: -168px -144px;
-}
-
-.icon-hand-up {
-  background-position: -192px -144px;
-}
-
-.icon-hand-down {
-  background-position: -216px -144px;
-}
-
-.icon-circle-arrow-right {
-  background-position: -240px -144px;
-}
-
-.icon-circle-arrow-left {
-  background-position: -264px -144px;
-}
-
-.icon-circle-arrow-up {
-  background-position: -288px -144px;
-}
-
-.icon-circle-arrow-down {
-  background-position: -312px -144px;
-}
-
-.icon-globe {
-  background-position: -336px -144px;
-}
-
-.icon-wrench {
-  background-position: -360px -144px;
-}
-
-.icon-tasks {
-  background-position: -384px -144px;
-}
-
-.icon-filter {
-  background-position: -408px -144px;
-}
-
-.icon-briefcase {
-  background-position: -432px -144px;
-}
-
-.icon-fullscreen {
-  background-position: -456px -144px;
-}
-
-/*
- *	lib/css/legacy/body.css
- */
-html { 
-	margin: 0px;
-	padding: 0px;
-}
-
-body {	
-	margin: 0px;
-	padding: 0px;
-	font-size: 14px;
-	color: #000;
-}
-
-/* font settings */
-
-h1, h2, h3, h4, h5 {
-	font-family: Arial, sans-serif;
-	margin-top: 0.2em;
-}
-
-body {
-	font-family: Arial, sans-serif;
-	font-size: 13px;
-	background-color: #eee;
-}
-
-footer {
-	background: #b7b7b7; /* Old browsers */
-	background: -moz-linear-gradient(top,  #b7b7b7 0%, #eeeeee 36%); /* FF3.6+ */
-	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b7b7b7), color-stop(36%,#eeeeee)); /* Chrome,Safari4+ */
-	background: -webkit-linear-gradient(top,  #b7b7b7 0%,#eeeeee 36%); /* Chrome10+,Safari5.1+ */
-	background: -o-linear-gradient(top,  #b7b7b7 0%,#eeeeee 36%); /* Opera 11.10+ */
-	background: -ms-linear-gradient(top,  #b7b7b7 0%,#eeeeee 36%); /* IE10+ */
-	background: linear-gradient(top,  #b7b7b7 0%,#eeeeee 36%); /* W3C */
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#b7b7b7', endColorstr='#eeeeee',GradientType=0 ); /* IE6-9 */
-	border-top: 1px solid #999;
-	text-align: center;
-	color: inherit;
-	padding: 10px;
-	font-size: 12px;
-	line-height: 1.7;
-}
-
-span, div, td, input, textarea, button, select {
-	font-family: inherit;
-}
-
-
-.markdown pre {
-    background-color: #F5F5F5;
-    border: 1px solid rgba(0, 0, 0, 0.15);
-    border-radius: 4px 4px 4px 4px;
-    display: block;
-    font-size: 12.025px;
-    line-height: 18px;
-    margin: 0 0 15px;
-    padding: 8.5px;
-    white-space: pre-wrap;
-    word-wrap: break-word;
-}
-
-.markdown code, .markdown pre {
-    border-radius: 3px 3px 3px 3px;
-    color: #333333;
-    font-family: Menlo,Monaco,Consolas,"Courier New",monospace;
-    font-size: 12px;
-}
-
-button { margin: 2px; margin-left: 0px; }
-
-label {
-	padding-top: 15px;
-	color: #404040;
-}
-
-select, input, textarea { 
-	border: 1px solid #ccc; 
-	-moz-border-radius: 4px;
-	-webkit-border-radius: 4px;
-	font-size: inherit;
-	padding: 4px;
-	color: #444;
-	-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-	-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-	box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-
-textarea { 
-	font-family: inherit; 
-	height: 120px; 
-	width: 90%; 
-	font-size: inherit; 
-	white-space: normal;
-}
-
-table { padding: 0px; border-collapse: 'collapse'}
-
-td { 
-	padding:0px; 
-	margin: 0px; 
-	vertical-align: top; 
-}
-
-p {
-	margin: 0px 0px 9px 0px;
-	line-height: 1.5em;
-}
-
-li {
-	line-height: 1.5em;
-}
-
-hr {
-  clear: both;
-  margin: 18px 0;
-  border: 0;
-  border-top: 1px solid #e5e5e5;
-  border-bottom: 1px solid #ffffff;
-}
-
-/* links */
-
-a:active { outline:none; }
-
-a {
-  color: #0088cc;
-  text-decoration: none;
-}
-a:hover {
-  color: #005580;
-  text-decoration: underline;
-}
-
-.link_type {
-	padding:2px;
-	color: #0088cc;
-	cursor: pointer;
-}
-
-.link_type:hover {
-	color: #005580;
-	text-decoration: underline;
-}
-
-:focus { -moz-outline-style:none; }
-
-table.simpletable { border-collapse: collapse; margin-bottom: 10px;}
-table.simpletable td {border: 1pt solid #000; vertical-align: top; padding: 2px; }
-
-div.fix_ff_cursor { overflow: auto; }
-
-/* --- Layout --- */
-
-div.comment { color: #444; }
-
-.small {
-	font-size: 12px;
-}
-
-.help {
-	margin-bottom: 3px;
-	color: #888;
-}
-
-div#body_div {
-	padding-right: 7px;
-	padding-top: 70px;
-	padding-bottom: 50px;
-	min-height: 400px;
-}
-
-.content {
-	margin: auto;
-	width: 900px;
-}
-
-.background-fade-in {
-	-webkit-transition: background 1s ease-in; /* property duration timing-function delay */
-    -moz-transition: background 1s ease-in;
-    -o-transition: background 1s ease-in;
-    transition: background 1s ease-in;
-}
-
-header .container {
-	width: 900px;
-	margin: auto;
-}
-
-@media (max-width: 1200px) {
-	header .container, .content {
-		width: 900px;
-	}
-}
-
-@media (min-width: 1200px) and (max-width: 1599px) {
-	header .container, .content {
-		width: 1100px;
-	}
-}
-
-@media (min-width: 1600px) {
-	header .container, .content {
-		width: 1100px;
-	}
-	div#body_div {
-		min-height: 900px;
-	}
-}
-
-div.no_script {
-	display: none;
-}
-
-div.loading_div {
-	background-color: #FFFFCC;
-	z-index: 1999;
-	right: 5px;
-	width: 90px;
-	display: none;
-	text-align: center;
-	padding: 2px;
-	border: 1px solid #FF4;
-}
-
-div.std-footer {
-	margin: 13px -15px;
-	border-top: 1px solid #AAA;
-	padding: 13px;
-}
-
-div.std-footer-item {
-	margin: 0px 13px 13px 0px;
-}
-
-.shadow {
-	-moz-box-shadow: 0px 2px 2px #888;
-	-webkit-box-shadow: 0px 2px 2px #888;
- 	box-shadow: 0px 2px 2px #888;
-}
-
-.round {
-	-webkit-border-radius: 5px;
-	-moz-border-radius: 5px;
-	border-radius: 5px;	
-}
-
-.layout_wrapper, .layout-wrapper {
-	-moz-box-shadow: 0px 0px 9px rgba(0,0,0,0.5);
-	-webkit-box-shadow: 0px 0px 9px rgba(0,0,0,0.5);
-	box-shadow: 0px 0px 9px rgba(0,0,0,0.5);
-	background-color: #fff;
-	padding: 15px;
-	-webkit-border-radius: 5px;
-	-moz-border-radius: 5px;
-	border-radius: 5px;	
-	overflow: hidden;
-}
-
-.layout-wrapper-appframe {
-	padding: 0px;
-}
-
-.layout-wrapper-background {
-	background-color: #fafafa !important;
-	padding: 0px;
-}
-
-.layout-main {
-	padding: 15px;
-	background-color: #fff;
-}
-
-.layout-main-section {
-	width: 71%;
-	float: left;
-	padding: 15px;
-	background-color: #FFF;
-	min-height: 600px;
-	-moz-box-shadow:    2px 0px 1px #ddd;
-	-webkit-box-shadow: 2px 0px 1px #ddd;
-	box-shadow:         2px 0px 1px #ddd;
-}
-
-.layout-side-section {
-	width: 22%;
-	/*float: right;*/
-	color: #606060; 
-	overflow-x: hidden;
-	padding: 15px;
-	min-height: 600px;
-}
-
-/* from bootstrap */
-.container {
-  margin-left: auto;
-  margin-right: auto;
-  zoom: 1;
-}
-.container:before, .container:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.container:after {
-  clear: both;
-}
-
-.well {
-  min-height: 20px;
-  padding: 19px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border: 1px solid #eee;
-  border: 1px solid rgba(0, 0, 0, 0.05);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-
-.avatar-small {
-	display: inline-block; 
-	width: 24px;
-	height: 20px;
-	vertical-align: middle;
-	overflow: hidden;
-	margin: 0px 3px;
-	border-radius: 3px;
-	-moz-border-radius: 3px;
-	-webkit-border-radius: 3px;
-}
-.avatar-small img {
-	width: 24px; 
-}
-
-.erpnext-logo {
-	position: fixed;
-	bottom: 5px;
-	left: 5px;
-	height: 30px;
-	width: 30px;
-	background: url('../images/erpnext-fade.png') no-repeat top left;
-}
-
-.markdown p {
-	font-size: 13px;
-}
-
-.markdown h1 {
-	margin-bottom: 9px;
-}
-
-.markdown h2 {
-	margin-bottom: 7px;
-}
-
-.markdown h3, .markdown h4 {
-	margin-bottom: 5px;
-}
-
-/*
- *	lib/css/legacy/messages.css
- */
-
-/* FLOATING MESSAGE */
-
-.btn-img { cursor: pointer; }
-
-div.fetching { color: #888; text-align:right; }
-
-.msgprint {
-	min-height: 60px; 
-	max-height: 500px;
-	padding: 9px;
-	color: #333;
-	overflow: auto;
-}
-
-div.notice {
-	postion: absolute;
-	background-color: #000;
-	-moz-border-radius: 5px; -webkit-border-radius: 5px;
-	opacity: 0.6;
-	right: 0;
-	top: 0;
-	margin-top: 8px;
-	z-index: -1;
-	padding: 8px;
-}
-
-/** help **/
-
-.info-box {
-    background-color: #F8F8F8;
-    border: 1px solid #CCCCCC;
-    border-radius: 3px 3px 3px 3px;
-    line-height: 1.6em;
-    overflow: auto;
-    padding: 6px 10px;
-	margin-bottom: 9px;
-}
-
-.help_box, .help-box {
-	background-color: #ffe;
-	padding: 9px 9px 9px 9px;
-	border: 1px dashed #fc7;
-	margin: 11px 0px;
-}
-
-.help-box, .help-box p, .help-box h1, .help-box h2, .help-box h3, .help-box h4 {
-	color: #643;
-}
-
-
-/*
- *	lib/css/legacy/dialog.css
- */
-/***** Dialogs *******/
-
-div.dialog_wrapper {
-	position: absolute;
-	width: 440px;
-	display: none;
-	z-index: 90;
-	background-color: #FFF;
-	box-shadow:1px 1px 8px #444;
-	-moz-box-shadow: 1px 1px 8px #444;
-	-webkit-box-shadow: 1px 1px 8px #444;
-	
-	border-radius: 5px;
-	-moz-border-radius: 5px;
-	-webkit-border-radius: 5px;
-	
-	overflow: hidden;
-}
-
-div.dialog_head {
-	height: 22px;
-	padding: 4px;
-	background-color: #222;
-	color: #FFF;
-}
-
-div.dialog_body {
-	padding: 8px 8px 16px;
-	border-radius: 5px;
-	-moz-border-radius: 5px;
-	-webkit-border-radius: 5px;	
-}
-
-div.dialog_back {
-	position: fixed;
-	display: none;
-	top: 0px;
-	left: 0px;
-	bottom: 0px;
-	right: 0px;
-	background-color: #aaa;
-	opacity: 0.6;
-	z-index: 50;
-	text-align: center;
-}
-
-div.dialog_message {
-	display: none;
-	position: absolute;
-	width: 250px;
-	font-size: 12px;
-	z-index: 91;
-	background-color:#FFF;
-	padding: 12px;
-	border: 1px solid #444;
-}
-
-div.dialog_row {
-	padding: 8px 8px 0px 8px;
-}
-
-div.dialog_row table {
-	width: 100%;
-}
-
-div.dialog_row table td {
-}
-
-div.dialog_row input[type="text"], div.dialog_row input[type="password"], div.dialog_row textarea, div.dialog_row select {
-	width: 80%;
-	font-size: 14px;
-}
-
-div.dialog_row table td textarea {
-	width: 80%;
-	height: 200px;
-	font-size: 12px;
-}
-
-
-/*
- *	lib/css/ui/common.css
- */
-.navbar-icon-home {
-	vertical-align: middle;
-	opacity: 0.4;
-	Filter:alpha(opacity=40); /* For IE8 and earlier */
-}
-
-.navbar-icon-home:hover,
-.navbar-icon-home:focus,
-.navbar-icon-home:active,
-.navbar-icon-home-hover{
-	opacity:1;
-	Filter:alpha(opacity=100); /* For IE8 and earlier */
-}
-
-
-/*
- *	lib/css/ui/fonts.css
- */
-@font-face {
-  font-family: 'Pontano Sans';
-  font-style: normal;
-  font-weight: 800;
-  src: url('fonts/pontanosans.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Droid Sans';
-  font-style: normal;
-  font-weight: normal;
-  src: local('Droid Sans'), local('DroidSans'), url('fonts/droidsans.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'PT Sans';
-  font-style: normal;
-  font-weight: normal;
-  src: local('PT Sans'), local('PTSans-Regular'), url('fonts/ptsans.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Open Sans';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Open Sans'), local('OpenSans'), url('fonts/opensans.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Lato';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Lato Regular'), local('Lato-Regular'), url('fonts/lato.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Cabin';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Cabin Regular'), local('Cabin-Regular'), url('fonts/cabin.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Pacifico';
-  font-style: normal;
-  font-weight: normal;
-  src: local('Pacifico Regular'), local('Pacifico-Regular'), url('fonts/pacifico.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Oleo Script';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Oleo Script'), local('OleoScript-Regular'), url('fonts/oleoscript.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Cookie';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Cookie-Regular'), url('fonts/cookie.woff') format('woff');
-}
-
-@font-face {
-  font-family: 'Marck Script';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Marck Script'), local('MarckScript-Regular'), url('fonts/marckscript.woff') format('woff');
-}
-
-
-/*
- *	lib/css/ui/list.css
- */
-.hide {
-	display: none;
-}
-
-.list-filters {
-	margin: 7px 0px;
-}
-
-.wnlist .img-load {
-	display: none;
-	float: left;
-	margin-bottom: 8px;
-}
-
-/* list-row */
-div.list-row {
-	border-bottom: 1px solid #ddd;
-	padding: 5px 0px;
-}
-
-div.list-row .label {
-	margin-right: 4px;
-}
-
-div.list-row table {
-	table-layout: fixed;
-	border-collapse: collapse;
-	width: 100%;
-}
-
-div.list-row table td {
-	overflow: hidden;
-	/*padding-right: 3px;*/
-	padding: 0px 3px;
-	vertical-align: middle;
-	height: 24px;
-	max-height: 24px;
-	word-wrap: break-word;
-}
-
-div.paging-button {
-	text-align: center;
-	padding: 11px 0px;
-}
-
-div.show_filters {
-	display: none;
-}
-
-div.filter_list {
-	padding: 13px;
-}
-
-div.show_filters.well {
-	margin-top: 11px;
-	margin-bottom: 11px;
-}
-
-div.filter_list .run_btn {
-	text-align: right;
-}
-
-div.filter_list .add_filter {
-	margin: 3px 0px;
-}
-
-div.list_filter {
-	margin: 7px 0px;
-}
-
-div.list_filter input, div.list_filter select {
-	width: 130px;
-	margin-right: 7px;
-}
-
-/* bar */
-
-span.bar-outer {
-	display: inline-block;
-	margin: 0px 7px;
-	margin-top: 3px;
-	background-color: #fff;
-	border: 1px solid #aaa;
-	height: 10px;
-}
-
-span.bar-inner {
-	display: inline-block;
-	background-color: #bdf;
-	height: 100%;
-	margin-bottom: 2px;
-	float: left;
-}
-span.bar-complete {
-	background-color: #009900;
-}
-span.bar-empty {
-	background-color: #990000;
-}
-
-
-/* stats */
-
-div.stat-wrapper {
-	margin-bottom: 19px;
-}
-
-div.stat-grid {
-	margin-top: 9px;
-	overflow: hidden;
-}
-
-div.stat-label {
-	position: relative;
-	padding: 3px;
-	text-align: center;
-	font-size: 11px;
-}
-div.stat-label, div.stat-label a {
-	z-index: 5;
-}
-
-div.stat-item {
-	position: relative;
-	margin-bottom: 7px;
-	background-color: #fff;
-	height: 18px;
-	border: 1px solid #aaa;
-	border-radius: 9px;
-	-webkit-border-radius: 9px;
-	-moz-border-radius: 9px;
-	overflow: hidden;
-}
-
-div.stat-bar {
-	position: absolute;
-	left: 0px;
-	height: 100%;
-	z-index: 0;
-	/* So that this div is also curved like the enclosing one */
-	border-radius: 9px;
-	-webkit-border-radius: 9px;
-	-moz-border-radius: 9px;
-
-	background: #e0ff84; /* Old browsers */
-	background: -moz-linear-gradient(top,  #e0ff84 0%, #a4e567 100%); /* FF3.6+ */
-	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e0ff84), color-stop(100%,#a4e567)); /* Chrome,Safari4+ */
-	background: -webkit-linear-gradient(top,  #e0ff84 0%,#a4e567 100%); /* Chrome10+,Safari5.1+ */
-	background: -o-linear-gradient(top,  #e0ff84 0%,#a4e567 100%); /* Opera 11.10+ */
-	background: -ms-linear-gradient(top,  #e0ff84 0%,#a4e567 100%); /* IE10+ */
-	background: linear-gradient(top,  #e0ff84 0%,#a4e567 100%); /* W3C */
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e0ff84', endColorstr='#a4e567',GradientType=0 ); /* IE6-9 */
-}
-
-/*
- *	lib/css/ui/views.css
- */
-
-.breadcrumb-area, .breadcrumb-area span {
-	vertical-align: middle;
-}
-
-div.appframe-titlebar {
-	padding: 6px;
-	background: #eeeeee; /* Old browsers */
-	background: -moz-linear-gradient(top,  #eeeeee 0%, #cccccc 100%); /* FF3.6+ */
-	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eeeeee), color-stop(100%,#cccccc)); /* Chrome,Safari4+ */
-	background: -webkit-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* Chrome10+,Safari5.1+ */
-	background: -o-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* Opera 11.10+ */
-	background: -ms-linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* IE10+ */
-	background: linear-gradient(top,  #eeeeee 0%,#cccccc 100%); /* W3C */
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#cccccc',GradientType=0 ); /* IE6-9 */
-	border-bottom: 1px solid #aaa;
-	min-height: 1.2em;
-	border-radius: 5px 5px 0px 0px;
-	-webkit-border-radius: 5px 5px 0px 0px;
-	-moz-border-radius: 5px 5px 0px 0px;
-
-	text-shadow: 0px 1px 1px #fff;
-	color: #555;
-}
-
-span.appframe-title {
-	font-size: 160%;
-	font-weight: bold;
-}
-
-div.appframe-toolbar {
-	padding: 4px;
-	background: #eeeeee;
-	border-top: 1px solid #f8f8f8;
-	border-bottom: 1px solid #ccc;
-}
-
-div.appframe-toolbar .label {
-	margin: 2px 2px;
-}
-
-div.appframe-toolbar input, div.appframe-toolbar select {
-	font-size: 80%;
-	margin: 2px 2px;
-}
-div.appframe-toolbar button {
-	padding: 3px 7px !important;
-}
-
-
-
-/*
- *	erpnext/startup/startup.css
- */
-h1, h2, h3, h4, h5 {
-	font-family: Arial, Helvetica, sans-serif;
-	margin-top: 0.2em;
-}
-
-body {
-	font-family: Arial, Helvetica, sans-serif;
-	font-size: 13px;
-}
-
-span, div, td, input, textarea, button, select {
-	font-family: inherit;
-}
-
-.small {
-	font-size: 11.5px;
-}
-
-.erpnext-footer {
-	margin: 11px auto;
-	text-align: center;
-}
-
-.navbar-new-comments {
-	margin: -3px 0px;
-	padding: 2px;
-	min-width: 20px;
-	text-align: center;
-	display: inline-block;
-	border-radius: 2px;
-	color: #999999;
-	background-color: #333131;
-}
-
-.navbar-new-comments:hover,
-.navbar-new-comments:active,
-.navbar-new-comments:focus {
-	color: #fff;
-}
-
-.navbar-new-comments-true {
-	color: #fff;
-	background-color: #B00D07;
-}
-
-/*extra size menus for recent*/
-.dropdown-menu#toolbar-recent, .dropdown-menu#toolbar-options, .dropdown-menu#toolbar-help{
-	min-width: 160px !important;
-	max-width: 260px !important;
-}
-
-.expiry-info {
-	margin-top: 40px;
-	margin-bottom: -40px;
-	text-align: center;
-	background-color: rgb(255, 255, 204);
-	padding: 7px;
-	z-index: 1;
-}
-
-.show-all-reports {
-	margin-top: 5px;
-	font-size: 11px;
-}
-
-/*
- *	erpnext/website/css/website.css
- */
-header .container, .content {
-	width: 900px;
-}
-
-div#body_div {
-	padding-top: 80px;
-	min-height: 400px;
-}
-
-p, li {
-	line-height: 1.6em;
-}
-
-pre {
-    background-color: #F8F8F8;
-    border: 1px solid #CCCCCC;
-    border-radius: 3px 3px 3px 3px;
-    font-size: 13px;
-    line-height: 19px;
-    overflow: auto;
-    padding: 6px 10px;
-	margin-bottom: 9px;
-}
-
-.web-head-section {
-	margin-bottom: 20px
-}
-
-.web-main-section {
-	width: 65%;
-	float: left;
-	margin-bottom: 20px;
-}
-
-.web-side-section {
-	width: 30%;
-	float: right;
-	margin-bottom: 20px;
-	margin-right: 15px;
-	color: #606060;
-	overflow-x: hidden;
-	font-size: 90%;
-}
-
-.web-page-status {
-	padding: 7px;
-	margin-top: -20px;
-	color: #777;
-	clear: both;
-	text-align: right;
-}
-
-.web-page-status a,
-.web-page-status a:hover,
-.web-page-status a:visited {
-	padding: 2px;
-	background-color: #777;
-	color: #FFF;
-	text-decoration: none;
-}
-
-.web-page-status a:hover {
-	background-color: #444;
-}
-
-
-footer {
-
-}
-
-.web-footer-menu {
-	margin-bottom: 7px;
-}
-
-.web-footer-menu ul {
-	list-style: none;
-	margin: 0px;
-	padding: 0px;
-}
-
-.web-footer-menu ul li {
-	display: inline;
-	padding: 2px 15px;
-	border-right: 1px solid #999;
-}
-
-.web-footer-menu ul li:first-child {
-	padding-left: 0px;
-}
-
-.web-footer-menu ul li:last-child {
-	border-right: 0px solid #777 !important;
-}
-
-.web-footer-powered {
-	color: #888;
-	float: right;
-	margin-top: -12px;
-}
-
-/* slide view */
-
-.next-slide {
-	margin: 0px -27px 100px -27px;
-	background: #ffffff; /* Old browsers */
-	background: -moz-linear-gradient(top,  #eeeeee 0%, #fff 100%); /* FF3.6+ */
-	background: -webkit-linear-gradient(top,  #eeeeee 0%, #fff 100%); /* Chrome10+,Safari5.1+ */
-	background: -o-linear-gradient(top,  #eeeeee 0%, #fff 100%); /* Opera 11.10+ */
-	background: -ms-linear-gradient(top,  #eeeeee 0%, #fff 100%); /* IE10+ */
-	background: linear-gradient(top,  #eeeeee 0%, #fff 100%); /* W3C */
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#fff',GradientType=0 ); /* IE6-9 */
-	height: 36px;
-}
-
-.slide-shadow {
-	background: #eeeeee; /* Old browsers */
-	background: -moz-linear-gradient(top,  #bababa 0%,#eeeeee 100%); /* FF3.6+ */
-	background: -webkit-linear-gradient(top,  #bababa 0%,#eeeeee 100%); /* Chrome10+,Safari5.1+ */
-	background: -o-linear-gradient(top,  #bababa 0%,#eeeeee 100%); /* Opera 11.10+ */
-	background: -ms-linear-gradient(top,  #bababa 0%,#eeeeee 100%); /* IE10+ */
-	background: linear-gradient(top,  #bababa 0%,#eeeeee 100%); /* W3C */
-	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#bababa', endColorstr='#eeeeee',GradientType=0 ); /* IE6-9 */	
-	height: 3px;
-	margin: 100px -27px 0px -27px;
-	border-top: 1px solid #bababa;
-}
-
-.two-column {
-	width: 50%;
-	float: left;
-}
-
-.clear {
-	clear: both;
-}
-
-/* */
diff --git a/public/css/fields.css b/public/css/fields.css
deleted file mode 100644
index db9f634..0000000
--- a/public/css/fields.css
+++ /dev/null
@@ -1,84 +0,0 @@
-
-/*
- *	lib/css/legacy/fields.css
- */
-/* Documents */
-
-.frm_field_table {
-        width: 100%;
-        border-collapse: collapse;
-}
-
-.datalabelcell { 
-        padding: 2px 0px; 
-        width: 160px; 
-        vertical-align: top; 
-}
-.datainputcell { padding: 2px 0px; }
-
-
-.help ol {
-	padding-left: 19px;
-}
-
-.field_description_top {
-	margin-bottom: 3px;
-}
-
-.input_area input, select, textarea { 
-	font-size: 14px;
-	padding: 2px;
-
-	-webkit-border-radius: 3px;
-	-moz-border-radius: 3px;
-	border-radius: 3px;
-}
-
-.input_area input { 
-	width: 80%; 
-	margin: 0px; 
-}
-.input_area select { 
-	width: 80%; 
-}
-.input_area textarea { 
-	width: 90%; 
-}
-
-.disp_area { 
-	width: 80%; 
-	padding: 2px 0px; 
-	font-size: 12px; 
-	background-color: #eee;
-	padding: 2px;
-	border: 1px solid #ddd;
-	
-	-webkit-border-radius: 3px;
-	-moz-border-radius: 3px;
-	border-radius: 3px;	
-}
-.disp_area_no_val { 
-	min-height: 14px; 
-}
-
-.no_img {
-	padding: 40px;
-	width: 100px;
-	height: 20px;
-	color: #888;
-	text-align: center;
-	border: 1px solid #AAA;
-}
-
-.input-mandatory {
-	font-size: 14px !important;
-	font-weight: bold;
-}
-
-.field-to-update {
-	background-color:#FEE;
-}
-
-.field-has-error {
-	border: 2px solid #C00;
-}
diff --git a/public/css/fonts/cabin.woff b/public/css/fonts/cabin.woff
deleted file mode 100644
index 6f24a8a..0000000
--- a/public/css/fonts/cabin.woff
+++ /dev/null
Binary files differ
diff --git a/public/css/fonts/cookie.woff b/public/css/fonts/cookie.woff
deleted file mode 100644
index 454762d..0000000
--- a/public/css/fonts/cookie.woff
+++ /dev/null
Binary files differ
diff --git a/public/css/fonts/droidsans.woff b/public/css/fonts/droidsans.woff
deleted file mode 100644
index 3807cd6..0000000
--- a/public/css/fonts/droidsans.woff
+++ /dev/null
Binary files differ
diff --git a/public/css/fonts/lato.woff b/public/css/fonts/lato.woff
deleted file mode 100644
index ad1a467..0000000
--- a/public/css/fonts/lato.woff
+++ /dev/null
Binary files differ
diff --git a/public/css/fonts/marckscript.woff b/public/css/fonts/marckscript.woff
deleted file mode 100644
index e5f1f0b..0000000
--- a/public/css/fonts/marckscript.woff
+++ /dev/null
Binary files differ
diff --git a/public/css/fonts/oleoscript.woff b/public/css/fonts/oleoscript.woff
deleted file mode 100644
index feb3f96..0000000
--- a/public/css/fonts/oleoscript.woff
+++ /dev/null
Binary files differ
diff --git a/public/css/fonts/opensans.woff b/public/css/fonts/opensans.woff
deleted file mode 100644
index 58e6cb3..0000000
--- a/public/css/fonts/opensans.woff
+++ /dev/null
Binary files differ
diff --git a/public/css/fonts/pacifico.woff b/public/css/fonts/pacifico.woff
deleted file mode 100644
index 373c381..0000000
--- a/public/css/fonts/pacifico.woff
+++ /dev/null
Binary files differ
diff --git a/public/css/fonts/pontanosans.woff b/public/css/fonts/pontanosans.woff
deleted file mode 100644
index d728f0c..0000000
--- a/public/css/fonts/pontanosans.woff
+++ /dev/null
Binary files differ
diff --git a/public/css/fonts/ptsans.woff b/public/css/fonts/ptsans.woff
deleted file mode 100644
index 56c598d..0000000
--- a/public/css/fonts/ptsans.woff
+++ /dev/null
Binary files differ
diff --git a/public/js/app/account_tree_grid.js b/public/js/account_tree_grid.js
similarity index 100%
rename from public/js/app/account_tree_grid.js
rename to public/js/account_tree_grid.js
diff --git a/public/js/all-app.js b/public/js/all-app.js
deleted file mode 100644
index 2126b37..0000000
--- a/public/js/all-app.js
+++ /dev/null
@@ -1,2401 +0,0 @@
-
-/*
- *	lib/js/lib/jquery/jquery.ui.core.js
- */
-;/*!
- * jQuery UI 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI
- */
-(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)});return c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode)for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;if(b[d]>0)return!0;b[d]=1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}}))})(jQuery);
-/*!
- * jQuery UI Widget 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Widget
- */
-(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}});return d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e;if(f&&e.charAt(0)==="_")return h;f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b){h=f;return!1}}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))});return h}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}this._setOptions(e);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b);return this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);this.element.trigger(c,d);return!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);
-/*!
- * jQuery UI Mouse 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Mouse
- *
- * Depends:
- *	jquery.ui.widget.js
- */
-(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent")){a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation();return!1}}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(b){if(!c){this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted){b.preventDefault();return!0}}!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0;return!0}},_mouseMove:function(b){if(a.browser.msie&&!(document.documentMode>=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);
-/*
- * jQuery UI Position 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Position
- */
-(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1];return this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]!==e){var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0}},top:function(b,c){if(c.at[1]!==e){var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];if(!c||!c.ownerDocument)return null;if(b)return this.each(function(){a.offset.setOffset(this,b)});return h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);
-
-
-/*
- *	lib/js/lib/jquery/jquery.ui.datepicker.js
- */
-/* jQuery UI Datepicker 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker
- *
- * Depends:
- *	jquery.ui.core.js
- */(function($,undefined){function isArray(a){return a&&($.browser.safari&&typeof a=="object"&&a.length||a.constructor&&a.constructor.toString().match(/\Array\(\)/))}function extendRemove(a,b){$.extend(a,b);for(var c in b)if(b[c]==null||b[c]==undefined)a[c]=b[c];return a}function bindHover(a){var b="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return a.bind("mouseout",function(a){var c=$(a.target).closest(b);!c.length||c.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){var d=$(c.target).closest(b);!$.datepicker._isDisabledDatepicker(instActive.inline?a.parent()[0]:instActive.input[0])&&!!d.length&&(d.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),d.addClass("ui-state-hover"),d.hasClass("ui-datepicker-prev")&&d.addClass("ui-datepicker-prev-hover"),d.hasClass("ui-datepicker-next")&&d.addClass("ui-datepicker-next-hover"))})}function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}$.extend($.ui,{datepicker:{version:"1.8.18"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){extendRemove(this._defaults,a||{});return this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(a,b){var c=a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:c,input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:b?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(a,b){var c=$(a);b.append=$([]),b.trigger=$([]);c.hasClass(this.markerClassName)||(this._attachments(c,b),c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),this._autoSize(b),$.data(a,PROP_NAME,b),b.settings.disabled&&this._disableDatepicker(a))},_attachments:function(a,b){var c=this._get(b,"appendText"),d=this._get(b,"isRTL");b.append&&b.append.remove(),c&&(b.append=$('<span class="'+this._appendClass+'">'+c+"</span>"),a[d?"before":"after"](b.append)),a.unbind("focus",this._showDatepicker),b.trigger&&b.trigger.remove();var e=this._get(b,"showOn");(e=="focus"||e=="both")&&a.focus(this._showDatepicker);if(e=="button"||e=="both"){var f=this._get(b,"buttonText"),g=this._get(b,"buttonImage");b.trigger=$(this._get(b,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:g,alt:f,title:f}):$('<button type="button"></button>').addClass(this._triggerClass).html(g==""?f:$("<img/>").attr({src:g,alt:f,title:f}))),a[d?"before":"after"](b.trigger),b.trigger.click(function(){$.datepicker._datepickerShowing&&$.datepicker._lastInput==a[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=a[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(a[0])):$.datepicker._showDatepicker(a[0]);return!1})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var d=function(a){var b=0,c=0;for(var d=0;d<a.length;d++)a[d].length>b&&(b=a[d].length,c=d);return c};b.setMonth(d(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort"))),b.setDate(d(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=$(a);c.hasClass(this.markerClassName)||(c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),$.data(a,PROP_NAME,b),this._setDate(b,this._getDefaultDate(b),!0),this._updateDatepicker(b),this._updateAlternate(b),b.settings.disabled&&this._disableDatepicker(a),b.dpDiv.css("display","block"))},_dialogDatepicker:function(a,b,c,d,e){var f=this._dialogInst;if(!f){this.uuid+=1;var g="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+g+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),f=this._dialogInst=this._newInst(this._dialogInput,!1),f.settings={},$.data(this._dialogInput[0],PROP_NAME,f)}extendRemove(f.settings,d||{}),b=b&&b.constructor==Date?this._formatDate(f,b):b,this._dialogInput.val(b),this._pos=e?e.length?e:[e.pageX,e.pageY]:null;if(!this._pos){var h=document.documentElement.clientWidth,i=document.documentElement.clientHeight,j=document.documentElement.scrollLeft||document.body.scrollLeft,k=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[h/2-100+j,i/2-150+k]}this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),f.settings.onSelect=c,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,f);return this},_destroyDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();$.removeData(a,PROP_NAME),d=="input"?(c.append.remove(),c.trigger.remove(),b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(d=="div"||d=="span")&&b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!1,c.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().removeClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b})}},_disableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!0,c.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().addClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b}),this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return!1;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return!0;return!1},_getInst:function(a){try{return $.data(a,PROP_NAME)}catch(b){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(a,b,c){var d=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?$.extend({},$.datepicker._defaults):d?b=="all"?$.extend({},d.settings):this._get(d,b):null;var e=b||{};typeof b=="string"&&(e={},e[b]=c);if(d){this._curInst==d&&this._hideDatepicker();var f=this._getDateDatepicker(a,!0),g=this._getMinMaxDate(d,"min"),h=this._getMinMaxDate(d,"max");extendRemove(d.settings,e),g!==null&&e.dateFormat!==undefined&&e.minDate===undefined&&(d.settings.minDate=this._formatDate(d,g)),h!==null&&e.dateFormat!==undefined&&e.maxDate===undefined&&(d.settings.maxDate=this._formatDate(d,h)),this._attachments($(a),d),this._autoSize(d),this._setDate(d,f),this._updateAlternate(d),this._updateDatepicker(d)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){var b=this._getInst(a);b&&this._updateDatepicker(b)},_setDateDatepicker:function(a,b){var c=this._getInst(a);c&&(this._setDate(c,b),this._updateDatepicker(c),this._updateAlternate(c))},_getDateDatepicker:function(a,b){var c=this._getInst(a);c&&!c.inline&&this._setDateFromField(c,b);return c?this._getDate(c):null},_doKeyDown:function(a){var b=$.datepicker._getInst(a.target),c=!0,d=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=!0;if($.datepicker._datepickerShowing)switch(a.keyCode){case 9:$.datepicker._hideDatepicker(),c=!1;break;case 13:var e=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",b.dpDiv);e[0]&&$.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,e[0]);var f=$.datepicker._get(b,"onSelect");if(f){var g=$.datepicker._formatDate(b);f.apply(b.input?b.input[0]:null,[g,b])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 35:(a.ctrlKey||a.metaKey)&&$.datepicker._clearDate(a.target),c=a.ctrlKey||a.metaKey;break;case 36:(a.ctrlKey||a.metaKey)&&$.datepicker._gotoToday(a.target),c=a.ctrlKey||a.metaKey;break;case 37:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?1:-1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 38:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,-7,"D"),c=a.ctrlKey||a.metaKey;break;case 39:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?-1:1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 40:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,7,"D"),c=a.ctrlKey||a.metaKey;break;default:c=!1}else a.keyCode==36&&a.ctrlKey?$.datepicker._showDatepicker(this):c=!1;c&&(a.preventDefault(),a.stopPropagation())},_doKeyPress:function(a){var b=$.datepicker._getInst(a.target);if($.datepicker._get(b,"constrainInput")){var c=$.datepicker._possibleChars($.datepicker._get(b,"dateFormat")),d=String.fromCharCode(a.charCode==undefined?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||d<" "||!c||c.indexOf(d)>-1}},_doKeyUp:function(a){var b=$.datepicker._getInst(a.target);if(b.input.val()!=b.lastVal)try{var c=$.datepicker.parseDate($.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,$.datepicker._getFormatConfig(b));c&&($.datepicker._setDateFromField(b),$.datepicker._updateAlternate(b),$.datepicker._updateDatepicker(b))}catch(a){$.datepicker.log(a)}return!0},_showDatepicker:function(a){a=a.target||a,a.nodeName.toLowerCase()!="input"&&(a=$("input",a.parentNode)[0]);if(!$.datepicker._isDisabledDatepicker(a)&&$.datepicker._lastInput!=a){var b=$.datepicker._getInst(a);$.datepicker._curInst&&$.datepicker._curInst!=b&&($.datepicker._curInst.dpDiv.stop(!0,!0),b&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var c=$.datepicker._get(b,"beforeShow"),d=c?c.apply(a,[a,b]):{};if(d===!1)return;extendRemove(b.settings,d),b.lastVal=null,$.datepicker._lastInput=a,$.datepicker._setDateFromField(b),$.datepicker._inDialog&&(a.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(a),$.datepicker._pos[1]+=a.offsetHeight);var e=!1;$(a).parents().each(function(){e|=$(this).css("position")=="fixed";return!e}),e&&$.browser.opera&&($.datepicker._pos[0]-=document.documentElement.scrollLeft,$.datepicker._pos[1]-=document.documentElement.scrollTop);var f={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,b.dpDiv.empty(),b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(b),f=$.datepicker._checkOffset(b,f,e),b.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":e?"fixed":"absolute",display:"none",left:f.left+"px",top:f.top+"px"});if(!b.inline){var g=$.datepicker._get(b,"showAnim"),h=$.datepicker._get(b,"duration"),i=function(){var a=b.dpDiv.find("iframe.ui-datepicker-cover");if(!!a.length){var c=$.datepicker._getBorders(b.dpDiv);a.css({left:-c[0],top:-c[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex($(a).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&$.effects[g]?b.dpDiv.show(g,$.datepicker._get(b,"showOptions"),h,i):b.dpDiv[g||"show"](g?h:null,i),(!g||!h)&&i(),b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus(),$.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this;b.maxRows=4;var c=$.datepicker._getBorders(a.dpDiv);instActive=a,a.dpDiv.empty().append(this._generateHTML(a));var d=a.dpDiv.find("iframe.ui-datepicker-cover");!d.length||d.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}),a.dpDiv.find("."+this._dayOverClass+" a").mouseover();var e=this._getNumberOfMonths(a),f=e[1],g=17;a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),f>1&&a.dpDiv.addClass("ui-datepicker-multi-"+f).css("width",g*f+"em"),a.dpDiv[(e[0]!=1||e[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),a==$.datepicker._curInst&&$.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var h=a.yearshtml;setTimeout(function(){h===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml),h=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var d=a.dpDiv.outerWidth(),e=a.dpDiv.outerHeight(),f=a.input?a.input.outerWidth():0,g=a.input?a.input.outerHeight():0,h=document.documentElement.clientWidth+$(document).scrollLeft(),i=document.documentElement.clientHeight+$(document).scrollTop();b.left-=this._get(a,"isRTL")?d-f:0,b.left-=c&&b.left==a.input.offset().left?$(document).scrollLeft():0,b.top-=c&&b.top==a.input.offset().top+g?$(document).scrollTop():0,b.left-=Math.min(b.left,b.left+d>h&&h>d?Math.abs(b.left+d-h):0),b.top-=Math.min(b.top,b.top+e>i&&i>e?Math.abs(e+g):0);return b},_findPos:function(a){var b=this._getInst(a),c=this._get(b,"isRTL");while(a&&(a.type=="hidden"||a.nodeType!=1||$.expr.filters.hidden(a)))a=a[c?"previousSibling":"nextSibling"];var d=$(a).offset();return[d.left,d.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=$.data(a,PROP_NAME))&&this._datepickerShowing){var c=this._get(b,"showAnim"),d=this._get(b,"duration"),e=this,f=function(){$.datepicker._tidyDialog(b),e._curInst=null};$.effects&&$.effects[c]?b.dpDiv.hide(c,$.datepicker._get(b,"showOptions"),d,f):b.dpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,f),c||f(),this._datepickerShowing=!1;var g=this._get(b,"onClose");g&&g.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(!!$.datepicker._curInst){var b=$(a.target),c=$.datepicker._getInst(b[0]);(b[0].id!=$.datepicker._mainDivId&&b.parents("#"+$.datepicker._mainDivId).length==0&&!b.hasClass($.datepicker.markerClassName)&&!b.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||b.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=c)&&$.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){var d=$(a),e=this._getInst(d[0]);this._isDisabledDatepicker(d[0])||(this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c),this._updateDatepicker(e))},_gotoToday:function(a){var b=$(a),c=this._getInst(b[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate(),c.drawMonth=c.selectedMonth=d.getMonth(),c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c),this._adjustDate(b)},_selectMonthYear:function(a,b,c){var d=$(a),e=this._getInst(d[0]);e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10),this._notifyChange(e),this._adjustDate(d)},_selectDay:function(a,b,c,d){var e=$(a);if(!$(d).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(e[0])){var f=this._getInst(e[0]);f.selectedDay=f.currentDay=$("a",d).html(),f.selectedMonth=f.currentMonth=b,f.selectedYear=f.currentYear=c,this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){var b=$(a),c=this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(a,b){var c=$(a),d=this._getInst(c[0]);b=b!=null?b:this._formatDate(d),d.input&&d.input.val(b),this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[b,d]):d.input&&d.input.trigger("change"),d.inline?this._updateDatepicker(d):(this._hideDatepicker(),this._lastInput=d.input[0],typeof d.input[0]!="object"&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),d=this._getDate(a),e=this.formatDate(c,d,this._getFormatConfig(a));$(b).each(function(){$(this).val(e)})}},noWeekends:function(a){var b=a.getDay();return[b>0&&b<6,""]},iso8601Week:function(a){var b=new Date(a.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();b.setMonth(0),b.setDate(1);return Math.floor(Math.round((c-b)/864e5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var d=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;d=typeof d!="string"?d:(new Date).getFullYear()%100+parseInt(d,10);var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,g=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,h=(c?c.monthNames:null)||this._defaults.monthNames,i=-1,j=-1,k=-1,l=-1,m=!1,n=function(b){var c=s+1<a.length&&a.charAt(s+1)==b;c&&s++;return c},o=function(a){var c=n(a),d=a=="@"?14:a=="!"?20:a=="y"&&c?4:a=="o"?3:2,e=new RegExp("^\\d{1,"+d+"}"),f=b.substring(r).match(e);if(!f)throw"Missing number at position "+r;r+=f[0].length;return parseInt(f[0],10)},p=function(a,c,d){var e=$.map(n(a)?d:c,function(a,b){return[[b,a]]}).sort(function(a,b){return-(a[1].length-b[1].length)}),f=-1;$.each(e,function(a,c){var d=c[1];if(b.substr(r,d.length).toLowerCase()==d.toLowerCase()){f=c[0],r+=d.length;return!1}});if(f!=-1)return f+1;throw"Unknown name at position "+r},q=function(){if(b.charAt(r)!=a.charAt(s))throw"Unexpected literal at position "+r;r++},r=0;for(var s=0;s<a.length;s++)if(m)a.charAt(s)=="'"&&!n("'")?m=!1:q();else switch(a.charAt(s)){case"d":k=o("d");break;case"D":p("D",e,f);break;case"o":l=o("o");break;case"m":j=o("m");break;case"M":j=p("M",g,h);break;case"y":i=o("y");break;case"@":var t=new Date(o("@"));i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"!":var t=new Date((o("!")-this._ticksTo1970)/1e4);i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"'":n("'")?q():m=!0;break;default:q()}if(r<b.length)throw"Extra/unparsed characters found in date: "+b.substring(r);i==-1?i=(new Date).getFullYear():i<100&&(i+=(new Date).getFullYear()-(new Date).getFullYear()%100+(i<=d?0:-100));if(l>-1){j=1,k=l;for(;;){var u=this._getDaysInMonth(i,j-1);if(k<=u)break;j++,k-=u}}var t=this._daylightSavingAdjust(new Date(i,j-1,k));if(t.getFullYear()!=i||t.getMonth()+1!=j||t.getDate()!=k)throw"Invalid date";return t},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(a,b,c){if(!b)return"";var d=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,e=(c?c.dayNames:null)||this._defaults.dayNames,f=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,h=function(b){var c=m+1<a.length&&a.charAt(m+1)==b;c&&m++;return c},i=function(a,b,c){var d=""+b;if(h(a))while(d.length<c)d="0"+d;return d},j=function(a,b,c,d){return h(a)?d[b]:c[b]},k="",l=!1;if(b)for(var m=0;m<a.length;m++)if(l)a.charAt(m)=="'"&&!h("'")?l=!1:k+=a.charAt(m);else switch(a.charAt(m)){case"d":k+=i("d",b.getDate(),2);break;case"D":k+=j("D",b.getDay(),d,e);break;case"o":k+=i("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":k+=i("m",b.getMonth()+1,2);break;case"M":k+=j("M",b.getMonth(),f,g);break;case"y":k+=h("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case"@":k+=b.getTime();break;case"!":k+=b.getTime()*1e4+this._ticksTo1970;break;case"'":h("'")?k+="'":l=!0;break;default:k+=a.charAt(m)}return k},_possibleChars:function(a){var b="",c=!1,d=function(b){var c=e+1<a.length&&a.charAt(e+1)==b;c&&e++;return c};for(var e=0;e<a.length;e++)if(c)a.charAt(e)=="'"&&!d("'")?c=!1:b+=a.charAt(e);else switch(a.charAt(e)){case"d":case"m":case"y":case"@":b+="0123456789";break;case"D":case"M":return null;case"'":d("'")?b+="'":c=!0;break;default:b+=a.charAt(e)}return b},_get:function(a,b){return a.settings[b]!==undefined?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),d=a.lastVal=a.input?a.input.val():null,e,f;e=f=this._getDefaultDate(a);var g=this._getFormatConfig(a);try{e=this.parseDate(c,d,g)||f}catch(h){this.log(h),d=b?"":d}a.selectedDay=e.getDate(),a.drawMonth=a.selectedMonth=e.getMonth(),a.drawYear=a.selectedYear=e.getFullYear(),a.currentDay=d?e.getDate():0,a.currentMonth=d?e.getMonth():0,a.currentYear=d?e.getFullYear():0,this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var d=function(a){var b=new Date;b.setDate(b.getDate()+a);return b},e=function(b){try{return $.datepicker.parseDate($.datepicker._get(a,"dateFormat"),b,$.datepicker._getFormatConfig(a))}catch(c){}var d=(b.toLowerCase().match(/^c/)?$.datepicker._getDate(a):null)||new Date,e=d.getFullYear(),f=d.getMonth(),g=d.getDate(),h=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,i=h.exec(b);while(i){switch(i[2]||"d"){case"d":case"D":g+=parseInt(i[1],10);break;case"w":case"W":g+=parseInt(i[1],10)*7;break;case"m":case"M":f+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f));break;case"y":case"Y":e+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f))}i=h.exec(b)}return new Date(e,f,g)},f=b==null||b===""?c:typeof b=="string"?e(b):typeof b=="number"?isNaN(b)?c:d(b):new Date(b.getTime());f=f&&f.toString()=="Invalid Date"?c:f,f&&(f.setHours(0),f.setMinutes(0),f.setSeconds(0),f.setMilliseconds(0));return this._daylightSavingAdjust(f)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var d=!b,e=a.selectedMonth,f=a.selectedYear,g=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=g.getDate(),a.drawMonth=a.selectedMonth=a.currentMonth=g.getMonth(),a.drawYear=a.selectedYear=a.currentYear=g.getFullYear(),(e!=a.selectedMonth||f!=a.selectedYear)&&!c&&this._notifyChange(a),this._adjustInstDate(a),a.input&&a.input.val(d?"":this._formatDate(a))},_getDate:function(a){var b=!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return b},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),d=this._get(a,"showButtonPanel"),e=this._get(a,"hideIfNoPrevNext"),f=this._get(a,"navigationAsDateFormat"),g=this._getNumberOfMonths(a),h=this._get(a,"showCurrentAtPos"),i=this._get(a,"stepMonths"),j=g[0]!=1||g[1]!=1,k=this._daylightSavingAdjust(a.currentDay?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(9999,9,9)),l=this._getMinMaxDate(a,"min"),m=this._getMinMaxDate(a,"max"),n=a.drawMonth-h,o=a.drawYear;n<0&&(n+=12,o--);if(m){var p=this._daylightSavingAdjust(new Date(m.getFullYear(),m.getMonth()-g[0]*g[1]+1,m.getDate()));p=l&&p<l?l:p;while(this._daylightSavingAdjust(new Date(o,n,1))>p)n--,n<0&&(n=11,o--)}a.drawMonth=n,a.drawYear=o;var q=this._get(a,"prevText");q=f?this.formatDate(q,this._daylightSavingAdjust(new Date(o,n-i,1)),this._getFormatConfig(a)):q;var r=this._canAdjustMonth(a,-1,o,n)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', -"+i+", 'M');\""+' title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>":e?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>",s=this._get(a,"nextText");s=f?this.formatDate(s,this._daylightSavingAdjust(new Date(o,n+i,1)),this._getFormatConfig(a)):s;var t=this._canAdjustMonth(a,1,o,n)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', +"+i+", 'M');\""+' title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>":e?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>",u=this._get(a,"currentText"),v=this._get(a,"gotoCurrent")&&a.currentDay?k:b;u=f?this.formatDate(u,v,this._getFormatConfig(a)):u;var w=a.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+dpuuid+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>",x=d?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?w:"")+(this._isInRange(a,v)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._gotoToday('#"+a.id+"');\""+">"+u+"</button>":"")+(c?"":w)+"</div>":"",y=parseInt(this._get(a,"firstDay"),10);y=isNaN(y)?0:y;var z=this._get(a,"showWeek"),A=this._get(a,"dayNames"),B=this._get(a,"dayNamesShort"),C=this._get(a,"dayNamesMin"),D=this._get(a,"monthNames"),E=this._get(a,"monthNamesShort"),F=this._get(a,"beforeShowDay"),G=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths"),I=this._get(a,"calculateWeek")||this.iso8601Week,J=this._getDefaultDate(a),K="";for(var L=0;L<g[0];L++){var M="";this.maxRows=4;for(var N=0;N<g[1];N++){var O=this._daylightSavingAdjust(new Date(o,n,a.selectedDay)),P=" ui-corner-all",Q="";if(j){Q+='<div class="ui-datepicker-group';if(g[1]>1)switch(N){case 0:Q+=" ui-datepicker-group-first",P=" ui-corner-"+(c?"right":"left");break;case g[1]-1:Q+=" ui-datepicker-group-last",P=" ui-corner-"+(c?"left":"right");break;default:Q+=" ui-datepicker-group-middle",P=""}Q+='">'}Q+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+P+'">'+(/all|left/.test(P)&&L==0?c?t:r:"")+(/all|right/.test(P)&&L==0?c?r:t:"")+this._generateMonthYearHeader(a,n,o,l,m,L>0||N>0,D,E)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var R=z?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(var S=0;S<7;S++){var T=(S+y)%7;R+="<th"+((S+y+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+A[T]+'">'+C[T]+"</span></th>"}Q+=R+"</tr></thead><tbody>";var U=this._getDaysInMonth(o,n);o==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay,U));var V=(this._getFirstDayOfMonth(o,n)-y+7)%7,W=Math.ceil((V+U)/7),X=j?this.maxRows>W?this.maxRows:W:W;this.maxRows=X;var Y=this._daylightSavingAdjust(new Date(o,n,1-V));for(var Z=0;Z<X;Z++){Q+="<tr>";var _=z?'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(Y)+"</td>":"";for(var S=0;S<7;S++){var ba=F?F.apply(a.input?a.input[0]:null,[Y]):[!0,""],bb=Y.getMonth()!=n,bc=bb&&!H||!ba[0]||l&&Y<l||m&&Y>m;_+='<td class="'+((S+y+6)%7>=5?" ui-datepicker-week-end":"")+(bb?" ui-datepicker-other-month":"")+(Y.getTime()==O.getTime()&&n==a.selectedMonth&&a._keyEvent||J.getTime()==Y.getTime()&&J.getTime()==O.getTime()?" "+this._dayOverClass:"")+(bc?" "+this._unselectableClass+" ui-state-disabled":"")+(bb&&!G?"":" "+ba[1]+(Y.getTime()==k.getTime()?" "+this._currentClass:"")+(Y.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!bb||G)&&ba[2]?' title="'+ba[2]+'"':"")+(bc?"":' onclick="DP_jQuery_'+dpuuid+".datepicker._selectDay('#"+a.id+"',"+Y.getMonth()+","+Y.getFullYear()+', this);return false;"')+">"+(bb&&!G?"&#xa0;":bc?'<span class="ui-state-default">'+Y.getDate()+"</span>":'<a class="ui-state-default'+(Y.getTime()==b.getTime()?" ui-state-highlight":"")+(Y.getTime()==k.getTime()?" ui-state-active":"")+(bb?" ui-priority-secondary":"")+'" href="#">'+Y.getDate()+"</a>")+"</td>",Y.setDate(Y.getDate()+1),Y=this._daylightSavingAdjust(Y)}Q+=_+"</tr>"}n++,n>11&&(n=0,o++),Q+="</tbody></table>"+(j?"</div>"+(g[0]>0&&N==g[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),M+=Q}K+=M}K+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),
-a._keyEvent=!1;return K},_generateMonthYearHeader:function(a,b,c,d,e,f,g,h){var i=this._get(a,"changeMonth"),j=this._get(a,"changeYear"),k=this._get(a,"showMonthAfterYear"),l='<div class="ui-datepicker-title">',m="";if(f||!i)m+='<span class="ui-datepicker-month">'+g[b]+"</span>";else{var n=d&&d.getFullYear()==c,o=e&&e.getFullYear()==c;m+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" "+">";for(var p=0;p<12;p++)(!n||p>=d.getMonth())&&(!o||p<=e.getMonth())&&(m+='<option value="'+p+'"'+(p==b?' selected="selected"':"")+">"+h[p]+"</option>");m+="</select>"}k||(l+=m+(f||!i||!j?"&#xa0;":""));if(!a.yearshtml){a.yearshtml="";if(f||!j)l+='<span class="ui-datepicker-year">'+c+"</span>";else{var q=this._get(a,"yearRange").split(":"),r=(new Date).getFullYear(),s=function(a){var b=a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?r+parseInt(a,10):parseInt(a,10);return isNaN(b)?r:b},t=s(q[0]),u=Math.max(t,s(q[1]||""));t=d?Math.max(t,d.getFullYear()):t,u=e?Math.min(u,e.getFullYear()):u,a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" "+">";for(;t<=u;t++)a.yearshtml+='<option value="'+t+'"'+(t==c?' selected="selected"':"")+">"+t+"</option>";a.yearshtml+="</select>",l+=a.yearshtml,a.yearshtml=null}}l+=this._get(a,"yearSuffix"),k&&(l+=(f||!i||!j?"&#xa0;":"")+m),l+="</div>";return l},_adjustInstDate:function(a,b,c){var d=a.drawYear+(c=="Y"?b:0),e=a.drawMonth+(c=="M"?b:0),f=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+(c=="D"?b:0),g=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,f)));a.selectedDay=g.getDate(),a.drawMonth=a.selectedMonth=g.getMonth(),a.drawYear=a.selectedYear=g.getFullYear(),(c=="M"||c=="Y")&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),e=c&&b<c?c:b;e=d&&e>d?d:e;return e},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){var b=this._get(a,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),f=this._daylightSavingAdjust(new Date(c,d+(b<0?b:e[0]*e[1]),1));b<0&&f.setDate(this._getDaysInMonth(f.getFullYear(),f.getMonth()));return this._isInRange(a,f)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<=d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);var e=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(d,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),e,this._getFormatConfig(a))}}),$.fn.datepicker=function(a){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv),$.datepicker.initialized=!0);var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return $.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return $.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b));return this.each(function(){typeof a=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this].concat(b)):$.datepicker._attachDatepicker(this,a)})},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.8.18",window["DP_jQuery_"+dpuuid]=$})(jQuery);
-
-/*
- *	lib/js/lib/jquery/jquery.ui.autocomplete.js
- */
-/* jQuery UI Autocomplete 1.8.18
-*
-* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
-* Dual licensed under the MIT or GPL Version 2 licenses.
-* http://jquery.org/license
-*
-* http://docs.jquery.com/UI/Autocomplete
-*
-* Depends:
-*	jquery.ui.core.js
-*	jquery.ui.widget.js
-*	jquery.ui.position.js
-*/(function(a,b){var c=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var b=this,c=this.element[0].ownerDocument,d;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!b.options.disabled&&!b.element.propAttr("readOnly")){d=!1;var e=a.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:b._move("previousPage",c);break;case e.PAGE_DOWN:b._move("nextPage",c);break;case e.UP:b._move("previous",c),c.preventDefault();break;case e.DOWN:b._move("next",c),c.preventDefault();break;case e.ENTER:case e.NUMPAD_ENTER:b.menu.active&&(d=!0,c.preventDefault());case e.TAB:if(!b.menu.active)return;b.menu.select(c);break;case e.ESCAPE:b.element.val(b.term),b.close(c);break;default:clearTimeout(b.searching),b.searching=setTimeout(function(){b.term!=b.element.val()&&(b.selectedItem=null,b.search(null,c))},b.options.delay)}}}).bind("keypress.autocomplete",function(a){d&&(d=!1,a.preventDefault())}).bind("focus.autocomplete",function(){b.options.disabled||(b.selectedItem=null,b.previous=b.element.val())}).bind("blur.autocomplete",function(a){b.options.disabled||(clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150))}),this._initSource(),this.response=function(){return b._response.apply(b,arguments)},this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",c)[0]).mousedown(function(c){var d=b.menu.element[0];a(c.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(c){c.target!==b.element[0]&&c.target!==d&&!a.ui.contains(d,c.target)&&b.close()})},1),setTimeout(function(){clearTimeout(b.closing)},13)}).menu({focus:function(a,c){var d=c.item.data("item.autocomplete");!1!==b._trigger("focus",a,{item:d})&&/^key/.test(a.originalEvent.type)&&b.element.val(d.value)},selected:function(a,d){var e=d.item.data("item.autocomplete"),f=b.previous;b.element[0]!==c.activeElement&&(b.element.focus(),b.previous=f,setTimeout(function(){b.previous=f,b.selectedItem=e},1)),!1!==b._trigger("select",a,{item:e})&&b.element.val(e.value),b.term=b.element.val(),b.close(a),b.selectedItem=e},blur:function(a,c){b.menu.element.is(":visible")&&b.element.val()!==b.term&&b.element.val(b.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"),a.fn.bgiframe&&this.menu.element.bgiframe(),b.beforeunloadHandler=function(){b.element.removeAttr("autocomplete")},a(window).bind("beforeunload",b.beforeunloadHandler)},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"),this.menu.element.remove(),a(window).unbind("beforeunload",this.beforeunloadHandler),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b==="source"&&this._initSource(),b==="appendTo"&&this.menu.element.appendTo(a(c||"body",this.element[0].ownerDocument)[0]),b==="disabled"&&c&&this.xhr&&this.xhr.abort()},_initSource:function(){var b=this,d,e;a.isArray(this.options.source)?(d=this.options.source,this.source=function(b,c){c(a.ui.autocomplete.filter(d,b.term))}):typeof this.options.source=="string"?(e=this.options.source,this.source=function(d,f){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:e,data:d,dataType:"json",context:{autocompleteRequest:++c},success:function(a,b){this.autocompleteRequest===c&&f(a)},error:function(){this.autocompleteRequest===c&&f([])}})}):this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val(),this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)!==!1)return this._search(a)},_search:function(a){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.source({term:a},this.response)},_response:function(a){!this.options.disabled&&a&&a.length?(a=this._normalize(a),this._suggest(a),this._trigger("open")):this.close(),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.deactivate(),this._trigger("close",a))},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(b){if(b.length&&b[0].label&&b[0].value)return b;return a.map(b,function(b){if(typeof b=="string")return{label:b,value:b};return a.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(b){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(c,b),this.menu.deactivate(),this.menu.refresh(),c.show(),this._resizeMenu(),c.position(a.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(new a.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(b,c){var d=this;a.each(c,function(a,c){d._renderItem(b,c)})},_renderItem:function(b,c){return a("<li></li>").data("item.autocomplete",c).append(a("<a></a>").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible"))this.search(null,b);else{if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term),this.menu.deactivate();return}this.menu[a](b)}},widget:function(){return this.menu.element}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})})(jQuery),function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){!a(c.target).closest(".ui-menu-item a").length||(c.preventDefault(),b.select(c))}),this.refresh()},refresh:function(){var b=this,c=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");c.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(c){b.activate(c,a(this).parent())}).mouseleave(function(){b.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.scrollTop(),e=this.element.height();c<0?this.element.scrollTop(d+c):c>=e&&this.element.scrollTop(d+c-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end(),this._trigger("focus",a,{item:b})},deactivate:function(){!this.active||(this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null)},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(!this.active)this.activate(c,this.element.children(b));else{var d=this.active[a+"All"](".ui-menu-item").eq(0);d.length?this.activate(c,d):this.activate(c,this.element.children(b))}},nextPage:function(b){if(this.hasScroll()){if(!this.active||this.last()){this.activate(b,this.element.children(".ui-menu-item:first"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c-d+a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:last")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(b){if(this.hasScroll()){if(!this.active||this.first()){this.activate(b,this.element.children(".ui-menu-item:last"));return}var c=this.active.offset().top,d=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10}),result.length||(result=this.element.children(".ui-menu-item:first")),this.activate(b,result)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[a.fn.prop?"prop":"attr"]("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})}(jQuery);
-
-/*
- *	lib/js/lib/tiny_mce_33/jquery.tinymce.js
- */
-(function(b){var e,d,a=[],c=window;b.fn.tinymce=function(j){var p=this,g,k,h,m,i,l="",n="";if(!p.length){return p}if(!j){return tinyMCE.get(p[0].id)}function o(){var r=[],q=0;if(f){f();f=null}p.each(function(t,u){var s,w=u.id,v=j.oninit;if(!w){u.id=w=tinymce.DOM.uniqueId()}s=new tinymce.Editor(w,j);r.push(s);if(v){s.onInit.add(function(){var x,y=v;if(++q==r.length){if(tinymce.is(y,"string")){x=(y.indexOf(".")===-1)?null:tinymce.resolve(y.replace(/\.\w+$/,""));y=tinymce.resolve(y)}y.apply(x||tinymce,r)}})}});b.each(r,function(t,s){s.render()})}if(!c.tinymce&&!d&&(g=j.script_url)){d=1;h=g.substring(0,g.lastIndexOf("/"));if(/_(src|dev)\.js/g.test(g)){n="_src"}m=g.lastIndexOf("?");if(m!=-1){l=g.substring(m+1)}c.tinyMCEPreInit=c.tinyMCEPreInit||{base:h,suffix:n,query:l};if(g.indexOf("gzip")!=-1){i=j.language||"en";g=g+(/\?/.test(g)?"&":"?")+"js=true&core=true&suffix="+escape(n)+"&themes="+escape(j.theme)+"&plugins="+escape(j.plugins)+"&languages="+i;if(!c.tinyMCE_GZ){tinyMCE_GZ={start:function(){tinymce.suffix=n;function q(r){tinymce.ScriptLoader.markDone(tinyMCE.baseURI.toAbsolute(r))}q("langs/"+i+".js");q("themes/"+j.theme+"/editor_template"+n+".js");q("themes/"+j.theme+"/langs/"+i+".js");b.each(j.plugins.split(","),function(s,r){if(r){q("plugins/"+r+"/editor_plugin"+n+".js");q("plugins/"+r+"/langs/"+i+".js")}})},end:function(){}}}}b.ajax({type:"GET",url:g,dataType:"script",cache:true,success:function(){tinymce.dom.Event.domLoaded=1;d=2;if(j.script_loaded){j.script_loaded()}o();b.each(a,function(q,r){r()})}})}else{if(d===1){a.push(o)}else{o()}}return p};b.extend(b.expr[":"],{tinymce:function(g){return g.id&&!!tinyMCE.get(g.id)}});function f(){function i(l){if(l==="remove"){this.each(function(n,o){var m=h(o);if(m){m.remove()}})}this.find("span.mceEditor,div.mceEditor").each(function(n,o){var m=tinyMCE.get(o.id.replace(/_parent$/,""));if(m){m.remove()}})}function k(n){var m=this,l;if(n!==e){i.call(m);m.each(function(p,q){var o;if(o=tinyMCE.get(q.id)){o.setContent(n)}})}else{if(m.length>0){if(l=tinyMCE.get(m[0].id)){return l.getContent()}}}}function h(m){var l=null;(m)&&(m.id)&&(c.tinymce)&&(l=tinyMCE.get(m.id));return l}function g(l){return !!((l)&&(l.length)&&(c.tinymce)&&(l.is(":tinymce")))}var j={};b.each(["text","html","val"],function(n,l){var o=j[l]=b.fn[l],m=(l==="text");b.fn[l]=function(s){var p=this;if(!g(p)){return o.apply(p,arguments)}if(s!==e){k.call(p.filter(":tinymce"),s);o.apply(p.not(":tinymce"),arguments);return p}else{var r="";var q=arguments;(m?p:p.eq(0)).each(function(u,v){var t=h(v);r+=t?(m?t.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):t.getContent()):o.apply(b(v),q)});return r}}});b.each(["append","prepend"],function(n,m){var o=j[m]=b.fn[m],l=(m==="prepend");b.fn[m]=function(q){var p=this;if(!g(p)){return o.apply(p,arguments)}if(q!==e){p.filter(":tinymce").each(function(s,t){var r=h(t);r&&r.setContent(l?q+r.getContent():r.getContent()+q)});o.apply(p.not(":tinymce"),arguments);return p}}});b.each(["remove","replaceWith","replaceAll","empty"],function(m,l){var n=j[l]=b.fn[l];b.fn[l]=function(){i.call(this,l);return n.apply(this,arguments)}});j.attr=b.fn.attr;b.fn.attr=function(n,q,o){var m=this;if((!n)||(n!=="value")||(!g(m))){return j.attr.call(m,n,q,o)}if(q!==e){k.call(m.filter(":tinymce"),q);j.attr.call(m.not(":tinymce"),n,q,o);return m}else{var p=m[0],l=h(p);return l?l.getContent():j.attr.call(b(p),n,q,o)}}}})(jQuery);
-
-/*
- *	lib/js/lib/bootstrap.min.js
- */
-!function(a){a(function(){"use strict",a.support.transition=function(){var b=document.body||document.documentElement,c=b.style,d=c.transition!==undefined||c.WebkitTransition!==undefined||c.MozTransition!==undefined||c.MsTransition!==undefined||c.OTransition!==undefined;return d&&{end:function(){var b="TransitionEnd";return a.browser.webkit?b="webkitTransitionEnd":a.browser.mozilla?b="transitionend":a.browser.opera&&(b="oTransitionEnd"),b}()}}()})}(window.jQuery),!function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype={constructor:c,close:function(b){function f(){e.remove(),e.trigger("closed")}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),e=a(d),e.trigger("close"),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()}},a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a(function(){a("body").on("click.alert.data-api",b,c.prototype.close)})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype={constructor:b,setState:function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},toggle:function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")}},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){a(b.target).button("toggle")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.carousel.defaults,c),this.options.slide&&this.slide(this.options.slide)};b.prototype={cycle:function(){return this.interval=setInterval(a.proxy(this.next,this),this.options.interval),this},to:function(b){var c=this.$element.find(".active"),d=c.parent().children(),e=d.index(c),f=this;if(b>d.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(){return clearInterval(this.interval),this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this;return this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h](),!a.support.transition&&this.$element.hasClass("slide")?(this.$element.trigger("slide"),d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")):(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.trigger("slide"),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})),f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=typeof c=="object"&&c;e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):typeof c=="string"||(c=f.slide)?e[c]():e.cycle()})},a.fn.carousel.defaults={interval:5e3},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api","[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find(".in"),e;d&&d.length&&(e=d.data("collapse"),d.collapse("hide"),e||d.data("collapse",null)),this.$element[b](0),this.transition("addClass","show","shown"),this.$element[b](this.$element[0][c])},hide:function(){var a=this.dimension();this.reset(this.$element[a]()),this.transition("removeClass","hide","hidden"),this.$element[a](0)},reset:function(a){var b=this.dimension();this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element.addClass("collapse")},transition:function(b,c,d){var e=this,f=function(){c=="show"&&e.reset(),e.$element.trigger(d)};this.$element.trigger(c)[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();a(e).collapse(f)})})}(window.jQuery),!function(a){function d(){a(b).parent().removeClass("open")}"use strict";var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e=c.attr("data-target"),f,g;return e||(e=c.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,"")),f=a(e),f.length||(f=c.parent()),g=f.hasClass("open"),d(),!g&&f.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(f,this)):f.call(this)):b&&b()}function f(){this.$backdrop.remove(),this.$backdrop=null}function g(){var b=this;this.isShown&&this.options.keyboard?a(document).on("keyup.dismiss.modal",function(a){a.which==27&&b.hide()}):this.isShown||a(document).off("keyup.dismiss.modal")}"use strict";var b=function(b,c){this.options=a.extend({},a.fn.modal.defaults,c),this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this))};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this;if(this.isShown)return;a("body").addClass("modal-open"),this.isShown=!0,this.$element.trigger("show"),g.call(this),e.call(this,function(){var c=a.support.transition&&b.$element.hasClass("fade");!b.$element.parent().length&&b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in"),c?b.$element.one(a.support.transition.end,function(){b.$element.trigger("shown")}):b.$element.trigger("shown")})},hide:function(b){b&&b.preventDefault();if(!this.isShown)return;var e=this;this.isShown=!1,a("body").removeClass("modal-open"),g.call(this),this.$element.trigger("hide").removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?c.call(this):d.call(this)}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=typeof c=="object"&&c;e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({},e.data(),c.data());b.preventDefault(),e.modal(f)})})}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.show?c.show():(c.hoverState="in",setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show))},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.hide?c.hide():(c.hoverState="out",setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide))},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip();a.find(".tooltip-inner").html(this.getTitle()),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}var b=this,c=this.tip();c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove()},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,delay:0,selector:!1,placement:"top",trigger:"hover",title:"",template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'}}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var b=this.tip(),c=this.getTitle(),d=this.getContent();b.find(".popover-title")[a.type(c)=="object"?"append":"html"](c),b.find(".popover-content > *")[a.type(d)=="object"?"append":"html"](d),b.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",content:"",template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'})}(window.jQuery),!function(a){function b(b,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body").on("click.scroll.data-api",this.selector,d),this.refresh(),this.process()}"use strict",b.prototype={constructor:b,refresh:function(){this.targets=this.$body.find(this.selector).map(function(){var b=a(this).attr("href");return/^#\w/.test(b)&&a(b).length?b:null}),this.offsets=a.map(this.targets,function(b){return a(b).position().top})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.offsets,c=this.targets,d=this.activeTarget,e;for(e=b.length;e--;)d!=c[e]&&a>=b[e]&&(!b[e+1]||a<=b[e+1])&&this.activate(c[e])},activate:function(a){var b;this.activeTarget=a,this.$body.find(this.selector).parent(".active").removeClass("active"),b=this.$body.find(this.selector+'[href="'+a+'"]').parent("li").addClass("active"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active")}},a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a(function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active a").last()[0],b.trigger({type:"show",relatedTarget:e}),f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}},a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a(function(){a("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.$menu=a(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(a),this.hide()},show:function(){var b=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:b.top+b.height,left:b.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(b){var c=this,d,e;return this.query=this.$element.val(),this.query?(d=a.grep(this.source,function(a){if(c.matcher(a))return a}),d=this.sorter(d),d.length?this.render(d.slice(0,this.options.items)).show():this.shown?this.hide():this):this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){var b=[],c=[],d=[],e;while(e=a.shift())e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?c.push(e):d.push(e):b.push(e);return b.concat(c,d)},highlighter:function(a){return a.replace(new RegExp("("+this.query+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),(a.browser.webkit||a.browser.msie)&&this.$element.on("keydown",a.proxy(this.keypress,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},keyup:function(a){a.stopPropagation(),a.preventDefault();switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:this.hide();break;default:this.lookup()}},keypress:function(a){a.stopPropagation();if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}},blur:function(a){var b=this;a.stopPropagation(),a.preventDefault(),setTimeout(function(){b.hide()},150)},click:function(a){a.stopPropagation(),a.preventDefault(),this.select()},mouseenter:function(b){this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>'},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;b.preventDefault(),c.typeahead(c.data())})})}(window.jQuery);
-
-/*
- *	lib/js/lib/sprintf.js
- */
-var sprintf=(function(){function get_type(variable){return Object.prototype.toString.call(variable).slice(8,-1).toLowerCase();}
-function str_repeat(input,multiplier){for(var output=[];multiplier>0;output[--multiplier]=input){}
-return output.join('');}
-var str_format=function(){if(!str_format.cache.hasOwnProperty(arguments[0])){str_format.cache[arguments[0]]=str_format.parse(arguments[0]);}
-return str_format.format.call(null,str_format.cache[arguments[0]],arguments);};str_format.format=function(parse_tree,argv){var cursor=1,tree_length=parse_tree.length,node_type='',arg,output=[],i,k,match,pad,pad_character,pad_length;for(i=0;i<tree_length;i++){node_type=get_type(parse_tree[i]);if(node_type==='string'){output.push(parse_tree[i]);}
-else if(node_type==='array'){match=parse_tree[i];if(match[2]){arg=argv[cursor];for(k=0;k<match[2].length;k++){if(!arg.hasOwnProperty(match[2][k])){arg='';}else{arg=arg[match[2][k]];}}}
-else if(match[1]){arg=argv[match[1]];}
-else{arg=argv[cursor++];}
-if(/[^s]/.test(match[8])&&(get_type(arg)!='number')){throw(sprintf('[sprintf] expecting number but found %s',get_type(arg)));}
-switch(match[8]){case'b':arg=arg.toString(2);break;case'c':arg=String.fromCharCode(arg);break;case'd':arg=parseInt(arg,10);break;case'e':arg=match[7]?arg.toExponential(match[7]):arg.toExponential();break;case'f':arg=match[7]?parseFloat(arg).toFixed(match[7]):parseFloat(arg);break;case'o':arg=arg.toString(8);break;case's':arg=((arg=String(arg))&&match[7]?arg.substring(0,match[7]):arg);break;case'u':arg=Math.abs(arg);break;case'x':arg=arg.toString(16);break;case'X':arg=arg.toString(16).toUpperCase();break;}
-arg=(/[def]/.test(match[8])&&match[3]&&arg>=0?'+'+arg:arg);pad_character=match[4]?match[4]=='0'?'0':match[4].charAt(1):' ';pad_length=match[6]-String(arg).length;pad=match[6]?str_repeat(pad_character,pad_length):'';output.push(match[5]?arg+pad:pad+arg);}}
-return output.join('');};str_format.cache={};str_format.parse=function(fmt){var _fmt=fmt,match=[],parse_tree=[],arg_names=0;while(_fmt){if((match=/^[^\x25]+/.exec(_fmt))!==null){parse_tree.push(match[0]);}
-else if((match=/^\x25{2}/.exec(_fmt))!==null){parse_tree.push('%');}
-else if((match=/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt))!==null){if(match[2]){arg_names|=1;var field_list=[],replacement_field=match[2],field_match=[];if((field_match=/^([a-z_][a-z_\d]*)/i.exec(replacement_field))!==null){field_list.push(field_match[1]);while((replacement_field=replacement_field.substring(field_match[0].length))!==''){if((field_match=/^\.([a-z_][a-z_\d]*)/i.exec(replacement_field))!==null){field_list.push(field_match[1]);}
-else if((field_match=/^\[(\d+)\]/.exec(replacement_field))!==null){field_list.push(field_match[1]);}
-else{throw('[sprintf] huh?');}}}
-else{throw('[sprintf] huh?');}
-match[2]=field_list;}
-else{arg_names|=2;}
-if(arg_names===3){throw('[sprintf] mixing positional and named placeholders is not (yet) supported');}
-parse_tree.push(match);}
-else{throw('[sprintf] huh?');}
-_fmt=_fmt.substring(match[0].length);}
-return parse_tree;};return str_format;})();var vsprintf=function(fmt,argv){argv.unshift(fmt);return sprintf.apply(null,argv);};
-/*
- *	lib/js/core.min.js
- */
-
-/*
- *	lib/js/wn/class.js
- */;(function(){var initializing=false,fnTest=/xyz/.test(function(){xyz;})?/\b_super\b/:/.*/;this.Class=function(){};Class.extend=function(prop){var _super=this.prototype;initializing=true;var prototype=new this();initializing=false;for(var name in prop){prototype[name]=typeof prop[name]=="function"&&typeof _super[name]=="function"&&fnTest.test(prop[name])?(function(name,fn){return function(){var tmp=this._super;this._super=_super[name];var ret=fn.apply(this,arguments);this._super=tmp;return ret;};})(name,prop[name]):prop[name];}
-function Class(){if(!initializing&&this.init)
-this.init.apply(this,arguments);}
-Class.prototype=prototype;Class.prototype.constructor=Class;Class.extend=arguments.callee;return Class;};})();
-/*
- *	lib/js/wn/provide.js
- */
-if(!window.wn)wn={}
-wn.provide=function(namespace){var nsl=namespace.split('.');var l=nsl.length;var parent=window;for(var i=0;i<l;i++){var n=nsl[i];if(!parent[n]){parent[n]={}}
-parent=parent[n];}}
-wn.provide('wn.settings');wn.provide('wn.ui');
-/*
- *	lib/js/wn/assets.js
- */
-wn.require=function(items){if(typeof items==="string"){items=[items];}
-var l=items.length;for(var i=0;i<l;i++){var src=items[i];wn.assets.execute(src);}}
-wn.assets={executed_:{},check:function(){if(window._version_number!=localStorage.getItem("_version_number")){localStorage.clear();localStorage.setItem("_version_number",window._version_number)}},exists:function(src){if('localStorage'in window&&localStorage.getItem(src)&&!wn.boot.developer_mode)
-return true},add:function(src,txt){if('localStorage'in window){localStorage.setItem(src,txt);}},get:function(src){return localStorage.getItem(src);},extn:function(src){if(src.indexOf('?')!=-1){src=src.split('?').slice(-1)[0];}
-return src.split('.').slice(-1)[0];},load:function(src){var t=src;$.ajax({url:t,data:{q:Math.floor(Math.random()*1000)},dataType:'text',success:function(txt){wn.assets.add(src,txt);},async:false})},execute:function(src){if(!wn.assets.exists(src)){wn.assets.load(src);}
-var type=wn.assets.extn(src);if(wn.assets.handler[type]){wn.assets.handler[type](wn.assets.get(src),src);wn.assets.executed_[src]=1;}},handler:{js:function(txt,src){wn.dom.eval(txt);},css:function(txt,src){wn.dom.set_style(txt);}}}
-/*
- *	lib/js/wn/dom.js
- */
-wn.provide('wn.dom');wn.dom={id_count:0,by_id:function(id){return document.getElementById(id);},set_unique_id:function(ele){var id='unique-'+wn.dom.id_count;if(ele)
-ele.setAttribute('id',id);wn.dom.id_count++;return id;},eval:function(txt){if(!txt)return;var el=document.createElement('script');el.appendChild(document.createTextNode(txt));document.getElementsByTagName('head')[0].appendChild(el);},set_style:function(txt){if(!txt)return;var se=document.createElement('style');se.type="text/css";if(se.styleSheet){se.styleSheet.cssText=txt;}else{se.appendChild(document.createTextNode(txt));}
-document.getElementsByTagName('head')[0].appendChild(se);},add:function(parent,newtag,className,cs,innerHTML,onclick){if(parent&&parent.substr)parent=wn.dom.by_id(parent);var c=document.createElement(newtag);if(parent)
-parent.appendChild(c);if(className){if(newtag.toLowerCase()=='img')
-c.src=className
-else
-c.className=className;}
-if(cs)wn.dom.css(c,cs);if(innerHTML)c.innerHTML=innerHTML;if(onclick)c.onclick=onclick;return c;},css:function(ele,s){if(ele&&s){for(var i in s)ele.style[i]=s[i];};return ele;},placeholder:function(dim,letter){function getsinglecol(){return Math.min(Math.round(Math.random()*9)*Math.round(Math.random()*1)+3,9)}
-function getcol(){return''+getsinglecol()+getsinglecol()+getsinglecol();}
-args={width:Math.round(flt(dim)*0.7)+'px',height:Math.round(flt(dim)*0.7)+'px',padding:Math.round(flt(dim)*0.15)+'px','font-size':Math.round(flt(dim)*0.6)+'px',col1:getcol(),col2:getcol(),letter:letter.substr(0,1).toUpperCase()}
-return repl('<div style="\
-   height: %(height)s; \
-   width: %(width)s; \
-   font-size: %(font-size)s; \
-   color: #fff; \
-   text-align: center; \
-   padding: %(padding)s; \
-   background: -moz-linear-gradient(top,  #%(col1)s 0%, #%(col2)s 99%); /* FF3.6+ */\
-   background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#%(col1)s), color-stop(99%,#%(col2)s)); /* Chrome,Safari4+ */\
-   background: -webkit-linear-gradient(top,  #%(col1)s 0%,#%(col2)s 99%); /* Chrome10+,Safari5.1+ */\
-   background: -o-linear-gradient(top,  #%(col1)s 0%,#%(col2)s 99%); /* Opera 11.10+ */\
-   background: -ms-linear-gradient(top,  #%(col1)s 0%,#%(col2)s 99%); /* IE10+ */\
-   background: linear-gradient(top,  #%(col1)s 0%,#%(col2)s 99%); /* W3C */\
-   filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#%(col1)s\', endColorstr=\'#%(col2)s\',GradientType=0 ); /* IE6-9 */\
-   ">%(letter)s</div>',args);}}
-wn.get_cookie=function(c){var clist=(document.cookie+'').split(';');var cookies={};for(var i=0;i<clist.length;i++){var tmp=clist[i].split('=');cookies[strip(tmp[0])]=strip(tmp[1]);}
-return cookies[c];}
-wn.dom.set_box_shadow=function(ele,spread){$(ele).css('-moz-box-shadow','0px 0px '+spread+'px rgba(0,0,0,0.3);')
-$(ele).css('-webkit-box-shadow','0px 0px '+spread+'px rgba(0,0,0,0.3);')
-$(ele).css('-box-shadow','0px 0px '+spread+'px rgba(0,0,0,0.3);')};(function($){$.fn.add_options=function(options_list){for(var i=0;i<options_list.length;i++){var v=options_list[i];value=v.value||v;label=v.label||v;$('<option>').html(label).attr('value',value).appendTo(this);}
-this.selectedIndex=0;return $(this);}
-$.fn.set_working=function(){var ele=this.get(0);$(ele).attr('disabled','disabled');if(ele.loading_img){$(ele.loading_img).toggle(true);}else{ele.loading_img=$('<img src="images/lib/ui/button-load.gif" \
-    style="margin-left: 4px; margin-bottom: -2px; display: inline;" />').insertAfter(ele);}}
-$.fn.done_working=function(){var ele=this.get(0);$(ele).attr('disabled',null);if(ele.loading_img){$(ele.loading_img).toggle(false);};}})(jQuery);wn.to_csv=function(data){var res=[];$.each(data,function(i,row){row=$.map(row,function(col){return typeof(col)==="string"?('"'+col.replace(/"/g,'\"')+'"'):col;});res.push(row.join(","));});return res.join("\n");}
-/*
- *	lib/js/wn/model.js
- */
-wn.provide('wn.model');wn.model={no_value_type:['Section Break','Column Break','HTML','Table','Button','Image'],new_names:{},with_doctype:function(doctype,callback){if(locals.DocType[doctype]){callback();}else{wn.call({method:'webnotes.widgets.form.load.getdoctype',args:{doctype:doctype},callback:callback});}},with_doc:function(doctype,name,callback){if(!name)name=doctype;if(locals[doctype]&&locals[doctype][name]){callback(name);}else{wn.call({method:'webnotes.widgets.form.load.getdoc',args:{doctype:doctype,name:name},callback:function(r){callback(name,r);}});}},can_delete:function(doctype){if(!doctype)return false;return wn.boot.profile.can_cancel.indexOf(doctype)!=-1;},has_value:function(dt,dn,fn){var val=locals[dt]&&locals[dt][dn]&&locals[dt][dn][fn];var df=wn.meta.get_docfield(dt,fn,dn);if(df.fieldtype=='Table'){var ret=false;$.each(locals[df.options]||{},function(k,d){if(d.parent==dn&&d.parenttype==dt&&d.parentfield==df.fieldname){ret=true;}});}else{var ret=!is_null(val);}
-return ret?true:false;}}
-/*
- *	lib/js/wn/meta.js
- */
-wn.provide('wn.meta.docfield_map');wn.provide('wn.meta.docfield_list');wn.provide('wn.meta.doctypes');$.extend(wn.meta,{add_field:function(df){wn.provide('wn.meta.docfield_map.'+df.parent);wn.meta.docfield_map[df.parent][df.fieldname||df.label]=df;if(!wn.meta.docfield_list[df.parent])
-wn.meta.docfield_list[df.parent]=[];for(var i in wn.meta.docfield_list[df.parent]){var d=wn.meta.docfield_list[df.parent][i];if(df.fieldname==d.fieldname)
-return;}
-wn.meta.docfield_list[df.parent].push(df);},get_docfield:function(dt,fn,dn){if(dn&&local_dt[dt]&&local_dt[dt][dn]){return local_dt[dt][dn][fn];}else{return wn.meta.docfield_map[dt][fn];}}});
-/*
- *	lib/js/wn/misc/tools.js
- */
-wn.markdown=function(txt){if(!wn.md2html){wn.require('js/lib/showdown.js');wn.md2html=new Showdown.converter();}
-return'<div class="markdown">'+wn.md2html.makeHtml(txt)+'</div>';}
-/*
- *	lib/js/wn/misc/user.js
- */
-wn.user_info=function(uid){var def={'fullname':uid,'image':'images/lib/ui/no_img_m.gif'}
-if(!wn.boot.user_info)return def
-if(!wn.boot.user_info[uid])return def
-if(!wn.boot.user_info[uid].fullname)
-wn.boot.user_info[uid].fullname=uid;if(!wn.boot.user_info[uid].image)
-wn.boot.user_info[uid].image=def.image;return wn.boot.user_info[uid];}
-wn.provide('wn.user');$.extend(wn.user,{name:(wn.boot?wn.boot.profile.name:'Guest'),has_role:function(rl){if(typeof rl=='string')
-rl=[rl];for(var i in rl){if((wn.boot?wn.boot.profile.roles:['Guest']).indexOf(rl[i])!=-1)
-return true;}},is_report_manager:function(){return wn.user.has_role(['Administrator','System Manager','Report Manager']);}})
-wn.session_alive=true;$(document).bind('mousemove',function(){wn.session_alive=true;if(wn.session_alive_timeout)
-clearTimeout(wn.session_alive_timeout);wn.session_alive_timeout=setTimeout('wn.session_alive=false;',30000);})
-/*
- *	lib/js/lib/json2.js
- */
-var JSON;if(!JSON){JSON={};}
-(function(){"use strict";function f(n){return n<10?'0'+n:n;}
-if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+
-f(this.getUTCMonth()+1)+'-'+
-f(this.getUTCDate())+'T'+
-f(this.getUTCHours())+':'+
-f(this.getUTCMinutes())+':'+
-f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}
-var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
-function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
-if(typeof rep==='function'){value=rep.call(holder,key,value);}
-switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
-gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
-v=partial.length===0?'[]':gap?'[\n'+gap+partial.join(',\n'+gap)+'\n'+mind+']':'['+partial.join(',')+']';gap=mind;return v;}
-if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){if(typeof rep[i]==='string'){k=rep[i];v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
-v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
-if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
-rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
-return str('',{'':value});};}
-if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
-return reviver.call(holder,key,value);}
-text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
-('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
-if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
-throw new SyntaxError('JSON.parse');};}}());
-/*
- *	lib/js/wn/router.js
- */
-wn.re_route={}
-wn.route=function(){if(wn.re_route[window.location.hash]){var re_route_val=wn.get_route_str(wn.re_route[window.location.hash]);var cur_route_val=wn.get_route_str(wn._cur_route);if(decodeURIComponent(re_route_val)===decodeURIComponent(cur_route_val)){window.history.back();return;}else{window.location.hash=wn.re_route[window.location.hash];}}
-wn._cur_route=window.location.hash;route=wn.get_route();switch(route[0]){case"List":wn.views.doclistview.show(route[1]);break;case"Form":if(route.length>3){route[2]=route.splice(2).join('/');}
-wn.views.formview.show(route[1],route[2]);break;case"Report":wn.views.reportview.show(route[1],route[2]);break;case"Report2":wn.views.reportview2.show();break;default:wn.views.pageview.show(route[0]);}}
-wn.get_route=function(route){return $.map(wn.get_route_str(route).split('/'),function(r){return decodeURIComponent(r);});}
-wn.get_route_str=function(route){if(!route)
-route=window.location.hash;if(route.substr(0,1)=='#')route=route.substr(1);if(route.substr(0,1)=='!')route=route.substr(1);return route;}
-wn.set_route=function(){route=$.map(arguments,function(a){return encodeURIComponent(a)}).join('/');window.location.hash=route;wn.app.set_favicon();}
-wn._cur_route=null;$(window).bind('hashchange',function(){if(location.hash==wn._cur_route)
-return;wn.route();});
-/*
- *	lib/js/wn/ui/listing.js
- */
-wn.provide('wn.ui');wn.ui.Listing=Class.extend({init:function(opts){this.opts=opts||{};this.page_length=20;this.start=0;this.data=[];if(opts){this.make();}},prepare_opts:function(){if(this.opts.new_doctype){if(wn.boot.profile.can_create.indexOf(this.opts.new_doctype)==-1){this.opts.new_doctype=null;}else{this.opts.new_doctype=get_doctype_label(this.opts.new_doctype);}}
-if(!this.opts.no_result_message){this.opts.no_result_message='Nothing to show'}},make:function(opts){if(opts){this.opts=opts;}
-this.prepare_opts();$.extend(this,this.opts);$(this.parent).html(repl('\
-   <div class="wnlist">\
-    <h3 class="title hide">%(title)s</h3>\
-    \
-    <div class="list-filters hide">\
-     <div class="show_filters well">\
-      <div class="filter_area"></div>\
-      <div>\
-       <button class="btn btn-small btn-info search-btn">\
-        <i class="icon-refresh icon-white"></i> Search</button>\
-       <button class="btn btn-small add-filter-btn">\
-        <i class="icon-plus"></i> Add Filter</button>\
-      </div>\
-     </div>\
-    </div>\
-    \
-    <div style="margin-bottom:9px" class="list-toolbar-wrapper">\
-     <div class="list-toolbar" style="display:inline-block; margin-right: 10px;">\
-     </div>\
-     <div style="display:inline-block; width: 24px; margin-left: 4px">\
-      <img src="images/lib/ui/button-load.gif" \
-      class="img-load"/></div>\
-    </div><div style="clear:both"></div>\
-    \
-    <div class="no-result help hide">\
-     %(no_result_message)s\
-    </div>\
-    \
-    <div class="result">\
-     <div class="result-list"></div>\
-    </div>\
-    \
-    <div class="paging-button">\
-     <button class="btn btn-small btn-more hide">More...</div>\
-    </div>\
-   </div>\
-  ',this.opts));this.$w=$(this.parent).find('.wnlist');this.set_events();if(this.appframe){this.$w.find('.list-toolbar-wrapper').toggle(false);}
-if(this.show_filters){this.make_filters();}},add_button:function(label,click,icon){if(this.appframe){return this.appframe.add_button(label,click,icon)}else{$button=$('<button class="btn btn-small"></button>').appendTo(this.$w.find('.list-toolbar'))
-if(icon){$('<i>').addClass(icon).appendTo($button);}
-$button.html(label).click(click);return $button}},show_view:function($btn,$div,$btn_unsel,$div_unsel){$btn_unsel.removeClass('btn-info');$btn_unsel.find('i').removeClass('icon-white');$div_unsel.toggle(false);$btn.addClass('btn-info');$btn.find('i').addClass('icon-white');$div.toggle(true);},set_events:function(){var me=this;this.$w.find('.btn-more').click(function(){me.run({append:true});});if(this.title){this.$w.find('h3').html(this.title).toggle(true);}
-if(!(this.hide_refresh||this.no_refresh)){this.add_button('Refresh',function(){me.run();},'icon-refresh');}
-if(this.new_doctype){this.add_button('New '+this.new_doctype,function(){(me.custom_new_doc||me.make_new_doc)(me.new_doctype);},'icon-plus');}
-if(me.show_filters){this.add_button('Show Filters',function(){me.filter_list.show_filters();},'icon-search').addClass('btn-filter');}
-if(me.no_toolbar||me.hide_toolbar){me.$w.find('.list-toolbar-wrapper').toggle(false);}},make_new_doc:function(new_doctype){new_doc(new_doctype);},make_filters:function(){this.filter_list=new wn.ui.FilterList({listobj:this,$parent:this.$w.find('.list-filters').toggle(true),doctype:this.doctype,filter_fields:this.filter_fields});},clear:function(){this.data=[];this.$w.find('.result-list').empty();this.$w.find('.result').toggle(true);this.$w.find('.no-result').toggle(false);this.start=0;},run:function(){var me=this;var a0=arguments[0];var a1=arguments[1];if(a0&&typeof a0=='function')
-this.onrun=a0;if(a0&&a0.callback)
-this.onrun=a0.callback;if(!a1&&!(a0&&a0.append))
-this.start=0;me.set_working(true);wn.call({method:this.opts.method||'webnotes.widgets.query_builder.runquery',args:this.get_call_args(a0),callback:function(r){me.set_working(false);me.render_results(r)},no_spinner:this.opts.no_loading});},set_working:function(flag){this.$w.find('.img-load').toggle(flag);},get_call_args:function(opts){if(!this.method){var query=this.get_query?this.get_query():this.query;query=this.add_limits(query);var args={query_max:this.query_max,as_dict:1}
-args.simple_query=query;}else{var args={limit_start:this.start,limit_page_length:this.page_length}}
-if(this.args)
-$.extend(args,this.args)
-if(this.get_args){$.extend(args,this.get_args(opts));}
-return args;},render_results:function(r){if(this.start==0)this.clear();this.$w.find('.btn-more').toggle(false);if(r.message)r.values=r.message;if(r.values&&r.values.length){this.data=this.data.concat(r.values);this.render_list(r.values);this.update_paging(r.values);}else{if(this.start==0){this.$w.find('.result').toggle(false);this.$w.find('.no-result').toggle(true);}}
-if(this.onrun)this.onrun();if(this.callback)this.callback(r);},render_list:function(values){var m=Math.min(values.length,this.page_length);for(var i=0;i<m;i++){this.render_row(this.add_row(),values[i],this,i);}},update_paging:function(values){if(values.length>=this.page_length){this.$w.find('.btn-more').toggle(true);this.start+=this.page_length;}},add_row:function(){return $('<div class="list-row">').appendTo(this.$w.find('.result-list')).get(0);},refresh:function(){this.run();},add_limits:function(query){query+=' LIMIT '+this.start+','+(this.page_length+1);return query}});
-/*
- *	lib/js/wn/ui/filters.js
- */
-wn.ui.FilterList=Class.extend({init:function(opts){wn.require('js/fields.js');$.extend(this,opts);this.filters=[];this.$w=this.$parent;this.set_events();},set_events:function(){var me=this;this.$w.find('.add-filter-btn').bind('click',function(){me.add_filter();});this.$w.find('.search-btn').bind('click',function(){me.listobj.run();});},show_filters:function(){this.$w.find('.show_filters').toggle();if(!this.filters.length)
-this.add_filter();},add_filter:function(tablename,fieldname,condition,value){this.push_new_filter(tablename,fieldname,condition,value);if(fieldname){this.$w.find('.show_filters').toggle(true);}},push_new_filter:function(tablename,fieldname,condition,value){this.filters.push(new wn.ui.Filter({flist:this,tablename:tablename,fieldname:fieldname,condition:condition,value:value}));},get_filters:function(){var values=[];$.each(this.filters,function(i,f){if(f.field)
-values.push(f.get_value());})
-return values;},update_filters:function(){var fl=[];$.each(this.filters,function(i,f){if(f.field)fl.push(f);})
-this.filters=fl;},get_filter:function(fieldname){for(var i in this.filters){if(this.filters[i].field.df.fieldname==fieldname)
-return this.filters[i];}}});wn.ui.Filter=Class.extend({init:function(opts){$.extend(this,opts);this.doctype=this.flist.doctype;this.make();this.make_select();this.set_events();},make:function(){this.flist.$w.find('.filter_area').append('<div class="list_filter">\
-  <span class="fieldname_select_area"></span>\
-  <select class="condition">\
-   <option value="=">Equals</option>\
-   <option value="like">Like</option>\
-   <option value=">=">Greater or equals</option>\
-   <option value="<=">Less or equals</option>\
-   <option value=">">Greater than</option>\
-   <option value="<">Less than</option>\
-   <option value="in">In</option>\
-   <option value="!=">Not equals</option>\
-  </select>\
-  <span class="filter_field"></span>\
-  <a class="close">&times;</a>\
-  </div>');this.$w=this.flist.$w.find('.list_filter:last-child');},make_select:function(){this.fieldselect=new wn.ui.FieldSelect(this.$w.find('.fieldname_select_area'),this.doctype,this.filter_fields);},set_events:function(){var me=this;this.fieldselect.$select.bind('change',function(){var $selected=$(this).find("option:selected")
-me.set_field($selected.attr("table"),$selected.attr("fieldname"));});this.$w.find('a.close').bind('click',function(){me.$w.css('display','none');var value=me.field.get_value();me.field=null;if(!me.flist.get_filters().length){me.flist.$w.find('.set_filters').toggle(true);me.flist.$w.find('.show_filters').toggle(false);}
-if(value){me.flist.listobj.run();}
-me.flist.update_filters();return false;});me.$w.find('.condition').change(function(){if($(this).val()=='in'){me.set_field(me.field.df.parent,me.field.df.fieldname,'Data');if(!me.field.desc_area)
-me.field.desc_area=$a(me.field.wrapper,'span','help',null,'values separated by comma');}else{me.set_field(me.field.df.parent,me.field.df.fieldname);}});if(me.fieldname){this.set_values(me.tablename,me.fieldname,me.condition,me.value);}else{me.set_field(me.doctype,'name');}},set_values:function(tablename,fieldname,condition,value){this.set_field(tablename,fieldname);if(condition)this.$w.find('.condition').val(condition).change();if(value)this.field.set_input(value)},set_field:function(tablename,fieldname,fieldtype){var me=this;var cur=me.field?{fieldname:me.field.df.fieldname,fieldtype:me.field.df.fieldtype,parent:me.field.df.parent,}:{}
-var df=me.fieldselect.fields_by_name[tablename][fieldname];this.set_fieldtype(df,fieldtype);if(me.field&&cur.fieldname==fieldname&&df.fieldtype==cur.fieldtype&&df.parent==cur.parent){return;}
-me.fieldselect.$select.val(tablename+"."+fieldname);var field_area=me.$w.find('.filter_field').empty().get(0);f=make_field(df,null,field_area,null,0,1);f.df.single_select=1;f.not_in_form=1;f.with_label=0;f.refresh();me.field=f;this.set_default_condition(df,fieldtype);$(me.field.wrapper).find(':input').keydown(function(ev){if(ev.which==13){me.flist.listobj.run();}})},set_fieldtype:function(df,fieldtype){if(df.original_type)
-df.fieldtype=df.original_type;else
-df.original_type=df.fieldtype;df.description='';df.reqd=0;if(fieldtype){df.fieldtype=fieldtype;return;}
-if(df.fieldtype=='Check'){df.fieldtype='Select';df.options='No\nYes';}else if(['Text','Text Editor','Code','Link'].indexOf(df.fieldtype)!=-1){df.fieldtype='Data';}},set_default_condition:function(df,fieldtype){if(!fieldtype){if(df.fieldtype=='Data'){this.$w.find('.condition').val('like');}else{this.$w.find('.condition').val('=');}}},get_value:function(){var me=this;var val=me.field.get_value();var cond=me.$w.find('.condition').val();if(me.field.df.original_type=='Check'){val=(val=='Yes'?1:0);}
-if(cond=='like'){if((val.length===0)||(val.lastIndexOf("%")!==(val.length-1))){val=(val||"")+'%';}}
-return[me.fieldselect.$select.find('option:selected').attr('table'),me.field.df.fieldname,me.$w.find('.condition').val(),cstr(val)];}});wn.ui.FieldSelect=Class.extend({init:function(parent,doctype,filter_fields,with_blank){this.doctype=doctype;this.fields_by_name={};this.with_blank=with_blank;this.$select=$('<select>').appendTo(parent);if(filter_fields){for(var i in filter_fields)
-this.add_field_option(this.filter_fields[i])}else{this.build_options();}},build_options:function(){var me=this;me.table_fields=[];var std_filters=[{fieldname:'name',fieldtype:'Data',label:'ID',parent:me.doctype},{fieldname:'modified',fieldtype:'Date',label:'Last Modified',parent:me.doctype},{fieldname:'owner',fieldtype:'Data',label:'Created By',parent:me.doctype},{fieldname:'creation',fieldtype:'Date',label:'Created On',parent:me.doctype},{fieldname:'_user_tags',fieldtype:'Data',label:'Tags',parent:me.doctype},{fieldname:'docstatus',fieldtype:'Int',label:'Doc Status',parent:me.doctype},];var doctype_obj=locals['DocType'][me.doctype];if(doctype_obj&&cint(doctype_obj.istable)){std_filters=std_filters.concat([{fieldname:'parent',fieldtype:'Data',label:'Parent',parent:me.doctype}]);}
-if(this.with_blank){this.$select.append($('<option>',{value:''}).text(''));}
-$.each(std_filters.concat(wn.meta.docfield_list[me.doctype]),function(i,df){me.add_field_option(df);});$.each(me.table_fields,function(i,table_df){if(table_df.options){$.each(wn.meta.docfield_list[table_df.options],function(i,df){me.add_field_option(df);});}});},add_field_option:function(df){var me=this;if(me.doctype&&df.parent==me.doctype){var label=df.label;var table=me.doctype;if(df.fieldtype=='Table')me.table_fields.push(df);}else{var label=df.label+' ('+df.parent+')';var table=df.parent;}
-if(wn.model.no_value_type.indexOf(df.fieldtype)==-1&&!(me.fields_by_name[df.parent]&&me.fields_by_name[df.parent][df.fieldname])){this.$select.append($('<option>',{value:table+"."+df.fieldname,fieldname:df.fieldname,table:df.parent}).text(label));if(!me.fields_by_name[df.parent])me.fields_by_name[df.parent]={};me.fields_by_name[df.parent][df.fieldname]=df;}}})
-/*
- *	lib/js/wn/views/container.js
- */
-wn.provide('wn.pages');wn.provide('wn.views');wn.views.Container=Class.extend({init:function(){this.container=$('#body_div').get(0);this.page=null;this.pagewidth=$('#body_div').width();this.pagemargin=50;},add_page:function(label,onshow,onhide){var page=$('<div class="content"></div>').attr('id',"page-"+label).appendTo(this.container).get(0);if(onshow)
-$(page).bind('show',onshow);if(onshow)
-$(page).bind('hide',onhide);page.label=label;wn.pages[label]=page;return page;},change_to:function(label){if(this.page&&this.page.label==label){$(this.page).trigger('show');return;}
-var me=this;if(label.tagName){var page=label;}else{var page=wn.pages[label];}
-if(!page){console.log('Page not found '+label);return;}
-if(this.page&&this.page!=page){$(this.page).toggle(false);$(this.page).trigger('hide');}
-if(!this.page||this.page!=page){this.page=page;$(this.page).toggle(true);}
-this.page._route=window.location.hash;document.title=this.page.label;$(this.page).trigger('show');scroll(0,0);return this.page;}});wn.views.add_module_btn=function(parent,module){$(parent).append(repl('<span class="label" style="margin-right: 8px; cursor: pointer;"\
-     onclick="wn.set_route(\'%(module_small)s-home\')">\
-     <i class="icon-home icon-white"></i> %(module)s Home\
-    </span>',{module:module,module_small:module.toLowerCase()}));}
-wn.views.add_list_btn=function(parent,doctype){$(parent).append(repl('<span class="label" style="margin-right: 8px; cursor: pointer;"\
-     onclick="wn.set_route(\'List\', \'%(doctype)s\')">\
-     <i class="icon-list icon-white"></i> %(doctype)s List\
-    </span>',{doctype:doctype}));}
-/*
- *	lib/js/wn/views/pageview.js
- */
-wn.provide('wn.views.pageview');wn.views.pageview={with_page:function(name,callback){if((locals.Page&&locals.Page[name])||name==window.page_name){callback();}else{wn.call({method:'webnotes.widgets.page.getpage',args:{'name':name},callback:callback});}},show:function(name){if(!name)name=(wn.boot?wn.boot.home_page:window.page_name);wn.views.pageview.with_page(name,function(r){if(r&&r.exc){if(!r['403'])wn.container.change_to('404');}else if(!wn.pages[name]){new wn.views.Page(name);}
-wn.container.change_to(name);});}}
-wn.views.Page=Class.extend({init:function(name,wrapper){this.name=name;var me=this;if(name==window.page_name){this.wrapper=document.getElementById('page-'+name);this.wrapper.label=document.title||window.page_name;this.wrapper.page_name=window.page_name;wn.pages[window.page_name]=this.wrapper;}else{this.pagedoc=locals.Page[this.name];this.wrapper=wn.container.add_page(this.name);this.wrapper.label=this.pagedoc.title||this.pagedoc.name;this.wrapper.page_name=this.pagedoc.name;this.wrapper.innerHTML=this.pagedoc.content;wn.dom.eval(this.pagedoc.__script||this.pagedoc.script||'');wn.dom.set_style(this.pagedoc.style||'');}
-this.trigger('onload');$(this.wrapper).bind('show',function(){cur_frm=null;me.trigger('onshow');me.trigger('refresh');});},trigger:function(eventname){var me=this;try{if(pscript[eventname+'_'+this.name]){pscript[eventname+'_'+this.name](me.wrapper);}else if(me.wrapper[eventname]){me.wrapper[eventname](me.wrapper);}}catch(e){console.log(e);}}})
-wn.views.make_404=function(){var page=wn.container.add_page('404');$(page).html('<div class="layout-wrapper">\
-  <h1>Not Found</h1><br>\
-  <p>Sorry we were unable to find what you were looking for.</p>\
-  <p><a href="#">Go back to home</a></p>\
-  </div>').toggle(false);};wn.views.make_403=function(){var page=wn.container.add_page('403');$(page).html('<div class="layout-wrapper">\
-  <h1>Not Permitted</h1><br>\
-  <p>Sorry you are not permitted to view this page.</p>\
-  <p><a href="#">Go back to home</a></p>\
-  </div>').toggle(false);};
-/*
- *	lib/js/wn/request.js
- */
-wn.provide('wn.request');wn.request.url='server.py';wn.request.prepare=function(opts){if(opts.btn)$(opts.btn).set_working();if(opts.show_spinner)set_loading();if(opts.freeze)freeze();if(!opts.args.cmd){console.log(opts)
-throw"Incomplete Request";}}
-wn.request.cleanup=function(opts,r){if(opts.btn)$(opts.btn).done_working();if(opts.show_spinner)hide_loading();if(opts.freeze)unfreeze();if(wn.boot&&wn.boot.sid&&wn.get_cookie('sid')!=wn.boot.sid){if(!wn.app.logged_out){msgprint('Session Expired. Logging you out');wn.app.logout();}
-return;}
-if(r.server_messages){r.server_messages=JSON.parse(r.server_messages)
-msgprint(r.server_messages);}
-if(r.exc){r.exc=JSON.parse(r.exc);if(r.exc instanceof Array){$.each(r.exc,function(i,v){if(v)console.log(v);})}else{console.log(r.exc);}};if(r['403']){wn.container.change_to('403');}
-if(r.docs){LocalDB.sync(r.docs);}
-wn.last_response=r;}
-wn.request.call=function(opts){wn.request.prepare(opts);var ajax_args={url:opts.url||wn.request.url,data:opts.args,type:opts.type||'POST',dataType:opts.dataType||'json',success:function(r,xhr){wn.request.cleanup(opts,r);opts.success&&opts.success(r,xhr.responseText);},error:function(xhr,textStatus){wn.request.cleanup(opts,{});show_alert('Unable to complete request: '+textStatus)
-opts.error&&opts.error(xhr)}};if(opts.progress_bar){var interval=null;$.extend(ajax_args,{xhr:function(){var xhr=jQuery.ajaxSettings.xhr();interval=setInterval(function(){if(xhr.readyState>2){var total=parseInt(xhr.getResponseHeader('Original-Length')||0)||parseInt(xhr.getResponseHeader('Content-Length'));var completed=parseInt(xhr.responseText.length);var percent=(100.0/total*completed).toFixed(2);opts.progress_bar.css('width',(percent<10?10:percent)+'%');}},50);wn.last_xhr=xhr;return xhr;},complete:function(){opts.progress_bar.css('width','100%');clearInterval(interval);}})}
-$.ajax(ajax_args);}
-wn.call=function(opts){var args=$.extend({},opts.args)
-if(opts.module&&opts.page){args.cmd=opts.module+'.page.'+opts.page+'.'+opts.page+'.'+opts.method}else if(opts.method){args.cmd=opts.method;}
-for(key in args){if(args[key]&&typeof args[key]!='string'){args[key]=JSON.stringify(args[key]);}}
-wn.request.call({args:args,success:opts.callback,error:opts.error,btn:opts.btn,freeze:opts.freeze,show_spinner:!opts.no_spinner,progress_bar:opts.progress_bar});}
-/*
- *	lib/js/core.js
- */
-if(!console){var console={log:function(txt){}}}
-window._version_number="%(_version_number)s";$(document).ready(function(){wn.assets.check();wn.provide('wn.app');$.extend(wn.app,new wn.Application());});
-
-/*
- *	lib/js/legacy/globals.js
- */
-wn.provide('wn.widgets.form');wn.provide('wn.widgets.report');wn.provide('wn.utils');wn.provide('wn.model');wn.provide('wn.profile');wn.provide('wn.session');wn.provide('_f');wn.provide('_p');wn.provide('_r');wn.provide('_c');wn.provide('_e');wn.provide('_startup_data')
-wn.settings.no_history=1;var NEWLINE='\n';var profile=null;var user=null;var user_defaults=null;var user_roles=null;var user_fullname=null;var user_email=null;var user_img={};var pscript={};var selector=null;var top_index=91;var _f={};var _p={};var _e={};var _r={};var FILTER_SEP='\1';var frms={};var cur_frm=null;var pscript={};var validated=true;var validation_message='';var tinymce_loaded=null;
-/*
- *	lib/js/legacy/utils/datatype.js
- */
-wn.utils.full_name=function(fn,ln){return fn+(ln?' ':'')+(ln?ln:'')}
-function fmt_money(v){if(v==null||v=='')return'0.00';v=(v+'').replace(/,/g,'');v=parseFloat(v);if(isNaN(v)){return'';}else{var val=2;if(wn.boot.sysdefaults.currency_format=='Millions')val=3;v=v.toFixed(2);var delimiter=",";amount=v+'';var a=amount.split('.',2)
-var d=a[1];var i=parseInt(a[0]);if(isNaN(i)){return'';}
-var minus='';if(v<0){minus='-';}
-i=Math.abs(i);var n=new String(i);var a=[];if(n.length>3)
-{var nn=n.substr(n.length-3);a.unshift(nn);n=n.substr(0,n.length-3);while(n.length>val)
-{var nn=n.substr(n.length-val);a.unshift(nn);n=n.substr(0,n.length-val);}}
-if(n.length>0){a.unshift(n);}
-n=a.join(delimiter);if(d.length<1){amount=n;}
-else{amount=n+'.'+d;}
-amount=minus+amount;return amount;}}
-function toTitle(str){var word_in=str.split(" ");var word_out=[];for(w in word_in){word_out[w]=word_in[w].charAt(0).toUpperCase()+word_in[w].slice(1);}
-return word_out.join(" ");}
-function is_null(v){if(v==null){return 1}else if(v==0){if((v+'').length>=1)return 0;else return 1;}else{return 0}}
-function $s(ele,v,ftype,fopt){if(v==null)v='';if(ftype=='Text'||ftype=='Small Text'){ele.innerHTML=v?v.replace(/\n/g,'<br>'):'';}else if(ftype=='Date'){v=dateutil.str_to_user(v);if(v==null)v=''
-ele.innerHTML=v;}else if(ftype=='Link'&&fopt){ele.innerHTML='';doc_link(ele,fopt,v);}else if(ftype=='Currency'){ele.style.textAlign='right';if(is_null(v))
-ele.innerHTML='';else
-ele.innerHTML=fmt_money(v);}else if(ftype=='Int'){ele.style.textAlign='right';ele.innerHTML=v;}else if(ftype=='Check'){if(v)ele.innerHTML='<img src="images/lib/ui/tick.gif">';else ele.innerHTML='';}else{ele.innerHTML=v;}}
-function clean_smart_quotes(s){if(s){s=s.replace(/\u2018/g,"'");s=s.replace(/\u2019/g,"'");s=s.replace(/\u201c/g,'"');s=s.replace(/\u201d/g,'"');s=s.replace(/\u2013/g,'-');s=s.replace(/\u2014/g,'--');}
-return s;}
-function copy_dict(d){var n={};for(var k in d)n[k]=d[k];return n;}
-function $p(ele,top,left){ele.style.position='absolute';ele.style.top=top+'px';ele.style.left=left+'px';}
-function replace_newlines(t){return t?t.replace(/\n/g,'<br>'):'';}
-function cstr(s){if(s==null)return'';return s+'';}
-function nth(number){number=cint(number);var s='th';if((number+'').substr(-1)=='1')s='st';if((number+'').substr(-1)=='2')s='nd';if((number+'').substr(-1)=='3')s='rd';return number+s;}
-function flt(v,decimals){if(v==null||v=='')return 0;v=(v+'').replace(/,/g,'');v=parseFloat(v);if(isNaN(v))
-v=0;if(decimals!=null)
-return parseFloat(v.toFixed(decimals));return v;}
-function esc_quotes(s){if(s==null)s='';return s.replace(/'/,"\'");}
-var crop=function(s,len){if(s.length>len)
-return s.substr(0,len-3)+'...';else
-return s;}
-var strip=function(s,chars){var s=lstrip(s,chars)
-s=rstrip(s,chars);return s;}
-var lstrip=function(s,chars){if(!chars)chars=['\n','\t',' '];var first_char=s.substr(0,1);while(in_list(chars,first_char)){var s=s.substr(1);first_char=s.substr(0,1);}
-return s;}
-var rstrip=function(s,chars){if(!chars)chars=['\n','\t',' '];var last_char=s.substr(s.length-1);while(in_list(chars,last_char)){var s=s.substr(0,s.length-1);last_char=s.substr(s.length-1);}
-return s;}
-function repl_all(s,s1,s2){var idx=s.indexOf(s1);while(idx!=-1){s=s.replace(s1,s2);idx=s.indexOf(s1);}
-return s;}
-function repl(s,dict){if(s==null)return'';for(key in dict)s=repl_all(s,'%('+key+')s',dict[key]);return s;}
-function keys(obj){var mykeys=[];for(key in obj)mykeys[mykeys.length]=key;return mykeys;}
-function values(obj){var myvalues=[];for(key in obj)myvalues[myvalues.length]=obj[key];return myvalues;}
-function in_list(list,item){for(var i=0;i<list.length;i++)
-if(list[i]==item)return true;return false;}
-function has_common(list1,list2){if(!list1||!list2)return false;for(var i=0;i<list1.length;i++){if(in_list(list2,list1[i]))return true;}
-return false;}
-var inList=in_list;function add_lists(l1,l2){var l=[];for(var k in l1)l.push(l1[k]);for(var k in l2)l.push(l2[k]);return l;}
-function docstring(obj){return JSON.stringify(obj);}
-function DocLink(p,doctype,name,onload){var a=$a(p,'span','link_type');a.innerHTML=a.dn=name;a.dt=doctype;a.onclick=function(){loaddoc(this.dt,this.dn,onload)};return a;}
-var doc_link=DocLink;function roundNumber(num,dec){var result=Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);return result;}
-/*
- *	lib/js/legacy/utils/datetime.js
- */
-function same_day(d1,d2){if(d1.getFullYear()==d2.getFullYear()&&d1.getMonth()==d2.getMonth()&&d1.getDate()==d2.getDate())return true;else return false;}
-var month_list=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];var month_last={1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31}
-var month_list_full=['January','February','March','April','May','June','July','August','September','October','November','December'];var week_list=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];var week_list_full=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];function int_to_str(i,len){i=''+i;if(i.length<len)for(c=0;c<(len-i.length);c++)i='0'+i;return i}
-wn.datetime={str_to_obj:function(d){if(typeof d=="object")return d;if(!d)return new Date();var tm=[null,null];if(d.search(' ')!=-1){var tm=d.split(' ')[1].split(':');var d=d.split(' ')[0];}
-if(d.search('-')!=-1){var t=d.split('-');return new Date(t[0],t[1]-1,t[2],tm[0],tm[1]);}else if(d.search('/')!=-1){var t=d.split('/');return new Date(t[0],t[1]-1,t[2],tm[0],tm[1]);}else{return new Date();}},obj_to_str:function(d){if(typeof d=='string')return d;return d.getFullYear()+'-'+int_to_str(d.getMonth()+1,2)+'-'+int_to_str(d.getDate(),2);},obj_to_user:function(d){return dateutil.str_to_user(dateutil.obj_to_str(d));},get_diff:function(d1,d2){if(typeof d1=='string')d1=dateutil.str_to_obj(d1);if(typeof d2=='string')d2=dateutil.str_to_obj(d2);return((d1-d2)/86400000);},get_day_diff:function(d1,d2){return dateutil.get_diff(new Date(d1.getYear(),d1.getMonth(),d1.getDate(),0,0),new Date(d2.getYear(),d2.getMonth(),d2.getDate(),0,0))},add_days:function(d,days){var dt=dateutil.str_to_obj(d);var new_dt=new Date(dt.getTime()+(days*24*60*60*1000));return dateutil.obj_to_str(new_dt);},add_months:function(d,months){dt=dateutil.str_to_obj(d)
-new_dt=new Date(dt.getFullYear(),dt.getMonth()+months,dt.getDate())
-if(new_dt.getDate()!=dt.getDate()){return dateutil.month_end(new Date(dt.getFullYear(),dt.getMonth()+months,1))}
-return dateutil.obj_to_str(new_dt);},month_start:function(){var d=new Date();return d.getFullYear()+'-'+int_to_str(d.getMonth()+1,2)+'-01';},month_end:function(d){if(!d)var d=new Date();var m=d.getMonth()+1;var y=d.getFullYear();last_date=month_last[m];if(m==2&&(y%4)==0&&((y%100)!=0||(y%400)==0))
-last_date=29;return y+'-'+int_to_str(m,2)+'-'+last_date;},get_user_fmt:function(){var t=sys_defaults.date_format;if(!t)t='dd-mm-yyyy';return t;},str_to_user:function(val,no_time_str){var user_fmt=dateutil.get_user_fmt();var time_str='';if(val==null||val=='')return null;if(val.search(':')!=-1){var tmp=val.split(' ');if(tmp[1])
-time_str=' '+tmp[1];var d=tmp[0];}else{var d=val;}
-if(no_time_str)time_str='';d=d.split('-');if(d.length==3){if(user_fmt=='dd-mm-yyyy')
-val=d[2]+'-'+d[1]+'-'+d[0]+time_str;else if(user_fmt=='dd/mm/yyyy')
-val=d[2]+'/'+d[1]+'/'+d[0]+time_str;else if(user_fmt=='yyyy-mm-dd')
-val=d[0]+'-'+d[1]+'-'+d[2]+time_str;else if(user_fmt=='mm/dd/yyyy')
-val=d[1]+'/'+d[2]+'/'+d[0]+time_str;else if(user_fmt=='mm-dd-yyyy')
-val=d[1]+'-'+d[2]+'-'+d[0]+time_str;}
-return val;},full_str:function(){var d=new Date();return d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate()+' '
-+d.getHours()+':'+d.getMinutes()+':'+d.getSeconds();},user_to_str:function(d){var user_fmt=this.get_user_fmt();var time_str='';if(d.search(/ /)!=-1){time_str=" "+d.split(" ")[1];d=d.split(" ")[0];}
-if(user_fmt=='dd-mm-yyyy'){var d=d.split('-');var val=d[2]+'-'+d[1]+'-'+d[0];}
-else if(user_fmt=='dd/mm/yyyy'){var d=d.split('/');var val=d[2]+'-'+d[1]+'-'+d[0];}
-else if(user_fmt=='yyyy-mm-dd'){var val=d;}
-else if(user_fmt=='mm/dd/yyyy'){var d=d.split('/');var val=d[2]+'-'+d[0]+'-'+d[1];}
-else if(user_fmt=='mm-dd-yyyy'){var d=d.split('-');var val=d[2]+'-'+d[0]+'-'+d[1];}
-return val+time_str;},user_to_obj:function(d){return dateutil.str_to_obj(dateutil.user_to_str(d));},global_date_format:function(d){if(d.substr)d=this.str_to_obj(d);return nth(d.getDate())+' '+month_list_full[d.getMonth()]+' '+d.getFullYear();},get_today:function(){var today=new Date();var m=(today.getMonth()+1)+'';if(m.length==1)m='0'+m;var d=today.getDate()+'';if(d.length==1)d='0'+d;return today.getFullYear()+'-'+m+'-'+d;},get_cur_time:function(){var d=new Date();var hh=d.getHours()+''
-var mm=cint(d.getMinutes()/5)*5+''
-return(hh.length==1?'0'+hh:hh)+':'+(mm.length==1?'0'+mm:mm);}}
-wn.datetime.only_date=function(val){if(val==null||val=='')return null;if(val.search(':')!=-1){var tmp=val.split(' ');var d=tmp[0].split('-');}else{var d=val.split('-');}
-if(d.length==3)
-val=d[2]+'-'+d[1]+'-'+d[0];return val;}
-wn.datetime.time_to_ampm=function(v){if(!v){var d=new Date();var t=[d.getHours(),cint(d.getMinutes()/5)*5+'']}else{var t=v.split(':');}
-if(t.length!=2){show_alert('[set_time] Incorect time format');return;}
-if(t[1].length==1)t[1]='0'+t[1];if(cint(t[0])==0)var ret=['12',t[1],'AM'];else if(cint(t[0])<12)var ret=[cint(t[0])+'',t[1],'AM'];else if(cint(t[0])==12)var ret=['12',t[1],'PM'];else var ret=[(cint(t[0])-12)+'',t[1],'PM'];return ret;}
-wn.datetime.time_to_hhmm=function(hh,mm,am){if(am=='AM'&&hh=='12'){hh='00';}else if(am=='PM'&&hh!='12'){hh=cint(hh)+12;}
-if(!mm)mm='00';if(!hh)hh='00';return hh+':'+mm;}
-function prettyDate(time){if(!time)return''
-var date=time;if(typeof(time)=="string")
-date=new Date((time||"").replace(/-/g,"/").replace(/[TZ]/g," ").replace(/\.[0-9]*/,""));var diff=(((new Date()).getTime()-date.getTime())/1000),day_diff=Math.floor(diff/86400);if(isNaN(day_diff)||day_diff<0)
-return'';return day_diff==0&&(diff<60&&"just now"||diff<120&&"1 minute ago"||diff<3600&&Math.floor(diff/60)+" minutes ago"||diff<7200&&"1 hour ago"||diff<86400&&Math.floor(diff/3600)+" hours ago")||day_diff==1&&"Yesterday"||day_diff<7&&day_diff+" days ago"||day_diff<31&&Math.ceil(day_diff/7)+" weeks ago"||day_diff<365&&Math.ceil(day_diff/30)+" months ago"||"more than "+Math.floor(day_diff/365)+" year(s) ago";}
-if(typeof jQuery!="undefined")
-jQuery.fn.prettyDate=function(){return this.each(function(){var date=prettyDate(this.title);if(date)
-jQuery(this).text(date);});};var comment_when=prettyDate;wn.datetime.comment_when=prettyDate;var date=dateutil=wn.datetime;var get_today=wn.datetime.get_today
-var time_to_ampm=wn.datetime.time_to_ampm;var time_to_hhmm=wn.datetime.time_to_hhmm;var only_date=wn.datetime.only_date;
-/*
- *	lib/js/legacy/utils/dom.js
- */
-wn.tinymce={add_simple:function(ele,height){if(ele.myid){tinyMCE.execCommand('mceAddControl',true,ele.myid);return;}
-ele.myid=wn.dom.set_unique_id(ele);$(ele).tinymce({script_url:'js/lib/tiny_mce_33/tiny_mce.js',height:height?height:'200px',theme:"advanced",theme_advanced_buttons1:"bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,bullist,numlist,outdent,indent,link,unlink,forecolor,backcolor,code,",theme_advanced_buttons2:"",theme_advanced_buttons3:"",theme_advanced_toolbar_location:"top",theme_advanced_toolbar_align:"left",theme_advanced_path:false,theme_advanced_resizing:false});},remove:function(ele){tinyMCE.execCommand('mceRemoveControl',true,ele.myid);},get_value:function(ele){return tinymce.get(ele.myid).getContent();}}
-wn.ele={link:function(args){var span=$a(args.parent,'span','link_type',args.style);span.loading_img=$a(args.parent,'img','',{margin:'0px 4px -2px 4px',display:'none'});span.loading_img.src='images/lib/ui/button-load.gif';span.innerHTML=args.label;span.user_onclick=args.onclick;span.onclick=function(){if(!this.disabled)this.user_onclick(this);}
-span.set_working=function(){this.disabled=1;$di(this.loading_img);}
-span.done_working=function(){this.disabled=0;$dh(this.loading_img);}
-return span;}}
-function $ln(parent,label,onclick,style){return wn.ele.link({parent:parent,label:label,onclick:onclick,style:style})}
-function $btn(parent,label,onclick,style,css_class,is_ajax){if(css_class==='green')css_class='btn-info';return new wn.ui.Button({parent:parent,label:label,onclick:onclick,style:style,is_ajax:is_ajax,css_class:css_class}).btn;}
-$item_normal=function(ele){$y(ele,{padding:'6px 8px',cursor:'pointer',marginRight:'8px',whiteSpace:'nowrap',overflow:'hidden',borderBottom:'1px solid #DDD'});$bg(ele,'#FFF');$fg(ele,'#000');}
-$item_active=function(ele){$bg(ele,'#FE8');$fg(ele,'#000');}
-$item_selected=function(ele){$bg(ele,'#777');$fg(ele,'#FFF');}
-$item_pressed=function(ele){$bg(ele,'#F90');$fg(ele,'#FFF');};function set_opacity(ele,ieop){var op=ieop/100;if(ele.filters){try{ele.filters.item("DXImageTransform.Microsoft.Alpha").opacity=ieop;}catch(e){ele.style.filter='progid:DXImageTransform.Microsoft.Alpha(opacity='+ieop+')';}}else{ele.style.opacity=op;}}
-$br=function(ele,r,corners){if(corners){var cl=['top-left','top-right','bottom-right','bottom-left'];for(var i=0;i<4;i++){if(corners[i]){$(ele).css('-moz-border-radius-'+cl[i].replace('-',''),r).css('-webkit-'+cl[i]+'-border-radius',r);}}}else{$(ele).css('-moz-border-radius',r).css('-webkit-border-radius',r).css('border-radius',r);}}
-$bs=function(ele,r){$(ele).css('-moz-box-shadow',r).css('-webkit-box-shadow',r).css('box-shadow',r);}
-function SelectWidget(parent,options,width,editable,bg_color){var me=this;this.inp=$a(parent,'select');if(options)add_sel_options(this.inp,options);if(width)$y(this.inp,{width:width});this.set_width=function(w){$y(this.inp,{width:w})};this.set_options=function(o){add_sel_options(this.inp,o);}
-this.inp.onchange=function(){if(me.onchange)me.onchange(this);}
-return;}
-function empty_select(s){if(s.custom_select){s.empty();return;}
-if(s.inp)s=s.inp;if(s){var tmplen=s.length;for(var i=0;i<tmplen;i++)s.options[0]=null;}}
-function sel_val(s){if(s.custom_select){return s.inp.value?s.inp.value:'';}
-if(s.inp)s=s.inp;try{if(s.selectedIndex<s.options.length)return s.options[s.selectedIndex].value;else return'';}catch(err){return'';}}
-function add_sel_options(s,list,sel_val,o_style){if(s.custom_select){s.set_options(list)
-if(sel_val)s.inp.value=sel_val;return;}
-if(s.inp)s=s.inp;for(var i=0,len=list.length;i<len;i++){var o=new Option(list[i],list[i],false,(list[i]==sel_val?true:false));if(o_style)$y(o,o_style);s.options[s.options.length]=o;}}
-function cint(v,def){v=v+'';v=lstrip(v,['0']);v=parseInt(v);if(isNaN(v))v=def?def:0;return v;}
-function validate_email(id){if(strip(id.toLowerCase()).search("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?")==-1)return 0;else return 1;}
-function validate_spl_chars(txt){if(txt.search(/^[a-zA-Z0-9_\- ]*$/)==-1)return 1;else return 0;}
-function d2h(d){return cint(d).toString(16);}
-function h2d(h){return parseInt(h,16);}
-var $n='\n';function set_title(t){document.title=(wn.title_prefix?(wn.title_prefix+' - '):'')+t;}
-function $a(parent,newtag,className,cs,innerHTML,onclick){if(parent&&parent.substr)parent=$i(parent);var c=document.createElement(newtag);if(parent)
-parent.appendChild(c);if(className){if(newtag.toLowerCase()=='img')
-c.src=className
-else
-c.className=className;}
-if(cs)$y(c,cs);if(innerHTML)c.innerHTML=innerHTML;if(onclick)c.onclick=onclick;return c;}
-function $a_input(p,in_type,attributes,cs){if(!attributes)attributes={};var $input=$(p).append('<input type="'+in_type+'">').find('input:last');for(key in attributes)
-$input.attr(key,attributes[key]);var input=$input.get(0);if(cs)
-$y(input,cs);return input;}
-function $dh(d){if(d&&d.substr)d=$i(d);if(d&&d.style.display.toLowerCase()!='none')d.style.display='none';}
-function $ds(d){if(d&&d.substr)d=$i(d);var t='block';if(d&&in_list(['span','img','button'],d.tagName.toLowerCase()))
-t='inline'
-if(d&&d.style.display.toLowerCase()!=t)
-d.style.display=t;}
-function $di(d){if(d&&d.substr)d=$i(d);if(d)d.style.display='inline';}
-function $i(id){if(!id)return null;if(id&&id.appendChild)return id;return document.getElementById(id);}
-function $w(e,w){if(e&&e.style&&w)e.style.width=w;}
-function $h(e,h){if(e&&e.style&&h)e.style.height=h;}
-function $bg(e,w){if(e&&e.style&&w)e.style.backgroundColor=w;}
-function $y(ele,s){if(ele&&s){for(var i in s)ele.style[i]=s[i];};return ele;}
-function $yt(tab,r,c,s){var rmin=r;var rmax=r;if(r=='*'){rmin=0;rmax=tab.rows.length-1;}
-if(r.search&&r.search('-')!=-1){r=r.split('-');rmin=cint(r[0]);rmax=cint(r[1]);}
-var cmin=c;var cmax=c;if(c=='*'){cmin=0;cmax=tab.rows[0].cells.length-1;}
-if(c.search&&c.search('-')!=-1){c=c.split('-');rmin=cint(c[0]);rmax=cint(c[1]);}
-for(var ri=rmin;ri<=rmax;ri++){for(var ci=cmin;ci<=cmax;ci++)
-$y($td(tab,ri,ci),s);}}
-function set_style(txt){wn.dom.set_style(txt);}
-function make_table(parent,nr,nc,table_width,widths,cell_style,table_style){var t=$a(parent,'table');t.style.borderCollapse='collapse';if(table_width)t.style.width=table_width;if(cell_style)t.cell_style=cell_style;for(var ri=0;ri<nr;ri++){var r=t.insertRow(ri);for(var ci=0;ci<nc;ci++){var c=r.insertCell(ci);if(ri==0&&widths&&widths[ci]){c.style.width=widths[ci];}
-if(cell_style){for(var s in cell_style)c.style[s]=cell_style[s];}}}
-t.append_row=function(){return append_row(this);}
-if(table_style)$y(t,table_style);return t;}
-function append_row(t,at,style){var r=t.insertRow(at?at:t.rows.length);if(t.rows.length>1){for(var i=0;i<t.rows[0].cells.length;i++){var c=r.insertCell(i);if(style)$y(c,style);}}
-return r}
-function $td(t,r,c){if(r<0)r=t.rows.length+r;if(c<0)c=t.rows[0].cells.length+c;return t.rows[r].cells[c];}
-wn.urllib={get_arg:function(name){name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var regexS="[\\?&]"+name+"=([^&#]*)";var regex=new RegExp(regexS);var results=regex.exec(window.location.href);if(results==null)
-return"";else
-return decodeURIComponent(results[1]);},get_dict:function(){var d={}
-var t=window.location.href.split('?')[1];if(!t)return d;if(t.indexOf('#')!=-1)t=t.split('#')[0];if(!t)return d;t=t.split('&');for(var i=0;i<t.length;i++){var a=t[i].split('=');d[decodeURIComponent(a[0])]=decodeURIComponent(a[1]);}
-return d;},get_base_url:function(){var url=window.location.href.split('#')[0].split('?')[0].split('app.html')[0];if(url.substr(url.length-1,1)=='/')url=url.substr(0,url.length-1)
-return url},get_file_url:function(file_id){return repl('files/%(fn)s',{fn:file_id})}}
-get_url_arg=wn.urllib.get_arg;get_url_dict=wn.urllib.get_dict;
-/*
- *	lib/js/legacy/utils/handler.js
- */
-function $c(command,args,callback,error,no_spinner,freeze_msg,btn){wn.request.call({args:$.extend(args,{cmd:command}),success:callback,error:error,btn:btn,freeze:freeze_msg,show_spinner:!no_spinner})}
-function $c_obj(doclist,method,arg,callback,no_spinner,freeze_msg,btn){if(arg&&typeof arg!='string')arg=JSON.stringify(arg);args={cmd:'runserverobj',arg:arg,method:method};if(typeof doclist=='string')
-args.doctype=doclist;else
-args.docs=compress_doclist(doclist)
-wn.request.call({args:args,success:callback,btn:btn,freeze:freeze_msg,show_spinner:!no_spinner});}
-function $c_page(module,page,method,arg,callback,no_spinner,freeze_msg,btn){if(arg&&typeof arg!='string')arg=JSON.stringify(arg);wn.request.call({args:{cmd:module+'.page.'+page+'.'+page+'.'+method,arg:arg,method:method},success:callback,btn:btn,freeze:freeze_msg,show_spinner:!no_spinner});}
-function $c_obj_csv(doclist,method,arg){var args={}
-args.cmd='runserverobj';args.as_csv=1;args.method=method;args.arg=arg;if(doclist.substr)
-args.doctype=doclist;else
-args.docs=compress_doclist(doclist);open_url_post(wn.request.url,args);}
-function open_url_post(URL,PARAMS,new_window){var temp=document.createElement("form");temp.action=URL;temp.method="POST";temp.style.display="none";if(new_window){temp.target='_blank';}
-for(var x in PARAMS){var opt=document.createElement("textarea");opt.name=x;var val=PARAMS[x];if(typeof val!='string')
-val=JSON.stringify(val);opt.value=val;temp.appendChild(opt);}
-document.body.appendChild(temp);temp.submit();return temp;}
-/*
- *	lib/js/legacy/utils/msgprint.js
- */
-var msg_dialog;function msgprint(msg,title){if(!msg)return;if(msg instanceof Array){$.each(msg,function(i,v){if(v){msgprint(v);}})
-return;}
-if(typeof(msg)!='string')
-msg=JSON.stringify(msg);if(msg.substr(0,8)=='__small:'){show_alert(msg.substr(8));return;}
-if(!msg_dialog){msg_dialog=new wn.ui.Dialog({title:"Message",onhide:function(){msg_dialog.msg_area.empty();}});msg_dialog.msg_area=$('<div class="msgprint">').appendTo(msg_dialog.body);}
-if(msg.search(/<br>|<p>|<li>/)==-1)
-msg=replace_newlines(msg);msg_dialog.set_title(title||'Message')
-if(msg_dialog.msg_area.html())msg_dialog.msg_area.append("<hr>");msg_dialog.msg_area.append(msg);msg_dialog.show();return msg_dialog;}
-var growl_area;function show_alert(txt,id){if(!growl_area){if(!$('#dialog-container').length){$('<div id="dialog-container">').appendTo('body');}
-growl_area=$a($i('dialog-container'),'div','',{position:'fixed',bottom:'8px',right:'8px',width:'320px',zIndex:10});}
-var wrapper=$a(growl_area,'div','',{position:'relative'});var body=$a(wrapper,'div','notice');var c=$a(body,'i','icon-remove-sign',{cssFloat:'right',cursor:'pointer'});$(c).click(function(){$dh(this.wrapper)});c.wrapper=wrapper;var t=$a(body,'div','',{color:'#FFF'});$(t).html(txt);if(id){$(t).attr('id',id);}
-$(wrapper).hide().fadeIn(1000);}
-/*
- *	lib/js/legacy/utils/printElement.js
- */;(function(window,undefined){var document=window["document"];var $=window["jQuery"];$.fn["printElement"]=function(options){var mainOptions=$.extend({},$.fn["printElement"]["defaults"],options);if(mainOptions["printMode"]=='iframe'){if($.browser.opera||(/chrome/.test(navigator.userAgent.toLowerCase())))
-mainOptions["printMode"]='popup';}
-$("[id^='printElement_']").remove();return this.each(function(){var opts=$.meta?$.extend({},mainOptions,$(this).data()):mainOptions;_printElement($(this),opts);});};$.fn["printElement"]["defaults"]={"printMode":'iframe',"pageTitle":'',"overrideElementCSS":null,"printBodyOptions":{"styleToAdd":'padding:10px;margin:10px;',"classNameToAdd":''},"leaveOpen":false,"iframeElementOptions":{"styleToAdd":'border:none;position:absolute;width:0px;height:0px;bottom:0px;left:0px;',"classNameToAdd":''}};$.fn["printElement"]["cssElement"]={"href":'',"media":''};function _printElement(element,opts){var html=_getMarkup(element,opts);var popupOrIframe=null;var documentToWriteTo=null;if(opts["printMode"].toLowerCase()=='popup'){popupOrIframe=window.open('about:blank','printElementWindow','width=650,height=440,scrollbars=yes');documentToWriteTo=popupOrIframe.document;}
-else{var printElementID="printElement_"+(Math.round(Math.random()*99999)).toString();var iframe=document.createElement('IFRAME');$(iframe).attr({style:opts["iframeElementOptions"]["styleToAdd"],id:printElementID,className:opts["iframeElementOptions"]["classNameToAdd"],frameBorder:0,scrolling:'no',src:'about:blank'});document.body.appendChild(iframe);documentToWriteTo=(iframe.contentWindow||iframe.contentDocument);if(documentToWriteTo.document)
-documentToWriteTo=documentToWriteTo.document;iframe=document.frames?document.frames[printElementID]:document.getElementById(printElementID);popupOrIframe=iframe.contentWindow||iframe;}
-focus();documentToWriteTo.open();documentToWriteTo.write(html);documentToWriteTo.close();_callPrint(popupOrIframe);};function _callPrint(element){if(element&&element["printPage"])
-element["printPage"]();else
-setTimeout(function(){_callPrint(element);},50);}
-function _getElementHTMLIncludingFormElements(element){var $element=$(element);var elementHtml=$('<div></div>').append($element.clone()).html();return elementHtml;}
-function _getBaseHref(){var port=(window.location.port)?':'+window.location.port:'';return window.location.protocol+'//'+window.location.hostname+port+window.location.pathname;}
-function _getMarkup(element,opts){var $element=$(element);var elementHtml=_getElementHTMLIncludingFormElements(element);var html=new Array();html.push('<html><head><title>'+opts["pageTitle"]+'</title>');if(opts["overrideElementCSS"]){if(opts["overrideElementCSS"].length>0){for(var x=0;x<opts["overrideElementCSS"].length;x++){var current=opts["overrideElementCSS"][x];if(typeof(current)=='string')
-html.push('<link type="text/css" rel="stylesheet" href="'+current+'" >');else
-html.push('<link type="text/css" rel="stylesheet" href="'+current["href"]+'" media="'+current["media"]+'" >');}}}
-else{$("link",document).filter(function(){return $(this).attr("rel").toLowerCase()=="stylesheet";}).each(function(){html.push('<link type="text/css" rel="stylesheet" href="'+$(this).attr("href")+'" media="'+$(this).attr('media')+'" >');});}
-html.push('<base href="'+_getBaseHref()+'" />');html.push('</head><body style="'+opts["printBodyOptions"]["styleToAdd"]+'" class="'+opts["printBodyOptions"]["classNameToAdd"]+'">');html.push('<div class="'+$element.attr('class')+'">'+elementHtml+'</div>');html.push('<script type="text/javascript">function printPage(){focus();print();'+((!$.browser.opera&&!opts["leaveOpen"]&&opts["printMode"].toLowerCase()=='popup')?'close();':'')+'}</script>');html.push('</body></html>');return html.join('');};})(window);
-/*
- *	lib/js/legacy/widgets/form/fields.js
- */
-var no_value_fields=['Section Break','Column Break','HTML','Table','FlexTable','Button','Image'];var codeid=0;var code_editors={};function Field(){this.with_label=1;}
-Field.prototype.make_body=function(){var ischk=(this.df.fieldtype=='Check'?1:0);if(this.parent)
-this.wrapper=$a(this.parent,(this.with_label?'div':'span'));else
-this.wrapper=document.createElement((this.with_label?'div':'span'));this.label_area=$a(this.wrapper,'div','',{margin:'0px 0px 2px 0px',minHeight:'1em'});if(ischk&&!this.in_grid){this.input_area=$a(this.label_area,'span','',{marginRight:'4px'});this.disp_area=$a(this.label_area,'span','',{marginRight:'4px'});}
-if(this.with_label){this.label_span=$a(this.label_area,'span','small',{cssFloat:'left'})
-this.label_icon=$('<i class="icon icon-warning-sign">').toggle(false).appendTo(this.label_area).css('float','left').css('margin-left','7px').attr("title","This field is mandatory.");this.suggest_icon=$('<i class="icon icon-chevron-down">').toggle(false).appendTo(this.label_area).css('float','left').css('margin-left','7px').attr("title","will show suggestions as you type.");}else{this.label_span=$a(this.label_area,'span','',{marginRight:'4px'})
-$dh(this.label_area);}
-if(!this.input_area){this.input_area=$a(this.wrapper,(this.with_label?'div':'span'));this.disp_area=$a(this.wrapper,(this.with_label?'div':'span'));}
-if(this.in_grid){if(this.label_area)$dh(this.label_area);}else{this.input_area.className='input_area';$y(this.wrapper,{marginBottom:'9px'});this.set_description();}
-if(this.onmake)this.onmake();}
-Field.prototype.set_max_width=function(){var no_max=['Code','Text Editor','Text','Table','HTML']
-if(this.wrapper&&this.layout_cell&&this.layout_cell.parentNode.cells&&this.layout_cell.parentNode.cells.length==1&&!in_list(no_max,this.df.fieldtype)){$y(this.wrapper,{paddingRight:'50%'});}}
-Field.prototype.set_label=function(){if(this.with_label&&this.label_area&&this.label!=this.df.label){this.label_span.innerHTML=this.df.label;this.label=this.df.label;}}
-Field.prototype.set_description=function(){if(this.df.description){var p=in_list(['Text Editor','Code','Check'],this.df.fieldtype)?this.label_area:this.wrapper;this.desc_area=$a(p,'div','help small','',this.df.description)
-if(in_list(['Text Editor','Code'],this.df.fieldtype))
-$(this.desc_area).addClass('help small');}}
-Field.prototype.get_status=function(){if(this.in_filter)
-this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';}
-if(!this.df.permlevel)this.df.permlevel=0;var p=this.perm[this.df.permlevel];var ret;if(cur_frm.editable&&p&&p[WRITE]&&!this.df.disabled)ret='Write';else if(p&&p[READ])ret='Read';else ret='None';if(this.df.fieldtype=='Binary')
-ret='None';if(cint(this.df.hidden))
-ret='None';if(ret=='Write'&&cint(cur_frm.doc.docstatus)>0)ret='Read';var a_o_s=cint(this.df.allow_on_submit);if(a_o_s&&(this.in_grid||(this.frm&&this.frm.not_in_container))){a_o_s=null;if(this.in_grid)a_o_s=this.grid.field.df.allow_on_submit;if(this.frm&&this.frm.not_in_container){a_o_s=cur_grid.field.df.allow_on_submit;}}
-if(cur_frm.editable&&a_o_s&&cint(cur_frm.doc.docstatus)>0&&!this.df.hidden){tmp_perm=get_perm(cur_frm.doctype,cur_frm.docname,1);if(tmp_perm[this.df.permlevel]&&tmp_perm[this.df.permlevel][WRITE]){ret='Write';}}
-return ret;}
-Field.prototype.set_style_mandatory=function(add){if(add){$(this.txt?this.txt:this.input).addClass('input-mandatory');if(this.disp_area)$(this.disp_area).addClass('input-mandatory');}else{$(this.txt?this.txt:this.input).removeClass('input-mandatory');if(this.disp_area)$(this.disp_area).removeClass('input-mandatory');}}
-Field.prototype.refresh_mandatory=function(){if(this.in_filter)return;if(this.df.reqd){if(this.label_area)this.label_area.style.color="#d22";this.set_style_mandatory(1);}else{if(this.label_area)this.label_area.style.color="#222";this.set_style_mandatory(0);}
-this.refresh_label_icon()
-this.set_reqd=this.df.reqd;}
-Field.prototype.refresh_display=function(){if(!this.current_status||this.current_status!=this.disp_status){if(this.disp_status=='Write'){if(this.make_input&&(!this.input)){this.make_input();if(this.onmake_input)this.onmake_input();}
-if(this.show)this.show()
-else{$ds(this.wrapper);}
-if(this.input){$ds(this.input_area);$dh(this.disp_area);if(this.input.refresh)this.input.refresh();}else{$dh(this.input_area);$ds(this.disp_area);}}else if(this.disp_status=='Read'){if(this.show)this.show()
-else{$ds(this.wrapper);}
-$dh(this.input_area);$ds(this.disp_area);}else{if(this.hide)this.hide();else $dh(this.wrapper);}
-this.current_status=this.disp_status;}}
-Field.prototype.refresh=function(){this.disp_status=this.get_status();if(this.in_grid&&this.table_refresh&&this.disp_status=='Write')
-{this.table_refresh();return;}
-this.set_label();this.refresh_display();if(this.onrefresh)
-this.onrefresh();if(this.input){if(this.input.refresh)this.input.refresh(this.df);}
-if(this.wrapper){this.wrapper.fieldobj=this;$(this.wrapper).trigger('refresh');}
-if(!this.not_in_form)
-this.set_input(_f.get_value(this.doctype,this.docname,this.df.fieldname));this.refresh_mandatory();this.set_max_width();}
-Field.prototype.refresh_label_icon=function(){var to_update=false;if(this.df.reqd&&this.get_value&&is_null(this.get_value()))
-to_update=true;if(!to_update&&this.df.has_error)this.df.has_error=false;if(this.label_icon)this.label_icon.toggle(to_update);$(this.txt?this.txt:this.input).toggleClass('field-to-update',to_update);$(this.txt?this.txt:this.input).toggleClass('field-has-error',this.df.has_error?true:false);}
-Field.prototype.set=function(val){if(this.not_in_form)
-return;if((!this.docname)&&this.grid){this.docname=this.grid.add_newrow();}
-if(this.validate)
-val=this.validate(val);cur_frm.set_value_in_locals(this.doctype,this.docname,this.df.fieldname,val);this.value=val;}
-Field.prototype.set_input=function(val){this.value=val;if(this.input&&this.input.set_input){if(val==null)this.input.set_input('');else this.input.set_input(val);}
-var disp_val=val;if(val==null)disp_val='';this.set_disp(disp_val);}
-Field.prototype.run_trigger=function(){this.refresh_label_icon();if(this.not_in_form){return;}
-if(cur_frm.cscript[this.df.fieldname])
-cur_frm.runclientscript(this.df.fieldname,this.doctype,this.docname);cur_frm.refresh_dependency();}
-Field.prototype.set_disp_html=function(t){if(this.disp_area){$(this.disp_area).addClass('disp_area');this.disp_area.innerHTML=(t==null?'':t);if(!t)$(this.disp_area).addClass('disp_area_no_val');}}
-Field.prototype.set_disp=function(val){this.set_disp_html(val);}
-Field.prototype.activate=function(docname){this.docname=docname;this.refresh();if(this.input){var v=_f.get_value(this.doctype,this.docname,this.df.fieldname);this.last_value=v;if(this.input.onchange&&this.input.get_value&&this.input.get_value()!=v){if(this.validate)
-this.input.set_value(this.validate(v));else
-this.input.set_value((v==null)?'':v);if(this.format_input)
-this.format_input();}
-if(this.input.focus){try{this.input.focus();}catch(e){}}}
-if(this.txt){try{this.txt.focus();}catch(e){}
-this.txt.field_object=this;}}
-function DataField(){}DataField.prototype=new Field();DataField.prototype.make_input=function(){var me=this;this.input=$a_input(this.input_area,this.df.fieldtype=='Password'?'password':'text');this.get_value=function(){var v=this.input.value;if(this.validate)
-v=this.validate(v);return v;}
-this.input.name=this.df.fieldname;$(this.input).change(function(){me.set_value(me.get_value?me.get_value():$(this.input).val());});this.set_value=function(val){if(!me.last_value)me.last_value='';if(me.validate){val=me.validate(val);me.input.value=val==undefined?'':val;}
-me.set(val);if(me.format_input)
-me.format_input();if(in_list(['Currency','Float','Int'],me.df.fieldtype)){if(flt(me.last_value)==flt(val)){me.last_value=val;return;}}
-me.last_value=val;me.run_trigger();}
-this.input.set_input=function(val){if(val==null)val='';me.input.value=val;if(me.format_input)me.format_input();}
-if(this.df.options=='Suggest'){if(this.suggest_icon)this.suggest_icon.toggle(true);$(me.input).autocomplete({source:function(request,response){wn.call({method:'webnotes.widgets.search.search_link',args:{'txt':request.term,'dt':me.df.options,'query':repl('SELECT DISTINCT `%(fieldname)s` FROM \
-       `tab%(dt)s` WHERE `%(fieldname)s` LIKE "%s" LIMIT 50',{fieldname:me.df.fieldname,dt:me.df.parent})},callback:function(r){response(r.results);}});},select:function(event,ui){me.set(ui.item.value);}});}}
-DataField.prototype.validate=function(v){if(this.df.options=='Phone'){if(v+''=='')return'';v1=''
-v=v.replace(/ /g,'').replace(/-/g,'').replace(/\(/g,'').replace(/\)/g,'');if(v&&v.substr(0,1)=='+'){v1='+';v=v.substr(1);}
-if(v&&v.substr(0,2)=='00'){v1+='00';v=v.substr(2);}
-if(v&&v.substr(0,1)=='0'){v1+='0';v=v.substr(1);}
-v1+=cint(v)+'';return v1;}else if(this.df.options=='Email'){if(v+''=='')return'';if(!validate_email(v)){msgprint(this.df.label+': '+v+' is not a valid email id');return'';}else
-return v;}else{return v;}}
-function ReadOnlyField(){}
-ReadOnlyField.prototype=new Field();function HTMLField(){}
-HTMLField.prototype=new Field();HTMLField.prototype.with_label=0;HTMLField.prototype.set_disp=function(val){if(this.disp_area)this.disp_area.innerHTML=val;}
-HTMLField.prototype.set_input=function(val){if(val)this.set_disp(val);}
-HTMLField.prototype.onrefresh=function(){if(this.df.options)this.set_disp(this.df.options);}
-var datepicker_active=0;function DateField(){}DateField.prototype=new Field();DateField.prototype.make_input=function(){var me=this;this.user_fmt=sys_defaults.date_format;if(!this.user_fmt)this.user_fmt='dd-mm-yy';this.input=$a(this.input_area,'input');$(this.input).datepicker({dateFormat:me.user_fmt.replace('yyyy','yy'),altFormat:'yy-mm-dd',changeYear:true,beforeShow:function(input,inst){datepicker_active=1},onClose:function(dateText,inst){datepicker_active=0;if(_f.cur_grid_cell)
-_f.cur_grid_cell.grid.cell_deselect();}});var me=this;me.input.onchange=function(){if(this.value==null)this.value='';if(!this.not_in_form)
-me.set(dateutil.user_to_str(me.input.value));me.run_trigger();}
-me.input.set_input=function(val){if(val==null)val='';else val=dateutil.str_to_user(val);me.input.value=val;}
-me.get_value=function(){if(me.input.value)
-return dateutil.user_to_str(me.input.value);}}
-DateField.prototype.set_disp=function(val){var v=dateutil.str_to_user(val);if(v==null)v='';this.set_disp_html(v);}
-DateField.prototype.validate=function(v){if(!v)return;var me=this;this.clear=function(){msgprint("Date must be in format "+this.user_fmt);me.input.set_input('');return'';}
-var t=v.split('-');if(t.length!=3){return this.clear();}
-else if(cint(t[1])>12||cint(t[1])<1){return this.clear();}
-else if(cint(t[2])>31||cint(t[2])<1){return this.clear();}
-return v;};function LinkField(){}LinkField.prototype=new Field();LinkField.prototype.make_input=function(){var me=this;if(me.df.no_buttons){this.txt=$a(this.input_area,'input');this.input=this.txt;}else{makeinput_popup(this,'icon-search','icon-play','icon-plus');me.setup_buttons();me.onrefresh=function(){if(me.can_create)
-$(me.btn2).css('display','inline-block');else $dh(me.btn2);}}
-me.txt.field_object=this;me.input.set_input=function(val){if(val==undefined)val='';me.txt.value=val;}
-me.get_value=function(){return me.txt.value;}
-$(me.txt).autocomplete({source:function(request,response){wn.call({method:'webnotes.widgets.search.search_link',args:{'txt':request.term,'dt':me.df.options,'query':me.get_custom_query()},callback:function(r){response(r.results);},});},select:function(event,ui){me.set_input_value(ui.item.value);}}).data('autocomplete')._renderItem=function(ul,item){return $('<li></li>').data('item.autocomplete',item).append(repl('<a>%(label)s<br><span style="font-size:10px">%(info)s</span></a>',item)).appendTo(ul);};$(this.txt).change(function(){var val=$(this).val();me.set_input_value_executed=false;if(!val){if(selector&&selector.display)
-return;me.set_input_value('');}else{setTimeout(function(){if(!me.set_input_value_executed){me.set_input_value(val);}},1000);}})}
-LinkField.prototype.get_custom_query=function(){this.set_get_query();if(this.get_query){if(cur_frm)
-var doc=locals[cur_frm.doctype][cur_frm.docname];return this.get_query(doc,this.doctype,this.docname);}}
-LinkField.prototype.setup_buttons=function(){var me=this;me.btn.onclick=function(){selector.set(me,me.df.options,me.df.label);selector.show(me.txt);}
-if(me.btn1)me.btn1.onclick=function(){if(me.txt.value&&me.df.options){loaddoc(me.df.options,me.txt.value);}}
-me.can_create=0;if((!me.not_in_form)&&in_list(profile.can_create,me.df.options)){me.can_create=1;me.btn2.onclick=function(){var on_save_callback=function(new_rec){if(new_rec){var d=_f.calling_doc_stack.pop();locals[d[0]][d[1]][me.df.fieldname]=new_rec;me.refresh();if(me.grid)me.grid.refresh();me.run_trigger();}}
-_f.calling_doc_stack.push([me.doctype,me.docname]);new_doc(me.df.options);}}else{$dh(me.btn2);$y($td(me.tab,0,2),{width:'0px'});}}
-LinkField.prototype.set_input_value=function(val){var me=this;me.set_input_value_executed=true;var from_selector=false;if(selector&&selector.display)from_selector=true;me.refresh_label_icon();if(me.not_in_form){$(this.txt).val(val);return;}
-if(cur_frm){if(val==locals[me.doctype][me.docname][me.df.fieldname]){me.run_trigger();return;}}
-me.set(val);if(_f.cur_grid_cell)
-_f.cur_grid_cell.grid.cell_deselect();if(locals[me.doctype][me.docname][me.df.fieldname]&&!val){me.run_trigger();return;}
-if(val){me.validate_link(val,from_selector);}}
-LinkField.prototype.validate_link=function(val,from_selector){var me=this;var fetch='';if(cur_frm.fetch_dict[me.df.fieldname])
-fetch=cur_frm.fetch_dict[me.df.fieldname].columns.join(', ');$c('webnotes.widgets.form.utils.validate_link',{'value':val,'options':me.df.options,'fetch':fetch},function(r,rt){if(r.message=='Ok'){if($(me.txt).val()!=val){if((me.grid&&!from_selector)||(!me.grid)){$(me.txt).val(val);}}
-if(r.fetch_values)
-me.set_fetch_values(r.fetch_values);me.run_trigger();}else{var astr='';if(in_list(profile.can_create,me.df.options))astr=repl('<br><br><span class="link_type" onclick="newdoc(\'%(dt)s\')">Click here</span> to create a new %(dtl)s',{dt:me.df.options,dtl:get_doctype_label(me.df.options)})
-msgprint(repl('error:<b>%(val)s</b> is not a valid %(dt)s.<br><br>You must first create a new %(dt)s <b>%(val)s</b> and then select its value. To find an existing %(dt)s, click on the magnifying glass next to the field.%(add)s',{val:me.txt.value,dt:get_doctype_label(me.df.options),add:astr}));me.txt.value='';me.set('');}});}
-LinkField.prototype.set_fetch_values=function(fetch_values){var fl=cur_frm.fetch_dict[this.df.fieldname].fields;var changed_fields=[];for(var i=0;i<fl.length;i++){if(locals[this.doctype][this.docname][fl[i]]!=fetch_values[i]){locals[this.doctype][this.docname][fl[i]]=fetch_values[i];if(!this.grid){refresh_field(fl[i]);changed_fields.push(fl[i]);}}}
-for(i=0;i<changed_fields.length;i++){if(cur_frm.fields_dict[changed_fields[i]])
-cur_frm.fields_dict[changed_fields[i]].run_trigger();}
-if(this.grid)this.grid.refresh();}
-LinkField.prototype.set_get_query=function(){if(this.get_query)return;if(this.grid){var f=this.grid.get_field(this.df.fieldname);if(f.get_query)this.get_query=f.get_query;}}
-LinkField.prototype.set_disp=function(val){var t=null;if(val)t="<a href=\'javascript:loaddoc(\""+this.df.options+"\", \""+val+"\")\'>"+val+"</a>";this.set_disp_html(t);}
-function IntField(){}IntField.prototype=new DataField();IntField.prototype.validate=function(v){if(isNaN(parseInt(v)))return null;return cint(v);};IntField.prototype.format_input=function(){if(this.input.value==null)this.input.value='';}
-function FloatField(){}FloatField.prototype=new DataField();FloatField.prototype.validate=function(v){var v=parseFloat(v);if(isNaN(v))
-return null;return v;};FloatField.prototype.format_input=function(){if(this.input.value==null)this.input.value='';}
-function CurrencyField(){}CurrencyField.prototype=new DataField();CurrencyField.prototype.format_input=function(){var v=fmt_money(this.input.value);if(this.not_in_form){if(!flt(this.input.value))v='';}
-this.input.value=v;}
-CurrencyField.prototype.validate=function(v){if(v==null||v=='')
-return 0;return flt(v,2);}
-CurrencyField.prototype.set_disp=function(val){var v=fmt_money(val);this.set_disp_html(v);}
-CurrencyField.prototype.onmake_input=function(){if(!this.input)return;this.input.onfocus=function(){if(flt(this.value)==0)this.select();}}
-function CheckField(){}CheckField.prototype=new Field();CheckField.prototype.validate=function(v){var v=parseInt(v);if(isNaN(v))return 0;return v;};CheckField.prototype.onmake=function(){this.checkimg=$a(this.disp_area,'div');var img=$a(this.checkimg,'img');img.src='images/lib/ui/tick.gif';$dh(this.checkimg);}
-CheckField.prototype.make_input=function(){var me=this;this.input=$a_input(this.input_area,'checkbox');$y(this.input,{width:"16px",border:'0px',margin:'2px'});$(this.input).click(function(){me.set(this.checked?1:0);me.run_trigger();})
-this.input.set_input=function(v){v=parseInt(v);if(isNaN(v))v=0;if(v)me.input.checked=true;else me.input.checked=false;}
-this.get_value=function(){return this.input.checked?1:0;}}
-CheckField.prototype.set_disp=function(val){if(val){$ds(this.checkimg);}
-else{$dh(this.checkimg);}}
-function TextField(){}TextField.prototype=new Field();TextField.prototype.set_disp=function(val){this.disp_area.innerHTML=replace_newlines(val);}
-TextField.prototype.make_input=function(){var me=this;if(this.in_grid)
-return;this.input=$a(this.input_area,'textarea');if(this.df.fieldtype=='Small Text')
-this.input.style.height="80px";this.input.set_input=function(v){me.input.value=v;}
-this.input.onchange=function(){me.set(me.input.value);me.run_trigger();}
-this.get_value=function(){return this.input.value;}}
-var text_dialog;function make_text_dialog(){var d=new Dialog(520,410,'Edit Text');d.make_body([['Text','Enter Text'],['HTML','Description'],['Button','Update']]);d.widgets['Update'].onclick=function(){var t=this.dialog;t.field.set(t.widgets['Enter Text'].value);t.hide();}
-d.onshow=function(){this.widgets['Enter Text'].style.height='300px';var v=_f.get_value(this.field.doctype,this.field.docname,this.field.df.fieldname);this.widgets['Enter Text'].value=v==null?'':v;this.widgets['Enter Text'].focus();this.widgets['Description'].innerHTML=''
-if(this.field.df.description)
-$a(this.widgets['Description'],'div','help small','',this.field.df.description);}
-d.onhide=function(){if(_f.cur_grid_cell)
-_f.cur_grid_cell.grid.cell_deselect();}
-text_dialog=d;}
-TextField.prototype.table_refresh=function(){if(!this.text_dialog)
-make_text_dialog();text_dialog.set_title('Enter text for "'+this.df.label+'"');text_dialog.field=this;text_dialog.show();}
-function SelectField(){}SelectField.prototype=new Field();SelectField.prototype.make_input=function(){var me=this;var opt=[];if(this.in_filter&&(!this.df.single_select)){this.input=$a(this.input_area,'select');this.input.multiple=true;this.input.style.height='4em';this.input.lab=$a(this.input_area,'div',{fontSize:'9px',color:'#999'});this.input.lab.innerHTML='(Use Ctrl+Click to select multiple or de-select)'}else{this.input=$a(this.input_area,'select');this.input.onchange=function(){if(me.validate)
-me.validate();me.set(sel_val(this));me.run_trigger();}
-if(this.df.options=='attach_files:'){this.file_attach=true;}}
-this.set_as_single=function(){var i=this.input;i.multiple=false;i.style.height=null;if(i.lab)$dh(i.lab)}
-this.refresh_options=function(options){if(options)
-me.df.options=options;if(this.file_attach)
-this.set_attach_options();me.options_list=me.df.options?me.df.options.split('\n'):[''];empty_select(this.input);if(me.in_filter&&me.options_list[0]!=''){me.options_list=add_lists([''],me.options_list);}
-add_sel_options(this.input,me.options_list);}
-this.onrefresh=function(){this.refresh_options();if(this.not_in_form){this.input.value='';return;}
-if(_f.get_value)
-var v=_f.get_value(this.doctype,this.docname,this.df.fieldname);else{if(this.options_list&&this.options_list.length)
-var v=this.options_list[0];else
-var v=null;}
-this.input.set_input(v);}
-this.input.set_input=function(v){if(!v){if(!me.input.multiple){if(me.docname){if(me.options_list&&me.options_list.length){me.set(me.options_list[0]);me.input.value=me.options_list[0];}else{me.input.value='';}}}}else{if(me.options_list){if(me.input.multiple){for(var i=0;i<me.input.options.length;i++){me.input.options[i].selected=0;if(me.input.options[i].value&&inList(typeof(v)=='string'?v.split(","):v,me.input.options[i].value))
-me.input.options[i].selected=1;}}else if(in_list(me.options_list,v)){me.input.value=v;}}}}
-this.get_value=function(){if(me.input.multiple){var l=[];for(var i=0;i<me.input.options.length;i++){if(me.input.options[i].selected)l[l.length]=me.input.options[i].value;}
-return l;}else{if(me.input.options){var val=sel_val(me.input);if(!val&&!me.input.selectedIndex)
-val=me.input.options[0].value;return val;}
-return me.input.value;}}
-this.set_attach_options=function(){if(!cur_frm)return;var fl=cur_frm.doc.file_list;if(fl){this.df.options='';var fl=fl.split('\n');for(var i in fl){this.df.options+='\n'+fl[i].split(',')[1];}}else{this.df.options=''}}
-this.refresh();}
-function TimeField(){}TimeField.prototype=new Field();TimeField.prototype.get_time=function(){return time_to_hhmm(sel_val(this.input_hr),sel_val(this.input_mn),sel_val(this.input_am));}
-TimeField.prototype.set_time=function(v){ret=time_to_ampm(v);this.input_hr.inp.value=ret[0];this.input_mn.inp.value=ret[1];this.input_am.inp.value=ret[2];}
-TimeField.prototype.set_style_mandatory=function(){}
-TimeField.prototype.make_input=function(){var me=this;this.input=$a(this.input_area,'div','time_field');var t=make_table(this.input,1,3,'200px');var opt_hr=['1','2','3','4','5','6','7','8','9','10','11','12'];var opt_mn=['00','05','10','15','20','25','30','35','40','45','50','55'];var opt_am=['AM','PM'];this.input_hr=new SelectWidget($td(t,0,0),opt_hr,'50px');this.input_mn=new SelectWidget($td(t,0,1),opt_mn,'50px');this.input_am=new SelectWidget($td(t,0,2),opt_am,'50px');var onchange_fn=function(){me.set(me.get_time());me.run_trigger();}
-this.input_hr.inp.onchange=onchange_fn;this.input_mn.inp.onchange=onchange_fn;this.input_am.inp.onchange=onchange_fn;this.onrefresh=function(){var v=_f.get_value?_f.get_value(me.doctype,me.docname,me.df.fieldname):null;me.set_time(v);if(!v)
-me.set(me.get_time());}
-this.input.set_input=function(v){if(v==null)v='';me.set_time(v);}
-this.get_value=function(){return this.get_time();}
-this.refresh();}
-TimeField.prototype.set_disp=function(v){var t=time_to_ampm(v);var t=t[0]+':'+t[1]+' '+t[2];this.set_disp_html(t);}
-function makeinput_popup(me,iconsrc,iconsrc1,iconsrc2){var icon_style={cursor:'pointer',width:'16px',verticalAlign:'middle',marginBottom:'-3px'};me.input=$a(me.input_area,'div');if(!me.not_in_form)
-$y(me.input,{width:'80%'});me.input.set_width=function(w){$y(me.input,{width:(w-2)+'px'});}
-var tab=$a(me.input,'table');me.tab=tab;$y(tab,{width:'100%',borderCollapse:'collapse',tableLayout:'fixed'});var c0=tab.insertRow(0).insertCell(0);var c1=tab.rows[0].insertCell(1);$y(c1,{width:'20px'});me.txt=$a($a($a(c0,'div','',{paddingRight:'8px'}),'div'),'input','',{width:'100%'});me.btn=$a(c1,'i',iconsrc,icon_style)
-if(iconsrc1)
-me.btn.setAttribute('title','Search');else
-me.btn.setAttribute('title','Select Date');if(iconsrc1){var c2=tab.rows[0].insertCell(2);$y(c2,{width:'20px'});me.btn1=$a(c2,'i',iconsrc1,icon_style)
-me.btn1.setAttribute('title','Open Link');}
-if(iconsrc2){var c3=tab.rows[0].insertCell(3);$y(c3,{width:'20px'});me.btn2=$a(c3,'i',iconsrc2,icon_style)
-me.btn2.setAttribute('title','Create New');$dh(me.btn2);}
-me.txt.name=me.df.fieldname;me.setdisabled=function(tf){me.txt.disabled=tf;}}
-var tmpid=0;_f.ButtonField=function(){};_f.ButtonField.prototype=new Field();_f.ButtonField.prototype.with_label=0;_f.ButtonField.prototype.init=function(){this.prev_button=null;if(!this.frm)return;if(cur_frm&&cur_frm.fields[cur_frm.fields.length-1]&&cur_frm.fields[cur_frm.fields.length-1].df.fieldtype=='Button'){this.make_body=function(){this.prev_button=cur_frm.fields[cur_frm.fields.length-1];if(!this.prev_button.prev_button){this.prev_button.button_area=$a(this.prev_button.input_area,'span');}
-this.wrapper=this.prev_button.wrapper;this.input_area=this.prev_button.input_area;this.disp_area=this.prev_button.disp_area;this.button_area=$a(this.prev_button.input_area,'span');}}}
-_f.ButtonField.prototype.make_input=function(){var me=this;if(!this.prev_button){$y(this.input_area,{marginTop:'4px',marginBottom:'4px'});}
-if(!this.button_area)
-this.button_area=$a(this.input_area,'span','',{marginRight:'4px'});this.input=$btn(this.button_area,me.df.label,null,{fontWeight:'bold'},null,1)
-$(this.input).click(function(){if(me.not_in_form)return;if(cur_frm.cscript[me.df.fieldname]&&(!me.in_filter)){cur_frm.runclientscript(me.df.fieldname,me.doctype,me.docname);}else{cur_frm.runscript(me.df.options,me);}});}
-_f.ButtonField.prototype.hide=function(){$dh(this.button_area);};_f.ButtonField.prototype.show=function(){$ds(this.button_area);};_f.ButtonField.prototype.set=function(v){};_f.ButtonField.prototype.set_disp=function(val){}
-function make_field(docfield,doctype,parent,frm,in_grid,hide_label){switch(docfield.fieldtype.toLowerCase()){case'data':var f=new DataField();break;case'password':var f=new DataField();break;case'int':var f=new IntField();break;case'float':var f=new FloatField();break;case'currency':var f=new CurrencyField();break;case'read only':var f=new ReadOnlyField();break;case'link':var f=new LinkField();break;case'date':var f=new DateField();break;case'time':var f=new TimeField();break;case'html':var f=new HTMLField();break;case'check':var f=new CheckField();break;case'text':var f=new TextField();break;case'small text':var f=new TextField();break;case'select':var f=new SelectField();break;case'button':var f=new _f.ButtonField();break;case'code':var f=new _f.CodeField();break;case'text editor':var f=new _f.CodeField();break;case'table':var f=new _f.TableField();break;case'section break':var f=new _f.SectionBreak();break;case'column break':var f=new _f.ColumnBreak();break;case'image':var f=new _f.ImageField();break;}
-f.parent=parent;f.doctype=doctype;f.df=docfield;f.perm=frm?frm.perm:[[1,1,1]];if(_f)
-f.col_break_width=_f.cur_col_break_width;if(in_grid){f.in_grid=true;f.with_label=0;}
-if(hide_label){f.with_label=0;}
-if(frm){f.frm=frm;if(parent)
-f.layout_cell=parent.parentNode;}
-if(f.init)f.init();f.make_body();return f;}
-/*
- *	lib/js/wn/ui/appframe.js
- */
-wn.ui.AppFrame=Class.extend({init:function(parent,title){this.buttons={};this.$w=$('<div></div>').appendTo(parent);this.$titlebar=$('<div class="appframe-titlebar">\
-   <span class="appframe-title"></span>\
-   <span class="close">&times;</span>\
-  </div>').appendTo(this.$w);this.$w.find('.close').click(function(){window.history.back();})
-if(title)this.title(title);},title:function(txt){this.clear_breadcrumbs();this.add_breadcrumb(txt);},add_button:function(label,click,icon){this.add_toolbar();args={label:label,icon:''};if(icon){args.icon='<i class="icon '+icon+'"></i>';}
-this.buttons[label]=$(repl('<button class="btn btn-small">\
-   %(icon)s %(label)s</button>',args)).click(click).appendTo(this.toolbar);return this.buttons[label];},add_help_button:function(txt){this.add_toolbar();$('<button class="btn btn-small" style="float:right;" button-type="help">\
-   <b>?</b></button>').data('help-text',txt).click(function(){msgprint($(this).data('help-text'),'Help');}).appendTo(this.toolbar);},clear_buttons:function(){this.toolbar&&this.toolbar.empty();},add_breadcrumb:function(html){if(!this.$breadcrumbs)
-this.$breadcrumbs=$('</span>\
-    <span class="breadcrumb-area"></span>').appendTo(this.$titlebar);var crumb=$('<span>').html(html);if(!this.$breadcrumbs.find('span').length){crumb.addClass('appframe-title');}
-crumb.appendTo(this.$breadcrumbs);},clear_breadcrumbs:function(){this.$breadcrumbs&&this.$breadcrumbs.empty();},add_toolbar:function(){if(!this.toolbar)
-this.$w.append('<div class="appframe-toolbar"></div>');this.toolbar=this.$w.find('.appframe-toolbar');},add_label:function(label){return $("<span class='label'>"+label+" </span>").appendTo(this.toolbar);},add_select:function(label,options){this.add_toolbar();return $("<select style='width: 100px;'>").add_options(options).appendTo(this.toolbar);},add_data:function(label){this.add_toolbar();return $("<input style='width: 100px;' placeholder='"+label+"'>").appendTo(this.toolbar);},add_date:function(label,date){this.add_toolbar();return $("<input style='width: 80px;'>").datepicker({dateFormat:sys_defaults.date_format.replace("yyyy","yy"),changeYear:true,}).val(dateutil.str_to_user(date)||"").appendTo(this.toolbar);},});wn.ui.make_app_page=function(opts){if(opts.single_column){$(opts.parent).html('<div class="layout-wrapper layout-wrapper-appframe">\
-   <div class="layout-appframe"></div>\
-   <div class="layout-main"></div>\
-  </div>');}else{$(opts.parent).html('<div class="layout-wrapper layout-wrapper-background">\
-   <div class="layout-appframe"></div>\
-   <div class="layout-main-section"></div>\
-   <div class="layout-side-section"></div>\
-   <div class="clear"></div>\
-  </div>');}
-opts.parent.appframe=new wn.ui.AppFrame($(opts.parent).find('.layout-appframe'));if(opts.title)opts.parent.appframe.title(opts.title);}
-/*
- *	lib/js/wn/ui/dialog.js
- */
-wn.widgets.FieldGroup=function(){this.first_button=false;this.make_fields=function(body,fl){if(!window.make_field){wn.require('css/fields.css');wn.require('js/fields.js');}
-$y(this.body,{padding:'11px'});this.fields_dict={};for(var i=0;i<fl.length;i++){var df=fl[i];if(!df.fieldname&&df.label){df.fieldname=df.label.replace(/ /g,'_').toLowerCase();}
-var div=$a(body,'div','',{margin:'6px 0px'})
-f=make_field(df,null,div,null);f.not_in_form=1;this.fields_dict[df.fieldname]=f
-f.refresh();if(df.fieldtype=='Button'&&!this.first_button){$(f.input).addClass('btn-info');this.first_button=true;}}}
-this.catch_enter_as_submit=function(){var me=this;$(this.body).find(':input[type="text"], :input[type="password"]').keypress(function(e){if(e.which==13){$(me.body).find('.btn-info:first').click();}})}
-this.get_values=function(){var ret={};var errors=[];for(var key in this.fields_dict){var f=this.fields_dict[key];var v=f.get_value?f.get_value():null;if(f.df.reqd&&!v)
-errors.push(f.df.label+' is mandatory');if(v)ret[f.df.fieldname]=v;}
-if(errors.length){msgprint('<b>Please check the following Errors</b>\n'+errors.join('\n'));return null;}
-return ret;}
-this.set_value=function(key,val){var f=this.fields_dict[key];if(f){f.set_input(val);f.refresh_mandatory();}}
-this.set_values=function(dict){for(var key in dict){if(this.fields_dict[key]){this.set_value(key,dict[key]);}}}
-this.clear=function(){for(key in this.fields_dict){var f=this.fields_dict[key];if(f){f.set_input(f.df['default']||'');}}}}
-wn.widgets.Dialog=function(opts){this.display=false;this.make=function(opts){if(opts){this.opts=opts;$.extend(this,opts);}
-if(!this.opts.width)this.opts.width=480;if(!$('#dialog-container').length){$('<div id="dialog-container">').appendTo('body');}
-this.wrapper=$('<div class="dialog_wrapper">').appendTo('#dialog-container').get(0);if(this.opts.width)
-this.wrapper.style.width=this.opts.width+'px';this.make_head();this.body=$a(this.wrapper,'div','dialog_body');if(this.opts.fields){this.make_fields(this.body,this.opts.fields);this.catch_enter_as_submit();}}
-this.make_head=function(){var me=this;this.appframe=new wn.ui.AppFrame(this.wrapper);this.appframe.$titlebar.find('.close').unbind('click').click(function(){if(me.oncancel)me.oncancel();me.hide();});this.set_title(this.opts.title);}
-this.set_title=function(t){this.appframe.$titlebar.find('.appframe-title').html(t||'');}
-this.set_postion=function(){this.wrapper.style.left=(($(window).width()-cint(this.wrapper.style.width))/2)+'px';this.wrapper.style.top=($(window).scrollTop()+60)+'px';top_index++;$y(this.wrapper,{zIndex:top_index});}
-this.show=function(){if(this.display)return;this.set_postion()
-$ds(this.wrapper);freeze();this.display=true;cur_dialog=this;if(this.onshow)this.onshow();$(this.wrapper).find(':input:first').focus();}
-this.hide=function(){if(this.onhide)this.onhide();unfreeze();$dh(this.wrapper);this.display=false;cur_dialog=null;}
-this.no_cancel=function(){this.appframe.$titlebar.find('.close').toggle(false);}
-if(opts)this.make(opts);}
-wn.widgets.Dialog.prototype=new wn.widgets.FieldGroup();wn.provide('wn.ui');wn.ui.Dialog=wn.widgets.Dialog
-$(document).bind('keydown',function(e){if(cur_dialog&&!cur_dialog.no_cancel_flag&&e.which==27){cur_dialog.hide();}});
-/*
- *	lib/js/wn/ui/button.js
- */
-wn.ui.Button=function(args){var me=this;$.extend(this,{make:function(){me.btn=wn.dom.add(args.parent,'button','btn btn-small '+(args.css_class||''));me.btn.args=args;me.loading_img=wn.dom.add(me.btn.args.parent,'img','',{margin:'0px 4px -2px 4px',display:'none'});me.loading_img.src='images/lib/ui/button-load.gif';me.btn.innerHTML=args.label;me.btn.user_onclick=args.onclick;$(me.btn).bind('click',function(){if(!this.disabled&&this.user_onclick)
-this.user_onclick(this);})
-me.btn.set_working=me.set_working;me.btn.done_working=me.done_working;if(me.btn.args.style)
-wn.dom.css(me.btn,args.style);},set_working:function(){me.btn.disabled='disabled';$(me.loading_img).css('display','inline');},done_working:function(){me.btn.disabled=false;$(me.loading_img).toggle(false);}});this.make();}
-/*
- *	lib/js/wn/ui/search.js
- */
-wn.ui.Search=Class.extend({init:function(opts){$.extend(this,opts);var me=this;wn.model.with_doctype(this.doctype,function(r){me.make();me.dialog.show();me.list.$w.find('.list-filters input[type="text"]').focus();});},make:function(){var me=this;this.dialog=new wn.ui.Dialog({title:this.doctype+' Search',width:500});this.list=new wn.ui.Listing({parent:$(this.dialog.body),appframe:this.dialog.appframe,new_doctype:this.doctype,doctype:this.doctype,method:'webnotes.widgets.doclistview.get',show_filters:true,style:'compact',get_args:function(){if(me.query){me.page_length=50;return{query:me.query}}else{return{doctype:me.doctype,fields:['`tab'+me.doctype+'`.name'],filters:me.list.filter_list.get_filters(),docstatus:['0','1']}}},render_row:function(parent,data){$ln=$('<a style="cursor: pointer;" data-name="'+data.name+'">'
-+data.name+'</a>').appendTo(parent).click(function(){var val=$(this).attr('data-name');me.dialog.hide();if(me.callback)
-me.callback(val);else
-wn.set_route('Form',me.doctype,val);});}});this.list.filter_list.add_filter(this.doctype,'name','like');this.list.run();}})
-/*
- *	lib/js/wn/ui/tree.js
- */
-wn.ui.Tree=Class.extend({init:function(args){$.extend(this,args);this.nodes={};this.$w=$('<div class="tree">').appendTo(this.parent);this.rootnode=new wn.ui.TreeNode({tree:this,parent:this.$w,label:this.label,expandable:true});this.set_style();},set_style:function(){wn.dom.set_style("\
-   .tree li { list-style: none; }\
-   .tree ul { margin-top: 2px; }\
-   .tree-link { cursor: pointer; }\
-  ")}})
-wn.ui.TreeNode=Class.extend({init:function(args){var me=this;$.extend(this,args);this.loaded=false;this.expanded=false;this.tree.nodes[this.label]=this;this.$a=$('<a class="tree-link">').click(function(){if(me.expandable&&me.tree.method&&!me.loaded){me.load()}else{me.selectnode();}
-if(me.tree.click)me.tree.click(this);}).bind('reload',function(){me.reload();}).data('label',this.label).appendTo(this.parent);if(this.expandable){this.$a.append('<i class="icon-folder-close"></i> '+this.label);}else{this.$a.append('<i class="icon-file"></i> '+this.label);}
-if(this.tree.onrender){this.tree.onrender(this);}},selectnode:function(){if(this.$ul){this.$ul.toggle();this.$a.find('i').removeClass();if(this.$ul.css('display').toLowerCase()=='block'){this.$a.find('i').addClass('icon-folder-open');}else{this.$a.find('i').addClass('icon-folder-close');}}
-this.tree.$w.find('a.selected').removeClass('selected');this.$a.toggleClass('selected');this.expanded=!this.expanded;},reload:function(){if(this.expanded){this.$a.click();}
-if(this.$ul){this.$ul.empty();}
-this.load();},addnode:function(data){if(!this.$ul){this.$ul=$('<ul>').toggle(false).appendTo(this.parent);}
-return new wn.ui.TreeNode({tree:this.tree,parent:$('<li>').appendTo(this.$ul),label:data.value,expandable:data.expandable,data:data});},load:function(){var me=this;args=$.extend(this.tree.args,{parent:this.label});$(me.$a).set_working();wn.call({method:this.tree.method,args:args,callback:function(r){$(me.$a).done_working();$.each(r.message,function(i,v){node=me.addnode(v);node.$a.data('node-data',v);});me.loaded=true;me.selectnode();}})}})
-/*
- *	lib/js/wn/upload.js
- */
-wn.upload={make:function(opts){var id=wn.dom.set_unique_id();$(opts.parent).append(repl('<iframe id="%(id)s" name="%(id)s" src="blank.html" \
-    style="width:0px; height:0px; border:0px"></iframe>\
-   <form method="POST" enctype="multipart/form-data" \
-    action="%(action)s" target="%(id)s">\
-    <input type="file" name="filedata" /><br><br>\
-    <input type="submit" class="btn btn-small" value="Upload" />\
-   </form>',{id:id,action:wn.request.url}));opts.args.cmd='uploadfile';opts.args._id=id;for(key in opts.args){if(opts.args[key]){$('<input type="hidden">').attr('name',key).attr('value',opts.args[key]).appendTo($(opts.parent).find('form'));}}
-$('#'+id).get(0).callback=opts.callback},callback:function(id,file_id,args){$('#'+id).get(0).callback(file_id,args);}}
-/*
- *	lib/js/wn/misc/about.js
- */
-wn.provide('wn.ui.misc');wn.ui.misc.about=function(){if(!wn.ui.misc.about_dialog){var d=new wn.widgets.Dialog({title:'About wnframework'})
-$(d.body).html(repl("<div style='padding: 20px'<p><b>Application Name:</b> %(name)s</p>\
-  <p><b>Version:</b> %(version)s</p>\
-  <p><b>License:</b> %(license)s</p>\
-  <p><b>Source Code:</b> %(source)s</p>\
-  <p><b>Publisher:</b> %(publisher)s</p>\
-  <p><b>Copyright:</b> %(copyright)s</p></div>",wn.app));wn.ui.misc.about_dialog=d;}
-wn.ui.misc.about_dialog.show();}
-/*
- *	lib/js/wn/views/doclistview.js
- */
-wn.provide('wn.views.doclistview');wn.provide('wn.doclistviews');wn.views.doclistview.show=function(doctype){var page_name=wn.get_route_str();if(wn.pages[page_name]){wn.container.change_to(wn.pages[page_name]);}else{var route=wn.get_route();if(route[1]){wn.model.with_doctype(route[1],function(r){if(r&&r['403']){return;}
-new wn.views.DocListView(route[1]);});}}}
-wn.views.DocListView=wn.ui.Listing.extend({init:function(doctype){this.doctype=doctype;this.label=get_doctype_label(doctype);this.label=(this.label.toLowerCase().substr(-4)=='list')?this.label:(this.label+' List');this.make_page();this.setup();},make_page:function(){var me=this;var page_name=wn.get_route_str();var page=wn.container.add_page(page_name);wn.container.change_to(page_name);this.$page=$(page);this.$page.html('<div class="layout-wrapper layout-wrapper-background">\
-   <div class="appframe-area"></div>\
-   <div class="layout-main-section">\
-    <div class="wnlist-area"><div class="help">Loading...</div></div>\
-   </div>\
-   <div class="layout-side-section">\
-    <div class="show-docstatus hide" style="margin-bottom: 19px">\
-     <h4>Show</h4>\
-     <div><input data-docstatus="0" type="checkbox" checked="checked" /> Drafts</div>\
-     <div><input data-docstatus="1" type="checkbox" checked="checked" /> Submitted</div>\
-     <div><input data-docstatus="2" type="checkbox" /> Cancelled</div>\
-    </div>\
-   </div>\
-   <div style="clear: both"></div>\
-  </div>');this.appframe=new wn.ui.AppFrame(this.$page.find('.appframe-area'));wn.views.breadcrumbs(this.appframe,locals.DocType[this.doctype].module,this.doctype);},setup:function(){var me=this;me.can_delete=wn.model.can_delete(me.doctype);me.meta=locals.DocType[me.doctype];me.$page.find('.wnlist-area').empty(),me.setup_docstatus_filter();me.setup_listview();me.init_list();me.init_stats();me.make_report_button();me.add_delete_option();me.make_help();},make_report_button:function(){var me=this;if(wn.boot.profile.can_get_report.indexOf(this.doctype)!=-1){this.appframe.add_button('Build Report',function(){wn.set_route('Report2',me.doctype);},'icon-th')}},make_help:function(){if(this.meta.description){this.appframe.add_help_button(wn.markdown('## '+this.meta.name+'\n\n'
-+this.meta.description));}},setup_docstatus_filter:function(){var me=this;this.can_submit=$.map(locals.DocPerm,function(d){if(d.parent==me.meta.name&&d.submit)return 1
-else return null;}).length;if(this.can_submit){this.$page.find('.show-docstatus').removeClass('hide');this.$page.find('.show-docstatus input').click(function(){me.run();})}},setup_listview:function(){if(this.meta.__listjs){eval(this.meta.__listjs);this.listview=new wn.doclistviews[this.doctype](this);}else{this.listview=new wn.views.ListView(this);}
-this.listview.parent=this;this.wrapper=this.$page.find('.wnlist-area');this.page_length=20;this.allow_delete=true;},init_list:function(auto_run){var me=this;this.make({method:'webnotes.widgets.doclistview.get',get_args:this.get_args,parent:this.wrapper,start:0,page_length:this.page_length,show_filters:true,show_grid:true,new_doctype:this.doctype,allow_delete:this.allow_delete,no_result_message:this.make_no_result(),columns:this.listview.fields,custom_new_doc:me.listview.make_new_doc||undefined,});$(this.wrapper).find('button[list_view_doc="'+me.doctype+'"]').click(function(){(me.listview.make_new_doc||me.make_new_doc)(me.doctype);});if((auto_run!==false)&&(auto_run!==0))this.run();},make_no_result:function(){var no_result_message=repl('<div class="well">\
-  <p>No %(doctype_label)s found</p>\
-  <hr>\
-  <p><button class="btn btn-info btn-small" list_view_doc="%(doctype)s">\
-   Make a new %(doctype_label)s</button>\
-  </p></div>',{doctype_label:get_doctype_label(this.doctype),doctype:this.doctype});return no_result_message;},render_row:function(row,data){data.doctype=this.doctype;this.listview.render(row,data,this);},get_query_fields:function(){return this.listview.fields;},get_args:function(){return{doctype:this.doctype,fields:this.get_query_fields(),filters:this.filter_list.get_filters(),docstatus:this.can_submit?$.map(this.$page.find('.show-docstatus :checked'),function(inp){return $(inp).attr('data-docstatus')}):[],order_by:this.listview.order_by||undefined,group_by:this.listview.group_by||undefined,}},add_delete_option:function(){var me=this;if(this.can_delete){this.add_button('Delete',function(){me.delete_items();},'icon-remove');$('<div style="padding: 4px"><input type="checkbox" name="select-all" />\
-     Select all</div>').insertBefore(this.$page.find('.result-list'));this.$page.find('[name="select-all"]').click(function(){me.$page.find('.list-delete').attr('checked',$(this).attr('checked')||false);})}},delete_items:function(){var me=this;var dl=$.map(me.$page.find('.list-delete:checked'),function(e){return $(e).data('name');});if(!dl.length)
-return;if(!confirm('This is PERMANENT action and you cannot undo. Continue?')){return;}
-me.set_working(true);wn.call({method:'webnotes.widgets.doclistview.delete_items',args:{items:dl,doctype:me.doctype},callback:function(){me.set_working(false);me.refresh();}})},init_stats:function(){var me=this
-wn.call({method:'webnotes.widgets.doclistview.get_stats',args:{stats:me.listview.stats,doctype:me.doctype},callback:function(r){$.each(me.listview.stats,function(i,v){me.render_stat(v,r.message[v]);});if(me.listview.stats.length){$('<button class="btn btn-small"><i class="refresh"></i> Refresh</button>').click(function(){me.reload_stats();}).appendTo($('<div class="stat-wrapper">').appendTo(me.$page.find('.layout-side-section')))}}});},render_stat:function(field,stat){var me=this;if(!stat||!stat.length){if(field=='_user_tags'){this.$page.find('.layout-side-section').append('<div class="stat-wrapper"><h4>Tags</h4>\
-      <div class="help small"><i>No records tagged.</i><br><br> \
-      To add a tag, open the document and click on \
-      "Add Tag" on the sidebar</div></div>');}
-return;}
-var label=wn.meta.docfield_map[this.doctype][field]?wn.meta.docfield_map[this.doctype][field].label:field;if(label=='_user_tags')label='Tags';var $w=$('<div class="stat-wrapper">\
-   <h4>'+label+'</h4>\
-   <div class="stat-grid">\
-   </div>\
-  </div>');stat=stat.sort(function(a,b){return b[1]-a[1]});var sum=0;$.each(stat,function(i,v){sum=sum+v[1];})
-$.each(stat,function(i,v){me.render_stat_item(i,v,sum,field).appendTo($w.find('.stat-grid'));});$w.appendTo(this.$page.find('.layout-side-section'));},render_stat_item:function(i,v,max,field){var me=this;var args={}
-args.label=v[0];args.width=flt(v[1])/max*100;args.count=v[1];args.field=field;$item=$(repl('<div class="stat-item">\
-   <div class="stat-bar" style="width: %(width)s%"></div>\
-   <div class="stat-label">\
-    <a href="#" data-label="%(label)s" data-field="%(field)s">\
-     %(label)s</a> \
-    (%(count)s)</div>\
-  </div>',args));this.setup_stat_item_click($item);return $item;},reload_stats:function(){this.$page.find('.layout-side-section .stat-wrapper').remove();this.init_stats();},setup_stat_item_click:function($item){var me=this;$item.find('a').click(function(){var fieldname=$(this).attr('data-field');var label=$(this).attr('data-label');me.set_filter(fieldname,label);return false;});},set_filter:function(fieldname,label){var filter=this.filter_list.get_filter(fieldname);if(filter){var v=filter.field.get_value();if(v.indexOf(label)!=-1){return false;}else{if(fieldname=='_user_tags'){this.filter_list.add_filter(this.doctype,fieldname,'like','%'+label);}else{filter.set_values(this.doctype,fieldname,'in',v+', '+label);}}}else{if(fieldname=='_user_tags'){this.filter_list.add_filter(this.doctype,fieldname,'like','%'+label);}else{this.filter_list.add_filter(this.doctype,fieldname,'=',label);}}
-this.run();}});wn.views.ListView=Class.extend({init:function(doclistview){this.doclistview=doclistview;this.doctype=doclistview.doctype;var t="`tab"+this.doctype+"`.";this.fields=[t+'name',t+'owner',t+'docstatus',t+'_user_tags',t+'modified'];this.stats=['_user_tags'];this.show_hide_check_column();},columns:[{width:'3%',content:'check'},{width:'4%',content:'avatar'},{width:'3%',content:'docstatus',css:{"text-align":"center"}},{width:'35%',content:'name'},{width:'40%',content:'tags',css:{'color':'#aaa'}},{width:'15%',content:'modified',css:{'text-align':'right','color':'#222'}}],render_column:function(data,parent,opts){var me=this;if(opts.css){$.each(opts.css,function(k,v){$(parent).css(k,v)});}
-if(opts.content.indexOf&&opts.content.indexOf('+')!=-1){$.map(opts.content.split('+'),function(v){me.render_column(data,parent,{content:v});});return;}
-if(typeof opts.content=='function'){opts.content(parent,data,me);}
-else if(opts.content=='name'){$(parent).append(repl('<a href="#!Form/%(doctype)s/%(name)s">%(name)s</a>',data));}
-else if(opts.content=='avatar'){$(parent).append(repl('<span class="avatar-small"><img src="%(avatar)s" \
-    title="%(fullname)s"/></span>',data));}
-else if(opts.content=='check'){$(parent).append('<input class="list-delete" type="checkbox">');$(parent).find('input').data('name',data.name);}
-else if(opts.content=='docstatus'){$(parent).append(repl('<span class="docstatus"><i class="%(docstatus_icon)s" \
-    title="%(docstatus_title)s"></i></span>',data));}
-else if(opts.content=='tags'){this.add_user_tags(parent,data);}
-else if(opts.content=='modified'){$(parent).append(data.when);}
-else if(opts.type=='bar-graph'){this.render_bar_graph(parent,data,opts.content,opts.label);}
-else if(opts.type=='link'&&opts.doctype){$(parent).append(repl('<a href="#!Form/'+opts.doctype+'/'
-+data[opts.content]+'">'+data[opts.content]+'</a>',data));}
-else if(opts.template){$(parent).append(repl(opts.template,data));}
-else if(data[opts.content]){if(opts.type=="date"){data[opts.content]=wn.datetime.str_to_user(data[opts.content])}
-$(parent).append(repl('<span title="%(title)s"> %(content)s</span>',{"title":opts.title||opts.content,"content":data[opts.content]}));}},render:function(row,data){var me=this;this.prepare_data(data);rowhtml='';$.each(this.columns,function(i,v){rowhtml+=repl('<td style="width: %(width)s"></td>',v);});var tr=$(row).html('<table><tbody><tr>'+rowhtml+'</tr></tbody></table>').find('tr').get(0);$.each(this.columns,function(i,v){me.render_column(data,tr.cells[i],v);});},prepare_data:function(data){data.fullname=wn.user_info(data.owner).fullname;data.avatar=wn.user_info(data.owner).image;if(data.modified)
-this.prepare_when(data,data.modified);if(data.docstatus==0||data.docstatus==null){data.docstatus_icon='icon-pencil';data.docstatus_title='Editable';}else if(data.docstatus==1){data.docstatus_icon='icon-lock';data.docstatus_title='Submitted';}else if(data.docstatus==2){data.docstatus_icon='icon-remove';data.docstatus_title='Cancelled';}
-for(key in data){if(data[key]==null){data[key]='';}}},prepare_when:function(data,date_str){if(!date_str)date_str=data.modified;data.when=(dateutil.str_to_user(date_str)).split(' ')[0];var diff=dateutil.get_diff(dateutil.get_today(),date_str.split(' ')[0]);if(diff==0){data.when=dateutil.comment_when(date_str);}
-if(diff==1){data.when='Yesterday'}
-if(diff==2){data.when='2 days ago'}},add_user_tags:function(parent,data){var me=this;if(data._user_tags){if($(parent).html().length>0){$(parent).append('<br />');}
-$.each(data._user_tags.split(','),function(i,t){if(t){$('<span class="label label-info" style="cursor: pointer; line-height: 200%">'
-+strip(t)+'</span>').click(function(){me.doclistview.set_filter('_user_tags',$(this).text())}).appendTo(parent);}});}},show_hide_check_column:function(){if(!this.doclistview.can_delete){this.columns=$.map(this.columns,function(v,i){if(v.content!='check')return v});}},render_bar_graph:function(parent,data,field,label){var args={percent:data[field],fully_delivered:(data[field]>99?'bar-complete':''),label:label}
-$(parent).append(repl('<span class="bar-outer" style="width: 30px; float: right" \
-   title="%(percent)s% %(label)s">\
-   <span class="bar-inner %(fully_delivered)s" \
-    style="width: %(percent)s%;"></span>\
-  </span>',args));},render_icon:function(parent,icon_class,label){var icon_html="<i class='%(icon_class)s' title='%(label)s'></i>";$(parent).append(repl(icon_html,{icon_class:icon_class,label:label||''}));}});wn.provide('wn.views.RecordListView');wn.views.RecordListView=wn.views.DocListView.extend({init:function(doctype,wrapper,ListView){this.doctype=doctype;this.wrapper=wrapper;this.listview=new ListView(this);this.listview.parent=this;this.setup();},setup:function(){var me=this;me.page_length=10;$(me.wrapper).empty();me.init_list();},get_args:function(){var args=this._super();$.each((this.default_filters||[]),function(i,f){args.filters.push(f);});args.docstatus=args.docstatus.concat((this.default_docstatus||[]));return args;},});
-/*
- *	lib/js/wn/views/formview.js
- */
-wn.provide('wn.views.formview');wn.views.formview={show:function(dt,dn){if(wn.model.new_names[dn])
-dn=wn.model.new_names[dn];wn.model.with_doctype(dt,function(){wn.model.with_doc(dt,dn,function(dn,r){if(r&&r['403'])return;if(!(locals[dt]&&locals[dt][dn])){wn.container.change_to('404');return;}
-if(!wn.views.formview[dt]){wn.views.formview[dt]=wn.container.add_page('Form - '+dt);wn.views.formview[dt].frm=new _f.Frm(dt,wn.views.formview[dt],true);}
-wn.container.change_to('Form - '+dt);wn.views.formview[dt].frm.refresh(dn);});})},create:function(dt){var new_name=LocalDB.create(dt);wn.set_route('Form',dt,new_name);}}
-/*
- *	lib/js/wn/views/reportview.js
- */
-wn.views.reportview={show:function(dt,rep_name){wn.require('js/report-legacy.js');dt=get_label_doctype(dt);if(!_r.rb_con){_r.rb_con=new _r.ReportContainer();}
-_r.rb_con.set_dt(dt,function(rb){if(rep_name){var route_changed=(rb.current_route!=wn.get_route_str())
-rb.load_criteria(rep_name);if(rb.dt&&route_changed){rb.dt.run();}}
-if(!rb.forbidden){wn.container.change_to('Report Builder');}});}}
-wn.views.reportview2={show:function(dt){var page_name=wn.get_route_str();if(wn.pages[page_name]){wn.container.change_to(wn.pages[page_name]);}else{var route=wn.get_route();if(route[1]){new wn.views.ReportViewPage(route[1],route[2]);}else{wn.set_route('404');}}}}
-wn.views.ReportViewPage=Class.extend({init:function(doctype,docname){this.doctype=doctype;this.docname=docname;this.page_name=wn.get_route_str();this.make_page();var me=this;wn.model.with_doctype(doctype,function(){me.make_report_view();if(docname){wn.model.with_doc('Report',docname,function(r){me.reportview.set_columns_and_filters(JSON.parse(locals['Report'][docname].json));me.reportview.run();});}else{me.reportview.run();}});},make_page:function(){this.page=wn.container.add_page(this.page_name);wn.ui.make_app_page({parent:this.page,single_column:true});wn.container.change_to(this.page_name);},make_report_view:function(){this.page.appframe.add_breadcrumb(locals.DocType[this.doctype].module);this.reportview=new wn.views.ReportView(this.doctype,this.docname,this.page)}})
-wn.views.ReportView=wn.ui.Listing.extend({init:function(doctype,docname,page){var me=this;$(page).find('.layout-main').html('Loading Report...');this.import_slickgrid();$(page).find('.layout-main').empty();this.doctype=doctype;this.docname=docname;this.page=page;this.tab_name='`tab'+doctype+'`';this.setup();},import_slickgrid:function(){wn.require('js/lib/slickgrid/slick.grid.css');wn.require('js/lib/slickgrid/slick-default-theme.css');wn.require('js/lib/slickgrid/jquery.event.drag.min.js');wn.require('js/lib/slickgrid/slick.core.js');wn.require('js/lib/slickgrid/slick.grid.js');wn.dom.set_style('.slick-cell { font-size: 12px; }');},set_init_columns:function(){var columns=[['name'],['owner']];$.each(wn.meta.docfield_list[this.doctype],function(i,df){if(df.in_filter&&df.fieldname!='naming_series'&&df.fieldtype!='Table'){columns.push([df.fieldname]);}});this.columns=columns;},setup:function(){var me=this;this.make({title:'Report: '+(this.docname?(this.doctype+' - '+this.docname):this.doctype),appframe:this.page.appframe,method:'webnotes.widgets.doclistview.get',get_args:this.get_args,parent:$(this.page).find('.layout-main'),start:0,page_length:20,show_filters:true,new_doctype:this.doctype,allow_delete:true,});this.make_column_picker();this.make_sorter();this.make_export();this.set_init_columns();this.make_save();},set_columns_and_filters:function(opts){var me=this;if(opts.columns)this.columns=opts.columns;if(opts.filters)$.each(opts.filters,function(i,f){me.filter_list.add_filter(f[0],f[1],f[2],f[3]);});if(opts.sort_by)this.sort_by_select.val(opts.sort_by);if(opts.sort_order)this.sort_order_select.val(opts.sort_order);if(opts.sort_by_next)this.sort_by_next_select.val(opts.sort_by_next);if(opts.sort_order_next)this.sort_order_next_select.val(opts.sort_order_next);},get_args:function(){var me=this;return{doctype:this.doctype,fields:$.map(this.columns,function(v){return me.get_full_column_name(v)}),order_by:this.get_order_by(),filters:this.filter_list.get_filters(),docstatus:['0','1','2']}},get_order_by:function(){var order_by=this.get_selected_table_and_column(this.sort_by_select)
-+' '+this.sort_order_select.val();if(this.sort_by_next_select.val()){order_by+=', '+this.get_selected_table_and_column(this.sort_by_next_select)
-+' '+this.sort_order_next_select.val();}
-return order_by;},get_selected_table_and_column:function($select){return this.get_full_column_name([$select.find('option:selected').attr('fieldname'),$select.find('option:selected').attr('table')])},get_full_column_name:function(v){return(v[1]?('`tab'+v[1]+'`'):this.tab_name)+'.'+v[0];},build_columns:function(){var me=this;return $.map(this.columns,function(c){var docfield=wn.meta.docfield_map[c[1]||me.doctype][c[0]];coldef={id:c[0],field:c[0],docfield:docfield,name:(docfield?docfield.label:toTitle(c[0])),width:(docfield?cint(docfield.width):120)||120}
-if(c[0]=='name'){coldef.formatter=function(row,cell,value,columnDef,dataContext){return repl("<a href='#!Form/%(doctype)s/%(name)s'>%(name)s</a>",{doctype:me.doctype,name:value});}}else if(docfield&&docfield.fieldtype=='Link'){coldef.formatter=function(row,cell,value,columnDef,dataContext){if(value){return repl("<a href='#!Form/%(doctype)s/%(name)s'>%(name)s</a>",{doctype:columnDef.docfield.options,name:value});}else{return'';}}}
-return coldef;});},render_list:function(){var me=this;var columns=[{id:'_idx',field:'_idx',name:'Sr.',width:40}].concat(this.build_columns());$.each(this.data,function(i,v){v._idx=i+1;});var options={enableCellNavigation:true,enableColumnReorder:false};var grid=new Slick.Grid(this.$w.find('.result-list').css('border','1px solid grey').css('height','500px').get(0),this.data,columns,options);},make_column_picker:function(){var me=this;this.column_picker=new wn.ui.ColumnPicker(this);this.page.appframe.add_button('Pick Columns',function(){me.column_picker.show(me.columns);},'icon-th-list');},make_sorter:function(){var me=this;this.sort_dialog=new wn.ui.Dialog({title:'Sorting Preferences'});$(this.sort_dialog.body).html('<p class="help">Sort By</p>\
-   <div class="sort-column"></div>\
-   <div><select class="sort-order" style="margin-top: 10px; width: 60%;">\
-    <option value="asc">Ascending</option>\
-    <option value="desc">Descending</option>\
-   </select></div>\
-   <hr><p class="help">Then By (optional)</p>\
-   <div class="sort-column-1"></div>\
-   <div><select class="sort-order-1" style="margin-top: 10px; width: 60%;">\
-    <option value="asc">Ascending</option>\
-    <option value="desc">Descending</option>\
-   </select></div><hr>\
-   <div><button class="btn btn-small btn-info">Update</div>');this.sort_by_select=new wn.ui.FieldSelect($(this.sort_dialog.body).find('.sort-column'),this.doctype).$select;this.sort_by_select.css('width','60%');this.sort_order_select=$(this.sort_dialog.body).find('.sort-order');this.sort_by_next_select=new wn.ui.FieldSelect($(this.sort_dialog.body).find('.sort-column-1'),this.doctype,null,true).$select;this.sort_by_next_select.css('width','60%');this.sort_order_next_select=$(this.sort_dialog.body).find('.sort-order-1');this.sort_by_select.val('modified');this.sort_order_select.val('desc');this.sort_by_next_select.val('');this.sort_order_next_select.val('desc');this.page.appframe.add_button('Sort By',function(){me.sort_dialog.show();},'icon-arrow-down');$(this.sort_dialog.body).find('.btn-info').click(function(){me.sort_dialog.hide();me.run();});},make_export:function(){var me=this;if(wn.user.is_report_manager()){this.page.appframe.add_button('Export',function(){var args=me.get_args();args.cmd='webnotes.widgets.doclistview.export_query'
-open_url_post(wn.request.url,args);},'icon-download-alt');}},make_save:function(){var me=this;if(wn.user.is_report_manager()){this.page.appframe.add_button('Save',function(){if(me.docname){var name=me.docname}else{var name=prompt('Select Report Name');if(!name){return;}}
-wn.call({method:'webnotes.widgets.doclistview.save_report',args:{name:name,doctype:me.doctype,json:JSON.stringify({filters:me.filter_list.get_filters(),columns:me.columns,sort_by:me.sort_by_select.val(),sort_order:me.sort_order_select.val(),sort_by_next:me.sort_by_next_select.val(),sort_order_next:me.sort_order_next_select.val()})},callback:function(r){if(r.exc)return;if(r.message!=me.docname)
-wn.set_route('Report2',me.doctype,r.message);}});},'icon-upload');}}});wn.ui.ColumnPicker=Class.extend({init:function(list){this.list=list;this.doctype=list.doctype;this.selects={};},show:function(columns){wn.require('js/lib/jquery/jquery.ui.sortable.js');var me=this;if(!this.dialog){this.dialog=new wn.ui.Dialog({title:'Pick Columns',width:'400'});}
-$(this.dialog.body).html('<div class="help">Drag to sort columns</div>\
-   <div class="column-list"></div>\
-   <div><button class="btn btn-small btn-add"><i class="icon-plus"></i>\
-    Add Column</button></div>\
-   <hr>\
-   <div><button class="btn btn-small btn-info">Update</div>');$.each(columns,function(i,c){me.add_column(c);});$(this.dialog.body).find('.column-list').sortable();$(this.dialog.body).find('.btn-add').click(function(){me.add_column(['name']);});$(this.dialog.body).find('.btn-info').click(function(){me.dialog.hide();me.list.columns=[];$(me.dialog.body).find('select').each(function(){var $selected=$(this).find('option:selected');me.list.columns.push([$selected.attr('fieldname'),$selected.attr('table')]);})
-me.list.run();});this.dialog.show();},add_column:function(c){var w=$('<div style="padding: 5px 5px 5px 35px; background-color: #eee; width: 70%; \
-   margin-bottom: 10px; border-radius: 3px; cursor: move;">\
-   <a class="close" style="margin-top: 5px;">&times</a>\
-   </div>').appendTo($(this.dialog.body).find('.column-list'));var fieldselect=new wn.ui.FieldSelect(w,this.doctype);fieldselect.$select.css('width','90%').val((c[1]||this.doctype)+"."+c[0]);w.find('.close').click(function(){$(this).parent().remove();});}});
-/*
- *	lib/js/wn/views/grid_report.js
- */
-wn.provide("wn.report_dump");$.extend(wn.report_dump,{data:{},with_data:function(doctypes,callback,progress_bar){var missing=[];$.each(doctypes,function(i,v){if(!wn.report_dump.data[v])missing.push(v);})
-if(missing.length){wn.call({method:"webnotes.widgets.report_dump.get_data",args:{doctypes:doctypes,missing:missing},callback:function(r){$.each(r.message,function(doctype,doctype_data){var data=[];$.each(doctype_data.data,function(i,d){var row={};$.each(doctype_data.columns,function(idx,col){row[col]=d[idx];});row.id=row.name||doctype+"-"+i;row.doctype=doctype;data.push(row);});wn.report_dump.data[doctype]=data;});$.each(r.message,function(doctype,doctype_data){if(doctype_data.links){$.each(wn.report_dump.data[doctype],function(row_idx,row){$.each(doctype_data.links,function(link_key,link){if(wn.report_dump.data[link[0]][row[link_key]]){row[link_key]=wn.report_dump.data[link[0]][row[link_key]][link[1]];}else{row[link_key]=null;}})})}});callback();},progress_bar:progress_bar})}else{callback();}}});wn.provide("wn.views");wn.views.GridReport=Class.extend({init:function(opts){this.filter_inputs={};this.preset_checks=[];this.tree_grid={show:false};$.extend(this,opts);this.wrapper=$('<div>').appendTo(this.parent);if(this.filters){this.make_filters();}
-this.make_waiting();this.import_slickgrid();var me=this;this.get_data();},bind_show:function(){var me=this;$(this.page).bind('show',function(){wn.cur_grid_report=me;me.apply_filters_from_route();me.refresh();});},get_data:function(){var me=this;wn.report_dump.with_data(this.doctypes,function(){me.setup_filters();me.init_filter_values();me.refresh();},this.wrapper.find(".progress .bar"));},setup_filters:function(){var me=this;$.each(me.filter_inputs,function(i,v){var opts=v.get(0).opts;if(opts.fieldtype=="Select"&&inList(me.doctypes,opts.link)){$(v).add_options($.map(wn.report_dump.data[opts.link],function(d){return d.name;}));}});this.filter_inputs.refresh&&this.filter_inputs.refresh.click(function(){me.set_route();});this.filter_inputs.reset_filters&&this.filter_inputs.reset_filters.click(function(){me.init_filter_values();me.set_route();});this.filter_inputs.range&&this.filter_inputs.range.change(function(){me.set_route();});},init_filter_values:function(){var me=this;$.each(this.filter_inputs,function(key,filter){var opts=filter.get(0).opts;if(sys_defaults[key]){filter.val(sys_defaults[key]);}else if(opts.fieldtype=='Select'){filter.get(0).selectedIndex=0;}else if(opts.fieldtype=='Data'){filter.val("");}})
-if(this.filter_inputs.from_date)
-this.filter_inputs.from_date.val(dateutil.str_to_user(sys_defaults.year_start_date));if(this.filter_inputs.to_date)
-this.filter_inputs.to_date.val(dateutil.str_to_user(sys_defaults.year_end_date));},make_filters:function(){var me=this;$.each(this.filters,function(i,v){v.fieldname=v.fieldname||v.label.replace(/ /g,'_').toLowerCase();var input=null;if(v.fieldtype=='Select'){input=me.appframe.add_select(v.label,v.options||[v.default_value]);}else if(v.fieldtype=='Button'){input=me.appframe.add_button(v.label);if(v.icon){$('<i class="icon '+v.icon+'"></i>').prependTo(input);}}else if(v.fieldtype=='Date'){input=me.appframe.add_date(v.label);}else if(v.fieldtype=='Label'){input=me.appframe.add_label(v.label);}else if(v.fieldtype=='Data'){input=me.appframe.add_data(v.label);}
-if(input){input&&(input.get(0).opts=v);if(v.cssClass){input.addClass(v.cssClass);}
-input.keypress(function(e){if(e.which==13){me.set_route();}})}
-me.filter_inputs[v.fieldname]=input;});},make_waiting:function(){this.waiting=$('<div class="well" style="width: 63%; margin: 30px auto;">\
-   <p style="text-align: center;">Loading Report...</p>\
-   <div class="progress progress-striped active">\
-    <div class="bar" style="width: 10%"></div></div>').appendTo(this.wrapper);},load_filter_values:function(){var me=this;$.each(this.filter_inputs,function(i,f){var opts=f.get(0).opts;if(opts.fieldtype!='Button'){me[opts.fieldname]=f.val();if(opts.fieldtype=="Date"){me[opts.fieldname]=dateutil.user_to_str(me[opts.fieldname]);}else if(opts.fieldtype=="Select"){me[opts.fieldname+'_default']=opts.default_value;}}});if(this.filter_inputs.from_date&&this.filter_inputs.to_date&&(this.to_date<this.from_date)){msgprint("From Date must be before To Date");return;}},make_name_map:function(data,key){var map={};key=key||"name";$.each(data,function(i,v){map[v[key]]=v;})
-return map;},reset_item_values:function(item){var me=this;$.each(this.columns,function(i,col){if(col.formatter==me.currency_formatter){item[col.id]=0;}});},import_slickgrid:function(){wn.require('js/lib/slickgrid/slick.grid.css');wn.require('js/lib/slickgrid/slick-default-theme.css');wn.require('js/lib/slickgrid/jquery.event.drag.min.js');wn.require('js/lib/slickgrid/slick.core.js');wn.require('js/lib/slickgrid/slick.grid.js');wn.require('js/lib/slickgrid/slick.dataview.js');wn.dom.set_style('.slick-cell { font-size: 12px; }');if(this.tree_grid.show)wn.require("js/app/tree_grid.css");},refresh:function(){this.waiting.toggle(false);if(!this.grid_wrapper)
-this.make();this.show_zero=$('.show-zero input:checked').length;this.load_filter_values();this.setup_columns();this.setup_dataview_columns();this.apply_link_formatters();this.prepare_data();this.prepare_data_view();this.wrapper.find(".processing").toggle(true);this.wrapper.find(".processing").delay(2000).fadeOut(300);this.render();this.render_plot&&this.render_plot();},setup_dataview_columns:function(){this.dataview_columns=$.map(this.columns,function(col){return!col.hidden?col:null;});},make:function(){this.plot_area=$('<div class="plot" style="margin-bottom: 15px; display: none; \
-   height: 300px; width: 100%;"></div>').appendTo(this.wrapper);$('<div style="text-align: right;"> \
-   <div class="processing" style="background-color: #fec; display: none; float: left; margin: 2px"> \
-    Updated! </div>\
-   <a href="#" class="grid-report-print"><i class="icon icon-print"></i> Print</a> \
-   <span style="color: #aaa; margin: 0px 10px;"> | </span> \
-   <a href="#" class="grid-report-export"><i class="icon icon-download-alt"></i> Export</a> \
-  </div>').appendTo(this.wrapper);this.wrapper.find(".grid-report-export").click(function(){return me.export();});this.wrapper.find(".grid-report-print").click(function(){msgprint("Coming Soon");return false;});this.grid_wrapper=$("<div style='height: 500px; border: 1px solid #aaa; \
-   background-color: #eee; margin-top: 15px;'>").appendTo(this.wrapper);this.id=wn.dom.set_unique_id(this.grid_wrapper.get(0));$('<div style="margin: 10px 0px; text-align: right; display: none" class="show-zero">\
-    <input type="checkbox"> Show rows with zero values\
-   </div>').appendTo(this.wrapper);this.bind_show();wn.cur_grid_report=this;this.apply_filters_from_route();$(this.wrapper).trigger('make');},apply_filters_from_route:function(){var hash=decodeURIComponent(window.location.hash);var me=this;if(hash.indexOf('/')!=-1){$.each(hash.split('/').splice(1).join('/').split('&'),function(i,f){var f=f.split("=");if(me.filter_inputs[f[0]]){me.filter_inputs[f[0]].val(decodeURIComponent(f[1]));}else{console.log("Invalid filter: "+f[0]);}});}else{this.init_filter_values();}},set_route:function(){wn.set_route(wn.container.page.page_name,$.map(this.filter_inputs,function(v){var val=v.val();var opts=v.get(0).opts;if(val&&val!=opts.default_value)
-return encodeURIComponent(opts.fieldname)
-+'='+encodeURIComponent(val);}).join('&'))},options:{editable:false,enableColumnReorder:false},render:function(){this.grid=new Slick.Grid("#"+this.id,this.dataView,this.dataview_columns,this.options);var me=this;this.dataView.onRowsChanged.subscribe(function(e,args){me.grid.invalidateRows(args.rows);me.grid.render();});this.dataView.onRowCountChanged.subscribe(function(e,args){me.grid.updateRowCount();me.grid.render();});this.tree_grid.show&&this.add_tree_grid_events();},prepare_data_view:function(){this.dataView=new Slick.Data.DataView({inlineFilters:true});this.dataView.beginUpdate();this.dataView.setItems(this.data);if(this.dataview_filter)this.dataView.setFilter(this.dataview_filter);if(this.tree_grid.show)this.dataView.setFilter(this.tree_dataview_filter);this.dataView.endUpdate();},export:function(){var me=this;var res=[$.map(this.columns,function(v){return v.name;})].concat(this.get_view_data());wn.require("js/lib/downloadify/downloadify.min.js");wn.require("js/lib/downloadify/swfobject.js");var id=wn.dom.set_unique_id();var msgobj=msgprint('<p id="'+id+'">You must have Flash 10 installed to download this file.</p>');Downloadify.create(id,{filename:function(){return me.title+'.csv';},data:function(){return wn.to_csv(res);},swf:'js/lib/downloadify/downloadify.swf',downloadImage:'js/lib/downloadify/download.png',onComplete:function(){msgobj.hide();},onCancel:function(){msgobj.hide();},onError:function(){msgobj.hide();},width:100,height:30,transparent:true,append:false});return false;},apply_filters:function(item){var filters=this.filter_inputs;if(item._show)return true;for(i in filters){if(!this.apply_filter(item,i))return false;}
-return true;},apply_filter:function(item,fieldname){var filter=this.filter_inputs[fieldname].get(0);if(filter.opts.filter){if(!filter.opts.filter(this[filter.opts.fieldname],item,filter.opts,this)){return false;}}
-return true;},apply_zero_filter:function(val,item,opts,me){if(!me.show_zero){for(var i=0,j=me.columns.length;i<j;i++){var col=me.columns[i];if(col.formatter==me.currency_formatter&&!col.hidden){if(flt(item[col.field])>0.001||flt(item[col.field])<-0.001){return true;}}}
-return false;}
-return true;},show_zero_check:function(){var me=this;this.wrapper.bind('make',function(){me.wrapper.find('.show-zero').toggle(true).find('input').click(function(){me.refresh();});});},is_default:function(fieldname){return this[fieldname]==this[fieldname+"_default"];},date_formatter:function(row,cell,value,columnDef,dataContext){return dateutil.str_to_user(value);},currency_formatter:function(row,cell,value,columnDef,dataContext){return repl('<div style="text-align: right; %(_style)s">%(value)s</div>',{_style:dataContext._style||"",value:fmt_money(value)});},text_formatter:function(row,cell,value,columnDef,dataContext){return repl('<span style="%(_style)s" title="%(esc_value)s">%(value)s</span>',{_style:dataContext._style||"",esc_value:cstr(value).replace(/"/g,'\"'),value:cstr(value)});},check_formatter:function(row,cell,value,columnDef,dataContext){return repl("<input type='checkbox' data-id='%(id)s' \
-   class='plot-check' %(checked)s>",{"id":dataContext.id,"checked":dataContext.checked?"checked":""})},apply_link_formatters:function(){var me=this;$.each(this.dataview_columns,function(i,col){if(col.link_formatter){col.formatter=function(row,cell,value,columnDef,dataContext){if(!value)return"";var me=wn.cur_grid_report;if(dataContext._show){return repl('<span style="%(_style)s">%(value)s</span>',{_style:dataContext._style||"",value:value});}
-var link_formatter=me.dataview_columns[cell].link_formatter;var html=repl('<a href="#" \
-      onclick="wn.cur_grid_report.filter_inputs.%(col_name)s.val(\'%(value)s\'); \
-       wn.cur_grid_report.set_route(); return false;">\
-      %(value)s</a>',{value:value,col_name:link_formatter.filter_input,page_name:wn.container.page.page_name})
-if(link_formatter.open_btn){var doctype=link_formatter.doctype?eval(link_formatter.doctype):dataContext.doctype;html+=me.get_link_open_icon(doctype,value);}
-return html;}}})},get_link_open_icon:function(doctype,name){return repl(' <i class="icon icon-share" style="cursor: pointer;"\
-   onclick="wn.set_route(\'Form\', \'%(doctype)s\', \'%(name)s\');">\
-  </i>',{name:name,doctype:doctype});},make_date_range_columns:function(){this.columns=[];var me=this;var range=this.filter_inputs.range.val();this.from_date=dateutil.user_to_str(this.filter_inputs.from_date.val());this.to_date=dateutil.user_to_str(this.filter_inputs.to_date.val());var date_diff=dateutil.get_diff(this.to_date,this.from_date);me.column_map={};var add_column=function(date){me.columns.push({id:date,name:dateutil.str_to_user(date),field:date,formatter:me.currency_formatter,width:100});}
-var build_columns=function(condition){for(var i=0;i<date_diff;i++){var date=dateutil.add_days(me.from_date,i);if(!condition)condition=function(){return true;}
-if(condition(date))add_column(date);me.last_date=date;if(me.columns.length){me.column_map[date]=me.columns[me.columns.length-1];}}}
-if(range=='Daily'){build_columns();}else if(range=='Weekly'){build_columns(function(date){if(!me.last_date)return true;return!(dateutil.get_diff(date,me.from_date)%7)});}else if(range=='Monthly'){build_columns(function(date){if(!me.last_date)return true;return dateutil.str_to_obj(me.last_date).getMonth()!=dateutil.str_to_obj(date).getMonth()});}else if(range=='Quarterly'){build_columns(function(date){if(!me.last_date)return true;return dateutil.str_to_obj(date).getDate()==1&&in_list([0,3,6,9],dateutil.str_to_obj(date).getMonth())});}else if(range=='Yearly'){build_columns(function(date){if(!me.last_date)return true;return $.map(wn.report_dump.data['Fiscal Year'],function(v){return date==v.year_start_date?true:null;}).length;});}
-$.each(this.columns,function(i,col){col.name=me.columns[i+1]?dateutil.str_to_user(dateutil.add_days(me.columns[i+1].id,-1)):dateutil.str_to_user(me.to_date);});},});wn.views.GridReportWithPlot=wn.views.GridReport.extend({render_plot:function(){var plot_data=this.get_plot_data?this.get_plot_data():null;if(!plot_data){this.plot_area.toggle(false);return;}
-wn.require('js/lib/flot/jquery.flot.js');this.plot=$.plot(this.plot_area.toggle(true),plot_data,this.get_plot_options());this.setup_plot_hover();},setup_plot_check:function(){var me=this;me.wrapper.bind('make',function(){me.wrapper.on("click",".plot-check",function(){var checked=$(this).attr("checked");me.item_by_name[$(this).attr("data-id")].checked=checked?true:false;me.render_plot();});});},setup_plot_hover:function(){var me=this;this.tooltip_id=wn.dom.set_unique_id();function showTooltip(x,y,contents){$('<div id="'+me.tooltip_id+'">'+contents+'</div>').css({position:'absolute',display:'none',top:y+5,left:x+5,border:'1px solid #fdd',padding:'2px','background-color':'#fee',opacity:0.80}).appendTo("body").fadeIn(200);}
-this.previousPoint=null;this.wrapper.find('.plot').bind("plothover",function(event,pos,item){if(item){if(me.previousPoint!=item.dataIndex){me.previousPoint=item.dataIndex;$("#"+me.tooltip_id).remove();showTooltip(item.pageX,item.pageY,me.get_tooltip_text(item.series.label,item.datapoint[0],item.datapoint[1]));}}
-else{$("#"+me.tooltip_id).remove();me.previousPoint=null;}});},get_tooltip_text:function(label,x,y){var date=dateutil.obj_to_user(new Date(x));var value=fmt_money(y);return value+" on "+date;},get_view_data:function(){var res=[];var col_map=$.map(this.columns,function(v){return v.field;});for(var i=0,len=this.dataView.getLength();i<len;i++){var d=this.dataView.getItem(i);var row=[];$.each(col_map,function(i,col){var val=d[col];if(val===null||val===undefined){val=""}
-row.push(val);})
-res.push(row);}
-return res;},get_plot_data:function(){var data=[];var me=this;$.each(this.data,function(i,item){if(item.checked){data.push({label:item.name,data:$.map(me.columns,function(col,idx){if(col.formatter==me.currency_formatter&&!col.hidden&&col.plot!==false){return me.get_plot_points(item,col,idx)}}),points:{show:true},lines:{show:true,fill:true},});data[data.length-1].data=[[dateutil.str_to_obj(me.from_date).getTime(),item.opening]].concat(data[data.length-1].data);}});return data.length?data:false;},get_plot_options:function(){return{grid:{hoverable:true,clickable:true},xaxis:{mode:"time",min:dateutil.str_to_obj(this.from_date).getTime(),max:dateutil.str_to_obj(this.to_date).getTime()}}}});wn.views.TreeGridReport=wn.views.GridReportWithPlot.extend({make_transaction_list:function(parent_doctype,doctype){var me=this;var tmap={};$.each(wn.report_dump.data[doctype],function(i,v){if(!tmap[v.parent])tmap[v.parent]=[];tmap[v.parent].push(v);});this.tl=[];$.each(wn.report_dump.data[parent_doctype],function(i,parent){if(tmap[parent.name]){$.each(tmap[parent.name],function(i,d){me.tl.push($.extend(copy_dict(parent),d));});}});},add_tree_grid_events:function(){var me=this;this.grid.onClick.subscribe(function(e,args){if($(e.target).hasClass("toggle")){var item=me.dataView.getItem(args.row);if(item){if(!item._collapsed){item._collapsed=true;}else{item._collapsed=false;}
-me.dataView.updateItem(item.id,item);}
-e.stopImmediatePropagation();}});},tree_formatter:function(row,cell,value,columnDef,dataContext){var me=wn.cur_grid_report;value=value.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");var data=me.data;var spacer="<span style='display:inline-block;height:1px;width:"+
-(15*dataContext["indent"])+"px'></span>";var idx=me.dataView.getIdxById(dataContext.id);var link=me.tree_grid.formatter(dataContext);if(dataContext.doctype){link+=me.get_link_open_icon(dataContext.doctype,value);}
-if(data[idx+1]&&data[idx+1].indent>data[idx].indent){if(dataContext._collapsed){return spacer+" <span class='toggle expand'></span>&nbsp;"+link;}else{return spacer+" <span class='toggle collapse'></span>&nbsp;"+link;}}else{return spacer+" <span class='toggle'></span>&nbsp;"+link;}},tree_dataview_filter:function(item){var me=wn.cur_grid_report;if(!me.apply_filters(item))return false;var parent=item[me.tree_grid.parent_field];while(parent){if(me.item_by_name[parent]._collapsed){return false;}
-parent=me.parent_map[parent];}
-return true;},prepare_tree:function(item_dt,group_dt){var group_data=wn.report_dump.data[group_dt];var item_data=wn.report_dump.data[item_dt];var me=this;var item_group_map={};var group_ids=$.map(group_data,function(v){return v.id;});$.each(item_data,function(i,item){var parent=item[me.tree_grid.parent_field];if(!item_group_map[parent])item_group_map[parent]=[];if(group_ids.indexOf(item.name)==-1){item_group_map[parent].push(item);}else{msgprint("Ignoring Item "+item.name.bold()+", because a group exists with the same name!");}});var items=[];$.each(group_data,function(i,group){group.is_group=true;items.push(group);items=items.concat(item_group_map[group.name]||[]);});return items;},set_indent:function(){var me=this;$.each(this.data,function(i,d){var indent=0;var parent=me.parent_map[d.name];if(parent){while(parent){indent++;parent=me.parent_map[parent];}}
-d.indent=indent;});},});
-/*
- *	lib/js/legacy/widgets/dialog.js
- */
-var cur_dialog;var top_index=91;function Dialog(w,h,title,content){this.make({width:w,title:title});if(content)this.make_body(content);this.onshow='';this.oncancel='';this.no_cancel_flag=0;this.display=false;this.first_button=false;}
-Dialog.prototype=new wn.widgets.Dialog()
-Dialog.prototype.make_body=function(content){this.rows={};this.widgets={};for(var i in content)this.make_row(content[i]);}
-Dialog.prototype.clear_inputs=function(d){for(var wid in this.widgets){var w=this.widgets[wid];var tn=w.tagName?w.tagName.toLowerCase():'';if(tn=='input'||tn=='textarea'){w.value='';}else if(tn=='select'){sel_val(w.options[0].value);}else if(w.txt){w.txt.value='';}else if(w.input){w.input.value='';}}}
-Dialog.prototype.make_row=function(d){var me=this;this.rows[d[1]]=$a(this.body,'div','dialog_row');var row=this.rows[d[1]];if(d[0]!='HTML'){var t=make_table(row,1,2,'100%',['30%','70%']);row.tab=t;var c1=$td(t,0,0);var c2=$td(t,0,1);if(d[0]!='Check'&&d[0]!='Button')
-$(c1).text(d[1]);}
-if(d[0]=='HTML'){if(d[2])row.innerHTML=d[2];this.widgets[d[1]]=row;}
-else if(d[0]=='Check'){var i=$a_input(c2,'checkbox','',{width:'20px'});c1.innerHTML=d[1];this.widgets[d[1]]=i;}
-else if(d[0]=='Data'){c1.innerHTML=d[1];c2.style.overflow='auto';this.widgets[d[1]]=$a_input(c2,'text');if(d[2])$a(c2,'div','field_description').innerHTML=d[2];}
-else if(d[0]=='Link'){c1.innerHTML=d[1];var f=make_field({fieldtype:'Link','label':d[1],'options':d[2]},'',c2,this,0,1);f.not_in_form=1;f.dialog=this;f.refresh();this.widgets[d[1]]=f.input;}
-else if(d[0]=='Date'){c1.innerHTML=d[1];var f=make_field({fieldtype:'Date','label':d[1],'options':d[2]},'',c2,this,0,1);f.not_in_form=1;f.refresh();f.dialog=this;this.widgets[d[1]]=f.input;}
-else if(d[0]=='Password'){c1.innerHTML=d[1];c2.style.overflow='auto';this.widgets[d[1]]=$a_input(c2,'password');if(d[3])$a(c2,'div','field_description').innerHTML=d[3];}
-else if(d[0]=='Select'){c1.innerHTML=d[1];this.widgets[d[1]]=$a(c2,'select','',{width:'160px'})
-if(d[2])$a(c2,'div','field_description').innerHTML=d[2];if(d[3])add_sel_options(this.widgets[d[1]],d[3],d[3][0]);}
-else if(d[0]=='Text'){c1.innerHTML=d[1];c2.style.overflow='auto';this.widgets[d[1]]=$a(c2,'textarea');if(d[2])$a(c2,'div','field_description').innerHTML=d[2];}
-else if(d[0]=='Button'){c2.style.height='32px';var b=$btn(c2,d[1],function(btn){if(btn._onclick)btn._onclick(me)},null,null,1);b.dialog=me;if(!this.first_button){$(b).addClass('btn-info');this.first_button=true;}
-if(d[2]){b._onclick=d[2];}
-this.widgets[d[1]]=b;}}
-/*
- *	lib/js/legacy/widgets/layout.js
- */
-function Layout(parent,width){if(parent&&parent.substr){parent=$i(parent);}
-this.wrapper=$a(parent,'div','',{display:'none'});if(width){this.width=this.wrapper.style.width;}
-this.myrows=[];}
-Layout.prototype.addrow=function(){this.cur_row=new LayoutRow(this,this.wrapper);this.myrows[this.myrows.length]=this.cur_row;return this.cur_row}
-Layout.prototype.addsubrow=function(){this.cur_row=new LayoutRow(this,this.cur_row.main_body);this.myrows[this.myrows.length]=this.cur_row;return this.cur_row}
-Layout.prototype.addcell=function(width){return this.cur_row.addCell(width);}
-Layout.prototype.setcolour=function(col){$bg(cc,col);}
-Layout.prototype.show=function(){$ds(this.wrapper);}
-Layout.prototype.hide=function(){$dh(this.wrapper);}
-Layout.prototype.close_borders=function(){if(this.with_border){this.myrows[this.myrows.length-1].wrapper.style.borderBottom='1px solid #000';}}
-function LayoutRow(layout,parent){this.layout=layout;this.wrapper=$a(parent,'div','form-layout-row');this.main_head=$a(this.wrapper,'div');this.main_body=$a(this.wrapper,'div');if(layout.with_border){this.wrapper.style.border='1px solid #000';this.wrapper.style.borderBottom='0px';}
-this.header=$a(this.main_body,'div','',{padding:(layout.with_border?'0px 8px':'0px')});this.body=$a(this.main_body,'div');this.table=$a(this.body,'table','',{width:'100%',borderCollapse:'collapse',tableLayout:'fixed'});this.row=this.table.insertRow(0);this.mycells=[];}
-LayoutRow.prototype.hide=function(){$dh(this.wrapper);}
-LayoutRow.prototype.show=function(){$ds(this.wrapper);}
-LayoutRow.prototype.addCell=function(wid){var lc=new LayoutCell(this.layout,this,wid);this.mycells[this.mycells.length]=lc;return lc;}
-function LayoutCell(layout,layoutRow,width){if(width){var w=width+'';if(w.substr(w.length-2,2)!='px'){if(w.substr(w.length-1,1)!="%"){width=width+'%'};}}
-this.width=width;this.layout=layout;var cidx=layoutRow.row.cells.length;this.cell=layoutRow.row.insertCell(cidx);this.cell.style.verticalAlign='top';this.set_width(layoutRow.row,width);var h=$a(this.cell,'div','',{padding:(layout.with_border?'0px 8px':'0px')});this.wrapper=$a(this.cell,'div','',{padding:(layout.with_border?'8px':'0px')});layout.cur_cell=this.wrapper;layout.cur_cell.header=h;}
-LayoutCell.prototype.set_width=function(row,width){var w=100;var n_cells=row.cells.length;var cells_with_no_width=n_cells;if(width){$y(row.cells[n_cells-1],{width:cint(width)+'%'})}else{row.cells[n_cells-1].estimated_width=1;}
-for(var i=0;i<n_cells;i++){if(!row.cells[i].estimated_width){w=w-cint(row.cells[i].style.width);cells_with_no_width--;}}
-for(var i=0;i<n_cells;i++){if(row.cells[i].estimated_width)
-$y(row.cells[i],{width:cint(w/cells_with_no_width)+'%'})}}
-LayoutCell.prototype.show=function(){$ds(this.wrapper);}
-LayoutCell.prototype.hide=function(){$dh(this.wrapper);}
-/*
- *	lib/js/legacy/widgets/tabbedpage.js
- */
-function TabbedPage(parent,only_labels){this.tabs={};this.items=this.tabs
-this.cur_tab=null;this.label_wrapper=$a(parent,'div','box_label_wrapper',{marginTop:'16px'});this.label_body=$a(this.label_wrapper,'div','box_label_body');this.label_area=$a(this.label_body,'ul','box_tabs');if(!only_labels)this.body_area=$a(parent,'div','',{backgroundColor:'#FFF'});else this.body_area=null;this.add_item=function(label,onclick,no_body,with_heading){this.add_tab(label,onclick,no_body,with_heading);return this.items[label];}}
-TabbedPage.prototype.add_tab=function(n,onshow,no_body,with_heading){var tab=$a(this.label_area,'li');tab.label=$a(tab,'a');tab.label.innerHTML=n;if(this.body_area&&!no_body){tab.tab_body=$a(this.body_area,'div');$dh(tab.tab_body);tab.body=tab.tab_body;}else{tab.tab_body=null;}
-tab.onshow=onshow;var me=this;tab.collapse=function(){if(this.tab_body)$dh(this.tab_body);this.className='';}
-tab.set_selected=function(){if(me.cur_tab)me.cur_tab.collapse();this.className='box_tab_selected';$(this).css('opacity',1);me.cur_tab=this;}
-tab.expand=function(arg){this.set_selected();if(this.tab_body)$ds(this.tab_body);if(this.onshow)this.onshow(arg);}
-tab.onmouseover=function(){if(me.cur_tab!=this)this.className='box_tab_mouseover';}
-tab.onmouseout=function(){if(me.cur_tab!=this)this.className=''}
-tab.hide=function(){this.collapse();$dh(this);}
-tab.show=function(){$ds(this);}
-tab.onclick=function(){this.expand();}
-this.tabs[n]=tab;return tab;}
-function TrayPage(parent,height,width,width_body){var me=this;if(!width)width=(100/8)+'%';this.body_style={margin:'4px 8px'}
-this.cur_item=null;this.items={};this.tabs=this.items
-this.tab=make_table($a(parent,'div'),1,2,'100%',[width,width_body]);$y($td(this.tab,0,0),{backgroundColor:this.tray_bg,width:width});this.body=$a($td(this.tab,0,1),'div');if(height){$y(this.body,{height:height,overflow:'auto'});}
-this.add_item=function(label,onclick,no_body,with_heading){this.items[label]=new TrayItem(me,label,onclick,no_body,with_heading);return this.items[label];}}
-function TrayItem(tray,label,onclick,no_body,with_heading){this.label=label;this.onclick=onclick;var me=this;this.ldiv=$a($td(tray.tab,0,0),'div');$item_normal(this.ldiv);if(!no_body){this.wrapper=$a(tray.body,'div','',tray.body_style);if(with_heading){this.header=$a(this.wrapper,'div','sectionHeading',{marginBottom:'16px',paddingBottom:'0px'});this.header.innerHTML=label;}
-this.body=$a(this.wrapper,'div');this.tab_body=this.body;$dh(this.wrapper);}
-$(this.ldiv).html(label).hover(function(){if(tray.cur_item.label!=this.label)$item_active(this);},function(){if(tray.cur_item.label!=this.label)$item_normal(this);}).click(function(){me.expand();})
-this.ldiv.label=label;this.ldiv.setAttribute('title',label);this.ldiv.onmousedown=function(){$item_pressed(this);}
-this.ldiv.onmouseup=function(){$item_selected(this);}
-this.expand=function(){if(tray.cur_item)tray.cur_item.collapse();if(me.wrapper)$ds(me.wrapper);if(me.onclick)me.onclick(me.label);me.show_as_expanded();}
-this.show_as_expanded=function(){$item_selected(me.ldiv);tray.cur_item=me;}
-this.collapse=function(){if(me.wrapper)$dh(me.wrapper);$item_normal(me.ldiv);}
-this.hide=function(){me.collapse();$dh(me.ldiv);}
-this.show=function(){$ds(me.ldiv);}}
-/*
- *	lib/js/legacy/webpage/page_header.js
- */
-var def_ph_style={wrapper:{marginBottom:'16px',backgroundColor:'#EEE'},main_heading:{},sub_heading:{marginBottom:'8px',color:'#555',display:'none'},separator:{borderTop:'1px solid #ddd'},toolbar_area:{padding:'3px 0px',display:'none',borderBottom:'1px solid #ddd'}}
-function PageHeader(parent,main_text,sub_text){this.wrapper=$a(parent,'div','page_header');this.close_btn=$a(this.wrapper,'a','close',{},'&times;');this.close_btn.onclick=function(){window.history.back();};this.breadcrumbs=$a(this.wrapper,'div','breadcrumbs-area');this.main_head=$a(this.wrapper,'h1','',def_ph_style.main_heading);this.sub_head=$a(this.wrapper,'h4','',def_ph_style.sub_heading);this.separator=$a(this.wrapper,'div','',def_ph_style.separator);this.toolbar_area=$a(this.wrapper,'div','',def_ph_style.toolbar_area);this.padding_area=$a(this.wrapper,'div','',{padding:'3px'});if(main_text)this.main_head.innerHTML=main_text;if(sub_text)this.sub_head.innerHTML=sub_text;this.buttons={};this.buttons2={};}
-PageHeader.prototype.add_button=function(label,fn,bold,icon,green){var tb=this.toolbar_area;if(this.buttons[label])return;iconhtml=icon?('<i class="'+icon+'"></i> '):'';var $button=$('<button class="btn btn-small">'+iconhtml+label+'</button>').click(fn).appendTo(tb);if(green){$button.addClass('btn-info');$button.find('i').addClass('icon-white');}
-if(bold)$button.css('font-weight','bold');this.buttons[label]=$button.get(0);$ds(this.toolbar_area);return this.buttons[label];}
-PageHeader.prototype.clear_toolbar=function(){this.toolbar_area.innerHTML='';this.buttons={};}
-PageHeader.prototype.make_buttonset=function(){$(this.toolbar_area).buttonset();}
-/*
- *	lib/js/legacy/widgets/tags.js
- */
-_tags={dialog:null,color_map:{},all_tags:[],colors:{'Default':'#add8e6'}}
-TagList=function(parent,start_list,dt,dn,static,onclick){this.start_list=start_list?start_list:[];this.tag_list=[];this.dt=dt;this.onclick=onclick;this.dn=dn;this.static;this.parent=parent;this.make_body();}
-TagList.prototype.make=function(parent){for(var i=0;i<this.start_list.length;i++){if(this.start_list[i])
-new SingleTag({parent:this.body,label:this.start_list[i],dt:this.dt,dn:this.dn,fieldname:'_user_tags',static:this.static,taglist:this,onclick:this.onclick});}}
-TagList.prototype.make_body=function(){var div=$a(this.parent,'span','',{margin:'3px 0px',padding:'3px 0px'});this.body=$a(div,'span','',{marginRight:'4px'});this.add_tag_area=$a(div,'span');this.make_add_tag();this.make();}
-TagList.prototype.add_tag=function(label,static,fieldname,color){if(!label)return;if(in_list(this.tag_list,label))return;var tag=new SingleTag({parent:this.body,label:label,dt:this.dt,dn:this.dn,fieldname:fieldname,static:static,taglist:this,color:color,onclick:this.onclick});}
-TagList.prototype.make_add_tag=function(){var me=this;this.add_tag_span=$a(this.add_tag_area,'span','',{color:'#888',textDecoration:'underline',cursor:'pointer',marginLeft:'4px',fontSize:'11px'});this.add_tag_span.innerHTML='Add tag';this.add_tag_span.onclick=function(){me.new_tag();}}
-TagList.prototype.make_tag_dialog=function(){var me=this;var d=new wn.widgets.Dialog({title:'Add a tag',width:400,fields:[{fieldtype:'Link',fieldname:'tag',label:'Tag',options:'Tag',reqd:1,description:'Max chars (20)',no_buttons:1},{fieldtype:'Button',fieldname:'add',label:'Add'}]})
-$(d.fields_dict.tag.input).attr('maxlength',20);d.fields_dict.add.input.onclick=function(){me.save_tag(d);}
-return d;}
-TagList.prototype.is_text_okay=function(val){if(!val){msgprint("Please type something");return;}
-if(validate_spl_chars(val)){msgprint("Special charaters, commas etc not allowed in tags");return;}
-return 1}
-TagList.prototype.add_to_locals=function(tag){if(locals[this.dt]&&locals[this.dt][this.dn]){var doc=locals[this.dt][this.dn];if(!doc._user_tags){doc._user_tags=''}
-var tl=doc._user_tags.split(',')
-tl.push(tag)
-doc._user_tags=tl.join(',');}}
-TagList.prototype.remove_from_locals=function(tag){if(locals[this.dt]&&locals[this.dt][this.dn]){var doc=locals[this.dt][this.dn];var tl=doc._user_tags.split(',');var new_tl=[];for(var i=0;i<tl.length;i++){if(tl[i]!=tag)new_tl.push(tl[i]);}
-doc._user_tags=new_tl.join(',');}}
-TagList.prototype.save_tag=function(d){var val=d.get_values();if(val)val=val.tag;var me=this;if(!this.is_text_okay(val))return;var callback=function(r,rt){var d=me.dialog;d.fields_dict.add.input.done_working();d.fields_dict.tag.input.set_input('');d.hide();me.add_to_locals(val)
-if(!r.message)return;me.add_tag(r.message,0,'_user_tags');}
-me.dialog.fields_dict.add.input.set_working();$c('webnotes.widgets.tags.add_tag',{'dt':me.dt,'dn':me.dn,'tag':val,'color':'na'},callback);}
-TagList.prototype.new_tag=function(){var me=this;if(!this.dialog){this.dialog=this.make_tag_dialog();}
-this.dialog.show();}
-TagList.prototype.refresh_tags=function(){}
-function SingleTag(opts){$.extend(this,opts);if(!this.color)this.color='#add8e6';if(this.taglist&&!in_list(this.taglist.tag_list,this.label))
-this.taglist.tag_list.push(this.label);this.make_body(this.parent);}
-SingleTag.prototype.make_body=function(parent){var me=this;this.body=$a(parent,'span','',{padding:'2px 4px',backgroundColor:this.color,color:'#226',marginRight:'4px'});$br(this.body,'3px');if(this.onclick)$y(this.body,{cursor:'pointer'});$(this.body).hover(function(){$(this).css('opacity',0.6);},function(){$(this).css('opacity',1);});this.make_label();if(!this.static)this.make_remove_btn();_tags.all_tags.push(this);}
-SingleTag.prototype.make_remove_btn=function(){var me=this;var span=$a(this.body,'span');span.innerHTML+=' |';var span=$a(this.body,'span','',{cursor:'pointer'});span.innerHTML=' x'
-span.onclick=function(){me.remove(me);}}
-SingleTag.prototype.make_label=function(){var me=this;this.label_span=$a(this.body,'span','social',null,this.label);this.label_span.onclick=function(){if(me.onclick)me.onclick(me);}}
-SingleTag.prototype.remove_tag_body=function(){$dh(this.body);var nl=[];for(var i in this.tag_list)
-if(this.tag_list[i]!=this.label)
-nl.push(this.tag_list[i]);if(this.taglist)
-this.taglist.tag_list=nl;}
-SingleTag.prototype.remove=function(){var me=this;var callback=function(r,rt){me.remove_tag_body()
-me.taglist.remove_from_locals(me.label);}
-$c('webnotes.widgets.tags.remove_tag',{'dt':me.dt,'dn':me.dn,'tag':me.label},callback)
-$bg(me.body,'#DDD');}
-wn.widgets.TagCloud=function(parent,doctype,onclick){var me=this;this.make=function(r,rt){parent.innerHTML='';if(r.message&&r.message.length){me.tab=make_table(parent,r.message.length,2,'100%',['40px',null],{padding:'5px 3px 5px 0px'})
-$y($td(me.tab,0,0),{textAlign:'right'});for(var i=0;i<r.message.length;i++){new wn.widgets.TagCloud.Tag({parent:$td(me.tab,i,1),label:r.message[i][0],onclick:onclick,fieldname:r.message[i][2]},$td(me.tab,i,0),r.message[i])}}else{me.set_no_tags();}
-me.refresh=$ln($a(parent,'div'),'refresh',function(){me.refresh.set_working();me.render(1);},{fontSize:'11px',margin:'3px 0px',color:'#888'},1);}
-this.set_no_tags=function(){$a(parent,'div','social comment',{fontSize:'11px',margin:'3px 0px'},'<i>No tags yet!, please start tagging</i>');}
-this.render=function(refresh){$c('webnotes.widgets.tags.get_top_tags',{doctype:doctype,refresh:(refresh?1:0)},this.make);}
-this.render();}
-wn.widgets.TagCloud.Tag=function(args,count_cell,det){$(count_cell).css('text-align','right').html(det[1]+' x');args.static=1;this.tag=new SingleTag(args)}
-/*
- *	lib/js/legacy/widgets/export_query.js
- */
-var export_dialog;function export_query(query,callback){if(!export_dialog){var d=new Dialog(400,300,"Export...");d.make_body([['Data','Max rows','Blank to export all rows'],['Button','Go'],]);d.widgets['Go'].onclick=function(){export_dialog.hide();n=export_dialog.widgets['Max rows'].value;if(cint(n))
-export_dialog.query+=' LIMIT 0,'+cint(n);callback(export_dialog.query);}
-d.onshow=function(){this.widgets['Max rows'].value='500';}
-export_dialog=d;}
-export_dialog.query=query;export_dialog.show();}
-function export_csv(q,report_name,sc_id,is_simple,filter_values,colnames){var args={}
-args.cmd='webnotes.widgets.query_builder.runquery_csv';if(is_simple)
-args.simple_query=q;else
-args.query=q;args.sc_id=sc_id?sc_id:'';args.filter_values=filter_values?filter_values:'';if(colnames)
-args.colnames=colnames.join(',');args.report_name=report_name?report_name:'';open_url_post(wn.request.url,args);}
-/*
- *	lib/js/legacy/webpage/search.js
- */
-search_fields={};function setlinkvalue(name){selector.input.set_input_value(name);selector.hide();}
-function makeselector(){var d=new Dialog(540,440,'Search');d.make_body([['HTML','Help'],['Data','Beginning With','Tip: You can use wildcard "%"'],['Select','Search By'],['Button','Search'],['HTML','Result']]);var inp=d.widgets['Beginning With'];var field_sel=d.widgets['Search By'];var btn=d.widgets['Search'];d.sel_type='';d.values_len=0;d.set=function(input,type,label){d.sel_type=type;d.input=input;if(d.style!='Link'){d.rows['Result'].innerHTML='';d.values_len=0;}
-d.style='Link';d.set_query_description()
-if(!d.sel_type)d.sel_type='Value';d.set_title("Select");d.set_query_description('Select a "'+d.sel_type+'" for field "'+label+'"');}
-d.set_search=function(dt){if(d.style!='Search'){d.rows['Result'].innerHTML='';d.values_len=0;}
-d.style='Search';if(d.input){d.input=null;sel_type=null;}
-d.sel_type=get_label_doctype(dt);d.set_title('Quick Search for '+dt);}
-$(inp).keydown(function(e){if(e.which==13){if(!btn.disabled)btn.onclick();}})
-d.set_query_description=function(txt){txt=d.input&&d.input.query_description||txt;if(txt){d.rows['Help'].innerHTML='<div class="help-box" style="margin-top:0px">'+txt+'</div>';}else{d.rows['Help'].innerHTML=''}}
-d.onshow=function(){if(d.set_doctype!=d.sel_type){d.rows['Result'].innerHTML='';d.values_len=0;}
-inp.value='';if(d.input&&d.input.txt.value){inp.value=d.input.txt.value;}
-try{inp.focus();}catch(e){}
-if(d.input)d.input.set_get_query();var get_sf_list=function(dt){var l=[];var lf=search_fields[dt];for(var i=0;i<lf.length;i++)l.push(lf[i][1]);return l;}
-$ds(d.rows['Search By']);if(search_fields[d.sel_type]){empty_select(field_sel);add_sel_options(field_sel,get_sf_list(d.sel_type),'ID');}else{empty_select(field_sel);add_sel_options(field_sel,['ID'],'ID');$c('webnotes.widgets.search.getsearchfields',{'doctype':d.sel_type},function(r,rt){search_fields[d.sel_type]=r.searchfields;empty_select(field_sel);add_sel_options(field_sel,get_sf_list(d.sel_type));field_sel.selectedIndex=0;});}}
-d.onhide=function(){}
-btn.onclick=function(){if(this.disabled)return;this.args.is_ajax=true;this.set_working();d.set_doctype=d.sel_type;var q='';args={};if(d.input&&d.input.get_query){var doc={};args.is_simple=1;if(cur_frm)doc=locals[cur_frm.doctype][cur_frm.docname];var q=d.input.get_query(doc,d.input.doctype,d.input.docname);if(!q){return'';}}
-var get_sf_fieldname=function(v){var lf=search_fields[d.sel_type];if(!lf)
-return'name'
-for(var i=0;i<lf.length;i++)if(lf[i][1]==v)return lf[i][0];}
-$.extend(args,{'txt':strip(inp.value),'doctype':d.sel_type,'query':q,'searchfield':get_sf_fieldname(sel_val(field_sel))});$c('webnotes.widgets.search.search_widget',args,function(r,rtxt){btn.done_working();if(r.coltypes)r.coltypes[0]='Link';d.values_len=r.values.length;d.set_result(r);},function(){btn.done_working();});}
-d.set_result=function(r){d.rows['Result'].innerHTML='';var c=$a(d.rows['Result'],'div','comment',{paddingBottom:'4px',marginBottom:'4px',borderBottom:'1px solid #CCC',marginLeft:'4px'});if(r.values.length==50)
-c.innerHTML='Showing max 50 results. Use filters to narrow down your search';else
-c.innerHTML='Showing '+r.values.length+' resuts.';var w=$a(d.rows['Result'],'div','',{height:'240px',overflow:'auto',margin:'4px'});for(var i=0;i<r.values.length;i++){var div=$a(w,'div','',{marginBottom:'4px',paddingBottom:'4px',borderBottom:'1px dashed #CCC'});var l=$a($a(div,'div'),'span','link_type');l.innerHTML=r.values[i][0];l.link_name=r.values[i][0];l.dt=r.coloptions[0];if(d.input)
-l.onclick=function(){setlinkvalue(this.link_name);}
-else
-l.onclick=function(){loaddoc(this.dt,this.link_name);d.hide();}
-var cl=[]
-for(var j=1;j<r.values[i].length;j++)cl.push(r.values[i][j]);var c=$a(div,'div','comment',{marginTop:'2px'});c.innerHTML=cl.join(', ');}}
-selector=d;}
-/*
- *	lib/js/legacy/webpage/spinner.js
- */
-var pending_req=0;var fcount=0;var dialog_back;function set_loading(){pending_req++;$('#spinner').css('visibility','visible');$('body').css('cursor','progress');}
-function hide_loading(){pending_req--;if(!pending_req){$('body').css('cursor','default');$('#spinner').css('visibility','hidden');}}
-function freeze(){if(!dialog_back){dialog_back=$a($i('body_div'),'div','dialog_back');$(dialog_back).css('opacity',0.6);}
-$ds(dialog_back);fcount++;}
-function unfreeze(){if(!fcount)return;fcount--;if(!fcount){$dh(dialog_back);}}
-/*
- *	lib/js/legacy/webpage/loaders.js
- */
-function loadreport(dt,rep_name,onload){if(rep_name)
-wn.set_route('Report',dt,rep_name);else
-wn.set_route('Report',dt);}
-function loaddoc(doctype,name,onload){wn.model.with_doctype(doctype,function(){if(locals.DocType[doctype].in_dialog){_f.edit_record(doctype,name);}else{wn.set_route('Form',doctype,name);}})}
-var load_doc=loaddoc;function new_doc(doctype,in_form){doctype=get_label_doctype(doctype);wn.model.with_doctype(doctype,function(){if(!in_form&&locals.DocType[doctype].in_dialog){var new_name=LocalDB.create(doctype);_f.edit_record(doctype,new_name);}else{wn.views.formview.create(doctype);}})}
-var newdoc=new_doc;var pscript={};function loadpage(page_name,call_back,no_history){wn.set_route(page_name);}
-function loaddocbrowser(dt){wn.set_route('List',dt);}
-/*
- *	lib/js/legacy/wn/page_layout.js
- */
-wn.PageLayout=function(args){$.extend(this,args)
-this.wrapper=$a(this.parent,'div','layout-wrapper layout-wrapper-background');this.head=$a(this.wrapper,'div');this.main=$a(this.wrapper,'div','layout-main-section');this.sidebar_area=$a(this.wrapper,'div','layout-side-section');$a(this.wrapper,'div','',{clear:'both'});this.body=$a(this.main,'div');this.footer=$a(this.main,'div');if(this.heading){this.page_head=new PageHeader(this.head,this.heading);}}
-/*
- *	lib/js/legacy/wn/widgets/page_sidebar.js
- */
-wn.widgets.PageSidebar=function(parent,opts){this.opts=opts
-this.sections={}
-this.wrapper=$a(parent,'div','psidebar')
-this.refresh=function(){this.wrapper.innerHTML=''
-if(this.opts.title)
-this.make_head();for(var i=0;i<this.opts.sections.length;i++){var section=this.opts.sections[i];if((section.display&&section.display())||!section.display){this.sections[section.title]=new wn.widgets.PageSidebarSection(this,section);}}
-if(this.opts.onrefresh){this.opts.onrefresh(this)}}
-this.make_head=function(){this.head=$a(this.wrapper,'div','head','',this.opts.title);}
-this.refresh();}
-wn.widgets.PageSidebarSection=function(sidebar,opts){this.items=[];this.sidebar=sidebar;this.wrapper=$a(sidebar.wrapper,'div','section');this.head=$a(this.wrapper,'div','section-head','',opts.title);this.body=$a(this.wrapper,'div','section-body');$br(this.wrapper,'5px');this.opts=opts;this.make_items=function(){for(var i=0;i<this.opts.items.length;i++){var item=this.opts.items[i];if((item.display&&item.display())||!item.display){var div=$a(this.body,'div','section-item small');this.make_one_item(item,div);}}}
-this.make_one_item=function(item,div){if(item.type.toLowerCase()=='link')
-this.items[item.label]=new wn.widgets.PageSidebarLink(this,item,div);else if(item.type.toLowerCase()=='button')
-this.items[item.label]=new wn.widgets.PageSidebarButton(this,this.opts.items[i],div);else if(item.type.toLowerCase()=='html')
-this.items[item.label]=new wn.widgets.PageSidebarHTML(this,this.opts.items[i],div);}
-this.add_icon=function(parent,icon){var img=$a(parent,'i',icon,{marginRight:'7px',marginBottom:'-3px'});}
-this.refresh=function(){this.body.innerHTML='';if(this.opts.render){this.opts.render(this.body);}
-else
-this.make_items();}
-this.refresh();}
-wn.widgets.PageSidebarLink=function(section,opts,wrapper){this.wrapper=wrapper;this.section=section;this.opts=opts;var me=this;if(opts.icon){section.add_icon(this.wrapper,opts.icon);}
-this.ln=$a(this.wrapper,'span','link_type section-link small',opts.style,opts.label);this.ln.onclick=function(){me.opts.onclick(me)};}
-wn.widgets.PageSidebarButton=function(section,opts,wrapper){this.wrapper=wrapper;this.section=section;this.opts=opts;var me=this;this.btn=$btn(this.wrapper,opts.label,opts.onclick,opts.style,opts.color);}
-wn.widgets.PageSidebarHTML=function(section,opts,wrapper){wrapper.innerHTML=opts.content}
-/*
- *	lib/js/legacy/wn/widgets/footer.js
- */
-wn.widgets.Footer=function(args){$.extend(this,args);this.make=function(){this.wrapper=$a(this.parent,'div','std-footer');this.table=make_table(this.wrapper,1,this.columns,[],{width:100/this.columns+'%'});this.render_items();}
-this.render_items=function(){for(var i=0;i<this.items.length;i++){var item=this.items[i];var div=$a($td(this.table,0,item.column),'div','std-footer-item');div.label=$a($a(div,'div'),'span','link_type','',item.label);div.label.onclick=item.onclick;if(item.description){div.description=$a(div,'div','field_description','',item.description);}}}
-if(this.items)
-this.make();}
-/*
- *	lib/js/legacy/model/local_data.js
- */
-var locals={'DocType':{}};var LocalDB={};var READ=0;var WRITE=1;var CREATE=2;var SUBMIT=3;var CANCEL=4;var AMEND=5;LocalDB.getchildren=function(child_dt,parent,parentfield,parenttype){var l=[];for(var key in locals[child_dt]){var d=locals[child_dt][key];if((d.parent==parent)&&(d.parentfield==parentfield)){if(parenttype){if(d.parenttype==parenttype)l.push(d);}else{l.push(d);}}}
-l.sort(function(a,b){return(cint(a.idx)-cint(b.idx))});return l;}
-LocalDB.add=function(dt,dn){if(!locals[dt])locals[dt]={};if(locals[dt][dn])delete locals[dt][dn];locals[dt][dn]={'name':dn,'doctype':dt,'docstatus':0};return locals[dt][dn];}
-LocalDB.delete_doc=function(dt,dn){var doc=get_local(dt,dn);for(var ndt in locals){if(locals[ndt]){for(var ndn in locals[ndt]){var doc=locals[ndt][ndn];if(doc&&doc.parenttype==dt&&(doc.parent==dn||doc.__oldparent==dn)){delete locals[ndt][ndn];}}}}
-delete locals[dt][dn];}
-function get_local(dt,dn){return locals[dt]?locals[dt][dn]:null;}
-LocalDB.sync=function(list){if(list._kl)list=expand_doclist(list);if(list){LocalDB.clear_locals(list[0].doctype,list[0].name);}
-for(var i=0;i<list.length;i++){var d=list[i];if(!d.name)
-d.name=LocalDB.get_localname(d.doctype);LocalDB.add(d.doctype,d.name);locals[d.doctype][d.name]=d;if(cur_frm&&cur_frm.doctype==d.doctype&&cur_frm.docname==d.name){cur_frm.doc=d;}
-if(d.doctype=='DocField')
-wn.meta.add_field(d);if(d.localname){wn.model.new_names[d.localname]=d.name;$(document).trigger('rename',[d.doctype,d.localname,d.name]);delete locals[d.doctype][d.localname];}}}
-LocalDB.clear_locals=function(dt,dn){var doclist=make_doclist(dt,dn,1);$.each(doclist,function(i,v){v&&delete locals[v.doctype][v.name];});}
-local_name_idx={};LocalDB.get_localname=function(doctype){if(!local_name_idx[doctype])local_name_idx[doctype]=1;var n='New '+get_doctype_label(doctype)+' '+local_name_idx[doctype];local_name_idx[doctype]++;return n;}
-LocalDB.set_default_values=function(doc){var doctype=doc.doctype;var docfields=wn.meta.docfield_list[doctype];if(!docfields){return;}
-var fields_to_refresh=[];for(var fid=0;fid<docfields.length;fid++){var f=docfields[fid];if(!in_list(no_value_fields,f.fieldtype)&&doc[f.fieldname]==null){var v=LocalDB.get_default_value(f.fieldname,f.fieldtype,f['default']);if(v){doc[f.fieldname]=v;fields_to_refresh.push(f.fieldname);}}}
-return fields_to_refresh;}
-function check_perm_match(p,dt,dn){if(!dn)return true;var out=false;if(p.match){if(user_defaults[p.match]){for(var i=0;i<user_defaults[p.match].length;i++){if(user_defaults[p.match][i]==locals[dt][dn][p.match]){return true;}}
-return false;}else if(!locals[dt][dn][p.match]){return true;}else{return false;}}else{return true;}}
-function get_perm(doctype,dn,ignore_submit){var perm=[[0,0],];if(in_list(user_roles,'Administrator'))perm[0][READ]=1;var plist=getchildren('DocPerm',doctype,'permissions','DocType');for(var pidx in plist){var p=plist[pidx];var pl=cint(p.permlevel?p.permlevel:0);if(in_list(user_roles,p.role)){if(check_perm_match(p,doctype,dn)){if(!perm[pl])perm[pl]=[];if(!perm[pl][READ]){if(cint(p.read))perm[pl][READ]=1;else perm[pl][READ]=0;}
-if(!perm[pl][WRITE]){if(cint(p.write)){perm[pl][WRITE]=1;perm[pl][READ]=1;}else perm[pl][WRITE]=0;}
-if(!perm[pl][CREATE]){if(cint(p.create))perm[pl][CREATE]=1;else perm[pl][CREATE]=0;}
-if(!perm[pl][SUBMIT]){if(cint(p.submit))perm[pl][SUBMIT]=1;else perm[pl][SUBMIT]=0;}
-if(!perm[pl][CANCEL]){if(cint(p.cancel))perm[pl][CANCEL]=1;else perm[pl][CANCEL]=0;}
-if(!perm[pl][AMEND]){if(cint(p.amend))perm[pl][AMEND]=1;else perm[pl][AMEND]=0;}}}}
-if((!ignore_submit)&&dn&&locals[doctype][dn].docstatus>0){for(pl in perm)
-perm[pl][WRITE]=0;}
-return perm;}
-LocalDB.create=function(doctype,n){if(!n)n=LocalDB.get_localname(doctype);var doc=LocalDB.add(doctype,n)
-doc.__islocal=1;doc.owner=user;LocalDB.set_default_values(doc);return n;}
-LocalDB.delete_record=function(dt,dn){delete locals[dt][dn];}
-LocalDB.get_default_value=function(fn,ft,df){if(df=='_Login'||df=='__user')
-return user;else if(df=='_Full Name')
-return user_fullname;else if(ft=='Date'&&(df=='Today'||df=='__today')){return get_today();}
-else if(df)
-return df;else if(user_defaults[fn])
-return user_defaults[fn][0];else if(sys_defaults[fn])
-return sys_defaults[fn];}
-LocalDB.add_child=function(doc,childtype,parentfield){var n=LocalDB.create(childtype);var d=locals[childtype][n];d.parent=doc.name;d.parentfield=parentfield;d.parenttype=doc.doctype;return d;}
-LocalDB.no_copy_list=['amended_from','amendment_date','cancel_reason'];LocalDB.copy=function(dt,dn,from_amend){var newdoc=LocalDB.create(dt);for(var key in locals[dt][dn]){var df=wn.meta.get_docfield(dt,key);if(key!=='name'&&key.substr(0,2)!='__'&&!(df&&((!from_amend&&cint(df.no_copy)==1)||in_list(LocalDB.no_copy_list,df.fieldname)))){locals[dt][newdoc][key]=locals[dt][dn][key];}}
-return locals[dt][newdoc];}
-function make_doclist(dt,dn){if(!locals[dt]){return[];}
-var dl=[];dl[0]=locals[dt][dn];for(var ndt in locals){if(locals[ndt]){for(var ndn in locals[ndt]){var doc=locals[ndt][ndn];if(doc&&doc.parenttype==dt&&doc.parent==dn){dl.push(doc)}}}}
-return dl;}
-var Meta={};var local_dt={};Meta.make_local_dt=function(dt,dn){var dl=make_doclist('DocType',dt);if(!local_dt[dt])local_dt[dt]={};if(!local_dt[dt][dn])local_dt[dt][dn]={};for(var i=0;i<dl.length;i++){var d=dl[i];if(d.doctype=='DocField'){var key=d.fieldname?d.fieldname:d.label;local_dt[dt][dn][key]=copy_dict(d);}}}
-Meta.set_field_property=function(fn,key,val,doc){if(!doc&&(cur_frm.doc))doc=cur_frm.doc;try{local_dt[doc.doctype][doc.name][fn][key]=val;refresh_field(fn);}catch(e){alert("Client Script Error: Unknown values for "+doc.name+','+fn+'.'+key+'='+val);}}
-Meta.get_field=function(dt,fn,dn){try{return local_dt[dt][dn][fn];}catch(e){return null;}}
-function get_doctype_label(dt){return dt}
-function get_label_doctype(label){return label}
-var getchildren=LocalDB.getchildren;var createLocal=LocalDB.create;
-/*
- *	lib/js/legacy/model/doclist.js
- */
-function compress_doclist(list){var kl={};var vl=[];var flx={};for(var i=0;i<list.length;i++){var o=list[i];var fl=[];if(!kl[o.doctype]){var tfl=['doctype','name','docstatus','owner','parent','parentfield','parenttype','idx','creation','modified','modified_by','__islocal','__newname','__modified','_user_tags','__temp'];var fl=[].concat(tfl);for(key in wn.meta.docfield_map[o.doctype]){if(!in_list(fl,key)&&!in_list(no_value_fields,wn.meta.docfield_map[o.doctype][key].fieldtype)&&!wn.meta.docfield_map[o.doctype][key].no_column){fl[fl.length]=key;tfl[tfl.length]=key}}
-flx[o.doctype]=fl;kl[o.doctype]=tfl}
-var nl=[];var fl=flx[o.doctype];for(var j=0;j<fl.length;j++){var v=o[fl[j]];nl.push(v);}
-vl.push(nl);}
-return JSON.stringify({'_vl':vl,'_kl':kl});}
-function expand_doclist(docs){var l=[];for(var i=0;i<docs._vl.length;i++)
-l[l.length]=zip(docs._kl[docs._vl[i][0]],docs._vl[i]);return l;}
-function zip(k,v){var obj={};for(var i=0;i<k.length;i++){obj[k[i]]=v[i];}
-return obj;}
-function save_doclist(dt,dn,save_action,onsave,onerr){var doc=locals[dt][dn];var doctype=locals['DocType'][dt];var tmplist=[];var doclist=make_doclist(dt,dn,1);var all_reqd_ok=true;if(save_action!='Cancel'){for(var n in doclist){var reqd_ok=check_required(doclist[n].doctype,doclist[n].name,doclist[0].doctype);if(doclist[n].docstatus+''!='2'&&all_reqd_ok)
-all_reqd_ok=reqd_ok;}}
-if(!all_reqd_ok){onerr()
-return;}
-var _save=function(){$c('webnotes.widgets.form.save.savedocs',{'docs':compress_doclist(doclist),'docname':dn,'action':save_action,'user':user},function(r,rtxt){if(f){f.savingflag=false;}
-if(r.saved){if(onsave)onsave(r);}else{if(onerr)onerr(r);}},function(){if(f){f.savingflag=false;}},0,(f?'Saving...':''));}
-if(doc.__islocal&&(doctype&&doctype.autoname&&doctype.autoname.toLowerCase()=='prompt')){var newname=prompt('Enter the name of the new '+dt,'');if(newname){doc.__newname=strip(newname);_save();}else{msgprint('Not Saved');onerr();}}else{_save();}}
-function check_required(dt,dn,parent_dt){var doc=locals[dt][dn];if(doc.docstatus>1)return true;var fl=wn.meta.docfield_list[dt];if(!fl)return true;var all_clear=true;var errfld=[];for(var i=0;i<fl.length;i++){var key=fl[i].fieldname;var df=wn.meta.get_docfield(dt,key,dn);var has_value=wn.model.has_value(dt,dn,key);if(df.reqd&&!has_value){errfld[errfld.length]=df.label;if(cur_frm){var f=cur_frm.fields_dict[df.fieldname];if(f){f.df.has_error=true;f.refresh_label_icon&&f.refresh_label_icon();if(all_clear&&f.wrapper){$(document).scrollTop($(f.wrapper).offset().top-100);}
-if(f.df.hidden){msgprint('Oops, field "'+f.df.label+'" is both hidden and mandatory. \
-       Please contact your admin for help.');}}}
-if(all_clear)all_clear=false;}}
-if(errfld.length)msgprint('<b>Mandatory fields required in '+
-(doc.parenttype?(wn.meta.docfield_map[doc.parenttype][doc.parentfield].label+' (Table)'):doc.doctype)+':</b>\n'+errfld.join('\n'));return all_clear;}
-/*
- *	lib/js/wn/ui/toolbar.min.js
- */
-
-/*
- *	lib/js/wn/ui/toolbar/selector_dialog.js
- */
-wn.provide('wn.ui.toolbar');wn.ui.toolbar.SelectorDialog=Class.extend({init:function(opts){this.opts=opts;try{this.make_dialog();}catch(e){console.log(e);}
-this.bind_events();},make_dialog:function(){this.dialog=new wn.widgets.Dialog({title:this.opts.title,width:300,fields:[{fieldtype:'Select',fieldname:'doctype',options:'Select...',label:'Select Type'},{fieldtype:'Button',label:'Go',fieldname:'go'}]});},bind_events:function(){var me=this;$(this.dialog.fields_dict.go.input).click(function(){if(!me.dialog.display)return;me.dialog.hide();me.opts.execute(me.dialog.fields_dict.doctype.get_value());});$(this.dialog.fields_dict.doctype.input).change(function(){me.dialog.fields_dict.go.input.click();}).keypress(function(ev){if(ev.which==13){me.dialog.fields_dict.go.input.click();}});},show:function(){this.dialog.show();this.dialog.fields_dict.doctype.input.focus();return false;},set_values:function(lst){for(var i=0;i<lst.length;i++)
-lst[i]=get_doctype_label(lst[i]);var sel=this.dialog.fields_dict.doctype.input;$(sel).empty();add_sel_options(sel,lst.sort());}})
-/*
- *	lib/js/wn/ui/toolbar/new.js
- */
-wn.ui.toolbar.NewDialog=wn.ui.toolbar.SelectorDialog.extend({init:function(){this._super({title:"New Record",execute:function(val){new_doc(val);},});this.set_values(profile.can_create.join(',').split(','));}});
-/*
- *	lib/js/wn/ui/toolbar/search.js
- */
-wn.ui.toolbar.Search=wn.ui.toolbar.SelectorDialog.extend({init:function(){this._super({title:"Search",execute:function(val){new wn.ui.Search({doctype:val});},});this.set_values(wn.boot.profile.can_search.join(',').split(','));makeselector();}});
-/*
- *	lib/js/wn/ui/toolbar/report.js
- */
-wn.ui.toolbar.Report=wn.ui.toolbar.SelectorDialog.extend({init:function(){this._super({title:"Start Report For",execute:function(val){wn.set_route('Report2',val);},});this.set_values(profile.can_get_report.join(',').split(','));}});
-/*
- *	lib/js/wn/ui/toolbar/recent.js
- */
-wn.ui.toolbar.RecentDocs=Class.extend({init:function(){$('.navbar .nav:first').append('<li class="dropdown">\
-   <a class="dropdown-toggle" data-toggle="dropdown" href="#" \
-    onclick="return false;">Recent<b class="caret"></b></a>\
-   <ul class="dropdown-menu" id="toolbar-recent"></ul>\
-  </li>');this.setup();this.bind_events();},bind_events:function(){var me=this;$(document).bind('rename',function(event,dt,old_name,new_name){me.rename_notify(dt,old_name,new_name)});},rename_notify:function(dt,old,name){this.remove(dt,old);this.add(dt,name,1);},add:function(dt,dn,on_top){if(this.istable(dt))return;this.remove(dt,dn);var html=repl('<li data-docref="%(dt)s/%(dn)s">\
-   <a href="#Form/%(dt)s/%(dn)s">\
-    %(dn)s <span style="font-size: 10px">(%(dt)s)</span>\
-   </a></li>',{dt:dt,dn:dn});if(on_top){$('#toolbar-recent').prepend(html);}else{$('#toolbar-recent').append(html);}},istable:function(dt){return locals.DocType[dt]&&locals.DocType[dt].istable||false;},remove:function(dt,dn){$(repl('#toolbar-recent li[data-docref="%(dt)s/%(dn)s"]',{dt:dt,dn:dn})).remove();},setup:function(){var rlist=JSON.parse(profile.recent||"[]");var m=rlist.length;if(m>15)m=15;for(var i=0;i<m;i++){var rd=rlist[i]
-if(rd[1]){var dt=rd[0];var dn=rd[1];this.add(dt,dn,0);}}}});
-/*
- *	lib/js/wn/ui/toolbar/toolbar.js
- */
-wn.ui.toolbar.Toolbar=Class.extend({init:function(){this.make();this.make_home();this.make_document();wn.ui.toolbar.recent=new wn.ui.toolbar.RecentDocs();this.make_tools();this.set_user_name();this.make_logout();$('.dropdown-toggle').dropdown();$(document).trigger('toolbar_setup');},make:function(){$('header').append('<div class="navbar navbar-fixed-top">\
-   <div class="navbar-inner">\
-   <div class="container">\
-    <a class="brand"></a>\
-    <ul class="nav">\
-    </ul>\
-    <img src="images/lib/ui/spinner.gif" id="spinner"/>\
-    <ul class="nav pull-right">\
-     <li class="dropdown">\
-      <a class="dropdown-toggle" data-toggle="dropdown" href="#" \
-       onclick="return false;" id="toolbar-user-link"></a>\
-      <ul class="dropdown-menu" id="toolbar-user">\
-      </ul>\
-     </li>\
-    </ul>\
-   </div>\
-   </div>\
-   </div>');},make_home:function(){$('.navbar .brand').attr('href',"#");},make_document:function(){wn.ui.toolbar.new_dialog=new wn.ui.toolbar.NewDialog();wn.ui.toolbar.search=new wn.ui.toolbar.Search();wn.ui.toolbar.report=new wn.ui.toolbar.Report();$('.navbar .nav:first').append('<li class="dropdown">\
-   <a class="dropdown-toggle" href="#"  data-toggle="dropdown"\
-    onclick="return false;">Document<b class="caret"></b></a>\
-   <ul class="dropdown-menu" id="toolbar-document">\
-    <li><a href="#" onclick="return wn.ui.toolbar.new_dialog.show();">\
-     <i class="icon-plus"></i> New</a></li>\
-    <li><a href="#" onclick="return wn.ui.toolbar.search.show();">\
-     <i class="icon-search"></i> Search</a></li>\
-    <li><a href="#" onclick="return wn.ui.toolbar.report.show();">\
-     <i class="icon-list"></i> Report</a></li>\
-   </ul>\
-  </li>');},make_tools:function(){$('.navbar .nav:first').append('<li class="dropdown">\
-   <a class="dropdown-toggle" data-toggle="dropdown" href="#" \
-    onclick="return false;">Tools<b class="caret"></b></a>\
-   <ul class="dropdown-menu" id="toolbar-tools">\
-    <li><a href="#" onclick="return wn.ui.toolbar.clear_cache();">Clear Cache & Refresh</a></li>\
-    <li><a href="#" onclick="return wn.ui.toolbar.show_about();">About</a></li>\
-   </ul>\
-  </li>');if(has_common(user_roles,['Administrator','System Manager'])){$('#toolbar-tools').append('<li><a href="#" \
-    onclick="return wn.ui.toolbar.download_backup();">\
-    Download Backup</a></li>');}},set_user_name:function(){var fn=user_fullname;if(fn.length>15)fn=fn.substr(0,12)+'...';$('#toolbar-user-link').html(fn+'<b class="caret"></b>');},make_logout:function(){$('#toolbar-user').append('<li><a href="#" onclick="return wn.app.logout();">Logout</a></li>');}});wn.ui.toolbar.clear_cache=function(){localStorage&&localStorage.clear();$c('webnotes.session_cache.clear',{},function(r,rt){if(!r.exc){show_alert(r.message);location.reload();}});return false;}
-wn.ui.toolbar.download_backup=function(){$c('webnotes.utils.backups.get_backup',{},function(r,rt){});return false;}
-wn.ui.toolbar.show_about=function(){try{wn.ui.misc.about();}catch(e){console.log(e);}
-return false;}
-
-/*
- *	lib/js/wn/views/breadcrumbs.js
- */
-wn.provide('wn.views');wn.views.breadcrumbs=function(appframe,module,doctype,name){appframe.clear_breadcrumbs();if(name){appframe.add_breadcrumb(name);}else if(doctype){appframe.add_breadcrumb(doctype+' List');}else if(module){appframe.add_breadcrumb(module);}
-if(name&&doctype&&(!locals['DocType'][doctype].issingle)){appframe.add_breadcrumb(repl(' in <a href="#!List/%(doctype)s">%(doctype)s List</a>',{doctype:doctype}))};if(doctype&&module&&wn.modules&&wn.modules[module]){appframe.add_breadcrumb(repl(' in <a href="#!%(module_page)s">%(module)s</a>',{module:module,module_page:wn.modules[module]}))}}
-/*
- *	lib/js/legacy/widgets/form/fields.js
- */
-var no_value_fields=['Section Break','Column Break','HTML','Table','FlexTable','Button','Image'];var codeid=0;var code_editors={};function Field(){this.with_label=1;}
-Field.prototype.make_body=function(){var ischk=(this.df.fieldtype=='Check'?1:0);if(this.parent)
-this.wrapper=$a(this.parent,(this.with_label?'div':'span'));else
-this.wrapper=document.createElement((this.with_label?'div':'span'));this.label_area=$a(this.wrapper,'div','',{margin:'0px 0px 2px 0px',minHeight:'1em'});if(ischk&&!this.in_grid){this.input_area=$a(this.label_area,'span','',{marginRight:'4px'});this.disp_area=$a(this.label_area,'span','',{marginRight:'4px'});}
-if(this.with_label){this.label_span=$a(this.label_area,'span','small',{cssFloat:'left'})
-this.label_icon=$('<i class="icon icon-warning-sign">').toggle(false).appendTo(this.label_area).css('float','left').css('margin-left','7px').attr("title","This field is mandatory.");this.suggest_icon=$('<i class="icon icon-chevron-down">').toggle(false).appendTo(this.label_area).css('float','left').css('margin-left','7px').attr("title","will show suggestions as you type.");}else{this.label_span=$a(this.label_area,'span','',{marginRight:'4px'})
-$dh(this.label_area);}
-if(!this.input_area){this.input_area=$a(this.wrapper,(this.with_label?'div':'span'));this.disp_area=$a(this.wrapper,(this.with_label?'div':'span'));}
-if(this.in_grid){if(this.label_area)$dh(this.label_area);}else{this.input_area.className='input_area';$y(this.wrapper,{marginBottom:'9px'});this.set_description();}
-if(this.onmake)this.onmake();}
-Field.prototype.set_max_width=function(){var no_max=['Code','Text Editor','Text','Table','HTML']
-if(this.wrapper&&this.layout_cell&&this.layout_cell.parentNode.cells&&this.layout_cell.parentNode.cells.length==1&&!in_list(no_max,this.df.fieldtype)){$y(this.wrapper,{paddingRight:'50%'});}}
-Field.prototype.set_label=function(){if(this.with_label&&this.label_area&&this.label!=this.df.label){this.label_span.innerHTML=this.df.label;this.label=this.df.label;}}
-Field.prototype.set_description=function(){if(this.df.description){var p=in_list(['Text Editor','Code','Check'],this.df.fieldtype)?this.label_area:this.wrapper;this.desc_area=$a(p,'div','help small','',this.df.description)
-if(in_list(['Text Editor','Code'],this.df.fieldtype))
-$(this.desc_area).addClass('help small');}}
-Field.prototype.get_status=function(){if(this.in_filter)
-this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';}
-if(!this.df.permlevel)this.df.permlevel=0;var p=this.perm[this.df.permlevel];var ret;if(cur_frm.editable&&p&&p[WRITE]&&!this.df.disabled)ret='Write';else if(p&&p[READ])ret='Read';else ret='None';if(this.df.fieldtype=='Binary')
-ret='None';if(cint(this.df.hidden))
-ret='None';if(ret=='Write'&&cint(cur_frm.doc.docstatus)>0)ret='Read';var a_o_s=cint(this.df.allow_on_submit);if(a_o_s&&(this.in_grid||(this.frm&&this.frm.not_in_container))){a_o_s=null;if(this.in_grid)a_o_s=this.grid.field.df.allow_on_submit;if(this.frm&&this.frm.not_in_container){a_o_s=cur_grid.field.df.allow_on_submit;}}
-if(cur_frm.editable&&a_o_s&&cint(cur_frm.doc.docstatus)>0&&!this.df.hidden){tmp_perm=get_perm(cur_frm.doctype,cur_frm.docname,1);if(tmp_perm[this.df.permlevel]&&tmp_perm[this.df.permlevel][WRITE]){ret='Write';}}
-return ret;}
-Field.prototype.set_style_mandatory=function(add){if(add){$(this.txt?this.txt:this.input).addClass('input-mandatory');if(this.disp_area)$(this.disp_area).addClass('input-mandatory');}else{$(this.txt?this.txt:this.input).removeClass('input-mandatory');if(this.disp_area)$(this.disp_area).removeClass('input-mandatory');}}
-Field.prototype.refresh_mandatory=function(){if(this.in_filter)return;if(this.df.reqd){if(this.label_area)this.label_area.style.color="#d22";this.set_style_mandatory(1);}else{if(this.label_area)this.label_area.style.color="#222";this.set_style_mandatory(0);}
-this.refresh_label_icon()
-this.set_reqd=this.df.reqd;}
-Field.prototype.refresh_display=function(){if(!this.current_status||this.current_status!=this.disp_status){if(this.disp_status=='Write'){if(this.make_input&&(!this.input)){this.make_input();if(this.onmake_input)this.onmake_input();}
-if(this.show)this.show()
-else{$ds(this.wrapper);}
-if(this.input){$ds(this.input_area);$dh(this.disp_area);if(this.input.refresh)this.input.refresh();}else{$dh(this.input_area);$ds(this.disp_area);}}else if(this.disp_status=='Read'){if(this.show)this.show()
-else{$ds(this.wrapper);}
-$dh(this.input_area);$ds(this.disp_area);}else{if(this.hide)this.hide();else $dh(this.wrapper);}
-this.current_status=this.disp_status;}}
-Field.prototype.refresh=function(){this.disp_status=this.get_status();if(this.in_grid&&this.table_refresh&&this.disp_status=='Write')
-{this.table_refresh();return;}
-this.set_label();this.refresh_display();if(this.onrefresh)
-this.onrefresh();if(this.input){if(this.input.refresh)this.input.refresh(this.df);}
-if(this.wrapper){this.wrapper.fieldobj=this;$(this.wrapper).trigger('refresh');}
-if(!this.not_in_form)
-this.set_input(_f.get_value(this.doctype,this.docname,this.df.fieldname));this.refresh_mandatory();this.set_max_width();}
-Field.prototype.refresh_label_icon=function(){var to_update=false;if(this.df.reqd&&this.get_value&&is_null(this.get_value()))
-to_update=true;if(!to_update&&this.df.has_error)this.df.has_error=false;if(this.label_icon)this.label_icon.toggle(to_update);$(this.txt?this.txt:this.input).toggleClass('field-to-update',to_update);$(this.txt?this.txt:this.input).toggleClass('field-has-error',this.df.has_error?true:false);}
-Field.prototype.set=function(val){if(this.not_in_form)
-return;if((!this.docname)&&this.grid){this.docname=this.grid.add_newrow();}
-if(this.validate)
-val=this.validate(val);cur_frm.set_value_in_locals(this.doctype,this.docname,this.df.fieldname,val);this.value=val;}
-Field.prototype.set_input=function(val){this.value=val;if(this.input&&this.input.set_input){if(val==null)this.input.set_input('');else this.input.set_input(val);}
-var disp_val=val;if(val==null)disp_val='';this.set_disp(disp_val);}
-Field.prototype.run_trigger=function(){this.refresh_label_icon();if(this.not_in_form){return;}
-if(cur_frm.cscript[this.df.fieldname])
-cur_frm.runclientscript(this.df.fieldname,this.doctype,this.docname);cur_frm.refresh_dependency();}
-Field.prototype.set_disp_html=function(t){if(this.disp_area){$(this.disp_area).addClass('disp_area');this.disp_area.innerHTML=(t==null?'':t);if(!t)$(this.disp_area).addClass('disp_area_no_val');}}
-Field.prototype.set_disp=function(val){this.set_disp_html(val);}
-Field.prototype.activate=function(docname){this.docname=docname;this.refresh();if(this.input){var v=_f.get_value(this.doctype,this.docname,this.df.fieldname);this.last_value=v;if(this.input.onchange&&this.input.get_value&&this.input.get_value()!=v){if(this.validate)
-this.input.set_value(this.validate(v));else
-this.input.set_value((v==null)?'':v);if(this.format_input)
-this.format_input();}
-if(this.input.focus){try{this.input.focus();}catch(e){}}}
-if(this.txt){try{this.txt.focus();}catch(e){}
-this.txt.field_object=this;}}
-function DataField(){}DataField.prototype=new Field();DataField.prototype.make_input=function(){var me=this;this.input=$a_input(this.input_area,this.df.fieldtype=='Password'?'password':'text');this.get_value=function(){var v=this.input.value;if(this.validate)
-v=this.validate(v);return v;}
-this.input.name=this.df.fieldname;$(this.input).change(function(){me.set_value(me.get_value?me.get_value():$(this.input).val());});this.set_value=function(val){if(!me.last_value)me.last_value='';if(me.validate){val=me.validate(val);me.input.value=val==undefined?'':val;}
-me.set(val);if(me.format_input)
-me.format_input();if(in_list(['Currency','Float','Int'],me.df.fieldtype)){if(flt(me.last_value)==flt(val)){me.last_value=val;return;}}
-me.last_value=val;me.run_trigger();}
-this.input.set_input=function(val){if(val==null)val='';me.input.value=val;if(me.format_input)me.format_input();}
-if(this.df.options=='Suggest'){if(this.suggest_icon)this.suggest_icon.toggle(true);$(me.input).autocomplete({source:function(request,response){wn.call({method:'webnotes.widgets.search.search_link',args:{'txt':request.term,'dt':me.df.options,'query':repl('SELECT DISTINCT `%(fieldname)s` FROM \
-       `tab%(dt)s` WHERE `%(fieldname)s` LIKE "%s" LIMIT 50',{fieldname:me.df.fieldname,dt:me.df.parent})},callback:function(r){response(r.results);}});},select:function(event,ui){me.set(ui.item.value);}});}}
-DataField.prototype.validate=function(v){if(this.df.options=='Phone'){if(v+''=='')return'';v1=''
-v=v.replace(/ /g,'').replace(/-/g,'').replace(/\(/g,'').replace(/\)/g,'');if(v&&v.substr(0,1)=='+'){v1='+';v=v.substr(1);}
-if(v&&v.substr(0,2)=='00'){v1+='00';v=v.substr(2);}
-if(v&&v.substr(0,1)=='0'){v1+='0';v=v.substr(1);}
-v1+=cint(v)+'';return v1;}else if(this.df.options=='Email'){if(v+''=='')return'';if(!validate_email(v)){msgprint(this.df.label+': '+v+' is not a valid email id');return'';}else
-return v;}else{return v;}}
-function ReadOnlyField(){}
-ReadOnlyField.prototype=new Field();function HTMLField(){}
-HTMLField.prototype=new Field();HTMLField.prototype.with_label=0;HTMLField.prototype.set_disp=function(val){if(this.disp_area)this.disp_area.innerHTML=val;}
-HTMLField.prototype.set_input=function(val){if(val)this.set_disp(val);}
-HTMLField.prototype.onrefresh=function(){if(this.df.options)this.set_disp(this.df.options);}
-var datepicker_active=0;function DateField(){}DateField.prototype=new Field();DateField.prototype.make_input=function(){var me=this;this.user_fmt=sys_defaults.date_format;if(!this.user_fmt)this.user_fmt='dd-mm-yy';this.input=$a(this.input_area,'input');$(this.input).datepicker({dateFormat:me.user_fmt.replace('yyyy','yy'),altFormat:'yy-mm-dd',changeYear:true,beforeShow:function(input,inst){datepicker_active=1},onClose:function(dateText,inst){datepicker_active=0;if(_f.cur_grid_cell)
-_f.cur_grid_cell.grid.cell_deselect();}});var me=this;me.input.onchange=function(){if(this.value==null)this.value='';if(!this.not_in_form)
-me.set(dateutil.user_to_str(me.input.value));me.run_trigger();}
-me.input.set_input=function(val){if(val==null)val='';else val=dateutil.str_to_user(val);me.input.value=val;}
-me.get_value=function(){if(me.input.value)
-return dateutil.user_to_str(me.input.value);}}
-DateField.prototype.set_disp=function(val){var v=dateutil.str_to_user(val);if(v==null)v='';this.set_disp_html(v);}
-DateField.prototype.validate=function(v){if(!v)return;var me=this;this.clear=function(){msgprint("Date must be in format "+this.user_fmt);me.input.set_input('');return'';}
-var t=v.split('-');if(t.length!=3){return this.clear();}
-else if(cint(t[1])>12||cint(t[1])<1){return this.clear();}
-else if(cint(t[2])>31||cint(t[2])<1){return this.clear();}
-return v;};function LinkField(){}LinkField.prototype=new Field();LinkField.prototype.make_input=function(){var me=this;if(me.df.no_buttons){this.txt=$a(this.input_area,'input');this.input=this.txt;}else{makeinput_popup(this,'icon-search','icon-play','icon-plus');me.setup_buttons();me.onrefresh=function(){if(me.can_create)
-$(me.btn2).css('display','inline-block');else $dh(me.btn2);}}
-me.txt.field_object=this;me.input.set_input=function(val){if(val==undefined)val='';me.txt.value=val;}
-me.get_value=function(){return me.txt.value;}
-$(me.txt).autocomplete({source:function(request,response){wn.call({method:'webnotes.widgets.search.search_link',args:{'txt':request.term,'dt':me.df.options,'query':me.get_custom_query()},callback:function(r){response(r.results);},});},select:function(event,ui){me.set_input_value(ui.item.value);}}).data('autocomplete')._renderItem=function(ul,item){return $('<li></li>').data('item.autocomplete',item).append(repl('<a>%(label)s<br><span style="font-size:10px">%(info)s</span></a>',item)).appendTo(ul);};$(this.txt).change(function(){var val=$(this).val();me.set_input_value_executed=false;if(!val){if(selector&&selector.display)
-return;me.set_input_value('');}else{setTimeout(function(){if(!me.set_input_value_executed){me.set_input_value(val);}},1000);}})}
-LinkField.prototype.get_custom_query=function(){this.set_get_query();if(this.get_query){if(cur_frm)
-var doc=locals[cur_frm.doctype][cur_frm.docname];return this.get_query(doc,this.doctype,this.docname);}}
-LinkField.prototype.setup_buttons=function(){var me=this;me.btn.onclick=function(){selector.set(me,me.df.options,me.df.label);selector.show(me.txt);}
-if(me.btn1)me.btn1.onclick=function(){if(me.txt.value&&me.df.options){loaddoc(me.df.options,me.txt.value);}}
-me.can_create=0;if((!me.not_in_form)&&in_list(profile.can_create,me.df.options)){me.can_create=1;me.btn2.onclick=function(){var on_save_callback=function(new_rec){if(new_rec){var d=_f.calling_doc_stack.pop();locals[d[0]][d[1]][me.df.fieldname]=new_rec;me.refresh();if(me.grid)me.grid.refresh();me.run_trigger();}}
-_f.calling_doc_stack.push([me.doctype,me.docname]);new_doc(me.df.options);}}else{$dh(me.btn2);$y($td(me.tab,0,2),{width:'0px'});}}
-LinkField.prototype.set_input_value=function(val){var me=this;me.set_input_value_executed=true;var from_selector=false;if(selector&&selector.display)from_selector=true;me.refresh_label_icon();if(me.not_in_form){$(this.txt).val(val);return;}
-if(cur_frm){if(val==locals[me.doctype][me.docname][me.df.fieldname]){me.run_trigger();return;}}
-me.set(val);if(_f.cur_grid_cell)
-_f.cur_grid_cell.grid.cell_deselect();if(locals[me.doctype][me.docname][me.df.fieldname]&&!val){me.run_trigger();return;}
-if(val){me.validate_link(val,from_selector);}}
-LinkField.prototype.validate_link=function(val,from_selector){var me=this;var fetch='';if(cur_frm.fetch_dict[me.df.fieldname])
-fetch=cur_frm.fetch_dict[me.df.fieldname].columns.join(', ');$c('webnotes.widgets.form.utils.validate_link',{'value':val,'options':me.df.options,'fetch':fetch},function(r,rt){if(r.message=='Ok'){if($(me.txt).val()!=val){if((me.grid&&!from_selector)||(!me.grid)){$(me.txt).val(val);}}
-if(r.fetch_values)
-me.set_fetch_values(r.fetch_values);me.run_trigger();}else{var astr='';if(in_list(profile.can_create,me.df.options))astr=repl('<br><br><span class="link_type" onclick="newdoc(\'%(dt)s\')">Click here</span> to create a new %(dtl)s',{dt:me.df.options,dtl:get_doctype_label(me.df.options)})
-msgprint(repl('error:<b>%(val)s</b> is not a valid %(dt)s.<br><br>You must first create a new %(dt)s <b>%(val)s</b> and then select its value. To find an existing %(dt)s, click on the magnifying glass next to the field.%(add)s',{val:me.txt.value,dt:get_doctype_label(me.df.options),add:astr}));me.txt.value='';me.set('');}});}
-LinkField.prototype.set_fetch_values=function(fetch_values){var fl=cur_frm.fetch_dict[this.df.fieldname].fields;var changed_fields=[];for(var i=0;i<fl.length;i++){if(locals[this.doctype][this.docname][fl[i]]!=fetch_values[i]){locals[this.doctype][this.docname][fl[i]]=fetch_values[i];if(!this.grid){refresh_field(fl[i]);changed_fields.push(fl[i]);}}}
-for(i=0;i<changed_fields.length;i++){if(cur_frm.fields_dict[changed_fields[i]])
-cur_frm.fields_dict[changed_fields[i]].run_trigger();}
-if(this.grid)this.grid.refresh();}
-LinkField.prototype.set_get_query=function(){if(this.get_query)return;if(this.grid){var f=this.grid.get_field(this.df.fieldname);if(f.get_query)this.get_query=f.get_query;}}
-LinkField.prototype.set_disp=function(val){var t=null;if(val)t="<a href=\'javascript:loaddoc(\""+this.df.options+"\", \""+val+"\")\'>"+val+"</a>";this.set_disp_html(t);}
-function IntField(){}IntField.prototype=new DataField();IntField.prototype.validate=function(v){if(isNaN(parseInt(v)))return null;return cint(v);};IntField.prototype.format_input=function(){if(this.input.value==null)this.input.value='';}
-function FloatField(){}FloatField.prototype=new DataField();FloatField.prototype.validate=function(v){var v=parseFloat(v);if(isNaN(v))
-return null;return v;};FloatField.prototype.format_input=function(){if(this.input.value==null)this.input.value='';}
-function CurrencyField(){}CurrencyField.prototype=new DataField();CurrencyField.prototype.format_input=function(){var v=fmt_money(this.input.value);if(this.not_in_form){if(!flt(this.input.value))v='';}
-this.input.value=v;}
-CurrencyField.prototype.validate=function(v){if(v==null||v=='')
-return 0;return flt(v,2);}
-CurrencyField.prototype.set_disp=function(val){var v=fmt_money(val);this.set_disp_html(v);}
-CurrencyField.prototype.onmake_input=function(){if(!this.input)return;this.input.onfocus=function(){if(flt(this.value)==0)this.select();}}
-function CheckField(){}CheckField.prototype=new Field();CheckField.prototype.validate=function(v){var v=parseInt(v);if(isNaN(v))return 0;return v;};CheckField.prototype.onmake=function(){this.checkimg=$a(this.disp_area,'div');var img=$a(this.checkimg,'img');img.src='images/lib/ui/tick.gif';$dh(this.checkimg);}
-CheckField.prototype.make_input=function(){var me=this;this.input=$a_input(this.input_area,'checkbox');$y(this.input,{width:"16px",border:'0px',margin:'2px'});$(this.input).click(function(){me.set(this.checked?1:0);me.run_trigger();})
-this.input.set_input=function(v){v=parseInt(v);if(isNaN(v))v=0;if(v)me.input.checked=true;else me.input.checked=false;}
-this.get_value=function(){return this.input.checked?1:0;}}
-CheckField.prototype.set_disp=function(val){if(val){$ds(this.checkimg);}
-else{$dh(this.checkimg);}}
-function TextField(){}TextField.prototype=new Field();TextField.prototype.set_disp=function(val){this.disp_area.innerHTML=replace_newlines(val);}
-TextField.prototype.make_input=function(){var me=this;if(this.in_grid)
-return;this.input=$a(this.input_area,'textarea');if(this.df.fieldtype=='Small Text')
-this.input.style.height="80px";this.input.set_input=function(v){me.input.value=v;}
-this.input.onchange=function(){me.set(me.input.value);me.run_trigger();}
-this.get_value=function(){return this.input.value;}}
-var text_dialog;function make_text_dialog(){var d=new Dialog(520,410,'Edit Text');d.make_body([['Text','Enter Text'],['HTML','Description'],['Button','Update']]);d.widgets['Update'].onclick=function(){var t=this.dialog;t.field.set(t.widgets['Enter Text'].value);t.hide();}
-d.onshow=function(){this.widgets['Enter Text'].style.height='300px';var v=_f.get_value(this.field.doctype,this.field.docname,this.field.df.fieldname);this.widgets['Enter Text'].value=v==null?'':v;this.widgets['Enter Text'].focus();this.widgets['Description'].innerHTML=''
-if(this.field.df.description)
-$a(this.widgets['Description'],'div','help small','',this.field.df.description);}
-d.onhide=function(){if(_f.cur_grid_cell)
-_f.cur_grid_cell.grid.cell_deselect();}
-text_dialog=d;}
-TextField.prototype.table_refresh=function(){if(!this.text_dialog)
-make_text_dialog();text_dialog.set_title('Enter text for "'+this.df.label+'"');text_dialog.field=this;text_dialog.show();}
-function SelectField(){}SelectField.prototype=new Field();SelectField.prototype.make_input=function(){var me=this;var opt=[];if(this.in_filter&&(!this.df.single_select)){this.input=$a(this.input_area,'select');this.input.multiple=true;this.input.style.height='4em';this.input.lab=$a(this.input_area,'div',{fontSize:'9px',color:'#999'});this.input.lab.innerHTML='(Use Ctrl+Click to select multiple or de-select)'}else{this.input=$a(this.input_area,'select');this.input.onchange=function(){if(me.validate)
-me.validate();me.set(sel_val(this));me.run_trigger();}
-if(this.df.options=='attach_files:'){this.file_attach=true;}}
-this.set_as_single=function(){var i=this.input;i.multiple=false;i.style.height=null;if(i.lab)$dh(i.lab)}
-this.refresh_options=function(options){if(options)
-me.df.options=options;if(this.file_attach)
-this.set_attach_options();me.options_list=me.df.options?me.df.options.split('\n'):[''];empty_select(this.input);if(me.in_filter&&me.options_list[0]!=''){me.options_list=add_lists([''],me.options_list);}
-add_sel_options(this.input,me.options_list);}
-this.onrefresh=function(){this.refresh_options();if(this.not_in_form){this.input.value='';return;}
-if(_f.get_value)
-var v=_f.get_value(this.doctype,this.docname,this.df.fieldname);else{if(this.options_list&&this.options_list.length)
-var v=this.options_list[0];else
-var v=null;}
-this.input.set_input(v);}
-this.input.set_input=function(v){if(!v){if(!me.input.multiple){if(me.docname){if(me.options_list&&me.options_list.length){me.set(me.options_list[0]);me.input.value=me.options_list[0];}else{me.input.value='';}}}}else{if(me.options_list){if(me.input.multiple){for(var i=0;i<me.input.options.length;i++){me.input.options[i].selected=0;if(me.input.options[i].value&&inList(typeof(v)=='string'?v.split(","):v,me.input.options[i].value))
-me.input.options[i].selected=1;}}else if(in_list(me.options_list,v)){me.input.value=v;}}}}
-this.get_value=function(){if(me.input.multiple){var l=[];for(var i=0;i<me.input.options.length;i++){if(me.input.options[i].selected)l[l.length]=me.input.options[i].value;}
-return l;}else{if(me.input.options){var val=sel_val(me.input);if(!val&&!me.input.selectedIndex)
-val=me.input.options[0].value;return val;}
-return me.input.value;}}
-this.set_attach_options=function(){if(!cur_frm)return;var fl=cur_frm.doc.file_list;if(fl){this.df.options='';var fl=fl.split('\n');for(var i in fl){this.df.options+='\n'+fl[i].split(',')[1];}}else{this.df.options=''}}
-this.refresh();}
-function TimeField(){}TimeField.prototype=new Field();TimeField.prototype.get_time=function(){return time_to_hhmm(sel_val(this.input_hr),sel_val(this.input_mn),sel_val(this.input_am));}
-TimeField.prototype.set_time=function(v){ret=time_to_ampm(v);this.input_hr.inp.value=ret[0];this.input_mn.inp.value=ret[1];this.input_am.inp.value=ret[2];}
-TimeField.prototype.set_style_mandatory=function(){}
-TimeField.prototype.make_input=function(){var me=this;this.input=$a(this.input_area,'div','time_field');var t=make_table(this.input,1,3,'200px');var opt_hr=['1','2','3','4','5','6','7','8','9','10','11','12'];var opt_mn=['00','05','10','15','20','25','30','35','40','45','50','55'];var opt_am=['AM','PM'];this.input_hr=new SelectWidget($td(t,0,0),opt_hr,'50px');this.input_mn=new SelectWidget($td(t,0,1),opt_mn,'50px');this.input_am=new SelectWidget($td(t,0,2),opt_am,'50px');var onchange_fn=function(){me.set(me.get_time());me.run_trigger();}
-this.input_hr.inp.onchange=onchange_fn;this.input_mn.inp.onchange=onchange_fn;this.input_am.inp.onchange=onchange_fn;this.onrefresh=function(){var v=_f.get_value?_f.get_value(me.doctype,me.docname,me.df.fieldname):null;me.set_time(v);if(!v)
-me.set(me.get_time());}
-this.input.set_input=function(v){if(v==null)v='';me.set_time(v);}
-this.get_value=function(){return this.get_time();}
-this.refresh();}
-TimeField.prototype.set_disp=function(v){var t=time_to_ampm(v);var t=t[0]+':'+t[1]+' '+t[2];this.set_disp_html(t);}
-function makeinput_popup(me,iconsrc,iconsrc1,iconsrc2){var icon_style={cursor:'pointer',width:'16px',verticalAlign:'middle',marginBottom:'-3px'};me.input=$a(me.input_area,'div');if(!me.not_in_form)
-$y(me.input,{width:'80%'});me.input.set_width=function(w){$y(me.input,{width:(w-2)+'px'});}
-var tab=$a(me.input,'table');me.tab=tab;$y(tab,{width:'100%',borderCollapse:'collapse',tableLayout:'fixed'});var c0=tab.insertRow(0).insertCell(0);var c1=tab.rows[0].insertCell(1);$y(c1,{width:'20px'});me.txt=$a($a($a(c0,'div','',{paddingRight:'8px'}),'div'),'input','',{width:'100%'});me.btn=$a(c1,'i',iconsrc,icon_style)
-if(iconsrc1)
-me.btn.setAttribute('title','Search');else
-me.btn.setAttribute('title','Select Date');if(iconsrc1){var c2=tab.rows[0].insertCell(2);$y(c2,{width:'20px'});me.btn1=$a(c2,'i',iconsrc1,icon_style)
-me.btn1.setAttribute('title','Open Link');}
-if(iconsrc2){var c3=tab.rows[0].insertCell(3);$y(c3,{width:'20px'});me.btn2=$a(c3,'i',iconsrc2,icon_style)
-me.btn2.setAttribute('title','Create New');$dh(me.btn2);}
-me.txt.name=me.df.fieldname;me.setdisabled=function(tf){me.txt.disabled=tf;}}
-var tmpid=0;_f.ButtonField=function(){};_f.ButtonField.prototype=new Field();_f.ButtonField.prototype.with_label=0;_f.ButtonField.prototype.init=function(){this.prev_button=null;if(!this.frm)return;if(cur_frm&&cur_frm.fields[cur_frm.fields.length-1]&&cur_frm.fields[cur_frm.fields.length-1].df.fieldtype=='Button'){this.make_body=function(){this.prev_button=cur_frm.fields[cur_frm.fields.length-1];if(!this.prev_button.prev_button){this.prev_button.button_area=$a(this.prev_button.input_area,'span');}
-this.wrapper=this.prev_button.wrapper;this.input_area=this.prev_button.input_area;this.disp_area=this.prev_button.disp_area;this.button_area=$a(this.prev_button.input_area,'span');}}}
-_f.ButtonField.prototype.make_input=function(){var me=this;if(!this.prev_button){$y(this.input_area,{marginTop:'4px',marginBottom:'4px'});}
-if(!this.button_area)
-this.button_area=$a(this.input_area,'span','',{marginRight:'4px'});this.input=$btn(this.button_area,me.df.label,null,{fontWeight:'bold'},null,1)
-$(this.input).click(function(){if(me.not_in_form)return;if(cur_frm.cscript[me.df.fieldname]&&(!me.in_filter)){cur_frm.runclientscript(me.df.fieldname,me.doctype,me.docname);}else{cur_frm.runscript(me.df.options,me);}});}
-_f.ButtonField.prototype.hide=function(){$dh(this.button_area);};_f.ButtonField.prototype.show=function(){$ds(this.button_area);};_f.ButtonField.prototype.set=function(v){};_f.ButtonField.prototype.set_disp=function(val){}
-function make_field(docfield,doctype,parent,frm,in_grid,hide_label){switch(docfield.fieldtype.toLowerCase()){case'data':var f=new DataField();break;case'password':var f=new DataField();break;case'int':var f=new IntField();break;case'float':var f=new FloatField();break;case'currency':var f=new CurrencyField();break;case'read only':var f=new ReadOnlyField();break;case'link':var f=new LinkField();break;case'date':var f=new DateField();break;case'time':var f=new TimeField();break;case'html':var f=new HTMLField();break;case'check':var f=new CheckField();break;case'text':var f=new TextField();break;case'small text':var f=new TextField();break;case'select':var f=new SelectField();break;case'button':var f=new _f.ButtonField();break;case'code':var f=new _f.CodeField();break;case'text editor':var f=new _f.CodeField();break;case'table':var f=new _f.TableField();break;case'section break':var f=new _f.SectionBreak();break;case'column break':var f=new _f.ColumnBreak();break;case'image':var f=new _f.ImageField();break;}
-f.parent=parent;f.doctype=doctype;f.df=docfield;f.perm=frm?frm.perm:[[1,1,1]];if(_f)
-f.col_break_width=_f.cur_col_break_width;if(in_grid){f.in_grid=true;f.with_label=0;}
-if(hide_label){f.with_label=0;}
-if(frm){f.frm=frm;if(parent)
-f.layout_cell=parent.parentNode;}
-if(f.init)f.init();f.make_body();return f;}
-/*
- *	lib/js/legacy/widgets/form/form_dialog.js
- */
-_f.frm_dialog=null;_f.calling_doc_stack=[];_f.temp_access={};_f.FrmDialog=function(){var me=this;this.last_displayed=null;var d=new Dialog(640,null,'Edit Row');this.body=$a(d.body,'div','dialog_frm');d.done_btn_area=$a(d.body,'div','',{margin:'8px'});me.on_complete=function(){if(me.table_form){me.dialog.hide();}else{var callback=function(r){var dn=cur_frm.docname;if(!r.exc){me.dialog.hide();}
-if(me.on_save_callback)
-me.on_save_callback(dn);}
-cur_frm.save('Save',callback);}}
-d.onshow=function(){d.done_btn_area.innerHTML='';d.done_btn=$btn(d.done_btn_area,'Save',null,null,'green');d.done_btn.onclick=function(){me.on_complete()};if(me.table_form){d.set_title("Editing Row #"+(_f.cur_grid_ridx+1));d.done_btn.innerHTML='Done Editing';}else{d.set_title(cur_frm.doctype==cur_frm.doctype?(cur_frm.doctype):(cur_frm.doctype+': '+cur_frm.docname));d.done_btn.innerHTML='Save';}}
-d.onhide=function(){if(_f.cur_grid){_f.cur_grid.refresh_row(_f.cur_grid_ridx,me.dn);}
-if(wn.container.page.frm){cur_frm=wn.container.page.frm;}
-if(me.cur_frm.cscript.hide_dialog){me.cur_frm.cscript.hide_dialog();}
-$(me.cur_frm.page_layout.wrapper).toggle(false);}
-this.dialog=d;}
-_f.edit_record=function(dt,dn){if(!_f.frm_dialog){_f.frm_dialog=new _f.FrmDialog();}
-var d=_f.frm_dialog;wn.model.with_doctype(dt,function(){wn.model.with_doc(dt,dn,function(dn){if(!_f.frms[dt]){_f.frms[dt]=new _f.Frm(dt,d.body);}
-var f=_f.frms[dt];if(f.meta.istable){f.parent_doctype=cur_frm.doctype;f.parent_docname=cur_frm.docname;}
-d.cur_frm=f;d.dn=dn;d.table_form=f.meta.istable;f.refresh(dn);$(f.page_layout.wrapper).removeClass('layout-wrapper').removeClass('layout-wrapper-background').toggle(true);d.dialog.show();})})}
-/*
- *	lib/js/legacy/widgets/form/form_header.js
- */
-_f.FrmHeader=Class.extend({init:function(parent,frm){this.appframe=new wn.ui.AppFrame(parent)
-this.$w=this.appframe.$w;},refresh:function(){if(cur_frm.cscript.set_breadcrumbs){this.appframe.clear_breadcrumbs();cur_frm.cscript.set_breadcrumbs();}else{wn.views.breadcrumbs(this.appframe,cur_frm.meta.module,cur_frm.meta.name,cur_frm.docname);}
-this.refresh_labels();this.refresh_toolbar();},refresh_labels:function(){cur_frm.doc=get_local(cur_frm.doc.doctype,cur_frm.doc.name);var labinfo={0:['Saved','label-success'],1:['Submitted','label-info'],2:['Cancelled','label-important']}[cint(cur_frm.doc.docstatus)];if(labinfo[0]=='Saved'&&cur_frm.meta.is_submittable){labinfo[0]='Saved, to Submit';}
-if(cur_frm.doc.__unsaved||cur_frm.doc.__islocal){labinfo[0]='Not Saved';labinfo[1]='label-warning'}
-this.set_label(labinfo);if(cur_frm.doc.__unsaved&&cint(cur_frm.doc.docstatus)==1&&this.appframe.buttons['Update']){this.appframe.buttons['Update'].toggle(true);}},set_label:function(labinfo){this.$w.find('.label').remove();$(repl('<span class="label %(lab_class)s">\
-   %(lab_status)s</span>',{lab_status:labinfo[0],lab_class:labinfo[1]})).insertBefore(this.$w.find('.breadcrumb-area'))},refresh_toolbar:function(){if(cur_frm.meta.hide_toolbar){$('.appframe-toolbar').toggle(false);return;}
-this.appframe.clear_buttons();var p=cur_frm.get_doc_perms();if(cur_frm.meta.read_only_onload&&!cur_frm.doc.__islocal){if(!cur_frm.editable)
-this.appframe.add_button('Edit',function(){cur_frm.edit_doc();},'icon-pencil');else
-this.appframe.add_button('Print View',function(){cur_frm.is_editable[cur_frm.docname]=0;cur_frm.refresh();},'icon-print');}
-var docstatus=cint(cur_frm.doc.docstatus);if(docstatus==0&&p[WRITE]){this.appframe.add_button('Save',function(){cur_frm.save('Save');},'');this.appframe.buttons['Save'].addClass('btn-info');}
-if(docstatus==0&&p[SUBMIT]&&(!cur_frm.doc.__islocal))
-this.appframe.add_button('Submit',function(){cur_frm.savesubmit();},'icon-lock');if(docstatus==1&&p[SUBMIT]){this.appframe.add_button('Update',function(){cur_frm.saveupdate();},'');if(!cur_frm.doc.__unsaved)this.appframe.buttons['Update'].toggle(false);}
-if(docstatus==1&&p[CANCEL])
-this.appframe.add_button('Cancel',function(){cur_frm.savecancel()},'icon-remove');if(docstatus==2&&p[AMEND])
-this.appframe.add_button('Amend',function(){cur_frm.amend_doc()},'icon-pencil');if(cur_frm.meta.description){this.appframe.add_help_button(wn.markdown('## '+cur_frm.doctype+'\n\n'
-+cur_frm.meta.description));}},show:function(){},hide:function(){},hide_close:function(){this.$w.find('.close').toggle(false);}})
-/*
- *	lib/js/legacy/widgets/form/form.js
- */
-wn.provide('_f');_f.frms={};_f.Frm=function(doctype,parent,in_form){this.docname='';this.doctype=doctype;this.display=0;var me=this;this.is_editable={};this.opendocs={};this.sections=[];this.grids=[];this.cscript={};this.pformat={};this.fetch_dict={};this.parent=parent;this.tinymce_id_list=[];this.setup_meta(doctype);this.in_form=in_form?true:false;var me=this;$(document).bind('rename',function(event,dt,old_name,new_name){if(dt==me.doctype)
-me.rename_notify(dt,old_name,new_name)});}
-_f.Frm.prototype.check_doctype_conflict=function(docname){var me=this;if(this.doctype=='DocType'&&docname=='DocType'){msgprint('Allowing DocType, DocType. Be careful!')}else if(this.doctype=='DocType'){if(wn.views.formview[docname]||wn.pages['List/'+docname]){msgprint("Cannot open DocType when its instance is open")
-throw'doctype open conflict'}}else{if(wn.views.formview.DocType&&wn.views.formview.DocType.frm.opendocs[this.doctype]){msgprint("Cannot open instance when its DocType is open")
-throw'doctype open conflict'}}}
-_f.Frm.prototype.setup=function(){var me=this;this.fields=[];this.fields_dict={};this.wrapper=this.parent;this.setup_print_layout();this.saved_wrapper=$a(this.wrapper,'div');this.setup_std_layout();this.setup_client_script();this.setup_done=true;}
-_f.Frm.prototype.setup_print_layout=function(){this.print_wrapper=$a(this.wrapper,'div');this.print_head=$a(this.print_wrapper,'div');this.print_body=$a(this.print_wrapper,'div','layout_wrapper',{padding:'23px',minHeight:'800px'});var t=make_table(this.print_head,1,2,'100%',[],{padding:'6px'});this.view_btn_wrapper=$a($td(t,0,0),'span','green_buttons');this.view_btn=$btn(this.view_btn_wrapper,'View Details',function(){cur_frm.edit_doc()},{marginRight:'4px'},'green');this.print_btn=$btn($td(t,0,0),'Print',function(){cur_frm.print_doc()});$y($td(t,0,1),{textAlign:'right'});this.print_close_btn=$btn($td(t,0,1),'Close',function(){window.history.back();});}
-_f.Frm.prototype.onhide=function(){if(_f.cur_grid_cell)_f.cur_grid_cell.grid.cell_deselect();}
-_f.Frm.prototype.setup_std_layout=function(){this.page_layout=new wn.PageLayout({parent:this.wrapper,main_width:(this.meta.in_dialog&&!this.in_form)?'100%':'75%',sidebar_width:(this.meta.in_dialog&&!this.in_form)?'0%':'25%'})
-this.meta.section_style='Simple';this.layout=new Layout(this.page_layout.body,'100%');if(this.meta.in_dialog&&!this.in_form){$(this.page_layout.wrapper).removeClass('layout-wrapper-background');$(this.page_layout.main).removeClass('layout-main-section');$(this.page_layout.sidebar_area).toggle(false);}else{this.setup_sidebar();}
-this.setup_footer();if(!(this.meta.istable||user=='Guest'||(this.meta.in_dialog&&!this.in_form)))
-this.frm_head=new _f.FrmHeader(this.page_layout.head,this);this.setup_fields_std();}
-_f.Frm.prototype.setup_print=function(){var l=[]
-this.default_format='Standard';for(var key in locals['Print Format']){if(locals['Print Format'][key].doc_type==this.meta.name){l.push(locals['Print Format'][key].name);}}
-if(this.meta.default_print_format)
-this.default_format=this.meta.default_print_format;l.push('Standard');this.print_sel=$a(null,'select','',{width:'160px'});add_sel_options(this.print_sel,l);this.print_sel.value=this.default_format;}
-_f.Frm.prototype.print_doc=function(){if(this.doc.docstatus==2){msgprint("Cannot Print Cancelled Documents.");return;}
-_p.show_dialog();}
-_f.Frm.prototype.email_doc=function(){if(!_e.dialog)_e.make();_e.dialog.widgets['To'].value='';if(cur_frm.doc&&cur_frm.doc.contact_email){_e.dialog.widgets['To'].value=cur_frm.doc.contact_email;}
-sel=this.print_sel;var c=$td(_e.dialog.rows['Format'].tab,0,1);if(c.cur_sel){c.removeChild(c.cur_sel);c.cur_sel=null;}
-c.appendChild(this.print_sel);c.cur_sel=this.print_sel;_e.dialog.widgets['Send With Attachments'].checked=0;if(cur_frm.doc.file_list){$ds(_e.dialog.rows['Send With Attachments']);}else{$dh(_e.dialog.rows['Send With Attachments']);}
-_e.dialog.widgets['Subject'].value=get_doctype_label(this.meta.name)+': '+this.docname;_e.dialog.show();}
-_f.Frm.prototype.rename_notify=function(dt,old,name){if(this.meta.in_dialog&&!this.in_form)
-return;if(this.docname==old)
-this.docname=name;else
-return;this.is_editable[name]=this.is_editable[old];delete this.is_editable[old];if(this&&this.opendocs[old]){local_dt[dt][name]=local_dt[dt][old];local_dt[dt][old]=null;}
-delete this.opendocs[old];this.opendocs[name]=true;wn.re_route[window.location.hash]='#Form/'+encodeURIComponent(this.doctype)+'/'+encodeURIComponent(name);wn.set_route('Form',this.doctype,name);}
-_f.Frm.prototype.setup_meta=function(doctype){this.meta=get_local('DocType',this.doctype);this.perm=get_perm(this.doctype);if(this.meta.istable){this.meta.in_dialog=1}
-this.setup_print();}
-_f.Frm.prototype.setup_sidebar=function(){this.sidebar=new wn.widgets.form.sidebar.Sidebar(this);}
-_f.Frm.prototype.setup_footer=function(){var me=this;var f=this.page_layout.footer;f.save_area=$a(this.page_layout.footer,'div','',{display:'none',marginTop:'11px'});f.help_area=$a(this.page_layout.footer,'div');var b=$btn(f.save_area,'Save',function(){cur_frm.save('Save');},{marginLeft:'0px'},'green');f.show_save=function(){$ds(me.page_layout.footer.save_area);}
-f.hide_save=function(){$dh(me.page_layout.footer.save_area);}}
-_f.Frm.prototype.set_intro=function(txt){if(!this.intro_area){this.intro_area=$('<div class="help-box form-intro-area">').insertBefore(this.page_layout.body.firstChild);}
-if(txt){if(txt.search(/<p>/)==-1)txt='<p>'+txt+'</p>';this.intro_area.html(txt);}else{this.intro_area.remove();this.intro_area=null;}}
-_f.Frm.prototype.set_footnote=function(txt){if(!this.footnote_area){this.footnote_area=$('<div class="help-box form-intro-area">').insertAfter(this.page_layout.body.lastChild);}
-if(txt){if(txt.search(/<p>/)==-1)txt='<p>'+txt+'</p>';this.footnote_area.html(txt);}else{this.footnote_area.remove();this.footnote_area=null;}}
-_f.Frm.prototype.setup_fields_std=function(){var fl=wn.meta.docfield_list[this.doctype];fl.sort(function(a,b){return a.idx-b.idx});if(fl[0]&&fl[0].fieldtype!="Section Break"||get_url_arg('embed')){this.layout.addrow();if(fl[0].fieldtype!="Column Break"){var c=this.layout.addcell();$y(c.wrapper,{padding:'8px'});}}
-var sec;for(var i=0;i<fl.length;i++){var f=fl[i];if(f.fieldtype=='Section Break'&&fl[i+1]&&fl[i+1].fieldtype=='Section Break')
-continue;var fn=f.fieldname?f.fieldname:f.label;var fld=make_field(f,this.doctype,this.layout.cur_cell,this);this.fields[this.fields.length]=fld;this.fields_dict[fn]=fld;if(sec&&['Section Break','Column Break'].indexOf(f.fieldtype)==-1){fld.parent_section=sec;sec.fields.push(fld);}
-if(f.fieldtype=='Section Break'){sec=fld;this.sections.push(fld);}
-if((f.fieldtype=='Section Break')&&(fl[i+1])&&(fl[i+1].fieldtype!='Column Break')){var c=this.layout.addcell();$y(c.wrapper,{padding:'8px'});}}}
-_f.Frm.prototype.add_custom_button=function(label,fn,icon){this.frm_head.appframe.add_button(label,fn,icon);}
-_f.Frm.prototype.clear_custom_buttons=function(){this.frm_head.refresh_toolbar()}
-_f.Frm.prototype.add_fetch=function(link_field,src_field,tar_field){if(!this.fetch_dict[link_field]){this.fetch_dict[link_field]={'columns':[],'fields':[]}}
-this.fetch_dict[link_field].columns.push(src_field);this.fetch_dict[link_field].fields.push(tar_field);}
-_f.Frm.prototype.setup_client_script=function(){if(this.meta.client_script_core||this.meta.client_script||this.meta.__js){this.runclientscript('setup',this.doctype,this.docname);}}
-_f.Frm.prototype.refresh_print_layout=function(){$ds(this.print_wrapper);$dh(this.page_layout.wrapper);var me=this;var print_callback=function(print_html){me.print_body.innerHTML=print_html;}
-if(cur_frm.doc.select_print_heading)
-cur_frm.set_print_heading(cur_frm.doc.select_print_heading)
-if(user!='Guest'){$di(this.view_btn_wrapper);if(cur_frm.doc.__archived){$dh(this.view_btn_wrapper);}}else{$dh(this.view_btn_wrapper);$dh(this.print_close_btn);}
-_p.build(this.default_format,print_callback,null,1);}
-_f.Frm.prototype.show_the_frm=function(){if(this.meta.in_dialog&&!this.parent.dialog.display){if(!this.meta.istable)
-this.parent.table_form=false;this.parent.dialog.show();}}
-_f.Frm.prototype.set_print_heading=function(txt){this.pformat[cur_frm.docname]=txt;}
-_f.Frm.prototype.defocus_rest=function(){if(_f.cur_grid_cell)_f.cur_grid_cell.grid.cell_deselect();}
-_f.Frm.prototype.get_doc_perms=function(){var p=[0,0,0,0,0,0];for(var i=0;i<this.perm.length;i++){if(this.perm[i]){if(this.perm[i][READ])p[READ]=1;if(this.perm[i][WRITE])p[WRITE]=1;if(this.perm[i][SUBMIT])p[SUBMIT]=1;if(this.perm[i][CANCEL])p[CANCEL]=1;if(this.perm[i][AMEND])p[AMEND]=1;}}
-return p;}
-_f.Frm.prototype.refresh_header=function(){if(!this.meta.in_dialog||this.in_form){set_title(this.meta.issingle?this.doctype:this.docname);}
-if(this.frm_head)this.frm_head.refresh();if(wn.ui.toolbar.recent)
-wn.ui.toolbar.recent.add(this.doctype,this.docname,1);}
-_f.Frm.prototype.check_doc_perm=function(){var dt=this.parent_doctype?this.parent_doctype:this.doctype;var dn=this.parent_docname?this.parent_docname:this.docname;this.perm=get_perm(dt,dn);this.orig_perm=get_perm(dt,dn,1);if(!this.perm[0][READ]){if(user=='Guest'){if(_f.temp_access[dt]&&_f.temp_access[dt][dn]){this.perm=[[1,0,0]]
-return 1;}}
-window.history.back();return 0;}
-return 1}
-_f.Frm.prototype.refresh=function(docname){if(docname){if(this.docname!=docname&&(!this.meta.in_dialog||this.in_form)&&!this.meta.istable)
-scroll(0,0);this.docname=docname;}
-if(!this.meta.istable){cur_frm=this;this.parent.cur_frm=this;}
-if(this.docname){if(!this.check_doc_perm())return;if(!this.opendocs[this.docname]){this.check_doctype_conflict(this.docname);}
-this.doc=get_local(this.doctype,this.docname);if(!this.setup_done)this.setup();this.runclientscript('set_perm',this.doctype,this.docname);cur_frm.cscript.is_onload=false;if(!this.opendocs[this.docname]){cur_frm.cscript.is_onload=true;this.setnewdoc(this.docname);}
-if(this.doc.__islocal)
-this.is_editable[this.docname]=1;this.editable=this.is_editable[this.docname];if(!this.doc.__archived&&(this.editable||(!this.editable&&this.meta.istable))){if(this.print_wrapper){$dh(this.print_wrapper);$ds(this.page_layout.wrapper);}
-if(!this.meta.istable){this.refresh_header();this.sidebar&&this.sidebar.refresh();}
-this.runclientscript('refresh');$(document).trigger('form_refresh');this.refresh_fields();this.refresh_dependency();this.refresh_footer();if(this.layout)this.layout.show();if(cur_frm.cscript.is_onload){this.runclientscript('onload_post_render',this.doctype,this.docname);}
-if(this.doc.docstatus==0){$(this.wrapper).find('.form-layout-row :input:first').focus();}}else{this.refresh_header();if(this.print_wrapper){this.refresh_print_layout();}
-this.runclientscript('edit_status_changed');}
-$(cur_frm.wrapper).trigger('render_complete');}}
-_f.Frm.prototype.refresh_footer=function(){var f=this.page_layout.footer;if(f.save_area){if(this.editable&&(!this.meta.in_dialog||this.in_form)&&this.doc.docstatus==0&&!this.meta.istable&&this.get_doc_perms()[WRITE]&&(this.fields&&this.fields.length>7)){f.show_save();}else{f.hide_save();}}}
-_f.Frm.prototype.refresh_field=function(fname){cur_frm.fields_dict[fname]&&cur_frm.fields_dict[fname].refresh&&cur_frm.fields_dict[fname].refresh();}
-_f.Frm.prototype.refresh_fields=function(){for(var i=0;i<this.fields.length;i++){var f=this.fields[i];f.perm=this.perm;f.docname=this.docname;var fn=f.df.fieldname||f.df.label;if(fn)
-f.df=wn.meta.get_docfield(this.doctype,fn,this.docname);if(f.df.fieldtype!='Section Break'&&f.refresh){f.refresh();}}
-$.each(this.sections,function(i,f){f.refresh(true);})
-this.cleanup_refresh(this);}
-_f.Frm.prototype.cleanup_refresh=function(){var me=this;if(me.fields_dict['amended_from']){if(me.doc.amended_from){unhide_field('amended_from');unhide_field('amendment_date');}else{hide_field('amended_from');hide_field('amendment_date');}}
-if(me.fields_dict['trash_reason']){if(me.doc.trash_reason&&me.doc.docstatus==2){unhide_field('trash_reason');}else{hide_field('trash_reason');}}
-if(me.meta.autoname&&me.meta.autoname.substr(0,6)=='field:'&&!me.doc.__islocal){var fn=me.meta.autoname.substr(6);cur_frm.toggle_display(fn,false);}}
-_f.Frm.prototype.refresh_dependency=function(){var me=this;var doc=locals[this.doctype][this.docname];var has_dep=false;for(fkey in me.fields){var f=me.fields[fkey];f.dependencies_clear=true;if(f.df.depends_on){has_dep=true;}}
-if(!has_dep)return;for(var i=me.fields.length-1;i>=0;i--){var f=me.fields[i];f.guardian_has_value=true;if(f.df.depends_on){var v=doc[f.df.depends_on];if(f.df.depends_on.substr(0,5)=='eval:'){f.guardian_has_value=eval(f.df.depends_on.substr(5));}else if(f.df.depends_on.substr(0,3)=='fn:'){f.guardian_has_value=me.runclientscript(f.df.depends_on.substr(3),me.doctype,me.docname);}else{if(v||(v==0&&!v.substr)){}else{f.guardian_has_value=false;}}
-if(f.guardian_has_value){f.df.hidden=0;f.refresh()}else{f.df.hidden=1;f.refresh()}}}}
-_f.Frm.prototype.setnewdoc=function(docname){if(this.opendocs[docname]){this.docname=docname;return;}
-Meta.make_local_dt(this.doctype,docname);this.docname=docname;var me=this;var viewname=docname;if(this.meta.issingle)viewname=this.doctype;this.runclientscript('onload',this.doctype,this.docname);this.is_editable[docname]=1;if(this.meta.read_only_onload)this.is_editable[docname]=0;this.opendocs[docname]=true;}
-_f.Frm.prototype.edit_doc=function(){this.is_editable[this.docname]=true;this.refresh();}
-_f.Frm.prototype.show_doc=function(dn){this.refresh(dn);}
-var validated;_f.Frm.prototype.save=function(save_action,call_back){if(!save_action)save_action='Save';var me=this;if(this.savingflag){msgprint("Document is currently saving....");return;}
-if(save_action=='Submit'){locals[this.doctype][this.docname].submitted_on=dateutil.full_str();locals[this.doctype][this.docname].submitted_by=user;}
-if(save_action=='Trash'){var reason=prompt('Reason for trash (mandatory)','');if(!strip(reason)){msgprint('Reason is mandatory, not trashed');return;}
-locals[this.doctype][this.docname].trash_reason=reason;}
-if(save_action=='Cancel'){var reason=prompt('Reason for cancellation (mandatory)','');if(!strip(reason)){msgprint('Reason is mandatory, not cancelled');return;}
-locals[this.doctype][this.docname].cancel_reason=reason;locals[this.doctype][this.docname].cancelled_on=dateutil.full_str();locals[this.doctype][this.docname].cancelled_by=user;}else if(save_action=='Update'){}else{validated=true;if(this.cscript.validate)
-this.runclientscript('validate');if(!validated){this.savingflag=false;return'Error';}}
-var ret_fn=function(r){me.savingflag=false;if(!me.meta.istable&&r){me.refresh(r.docname);}
-if(call_back){call_back(r);}}
-var me=this;var ret_fn_err=function(r){var doc=locals[me.doctype][me.docname];me.savingflag=false;ret_fn(r);}
-this.savingflag=true;if(this.docname&&validated){scroll(0,0);return this.savedoc(save_action,ret_fn,ret_fn_err);}}
-_f.Frm.prototype.runscript=function(scriptname,callingfield,onrefresh){var me=this;if(this.docname){var doclist=compress_doclist(make_doclist(this.doctype,this.docname));if(callingfield)
-$(callingfield.input).set_working();$c('runserverobj',{'docs':doclist,'method':scriptname},function(r,rtxt){if(onrefresh)
-onrefresh(r,rtxt);me.refresh_fields();me.refresh_dependency();if(callingfield)
-$(callingfield.input).done_working();});}}
-_f.Frm.prototype.runclientscript=function(caller,cdt,cdn){if(!cdt)cdt=this.doctype;if(!cdn)cdn=this.docname;var ret=null;var doc=locals[cur_frm.doc.doctype][cur_frm.doc.name];try{if(this.cscript[caller])
-ret=this.cscript[caller](doc,cdt,cdn);if(this.cscript['custom_'+caller])
-ret+=this.cscript['custom_'+caller](doc,cdt,cdn);}catch(e){console.log(e);}
-if(caller&&caller.toLowerCase()=='setup'){var doctype=get_local('DocType',this.doctype);var cs=doctype.__js||(doctype.client_script_core+doctype.client_script);if(cs){try{var tmp=eval(cs);}catch(e){console.log(e);}}
-if(doctype.__css)set_style(doctype.__css)
-if(doctype.client_string){this.cstring={};var elist=doctype.client_string.split('---');for(var i=1;i<elist.length;i=i+2){this.cstring[strip(elist[i])]=elist[i+1];}}}
-return ret;}
-_f.Frm.prototype.copy_doc=function(onload,from_amend){if(!this.perm[0][CREATE]){msgprint('You are not allowed to create '+this.meta.name);return;}
-var dn=this.docname;var newdoc=LocalDB.copy(this.doctype,dn,from_amend);if(this.meta.allow_attach&&newdoc.file_list&&!from_amend)
-newdoc.file_list=null;var dl=make_doclist(this.doctype,dn);var tf_dict={};for(var d in dl){d1=dl[d];if(d1.parentfield&&!tf_dict[d1.parentfield]){tf_dict[d1.parentfield]=wn.meta.get_docfield(d1.parenttype,d1.parentfield);}
-if(d1.parent==dn&&cint(tf_dict[d1.parentfield].no_copy)!=1){var ch=LocalDB.copy(d1.doctype,d1.name,from_amend);ch.parent=newdoc.name;ch.docstatus=0;ch.owner=user;ch.creation='';ch.modified_by=user;ch.modified='';}}
-newdoc.__islocal=1;newdoc.docstatus=0;newdoc.owner=user;newdoc.creation='';newdoc.modified_by=user;newdoc.modified='';if(onload)onload(newdoc);loaddoc(newdoc.doctype,newdoc.name);}
-_f.Frm.prototype.reload_doc=function(){this.check_doctype_conflict(this.docname);var me=this;var ret_fn=function(r,rtxt){me.runclientscript('setup',me.doctype,me.docname);me.refresh();}
-if(me.doc.__islocal){$c('webnotes.widgets.form.load.getdoctype',{'doctype':me.doctype},ret_fn,null,null,'Refreshing '+me.doctype+'...');}else{$c('webnotes.widgets.form.load.getdoc',{'name':me.docname,'doctype':me.doctype,'getdoctype':1,'user':user},ret_fn,null,null,'Refreshing '+me.docname+'...');}}
-_f.Frm.prototype.savedoc=function(save_action,onsave,onerr){save_doclist(this.doctype,this.docname,save_action,onsave,onerr);}
-_f.Frm.prototype.saveupdate=function(){this.save('Update');}
-_f.Frm.prototype.savesubmit=function(){var answer=confirm("Permanently Submit "+this.docname+"?");var me=this;if(answer){this.save('Submit',function(r){if(!r.exc&&me.cscript.on_submit){me.runclientscript('on_submit',me.doctype,me.docname);}});}}
-_f.Frm.prototype.savecancel=function(){var answer=confirm("Permanently Cancel "+this.docname+"?");if(answer)this.save('Cancel');}
-_f.Frm.prototype.savetrash=function(){var me=this;var answer=confirm("Permanently Delete "+this.docname+"? This action cannot be reversed");if(answer){$c('webnotes.model.delete_doc',{dt:this.doctype,dn:this.docname},function(r,rt){if(r.message=='okay'){LocalDB.delete_doc(me.doctype,me.docname);if(wn.ui.toolbar.recent)wn.ui.toolbar.recent.remove(me.doctype,me.docname);window.history.back();}})}}
-_f.Frm.prototype.amend_doc=function(){if(!this.fields_dict['amended_from']){alert('"amended_from" field must be present to do an amendment.');return;}
-var me=this;var fn=function(newdoc){newdoc.amended_from=me.docname;if(me.fields_dict&&me.fields_dict['amendment_date'])
-newdoc.amendment_date=dateutil.obj_to_str(new Date());}
-this.copy_doc(fn,1);}
-_f.get_value=function(dt,dn,fn){if(locals[dt]&&locals[dt][dn])
-return locals[dt][dn][fn];}
-_f.Frm.prototype.set_value_in_locals=function(dt,dn,fn,v){var d=locals[dt][dn];if(!d)return;var changed=d[fn]!=v;if(changed&&(d[fn]==null||v==null)&&(cstr(d[fn])==cstr(v)))
-changed=false;if(changed){d[fn]=v;if(d.parenttype)
-d.__unsaved=1;this.set_unsaved();}}
-_f.Frm.prototype.set_unsaved=function(){if(cur_frm.doc.__unsaved)return;cur_frm.doc.__unsaved=1;var frm_head=cur_frm.frm_head||wn.container.page.frm.frm_head;frm_head.refresh_labels();}
-_f.Frm.prototype.show_comments=function(){if(!cur_frm.comments){cur_frm.comments=new Dialog(540,400,'Comments');cur_frm.comments.comment_body=$a(cur_frm.comments.body,'div','dialog_frm');$y(cur_frm.comments.body,{backgroundColor:'#EEE'});cur_frm.comments.list=new CommentList(cur_frm.comments.comment_body);}
-cur_frm.comments.list.dt=cur_frm.doctype;cur_frm.comments.list.dn=cur_frm.docname;cur_frm.comments.show();cur_frm.comments.list.run();}
-_f.Frm.prototype.get_doc=function(){return locals[this.doctype][this.docname];}
-_f.Frm.prototype.get_doclist=function(){return make_doclist(this.doctype,this.docname);}
-_f.Frm.prototype.field_map=function(fnames,fn){if(typeof fnames=='string'){if(fnames=='*'){fnames=keys(this.fields_dict);}else{fnames=[fnames];}}
-$.each(fnames,function(i,f){var field=wn.meta.get_docfield(cur_frm.doctype,f,cur_frm.docname)
-if(field){fn(field);cur_frm.refresh_field(f);};})}
-_f.Frm.prototype.set_df_property=function(fieldname,property,value){var field=wn.meta.get_docfield(cur_frm.doctype,fieldname,cur_frm.docname)
-if(field){field[property]=value;cur_frm.refresh_field(fieldname);};}
-_f.Frm.prototype.toggle_enable=function(fnames,enable){cur_frm.field_map(fnames,function(field){field.disabled=enable?false:true;});}
-_f.Frm.prototype.toggle_reqd=function(fnames,mandatory){cur_frm.field_map(fnames,function(field){field.reqd=mandatory?true:false;});}
-_f.Frm.prototype.toggle_display=function(fnames,show){cur_frm.field_map(fnames,function(field){field.hidden=show?false:true;});}
-_f.Frm.prototype.call_server=function(method,args,callback){$c_obj(cur_frm.get_doclist(),method,args,callback);}
-_f.Frm.prototype.set_value=function(field,value){cur_frm.get_doc()[field]=value;cur_frm.fields_dict[field].refresh();}
-/*
- *	lib/js/legacy/widgets/form/form_fields.js
- */
-_f.ColumnBreak=function(){this.set_input=function(){};}
-_f.ColumnBreak.prototype.make_body=function(){this.cell=this.frm.layout.addcell(this.df.width);$y(this.cell.wrapper,{padding:'8px'});_f.cur_col_break_width=this.df.width;var fn=this.df.fieldname?this.df.fieldname:this.df.label;if(this.df&&this.df.label){this.label=$a(this.cell.wrapper,'h4','','',this.df.label);}}
-_f.ColumnBreak.prototype.refresh=function(layout){var hidden=0;if((!this.perm[this.df.permlevel])||(!this.perm[this.df.permlevel][READ])||this.df.hidden){hidden=1;}
-if(this.set_hidden!=hidden){if(hidden)
-this.cell.hide();else
-this.cell.show();this.set_hidden=hidden;}}
-_f.SectionBreak=function(){this.fields=[];this.set_input=function(){};this.make_row=function(){this.row=this.df.label?this.frm.layout.addrow():this.frm.layout.addsubrow();}}
-_f.SectionBreak.prototype.make_body=function(){var me=this;this.make_row();if(this.df.label){if(!this.df.description)
-this.df.description='';$(this.row.main_head).html(repl('<div class="form-section-head">\
-    <h3 class="head">%(label)s</h3>\
-    <div class="help small" \
-     style="margin-top: 4px; margin-bottom: 8px;">%(description)s</div>\
-   </div>',this.df));}else{$(this.wrapper).html('<div class="form-section-head"></div>');}
-this.section_collapse=function(){$(me.row.main_head).find('.head').html('<i class="icon-chevron-right"></i> \
-    <a href="#" onclick="return false;">Show "'+me.df.label+'"</a>');$(me.row.main_body).toggle(false);}
-this.section_expand=function(no_animation){$(me.row.main_head).find('.head').html('<h3><i class="icon-chevron-down" style="vertical-align: middle; margin-bottom: 2px"></i> '
-+me.df.label+'</h3>');if(no_animation)
-$(me.row.main_body).toggle(true);else
-$(me.row.main_body).slideDown();}}
-_f.SectionBreak.prototype.has_data=function(){var me=this;for(var i in me.fields){var f=me.fields[i];var v=f.get_value?f.get_value():null;defaultval=f.df['default']||sys_defaults[f.fieldname]||user_defaults[f.fieldname];if(v&&v!=defaultval){return true;}
-if(f.df.reqd&&!v){return true;}
-if(f.df.fieldtype=='Table'){if(f.grid.get_children().length||f.df.reqd){return true;}}}
-return false;}
-_f.SectionBreak.prototype.refresh=function(from_form){var hidden=0;if((!this.perm[this.df.permlevel])||(!this.perm[this.df.permlevel][READ])||this.df.hidden){hidden=1;}
-if(hidden){if(this.row)this.row.hide();}else{if(this.row)this.row.show();}}
-_f.ImageField=function(){this.images={};}
-_f.ImageField.prototype=new Field();_f.ImageField.prototype.onmake=function(){this.no_img=$a(this.wrapper,'div','no_img');this.no_img.innerHTML="No Image";$dh(this.no_img);}
-_f.ImageField.prototype.get_image_src=function(doc){if(doc.file_list){file=doc.file_list.split(',');extn=file[0].split('.');extn=extn[extn.length-1].toLowerCase();var img_extn_list=['gif','jpg','bmp','jpeg','jp2','cgm','ief','jpm','jpx','png','tiff','jpe','tif'];if(in_list(img_extn_list,extn)){var src=wn.request.url+"?cmd=downloadfile&file_id="+file[1];}}else{var src="";}
-return src;}
-_f.ImageField.prototype.onrefresh=function(){var me=this;if(!this.images[this.docname])this.images[this.docname]=$a(this.wrapper,'img');else $di(this.images[this.docname]);var img=this.images[this.docname]
-for(var dn in this.images)if(dn!=this.docname)$dh(this.images[dn]);var doc=locals[this.frm.doctype][this.frm.docname];if(!this.df.options)var src=this.get_image_src(doc);else var src=wn.request.url+'?cmd=get_file&fname='+this.df.options+"&__account="+account_id+(__sid150?("&sid150="+__sid150):'');if(src){$dh(this.no_img);if(img.getAttribute('src')!=src)img.setAttribute('src',src);canvas=this.wrapper;canvas.img=this.images[this.docname];canvas.style.overflow="auto";$w(canvas,"100%");if(!this.col_break_width)this.col_break_width='100%';var allow_width=cint(1000*(cint(this.col_break_width)-10)/100);if((!img.naturalWidth)||cint(img.naturalWidth)>allow_width)
-$w(img,allow_width+'px');}else{$ds(this.no_img);}}
-_f.ImageField.prototype.set_disp=function(val){}
-_f.ImageField.prototype.set=function(val){}
-_f.TableField=function(){};_f.TableField.prototype=new Field();_f.TableField.prototype.with_label=0;_f.TableField.prototype.make_body=function(){if(this.perm[this.df.permlevel]&&this.perm[this.df.permlevel][READ]){this.grid=new _f.FormGrid(this);if(this.frm)this.frm.grids[this.frm.grids.length]=this;this.grid.make_buttons();if(this.df.description){this.desc_area=$a(this.parent,'div','help small',{marginBottom:'9px',marginTop:'0px'},this.df.description)}}}
-_f.TableField.prototype.refresh=function(){if(!this.grid)return;var st=this.get_status();if(!this.df['default'])
-this.df['default']='';this.grid.can_add_rows=false;this.grid.can_edit=false
-if(st=='Write'){if(cur_frm.editable&&this.perm[this.df.permlevel]&&this.perm[this.df.permlevel][WRITE]){this.grid.can_edit=true;if(this.df['default'].toLowerCase()!='no toolbar')
-this.grid.can_add_rows=true;}
-if(cur_frm.editable&&cur_frm.doc.docstatus>0){if(this.df.allow_on_submit&&cur_frm.doc.docstatus==1){this.grid.can_edit=true;if(this.df['default'].toLowerCase()=='no toolbar'){this.grid.can_add_rows=false;}else{this.grid.can_add_rows=true;}}else{this.grid.can_add_rows=false;this.grid.can_edit=false;}}
-if(this.df['default'].toLowerCase()=='no add rows'){this.grid.can_add_rows=false;}}
-if(st=='Write'){this.grid.show();}else if(st=='Read'){this.grid.show();}else{this.grid.hide();}
-this.grid.refresh();}
-_f.TableField.prototype.set=function(v){};_f.TableField.prototype.set_input=function(v){};_f.CodeField=function(){};_f.CodeField.prototype=new Field();_f.CodeField.prototype.make_input=function(){var me=this;this.label_span.innerHTML=this.df.label;if(this.df.fieldtype=='Text Editor'){this.input=$a(this.input_area,'text_area','',{fontSize:'12px'});this.myid=wn.dom.set_unique_id(this.input);$(me.input).tinymce({script_url:'js/lib/tiny_mce_33/tiny_mce.js',theme:"advanced",plugins:"style,inlinepopups,table,advimage",extended_valid_elements:"div[id|dir|class|align|style]",width:'100%',height:'360px',theme_advanced_buttons1:"bold,italic,underline,strikethrough,hr,|,justifyleft,justifycenter,justifyright,|,formatselect,fontselect,fontsizeselect,|,image",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,code,|,forecolor,backcolor,|,tablecontrols",theme_advanced_buttons3:"",theme_advanced_toolbar_location:"top",theme_advanced_toolbar_align:"left",content_css:"js/lib/tiny_mce_33/custom_content.css?q=1",oninit:function(){me.init_editor();}});this.input.set_input=function(v){if(me.editor){me.editor.setContent(v);}else{$(me.input).val(v);}}
-this.input.onchange=function(){me.set(me.editor.getContent());me.run_trigger();}
-this.get_value=function(){return me.editor.getContent();}}else{wn.require('js/lib/ace/ace.js');$(this.input_area).css('border','1px solid #aaa');this.pre=$a(this.input_area,'pre','',{position:'relative',height:'400px',width:'100%'});this.input={};this.myid=wn.dom.set_unique_id(this.pre);this.editor=ace.edit(this.myid);if(me.df.options=='Markdown'||me.df.options=='HTML'){wn.require('js/lib/ace/mode-html.js');var HTMLMode=require("ace/mode/html").Mode;me.editor.getSession().setMode(new HTMLMode());}
-else if(me.df.options=='Javascript'){wn.require('js/lib/ace/mode-javascript.js');var JavascriptMode=require("ace/mode/javascript").Mode;me.editor.getSession().setMode(new JavascriptMode());}
-else if(me.df.options=='Python'){wn.require('js/lib/ace/mode-python.js');var PythonMode=require("ace/mode/python").Mode;me.editor.getSession().setMode(new PythonMode());}
-this.input.set_input=function(v){me.setting_value=true;me.editor.getSession().setValue(v);me.setting_value=false;}
-this.get_value=function(){return me.editor.getSession().getValue();}
-$(cur_frm.wrapper).bind('render_complete',function(){me.editor.resize();me.editor.getSession().on('change',function(){if(me.setting_value)return;var val=me.get_value();if(locals[cur_frm.doctype][cur_frm.docname][me.df.fieldname]!=val){me.set(me.get_value());me.run_trigger();}})});}}
-_f.CodeField.prototype.init_editor=function(){var me=this;this.editor=tinymce.get(this.myid);this.editor.onKeyUp.add(function(ed,e){me.set(ed.getContent());});this.editor.onPaste.add(function(ed,e){me.set(ed.getContent());});this.editor.onSetContent.add(function(ed,e){me.set(ed.getContent());});var c=locals[cur_frm.doctype][cur_frm.docname][this.df.fieldname];if(cur_frm&&c){this.editor.setContent(c);}}
-_f.CodeField.prototype.set_disp=function(val){$y(this.disp_area,{width:'90%'})
-if(this.df.fieldtype=='Text Editor'){this.disp_area.innerHTML=val;}else{this.disp_area.innerHTML='<textarea class="code_text" readonly=1>'+val+'</textarea>';}}
-/*
- *	lib/js/legacy/widgets/form/grid.js
- */
-_f.cur_grid_cell=null;_f.Grid=function(parent){}
-_f.Grid.prototype.init=function(parent,row_height){var me=this;this.col_idx_by_name={}
-this.alt_row_bg='#F2F2FF';this.row_height=row_height;if(!row_height)this.row_height='26px';this.make_ui(parent);this.insert_column('','','Int','Sr','50px','',[1,0,0]);if(this.oninit)this.oninit();$(this.wrapper).bind('keydown',function(e){me.notify_keypress(e,e.which);})
-$(cur_frm.wrapper).bind('render_complete',function(){me.set_ht();});}
-_f.Grid.prototype.make_ui=function(parent){var ht=make_table($a(parent,'div'),1,2,'100%',['55%','45%']);this.main_title=$td(ht,0,0);this.main_title.className='columnHeading';$td(ht,0,1).style.textAlign='right';this.tbar_div=$a($td(ht,0,1),'div','grid_tbarlinks');this.tbar_tab=make_table(this.tbar_div,1,4,'100%',['25%','25%','25%','25%']);this.wrapper=$a(parent,'div','grid_wrapper round');this.head_wrapper=$a(this.wrapper,'div','grid_head_wrapper');this.head_tab=$a(this.head_wrapper,'table','grid_head_table');this.head_row=this.head_tab.insertRow(0);this.tab_wrapper=$a(this.wrapper,'div','grid_tab_wrapper');this.tab=$a(this.tab_wrapper,'table','grid_table');var me=this;this.wrapper.onscroll=function(){me.head_wrapper.style.top=me.wrapper.scrollTop+'px';}}
-_f.Grid.prototype.show=function(){if(this.can_edit&&this.field.df['default'].toLowerCase()!='no toolbar'){$ds(this.tbar_div);if(this.can_add_rows){$td(this.tbar_tab,0,0).style.display='table-cell';$td(this.tbar_tab,0,1).style.display='table-cell';}else{$td(this.tbar_tab,0,0).style.display='none';$td(this.tbar_tab,0,1).style.display='none';}}else{$dh(this.tbar_div);}
-$ds(this.wrapper);}
-_f.Grid.prototype.hide=function(){$dh(this.wrapper);$dh(this.tbar_div);}
-_f.Grid.prototype.insert_column=function(doctype,fieldname,fieldtype,label,width,options,perm,reqd){var idx=this.head_row.cells.length;if(!width)width='100px';if((width+'').slice(-2)!='px'){width=width+'px';}
-var col=this.head_row.insertCell(idx);col.doctype=doctype;col.fieldname=fieldname;col.fieldtype=fieldtype;col.innerHTML='<div data-grid-fieldname = "'+doctype+'-'+fieldname+'">'+label+'</div>';col.label=label;if(reqd)
-col.childNodes[0].style.color="#D22";col.style.width=width;col.options=options;col.perm=perm;this.col_idx_by_name[fieldname]=idx;}
-_f.Grid.prototype.reset_table_width=function(){var w=0;$.each(this.head_row.cells,function(i,cell){if((cell.style.display||'').toLowerCase()!='none')
-w+=cint(cell.style.width);})
-this.head_tab.style.width=w+'px';this.tab.style.width=w+'px';}
-_f.Grid.prototype.set_column_disp=function(fieldname,show){var cidx=this.col_idx_by_name[fieldname];if(!cidx){msgprint('Trying to hide unknown column: '+fieldname);return;}
-var disp=show?'table-cell':'none';this.head_row.cells[cidx].style.display=disp;for(var i=0,len=this.tab.rows.length;i<len;i++){var cell=this.tab.rows[i].cells[cidx];cell.style.display=disp;}
-this.reset_table_width();}
-_f.Grid.prototype.append_row=function(idx,docname){if(!idx)idx=this.tab.rows.length;var row=this.tab.insertRow(idx);row.docname=docname;if(idx%2)var odd=true;else var odd=false;var me=this;for(var i=0;i<this.head_row.cells.length;i++){var cell=row.insertCell(i);var hc=this.head_row.cells[i];cell.style.width=hc.style.width;cell.style.display=hc.style.display;cell.row=row;cell.grid=this;cell.className='grid_cell';cell.div=$a(cell,'div','grid_cell_div');if(this.row_height){cell.div.style.height=this.row_height;}
-cell.div.cell=cell;cell.div.onclick=function(e){me.cell_select(this.cell);}
-if(odd){$bg(cell,this.alt_row_bg);cell.is_odd=1;cell.div.style.border='2px solid '+this.alt_row_bg;}else $bg(cell,'#FFF');if(!hc.fieldname)cell.div.style.cursor='default';}
-this.set_ht();return row;}
-_f.Grid.prototype.refresh_cell=function(docname,fieldname){for(var r=0;r<this.tab.rows.length;r++){if(this.tab.rows[r].docname==docname){for(var c=0;c<this.head_row.cells.length;c++){var hc=this.head_row.cells[c];if(hc.fieldname==fieldname){this.set_cell_value(this.tab.rows[r].cells[c]);}}}}}
-_f.cur_grid;_f.cur_grid_ridx;_f.Grid.prototype.set_cell_value=function(cell){if(cell.row.is_newrow)return;var hc=this.head_row.cells[cell.cellIndex];if(hc.fieldname&&locals[hc.doctype][cell.row.docname]){var v=locals[hc.doctype][cell.row.docname][hc.fieldname];}else{var v=(cell.row.rowIndex+1);}
-if(v==null){v='';}
-var me=this;if(cell.cellIndex){var ft=hc.fieldtype;if(ft=='Link'&&cur_frm.doc.docstatus<1)ft='Data';$s(cell.div,v,ft,hc.options);}else{cell.div.style.padding='2px';cell.div.style.textAlign='left';cell.innerHTML='';var t=make_table(cell,1,3,'60px',['20px','20px','20px'],{verticalAlign:'middle',padding:'2px'});$y($td(t,0,0),{paddingLeft:'4px'});$td(t,0,0).innerHTML=cell.row.rowIndex+1;if(cur_frm.editable&&this.can_edit){var ed=$a($td(t,0,1),'i','icon-edit',{cursor:'pointer'});ed.cell=cell;ed.title='Edit Row';ed.onclick=function(){_f.cur_grid=me;_f.cur_grid_ridx=this.cell.row.rowIndex;_f.edit_record(me.doctype,this.cell.row.docname,1);}}else{cell.div.innerHTML=(cell.row.rowIndex+1);cell.div.style.cursor='default';cell.div.onclick=function(){}}}}
-$(document).bind('click',function(e){var me=this;var is_target_toolbar=function(){return $(e.target).parents('.grid_tbarlinks').length;}
-var is_target_input=function(){if(e.target.tagName.toLowerCase()=='option')return true;return $(e.target).parents().get().indexOf(_f.cur_grid_cell)!=-1;}
-if(_f.cur_grid_cell&&!is_target_input()&&!is_target_toolbar()){if(!(text_dialog&&text_dialog.display)&&!datepicker_active&&!(selector&&selector.display)){setTimeout('_f.cur_grid_cell.grid.cell_deselect()',500);return false;}}});_f.Grid.prototype.cell_deselect=function(){if(_f.cur_grid_cell){var c=_f.cur_grid_cell;c.grid.remove_template(c);c.div.className='grid_cell_div';if(c.is_odd)c.div.style.border='2px solid '+c.grid.alt_row_bg;else c.div.style.border='2px solid #FFF';_f.cur_grid_cell=null;}}
-_f.Grid.prototype.cell_select=function(cell,ri,ci){if(cell&&_f.cur_grid_cell==cell&&cell.hc)return;if(ri!=null&&ci!=null)
-cell=this.tab.rows[ri].cells[ci];var hc=this.head_row.cells[cell.cellIndex];if(!hc.template){this.make_template(hc);}
-hc.template.perm=this.field?this.field.perm:hc.perm;if(hc.fieldname&&hc.template.get_status()=='Write'){this.cell_deselect();cell.div.style.border='2px solid #88F';_f.cur_grid_cell=cell;this.add_template(cell);}}
-_f.Grid.prototype.add_template=function(cell){if(!cell.row.docname&&this.add_newrow){this.add_newrow();this.cell_select(cell);}else{var hc=this.head_row.cells[cell.cellIndex];cell.div.innerHTML='';cell.div.appendChild(hc.template.wrapper);hc.template.activate(cell.row.docname);hc.template.activated=1;cell.hc=hc;if(hc.template.input&&hc.template.input.set_width){hc.template.input.set_width($(cell).width());}}}
-_f.Grid.prototype.get_field=function(fieldname){for(var i=0;i<this.head_row.cells.length;i++){var hc=this.head_row.cells[i];if(hc.fieldname==fieldname){if(!hc.template){this.make_template(hc);}
-return hc.template;}}
-return{}}
-_f.grid_date_cell='';_f.grid_refresh_date=function(){_f.grid_date_cell.grid.set_cell_value(_f.grid_date_cell);}
-_f.grid_refresh_field=function(temp,input){if($(input).val()!=_f.get_value(temp.doctype,temp.docname,temp.df.fieldname))
-$(input).trigger('change');}
-_f.Grid.prototype.remove_template=function(cell){var hc=this.head_row.cells[cell.cellIndex];if(!hc.template)return;if(!hc.template.activated)return;if(hc.template&&hc.template.wrapper.parentNode)
-cell.div.removeChild(hc.template.wrapper);this.set_cell_value(cell);hc.template.activated=0;}
-_f.Grid.prototype.notify_keypress=function(e,keycode){if(keycode>=37&&keycode<=40&&e.shiftKey){if(text_dialog&&text_dialog.display){return;}}else
-return;if(!_f.cur_grid_cell)return;if(_f.cur_grid_cell.grid!=this)return;var ri=_f.cur_grid_cell.row.rowIndex;var ci=_f.cur_grid_cell.cellIndex;switch(keycode){case 38:if(ri>0){this.cell_select('',ri-1,ci);}break;case 40:if(ri<(this.tab.rows.length-1)){this.cell_select('',ri+1,ci);}break;case 39:if(ci<(this.head_row.cells.length-1)){this.cell_select('',ri,ci+1);}break;case 37:if(ci>1){this.cell_select('',ri,ci-1);}break;}}
-_f.Grid.prototype.make_template=function(hc){hc.template=make_field(wn.meta.get_docfield(hc.doctype,hc.fieldname),hc.doctype,'',this.field.frm,true);hc.template.grid=this;}
-_f.Grid.prototype.append_rows=function(n){for(var i=0;i<n;i++)this.append_row();}
-_f.Grid.prototype.truncate_rows=function(n){for(var i=0;i<n;i++)this.tab.deleteRow(this.tab.rows.length-1);}
-_f.Grid.prototype.set_data=function(data){this.cell_deselect();this.reset_table_width();if(data.length>this.tab.rows.length)
-this.append_rows(data.length-this.tab.rows.length);if(data.length<this.tab.rows.length)
-this.truncate_rows(this.tab.rows.length-data.length);for(var ridx=0;ridx<data.length;ridx++){this.refresh_row(ridx,data[ridx]);}
-if(this.can_add_rows&&this.make_newrow){this.make_newrow();}
-if(this.wrapper.onscroll)this.wrapper.onscroll();}
-_f.Grid.prototype.set_ht=function(){var max_ht=cint(0.37*screen.width);var ht=$(this.tab).height()+$(this.head_tab).height()+30;if(ht<100)
-ht=100;if(ht>max_ht)ht=max_ht;ht+=4;$y(this.wrapper,{height:ht+'px'});}
-_f.Grid.prototype.refresh_row=function(ridx,docname){var row=this.tab.rows[ridx];row.docname=docname;row.is_newrow=false;for(var cidx=0;cidx<row.cells.length;cidx++){this.set_cell_value(row.cells[cidx]);}}
-/*
- *	lib/js/legacy/widgets/form/form_grid.js
- */
-_f.FormGrid=function(field){this.field=field;this.doctype=field.df.options;if(!this.doctype){show_alert('No Options for table '+field.df.label);}
-this.col_break_width=cint(this.field.col_break_width);if(!this.col_break_width)this.col_break_width=100;$y(field.parent,{marginTop:'8px'});this.init(field.parent,field.df.width);this.setup();}
-_f.FormGrid.prototype=new _f.Grid();_f.FormGrid.prototype.setup=function(){this.make_columns();}
-_f.FormGrid.prototype.make_buttons=function(){var me=this;this.tbar_btns={};this.tbar_btns['Del']=this.make_tbar_link($td(this.tbar_tab,0,0),'Del',function(){me.delete_row();},'icon-remove-sign');this.tbar_btns['Ins']=this.make_tbar_link($td(this.tbar_tab,0,1),'Ins',function(){me.insert_row();},'icon-plus');this.tbar_btns['Up']=this.make_tbar_link($td(this.tbar_tab,0,2),'Up',function(){me.move_row(true);},'icon-arrow-up');this.tbar_btns['Dn']=this.make_tbar_link($td(this.tbar_tab,0,3),'Dn',function(){me.move_row(false);},'icon-arrow-down');for(var i in this.btns)
-this.btns[i].isactive=true;}
-_f.FormGrid.prototype.make_tbar_link=function(parent,label,fn,icon){var div=$a(parent,'div','',{cursor:'pointer'});var t=make_table(div,1,2,'90%',['20px',null]);var img=$a($td(t,0,0),'i',icon);$y($td(t,0,0),{textAlign:'right'});var l=$a($td(t,0,1),'span','link_type',{color:'#333'});l.style.fontSize='11px';l.innerHTML=label;div.onclick=fn;div.show=function(){$ds(this);}
-div.hide=function(){$dh(this);}
-$td(t,0,0).isactive=1;$td(t,0,1).isactive=1;l.isactive=1;div.isactive=1;img.isactive=1;return div;}
-_f.FormGrid.prototype.make_columns=function(){var gl=wn.meta.docfield_list[this.field.df.options];if(!gl){alert('Table details not found "'+this.field.df.options+'"');}
-gl.sort(function(a,b){return a.idx-b.idx});var p=this.field.perm;for(var i=0;i<gl.length;i++){if(p[this.field.df.permlevel]&&p[this.field.df.permlevel][READ]){this.insert_column(this.field.df.options,gl[i].fieldname,gl[i].fieldtype,gl[i].label,gl[i].width,gl[i].options,this.field.perm,gl[i].reqd);if(gl[i].hidden){this.set_column_disp(gl[i].fieldname,false);}}}}
-_f.FormGrid.prototype.set_column_label=function(fieldname,label){for(var i=0;i<this.head_row.cells.length;i++){var c=this.head_row.cells[i];if(c.fieldname==fieldname){c.innerHTML='<div class="grid_head_div">'+label+'</div>';c.cur_label=label;break;}}}
-_f.FormGrid.prototype.get_children=function(){return getchildren(this.doctype,this.field.frm.docname,this.field.df.fieldname,this.field.frm.doctype);}
-_f.FormGrid.prototype.refresh=function(){var docset=this.get_children();var data=[];for(var i=0;i<docset.length;i++){locals[this.doctype][docset[i].name].idx=i+1;data[data.length]=docset[i].name;}
-this.set_data(data);if(_f.frm_dialog&&_f.frm_dialog.dialog.display&&_f.frm_dialog.cur_frm){_f.frm_dialog.cur_frm.refresh();}}
-_f.FormGrid.prototype.set_unsaved=function(){cur_frm.set_unsaved();}
-_f.FormGrid.prototype.insert_row=function(){var d=this.new_row_doc();var ci=_f.cur_grid_cell.cellIndex;var row_idx=_f.cur_grid_cell.row.rowIndex;d.idx=row_idx+1;for(var ri=row_idx;ri<this.tab.rows.length;ri++){var r=this.tab.rows[ri];if(r.docname)
-locals[this.doctype][r.docname].idx++;}
-this.refresh();this.cell_select('',row_idx,ci);}
-_f.FormGrid.prototype.new_row_doc=function(){var n=LocalDB.create(this.doctype);var d=locals[this.doctype][n];d.parent=this.field.frm.docname;d.parentfield=this.field.df.fieldname;d.parenttype=this.field.frm.doctype;this.set_unsaved();return d;}
-_f.FormGrid.prototype.add_newrow=function(){var r=this.tab.rows[this.tab.rows.length-1];if(!r.is_newrow)
-show_alert('fn: add_newrow: Adding a row which is not flagged as new');var d=this.new_row_doc();d.idx=r.rowIndex+1;r.docname=d.name;r.is_newrow=false;this.set_cell_value(r.cells[0]);this.make_newrow();this.refresh_row(r.rowIndex,d.name);if(this.onrowadd)this.onrowadd(cur_frm.doc,d.doctype,d.name);return d.name;}
-_f.FormGrid.prototype.make_newrow=function(from_add_btn){if(!this.can_add_rows)
-return;if(this.tab.rows.length){var r=this.tab.rows[this.tab.rows.length-1];if(r.is_newrow)
-return;}
-var r=this.append_row();r.cells[0].div.innerHTML='<b style="font-size: 18px;">*</b>';r.is_newrow=true;}
-_f.FormGrid.prototype.check_selected=function(){if(!_f.cur_grid_cell){show_alert('Select a cell first');return false;}
-if(_f.cur_grid_cell.grid!=this){show_alert('Select a cell first');return false;}
-return true;}
-_f.FormGrid.prototype.delete_row=function(dt,dn){if(dt&&dn){LocalDB.delete_record(dt,dn);this.refresh();}else{if(!this.check_selected())return;var r=_f.cur_grid_cell.row;if(r.is_newrow)return;var ci=_f.cur_grid_cell.cellIndex;var ri=_f.cur_grid_cell.row.rowIndex;LocalDB.delete_record(this.doctype,r.docname);this.refresh();if(ri<(this.tab.rows.length-1))
-this.cell_select(null,ri,ci);else _f.cur_grid_cell=null;}
-this.set_unsaved();}
-_f.FormGrid.prototype.move_row=function(up){if(!this.check_selected())return;var r=_f.cur_grid_cell.row;if(r.is_newrow)return;if(up&&r.rowIndex>0){var swap_row=this.tab.rows[r.rowIndex-1];}else if(!up){var len=this.tab.rows.length;if(this.tab.rows[len-1].is_newrow)
-len=len-1;if(r.rowIndex<(len-1))
-var swap_row=this.tab.rows[r.rowIndex+1];}
-if(swap_row){var cidx=_f.cur_grid_cell.cellIndex;this.cell_deselect();var aidx=locals[this.doctype][r.docname].idx;locals[this.doctype][r.docname].idx=locals[this.doctype][swap_row.docname].idx;locals[this.doctype][swap_row.docname].idx=aidx;var adocname=swap_row.docname;this.refresh_row(swap_row.rowIndex,r.docname);this.refresh_row(r.rowIndex,adocname);this.cell_select(this.tab.rows[swap_row.rowIndex].cells[cidx]);this.set_unsaved();}}
-/*
- *	lib/js/legacy/widgets/form/print_format.js
- */
-_p.def_print_style_body="html, body, div, span, td { font-family: Arial, Helvetica; font-size: 12px; }"+"\npre { margin:0; padding:0;}"
-_p.def_print_style_other="\n.simpletable, .noborder { border-collapse: collapse; margin-bottom: 10px;}"
-+"\n.simpletable td {border: 1pt solid #000; vertical-align: top; padding: 2px; }"
-+"\n.noborder td { vertical-align: top; }"
-_p.go=function(html){var d=document.createElement('div')
-d.innerHTML=html
-$(d).printElement();}
-_p.preview=function(html){var w=window.open('');if(!w)return;w.document.write(html)
-w.document.close();}
-$.extend(_p,{show_dialog:function(){if(!_p.dialog){_p.make_dialog();}
-_p.dialog.show();},make_dialog:function(){var d=new Dialog(360,140,'Print Formats',[['HTML','Select'],['Check','No Letterhead'],['HTML','Buttons']]);$btn(d.widgets.Buttons,'Print',function(){_p.build(sel_val(cur_frm.print_sel),_p.go,d.widgets['No Letterhead'].checked);},{cssFloat:'right',marginBottom:'16px',marginLeft:'7px'},'green');$btn(d.widgets.Buttons,'Preview',function(){_p.build(sel_val(cur_frm.print_sel),_p.preview,d.widgets['No Letterhead'].checked);},{cssFloat:'right',marginBottom:'16px'},'');d.onshow=function(){var c=_p.dialog.widgets['Select'];if(c.cur_sel&&c.cur_sel.parentNode==c){c.removeChild(c.cur_sel);}
-c.appendChild(cur_frm.print_sel);c.cur_sel=cur_frm.print_sel;}
-_p.dialog=d;},formats:{},build:function(fmtname,onload,no_letterhead,only_body){args={fmtname:fmtname,onload:onload,no_letterhead:no_letterhead,only_body:only_body};if(!cur_frm){alert('No Document Selected');return;}
-var doc=locals[cur_frm.doctype][cur_frm.docname];if(args.fmtname=='Standard'){args.onload(_p.render({body:_p.print_std(args.no_letterhead),style:_p.print_style,doc:doc,title:doc.name,no_letterhead:args.no_letterhead,only_body:args.only_body}));}else{if(!_p.formats[args.fmtname]){var build_args=args;$c(command='webnotes.widgets.form.print_format.get',args={'name':build_args.fmtname},fn=function(r,rt){_p.formats[build_args.fmtname]=r.message;build_args.onload(_p.render({body:_p.formats[build_args.fmtname],style:'',doc:doc,title:doc.name,no_letterhead:build_args.no_letterhead,only_body:build_args.only_body}));});}else{args.onload(_p.render({body:_p.formats[args.fmtname],style:'',doc:doc,title:doc.name,no_letterhead:args.no_letterhead,only_body:args.only_body}));}}},render:function(args){var container=document.createElement('div');var stat='';stat+=_p.show_draft(args);stat+=_p.show_archived(args);stat+=_p.show_cancelled(args);container.innerHTML=args.body;_p.show_letterhead(container,args);_p.run_embedded_js(container,args.doc);var style=_p.consolidate_css(container,args);_p.render_header_on_break(container,args);return _p.render_final(style,stat,container,args);},head_banner_format:function(){return"\
-   <div style = '\
-     text-align: center; \
-     padding: 8px; \
-     background-color: #CCC;'> \
-    <div style = '\
-      font-size: 20px; \
-      font-weight: bold;'>\
-     {{HEAD}}\
-    </div>\
-    {{DESCRIPTION}}\
-   </div>"},show_draft:function(args){var is_doctype_submittable=0;var plist=locals['DocPerm'];for(var perm in plist){var p=plist[perm];if((p.parent==args.doc.doctype)&&(p.submit==1)){is_doctype_submittable=1;break;}}
-if(args.doc&&cint(args.doc.docstatus)==0&&is_doctype_submittable){draft=_p.head_banner_format();draft=draft.replace("{{HEAD}}","DRAFT");draft=draft.replace("{{DESCRIPTION}}","This box will go away after the document is submitted.");return draft;}else{return"";}},show_archived:function(args){if(args.doc&&args.doc.__archived){archived=_p.head_banner_format();archived=archived.replace("{{HEAD}}","ARCHIVED");archived=archived.replace("{{DESCRIPTION}}","You must restore this document to make it editable.");return archived;}else{return"";}},show_cancelled:function(args){if(args.doc&&args.doc.docstatus==2){cancelled=_p.head_banner_format();cancelled=cancelled.replace("{{HEAD}}","CANCELLED");cancelled=cancelled.replace("{{DESCRIPTION}}","You must amend this document to make it editable.");return cancelled;}else{return"";}},consolidate_css:function(container,args){var body_style='';var style_list=container.getElementsByTagName('style');while(style_list&&style_list.length>0){for(i in style_list){if(style_list[i]&&style_list[i].innerHTML){body_style+=style_list[i].innerHTML;var parent=style_list[i].parentNode;if(parent){parent.removeChild(style_list[i]);}else{container.removeChild(style_list[i]);}}}
-style_list=container.getElementsByTagName('style');}
-style_concat=(args.only_body?'':_p.def_print_style_body)
-+_p.def_print_style_other+args.style+body_style;return style_concat;},run_embedded_js:function(container,doc){var jslist=container.getElementsByTagName('script');while(jslist&&jslist.length>0){for(i in jslist){if(jslist[i]&&jslist[i].innerHTML){var code=jslist[i].innerHTML;var parent=jslist[i].parentNode;var span=$a(parent,'span');parent.replaceChild(span,jslist[i]);var val=code?eval(code):'';if(!val||typeof(val)=='object'){val='';}
-span.innerHTML=val;}}
-jslist=container.getElementsByTagName('script');}},show_letterhead:function(container,args){if(!(args.no_letterhead||args.only_body)){container.innerHTML='<div>'+_p.get_letter_head()+'</div>'
-+container.innerHTML;}},render_header_on_break:function(container,args){var page_set=container.getElementsByClassName('page-settings');if(page_set.length){for(var i=0;i<page_set.length;i++){var tmp='';tmp+=_p.show_draft(args);tmp+=_p.show_archived(args);_p.show_letterhead(page_set[i],args);page_set[i].innerHTML=tmp+page_set[i].innerHTML;}}},render_final:function(style,stat,container,args){var header='<div class="page-settings">\n';var footer='\n</div>';if(!args.only_body){header='<!DOCTYPE html>\n\
-     <html>\
-      <head>\
-       <title>'+args.title+'</title>\
-       <style>'+style+'</style>\
-      </head>\
-      <body>\n'+header;footer=footer+'\n</body>\n\
-     </html>';}
-var finished=header
-+stat
-+container.innerHTML.replace(/<div/g,'\n<div').replace(/<td/g,'\n<td')
-+footer;return finished;},get_letter_head:function(){var cp=wn.control_panel;var lh='';if(cur_frm.doc.letter_head){lh=cstr(wn.boot.letter_heads[cur_frm.doc.letter_head]);}else if(cp.letter_head){lh=cp.letter_head;}
-return lh;},print_style:"\
-  .datalabelcell { \
-   padding: 2px 0px; \
-   width: 38%; \
-   vertical-align: top; \
-   } \
-  .datainputcell { \
-   padding: 2px 0px; \
-   width: 62%; \
-   text-align: left; \
-   }\
-  .sectionHeading { \
-   font-size: 16px; \
-   font-weight: bold; \
-   margin: 8px 0px; \
-   } \
-  .columnHeading { \
-   font-size: 14px; \
-   font-weight: bold; \
-   margin: 8px 0px; \
-   }",print_std:function(no_letterhead){var docname=cur_frm.docname;var doctype=cur_frm.doctype;var data=getchildren('DocField',doctype,'fields','DocType');var layout=_p.add_layout(doctype);this.pf_list=[layout];var me=this;me.layout=layout;$.extend(this,{build_head:function(data,doctype,docname){var h1_style={fontSize:'22px',marginBottom:'8px'}
-var h1=$a(me.layout.cur_row.header,'h1','',h1_style);if(cur_frm.pformat[docname]){h1.innerHTML=cur_frm.pformat[docname];}else{var val=null;for(var i=0;i<data.length;i++){if(data[i].fieldname==='select_print_heading'){val=_f.get_value(doctype,docname,data[i].fieldname);break;}}
-h1.innerHTML=val?val:get_doctype_label(doctype);}
-var h2_style={fontSize:'16px',color:'#888',marginBottom:'8px',paddingBottom:'8px',borderBottom:(me.layout.with_border?'0px':'1px solid #000')}
-var h2=$a(me.layout.cur_row.header,'div','',h2_style);h2.innerHTML=docname;},build_data:function(data,doctype,docname){if(data[0]&&data[0].fieldtype!="Section Break"){me.layout.addrow();if(data[0].fieldtype!="Column Break"){me.layout.addcell();}}
-$.extend(this,{generate_custom_html:function(field,doctype,docname){var container=$a(me.layout.cur_cell,'div');container.innerHTML=cur_frm.pformat[field.fieldname](locals[doctype][docname]);},render_normal:function(field,data,i){switch(field.fieldtype){case'Section Break':me.layout.addrow();if(data[i+1]&&data[i+1].fieldtype!='Column Break'){me.layout.addcell();}
-break;case'Column Break':me.layout.addcell(field.width,field.label);break;case'Table':var table=print_table(doctype,docname,field.fieldname,field.options,null,null,null,null);me.layout=_p.print_std_add_table(table,me.layout,me.pf_list,doctype,no_letterhead);break;case'HTML':var div=$a(me.layout.cur_cell,'div');div.innerHTML=field.options;break;case'Code':var div=$a(me.layout.cur_cell,'div');var val=_f.get_value(doctype,docname,field.fieldname);div.innerHTML='<div>'+field.label+': </div><pre style="font-family: Courier, Fixed;">'+(val?val:'')+'</pre>';break;case'Text Editor':var div=$a(me.layout.cur_cell,'div');var val=_f.get_value(doctype,docname,field.fieldname);div.innerHTML=val?val:'';break;default:_p.print_std_add_field(doctype,docname,field,me.layout);break;}}});for(var i=0;i<data.length;i++){var fieldname=data[i].fieldname?data[i].fieldname:data[i].label;var field=fieldname?wn.meta.get_docfield(doctype,fieldname,docname):data[i];if(!field.print_hide){if(cur_frm.pformat[field.fieldname]){this.generate_custom_html(field,doctype,docname);}else{this.render_normal(field,data,i);}}}
-me.layout.close_borders();},build_html:function(){var html='';for(var i=0;i<me.pf_list.length;i++){if(me.pf_list[i].wrapper){html+=me.pf_list[i].wrapper.innerHTML;}else if(me.pf_list[i].innerHTML){html+=me.pf_list[i].innerHTML;}else{html+=me.pf_list[i];}}
-this.pf_list=[];return html;}});this.build_head(data,doctype,docname);this.build_data(data,doctype,docname);var html=this.build_html();return html;},add_layout:function(doctype){var layout=new Layout();layout.addrow();if(locals['DocType'][doctype].print_outline=='Yes'){layout.with_border=1}
-return layout;},print_std_add_table:function(t,layout,pf_list,dt,no_letterhead){if(t.appendChild){layout.cur_cell.appendChild(t);}else{page_break='\n\
-    <div style = "page-break-after: always;" \
-    class = "page_break"></div><div class="page-settings"></div>';for(var i=0;i<t.length-1;i++){layout.cur_cell.appendChild(t[i]);layout.close_borders();pf_list.push(page_break);layout=_p.add_layout(dt,no_letterhead);pf_list.push(layout);layout.addrow();layout.addcell();var div=$a(layout.cur_cell,'div');div.innerHTML='Continued from previous page...';div.style.padding='4px';}
-layout.cur_cell.appendChild(t[t.length-1]);}
-return layout;},print_std_add_field:function(dt,dn,f,layout){var val=_f.get_value(dt,dn,f.fieldname);if(f.fieldtype!='Button'){if(val||in_list(['Float','Int','Currency'],f.fieldtype)){row=_p.field_tab(layout.cur_cell);row.cells[0].innerHTML=f.label?f.label:f.fieldname;$s(row.cells[1],val,f.fieldtype);if(f.fieldtype=='Currency'){$y(row.cells[1],{textAlign:'left'});}}}},field_tab:function(layout_cell){var tab=$a(layout_cell,'table','',{width:'100%'});var row=tab.insertRow(0);_p.row=row;row.insertCell(0);row.insertCell(1);row.cells[0].className='datalabelcell';row.cells[1].className='datainputcell';return row;}});print_table=function(dt,dn,fieldname,tabletype,cols,head_labels,widths,condition,cssClass,modifier,hide_empty){var me=this;$.extend(this,{flist:(function(){var f_list=[];var fl=wn.meta.docfield_list[tabletype];if(fl){for(var i=0;i<fl.length;i++){f_list.push(copy_dict(fl[i]));}}
-return f_list;})(),data:function(){var children=getchildren(tabletype,dn,fieldname,dt);var data=[]
-for(var i=0;i<children.length;i++){data.push(copy_dict(children[i]));}
-return data;}(),cell_style:{border:'1px solid #000',padding:'2px',verticalAlign:'top'},head_cell_style:{border:'1px solid #000',padding:'2px',verticalAlign:'top',backgroundColor:'#ddd',fontWeight:'bold'},table_style:{width:'100%',borderCollapse:'collapse',marginBottom:'10px'},remove_empty_cols:function(flist){var non_empty_cols=[]
-for(var i=0;i<me.data.length;i++){for(var c=0;c<flist.length;c++){if(flist[c].print_hide||!inList(['',null],me.data[i][flist[c].fieldname])){if(!inList(non_empty_cols,flist[c])){non_empty_cols.push(flist[c]);}}}}
-for(var c=0;c<flist.length;c++){if(!inList(non_empty_cols,flist[c])){flist.splice(c,1);c=c-1;}}},prepare_col_heads:function(flist){var new_flist=[];if(!cols||(cols&&cols.length&&hide_empty)){me.remove_empty_cols(flist);}
-if(cols&&cols.length){if(cols[0]=='SR'){new_flist.push('SR')}
-for(var i=0;i<cols.length;i++){for(var j=0;j<flist.length;j++){if(flist[j].fieldname==cols[i]){new_flist.push(flist[j]);break;}}}}else{new_flist.push('SR');for(var i=0;i<flist.length;i++){if(!flist[i].print_hide){new_flist.push(flist[i]);}}}
-me.flist=new_flist;},make_print_table:function(flist){var wrapper=document.createElement('div');var table=$a(wrapper,'table','',me.table_style);table.wrapper=wrapper;table.insertRow(0);var col_start=0;if(flist[0]=='SR'){var cell=table.rows[0].insertCell(0);cell.innerHTML=head_labels?head_labels[0]:'<b>SR</b>';$y(cell,{width:'30px'});$y(cell,me.head_cell_style);col_start++;}
-for(var c=col_start;c<flist.length;c++){var cell=table.rows[0].insertCell(c);$y(cell,me.head_cell_style);cell.innerHTML=head_labels?head_labels[c]:flist[c].label;if(flist[c].width){$y(cell,{width:flist[c].width});}
-if(widths){$y(cell,{width:widths[c]});}
-if(in_list(['Currency','Float'],flist[c].fieldtype)){$y(cell,{textAlign:'right'});}}
-return table;},populate_table:function(table,data){for(var r=0;r<data.length;r++){if((!condition)||(condition(data[r]))){if(data[r].page_break){table=me.make_print_table(me.flist);me.table_list.push(table.wrapper);}
-var row=table.insertRow(table.rows.length);if(me.flist[0]=='SR'){var cell=row.insertCell(0);cell.innerHTML=r+1;$y(cell,me.cell_style);}
-for(var c=me.flist.indexOf('SR')+1;c<me.flist.length;c++){var cell=row.insertCell(c);$y(cell,me.cell_style);if(modifier&&me.flist[c].fieldname in modifier){data[r][me.flist[c].fieldname]=modifier[me.flist[c].fieldname](data[r]);}
-$s(cell,data[r][me.flist[c].fieldname],me.flist[c].fieldtype);if(in_list(['Currency','Float'],me.flist[c].fieldtype)){cell.style.textAlign='right';}}}}}});if(!this.data.length){return document.createElement('div');}
-this.prepare_col_heads(this.flist);var table=me.make_print_table(this.flist);this.table_list=[table.wrapper];this.populate_table(table,this.data);return(me.table_list.length>1)?me.table_list:me.table_list[0];}
-/*
- *	lib/js/legacy/widgets/form/email.js
- */
-_e.email_as_field='email_id';_e.email_as_dt='Contact';_e.email_as_in='email_id,contact_name';sendmail=function(emailto,emailfrom,cc,subject,message,fmt,with_attachments){var fn=function(html){$c('webnotes.utils.email_lib.send_form',{'sendto':emailto,'sendfrom':emailfrom?emailfrom:'','cc':cc?cc:'','subject':subject,'message':replace_newlines(message),'body':html,'full_domain':wn.urllib.get_base_url(),'with_attachments':with_attachments?1:0,'dt':cur_frm.doctype,'dn':cur_frm.docname,'customer':cur_frm.doc.customer||'','supplier':cur_frm.doc.supplier||''},function(r,rtxt){});}
-_p.build(fmt,fn);}
-_e.make=function(){var d=new Dialog(440,440,"Send Email");var email_go=function(){var emailfrom=d.widgets['From'].value;var emailto=d.widgets['To'].value;if(!emailfrom)
-emailfrom=user_email;emailto=emailto.replace(/ /g,"");var email_list=emailto.split(/[,|;]/);var valid=1;for(var i=0;i<email_list.length;i++){if(!email_list[i]){email_list.splice(i,1);}else if(!validate_email(email_list[i])){msgprint('error:'+email_list[i]+' is not a valid email id');valid=0;}}
-emailto=email_list.join(",");if(emailfrom&&!validate_email(emailfrom)){msgprint('error:'+emailfrom+' is not a valid email id. To change the default please click on Profile on the top right of the screen and change it.');return;}
-if(!valid)return;var cc=emailfrom;if(!emailfrom){emailfrom=wn.control_panel.auto_email_id;cc='';}
-sendmail(emailto,emailfrom,emailfrom,d.widgets['Subject'].value,d.widgets['Message'].value,sel_val(cur_frm.print_sel),d.widgets['Send With Attachments'].checked);_e.dialog.hide();}
-d.onhide=function(){}
-d.make_body([['Data','To','Example: abc@hotmail.com, xyz@yahoo.com'],['Select','Format'],['Data','Subject'],['Data','From','Optional'],['Check','Send With Attachments','Will send all attached documents (if any)'],['Text','Message'],['Button','Send',email_go]]);d.widgets['From'].value=(user_email?user_email:'');$td(d.rows['Format'].tab,0,1).cur_sel=d.widgets['Format'];function split(val){return val.split(/,\s*/);}
-function extractLast(term){return split(term).pop();}
-$(d.widgets['To']).bind("keydown",function(event){if(event.keyCode===$.ui.keyCode.TAB&&$(this).data("autocomplete").menu.active){event.preventDefault();}}).autocomplete({source:function(request,response){wn.call({method:'webnotes.utils.email_lib.get_contact_list',args:{'select':_e.email_as_field,'from':_e.email_as_dt,'where':_e.email_as_in,'txt':extractLast(request.term).value||'%'},callback:function(r){response($.ui.autocomplete.filter(r.cl||[],extractLast(request.term)));}});},focus:function(){return false;},select:function(event,ui){var terms=split(this.value);terms.pop();terms.push(ui.item.value);terms.push("");this.value=terms.join(", ");return false;}});_e.dialog=d;}
-/*
- *	lib/js/legacy/widgets/form/clientscriptAPI.js
- */
-$c_get_values=function(args,doc,dt,dn,user_callback){var call_back=function(r,rt){if(!r.message)return;if(user_callback)user_callback(r.message);var fl=args.fields.split(',');for(var i in fl){locals[dt][dn][fl[i]]=r.message[fl[i]];if(args.table_field)
-refresh_field(fl[i],dn,args.table_field);else
-refresh_field(fl[i]);}}
-$c('webnotes.widgets.form.utils.get_fields',args,call_back);}
-get_server_fields=function(method,arg,table_field,doc,dt,dn,allow_edit,call_back){if(!allow_edit)freeze('Fetching Data...');$c('runserverobj',args={'method':method,'docs':compress_doclist(make_doclist(doc.doctype,doc.name)),'arg':arg},function(r,rt){if(r.message){var d=locals[dt][dn];var field_dict=r.message;for(var key in field_dict){d[key]=field_dict[key];if(table_field)refresh_field(key,d.name,table_field);else refresh_field(key);}}
-if(call_back){doc=locals[doc.doctype][doc.name];call_back(doc,dt,dn);}
-if(!allow_edit)unfreeze();});}
-set_multiple=function(dt,dn,dict,table_field){var d=locals[dt][dn];for(var key in dict){d[key]=dict[key];if(table_field)refresh_field(key,d.name,table_field);else refresh_field(key);}}
-refresh_many=function(flist,dn,table_field){for(var i in flist){if(table_field)refresh_field(flist[i],dn,table_field);else refresh_field(flist[i]);}}
-set_field_tip=function(n,txt){var df=wn.meta.get_docfield(cur_frm.doctype,n,cur_frm.docname);if(df)df.description=txt;if(cur_frm&&cur_frm.fields_dict){if(cur_frm.fields_dict[n])
-cur_frm.fields_dict[n].comment_area.innerHTML=replace_newlines(txt);else
-console.log('[set_field_tip] Unable to set field tip: '+n);}}
-refresh_field=function(n,docname,table_field){if(typeof n==typeof[])refresh_many(n,docname,table_field);if(table_field){if(_f.frm_dialog&&_f.frm_dialog.display){_f.frm_dialog.cur_frm.refresh_field(n);}else{var g=_f.cur_grid_cell;if(g)var hc=g.grid.head_row.cells[g.cellIndex];if(g&&hc&&hc.fieldname==n&&g.row.docname==docname){hc.template.refresh();}else{cur_frm.fields_dict[table_field].grid.refresh_cell(docname,n);}}}else if(cur_frm){cur_frm.refresh_field(n)}}
-set_field_options=function(n,txt){cur_frm.set_df_property(n,'options',txt)}
-set_field_permlevel=function(n,level){cur_frm.set_df_property(n,'permlevel',level)}
-toggle_field=function(n,hidden){var df=Meta.get_field(cur_frm.doctype,n,cur_frm.docname);if(df){df.hidden=hidden;refresh_field(n);}
-else{console.log((hidden?"hide_field":"unhide_field")+" cannot find field "+n);}}
-hide_field=function(n){if(cur_frm){if(n.substr)toggle_field(n,1);else{for(var i in n)toggle_field(n[i],1)}}}
-unhide_field=function(n){if(cur_frm){if(n.substr)toggle_field(n,0);else{for(var i in n)toggle_field(n[i],0)}}}
-get_field_obj=function(fn){return cur_frm.fields_dict[fn];}
-set_missing_values=function(doc,dict){var fields_to_set={};$.each(dict,function(i,v){if(!doc[i]){fields_to_set[i]=v;}});if(fields_to_set){set_multiple(doc.doctype,doc.name,fields_to_set);}}
-/*
- *	lib/js/legacy/widgets/form/form_comments.js
- */
-wn.widgets.form.comments={n_comments:{},comment_list:{},sync:function(dt,dn,r){var f=wn.widgets.form.comments;f.n_comments[dn]=r.n_comments;f.comment_list[dn]=r.comment_list;},add:function(input,dt,dn,callback){$c('webnotes.widgets.form.comments.add_comment',wn.widgets.form.comments.get_args(input,dt,dn),function(r,rt){wn.widgets.form.comments.update_comment_list(input,dt,dn);input.value='';callback(input,dt,dn);});},remove:function(dt,dn,comment_id,callback){$c('webnotes.widgets.form.comments.remove_comment',{id:comment_id,dt:dt,dn:dn},callback);},get_args:function(input,dt,dn){return{comment:input.value,comment_by:user,comment_by_fullname:user_fullname,comment_doctype:dt,comment_docname:dn}},update_comment_list:function(input,dt,dn){var f=wn.widgets.form.comments;f.n_comments[dn]=cint(f.n_comments[dn])+1;f.comment_list[dn]=add_lists([f.get_args(input,dt,dn)],f.comment_list[dn]);}}
-CommentList=function(parent,dt,dn){this.wrapper=$a(parent,'div','',{margin:'16px'});this.input_area=$a(this.wrapper,'div','',{margin:'2px'});this.lst_area=$a(this.wrapper,'div','',{margin:'2px'});this.make_input();this.make_lst();this.dt;this.dn;}
-CommentList.prototype.run=function(){this.lst.run();}
-CommentList.prototype.make_input=function(){var me=this;this.input=$a(this.input_area,'textarea','',{height:'60px',width:'300px',fontSize:'14px'});this.btn=$btn($a(this.input_area,'div'),'Post',function(){me.add_comment();},{marginTop:'8px'});}
-CommentList.prototype.add_comment=function(){var me=this;var callback=function(input,dt,dn){me.lst.run();}
-wn.widgets.form.comments.add(this.input,cur_frm.docname,cur_frm.doctype,callback)}
-CommentList.prototype.make_lst=function(){if(!this.lst){wn.require('js/listing.js');var l=new Listing('Comments',1);var me=this;l.colwidths=['100%'];l.opts.hide_export=1;l.opts.hide_print=1;l.opts.hide_refresh=1;l.opts.no_border=1;l.opts.hide_rec_label=0;l.opts.show_calc=0;l.opts.round_corners=0;l.opts.alt_cell_style={};l.opts.cell_style={padding:'3px'};l.no_rec_message='No comments yet. Be the first one to comment!';l.get_query=function(){this.query=repl("select t1.name, t1.comment, t1.comment_by, '', \
-   t1.creation, t1.comment_doctype, t1.comment_docname, \
-   ifnull(concat_ws(' ',ifnull(t2.first_name,''),ifnull(t2.middle_name,''),\
-   ifnull(t2.last_name,'')),''), '', \
-   DAYOFMONTH(t1.creation), MONTHNAME(t1.creation), YEAR(t1.creation), \
-   hour(t1.creation), minute(t1.creation), second(t1.creation) \
-   from `tabComment` t1, `tabProfile` t2 \
-   where t1.comment_doctype = '%(dt)s' and t1.comment_docname = '%(dn)s' \
-   and t1.comment_by = t2.name order by t1.creation desc",{dt:me.dt,dn:me.dn});this.query_max=repl("select count(name) from `tabComment` where \
-  comment_doctype='%(dt)s' and comment_docname='%(dn)s'",{'dt':me.dt,'dn':me.dn});}
-l.show_cell=function(cell,ri,ci,d){new CommentItem(cell,ri,ci,d,me)}
-this.lst=l;this.lst.make(this.lst_area);}}
-CommentItem=function(cell,ri,ci,d,comment){this.comment=comment;$y(cell,{padding:'4px 0px'})
-var t=make_table(cell,1,3,'100%',['15%','65%','20%'],{padding:'4px'});this.img=$a($td(t,0,0),'img','',{width:'40px'});this.cmt_by=$a($td(t,0,0),'div');this.set_picture(d,ri);this.cmt_dtl=$a($td(t,0,1),'div','comment',{fontSize:'11px'});this.cmt=$a($td(t,0,1),'div','',{fontSize:'14px'});this.show_cmt($td(t,0,1),ri,ci,d);this.cmt_delete($td(t,0,2),ri,ci,d);}
-CommentItem.prototype.set_picture=function(d,ri){this.user.src=wn.user_info(d[ri][2]).image;this.cmt_by.innerHTML=d[ri][7]?d[ri][7]:d[ri][2];}
-CommentItem.prototype.show_cmt=function(cell,ri,ci,d){if(d[ri][4]){hr=d[ri][12];min=d[ri][13];sec=d[ri][14];if(parseInt(hr)>12){time=(parseInt(hr)-12)+':'+min+' PM'}
-else{time=hr+':'+min+' AM'}}
-this.cmt_dtl.innerHTML='On '+d[ri][10].substring(0,3)+' '+d[ri][9]+', '+d[ri][11]+' at '+time;this.cmt.innerHTML=replace_newlines(d[ri][1]);}
-CommentItem.prototype.cmt_delete=function(cell,ri,ci,d){var me=this;if(d[ri][2]==user||d[ri][3]==user){del=$a(cell,'i','icon-remove-sign',{cursor:'pointer'});del.cmt_id=d[ri][0];del.onclick=function(){wn.widgets.form.comments.remove(cur_frm.doctype,cur_frm.docname,this.cmt_id,function(){me.comment.lst.run();})}}}
-/*
- *	lib/js/legacy/wn/widgets/form/sidebar.js
- */
-wn.widgets.form.sidebar={Sidebar:function(form){var me=this;this.form=form;this.opts={sections:[{title:'Actions',items:[{type:'link',label:'New',icon:'icon-plus',display:function(){return in_list(profile.can_create,form.doctype)},onclick:function(){new_doc(me.form.doctype)}},{type:'link',label:'List',icon:'icon-list',display:function(){return!me.form.meta.issingle&&!me.form.meta.read_only;},onclick:function(){window.location.href="#!List/"+me.form.doctype}},{type:'link',label:'Refresh',icon:'icon-refresh',onclick:function(){me.form.reload_doc()}},{type:'link',label:'Print',display:function(){return!(me.form.doc.__islocal||me.form.meta.allow_print);},icon:'icon-print',onclick:function(){me.form.print_doc()}},{type:'link',label:'Email',display:function(){return!(me.form.doc.__islocal||me.form.meta.allow_email);},icon:'icon-envelope',onclick:function(){me.form.email_doc()}},{type:'link',label:'Copy',display:function(){return in_list(profile.can_create,me.form.doctype)&&!me.form.meta.allow_copy},icon:'icon-file',onclick:function(){me.form.copy_doc()}},{type:'link',label:'Delete',display:function(){return(cint(me.form.doc.docstatus)!=1)&&!me.form.doc.__islocal&&wn.model.can_delete(me.form.doctype);},icon:'icon-remove-sign',onclick:function(){me.form.savetrash()}}],display:function(){return me.form.meta.hide_toolbar?false:true;}},{title:'Assign To',render:function(wrapper){me.form.assign_to=new wn.widgets.form.sidebar.AssignTo(wrapper,me,me.form.doctype,me.form.docname);},display:function(){return!me.form.doc.__islocal}},{title:'Attachments',render:function(wrapper){me.form.attachments=new wn.widgets.form.sidebar.Attachments(wrapper,me,me.form.doctype,me.form.docname);},display:function(){return me.form.meta.allow_attach}},{title:'Comments',render:function(wrapper){new wn.widgets.form.sidebar.Comments(wrapper,me,me.form.doctype,me.form.docname);},display:function(){return!me.form.doc.__islocal}},{title:'Tags',render:function(wrapper){me.form.taglist=new TagList(wrapper,me.form.doc._user_tags?me.form.doc._user_tags.split(','):[],me.form.doctype,me.form.docname,0,function(){});},display:function(){return!me.form.doc.__islocal}},{title:'Users',render:function(wrapper){var doc=cur_frm.doc;var scrub_date=function(d){if(d)t=d.split(' ');else return'';return dateutil.str_to_user(t[0])+' '+t[1];}
-$(wrapper).html(repl('<p>Created:<br> <span class="avatar-small">\
-       <img title="%(created_by)s" src="%(avatar_created)s" /></span> \
-       <span class="help small">%(creation)s</span></p>\
-       <p>Modified:<br> <span class="avatar-small">\
-       <img title="%(modified_by)s" src="%(avatar_modified)s" /></span> \
-       <span class="help small">%(modified)s</span></p>',{created_by:wn.user_info(doc.owner).fullname,avatar_created:wn.user_info(doc.owner).image,creation:scrub_date(doc.creation),modified_by:wn.user_info(doc.modified_by).fullname,avatar_modified:wn.user_info(doc.modified_by).image,modified:scrub_date(doc.modified)}));},display:function(){return!me.form.doc.__islocal}}]}
-this.refresh=function(){var parent=this.form.page_layout.sidebar_area;if(!this.sidebar){this.sidebar=new wn.widgets.PageSidebar(parent,this.opts);}else{this.sidebar.refresh();}}}}
-/*
- *	lib/js/legacy/wn/widgets/form/comments.js
- */
-wn.widgets.form.sidebar.Comments=function(parent,sidebar,doctype,docname){var me=this;this.sidebar=sidebar;this.doctype=doctype;this.docname=docname;this.refresh=function(){$c('webnotes.widgets.form.comments.get_comments',{dt:me.doctype,dn:me.docname,limit:5},function(r,rt){wn.widgets.form.comments.sync(me.doctype,me.docname,r);me.make_body();});}
-this.make_body=function(){if(this.wrapper)this.wrapper.innerHTML='';else this.wrapper=$a(parent,'div','sidebar-comment-wrapper');this.input=$a_input(this.wrapper,'text');this.btn=$btn(this.wrapper,'Post',function(){me.add_comment()},{marginLeft:'8px'});this.render_comments()}
-this.render_comments=function(){var f=wn.widgets.form.comments;var cl=f.comment_list[me.docname]
-this.msg=$a(this.wrapper,'div','help small');if(cl){this.msg.innerHTML=cl.length+' out of '+f.n_comments[me.docname]+' comments';if(f.n_comments[me.docname]>cl.length){this.msg.innerHTML+=' <span class="link_type" \
-     onclick="cur_frm.show_comments()">Show all</span>'}
-for(var i=0;i<cl.length;i++){this.render_one_comment(cl[i]);}}else{this.msg.innerHTML='Be the first one to comment.'}}
-this.render_one_comment=function(det){$a(this.wrapper,'div','social sidebar-comment-text','',det.comment);$a(this.wrapper,'div','sidebar-comment-info','',comment_when(det.creation)+' by '+det.comment_by_fullname);}
-this.add_comment=function(){if(!this.input.value)return;this.btn.set_working();wn.widgets.form.comments.add(this.input,me.doctype,me.docname,function(){me.btn.done_working();me.make_body();});}
-this.refresh();}
-/*
- *	lib/js/legacy/wn/widgets/form/attachments.js
- */
-wn.widgets.form.sidebar.Attachments=function(parent,sidebar,doctype,docname){var me=this;this.frm=sidebar.form;this.make=function(){if(this.wrapper)this.wrapper.innerHTML='';else this.wrapper=$a(parent,'div','sidebar-comment-wrapper');this.attach_wrapper=$a(this.wrapper,'div');if(this.frm.doc.__islocal){this.attach_wrapper.innerHTML='<div class="help">Attachments can be \
-    uploaded after saving</div>';return;}
-var n=this.frm.doc.file_list?this.frm.doc.file_list.split('\n').length:0;if(n<this.frm.meta.max_attachments||!this.frm.meta.max_attachments){this.btn=$btn($a(this.wrapper,'div','sidebar-comment-message'),'Add',function(){me.add_attachment()});}
-this.render();}
-this.render=function(){this.attach_wrapper.innerHTML=''
-var doc=locals[me.frm.doctype][me.frm.docname];var fl=doc.file_list?doc.file_list.split('\n'):[];for(var i=0;i<fl.length;i++){new wn.widgets.form.sidebar.Attachment(this.attach_wrapper,fl[i],me.frm)}}
-this.add_attachment=function(){if(!this.dialog){this.dialog=new wn.widgets.Dialog({title:'Add Attachment',width:400})
-$y(this.dialog.body,{margin:'13px'})
-this.dialog.make();}
-this.dialog.body.innerHTML='';this.dialog.show();wn.upload.make({parent:this.dialog.body,args:{from_form:1,doctype:doctype,docname:docname},callback:wn.widgets.form.file_upload_done});}
-this.make();}
-wn.widgets.form.sidebar.Attachment=function(parent,filedet,frm){filedet=filedet.split(',')
-this.filename=filedet[0];this.fileid=filedet[1];this.frm=frm;var me=this;this.wrapper=$a(parent,'div','sidebar-comment-message');this.remove_fileid=function(){var doc=locals[me.frm.doctype][me.frm.docname];var fl=doc.file_list.split('\n');new_fl=[];for(var i=0;i<fl.length;i++){if(fl[i].split(',')[1]!=me.fileid)new_fl.push(fl[i]);}
-doc.file_list=new_fl.join('\n');}
-var display_name=this.fileid;if(this.fileid&&this.fileid.substr(0,8)=='FileData')
-display_name=this.filename;this.ln=$a(this.wrapper,'a','link_type small',{},display_name);this.ln.href='files/'+this.fileid;this.ln.target='_blank';this.del=$a(this.wrapper,'span','close','','&#215;');this.del.onclick=function(){var yn=confirm("Are you sure you want to delete the attachment?")
-if(yn){var callback=function(r,rt){locals[me.frm.doctype][me.frm.docname].modified=r.message;$dh(me.wrapper);me.remove_fileid();frm.refresh();}
-$c('webnotes.widgets.form.utils.remove_attach',args={'fid':me.fileid,dt:me.frm.doctype,dn:me.frm.docname},callback);}}}
-wn.widgets.form.file_upload_done=function(doctype,docname,fileid,filename,at_id,new_timestamp){var doc=locals[doctype][docname];if(doc.file_list){var fl=doc.file_list.split('\n')
-fl.push(filename+','+fileid)
-doc.file_list=fl.join('\n');}
-else
-doc.file_list=filename+','+fileid;doc.modified=new_timestamp;var frm=wn.views.formview[doctype].frm;frm.attachments.dialog.hide();msgprint('File Uploaded Sucessfully.');frm.refresh();}
-/*
- *	lib/js/legacy/wn/widgets/form/assign_to.js
- */
-wn.widgets.form.sidebar.AssignTo=Class.extend({init:function(parent,sidebar,doctype,docname){var me=this;this.doctype=doctype;this.name=docname;this.wrapper=$a(parent,'div','sidebar-comment-wrapper');this.body=$a(this.wrapper,'div');this.add_btn=$btn($a(this.wrapper,'div','sidebar-comment-message'),'Assign',function(){me.add();})
-this.refresh();},refresh:function(){var me=this;$c('webnotes.widgets.form.assign_to.get',{doctype:me.doctype,name:me.name},function(r,rt){me.render(r.message)})},render:function(d){var me=this;$(this.body).empty();if(this.dialog){this.dialog.hide();}
-for(var i=0;i<d.length;i++){$(this.body).append(repl('<div>%(owner)s \
-    <a class="close" href="#" data-owner="%(owner)s">&#215</a></div>',d[i]))}
-$(this.body).find('a.close').click(function(){$c('webnotes.widgets.form.assign_to.remove',{doctype:me.doctype,name:me.name,assign_to:$(this).attr('data-owner')},function(r,rt){me.render(r.message);});return false;});},add:function(){var me=this;if(!me.dialog){me.dialog=new wn.widgets.Dialog({title:'Add to To Do',width:350,fields:[{fieldtype:'Link',fieldname:'assign_to',options:'Profile',label:'Assign To',description:'Add to To Do List of',reqd:true},{fieldtype:'Data',fieldname:'description',label:'Comment'},{fieldtype:'Date',fieldname:'date',label:'Complete By'},{fieldtype:'Select',fieldname:'priority',label:'Priority',options:'Low\nMedium\nHigh','default':'Medium'},{fieldtype:'Check',fieldname:'notify',label:'Notify By Email'},{fieldtype:'Button',label:'Add',fieldname:'add_btn'}]});me.dialog.fields_dict.add_btn.input.onclick=function(){var assign_to=me.dialog.fields_dict.assign_to.get_value();if(assign_to){$c('webnotes.widgets.form.assign_to.add',{doctype:me.doctype,name:me.name,assign_to:assign_to,description:me.dialog.fields_dict.description.get_value(),priority:me.dialog.fields_dict.priority.get_value(),date:me.dialog.fields_dict.date.get_value(),notify:me.dialog.fields_dict.notify.get_value()},function(r,rt){me.render(r.message);});}}}
-me.dialog.clear();me.dialog.show();}});
-/*
- *	lib/js/wn/app.js
- */
-wn.Application=Class.extend({init:function(){var me=this;if(window.app){wn.call({method:'startup',callback:function(r,rt){wn.provide('wn.boot');wn.boot=r;if(wn.boot.profile.name=='Guest'){window.location='index.html';return;}
-me.startup();}})}else{this.startup();}},startup:function(){this.load_bootinfo();this.make_page_container();this.make_nav_bar();this.set_favicon();$(document).trigger('startup');if(wn.boot){wn.route();}
-$(document).trigger('app_ready');},load_bootinfo:function(){if(wn.boot){LocalDB.sync(wn.boot.docs);wn.control_panel=wn.boot.control_panel;this.set_globals();if(wn.boot.developer_mode){console.log("LocalStorage is OFF for developer mode. Please build before going live.");}}else{this.set_as_guest();}},set_globals:function(){profile=wn.boot.profile;user=wn.boot.profile.name;user_fullname=wn.user_info(user).fullname;user_defaults=profile.defaults;user_roles=profile.roles;user_email=profile.email;sys_defaults=wn.boot.sysdefaults;},set_as_guest:function(){profile={name:'Guest'};user='Guest';user_fullname='Guest';user_defaults={};user_roles=['Guest'];user_email='';sys_defaults={};},make_page_container:function(){wn.container=new wn.views.Container();wn.views.make_403();wn.views.make_404();},make_nav_bar:function(){if(wn.boot){wn.container.wntoolbar=new wn.ui.toolbar.Toolbar();}},logout:function(){var me=this;me.logged_out=true;wn.call({method:'logout',callback:function(r){if(r.exc){console.log(r.exc);}
-me.redirect_to_login();}})},redirect_to_login:function(){window.location.href='index.html';},set_favicon:function(){var link=$('link[type="image/x-icon"]').remove().attr("href");var favicon='\
-   <link rel="shortcut icon" href="'+link+'" type="image/x-icon"> \
-   <link rel="icon" href="'+link+'" type="image/x-icon">'
-$(favicon).appendTo('head');}})
-/*
- *	erpnext/startup/startup.js
- */
-var current_module;var is_system_manager=0;wn.provide('erpnext.startup');erpnext.modules={'Selling':'selling-home','Accounts':'accounts-home','Stock':'stock-home','Buying':'buying-home','Support':'support-home','Projects':'projects-home','Production':'production-home','Website':'website-home','HR':'hr-home','Setup':'Setup','Activity':'activity','To Do':'todo','Calendar':'calendar','Messages':'messages','Knowledge Base':'questions','Dashboard':'dashboard'}
-wn.provide('wn.modules');$.extend(wn.modules,erpnext.modules);wn.modules['Core']='Setup';erpnext.startup.set_globals=function(){if(inList(user_roles,'System Manager'))is_system_manager=1;}
-erpnext.startup.start=function(){console.log('Starting up...');$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(user!='Guest'){if(wn.boot.user_background){erpnext.set_user_background(wn.boot.user_background);}
-wn.boot.profile.allow_modules=wn.boot.profile.allow_modules.concat(['To Do','Knowledge Base','Calendar','Activity','Messages'])
-erpnext.toolbar.setup();erpnext.startup.set_periodic_updates();$('footer').html('<div class="web-footer erpnext-footer">\
-   <a href="#!attributions">ERPNext | Attributions and License</a></div>');if(in_list(user_roles,'System Manager')&&(wn.boot.setup_complete=='No')){wn.require("js/app/complete_setup.js");erpnext.complete_setup.show();}
-if(wn.boot.expires_on&&in_list(user_roles,'System Manager')){var today=dateutil.str_to_obj(dateutil.get_today());var expires_on=dateutil.str_to_obj(wn.boot.expires_on);var diff=dateutil.get_diff(expires_on,today);if(0<=diff&&diff<=15){var expiry_string=diff==0?"today":repl("in %(diff)s day(s)",{diff:diff});$('header').append(repl('<div class="expiry-info"> \
-     Your ERPNext subscription will <b>expire %(expiry_string)s</b>. \
-     Please renew your subscription to continue using ERPNext \
-     (and remove this annoying banner). \
-    </div>',{expiry_string:expiry_string}));}else if(diff<0){$('header').append(repl('<div class="expiry-info"> \
-     This ERPNext subscription <b>has expired</b>. \
-    </div>',{expiry_string:expiry_string}));}}
-erpnext.set_about();if(wn.control_panel.custom_startup_code)
-eval(wn.control_panel.custom_startup_code);}}
-erpnext.update_messages=function(reset){if(inList(['Guest'],user)||!wn.session_alive){return;}
-if(!reset){var set_messages=function(r){if(!r.exc){erpnext.toolbar.set_new_comments(r.message.unread_messages);var show_in_circle=function(parent_id,msg){var parent=$('#'+parent_id);if(parent){if(msg){parent.find('span:first').text(msg);parent.toggle(true);}else{parent.toggle(false);}}}
-show_in_circle('unread_messages',r.message.unread_messages.length);show_in_circle('open_support_tickets',r.message.open_support_tickets);show_in_circle('things_todo',r.message.things_todo);show_in_circle('todays_events',r.message.todays_events);show_in_circle('open_tasks',r.message.open_tasks);show_in_circle('unanswered_questions',r.message.unanswered_questions);}else{clearInterval(wn.updates.id);}}
-wn.call({method:'startup.startup.get_global_status_messages',callback:set_messages});}else{erpnext.toolbar.set_new_comments(0);$('#unread_messages').toggle(false);}}
-erpnext.startup.set_periodic_updates=function(){wn.updates={};if(wn.updates.id){clearInterval(wn.updates.id);}
-wn.updates.id=setInterval(erpnext.update_messages,60000);}
-erpnext.set_user_background=function(src){set_style(repl('#body_div { background: url("files/%(src)s") repeat;}',{src:src}))}
-$(document).bind('startup',function(){erpnext.startup.start();});erpnext.send_message=function(opts){if(opts.btn){$(opts.btn).start_working();}
-wn.call({method:'website.send_message',args:opts,callback:function(r){if(opts.btn){$(opts.btn).done_working();}
-if(opts.callback)opts.callback(r)}});}
-erpnext.hide_naming_series=function(){if(cur_frm.fields_dict.naming_series){hide_field('naming_series');if(cur_frm.doc.__islocal){unhide_field('naming_series');}}}
-/*
- *	erpnext/startup/js/modules.js
- */
-wn.provide('erpnext.module_page');erpnext.module_page.setup_page=function(module,wrapper){erpnext.module_page.hide_links(wrapper);erpnext.module_page.make_list(module,wrapper);$(wrapper).find("a[title]").tooltip({delay:{show:500,hide:100}});}
-erpnext.module_page.hide_links=function(wrapper){$(wrapper).find('[href*="List/"]').each(function(){var href=$(this).attr('href');var dt=href.split('/')[1];if(wn.boot.profile.all_read.indexOf(get_label_doctype(dt))==-1){var txt=$(this).text();$(this).parent().css('color','#999').html(txt);}});$(wrapper).find('[data-doctype]').each(function(){var dt=$(this).attr('data-doctype');if(wn.boot.profile.all_read.indexOf(dt)==-1){var txt=$(this).text();$(this).parent().css('color','#999').html(txt);}});$(wrapper).find('[href*="Form/"]').each(function(){var href=$(this).attr('href');var dt=href.split('/')[1];if(wn.boot.profile.all_read.indexOf(get_label_doctype(dt))==-1){var txt=$(this).text();$(this).parent().css('color','#999').html(txt);}});$(wrapper).find('[data-role]').each(function(){if(!has_common(user_roles,[$(this).attr("data-role"),"System Manager"])){var html=$(this).html();$(this).parent().css('color','#999');$(this).replaceWith(html);}});}
-erpnext.module_page.make_list=function(module,wrapper){var $w=$(wrapper).find('.reports-list');var $parent1=$('<div style="width: 45%; float: left; margin-right: 4.5%"></div>').appendTo($w);var $parent2=$('<div style="width: 45%; float: left;"></div>').appendTo($w);wrapper.list1=new wn.ui.Listing({parent:$parent1,method:'utilities.get_sc_list',render_row:function(row,data){if(!data.parent_doc_type)data.parent_doc_type=data.doc_type;$(row).html(repl('<a href="#!Report/%(doc_type)s/%(criteria_name)s" \
-    data-doctype="%(parent_doc_type)s">\
-    %(criteria_name)s</a>',data))},args:{module:module},no_refresh:true,callback:function(r){erpnext.module_page.hide_links($parent1)}});wrapper.list1.run();wrapper.list2=new wn.ui.Listing({parent:$parent2,method:'utilities.get_report_list',render_row:function(row,data){$(row).html(repl('<a href="#!Report2/%(ref_doctype)s/%(name)s" \
-    data-doctype="%(ref_doctype)s">\
-    %(name)s</a>',data))},args:{module:module},no_refresh:true,callback:function(r){erpnext.module_page.hide_links($parent2)}});wrapper.list2.run();$parent1.find('.list-toolbar-wrapper').prepend("<div class=\"show-all-reports\">\
-   <a href=\"#List/Search Criteria\"> [ List Of All Reports ]</a></div>");$parent2.find('.list-toolbar-wrapper').prepend("<div class=\"show-all-reports\">\
-   <a href=\"#List/Report\"> [ List Of All Reports (New) ]</a></div>");}
-/*
- *	erpnext/startup/js/toolbar.js
- */
-wn.provide('erpnext.toolbar');erpnext.toolbar.setup=function(){erpnext.toolbar.add_modules();$('#toolbar-user').append('<li><a href="#!profile-settings">Profile Settings</a></li>');$('.navbar .pull-right').append('\
-  <li><a href="#!messages" title="Unread Messages"><span class="navbar-new-comments"></span></a></li>');$('.navbar .pull-right').prepend('<li class="dropdown">\
-  <a class="dropdown-toggle" data-toggle="dropdown" href="#" \
-   onclick="return false;">Help<b class="caret"></b></a>\
-  <ul class="dropdown-menu" id="toolbar-help">\
-  </ul></li>')
-$('#toolbar-help').append('<li><a href="https://erpnext.com/manual" target="_blank">\
-  Documentation</a></li>')
-$('#toolbar-help').append('<li><a href="http://groups.google.com/group/erpnext-user-forum" target="_blank">\
-  Forum</a></li>')
-$('#toolbar-help').append('<li><a href="http://www.providesupport.com?messenger=iwebnotes" target="_blank">\
-  Live Chat (Office Hours)</a></li>')
-erpnext.toolbar.set_new_comments();}
-erpnext.toolbar.add_modules=function(){$('<li class="dropdown">\
-  <a class="dropdown-toggle" data-toggle="dropdown" href="#"\
-   onclick="return false;">Modules<b class="caret"></b></a>\
-  <ul class="dropdown-menu modules">\
-  </ul>\
-  </li>').prependTo('.navbar .nav:first');if(wn.boot.modules_list&&typeof(wn.boot.modules_list)=='string'){wn.boot.modules_list=JSON.parse(wn.boot.modules_list);}
-else
-wn.boot.modules_list=keys(erpnext.modules).sort();for(var i in wn.boot.modules_list){var m=wn.boot.modules_list[i]
-if(m!='Setup'&&wn.boot.profile.allow_modules.indexOf(m)!=-1){args={module:m,module_page:erpnext.modules[m],module_label:m=='HR'?'Human Resources':m}
-$('.navbar .modules').append(repl('<li><a href="#!%(module_page)s" \
-    data-module="%(module)s">%(module_label)s</a></li>',args));}}
-if(user_roles.indexOf("Accounts Manager")!=-1){$('.navbar .modules').append('<li><a href="#!dashboard" \
-   data-module="Dashboard">Dashboard</a></li>');}
-if(user_roles.indexOf("System Manager")!=-1){$('.navbar .modules').append('<li class="divider"></li>\
-  <li><a href="#!Setup" data-module="Setup">Setup</a></li>');}}
-erpnext.toolbar.set_new_comments=function(new_comments){var navbar_nc=$('.navbar-new-comments');if(new_comments&&new_comments.length>0){navbar_nc.text(new_comments.length);navbar_nc.addClass('navbar-new-comments-true')
-$.each(new_comments,function(i,v){var msg='New Message: '+(v[1].length<=100?v[1]:(v[1].substr(0,100)+"..."));var id=v[0].replace('/','-');if(!$('#'+id)[0]){show_alert(msg,id);}})}else{navbar_nc.removeClass('navbar-new-comments-true');navbar_nc.text(0);}}
-/*
- *	erpnext/startup/js/feature_setup.js
- */
-pscript.feature_dict={'fs_projects':{'BOM':{'fields':['project_name']},'Delivery Note':{'fields':['project_name']},'Purchase Invoice':{'entries':['project_name']},'Production Order':{'fields':['project_name']},'Purchase Order':{'po_details':['project_name']},'Purchase Receipt':{'purchase_receipt_details':['project_name']},'Sales Invoice':{'fields':['project_name']},'Sales Order':{'fields':['project_name']},'Stock Entry':{'fields':['project_name']},'Timesheet':{'timesheet_details':['project_name']}},'fs_packing_details':{},'fs_discounts':{'Delivery Note':{'delivery_note_details':['adj_rate']},'Quotation':{'quotation_details':['adj_rate']},'Sales Invoice':{'entries':['adj_rate']},'Sales Order':{'sales_order_details':['adj_rate','ref_rate']}},'fs_purchase_discounts':{'Purchase Order':{'po_details':['purchase_ref_rate','discount_rate','import_ref_rate']},'Purchase Receipt':{'purchase_receipt_details':['purchase_ref_rate','discount_rate','import_ref_rate']},'Purchase Invoice':{'entries':['purchase_ref_rate','discount_rate','import_ref_rate']}},'fs_brands':{'Delivery Note':{'delivery_note_details':['brand']},'Purchase Request':{'indent_details':['brand']},'Item':{'fields':['brand']},'Purchase Order':{'po_details':['brand']},'Purchase Invoice':{'entries':['brand']},'Quotation':{'quotation_details':['brand']},'Sales Invoice':{'entries':['brand']},'Sales BOM':{'fields':['new_item_brand']},'Sales Order':{'sales_order_details':['brand']},'Serial No':{'fields':['brand']}},'fs_after_sales_installations':{'Delivery Note':{'fields':['installation_status','per_installed'],'delivery_note_details':['installed_qty']}},'fs_item_batch_nos':{'Delivery Note':{'delivery_note_details':['batch_no']},'Item':{'fields':['has_batch_no']},'Purchase Receipt':{'purchase_receipt_details':['batch_no']},'Quality Inspection':{'fields':['batch_no']},'Sales and Pruchase Return Wizard':{'return_details':['batch_no']},'Sales Invoice':{'entries':['batch_no']},'Stock Entry':{'mtn_details':['batch_no']},'Stock Ledger Entry':{'fields':['batch_no']}},'fs_item_serial_nos':{'Customer Issue':{'fields':['serial_no']},'Delivery Note':{'delivery_note_details':['serial_no'],'packing_details':['serial_no']},'Installation Note':{'installed_item_details':['serial_no']},'Item':{'fields':['has_serial_no']},'Maintenance Schedule':{'item_maintenance_detail':['serial_no'],'maintenance_schedule_detail':['serial_no']},'Maintenance Visit':{'maintenance_visit_details':['serial_no']},'Purchase Receipt':{'purchase_receipt_details':['serial_no']},'Quality Inspection':{'fields':['item_serial_no']},'Sales and Pruchase Return Wizard':{'return_details':['serial_no']},'Sales Invoice':{'entries':['serial_no']},'Stock Entry':{'mtn_details':['serial_no']},'Stock Ledger Entry':{'fields':['serial_no']}},'fs_item_barcode':{'Item':{'fields':['barcode']},'Delivery Note':{'delivery_note_details':['barcode']},'Sales Invoice':{'entries':['barcode']}},'fs_item_group_in_details':{'Delivery Note':{'delivery_note_details':['item_group']},'Opportunity':{'enquiry_details':['item_group']},'Purchase Request':{'indent_details':['item_group']},'Item':{'fields':['item_group']},'Global Defaults':{'fields':['default_item_group']},'Purchase Order':{'po_details':['item_group']},'Purchase Receipt':{'purchase_receipt_details':['item_group']},'Purchase Voucher':{'entries':['item_group']},'Quotation':{'quotation_details':['item_group']},'Sales Invoice':{'entries':['item_group']},'Sales BOM':{'fields':['serial_no']},'Sales Order':{'sales_order_details':['item_group']},'Serial No':{'fields':['item_group']},'Sales Partner':{'partner_target_details':['item_group']},'Sales Person':{'target_details':['item_group']},'Territory':{'target_details':['item_group']}},'fs_page_break':{'Delivery Note':{'delivery_note_details':['page_break'],'packing_details':['page_break']},'Purchase Request':{'indent_details':['page_break']},'Purchase Order':{'po_details':['page_break']},'Purchase Receipt':{'purchase_receipt_details':['page_break']},'Purchase Voucher':{'entries':['page_break']},'Quotation':{'quotation_details':['page_break']},'Sales Invoice':{'entries':['page_break']},'Sales Order':{'sales_order_details':['page_break']}},'fs_exports':{'Delivery Note':{'fields':['Note','conversion_rate','currency','grand_total_export','in_words_export','rounded_total_export'],'delivery_note_details':['base_ref_rate','amount','basic_rate']},'POS Setting':{'fields':['conversion_rate','currency']},'Quotation':{'fields':['Note HTML','OT Notes','conversion_rate','currency','grand_total_export','in_words_export','rounded_total_export'],'quotation_details':['base_ref_rate','amount','basic_rate']},'Sales Invoice':{'fields':['conversion_rate','currency','grand_total_export','in_words_export','rounded_total_export'],'entries':['base_ref_rate','amount','basic_rate']},'Item':{'ref_rate_details':['ref_currency']},'Sales BOM':{'fields':['currency']},'Sales Order':{'fields':['Note1','OT Notes','conversion_rate','currency','grand_total_export','in_words_export','rounded_total_export'],'sales_order_details':['base_ref_rate','amount','basic_rate']}},'fs_imports':{'Purchase Invoice':{'fields':['conversion_rate','currency','grand_total_import','in_words_import','net_total_import','other_charges_added_import','other_charges_deducted_import'],'entries':['purchase_ref_rate','amount','rate']},'Purchase Order':{'fields':['Note HTML','conversion_rate','currency','grand_total_import','in_words_import','net_total_import','other_charges_added_import','other_charges_deducted_import'],'po_details':['purchase_ref_rate','amount','purchase_rate']},'Purchase Receipt':{'fields':['conversion_rate','currency','grand_total_import','in_words_import','net_total_import','other_charges_added_import','other_charges_deducted_import'],'purchase_receipt_details':['purchase_ref_rate','amount','purchase_rate']},'Supplier Quotation':{'fields':['conversion_rate','currency']}},'fs_item_advanced':{'Item':{'fields':['item_customer_details']}},'fs_sales_extras':{'Address':{'fields':['sales_partner']},'Contact':{'fields':['sales_partner']},'Customer':{'fields':['sales_team']},'Delivery Note':{'fields':['sales_team','Packing List']},'Item':{'fields':['item_customer_details']},'Sales Invoice':{'fields':['sales_team']},'Sales Order':{'fields':['sales_team','Packing List']}},'fs_more_info':{'Delivery Note':{'fields':['More Info']},'Opportunity':{'fields':['More Info']},'Purchase Request':{'fields':['More Info']},'Lead':{'fields':['More Info']},'Purchase Invoice':{'fields':['More Info']},'Purchase Order':{'fields':['More Info']},'Purchase Receipt':{'fields':['More Info']},'Quotation':{'fields':['More Info']},'Sales Invoice':{'fields':['More Info']},'Sales Order':{'fields':['More Info']},},'fs_quality':{'Item':{'fields':['Item Inspection Criteria','inspection_required']},'Purchase Receipt':{'purchase_receipt_details':['qa_no']}},'fs_manufacturing':{'Item':{'fields':['Manufacturing']}},'fs_pos':{'Sales Invoice':{'fields':['is_pos']}},'fs_recurring_invoice':{'Sales Invoice':{'fields':['Recurring Invoice']}}}
-$(document).bind('form_refresh',function(){for(sys_feat in sys_defaults)
-{if(sys_defaults[sys_feat]=='0'&&(sys_feat in pscript.feature_dict))
-{if(cur_frm.doc.doctype in pscript.feature_dict[sys_feat])
-{for(fort in pscript.feature_dict[sys_feat][cur_frm.doc.doctype])
-{if(fort=='fields')
-hide_field(pscript.feature_dict[sys_feat][cur_frm.doc.doctype][fort]);else if(cur_frm.fields_dict[fort])
-{for(grid_field in pscript.feature_dict[sys_feat][cur_frm.doc.doctype][fort])
-cur_frm.fields_dict[fort].grid.set_column_disp(pscript.feature_dict[sys_feat][cur_frm.doc.doctype][fort][grid_field],false);}
-else
-msgprint('Grid "'+fort+'" does not exists');}}}}})
-/*
- *	conf.js
- */
-wn.provide('erpnext');erpnext.set_about=function(){wn.provide('wn.app');$.extend(wn.app,{name:'ERPNext',license:'GNU/GPL - Usage Condition: All "erpnext" branding must be kept as it is',source:'https://github.com/webnotes/erpnext',publisher:'Web Notes Technologies Pvt Ltd, Mumbai',copyright:'&copy; Web Notes Technologies Pvt Ltd',version:'2'});}
-wn.modules_path='erpnext';$(document).bind('toolbar_setup',function(){$('.brand').html((wn.boot.website_settings.brand_html||'erpnext')+' <i class="icon-home icon-white navbar-icon-home" ></i>').css('max-width','200px').css('overflow','hidden').hover(function(){$(this).find('.icon-home').addClass('navbar-icon-home-hover');},function(){$(this).find('.icon-home').removeClass('navbar-icon-home-hover');});});
\ No newline at end of file
diff --git a/public/js/all-web.js b/public/js/all-web.js
deleted file mode 100644
index eb40c58..0000000
--- a/public/js/all-web.js
+++ /dev/null
@@ -1,743 +0,0 @@
-
-/*
- *	lib/js/lib/bootstrap.min.js
- */
-!function(a){a(function(){"use strict",a.support.transition=function(){var b=document.body||document.documentElement,c=b.style,d=c.transition!==undefined||c.WebkitTransition!==undefined||c.MozTransition!==undefined||c.MsTransition!==undefined||c.OTransition!==undefined;return d&&{end:function(){var b="TransitionEnd";return a.browser.webkit?b="webkitTransitionEnd":a.browser.mozilla?b="transitionend":a.browser.opera&&(b="oTransitionEnd"),b}()}}()})}(window.jQuery),!function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype={constructor:c,close:function(b){function f(){e.remove(),e.trigger("closed")}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),e=a(d),e.trigger("close"),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()}},a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a(function(){a("body").on("click.alert.data-api",b,c.prototype.close)})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype={constructor:b,setState:function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},toggle:function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")}},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){a(b.target).button("toggle")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.carousel.defaults,c),this.options.slide&&this.slide(this.options.slide)};b.prototype={cycle:function(){return this.interval=setInterval(a.proxy(this.next,this),this.options.interval),this},to:function(b){var c=this.$element.find(".active"),d=c.parent().children(),e=d.index(c),f=this;if(b>d.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(){return clearInterval(this.interval),this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this;return this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h](),!a.support.transition&&this.$element.hasClass("slide")?(this.$element.trigger("slide"),d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")):(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.trigger("slide"),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})),f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=typeof c=="object"&&c;e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):typeof c=="string"||(c=f.slide)?e[c]():e.cycle()})},a.fn.carousel.defaults={interval:5e3},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api","[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find(".in"),e;d&&d.length&&(e=d.data("collapse"),d.collapse("hide"),e||d.data("collapse",null)),this.$element[b](0),this.transition("addClass","show","shown"),this.$element[b](this.$element[0][c])},hide:function(){var a=this.dimension();this.reset(this.$element[a]()),this.transition("removeClass","hide","hidden"),this.$element[a](0)},reset:function(a){var b=this.dimension();this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element.addClass("collapse")},transition:function(b,c,d){var e=this,f=function(){c=="show"&&e.reset(),e.$element.trigger(d)};this.$element.trigger(c)[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();a(e).collapse(f)})})}(window.jQuery),!function(a){function d(){a(b).parent().removeClass("open")}"use strict";var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e=c.attr("data-target"),f,g;return e||(e=c.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,"")),f=a(e),f.length||(f=c.parent()),g=f.hasClass("open"),d(),!g&&f.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(f,this)):f.call(this)):b&&b()}function f(){this.$backdrop.remove(),this.$backdrop=null}function g(){var b=this;this.isShown&&this.options.keyboard?a(document).on("keyup.dismiss.modal",function(a){a.which==27&&b.hide()}):this.isShown||a(document).off("keyup.dismiss.modal")}"use strict";var b=function(b,c){this.options=a.extend({},a.fn.modal.defaults,c),this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this))};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this;if(this.isShown)return;a("body").addClass("modal-open"),this.isShown=!0,this.$element.trigger("show"),g.call(this),e.call(this,function(){var c=a.support.transition&&b.$element.hasClass("fade");!b.$element.parent().length&&b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in"),c?b.$element.one(a.support.transition.end,function(){b.$element.trigger("shown")}):b.$element.trigger("shown")})},hide:function(b){b&&b.preventDefault();if(!this.isShown)return;var e=this;this.isShown=!1,a("body").removeClass("modal-open"),g.call(this),this.$element.trigger("hide").removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?c.call(this):d.call(this)}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=typeof c=="object"&&c;e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({},e.data(),c.data());b.preventDefault(),e.modal(f)})})}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.show?c.show():(c.hoverState="in",setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show))},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.hide?c.hide():(c.hoverState="out",setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide))},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip();a.find(".tooltip-inner").html(this.getTitle()),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}var b=this,c=this.tip();c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove()},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,delay:0,selector:!1,placement:"top",trigger:"hover",title:"",template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'}}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var b=this.tip(),c=this.getTitle(),d=this.getContent();b.find(".popover-title")[a.type(c)=="object"?"append":"html"](c),b.find(".popover-content > *")[a.type(d)=="object"?"append":"html"](d),b.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",content:"",template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'})}(window.jQuery),!function(a){function b(b,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body").on("click.scroll.data-api",this.selector,d),this.refresh(),this.process()}"use strict",b.prototype={constructor:b,refresh:function(){this.targets=this.$body.find(this.selector).map(function(){var b=a(this).attr("href");return/^#\w/.test(b)&&a(b).length?b:null}),this.offsets=a.map(this.targets,function(b){return a(b).position().top})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.offsets,c=this.targets,d=this.activeTarget,e;for(e=b.length;e--;)d!=c[e]&&a>=b[e]&&(!b[e+1]||a<=b[e+1])&&this.activate(c[e])},activate:function(a){var b;this.activeTarget=a,this.$body.find(this.selector).parent(".active").removeClass("active"),b=this.$body.find(this.selector+'[href="'+a+'"]').parent("li").addClass("active"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active")}},a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a(function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active a").last()[0],b.trigger({type:"show",relatedTarget:e}),f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}},a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a(function(){a("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.$menu=a(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(a),this.hide()},show:function(){var b=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:b.top+b.height,left:b.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(b){var c=this,d,e;return this.query=this.$element.val(),this.query?(d=a.grep(this.source,function(a){if(c.matcher(a))return a}),d=this.sorter(d),d.length?this.render(d.slice(0,this.options.items)).show():this.shown?this.hide():this):this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){var b=[],c=[],d=[],e;while(e=a.shift())e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?c.push(e):d.push(e):b.push(e);return b.concat(c,d)},highlighter:function(a){return a.replace(new RegExp("("+this.query+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),(a.browser.webkit||a.browser.msie)&&this.$element.on("keydown",a.proxy(this.keypress,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},keyup:function(a){a.stopPropagation(),a.preventDefault();switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:this.hide();break;default:this.lookup()}},keypress:function(a){a.stopPropagation();if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}},blur:function(a){var b=this;a.stopPropagation(),a.preventDefault(),setTimeout(function(){b.hide()},150)},click:function(a){a.stopPropagation(),a.preventDefault(),this.select()},mouseenter:function(b){this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>'},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;b.preventDefault(),c.typeahead(c.data())})})}(window.jQuery);
-
-/*
- *	lib/js/core.min.js
- */
-
-/*
- *	lib/js/wn/class.js
- */;(function(){var initializing=false,fnTest=/xyz/.test(function(){xyz;})?/\b_super\b/:/.*/;this.Class=function(){};Class.extend=function(prop){var _super=this.prototype;initializing=true;var prototype=new this();initializing=false;for(var name in prop){prototype[name]=typeof prop[name]=="function"&&typeof _super[name]=="function"&&fnTest.test(prop[name])?(function(name,fn){return function(){var tmp=this._super;this._super=_super[name];var ret=fn.apply(this,arguments);this._super=tmp;return ret;};})(name,prop[name]):prop[name];}
-function Class(){if(!initializing&&this.init)
-this.init.apply(this,arguments);}
-Class.prototype=prototype;Class.prototype.constructor=Class;Class.extend=arguments.callee;return Class;};})();
-/*
- *	lib/js/wn/provide.js
- */
-if(!window.wn)wn={}
-wn.provide=function(namespace){var nsl=namespace.split('.');var l=nsl.length;var parent=window;for(var i=0;i<l;i++){var n=nsl[i];if(!parent[n]){parent[n]={}}
-parent=parent[n];}}
-wn.provide('wn.settings');wn.provide('wn.ui');
-/*
- *	lib/js/wn/assets.js
- */
-wn.require=function(items){if(typeof items==="string"){items=[items];}
-var l=items.length;for(var i=0;i<l;i++){var src=items[i];wn.assets.execute(src);}}
-wn.assets={executed_:{},check:function(){if(window._version_number!=localStorage.getItem("_version_number")){localStorage.clear();localStorage.setItem("_version_number",window._version_number)}},exists:function(src){if('localStorage'in window&&localStorage.getItem(src)&&!wn.boot.developer_mode)
-return true},add:function(src,txt){if('localStorage'in window){localStorage.setItem(src,txt);}},get:function(src){return localStorage.getItem(src);},extn:function(src){if(src.indexOf('?')!=-1){src=src.split('?').slice(-1)[0];}
-return src.split('.').slice(-1)[0];},load:function(src){var t=src;$.ajax({url:t,data:{q:Math.floor(Math.random()*1000)},dataType:'text',success:function(txt){wn.assets.add(src,txt);},async:false})},execute:function(src){if(!wn.assets.exists(src)){wn.assets.load(src);}
-var type=wn.assets.extn(src);if(wn.assets.handler[type]){wn.assets.handler[type](wn.assets.get(src),src);wn.assets.executed_[src]=1;}},handler:{js:function(txt,src){wn.dom.eval(txt);},css:function(txt,src){wn.dom.set_style(txt);}}}
-/*
- *	lib/js/wn/dom.js
- */
-wn.provide('wn.dom');wn.dom={id_count:0,by_id:function(id){return document.getElementById(id);},set_unique_id:function(ele){var id='unique-'+wn.dom.id_count;if(ele)
-ele.setAttribute('id',id);wn.dom.id_count++;return id;},eval:function(txt){if(!txt)return;var el=document.createElement('script');el.appendChild(document.createTextNode(txt));document.getElementsByTagName('head')[0].appendChild(el);},set_style:function(txt){if(!txt)return;var se=document.createElement('style');se.type="text/css";if(se.styleSheet){se.styleSheet.cssText=txt;}else{se.appendChild(document.createTextNode(txt));}
-document.getElementsByTagName('head')[0].appendChild(se);},add:function(parent,newtag,className,cs,innerHTML,onclick){if(parent&&parent.substr)parent=wn.dom.by_id(parent);var c=document.createElement(newtag);if(parent)
-parent.appendChild(c);if(className){if(newtag.toLowerCase()=='img')
-c.src=className
-else
-c.className=className;}
-if(cs)wn.dom.css(c,cs);if(innerHTML)c.innerHTML=innerHTML;if(onclick)c.onclick=onclick;return c;},css:function(ele,s){if(ele&&s){for(var i in s)ele.style[i]=s[i];};return ele;},placeholder:function(dim,letter){function getsinglecol(){return Math.min(Math.round(Math.random()*9)*Math.round(Math.random()*1)+3,9)}
-function getcol(){return''+getsinglecol()+getsinglecol()+getsinglecol();}
-args={width:Math.round(flt(dim)*0.7)+'px',height:Math.round(flt(dim)*0.7)+'px',padding:Math.round(flt(dim)*0.15)+'px','font-size':Math.round(flt(dim)*0.6)+'px',col1:getcol(),col2:getcol(),letter:letter.substr(0,1).toUpperCase()}
-return repl('<div style="\
-   height: %(height)s; \
-   width: %(width)s; \
-   font-size: %(font-size)s; \
-   color: #fff; \
-   text-align: center; \
-   padding: %(padding)s; \
-   background: -moz-linear-gradient(top,  #%(col1)s 0%, #%(col2)s 99%); /* FF3.6+ */\
-   background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#%(col1)s), color-stop(99%,#%(col2)s)); /* Chrome,Safari4+ */\
-   background: -webkit-linear-gradient(top,  #%(col1)s 0%,#%(col2)s 99%); /* Chrome10+,Safari5.1+ */\
-   background: -o-linear-gradient(top,  #%(col1)s 0%,#%(col2)s 99%); /* Opera 11.10+ */\
-   background: -ms-linear-gradient(top,  #%(col1)s 0%,#%(col2)s 99%); /* IE10+ */\
-   background: linear-gradient(top,  #%(col1)s 0%,#%(col2)s 99%); /* W3C */\
-   filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#%(col1)s\', endColorstr=\'#%(col2)s\',GradientType=0 ); /* IE6-9 */\
-   ">%(letter)s</div>',args);}}
-wn.get_cookie=function(c){var clist=(document.cookie+'').split(';');var cookies={};for(var i=0;i<clist.length;i++){var tmp=clist[i].split('=');cookies[strip(tmp[0])]=strip(tmp[1]);}
-return cookies[c];}
-wn.dom.set_box_shadow=function(ele,spread){$(ele).css('-moz-box-shadow','0px 0px '+spread+'px rgba(0,0,0,0.3);')
-$(ele).css('-webkit-box-shadow','0px 0px '+spread+'px rgba(0,0,0,0.3);')
-$(ele).css('-box-shadow','0px 0px '+spread+'px rgba(0,0,0,0.3);')};(function($){$.fn.add_options=function(options_list){for(var i=0;i<options_list.length;i++){var v=options_list[i];value=v.value||v;label=v.label||v;$('<option>').html(label).attr('value',value).appendTo(this);}
-this.selectedIndex=0;return $(this);}
-$.fn.set_working=function(){var ele=this.get(0);$(ele).attr('disabled','disabled');if(ele.loading_img){$(ele.loading_img).toggle(true);}else{ele.loading_img=$('<img src="images/lib/ui/button-load.gif" \
-    style="margin-left: 4px; margin-bottom: -2px; display: inline;" />').insertAfter(ele);}}
-$.fn.done_working=function(){var ele=this.get(0);$(ele).attr('disabled',null);if(ele.loading_img){$(ele.loading_img).toggle(false);};}})(jQuery);wn.to_csv=function(data){var res=[];$.each(data,function(i,row){row=$.map(row,function(col){return typeof(col)==="string"?('"'+col.replace(/"/g,'\"')+'"'):col;});res.push(row.join(","));});return res.join("\n");}
-/*
- *	lib/js/wn/model.js
- */
-wn.provide('wn.model');wn.model={no_value_type:['Section Break','Column Break','HTML','Table','Button','Image'],new_names:{},with_doctype:function(doctype,callback){if(locals.DocType[doctype]){callback();}else{wn.call({method:'webnotes.widgets.form.load.getdoctype',args:{doctype:doctype},callback:callback});}},with_doc:function(doctype,name,callback){if(!name)name=doctype;if(locals[doctype]&&locals[doctype][name]){callback(name);}else{wn.call({method:'webnotes.widgets.form.load.getdoc',args:{doctype:doctype,name:name},callback:function(r){callback(name,r);}});}},can_delete:function(doctype){if(!doctype)return false;return wn.boot.profile.can_cancel.indexOf(doctype)!=-1;},has_value:function(dt,dn,fn){var val=locals[dt]&&locals[dt][dn]&&locals[dt][dn][fn];var df=wn.meta.get_docfield(dt,fn,dn);if(df.fieldtype=='Table'){var ret=false;$.each(locals[df.options]||{},function(k,d){if(d.parent==dn&&d.parenttype==dt&&d.parentfield==df.fieldname){ret=true;}});}else{var ret=!is_null(val);}
-return ret?true:false;}}
-/*
- *	lib/js/wn/meta.js
- */
-wn.provide('wn.meta.docfield_map');wn.provide('wn.meta.docfield_list');wn.provide('wn.meta.doctypes');$.extend(wn.meta,{add_field:function(df){wn.provide('wn.meta.docfield_map.'+df.parent);wn.meta.docfield_map[df.parent][df.fieldname||df.label]=df;if(!wn.meta.docfield_list[df.parent])
-wn.meta.docfield_list[df.parent]=[];for(var i in wn.meta.docfield_list[df.parent]){var d=wn.meta.docfield_list[df.parent][i];if(df.fieldname==d.fieldname)
-return;}
-wn.meta.docfield_list[df.parent].push(df);},get_docfield:function(dt,fn,dn){if(dn&&local_dt[dt]&&local_dt[dt][dn]){return local_dt[dt][dn][fn];}else{return wn.meta.docfield_map[dt][fn];}}});
-/*
- *	lib/js/wn/misc/tools.js
- */
-wn.markdown=function(txt){if(!wn.md2html){wn.require('js/lib/showdown.js');wn.md2html=new Showdown.converter();}
-return'<div class="markdown">'+wn.md2html.makeHtml(txt)+'</div>';}
-/*
- *	lib/js/wn/misc/user.js
- */
-wn.user_info=function(uid){var def={'fullname':uid,'image':'images/lib/ui/no_img_m.gif'}
-if(!wn.boot.user_info)return def
-if(!wn.boot.user_info[uid])return def
-if(!wn.boot.user_info[uid].fullname)
-wn.boot.user_info[uid].fullname=uid;if(!wn.boot.user_info[uid].image)
-wn.boot.user_info[uid].image=def.image;return wn.boot.user_info[uid];}
-wn.provide('wn.user');$.extend(wn.user,{name:(wn.boot?wn.boot.profile.name:'Guest'),has_role:function(rl){if(typeof rl=='string')
-rl=[rl];for(var i in rl){if((wn.boot?wn.boot.profile.roles:['Guest']).indexOf(rl[i])!=-1)
-return true;}},is_report_manager:function(){return wn.user.has_role(['Administrator','System Manager','Report Manager']);}})
-wn.session_alive=true;$(document).bind('mousemove',function(){wn.session_alive=true;if(wn.session_alive_timeout)
-clearTimeout(wn.session_alive_timeout);wn.session_alive_timeout=setTimeout('wn.session_alive=false;',30000);})
-/*
- *	lib/js/lib/json2.js
- */
-var JSON;if(!JSON){JSON={};}
-(function(){"use strict";function f(n){return n<10?'0'+n:n;}
-if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+
-f(this.getUTCMonth()+1)+'-'+
-f(this.getUTCDate())+'T'+
-f(this.getUTCHours())+':'+
-f(this.getUTCMinutes())+':'+
-f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}
-var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
-function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
-if(typeof rep==='function'){value=rep.call(holder,key,value);}
-switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
-gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
-v=partial.length===0?'[]':gap?'[\n'+gap+partial.join(',\n'+gap)+'\n'+mind+']':'['+partial.join(',')+']';gap=mind;return v;}
-if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){if(typeof rep[i]==='string'){k=rep[i];v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
-v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
-if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
-rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
-return str('',{'':value});};}
-if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
-return reviver.call(holder,key,value);}
-text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
-('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
-if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
-throw new SyntaxError('JSON.parse');};}}());
-/*
- *	lib/js/wn/router.js
- */
-wn.re_route={}
-wn.route=function(){if(wn.re_route[window.location.hash]){var re_route_val=wn.get_route_str(wn.re_route[window.location.hash]);var cur_route_val=wn.get_route_str(wn._cur_route);if(decodeURIComponent(re_route_val)===decodeURIComponent(cur_route_val)){window.history.back();return;}else{window.location.hash=wn.re_route[window.location.hash];}}
-wn._cur_route=window.location.hash;route=wn.get_route();switch(route[0]){case"List":wn.views.doclistview.show(route[1]);break;case"Form":if(route.length>3){route[2]=route.splice(2).join('/');}
-wn.views.formview.show(route[1],route[2]);break;case"Report":wn.views.reportview.show(route[1],route[2]);break;case"Report2":wn.views.reportview2.show();break;default:wn.views.pageview.show(route[0]);}}
-wn.get_route=function(route){return $.map(wn.get_route_str(route).split('/'),function(r){return decodeURIComponent(r);});}
-wn.get_route_str=function(route){if(!route)
-route=window.location.hash;if(route.substr(0,1)=='#')route=route.substr(1);if(route.substr(0,1)=='!')route=route.substr(1);return route;}
-wn.set_route=function(){route=$.map(arguments,function(a){return encodeURIComponent(a)}).join('/');window.location.hash=route;wn.app.set_favicon();}
-wn._cur_route=null;$(window).bind('hashchange',function(){if(location.hash==wn._cur_route)
-return;wn.route();});
-/*
- *	lib/js/wn/ui/listing.js
- */
-wn.provide('wn.ui');wn.ui.Listing=Class.extend({init:function(opts){this.opts=opts||{};this.page_length=20;this.start=0;this.data=[];if(opts){this.make();}},prepare_opts:function(){if(this.opts.new_doctype){if(wn.boot.profile.can_create.indexOf(this.opts.new_doctype)==-1){this.opts.new_doctype=null;}else{this.opts.new_doctype=get_doctype_label(this.opts.new_doctype);}}
-if(!this.opts.no_result_message){this.opts.no_result_message='Nothing to show'}},make:function(opts){if(opts){this.opts=opts;}
-this.prepare_opts();$.extend(this,this.opts);$(this.parent).html(repl('\
-   <div class="wnlist">\
-    <h3 class="title hide">%(title)s</h3>\
-    \
-    <div class="list-filters hide">\
-     <div class="show_filters well">\
-      <div class="filter_area"></div>\
-      <div>\
-       <button class="btn btn-small btn-info search-btn">\
-        <i class="icon-refresh icon-white"></i> Search</button>\
-       <button class="btn btn-small add-filter-btn">\
-        <i class="icon-plus"></i> Add Filter</button>\
-      </div>\
-     </div>\
-    </div>\
-    \
-    <div style="margin-bottom:9px" class="list-toolbar-wrapper">\
-     <div class="list-toolbar" style="display:inline-block; margin-right: 10px;">\
-     </div>\
-     <div style="display:inline-block; width: 24px; margin-left: 4px">\
-      <img src="images/lib/ui/button-load.gif" \
-      class="img-load"/></div>\
-    </div><div style="clear:both"></div>\
-    \
-    <div class="no-result help hide">\
-     %(no_result_message)s\
-    </div>\
-    \
-    <div class="result">\
-     <div class="result-list"></div>\
-    </div>\
-    \
-    <div class="paging-button">\
-     <button class="btn btn-small btn-more hide">More...</div>\
-    </div>\
-   </div>\
-  ',this.opts));this.$w=$(this.parent).find('.wnlist');this.set_events();if(this.appframe){this.$w.find('.list-toolbar-wrapper').toggle(false);}
-if(this.show_filters){this.make_filters();}},add_button:function(label,click,icon){if(this.appframe){return this.appframe.add_button(label,click,icon)}else{$button=$('<button class="btn btn-small"></button>').appendTo(this.$w.find('.list-toolbar'))
-if(icon){$('<i>').addClass(icon).appendTo($button);}
-$button.html(label).click(click);return $button}},show_view:function($btn,$div,$btn_unsel,$div_unsel){$btn_unsel.removeClass('btn-info');$btn_unsel.find('i').removeClass('icon-white');$div_unsel.toggle(false);$btn.addClass('btn-info');$btn.find('i').addClass('icon-white');$div.toggle(true);},set_events:function(){var me=this;this.$w.find('.btn-more').click(function(){me.run({append:true});});if(this.title){this.$w.find('h3').html(this.title).toggle(true);}
-if(!(this.hide_refresh||this.no_refresh)){this.add_button('Refresh',function(){me.run();},'icon-refresh');}
-if(this.new_doctype){this.add_button('New '+this.new_doctype,function(){(me.custom_new_doc||me.make_new_doc)(me.new_doctype);},'icon-plus');}
-if(me.show_filters){this.add_button('Show Filters',function(){me.filter_list.show_filters();},'icon-search').addClass('btn-filter');}
-if(me.no_toolbar||me.hide_toolbar){me.$w.find('.list-toolbar-wrapper').toggle(false);}},make_new_doc:function(new_doctype){new_doc(new_doctype);},make_filters:function(){this.filter_list=new wn.ui.FilterList({listobj:this,$parent:this.$w.find('.list-filters').toggle(true),doctype:this.doctype,filter_fields:this.filter_fields});},clear:function(){this.data=[];this.$w.find('.result-list').empty();this.$w.find('.result').toggle(true);this.$w.find('.no-result').toggle(false);this.start=0;},run:function(){var me=this;var a0=arguments[0];var a1=arguments[1];if(a0&&typeof a0=='function')
-this.onrun=a0;if(a0&&a0.callback)
-this.onrun=a0.callback;if(!a1&&!(a0&&a0.append))
-this.start=0;me.set_working(true);wn.call({method:this.opts.method||'webnotes.widgets.query_builder.runquery',args:this.get_call_args(a0),callback:function(r){me.set_working(false);me.render_results(r)},no_spinner:this.opts.no_loading});},set_working:function(flag){this.$w.find('.img-load').toggle(flag);},get_call_args:function(opts){if(!this.method){var query=this.get_query?this.get_query():this.query;query=this.add_limits(query);var args={query_max:this.query_max,as_dict:1}
-args.simple_query=query;}else{var args={limit_start:this.start,limit_page_length:this.page_length}}
-if(this.args)
-$.extend(args,this.args)
-if(this.get_args){$.extend(args,this.get_args(opts));}
-return args;},render_results:function(r){if(this.start==0)this.clear();this.$w.find('.btn-more').toggle(false);if(r.message)r.values=r.message;if(r.values&&r.values.length){this.data=this.data.concat(r.values);this.render_list(r.values);this.update_paging(r.values);}else{if(this.start==0){this.$w.find('.result').toggle(false);this.$w.find('.no-result').toggle(true);}}
-if(this.onrun)this.onrun();if(this.callback)this.callback(r);},render_list:function(values){var m=Math.min(values.length,this.page_length);for(var i=0;i<m;i++){this.render_row(this.add_row(),values[i],this,i);}},update_paging:function(values){if(values.length>=this.page_length){this.$w.find('.btn-more').toggle(true);this.start+=this.page_length;}},add_row:function(){return $('<div class="list-row">').appendTo(this.$w.find('.result-list')).get(0);},refresh:function(){this.run();},add_limits:function(query){query+=' LIMIT '+this.start+','+(this.page_length+1);return query}});
-/*
- *	lib/js/wn/ui/filters.js
- */
-wn.ui.FilterList=Class.extend({init:function(opts){wn.require('js/fields.js');$.extend(this,opts);this.filters=[];this.$w=this.$parent;this.set_events();},set_events:function(){var me=this;this.$w.find('.add-filter-btn').bind('click',function(){me.add_filter();});this.$w.find('.search-btn').bind('click',function(){me.listobj.run();});},show_filters:function(){this.$w.find('.show_filters').toggle();if(!this.filters.length)
-this.add_filter();},add_filter:function(tablename,fieldname,condition,value){this.push_new_filter(tablename,fieldname,condition,value);if(fieldname){this.$w.find('.show_filters').toggle(true);}},push_new_filter:function(tablename,fieldname,condition,value){this.filters.push(new wn.ui.Filter({flist:this,tablename:tablename,fieldname:fieldname,condition:condition,value:value}));},get_filters:function(){var values=[];$.each(this.filters,function(i,f){if(f.field)
-values.push(f.get_value());})
-return values;},update_filters:function(){var fl=[];$.each(this.filters,function(i,f){if(f.field)fl.push(f);})
-this.filters=fl;},get_filter:function(fieldname){for(var i in this.filters){if(this.filters[i].field.df.fieldname==fieldname)
-return this.filters[i];}}});wn.ui.Filter=Class.extend({init:function(opts){$.extend(this,opts);this.doctype=this.flist.doctype;this.make();this.make_select();this.set_events();},make:function(){this.flist.$w.find('.filter_area').append('<div class="list_filter">\
-  <span class="fieldname_select_area"></span>\
-  <select class="condition">\
-   <option value="=">Equals</option>\
-   <option value="like">Like</option>\
-   <option value=">=">Greater or equals</option>\
-   <option value="<=">Less or equals</option>\
-   <option value=">">Greater than</option>\
-   <option value="<">Less than</option>\
-   <option value="in">In</option>\
-   <option value="!=">Not equals</option>\
-  </select>\
-  <span class="filter_field"></span>\
-  <a class="close">&times;</a>\
-  </div>');this.$w=this.flist.$w.find('.list_filter:last-child');},make_select:function(){this.fieldselect=new wn.ui.FieldSelect(this.$w.find('.fieldname_select_area'),this.doctype,this.filter_fields);},set_events:function(){var me=this;this.fieldselect.$select.bind('change',function(){var $selected=$(this).find("option:selected")
-me.set_field($selected.attr("table"),$selected.attr("fieldname"));});this.$w.find('a.close').bind('click',function(){me.$w.css('display','none');var value=me.field.get_value();me.field=null;if(!me.flist.get_filters().length){me.flist.$w.find('.set_filters').toggle(true);me.flist.$w.find('.show_filters').toggle(false);}
-if(value){me.flist.listobj.run();}
-me.flist.update_filters();return false;});me.$w.find('.condition').change(function(){if($(this).val()=='in'){me.set_field(me.field.df.parent,me.field.df.fieldname,'Data');if(!me.field.desc_area)
-me.field.desc_area=$a(me.field.wrapper,'span','help',null,'values separated by comma');}else{me.set_field(me.field.df.parent,me.field.df.fieldname);}});if(me.fieldname){this.set_values(me.tablename,me.fieldname,me.condition,me.value);}else{me.set_field(me.doctype,'name');}},set_values:function(tablename,fieldname,condition,value){this.set_field(tablename,fieldname);if(condition)this.$w.find('.condition').val(condition).change();if(value)this.field.set_input(value)},set_field:function(tablename,fieldname,fieldtype){var me=this;var cur=me.field?{fieldname:me.field.df.fieldname,fieldtype:me.field.df.fieldtype,parent:me.field.df.parent,}:{}
-var df=me.fieldselect.fields_by_name[tablename][fieldname];this.set_fieldtype(df,fieldtype);if(me.field&&cur.fieldname==fieldname&&df.fieldtype==cur.fieldtype&&df.parent==cur.parent){return;}
-me.fieldselect.$select.val(tablename+"."+fieldname);var field_area=me.$w.find('.filter_field').empty().get(0);f=make_field(df,null,field_area,null,0,1);f.df.single_select=1;f.not_in_form=1;f.with_label=0;f.refresh();me.field=f;this.set_default_condition(df,fieldtype);$(me.field.wrapper).find(':input').keydown(function(ev){if(ev.which==13){me.flist.listobj.run();}})},set_fieldtype:function(df,fieldtype){if(df.original_type)
-df.fieldtype=df.original_type;else
-df.original_type=df.fieldtype;df.description='';df.reqd=0;if(fieldtype){df.fieldtype=fieldtype;return;}
-if(df.fieldtype=='Check'){df.fieldtype='Select';df.options='No\nYes';}else if(['Text','Text Editor','Code','Link'].indexOf(df.fieldtype)!=-1){df.fieldtype='Data';}},set_default_condition:function(df,fieldtype){if(!fieldtype){if(df.fieldtype=='Data'){this.$w.find('.condition').val('like');}else{this.$w.find('.condition').val('=');}}},get_value:function(){var me=this;var val=me.field.get_value();var cond=me.$w.find('.condition').val();if(me.field.df.original_type=='Check'){val=(val=='Yes'?1:0);}
-if(cond=='like'){if((val.length===0)||(val.lastIndexOf("%")!==(val.length-1))){val=(val||"")+'%';}}
-return[me.fieldselect.$select.find('option:selected').attr('table'),me.field.df.fieldname,me.$w.find('.condition').val(),cstr(val)];}});wn.ui.FieldSelect=Class.extend({init:function(parent,doctype,filter_fields,with_blank){this.doctype=doctype;this.fields_by_name={};this.with_blank=with_blank;this.$select=$('<select>').appendTo(parent);if(filter_fields){for(var i in filter_fields)
-this.add_field_option(this.filter_fields[i])}else{this.build_options();}},build_options:function(){var me=this;me.table_fields=[];var std_filters=[{fieldname:'name',fieldtype:'Data',label:'ID',parent:me.doctype},{fieldname:'modified',fieldtype:'Date',label:'Last Modified',parent:me.doctype},{fieldname:'owner',fieldtype:'Data',label:'Created By',parent:me.doctype},{fieldname:'creation',fieldtype:'Date',label:'Created On',parent:me.doctype},{fieldname:'_user_tags',fieldtype:'Data',label:'Tags',parent:me.doctype},{fieldname:'docstatus',fieldtype:'Int',label:'Doc Status',parent:me.doctype},];var doctype_obj=locals['DocType'][me.doctype];if(doctype_obj&&cint(doctype_obj.istable)){std_filters=std_filters.concat([{fieldname:'parent',fieldtype:'Data',label:'Parent',parent:me.doctype}]);}
-if(this.with_blank){this.$select.append($('<option>',{value:''}).text(''));}
-$.each(std_filters.concat(wn.meta.docfield_list[me.doctype]),function(i,df){me.add_field_option(df);});$.each(me.table_fields,function(i,table_df){if(table_df.options){$.each(wn.meta.docfield_list[table_df.options],function(i,df){me.add_field_option(df);});}});},add_field_option:function(df){var me=this;if(me.doctype&&df.parent==me.doctype){var label=df.label;var table=me.doctype;if(df.fieldtype=='Table')me.table_fields.push(df);}else{var label=df.label+' ('+df.parent+')';var table=df.parent;}
-if(wn.model.no_value_type.indexOf(df.fieldtype)==-1&&!(me.fields_by_name[df.parent]&&me.fields_by_name[df.parent][df.fieldname])){this.$select.append($('<option>',{value:table+"."+df.fieldname,fieldname:df.fieldname,table:df.parent}).text(label));if(!me.fields_by_name[df.parent])me.fields_by_name[df.parent]={};me.fields_by_name[df.parent][df.fieldname]=df;}}})
-/*
- *	lib/js/wn/views/container.js
- */
-wn.provide('wn.pages');wn.provide('wn.views');wn.views.Container=Class.extend({init:function(){this.container=$('#body_div').get(0);this.page=null;this.pagewidth=$('#body_div').width();this.pagemargin=50;},add_page:function(label,onshow,onhide){var page=$('<div class="content"></div>').attr('id',"page-"+label).appendTo(this.container).get(0);if(onshow)
-$(page).bind('show',onshow);if(onshow)
-$(page).bind('hide',onhide);page.label=label;wn.pages[label]=page;return page;},change_to:function(label){if(this.page&&this.page.label==label){$(this.page).trigger('show');return;}
-var me=this;if(label.tagName){var page=label;}else{var page=wn.pages[label];}
-if(!page){console.log('Page not found '+label);return;}
-if(this.page&&this.page!=page){$(this.page).toggle(false);$(this.page).trigger('hide');}
-if(!this.page||this.page!=page){this.page=page;$(this.page).toggle(true);}
-this.page._route=window.location.hash;document.title=this.page.label;$(this.page).trigger('show');scroll(0,0);return this.page;}});wn.views.add_module_btn=function(parent,module){$(parent).append(repl('<span class="label" style="margin-right: 8px; cursor: pointer;"\
-     onclick="wn.set_route(\'%(module_small)s-home\')">\
-     <i class="icon-home icon-white"></i> %(module)s Home\
-    </span>',{module:module,module_small:module.toLowerCase()}));}
-wn.views.add_list_btn=function(parent,doctype){$(parent).append(repl('<span class="label" style="margin-right: 8px; cursor: pointer;"\
-     onclick="wn.set_route(\'List\', \'%(doctype)s\')">\
-     <i class="icon-list icon-white"></i> %(doctype)s List\
-    </span>',{doctype:doctype}));}
-/*
- *	lib/js/wn/views/pageview.js
- */
-wn.provide('wn.views.pageview');wn.views.pageview={with_page:function(name,callback){if((locals.Page&&locals.Page[name])||name==window.page_name){callback();}else{wn.call({method:'webnotes.widgets.page.getpage',args:{'name':name},callback:callback});}},show:function(name){if(!name)name=(wn.boot?wn.boot.home_page:window.page_name);wn.views.pageview.with_page(name,function(r){if(r&&r.exc){if(!r['403'])wn.container.change_to('404');}else if(!wn.pages[name]){new wn.views.Page(name);}
-wn.container.change_to(name);});}}
-wn.views.Page=Class.extend({init:function(name,wrapper){this.name=name;var me=this;if(name==window.page_name){this.wrapper=document.getElementById('page-'+name);this.wrapper.label=document.title||window.page_name;this.wrapper.page_name=window.page_name;wn.pages[window.page_name]=this.wrapper;}else{this.pagedoc=locals.Page[this.name];this.wrapper=wn.container.add_page(this.name);this.wrapper.label=this.pagedoc.title||this.pagedoc.name;this.wrapper.page_name=this.pagedoc.name;this.wrapper.innerHTML=this.pagedoc.content;wn.dom.eval(this.pagedoc.__script||this.pagedoc.script||'');wn.dom.set_style(this.pagedoc.style||'');}
-this.trigger('onload');$(this.wrapper).bind('show',function(){cur_frm=null;me.trigger('onshow');me.trigger('refresh');});},trigger:function(eventname){var me=this;try{if(pscript[eventname+'_'+this.name]){pscript[eventname+'_'+this.name](me.wrapper);}else if(me.wrapper[eventname]){me.wrapper[eventname](me.wrapper);}}catch(e){console.log(e);}}})
-wn.views.make_404=function(){var page=wn.container.add_page('404');$(page).html('<div class="layout-wrapper">\
-  <h1>Not Found</h1><br>\
-  <p>Sorry we were unable to find what you were looking for.</p>\
-  <p><a href="#">Go back to home</a></p>\
-  </div>').toggle(false);};wn.views.make_403=function(){var page=wn.container.add_page('403');$(page).html('<div class="layout-wrapper">\
-  <h1>Not Permitted</h1><br>\
-  <p>Sorry you are not permitted to view this page.</p>\
-  <p><a href="#">Go back to home</a></p>\
-  </div>').toggle(false);};
-/*
- *	lib/js/wn/request.js
- */
-wn.provide('wn.request');wn.request.url='server.py';wn.request.prepare=function(opts){if(opts.btn)$(opts.btn).set_working();if(opts.show_spinner)set_loading();if(opts.freeze)freeze();if(!opts.args.cmd){console.log(opts)
-throw"Incomplete Request";}}
-wn.request.cleanup=function(opts,r){if(opts.btn)$(opts.btn).done_working();if(opts.show_spinner)hide_loading();if(opts.freeze)unfreeze();if(wn.boot&&wn.boot.sid&&wn.get_cookie('sid')!=wn.boot.sid){if(!wn.app.logged_out){msgprint('Session Expired. Logging you out');wn.app.logout();}
-return;}
-if(r.server_messages){r.server_messages=JSON.parse(r.server_messages)
-msgprint(r.server_messages);}
-if(r.exc){r.exc=JSON.parse(r.exc);if(r.exc instanceof Array){$.each(r.exc,function(i,v){if(v)console.log(v);})}else{console.log(r.exc);}};if(r['403']){wn.container.change_to('403');}
-if(r.docs){LocalDB.sync(r.docs);}
-wn.last_response=r;}
-wn.request.call=function(opts){wn.request.prepare(opts);var ajax_args={url:opts.url||wn.request.url,data:opts.args,type:opts.type||'POST',dataType:opts.dataType||'json',success:function(r,xhr){wn.request.cleanup(opts,r);opts.success&&opts.success(r,xhr.responseText);},error:function(xhr,textStatus){wn.request.cleanup(opts,{});show_alert('Unable to complete request: '+textStatus)
-opts.error&&opts.error(xhr)}};if(opts.progress_bar){var interval=null;$.extend(ajax_args,{xhr:function(){var xhr=jQuery.ajaxSettings.xhr();interval=setInterval(function(){if(xhr.readyState>2){var total=parseInt(xhr.getResponseHeader('Original-Length')||0)||parseInt(xhr.getResponseHeader('Content-Length'));var completed=parseInt(xhr.responseText.length);var percent=(100.0/total*completed).toFixed(2);opts.progress_bar.css('width',(percent<10?10:percent)+'%');}},50);wn.last_xhr=xhr;return xhr;},complete:function(){opts.progress_bar.css('width','100%');clearInterval(interval);}})}
-$.ajax(ajax_args);}
-wn.call=function(opts){var args=$.extend({},opts.args)
-if(opts.module&&opts.page){args.cmd=opts.module+'.page.'+opts.page+'.'+opts.page+'.'+opts.method}else if(opts.method){args.cmd=opts.method;}
-for(key in args){if(args[key]&&typeof args[key]!='string'){args[key]=JSON.stringify(args[key]);}}
-wn.request.call({args:args,success:opts.callback,error:opts.error,btn:opts.btn,freeze:opts.freeze,show_spinner:!opts.no_spinner,progress_bar:opts.progress_bar});}
-/*
- *	lib/js/core.js
- */
-if(!console){var console={log:function(txt){}}}
-window._version_number="%(_version_number)s";$(document).ready(function(){wn.assets.check();wn.provide('wn.app');$.extend(wn.app,new wn.Application());});
-
-/*
- *	lib/js/legacy/globals.js
- */
-wn.provide('wn.widgets.form');wn.provide('wn.widgets.report');wn.provide('wn.utils');wn.provide('wn.model');wn.provide('wn.profile');wn.provide('wn.session');wn.provide('_f');wn.provide('_p');wn.provide('_r');wn.provide('_c');wn.provide('_e');wn.provide('_startup_data')
-wn.settings.no_history=1;var NEWLINE='\n';var profile=null;var user=null;var user_defaults=null;var user_roles=null;var user_fullname=null;var user_email=null;var user_img={};var pscript={};var selector=null;var top_index=91;var _f={};var _p={};var _e={};var _r={};var FILTER_SEP='\1';var frms={};var cur_frm=null;var pscript={};var validated=true;var validation_message='';var tinymce_loaded=null;
-/*
- *	lib/js/legacy/utils/datatype.js
- */
-wn.utils.full_name=function(fn,ln){return fn+(ln?' ':'')+(ln?ln:'')}
-function fmt_money(v){if(v==null||v=='')return'0.00';v=(v+'').replace(/,/g,'');v=parseFloat(v);if(isNaN(v)){return'';}else{var val=2;if(wn.boot.sysdefaults.currency_format=='Millions')val=3;v=v.toFixed(2);var delimiter=",";amount=v+'';var a=amount.split('.',2)
-var d=a[1];var i=parseInt(a[0]);if(isNaN(i)){return'';}
-var minus='';if(v<0){minus='-';}
-i=Math.abs(i);var n=new String(i);var a=[];if(n.length>3)
-{var nn=n.substr(n.length-3);a.unshift(nn);n=n.substr(0,n.length-3);while(n.length>val)
-{var nn=n.substr(n.length-val);a.unshift(nn);n=n.substr(0,n.length-val);}}
-if(n.length>0){a.unshift(n);}
-n=a.join(delimiter);if(d.length<1){amount=n;}
-else{amount=n+'.'+d;}
-amount=minus+amount;return amount;}}
-function toTitle(str){var word_in=str.split(" ");var word_out=[];for(w in word_in){word_out[w]=word_in[w].charAt(0).toUpperCase()+word_in[w].slice(1);}
-return word_out.join(" ");}
-function is_null(v){if(v==null){return 1}else if(v==0){if((v+'').length>=1)return 0;else return 1;}else{return 0}}
-function $s(ele,v,ftype,fopt){if(v==null)v='';if(ftype=='Text'||ftype=='Small Text'){ele.innerHTML=v?v.replace(/\n/g,'<br>'):'';}else if(ftype=='Date'){v=dateutil.str_to_user(v);if(v==null)v=''
-ele.innerHTML=v;}else if(ftype=='Link'&&fopt){ele.innerHTML='';doc_link(ele,fopt,v);}else if(ftype=='Currency'){ele.style.textAlign='right';if(is_null(v))
-ele.innerHTML='';else
-ele.innerHTML=fmt_money(v);}else if(ftype=='Int'){ele.style.textAlign='right';ele.innerHTML=v;}else if(ftype=='Check'){if(v)ele.innerHTML='<img src="images/lib/ui/tick.gif">';else ele.innerHTML='';}else{ele.innerHTML=v;}}
-function clean_smart_quotes(s){if(s){s=s.replace(/\u2018/g,"'");s=s.replace(/\u2019/g,"'");s=s.replace(/\u201c/g,'"');s=s.replace(/\u201d/g,'"');s=s.replace(/\u2013/g,'-');s=s.replace(/\u2014/g,'--');}
-return s;}
-function copy_dict(d){var n={};for(var k in d)n[k]=d[k];return n;}
-function $p(ele,top,left){ele.style.position='absolute';ele.style.top=top+'px';ele.style.left=left+'px';}
-function replace_newlines(t){return t?t.replace(/\n/g,'<br>'):'';}
-function cstr(s){if(s==null)return'';return s+'';}
-function nth(number){number=cint(number);var s='th';if((number+'').substr(-1)=='1')s='st';if((number+'').substr(-1)=='2')s='nd';if((number+'').substr(-1)=='3')s='rd';return number+s;}
-function flt(v,decimals){if(v==null||v=='')return 0;v=(v+'').replace(/,/g,'');v=parseFloat(v);if(isNaN(v))
-v=0;if(decimals!=null)
-return parseFloat(v.toFixed(decimals));return v;}
-function esc_quotes(s){if(s==null)s='';return s.replace(/'/,"\'");}
-var crop=function(s,len){if(s.length>len)
-return s.substr(0,len-3)+'...';else
-return s;}
-var strip=function(s,chars){var s=lstrip(s,chars)
-s=rstrip(s,chars);return s;}
-var lstrip=function(s,chars){if(!chars)chars=['\n','\t',' '];var first_char=s.substr(0,1);while(in_list(chars,first_char)){var s=s.substr(1);first_char=s.substr(0,1);}
-return s;}
-var rstrip=function(s,chars){if(!chars)chars=['\n','\t',' '];var last_char=s.substr(s.length-1);while(in_list(chars,last_char)){var s=s.substr(0,s.length-1);last_char=s.substr(s.length-1);}
-return s;}
-function repl_all(s,s1,s2){var idx=s.indexOf(s1);while(idx!=-1){s=s.replace(s1,s2);idx=s.indexOf(s1);}
-return s;}
-function repl(s,dict){if(s==null)return'';for(key in dict)s=repl_all(s,'%('+key+')s',dict[key]);return s;}
-function keys(obj){var mykeys=[];for(key in obj)mykeys[mykeys.length]=key;return mykeys;}
-function values(obj){var myvalues=[];for(key in obj)myvalues[myvalues.length]=obj[key];return myvalues;}
-function in_list(list,item){for(var i=0;i<list.length;i++)
-if(list[i]==item)return true;return false;}
-function has_common(list1,list2){if(!list1||!list2)return false;for(var i=0;i<list1.length;i++){if(in_list(list2,list1[i]))return true;}
-return false;}
-var inList=in_list;function add_lists(l1,l2){var l=[];for(var k in l1)l.push(l1[k]);for(var k in l2)l.push(l2[k]);return l;}
-function docstring(obj){return JSON.stringify(obj);}
-function DocLink(p,doctype,name,onload){var a=$a(p,'span','link_type');a.innerHTML=a.dn=name;a.dt=doctype;a.onclick=function(){loaddoc(this.dt,this.dn,onload)};return a;}
-var doc_link=DocLink;function roundNumber(num,dec){var result=Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);return result;}
-/*
- *	lib/js/legacy/utils/datetime.js
- */
-function same_day(d1,d2){if(d1.getFullYear()==d2.getFullYear()&&d1.getMonth()==d2.getMonth()&&d1.getDate()==d2.getDate())return true;else return false;}
-var month_list=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];var month_last={1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31}
-var month_list_full=['January','February','March','April','May','June','July','August','September','October','November','December'];var week_list=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];var week_list_full=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];function int_to_str(i,len){i=''+i;if(i.length<len)for(c=0;c<(len-i.length);c++)i='0'+i;return i}
-wn.datetime={str_to_obj:function(d){if(typeof d=="object")return d;if(!d)return new Date();var tm=[null,null];if(d.search(' ')!=-1){var tm=d.split(' ')[1].split(':');var d=d.split(' ')[0];}
-if(d.search('-')!=-1){var t=d.split('-');return new Date(t[0],t[1]-1,t[2],tm[0],tm[1]);}else if(d.search('/')!=-1){var t=d.split('/');return new Date(t[0],t[1]-1,t[2],tm[0],tm[1]);}else{return new Date();}},obj_to_str:function(d){if(typeof d=='string')return d;return d.getFullYear()+'-'+int_to_str(d.getMonth()+1,2)+'-'+int_to_str(d.getDate(),2);},obj_to_user:function(d){return dateutil.str_to_user(dateutil.obj_to_str(d));},get_diff:function(d1,d2){if(typeof d1=='string')d1=dateutil.str_to_obj(d1);if(typeof d2=='string')d2=dateutil.str_to_obj(d2);return((d1-d2)/86400000);},get_day_diff:function(d1,d2){return dateutil.get_diff(new Date(d1.getYear(),d1.getMonth(),d1.getDate(),0,0),new Date(d2.getYear(),d2.getMonth(),d2.getDate(),0,0))},add_days:function(d,days){var dt=dateutil.str_to_obj(d);var new_dt=new Date(dt.getTime()+(days*24*60*60*1000));return dateutil.obj_to_str(new_dt);},add_months:function(d,months){dt=dateutil.str_to_obj(d)
-new_dt=new Date(dt.getFullYear(),dt.getMonth()+months,dt.getDate())
-if(new_dt.getDate()!=dt.getDate()){return dateutil.month_end(new Date(dt.getFullYear(),dt.getMonth()+months,1))}
-return dateutil.obj_to_str(new_dt);},month_start:function(){var d=new Date();return d.getFullYear()+'-'+int_to_str(d.getMonth()+1,2)+'-01';},month_end:function(d){if(!d)var d=new Date();var m=d.getMonth()+1;var y=d.getFullYear();last_date=month_last[m];if(m==2&&(y%4)==0&&((y%100)!=0||(y%400)==0))
-last_date=29;return y+'-'+int_to_str(m,2)+'-'+last_date;},get_user_fmt:function(){var t=sys_defaults.date_format;if(!t)t='dd-mm-yyyy';return t;},str_to_user:function(val,no_time_str){var user_fmt=dateutil.get_user_fmt();var time_str='';if(val==null||val=='')return null;if(val.search(':')!=-1){var tmp=val.split(' ');if(tmp[1])
-time_str=' '+tmp[1];var d=tmp[0];}else{var d=val;}
-if(no_time_str)time_str='';d=d.split('-');if(d.length==3){if(user_fmt=='dd-mm-yyyy')
-val=d[2]+'-'+d[1]+'-'+d[0]+time_str;else if(user_fmt=='dd/mm/yyyy')
-val=d[2]+'/'+d[1]+'/'+d[0]+time_str;else if(user_fmt=='yyyy-mm-dd')
-val=d[0]+'-'+d[1]+'-'+d[2]+time_str;else if(user_fmt=='mm/dd/yyyy')
-val=d[1]+'/'+d[2]+'/'+d[0]+time_str;else if(user_fmt=='mm-dd-yyyy')
-val=d[1]+'-'+d[2]+'-'+d[0]+time_str;}
-return val;},full_str:function(){var d=new Date();return d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate()+' '
-+d.getHours()+':'+d.getMinutes()+':'+d.getSeconds();},user_to_str:function(d){var user_fmt=this.get_user_fmt();var time_str='';if(d.search(/ /)!=-1){time_str=" "+d.split(" ")[1];d=d.split(" ")[0];}
-if(user_fmt=='dd-mm-yyyy'){var d=d.split('-');var val=d[2]+'-'+d[1]+'-'+d[0];}
-else if(user_fmt=='dd/mm/yyyy'){var d=d.split('/');var val=d[2]+'-'+d[1]+'-'+d[0];}
-else if(user_fmt=='yyyy-mm-dd'){var val=d;}
-else if(user_fmt=='mm/dd/yyyy'){var d=d.split('/');var val=d[2]+'-'+d[0]+'-'+d[1];}
-else if(user_fmt=='mm-dd-yyyy'){var d=d.split('-');var val=d[2]+'-'+d[0]+'-'+d[1];}
-return val+time_str;},user_to_obj:function(d){return dateutil.str_to_obj(dateutil.user_to_str(d));},global_date_format:function(d){if(d.substr)d=this.str_to_obj(d);return nth(d.getDate())+' '+month_list_full[d.getMonth()]+' '+d.getFullYear();},get_today:function(){var today=new Date();var m=(today.getMonth()+1)+'';if(m.length==1)m='0'+m;var d=today.getDate()+'';if(d.length==1)d='0'+d;return today.getFullYear()+'-'+m+'-'+d;},get_cur_time:function(){var d=new Date();var hh=d.getHours()+''
-var mm=cint(d.getMinutes()/5)*5+''
-return(hh.length==1?'0'+hh:hh)+':'+(mm.length==1?'0'+mm:mm);}}
-wn.datetime.only_date=function(val){if(val==null||val=='')return null;if(val.search(':')!=-1){var tmp=val.split(' ');var d=tmp[0].split('-');}else{var d=val.split('-');}
-if(d.length==3)
-val=d[2]+'-'+d[1]+'-'+d[0];return val;}
-wn.datetime.time_to_ampm=function(v){if(!v){var d=new Date();var t=[d.getHours(),cint(d.getMinutes()/5)*5+'']}else{var t=v.split(':');}
-if(t.length!=2){show_alert('[set_time] Incorect time format');return;}
-if(t[1].length==1)t[1]='0'+t[1];if(cint(t[0])==0)var ret=['12',t[1],'AM'];else if(cint(t[0])<12)var ret=[cint(t[0])+'',t[1],'AM'];else if(cint(t[0])==12)var ret=['12',t[1],'PM'];else var ret=[(cint(t[0])-12)+'',t[1],'PM'];return ret;}
-wn.datetime.time_to_hhmm=function(hh,mm,am){if(am=='AM'&&hh=='12'){hh='00';}else if(am=='PM'&&hh!='12'){hh=cint(hh)+12;}
-if(!mm)mm='00';if(!hh)hh='00';return hh+':'+mm;}
-function prettyDate(time){if(!time)return''
-var date=time;if(typeof(time)=="string")
-date=new Date((time||"").replace(/-/g,"/").replace(/[TZ]/g," ").replace(/\.[0-9]*/,""));var diff=(((new Date()).getTime()-date.getTime())/1000),day_diff=Math.floor(diff/86400);if(isNaN(day_diff)||day_diff<0)
-return'';return day_diff==0&&(diff<60&&"just now"||diff<120&&"1 minute ago"||diff<3600&&Math.floor(diff/60)+" minutes ago"||diff<7200&&"1 hour ago"||diff<86400&&Math.floor(diff/3600)+" hours ago")||day_diff==1&&"Yesterday"||day_diff<7&&day_diff+" days ago"||day_diff<31&&Math.ceil(day_diff/7)+" weeks ago"||day_diff<365&&Math.ceil(day_diff/30)+" months ago"||"more than "+Math.floor(day_diff/365)+" year(s) ago";}
-if(typeof jQuery!="undefined")
-jQuery.fn.prettyDate=function(){return this.each(function(){var date=prettyDate(this.title);if(date)
-jQuery(this).text(date);});};var comment_when=prettyDate;wn.datetime.comment_when=prettyDate;var date=dateutil=wn.datetime;var get_today=wn.datetime.get_today
-var time_to_ampm=wn.datetime.time_to_ampm;var time_to_hhmm=wn.datetime.time_to_hhmm;var only_date=wn.datetime.only_date;
-/*
- *	lib/js/legacy/utils/dom.js
- */
-wn.tinymce={add_simple:function(ele,height){if(ele.myid){tinyMCE.execCommand('mceAddControl',true,ele.myid);return;}
-ele.myid=wn.dom.set_unique_id(ele);$(ele).tinymce({script_url:'js/lib/tiny_mce_33/tiny_mce.js',height:height?height:'200px',theme:"advanced",theme_advanced_buttons1:"bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,bullist,numlist,outdent,indent,link,unlink,forecolor,backcolor,code,",theme_advanced_buttons2:"",theme_advanced_buttons3:"",theme_advanced_toolbar_location:"top",theme_advanced_toolbar_align:"left",theme_advanced_path:false,theme_advanced_resizing:false});},remove:function(ele){tinyMCE.execCommand('mceRemoveControl',true,ele.myid);},get_value:function(ele){return tinymce.get(ele.myid).getContent();}}
-wn.ele={link:function(args){var span=$a(args.parent,'span','link_type',args.style);span.loading_img=$a(args.parent,'img','',{margin:'0px 4px -2px 4px',display:'none'});span.loading_img.src='images/lib/ui/button-load.gif';span.innerHTML=args.label;span.user_onclick=args.onclick;span.onclick=function(){if(!this.disabled)this.user_onclick(this);}
-span.set_working=function(){this.disabled=1;$di(this.loading_img);}
-span.done_working=function(){this.disabled=0;$dh(this.loading_img);}
-return span;}}
-function $ln(parent,label,onclick,style){return wn.ele.link({parent:parent,label:label,onclick:onclick,style:style})}
-function $btn(parent,label,onclick,style,css_class,is_ajax){if(css_class==='green')css_class='btn-info';return new wn.ui.Button({parent:parent,label:label,onclick:onclick,style:style,is_ajax:is_ajax,css_class:css_class}).btn;}
-$item_normal=function(ele){$y(ele,{padding:'6px 8px',cursor:'pointer',marginRight:'8px',whiteSpace:'nowrap',overflow:'hidden',borderBottom:'1px solid #DDD'});$bg(ele,'#FFF');$fg(ele,'#000');}
-$item_active=function(ele){$bg(ele,'#FE8');$fg(ele,'#000');}
-$item_selected=function(ele){$bg(ele,'#777');$fg(ele,'#FFF');}
-$item_pressed=function(ele){$bg(ele,'#F90');$fg(ele,'#FFF');};function set_opacity(ele,ieop){var op=ieop/100;if(ele.filters){try{ele.filters.item("DXImageTransform.Microsoft.Alpha").opacity=ieop;}catch(e){ele.style.filter='progid:DXImageTransform.Microsoft.Alpha(opacity='+ieop+')';}}else{ele.style.opacity=op;}}
-$br=function(ele,r,corners){if(corners){var cl=['top-left','top-right','bottom-right','bottom-left'];for(var i=0;i<4;i++){if(corners[i]){$(ele).css('-moz-border-radius-'+cl[i].replace('-',''),r).css('-webkit-'+cl[i]+'-border-radius',r);}}}else{$(ele).css('-moz-border-radius',r).css('-webkit-border-radius',r).css('border-radius',r);}}
-$bs=function(ele,r){$(ele).css('-moz-box-shadow',r).css('-webkit-box-shadow',r).css('box-shadow',r);}
-function SelectWidget(parent,options,width,editable,bg_color){var me=this;this.inp=$a(parent,'select');if(options)add_sel_options(this.inp,options);if(width)$y(this.inp,{width:width});this.set_width=function(w){$y(this.inp,{width:w})};this.set_options=function(o){add_sel_options(this.inp,o);}
-this.inp.onchange=function(){if(me.onchange)me.onchange(this);}
-return;}
-function empty_select(s){if(s.custom_select){s.empty();return;}
-if(s.inp)s=s.inp;if(s){var tmplen=s.length;for(var i=0;i<tmplen;i++)s.options[0]=null;}}
-function sel_val(s){if(s.custom_select){return s.inp.value?s.inp.value:'';}
-if(s.inp)s=s.inp;try{if(s.selectedIndex<s.options.length)return s.options[s.selectedIndex].value;else return'';}catch(err){return'';}}
-function add_sel_options(s,list,sel_val,o_style){if(s.custom_select){s.set_options(list)
-if(sel_val)s.inp.value=sel_val;return;}
-if(s.inp)s=s.inp;for(var i=0,len=list.length;i<len;i++){var o=new Option(list[i],list[i],false,(list[i]==sel_val?true:false));if(o_style)$y(o,o_style);s.options[s.options.length]=o;}}
-function cint(v,def){v=v+'';v=lstrip(v,['0']);v=parseInt(v);if(isNaN(v))v=def?def:0;return v;}
-function validate_email(id){if(strip(id.toLowerCase()).search("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?")==-1)return 0;else return 1;}
-function validate_spl_chars(txt){if(txt.search(/^[a-zA-Z0-9_\- ]*$/)==-1)return 1;else return 0;}
-function d2h(d){return cint(d).toString(16);}
-function h2d(h){return parseInt(h,16);}
-var $n='\n';function set_title(t){document.title=(wn.title_prefix?(wn.title_prefix+' - '):'')+t;}
-function $a(parent,newtag,className,cs,innerHTML,onclick){if(parent&&parent.substr)parent=$i(parent);var c=document.createElement(newtag);if(parent)
-parent.appendChild(c);if(className){if(newtag.toLowerCase()=='img')
-c.src=className
-else
-c.className=className;}
-if(cs)$y(c,cs);if(innerHTML)c.innerHTML=innerHTML;if(onclick)c.onclick=onclick;return c;}
-function $a_input(p,in_type,attributes,cs){if(!attributes)attributes={};var $input=$(p).append('<input type="'+in_type+'">').find('input:last');for(key in attributes)
-$input.attr(key,attributes[key]);var input=$input.get(0);if(cs)
-$y(input,cs);return input;}
-function $dh(d){if(d&&d.substr)d=$i(d);if(d&&d.style.display.toLowerCase()!='none')d.style.display='none';}
-function $ds(d){if(d&&d.substr)d=$i(d);var t='block';if(d&&in_list(['span','img','button'],d.tagName.toLowerCase()))
-t='inline'
-if(d&&d.style.display.toLowerCase()!=t)
-d.style.display=t;}
-function $di(d){if(d&&d.substr)d=$i(d);if(d)d.style.display='inline';}
-function $i(id){if(!id)return null;if(id&&id.appendChild)return id;return document.getElementById(id);}
-function $w(e,w){if(e&&e.style&&w)e.style.width=w;}
-function $h(e,h){if(e&&e.style&&h)e.style.height=h;}
-function $bg(e,w){if(e&&e.style&&w)e.style.backgroundColor=w;}
-function $y(ele,s){if(ele&&s){for(var i in s)ele.style[i]=s[i];};return ele;}
-function $yt(tab,r,c,s){var rmin=r;var rmax=r;if(r=='*'){rmin=0;rmax=tab.rows.length-1;}
-if(r.search&&r.search('-')!=-1){r=r.split('-');rmin=cint(r[0]);rmax=cint(r[1]);}
-var cmin=c;var cmax=c;if(c=='*'){cmin=0;cmax=tab.rows[0].cells.length-1;}
-if(c.search&&c.search('-')!=-1){c=c.split('-');rmin=cint(c[0]);rmax=cint(c[1]);}
-for(var ri=rmin;ri<=rmax;ri++){for(var ci=cmin;ci<=cmax;ci++)
-$y($td(tab,ri,ci),s);}}
-function set_style(txt){wn.dom.set_style(txt);}
-function make_table(parent,nr,nc,table_width,widths,cell_style,table_style){var t=$a(parent,'table');t.style.borderCollapse='collapse';if(table_width)t.style.width=table_width;if(cell_style)t.cell_style=cell_style;for(var ri=0;ri<nr;ri++){var r=t.insertRow(ri);for(var ci=0;ci<nc;ci++){var c=r.insertCell(ci);if(ri==0&&widths&&widths[ci]){c.style.width=widths[ci];}
-if(cell_style){for(var s in cell_style)c.style[s]=cell_style[s];}}}
-t.append_row=function(){return append_row(this);}
-if(table_style)$y(t,table_style);return t;}
-function append_row(t,at,style){var r=t.insertRow(at?at:t.rows.length);if(t.rows.length>1){for(var i=0;i<t.rows[0].cells.length;i++){var c=r.insertCell(i);if(style)$y(c,style);}}
-return r}
-function $td(t,r,c){if(r<0)r=t.rows.length+r;if(c<0)c=t.rows[0].cells.length+c;return t.rows[r].cells[c];}
-wn.urllib={get_arg:function(name){name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var regexS="[\\?&]"+name+"=([^&#]*)";var regex=new RegExp(regexS);var results=regex.exec(window.location.href);if(results==null)
-return"";else
-return decodeURIComponent(results[1]);},get_dict:function(){var d={}
-var t=window.location.href.split('?')[1];if(!t)return d;if(t.indexOf('#')!=-1)t=t.split('#')[0];if(!t)return d;t=t.split('&');for(var i=0;i<t.length;i++){var a=t[i].split('=');d[decodeURIComponent(a[0])]=decodeURIComponent(a[1]);}
-return d;},get_base_url:function(){var url=window.location.href.split('#')[0].split('?')[0].split('app.html')[0];if(url.substr(url.length-1,1)=='/')url=url.substr(0,url.length-1)
-return url},get_file_url:function(file_id){return repl('files/%(fn)s',{fn:file_id})}}
-get_url_arg=wn.urllib.get_arg;get_url_dict=wn.urllib.get_dict;
-/*
- *	lib/js/legacy/utils/handler.js
- */
-function $c(command,args,callback,error,no_spinner,freeze_msg,btn){wn.request.call({args:$.extend(args,{cmd:command}),success:callback,error:error,btn:btn,freeze:freeze_msg,show_spinner:!no_spinner})}
-function $c_obj(doclist,method,arg,callback,no_spinner,freeze_msg,btn){if(arg&&typeof arg!='string')arg=JSON.stringify(arg);args={cmd:'runserverobj',arg:arg,method:method};if(typeof doclist=='string')
-args.doctype=doclist;else
-args.docs=compress_doclist(doclist)
-wn.request.call({args:args,success:callback,btn:btn,freeze:freeze_msg,show_spinner:!no_spinner});}
-function $c_page(module,page,method,arg,callback,no_spinner,freeze_msg,btn){if(arg&&typeof arg!='string')arg=JSON.stringify(arg);wn.request.call({args:{cmd:module+'.page.'+page+'.'+page+'.'+method,arg:arg,method:method},success:callback,btn:btn,freeze:freeze_msg,show_spinner:!no_spinner});}
-function $c_obj_csv(doclist,method,arg){var args={}
-args.cmd='runserverobj';args.as_csv=1;args.method=method;args.arg=arg;if(doclist.substr)
-args.doctype=doclist;else
-args.docs=compress_doclist(doclist);open_url_post(wn.request.url,args);}
-function open_url_post(URL,PARAMS,new_window){var temp=document.createElement("form");temp.action=URL;temp.method="POST";temp.style.display="none";if(new_window){temp.target='_blank';}
-for(var x in PARAMS){var opt=document.createElement("textarea");opt.name=x;var val=PARAMS[x];if(typeof val!='string')
-val=JSON.stringify(val);opt.value=val;temp.appendChild(opt);}
-document.body.appendChild(temp);temp.submit();return temp;}
-/*
- *	lib/js/legacy/utils/msgprint.js
- */
-var msg_dialog;function msgprint(msg,title){if(!msg)return;if(msg instanceof Array){$.each(msg,function(i,v){if(v){msgprint(v);}})
-return;}
-if(typeof(msg)!='string')
-msg=JSON.stringify(msg);if(msg.substr(0,8)=='__small:'){show_alert(msg.substr(8));return;}
-if(!msg_dialog){msg_dialog=new wn.ui.Dialog({title:"Message",onhide:function(){msg_dialog.msg_area.empty();}});msg_dialog.msg_area=$('<div class="msgprint">').appendTo(msg_dialog.body);}
-if(msg.search(/<br>|<p>|<li>/)==-1)
-msg=replace_newlines(msg);msg_dialog.set_title(title||'Message')
-if(msg_dialog.msg_area.html())msg_dialog.msg_area.append("<hr>");msg_dialog.msg_area.append(msg);msg_dialog.show();return msg_dialog;}
-var growl_area;function show_alert(txt,id){if(!growl_area){if(!$('#dialog-container').length){$('<div id="dialog-container">').appendTo('body');}
-growl_area=$a($i('dialog-container'),'div','',{position:'fixed',bottom:'8px',right:'8px',width:'320px',zIndex:10});}
-var wrapper=$a(growl_area,'div','',{position:'relative'});var body=$a(wrapper,'div','notice');var c=$a(body,'i','icon-remove-sign',{cssFloat:'right',cursor:'pointer'});$(c).click(function(){$dh(this.wrapper)});c.wrapper=wrapper;var t=$a(body,'div','',{color:'#FFF'});$(t).html(txt);if(id){$(t).attr('id',id);}
-$(wrapper).hide().fadeIn(1000);}
-/*
- *	lib/js/wn/ui/appframe.js
- */
-wn.ui.AppFrame=Class.extend({init:function(parent,title){this.buttons={};this.$w=$('<div></div>').appendTo(parent);this.$titlebar=$('<div class="appframe-titlebar">\
-   <span class="appframe-title"></span>\
-   <span class="close">&times;</span>\
-  </div>').appendTo(this.$w);this.$w.find('.close').click(function(){window.history.back();})
-if(title)this.title(title);},title:function(txt){this.clear_breadcrumbs();this.add_breadcrumb(txt);},add_button:function(label,click,icon){this.add_toolbar();args={label:label,icon:''};if(icon){args.icon='<i class="icon '+icon+'"></i>';}
-this.buttons[label]=$(repl('<button class="btn btn-small">\
-   %(icon)s %(label)s</button>',args)).click(click).appendTo(this.toolbar);return this.buttons[label];},add_help_button:function(txt){this.add_toolbar();$('<button class="btn btn-small" style="float:right;" button-type="help">\
-   <b>?</b></button>').data('help-text',txt).click(function(){msgprint($(this).data('help-text'),'Help');}).appendTo(this.toolbar);},clear_buttons:function(){this.toolbar&&this.toolbar.empty();},add_breadcrumb:function(html){if(!this.$breadcrumbs)
-this.$breadcrumbs=$('</span>\
-    <span class="breadcrumb-area"></span>').appendTo(this.$titlebar);var crumb=$('<span>').html(html);if(!this.$breadcrumbs.find('span').length){crumb.addClass('appframe-title');}
-crumb.appendTo(this.$breadcrumbs);},clear_breadcrumbs:function(){this.$breadcrumbs&&this.$breadcrumbs.empty();},add_toolbar:function(){if(!this.toolbar)
-this.$w.append('<div class="appframe-toolbar"></div>');this.toolbar=this.$w.find('.appframe-toolbar');},add_label:function(label){return $("<span class='label'>"+label+" </span>").appendTo(this.toolbar);},add_select:function(label,options){this.add_toolbar();return $("<select style='width: 100px;'>").add_options(options).appendTo(this.toolbar);},add_data:function(label){this.add_toolbar();return $("<input style='width: 100px;' placeholder='"+label+"'>").appendTo(this.toolbar);},add_date:function(label,date){this.add_toolbar();return $("<input style='width: 80px;'>").datepicker({dateFormat:sys_defaults.date_format.replace("yyyy","yy"),changeYear:true,}).val(dateutil.str_to_user(date)||"").appendTo(this.toolbar);},});wn.ui.make_app_page=function(opts){if(opts.single_column){$(opts.parent).html('<div class="layout-wrapper layout-wrapper-appframe">\
-   <div class="layout-appframe"></div>\
-   <div class="layout-main"></div>\
-  </div>');}else{$(opts.parent).html('<div class="layout-wrapper layout-wrapper-background">\
-   <div class="layout-appframe"></div>\
-   <div class="layout-main-section"></div>\
-   <div class="layout-side-section"></div>\
-   <div class="clear"></div>\
-  </div>');}
-opts.parent.appframe=new wn.ui.AppFrame($(opts.parent).find('.layout-appframe'));if(opts.title)opts.parent.appframe.title(opts.title);}
-/*
- *	lib/js/wn/ui/dialog.js
- */
-wn.widgets.FieldGroup=function(){this.first_button=false;this.make_fields=function(body,fl){if(!window.make_field){wn.require('css/fields.css');wn.require('js/fields.js');}
-$y(this.body,{padding:'11px'});this.fields_dict={};for(var i=0;i<fl.length;i++){var df=fl[i];if(!df.fieldname&&df.label){df.fieldname=df.label.replace(/ /g,'_').toLowerCase();}
-var div=$a(body,'div','',{margin:'6px 0px'})
-f=make_field(df,null,div,null);f.not_in_form=1;this.fields_dict[df.fieldname]=f
-f.refresh();if(df.fieldtype=='Button'&&!this.first_button){$(f.input).addClass('btn-info');this.first_button=true;}}}
-this.catch_enter_as_submit=function(){var me=this;$(this.body).find(':input[type="text"], :input[type="password"]').keypress(function(e){if(e.which==13){$(me.body).find('.btn-info:first').click();}})}
-this.get_values=function(){var ret={};var errors=[];for(var key in this.fields_dict){var f=this.fields_dict[key];var v=f.get_value?f.get_value():null;if(f.df.reqd&&!v)
-errors.push(f.df.label+' is mandatory');if(v)ret[f.df.fieldname]=v;}
-if(errors.length){msgprint('<b>Please check the following Errors</b>\n'+errors.join('\n'));return null;}
-return ret;}
-this.set_value=function(key,val){var f=this.fields_dict[key];if(f){f.set_input(val);f.refresh_mandatory();}}
-this.set_values=function(dict){for(var key in dict){if(this.fields_dict[key]){this.set_value(key,dict[key]);}}}
-this.clear=function(){for(key in this.fields_dict){var f=this.fields_dict[key];if(f){f.set_input(f.df['default']||'');}}}}
-wn.widgets.Dialog=function(opts){this.display=false;this.make=function(opts){if(opts){this.opts=opts;$.extend(this,opts);}
-if(!this.opts.width)this.opts.width=480;if(!$('#dialog-container').length){$('<div id="dialog-container">').appendTo('body');}
-this.wrapper=$('<div class="dialog_wrapper">').appendTo('#dialog-container').get(0);if(this.opts.width)
-this.wrapper.style.width=this.opts.width+'px';this.make_head();this.body=$a(this.wrapper,'div','dialog_body');if(this.opts.fields){this.make_fields(this.body,this.opts.fields);this.catch_enter_as_submit();}}
-this.make_head=function(){var me=this;this.appframe=new wn.ui.AppFrame(this.wrapper);this.appframe.$titlebar.find('.close').unbind('click').click(function(){if(me.oncancel)me.oncancel();me.hide();});this.set_title(this.opts.title);}
-this.set_title=function(t){this.appframe.$titlebar.find('.appframe-title').html(t||'');}
-this.set_postion=function(){this.wrapper.style.left=(($(window).width()-cint(this.wrapper.style.width))/2)+'px';this.wrapper.style.top=($(window).scrollTop()+60)+'px';top_index++;$y(this.wrapper,{zIndex:top_index});}
-this.show=function(){if(this.display)return;this.set_postion()
-$ds(this.wrapper);freeze();this.display=true;cur_dialog=this;if(this.onshow)this.onshow();$(this.wrapper).find(':input:first').focus();}
-this.hide=function(){if(this.onhide)this.onhide();unfreeze();$dh(this.wrapper);this.display=false;cur_dialog=null;}
-this.no_cancel=function(){this.appframe.$titlebar.find('.close').toggle(false);}
-if(opts)this.make(opts);}
-wn.widgets.Dialog.prototype=new wn.widgets.FieldGroup();wn.provide('wn.ui');wn.ui.Dialog=wn.widgets.Dialog
-$(document).bind('keydown',function(e){if(cur_dialog&&!cur_dialog.no_cancel_flag&&e.which==27){cur_dialog.hide();}});
-/*
- *	lib/js/wn/ui/button.js
- */
-wn.ui.Button=function(args){var me=this;$.extend(this,{make:function(){me.btn=wn.dom.add(args.parent,'button','btn btn-small '+(args.css_class||''));me.btn.args=args;me.loading_img=wn.dom.add(me.btn.args.parent,'img','',{margin:'0px 4px -2px 4px',display:'none'});me.loading_img.src='images/lib/ui/button-load.gif';me.btn.innerHTML=args.label;me.btn.user_onclick=args.onclick;$(me.btn).bind('click',function(){if(!this.disabled&&this.user_onclick)
-this.user_onclick(this);})
-me.btn.set_working=me.set_working;me.btn.done_working=me.done_working;if(me.btn.args.style)
-wn.dom.css(me.btn,args.style);},set_working:function(){me.btn.disabled='disabled';$(me.loading_img).css('display','inline');},done_working:function(){me.btn.disabled=false;$(me.loading_img).toggle(false);}});this.make();}
-/*
- *	lib/js/legacy/widgets/dialog.js
- */
-var cur_dialog;var top_index=91;function Dialog(w,h,title,content){this.make({width:w,title:title});if(content)this.make_body(content);this.onshow='';this.oncancel='';this.no_cancel_flag=0;this.display=false;this.first_button=false;}
-Dialog.prototype=new wn.widgets.Dialog()
-Dialog.prototype.make_body=function(content){this.rows={};this.widgets={};for(var i in content)this.make_row(content[i]);}
-Dialog.prototype.clear_inputs=function(d){for(var wid in this.widgets){var w=this.widgets[wid];var tn=w.tagName?w.tagName.toLowerCase():'';if(tn=='input'||tn=='textarea'){w.value='';}else if(tn=='select'){sel_val(w.options[0].value);}else if(w.txt){w.txt.value='';}else if(w.input){w.input.value='';}}}
-Dialog.prototype.make_row=function(d){var me=this;this.rows[d[1]]=$a(this.body,'div','dialog_row');var row=this.rows[d[1]];if(d[0]!='HTML'){var t=make_table(row,1,2,'100%',['30%','70%']);row.tab=t;var c1=$td(t,0,0);var c2=$td(t,0,1);if(d[0]!='Check'&&d[0]!='Button')
-$(c1).text(d[1]);}
-if(d[0]=='HTML'){if(d[2])row.innerHTML=d[2];this.widgets[d[1]]=row;}
-else if(d[0]=='Check'){var i=$a_input(c2,'checkbox','',{width:'20px'});c1.innerHTML=d[1];this.widgets[d[1]]=i;}
-else if(d[0]=='Data'){c1.innerHTML=d[1];c2.style.overflow='auto';this.widgets[d[1]]=$a_input(c2,'text');if(d[2])$a(c2,'div','field_description').innerHTML=d[2];}
-else if(d[0]=='Link'){c1.innerHTML=d[1];var f=make_field({fieldtype:'Link','label':d[1],'options':d[2]},'',c2,this,0,1);f.not_in_form=1;f.dialog=this;f.refresh();this.widgets[d[1]]=f.input;}
-else if(d[0]=='Date'){c1.innerHTML=d[1];var f=make_field({fieldtype:'Date','label':d[1],'options':d[2]},'',c2,this,0,1);f.not_in_form=1;f.refresh();f.dialog=this;this.widgets[d[1]]=f.input;}
-else if(d[0]=='Password'){c1.innerHTML=d[1];c2.style.overflow='auto';this.widgets[d[1]]=$a_input(c2,'password');if(d[3])$a(c2,'div','field_description').innerHTML=d[3];}
-else if(d[0]=='Select'){c1.innerHTML=d[1];this.widgets[d[1]]=$a(c2,'select','',{width:'160px'})
-if(d[2])$a(c2,'div','field_description').innerHTML=d[2];if(d[3])add_sel_options(this.widgets[d[1]],d[3],d[3][0]);}
-else if(d[0]=='Text'){c1.innerHTML=d[1];c2.style.overflow='auto';this.widgets[d[1]]=$a(c2,'textarea');if(d[2])$a(c2,'div','field_description').innerHTML=d[2];}
-else if(d[0]=='Button'){c2.style.height='32px';var b=$btn(c2,d[1],function(btn){if(btn._onclick)btn._onclick(me)},null,null,1);b.dialog=me;if(!this.first_button){$(b).addClass('btn-info');this.first_button=true;}
-if(d[2]){b._onclick=d[2];}
-this.widgets[d[1]]=b;}}
-/*
- *	lib/js/legacy/webpage/page_header.js
- */
-var def_ph_style={wrapper:{marginBottom:'16px',backgroundColor:'#EEE'},main_heading:{},sub_heading:{marginBottom:'8px',color:'#555',display:'none'},separator:{borderTop:'1px solid #ddd'},toolbar_area:{padding:'3px 0px',display:'none',borderBottom:'1px solid #ddd'}}
-function PageHeader(parent,main_text,sub_text){this.wrapper=$a(parent,'div','page_header');this.close_btn=$a(this.wrapper,'a','close',{},'&times;');this.close_btn.onclick=function(){window.history.back();};this.breadcrumbs=$a(this.wrapper,'div','breadcrumbs-area');this.main_head=$a(this.wrapper,'h1','',def_ph_style.main_heading);this.sub_head=$a(this.wrapper,'h4','',def_ph_style.sub_heading);this.separator=$a(this.wrapper,'div','',def_ph_style.separator);this.toolbar_area=$a(this.wrapper,'div','',def_ph_style.toolbar_area);this.padding_area=$a(this.wrapper,'div','',{padding:'3px'});if(main_text)this.main_head.innerHTML=main_text;if(sub_text)this.sub_head.innerHTML=sub_text;this.buttons={};this.buttons2={};}
-PageHeader.prototype.add_button=function(label,fn,bold,icon,green){var tb=this.toolbar_area;if(this.buttons[label])return;iconhtml=icon?('<i class="'+icon+'"></i> '):'';var $button=$('<button class="btn btn-small">'+iconhtml+label+'</button>').click(fn).appendTo(tb);if(green){$button.addClass('btn-info');$button.find('i').addClass('icon-white');}
-if(bold)$button.css('font-weight','bold');this.buttons[label]=$button.get(0);$ds(this.toolbar_area);return this.buttons[label];}
-PageHeader.prototype.clear_toolbar=function(){this.toolbar_area.innerHTML='';this.buttons={};}
-PageHeader.prototype.make_buttonset=function(){$(this.toolbar_area).buttonset();}
-/*
- *	lib/js/legacy/webpage/spinner.js
- */
-var pending_req=0;var fcount=0;var dialog_back;function set_loading(){pending_req++;$('#spinner').css('visibility','visible');$('body').css('cursor','progress');}
-function hide_loading(){pending_req--;if(!pending_req){$('body').css('cursor','default');$('#spinner').css('visibility','hidden');}}
-function freeze(){if(!dialog_back){dialog_back=$a($i('body_div'),'div','dialog_back');$(dialog_back).css('opacity',0.6);}
-$ds(dialog_back);fcount++;}
-function unfreeze(){if(!fcount)return;fcount--;if(!fcount){$dh(dialog_back);}}
-/*
- *	lib/js/legacy/webpage/loaders.js
- */
-function loadreport(dt,rep_name,onload){if(rep_name)
-wn.set_route('Report',dt,rep_name);else
-wn.set_route('Report',dt);}
-function loaddoc(doctype,name,onload){wn.model.with_doctype(doctype,function(){if(locals.DocType[doctype].in_dialog){_f.edit_record(doctype,name);}else{wn.set_route('Form',doctype,name);}})}
-var load_doc=loaddoc;function new_doc(doctype,in_form){doctype=get_label_doctype(doctype);wn.model.with_doctype(doctype,function(){if(!in_form&&locals.DocType[doctype].in_dialog){var new_name=LocalDB.create(doctype);_f.edit_record(doctype,new_name);}else{wn.views.formview.create(doctype);}})}
-var newdoc=new_doc;var pscript={};function loadpage(page_name,call_back,no_history){wn.set_route(page_name);}
-function loaddocbrowser(dt){wn.set_route('List',dt);}
-/*
- *	lib/js/legacy/wn/widgets/footer.js
- */
-wn.widgets.Footer=function(args){$.extend(this,args);this.make=function(){this.wrapper=$a(this.parent,'div','std-footer');this.table=make_table(this.wrapper,1,this.columns,[],{width:100/this.columns+'%'});this.render_items();}
-this.render_items=function(){for(var i=0;i<this.items.length;i++){var item=this.items[i];var div=$a($td(this.table,0,item.column),'div','std-footer-item');div.label=$a($a(div,'div'),'span','link_type','',item.label);div.label.onclick=item.onclick;if(item.description){div.description=$a(div,'div','field_description','',item.description);}}}
-if(this.items)
-this.make();}
-/*
- *	lib/js/legacy/model/local_data.js
- */
-var locals={'DocType':{}};var LocalDB={};var READ=0;var WRITE=1;var CREATE=2;var SUBMIT=3;var CANCEL=4;var AMEND=5;LocalDB.getchildren=function(child_dt,parent,parentfield,parenttype){var l=[];for(var key in locals[child_dt]){var d=locals[child_dt][key];if((d.parent==parent)&&(d.parentfield==parentfield)){if(parenttype){if(d.parenttype==parenttype)l.push(d);}else{l.push(d);}}}
-l.sort(function(a,b){return(cint(a.idx)-cint(b.idx))});return l;}
-LocalDB.add=function(dt,dn){if(!locals[dt])locals[dt]={};if(locals[dt][dn])delete locals[dt][dn];locals[dt][dn]={'name':dn,'doctype':dt,'docstatus':0};return locals[dt][dn];}
-LocalDB.delete_doc=function(dt,dn){var doc=get_local(dt,dn);for(var ndt in locals){if(locals[ndt]){for(var ndn in locals[ndt]){var doc=locals[ndt][ndn];if(doc&&doc.parenttype==dt&&(doc.parent==dn||doc.__oldparent==dn)){delete locals[ndt][ndn];}}}}
-delete locals[dt][dn];}
-function get_local(dt,dn){return locals[dt]?locals[dt][dn]:null;}
-LocalDB.sync=function(list){if(list._kl)list=expand_doclist(list);if(list){LocalDB.clear_locals(list[0].doctype,list[0].name);}
-for(var i=0;i<list.length;i++){var d=list[i];if(!d.name)
-d.name=LocalDB.get_localname(d.doctype);LocalDB.add(d.doctype,d.name);locals[d.doctype][d.name]=d;if(cur_frm&&cur_frm.doctype==d.doctype&&cur_frm.docname==d.name){cur_frm.doc=d;}
-if(d.doctype=='DocField')
-wn.meta.add_field(d);if(d.localname){wn.model.new_names[d.localname]=d.name;$(document).trigger('rename',[d.doctype,d.localname,d.name]);delete locals[d.doctype][d.localname];}}}
-LocalDB.clear_locals=function(dt,dn){var doclist=make_doclist(dt,dn,1);$.each(doclist,function(i,v){v&&delete locals[v.doctype][v.name];});}
-local_name_idx={};LocalDB.get_localname=function(doctype){if(!local_name_idx[doctype])local_name_idx[doctype]=1;var n='New '+get_doctype_label(doctype)+' '+local_name_idx[doctype];local_name_idx[doctype]++;return n;}
-LocalDB.set_default_values=function(doc){var doctype=doc.doctype;var docfields=wn.meta.docfield_list[doctype];if(!docfields){return;}
-var fields_to_refresh=[];for(var fid=0;fid<docfields.length;fid++){var f=docfields[fid];if(!in_list(no_value_fields,f.fieldtype)&&doc[f.fieldname]==null){var v=LocalDB.get_default_value(f.fieldname,f.fieldtype,f['default']);if(v){doc[f.fieldname]=v;fields_to_refresh.push(f.fieldname);}}}
-return fields_to_refresh;}
-function check_perm_match(p,dt,dn){if(!dn)return true;var out=false;if(p.match){if(user_defaults[p.match]){for(var i=0;i<user_defaults[p.match].length;i++){if(user_defaults[p.match][i]==locals[dt][dn][p.match]){return true;}}
-return false;}else if(!locals[dt][dn][p.match]){return true;}else{return false;}}else{return true;}}
-function get_perm(doctype,dn,ignore_submit){var perm=[[0,0],];if(in_list(user_roles,'Administrator'))perm[0][READ]=1;var plist=getchildren('DocPerm',doctype,'permissions','DocType');for(var pidx in plist){var p=plist[pidx];var pl=cint(p.permlevel?p.permlevel:0);if(in_list(user_roles,p.role)){if(check_perm_match(p,doctype,dn)){if(!perm[pl])perm[pl]=[];if(!perm[pl][READ]){if(cint(p.read))perm[pl][READ]=1;else perm[pl][READ]=0;}
-if(!perm[pl][WRITE]){if(cint(p.write)){perm[pl][WRITE]=1;perm[pl][READ]=1;}else perm[pl][WRITE]=0;}
-if(!perm[pl][CREATE]){if(cint(p.create))perm[pl][CREATE]=1;else perm[pl][CREATE]=0;}
-if(!perm[pl][SUBMIT]){if(cint(p.submit))perm[pl][SUBMIT]=1;else perm[pl][SUBMIT]=0;}
-if(!perm[pl][CANCEL]){if(cint(p.cancel))perm[pl][CANCEL]=1;else perm[pl][CANCEL]=0;}
-if(!perm[pl][AMEND]){if(cint(p.amend))perm[pl][AMEND]=1;else perm[pl][AMEND]=0;}}}}
-if((!ignore_submit)&&dn&&locals[doctype][dn].docstatus>0){for(pl in perm)
-perm[pl][WRITE]=0;}
-return perm;}
-LocalDB.create=function(doctype,n){if(!n)n=LocalDB.get_localname(doctype);var doc=LocalDB.add(doctype,n)
-doc.__islocal=1;doc.owner=user;LocalDB.set_default_values(doc);return n;}
-LocalDB.delete_record=function(dt,dn){delete locals[dt][dn];}
-LocalDB.get_default_value=function(fn,ft,df){if(df=='_Login'||df=='__user')
-return user;else if(df=='_Full Name')
-return user_fullname;else if(ft=='Date'&&(df=='Today'||df=='__today')){return get_today();}
-else if(df)
-return df;else if(user_defaults[fn])
-return user_defaults[fn][0];else if(sys_defaults[fn])
-return sys_defaults[fn];}
-LocalDB.add_child=function(doc,childtype,parentfield){var n=LocalDB.create(childtype);var d=locals[childtype][n];d.parent=doc.name;d.parentfield=parentfield;d.parenttype=doc.doctype;return d;}
-LocalDB.no_copy_list=['amended_from','amendment_date','cancel_reason'];LocalDB.copy=function(dt,dn,from_amend){var newdoc=LocalDB.create(dt);for(var key in locals[dt][dn]){var df=wn.meta.get_docfield(dt,key);if(key!=='name'&&key.substr(0,2)!='__'&&!(df&&((!from_amend&&cint(df.no_copy)==1)||in_list(LocalDB.no_copy_list,df.fieldname)))){locals[dt][newdoc][key]=locals[dt][dn][key];}}
-return locals[dt][newdoc];}
-function make_doclist(dt,dn){if(!locals[dt]){return[];}
-var dl=[];dl[0]=locals[dt][dn];for(var ndt in locals){if(locals[ndt]){for(var ndn in locals[ndt]){var doc=locals[ndt][ndn];if(doc&&doc.parenttype==dt&&doc.parent==dn){dl.push(doc)}}}}
-return dl;}
-var Meta={};var local_dt={};Meta.make_local_dt=function(dt,dn){var dl=make_doclist('DocType',dt);if(!local_dt[dt])local_dt[dt]={};if(!local_dt[dt][dn])local_dt[dt][dn]={};for(var i=0;i<dl.length;i++){var d=dl[i];if(d.doctype=='DocField'){var key=d.fieldname?d.fieldname:d.label;local_dt[dt][dn][key]=copy_dict(d);}}}
-Meta.set_field_property=function(fn,key,val,doc){if(!doc&&(cur_frm.doc))doc=cur_frm.doc;try{local_dt[doc.doctype][doc.name][fn][key]=val;refresh_field(fn);}catch(e){alert("Client Script Error: Unknown values for "+doc.name+','+fn+'.'+key+'='+val);}}
-Meta.get_field=function(dt,fn,dn){try{return local_dt[dt][dn][fn];}catch(e){return null;}}
-function get_doctype_label(dt){return dt}
-function get_label_doctype(label){return label}
-var getchildren=LocalDB.getchildren;var createLocal=LocalDB.create;
-/*
- *	lib/js/legacy/model/doclist.js
- */
-function compress_doclist(list){var kl={};var vl=[];var flx={};for(var i=0;i<list.length;i++){var o=list[i];var fl=[];if(!kl[o.doctype]){var tfl=['doctype','name','docstatus','owner','parent','parentfield','parenttype','idx','creation','modified','modified_by','__islocal','__newname','__modified','_user_tags','__temp'];var fl=[].concat(tfl);for(key in wn.meta.docfield_map[o.doctype]){if(!in_list(fl,key)&&!in_list(no_value_fields,wn.meta.docfield_map[o.doctype][key].fieldtype)&&!wn.meta.docfield_map[o.doctype][key].no_column){fl[fl.length]=key;tfl[tfl.length]=key}}
-flx[o.doctype]=fl;kl[o.doctype]=tfl}
-var nl=[];var fl=flx[o.doctype];for(var j=0;j<fl.length;j++){var v=o[fl[j]];nl.push(v);}
-vl.push(nl);}
-return JSON.stringify({'_vl':vl,'_kl':kl});}
-function expand_doclist(docs){var l=[];for(var i=0;i<docs._vl.length;i++)
-l[l.length]=zip(docs._kl[docs._vl[i][0]],docs._vl[i]);return l;}
-function zip(k,v){var obj={};for(var i=0;i<k.length;i++){obj[k[i]]=v[i];}
-return obj;}
-function save_doclist(dt,dn,save_action,onsave,onerr){var doc=locals[dt][dn];var doctype=locals['DocType'][dt];var tmplist=[];var doclist=make_doclist(dt,dn,1);var all_reqd_ok=true;if(save_action!='Cancel'){for(var n in doclist){var reqd_ok=check_required(doclist[n].doctype,doclist[n].name,doclist[0].doctype);if(doclist[n].docstatus+''!='2'&&all_reqd_ok)
-all_reqd_ok=reqd_ok;}}
-if(!all_reqd_ok){onerr()
-return;}
-var _save=function(){$c('webnotes.widgets.form.save.savedocs',{'docs':compress_doclist(doclist),'docname':dn,'action':save_action,'user':user},function(r,rtxt){if(f){f.savingflag=false;}
-if(r.saved){if(onsave)onsave(r);}else{if(onerr)onerr(r);}},function(){if(f){f.savingflag=false;}},0,(f?'Saving...':''));}
-if(doc.__islocal&&(doctype&&doctype.autoname&&doctype.autoname.toLowerCase()=='prompt')){var newname=prompt('Enter the name of the new '+dt,'');if(newname){doc.__newname=strip(newname);_save();}else{msgprint('Not Saved');onerr();}}else{_save();}}
-function check_required(dt,dn,parent_dt){var doc=locals[dt][dn];if(doc.docstatus>1)return true;var fl=wn.meta.docfield_list[dt];if(!fl)return true;var all_clear=true;var errfld=[];for(var i=0;i<fl.length;i++){var key=fl[i].fieldname;var df=wn.meta.get_docfield(dt,key,dn);var has_value=wn.model.has_value(dt,dn,key);if(df.reqd&&!has_value){errfld[errfld.length]=df.label;if(cur_frm){var f=cur_frm.fields_dict[df.fieldname];if(f){f.df.has_error=true;f.refresh_label_icon&&f.refresh_label_icon();if(all_clear&&f.wrapper){$(document).scrollTop($(f.wrapper).offset().top-100);}
-if(f.df.hidden){msgprint('Oops, field "'+f.df.label+'" is both hidden and mandatory. \
-       Please contact your admin for help.');}}}
-if(all_clear)all_clear=false;}}
-if(errfld.length)msgprint('<b>Mandatory fields required in '+
-(doc.parenttype?(wn.meta.docfield_map[doc.parenttype][doc.parentfield].label+' (Table)'):doc.doctype)+':</b>\n'+errfld.join('\n'));return all_clear;}
-/*
- *	lib/js/wn/app.js
- */
-wn.Application=Class.extend({init:function(){var me=this;if(window.app){wn.call({method:'startup',callback:function(r,rt){wn.provide('wn.boot');wn.boot=r;if(wn.boot.profile.name=='Guest'){window.location='index.html';return;}
-me.startup();}})}else{this.startup();}},startup:function(){this.load_bootinfo();this.make_page_container();this.make_nav_bar();this.set_favicon();$(document).trigger('startup');if(wn.boot){wn.route();}
-$(document).trigger('app_ready');},load_bootinfo:function(){if(wn.boot){LocalDB.sync(wn.boot.docs);wn.control_panel=wn.boot.control_panel;this.set_globals();if(wn.boot.developer_mode){console.log("LocalStorage is OFF for developer mode. Please build before going live.");}}else{this.set_as_guest();}},set_globals:function(){profile=wn.boot.profile;user=wn.boot.profile.name;user_fullname=wn.user_info(user).fullname;user_defaults=profile.defaults;user_roles=profile.roles;user_email=profile.email;sys_defaults=wn.boot.sysdefaults;},set_as_guest:function(){profile={name:'Guest'};user='Guest';user_fullname='Guest';user_defaults={};user_roles=['Guest'];user_email='';sys_defaults={};},make_page_container:function(){wn.container=new wn.views.Container();wn.views.make_403();wn.views.make_404();},make_nav_bar:function(){if(wn.boot){wn.container.wntoolbar=new wn.ui.toolbar.Toolbar();}},logout:function(){var me=this;me.logged_out=true;wn.call({method:'logout',callback:function(r){if(r.exc){console.log(r.exc);}
-me.redirect_to_login();}})},redirect_to_login:function(){window.location.href='index.html';},set_favicon:function(){var link=$('link[type="image/x-icon"]').remove().attr("href");var favicon='\
-   <link rel="shortcut icon" href="'+link+'" type="image/x-icon"> \
-   <link rel="icon" href="'+link+'" type="image/x-icon">'
-$(favicon).appendTo('head');}})
-/*
- *	erpnext/startup/startup.js
- */
-var current_module;var is_system_manager=0;wn.provide('erpnext.startup');erpnext.modules={'Selling':'selling-home','Accounts':'accounts-home','Stock':'stock-home','Buying':'buying-home','Support':'support-home','Projects':'projects-home','Production':'production-home','Website':'website-home','HR':'hr-home','Setup':'Setup','Activity':'activity','To Do':'todo','Calendar':'calendar','Messages':'messages','Knowledge Base':'questions','Dashboard':'dashboard'}
-wn.provide('wn.modules');$.extend(wn.modules,erpnext.modules);wn.modules['Core']='Setup';erpnext.startup.set_globals=function(){if(inList(user_roles,'System Manager'))is_system_manager=1;}
-erpnext.startup.start=function(){console.log('Starting up...');$('#startup_div').html('Starting up...').toggle(true);erpnext.startup.set_globals();if(user!='Guest'){if(wn.boot.user_background){erpnext.set_user_background(wn.boot.user_background);}
-wn.boot.profile.allow_modules=wn.boot.profile.allow_modules.concat(['To Do','Knowledge Base','Calendar','Activity','Messages'])
-erpnext.toolbar.setup();erpnext.startup.set_periodic_updates();$('footer').html('<div class="web-footer erpnext-footer">\
-   <a href="#!attributions">ERPNext | Attributions and License</a></div>');if(in_list(user_roles,'System Manager')&&(wn.boot.setup_complete=='No')){wn.require("js/app/complete_setup.js");erpnext.complete_setup.show();}
-if(wn.boot.expires_on&&in_list(user_roles,'System Manager')){var today=dateutil.str_to_obj(dateutil.get_today());var expires_on=dateutil.str_to_obj(wn.boot.expires_on);var diff=dateutil.get_diff(expires_on,today);if(0<=diff&&diff<=15){var expiry_string=diff==0?"today":repl("in %(diff)s day(s)",{diff:diff});$('header').append(repl('<div class="expiry-info"> \
-     Your ERPNext subscription will <b>expire %(expiry_string)s</b>. \
-     Please renew your subscription to continue using ERPNext \
-     (and remove this annoying banner). \
-    </div>',{expiry_string:expiry_string}));}else if(diff<0){$('header').append(repl('<div class="expiry-info"> \
-     This ERPNext subscription <b>has expired</b>. \
-    </div>',{expiry_string:expiry_string}));}}
-erpnext.set_about();if(wn.control_panel.custom_startup_code)
-eval(wn.control_panel.custom_startup_code);}}
-erpnext.update_messages=function(reset){if(inList(['Guest'],user)||!wn.session_alive){return;}
-if(!reset){var set_messages=function(r){if(!r.exc){erpnext.toolbar.set_new_comments(r.message.unread_messages);var show_in_circle=function(parent_id,msg){var parent=$('#'+parent_id);if(parent){if(msg){parent.find('span:first').text(msg);parent.toggle(true);}else{parent.toggle(false);}}}
-show_in_circle('unread_messages',r.message.unread_messages.length);show_in_circle('open_support_tickets',r.message.open_support_tickets);show_in_circle('things_todo',r.message.things_todo);show_in_circle('todays_events',r.message.todays_events);show_in_circle('open_tasks',r.message.open_tasks);show_in_circle('unanswered_questions',r.message.unanswered_questions);}else{clearInterval(wn.updates.id);}}
-wn.call({method:'startup.startup.get_global_status_messages',callback:set_messages});}else{erpnext.toolbar.set_new_comments(0);$('#unread_messages').toggle(false);}}
-erpnext.startup.set_periodic_updates=function(){wn.updates={};if(wn.updates.id){clearInterval(wn.updates.id);}
-wn.updates.id=setInterval(erpnext.update_messages,60000);}
-erpnext.set_user_background=function(src){set_style(repl('#body_div { background: url("files/%(src)s") repeat;}',{src:src}))}
-$(document).bind('startup',function(){erpnext.startup.start();});erpnext.send_message=function(opts){if(opts.btn){$(opts.btn).start_working();}
-wn.call({method:'website.send_message',args:opts,callback:function(r){if(opts.btn){$(opts.btn).done_working();}
-if(opts.callback)opts.callback(r)}});}
-erpnext.hide_naming_series=function(){if(cur_frm.fields_dict.naming_series){hide_field('naming_series');if(cur_frm.doc.__islocal){unhide_field('naming_series');}}}
-/*
- *	conf.js
- */
-wn.provide('erpnext');erpnext.set_about=function(){wn.provide('wn.app');$.extend(wn.app,{name:'ERPNext',license:'GNU/GPL - Usage Condition: All "erpnext" branding must be kept as it is',source:'https://github.com/webnotes/erpnext',publisher:'Web Notes Technologies Pvt Ltd, Mumbai',copyright:'&copy; Web Notes Technologies Pvt Ltd',version:'2'});}
-wn.modules_path='erpnext';$(document).bind('toolbar_setup',function(){$('.brand').html((wn.boot.website_settings.brand_html||'erpnext')+' <i class="icon-home icon-white navbar-icon-home" ></i>').css('max-width','200px').css('overflow','hidden').hover(function(){$(this).find('.icon-home').addClass('navbar-icon-home-hover');},function(){$(this).find('.icon-home').removeClass('navbar-icon-home-hover');});});
\ No newline at end of file
diff --git a/public/js/app/complete_setup.js b/public/js/complete_setup.js
similarity index 100%
rename from public/js/app/complete_setup.js
rename to public/js/complete_setup.js
diff --git a/conf.js b/public/js/conf.js
similarity index 100%
rename from conf.js
rename to public/js/conf.js
diff --git a/public/js/fields.js b/public/js/fields.js
deleted file mode 100644
index 7d00562..0000000
--- a/public/js/fields.js
+++ /dev/null
@@ -1,210 +0,0 @@
-
-/*
- *	lib/js/legacy/widgets/form/fields.js
- */
-var no_value_fields=['Section Break','Column Break','HTML','Table','FlexTable','Button','Image'];var codeid=0;var code_editors={};function Field(){this.with_label=1;}
-Field.prototype.make_body=function(){var ischk=(this.df.fieldtype=='Check'?1:0);if(this.parent)
-this.wrapper=$a(this.parent,(this.with_label?'div':'span'));else
-this.wrapper=document.createElement((this.with_label?'div':'span'));this.label_area=$a(this.wrapper,'div','',{margin:'0px 0px 2px 0px',minHeight:'1em'});if(ischk&&!this.in_grid){this.input_area=$a(this.label_area,'span','',{marginRight:'4px'});this.disp_area=$a(this.label_area,'span','',{marginRight:'4px'});}
-if(this.with_label){this.label_span=$a(this.label_area,'span','small',{cssFloat:'left'})
-this.label_icon=$('<i class="icon icon-warning-sign">').toggle(false).appendTo(this.label_area).css('float','left').css('margin-left','7px').attr("title","This field is mandatory.");this.suggest_icon=$('<i class="icon icon-chevron-down">').toggle(false).appendTo(this.label_area).css('float','left').css('margin-left','7px').attr("title","will show suggestions as you type.");}else{this.label_span=$a(this.label_area,'span','',{marginRight:'4px'})
-$dh(this.label_area);}
-if(!this.input_area){this.input_area=$a(this.wrapper,(this.with_label?'div':'span'));this.disp_area=$a(this.wrapper,(this.with_label?'div':'span'));}
-if(this.in_grid){if(this.label_area)$dh(this.label_area);}else{this.input_area.className='input_area';$y(this.wrapper,{marginBottom:'9px'});this.set_description();}
-if(this.onmake)this.onmake();}
-Field.prototype.set_max_width=function(){var no_max=['Code','Text Editor','Text','Table','HTML']
-if(this.wrapper&&this.layout_cell&&this.layout_cell.parentNode.cells&&this.layout_cell.parentNode.cells.length==1&&!in_list(no_max,this.df.fieldtype)){$y(this.wrapper,{paddingRight:'50%'});}}
-Field.prototype.set_label=function(){if(this.with_label&&this.label_area&&this.label!=this.df.label){this.label_span.innerHTML=this.df.label;this.label=this.df.label;}}
-Field.prototype.set_description=function(){if(this.df.description){var p=in_list(['Text Editor','Code','Check'],this.df.fieldtype)?this.label_area:this.wrapper;this.desc_area=$a(p,'div','help small','',this.df.description)
-if(in_list(['Text Editor','Code'],this.df.fieldtype))
-$(this.desc_area).addClass('help small');}}
-Field.prototype.get_status=function(){if(this.in_filter)
-this.not_in_form=this.in_filter;if(this.not_in_form){return'Write';}
-if(!this.df.permlevel)this.df.permlevel=0;var p=this.perm[this.df.permlevel];var ret;if(cur_frm.editable&&p&&p[WRITE]&&!this.df.disabled)ret='Write';else if(p&&p[READ])ret='Read';else ret='None';if(this.df.fieldtype=='Binary')
-ret='None';if(cint(this.df.hidden))
-ret='None';if(ret=='Write'&&cint(cur_frm.doc.docstatus)>0)ret='Read';var a_o_s=cint(this.df.allow_on_submit);if(a_o_s&&(this.in_grid||(this.frm&&this.frm.not_in_container))){a_o_s=null;if(this.in_grid)a_o_s=this.grid.field.df.allow_on_submit;if(this.frm&&this.frm.not_in_container){a_o_s=cur_grid.field.df.allow_on_submit;}}
-if(cur_frm.editable&&a_o_s&&cint(cur_frm.doc.docstatus)>0&&!this.df.hidden){tmp_perm=get_perm(cur_frm.doctype,cur_frm.docname,1);if(tmp_perm[this.df.permlevel]&&tmp_perm[this.df.permlevel][WRITE]){ret='Write';}}
-return ret;}
-Field.prototype.set_style_mandatory=function(add){if(add){$(this.txt?this.txt:this.input).addClass('input-mandatory');if(this.disp_area)$(this.disp_area).addClass('input-mandatory');}else{$(this.txt?this.txt:this.input).removeClass('input-mandatory');if(this.disp_area)$(this.disp_area).removeClass('input-mandatory');}}
-Field.prototype.refresh_mandatory=function(){if(this.in_filter)return;if(this.df.reqd){if(this.label_area)this.label_area.style.color="#d22";this.set_style_mandatory(1);}else{if(this.label_area)this.label_area.style.color="#222";this.set_style_mandatory(0);}
-this.refresh_label_icon()
-this.set_reqd=this.df.reqd;}
-Field.prototype.refresh_display=function(){if(!this.current_status||this.current_status!=this.disp_status){if(this.disp_status=='Write'){if(this.make_input&&(!this.input)){this.make_input();if(this.onmake_input)this.onmake_input();}
-if(this.show)this.show()
-else{$ds(this.wrapper);}
-if(this.input){$ds(this.input_area);$dh(this.disp_area);if(this.input.refresh)this.input.refresh();}else{$dh(this.input_area);$ds(this.disp_area);}}else if(this.disp_status=='Read'){if(this.show)this.show()
-else{$ds(this.wrapper);}
-$dh(this.input_area);$ds(this.disp_area);}else{if(this.hide)this.hide();else $dh(this.wrapper);}
-this.current_status=this.disp_status;}}
-Field.prototype.refresh=function(){this.disp_status=this.get_status();if(this.in_grid&&this.table_refresh&&this.disp_status=='Write')
-{this.table_refresh();return;}
-this.set_label();this.refresh_display();if(this.onrefresh)
-this.onrefresh();if(this.input){if(this.input.refresh)this.input.refresh(this.df);}
-if(this.wrapper){this.wrapper.fieldobj=this;$(this.wrapper).trigger('refresh');}
-if(!this.not_in_form)
-this.set_input(_f.get_value(this.doctype,this.docname,this.df.fieldname));this.refresh_mandatory();this.set_max_width();}
-Field.prototype.refresh_label_icon=function(){var to_update=false;if(this.df.reqd&&this.get_value&&is_null(this.get_value()))
-to_update=true;if(!to_update&&this.df.has_error)this.df.has_error=false;if(this.label_icon)this.label_icon.toggle(to_update);$(this.txt?this.txt:this.input).toggleClass('field-to-update',to_update);$(this.txt?this.txt:this.input).toggleClass('field-has-error',this.df.has_error?true:false);}
-Field.prototype.set=function(val){if(this.not_in_form)
-return;if((!this.docname)&&this.grid){this.docname=this.grid.add_newrow();}
-if(this.validate)
-val=this.validate(val);cur_frm.set_value_in_locals(this.doctype,this.docname,this.df.fieldname,val);this.value=val;}
-Field.prototype.set_input=function(val){this.value=val;if(this.input&&this.input.set_input){if(val==null)this.input.set_input('');else this.input.set_input(val);}
-var disp_val=val;if(val==null)disp_val='';this.set_disp(disp_val);}
-Field.prototype.run_trigger=function(){this.refresh_label_icon();if(this.not_in_form){return;}
-if(cur_frm.cscript[this.df.fieldname])
-cur_frm.runclientscript(this.df.fieldname,this.doctype,this.docname);cur_frm.refresh_dependency();}
-Field.prototype.set_disp_html=function(t){if(this.disp_area){$(this.disp_area).addClass('disp_area');this.disp_area.innerHTML=(t==null?'':t);if(!t)$(this.disp_area).addClass('disp_area_no_val');}}
-Field.prototype.set_disp=function(val){this.set_disp_html(val);}
-Field.prototype.activate=function(docname){this.docname=docname;this.refresh();if(this.input){var v=_f.get_value(this.doctype,this.docname,this.df.fieldname);this.last_value=v;if(this.input.onchange&&this.input.get_value&&this.input.get_value()!=v){if(this.validate)
-this.input.set_value(this.validate(v));else
-this.input.set_value((v==null)?'':v);if(this.format_input)
-this.format_input();}
-if(this.input.focus){try{this.input.focus();}catch(e){}}}
-if(this.txt){try{this.txt.focus();}catch(e){}
-this.txt.field_object=this;}}
-function DataField(){}DataField.prototype=new Field();DataField.prototype.make_input=function(){var me=this;this.input=$a_input(this.input_area,this.df.fieldtype=='Password'?'password':'text');this.get_value=function(){var v=this.input.value;if(this.validate)
-v=this.validate(v);return v;}
-this.input.name=this.df.fieldname;$(this.input).change(function(){me.set_value(me.get_value?me.get_value():$(this.input).val());});this.set_value=function(val){if(!me.last_value)me.last_value='';if(me.validate){val=me.validate(val);me.input.value=val==undefined?'':val;}
-me.set(val);if(me.format_input)
-me.format_input();if(in_list(['Currency','Float','Int'],me.df.fieldtype)){if(flt(me.last_value)==flt(val)){me.last_value=val;return;}}
-me.last_value=val;me.run_trigger();}
-this.input.set_input=function(val){if(val==null)val='';me.input.value=val;if(me.format_input)me.format_input();}
-if(this.df.options=='Suggest'){if(this.suggest_icon)this.suggest_icon.toggle(true);$(me.input).autocomplete({source:function(request,response){wn.call({method:'webnotes.widgets.search.search_link',args:{'txt':request.term,'dt':me.df.options,'query':repl('SELECT DISTINCT `%(fieldname)s` FROM \
-       `tab%(dt)s` WHERE `%(fieldname)s` LIKE "%s" LIMIT 50',{fieldname:me.df.fieldname,dt:me.df.parent})},callback:function(r){response(r.results);}});},select:function(event,ui){me.set(ui.item.value);}});}}
-DataField.prototype.validate=function(v){if(this.df.options=='Phone'){if(v+''=='')return'';v1=''
-v=v.replace(/ /g,'').replace(/-/g,'').replace(/\(/g,'').replace(/\)/g,'');if(v&&v.substr(0,1)=='+'){v1='+';v=v.substr(1);}
-if(v&&v.substr(0,2)=='00'){v1+='00';v=v.substr(2);}
-if(v&&v.substr(0,1)=='0'){v1+='0';v=v.substr(1);}
-v1+=cint(v)+'';return v1;}else if(this.df.options=='Email'){if(v+''=='')return'';if(!validate_email(v)){msgprint(this.df.label+': '+v+' is not a valid email id');return'';}else
-return v;}else{return v;}}
-function ReadOnlyField(){}
-ReadOnlyField.prototype=new Field();function HTMLField(){}
-HTMLField.prototype=new Field();HTMLField.prototype.with_label=0;HTMLField.prototype.set_disp=function(val){if(this.disp_area)this.disp_area.innerHTML=val;}
-HTMLField.prototype.set_input=function(val){if(val)this.set_disp(val);}
-HTMLField.prototype.onrefresh=function(){if(this.df.options)this.set_disp(this.df.options);}
-var datepicker_active=0;function DateField(){}DateField.prototype=new Field();DateField.prototype.make_input=function(){var me=this;this.user_fmt=sys_defaults.date_format;if(!this.user_fmt)this.user_fmt='dd-mm-yy';this.input=$a(this.input_area,'input');$(this.input).datepicker({dateFormat:me.user_fmt.replace('yyyy','yy'),altFormat:'yy-mm-dd',changeYear:true,beforeShow:function(input,inst){datepicker_active=1},onClose:function(dateText,inst){datepicker_active=0;if(_f.cur_grid_cell)
-_f.cur_grid_cell.grid.cell_deselect();}});var me=this;me.input.onchange=function(){if(this.value==null)this.value='';if(!this.not_in_form)
-me.set(dateutil.user_to_str(me.input.value));me.run_trigger();}
-me.input.set_input=function(val){if(val==null)val='';else val=dateutil.str_to_user(val);me.input.value=val;}
-me.get_value=function(){if(me.input.value)
-return dateutil.user_to_str(me.input.value);}}
-DateField.prototype.set_disp=function(val){var v=dateutil.str_to_user(val);if(v==null)v='';this.set_disp_html(v);}
-DateField.prototype.validate=function(v){if(!v)return;var me=this;this.clear=function(){msgprint("Date must be in format "+this.user_fmt);me.input.set_input('');return'';}
-var t=v.split('-');if(t.length!=3){return this.clear();}
-else if(cint(t[1])>12||cint(t[1])<1){return this.clear();}
-else if(cint(t[2])>31||cint(t[2])<1){return this.clear();}
-return v;};function LinkField(){}LinkField.prototype=new Field();LinkField.prototype.make_input=function(){var me=this;if(me.df.no_buttons){this.txt=$a(this.input_area,'input');this.input=this.txt;}else{makeinput_popup(this,'icon-search','icon-play','icon-plus');me.setup_buttons();me.onrefresh=function(){if(me.can_create)
-$(me.btn2).css('display','inline-block');else $dh(me.btn2);}}
-me.txt.field_object=this;me.input.set_input=function(val){if(val==undefined)val='';me.txt.value=val;}
-me.get_value=function(){return me.txt.value;}
-$(me.txt).autocomplete({source:function(request,response){wn.call({method:'webnotes.widgets.search.search_link',args:{'txt':request.term,'dt':me.df.options,'query':me.get_custom_query()},callback:function(r){response(r.results);},});},select:function(event,ui){me.set_input_value(ui.item.value);}}).data('autocomplete')._renderItem=function(ul,item){return $('<li></li>').data('item.autocomplete',item).append(repl('<a>%(label)s<br><span style="font-size:10px">%(info)s</span></a>',item)).appendTo(ul);};$(this.txt).change(function(){var val=$(this).val();me.set_input_value_executed=false;if(!val){if(selector&&selector.display)
-return;me.set_input_value('');}else{setTimeout(function(){if(!me.set_input_value_executed){me.set_input_value(val);}},1000);}})}
-LinkField.prototype.get_custom_query=function(){this.set_get_query();if(this.get_query){if(cur_frm)
-var doc=locals[cur_frm.doctype][cur_frm.docname];return this.get_query(doc,this.doctype,this.docname);}}
-LinkField.prototype.setup_buttons=function(){var me=this;me.btn.onclick=function(){selector.set(me,me.df.options,me.df.label);selector.show(me.txt);}
-if(me.btn1)me.btn1.onclick=function(){if(me.txt.value&&me.df.options){loaddoc(me.df.options,me.txt.value);}}
-me.can_create=0;if((!me.not_in_form)&&in_list(profile.can_create,me.df.options)){me.can_create=1;me.btn2.onclick=function(){var on_save_callback=function(new_rec){if(new_rec){var d=_f.calling_doc_stack.pop();locals[d[0]][d[1]][me.df.fieldname]=new_rec;me.refresh();if(me.grid)me.grid.refresh();me.run_trigger();}}
-_f.calling_doc_stack.push([me.doctype,me.docname]);new_doc(me.df.options);}}else{$dh(me.btn2);$y($td(me.tab,0,2),{width:'0px'});}}
-LinkField.prototype.set_input_value=function(val){var me=this;me.set_input_value_executed=true;var from_selector=false;if(selector&&selector.display)from_selector=true;me.refresh_label_icon();if(me.not_in_form){$(this.txt).val(val);return;}
-if(cur_frm){if(val==locals[me.doctype][me.docname][me.df.fieldname]){me.run_trigger();return;}}
-me.set(val);if(_f.cur_grid_cell)
-_f.cur_grid_cell.grid.cell_deselect();if(locals[me.doctype][me.docname][me.df.fieldname]&&!val){me.run_trigger();return;}
-if(val){me.validate_link(val,from_selector);}}
-LinkField.prototype.validate_link=function(val,from_selector){var me=this;var fetch='';if(cur_frm.fetch_dict[me.df.fieldname])
-fetch=cur_frm.fetch_dict[me.df.fieldname].columns.join(', ');$c('webnotes.widgets.form.utils.validate_link',{'value':val,'options':me.df.options,'fetch':fetch},function(r,rt){if(r.message=='Ok'){if($(me.txt).val()!=val){if((me.grid&&!from_selector)||(!me.grid)){$(me.txt).val(val);}}
-if(r.fetch_values)
-me.set_fetch_values(r.fetch_values);me.run_trigger();}else{var astr='';if(in_list(profile.can_create,me.df.options))astr=repl('<br><br><span class="link_type" onclick="newdoc(\'%(dt)s\')">Click here</span> to create a new %(dtl)s',{dt:me.df.options,dtl:get_doctype_label(me.df.options)})
-msgprint(repl('error:<b>%(val)s</b> is not a valid %(dt)s.<br><br>You must first create a new %(dt)s <b>%(val)s</b> and then select its value. To find an existing %(dt)s, click on the magnifying glass next to the field.%(add)s',{val:me.txt.value,dt:get_doctype_label(me.df.options),add:astr}));me.txt.value='';me.set('');}});}
-LinkField.prototype.set_fetch_values=function(fetch_values){var fl=cur_frm.fetch_dict[this.df.fieldname].fields;var changed_fields=[];for(var i=0;i<fl.length;i++){if(locals[this.doctype][this.docname][fl[i]]!=fetch_values[i]){locals[this.doctype][this.docname][fl[i]]=fetch_values[i];if(!this.grid){refresh_field(fl[i]);changed_fields.push(fl[i]);}}}
-for(i=0;i<changed_fields.length;i++){if(cur_frm.fields_dict[changed_fields[i]])
-cur_frm.fields_dict[changed_fields[i]].run_trigger();}
-if(this.grid)this.grid.refresh();}
-LinkField.prototype.set_get_query=function(){if(this.get_query)return;if(this.grid){var f=this.grid.get_field(this.df.fieldname);if(f.get_query)this.get_query=f.get_query;}}
-LinkField.prototype.set_disp=function(val){var t=null;if(val)t="<a href=\'javascript:loaddoc(\""+this.df.options+"\", \""+val+"\")\'>"+val+"</a>";this.set_disp_html(t);}
-function IntField(){}IntField.prototype=new DataField();IntField.prototype.validate=function(v){if(isNaN(parseInt(v)))return null;return cint(v);};IntField.prototype.format_input=function(){if(this.input.value==null)this.input.value='';}
-function FloatField(){}FloatField.prototype=new DataField();FloatField.prototype.validate=function(v){var v=parseFloat(v);if(isNaN(v))
-return null;return v;};FloatField.prototype.format_input=function(){if(this.input.value==null)this.input.value='';}
-function CurrencyField(){}CurrencyField.prototype=new DataField();CurrencyField.prototype.format_input=function(){var v=fmt_money(this.input.value);if(this.not_in_form){if(!flt(this.input.value))v='';}
-this.input.value=v;}
-CurrencyField.prototype.validate=function(v){if(v==null||v=='')
-return 0;return flt(v,2);}
-CurrencyField.prototype.set_disp=function(val){var v=fmt_money(val);this.set_disp_html(v);}
-CurrencyField.prototype.onmake_input=function(){if(!this.input)return;this.input.onfocus=function(){if(flt(this.value)==0)this.select();}}
-function CheckField(){}CheckField.prototype=new Field();CheckField.prototype.validate=function(v){var v=parseInt(v);if(isNaN(v))return 0;return v;};CheckField.prototype.onmake=function(){this.checkimg=$a(this.disp_area,'div');var img=$a(this.checkimg,'img');img.src='images/lib/ui/tick.gif';$dh(this.checkimg);}
-CheckField.prototype.make_input=function(){var me=this;this.input=$a_input(this.input_area,'checkbox');$y(this.input,{width:"16px",border:'0px',margin:'2px'});$(this.input).click(function(){me.set(this.checked?1:0);me.run_trigger();})
-this.input.set_input=function(v){v=parseInt(v);if(isNaN(v))v=0;if(v)me.input.checked=true;else me.input.checked=false;}
-this.get_value=function(){return this.input.checked?1:0;}}
-CheckField.prototype.set_disp=function(val){if(val){$ds(this.checkimg);}
-else{$dh(this.checkimg);}}
-function TextField(){}TextField.prototype=new Field();TextField.prototype.set_disp=function(val){this.disp_area.innerHTML=replace_newlines(val);}
-TextField.prototype.make_input=function(){var me=this;if(this.in_grid)
-return;this.input=$a(this.input_area,'textarea');if(this.df.fieldtype=='Small Text')
-this.input.style.height="80px";this.input.set_input=function(v){me.input.value=v;}
-this.input.onchange=function(){me.set(me.input.value);me.run_trigger();}
-this.get_value=function(){return this.input.value;}}
-var text_dialog;function make_text_dialog(){var d=new Dialog(520,410,'Edit Text');d.make_body([['Text','Enter Text'],['HTML','Description'],['Button','Update']]);d.widgets['Update'].onclick=function(){var t=this.dialog;t.field.set(t.widgets['Enter Text'].value);t.hide();}
-d.onshow=function(){this.widgets['Enter Text'].style.height='300px';var v=_f.get_value(this.field.doctype,this.field.docname,this.field.df.fieldname);this.widgets['Enter Text'].value=v==null?'':v;this.widgets['Enter Text'].focus();this.widgets['Description'].innerHTML=''
-if(this.field.df.description)
-$a(this.widgets['Description'],'div','help small','',this.field.df.description);}
-d.onhide=function(){if(_f.cur_grid_cell)
-_f.cur_grid_cell.grid.cell_deselect();}
-text_dialog=d;}
-TextField.prototype.table_refresh=function(){if(!this.text_dialog)
-make_text_dialog();text_dialog.set_title('Enter text for "'+this.df.label+'"');text_dialog.field=this;text_dialog.show();}
-function SelectField(){}SelectField.prototype=new Field();SelectField.prototype.make_input=function(){var me=this;var opt=[];if(this.in_filter&&(!this.df.single_select)){this.input=$a(this.input_area,'select');this.input.multiple=true;this.input.style.height='4em';this.input.lab=$a(this.input_area,'div',{fontSize:'9px',color:'#999'});this.input.lab.innerHTML='(Use Ctrl+Click to select multiple or de-select)'}else{this.input=$a(this.input_area,'select');this.input.onchange=function(){if(me.validate)
-me.validate();me.set(sel_val(this));me.run_trigger();}
-if(this.df.options=='attach_files:'){this.file_attach=true;}}
-this.set_as_single=function(){var i=this.input;i.multiple=false;i.style.height=null;if(i.lab)$dh(i.lab)}
-this.refresh_options=function(options){if(options)
-me.df.options=options;if(this.file_attach)
-this.set_attach_options();me.options_list=me.df.options?me.df.options.split('\n'):[''];empty_select(this.input);if(me.in_filter&&me.options_list[0]!=''){me.options_list=add_lists([''],me.options_list);}
-add_sel_options(this.input,me.options_list);}
-this.onrefresh=function(){this.refresh_options();if(this.not_in_form){this.input.value='';return;}
-if(_f.get_value)
-var v=_f.get_value(this.doctype,this.docname,this.df.fieldname);else{if(this.options_list&&this.options_list.length)
-var v=this.options_list[0];else
-var v=null;}
-this.input.set_input(v);}
-this.input.set_input=function(v){if(!v){if(!me.input.multiple){if(me.docname){if(me.options_list&&me.options_list.length){me.set(me.options_list[0]);me.input.value=me.options_list[0];}else{me.input.value='';}}}}else{if(me.options_list){if(me.input.multiple){for(var i=0;i<me.input.options.length;i++){me.input.options[i].selected=0;if(me.input.options[i].value&&inList(typeof(v)=='string'?v.split(","):v,me.input.options[i].value))
-me.input.options[i].selected=1;}}else if(in_list(me.options_list,v)){me.input.value=v;}}}}
-this.get_value=function(){if(me.input.multiple){var l=[];for(var i=0;i<me.input.options.length;i++){if(me.input.options[i].selected)l[l.length]=me.input.options[i].value;}
-return l;}else{if(me.input.options){var val=sel_val(me.input);if(!val&&!me.input.selectedIndex)
-val=me.input.options[0].value;return val;}
-return me.input.value;}}
-this.set_attach_options=function(){if(!cur_frm)return;var fl=cur_frm.doc.file_list;if(fl){this.df.options='';var fl=fl.split('\n');for(var i in fl){this.df.options+='\n'+fl[i].split(',')[1];}}else{this.df.options=''}}
-this.refresh();}
-function TimeField(){}TimeField.prototype=new Field();TimeField.prototype.get_time=function(){return time_to_hhmm(sel_val(this.input_hr),sel_val(this.input_mn),sel_val(this.input_am));}
-TimeField.prototype.set_time=function(v){ret=time_to_ampm(v);this.input_hr.inp.value=ret[0];this.input_mn.inp.value=ret[1];this.input_am.inp.value=ret[2];}
-TimeField.prototype.set_style_mandatory=function(){}
-TimeField.prototype.make_input=function(){var me=this;this.input=$a(this.input_area,'div','time_field');var t=make_table(this.input,1,3,'200px');var opt_hr=['1','2','3','4','5','6','7','8','9','10','11','12'];var opt_mn=['00','05','10','15','20','25','30','35','40','45','50','55'];var opt_am=['AM','PM'];this.input_hr=new SelectWidget($td(t,0,0),opt_hr,'50px');this.input_mn=new SelectWidget($td(t,0,1),opt_mn,'50px');this.input_am=new SelectWidget($td(t,0,2),opt_am,'50px');var onchange_fn=function(){me.set(me.get_time());me.run_trigger();}
-this.input_hr.inp.onchange=onchange_fn;this.input_mn.inp.onchange=onchange_fn;this.input_am.inp.onchange=onchange_fn;this.onrefresh=function(){var v=_f.get_value?_f.get_value(me.doctype,me.docname,me.df.fieldname):null;me.set_time(v);if(!v)
-me.set(me.get_time());}
-this.input.set_input=function(v){if(v==null)v='';me.set_time(v);}
-this.get_value=function(){return this.get_time();}
-this.refresh();}
-TimeField.prototype.set_disp=function(v){var t=time_to_ampm(v);var t=t[0]+':'+t[1]+' '+t[2];this.set_disp_html(t);}
-function makeinput_popup(me,iconsrc,iconsrc1,iconsrc2){var icon_style={cursor:'pointer',width:'16px',verticalAlign:'middle',marginBottom:'-3px'};me.input=$a(me.input_area,'div');if(!me.not_in_form)
-$y(me.input,{width:'80%'});me.input.set_width=function(w){$y(me.input,{width:(w-2)+'px'});}
-var tab=$a(me.input,'table');me.tab=tab;$y(tab,{width:'100%',borderCollapse:'collapse',tableLayout:'fixed'});var c0=tab.insertRow(0).insertCell(0);var c1=tab.rows[0].insertCell(1);$y(c1,{width:'20px'});me.txt=$a($a($a(c0,'div','',{paddingRight:'8px'}),'div'),'input','',{width:'100%'});me.btn=$a(c1,'i',iconsrc,icon_style)
-if(iconsrc1)
-me.btn.setAttribute('title','Search');else
-me.btn.setAttribute('title','Select Date');if(iconsrc1){var c2=tab.rows[0].insertCell(2);$y(c2,{width:'20px'});me.btn1=$a(c2,'i',iconsrc1,icon_style)
-me.btn1.setAttribute('title','Open Link');}
-if(iconsrc2){var c3=tab.rows[0].insertCell(3);$y(c3,{width:'20px'});me.btn2=$a(c3,'i',iconsrc2,icon_style)
-me.btn2.setAttribute('title','Create New');$dh(me.btn2);}
-me.txt.name=me.df.fieldname;me.setdisabled=function(tf){me.txt.disabled=tf;}}
-var tmpid=0;_f.ButtonField=function(){};_f.ButtonField.prototype=new Field();_f.ButtonField.prototype.with_label=0;_f.ButtonField.prototype.init=function(){this.prev_button=null;if(!this.frm)return;if(cur_frm&&cur_frm.fields[cur_frm.fields.length-1]&&cur_frm.fields[cur_frm.fields.length-1].df.fieldtype=='Button'){this.make_body=function(){this.prev_button=cur_frm.fields[cur_frm.fields.length-1];if(!this.prev_button.prev_button){this.prev_button.button_area=$a(this.prev_button.input_area,'span');}
-this.wrapper=this.prev_button.wrapper;this.input_area=this.prev_button.input_area;this.disp_area=this.prev_button.disp_area;this.button_area=$a(this.prev_button.input_area,'span');}}}
-_f.ButtonField.prototype.make_input=function(){var me=this;if(!this.prev_button){$y(this.input_area,{marginTop:'4px',marginBottom:'4px'});}
-if(!this.button_area)
-this.button_area=$a(this.input_area,'span','',{marginRight:'4px'});this.input=$btn(this.button_area,me.df.label,null,{fontWeight:'bold'},null,1)
-$(this.input).click(function(){if(me.not_in_form)return;if(cur_frm.cscript[me.df.fieldname]&&(!me.in_filter)){cur_frm.runclientscript(me.df.fieldname,me.doctype,me.docname);}else{cur_frm.runscript(me.df.options,me);}});}
-_f.ButtonField.prototype.hide=function(){$dh(this.button_area);};_f.ButtonField.prototype.show=function(){$ds(this.button_area);};_f.ButtonField.prototype.set=function(v){};_f.ButtonField.prototype.set_disp=function(val){}
-function make_field(docfield,doctype,parent,frm,in_grid,hide_label){switch(docfield.fieldtype.toLowerCase()){case'data':var f=new DataField();break;case'password':var f=new DataField();break;case'int':var f=new IntField();break;case'float':var f=new FloatField();break;case'currency':var f=new CurrencyField();break;case'read only':var f=new ReadOnlyField();break;case'link':var f=new LinkField();break;case'date':var f=new DateField();break;case'time':var f=new TimeField();break;case'html':var f=new HTMLField();break;case'check':var f=new CheckField();break;case'text':var f=new TextField();break;case'small text':var f=new TextField();break;case'select':var f=new SelectField();break;case'button':var f=new _f.ButtonField();break;case'code':var f=new _f.CodeField();break;case'text editor':var f=new _f.CodeField();break;case'table':var f=new _f.TableField();break;case'section break':var f=new _f.SectionBreak();break;case'column break':var f=new _f.ColumnBreak();break;case'image':var f=new _f.ImageField();break;}
-f.parent=parent;f.doctype=doctype;f.df=docfield;f.perm=frm?frm.perm:[[1,1,1]];if(_f)
-f.col_break_width=_f.cur_col_break_width;if(in_grid){f.in_grid=true;f.with_label=0;}
-if(hide_label){f.with_label=0;}
-if(frm){f.frm=frm;if(parent)
-f.layout_cell=parent.parentNode;}
-if(f.init)f.init();f.make_body();return f;}
\ No newline at end of file
diff --git a/public/js/app/gantt_task.js b/public/js/gantt_task.js
similarity index 95%
rename from public/js/app/gantt_task.js
rename to public/js/gantt_task.js
index aa3adbb..4cf25b3 100644
--- a/public/js/app/gantt_task.js
+++ b/public/js/gantt_task.js
@@ -16,8 +16,8 @@
 
 // gantt chart for project tasks
 
-wn.require('js/lib/jQuery.Gantt/css/style.css');
-wn.require('js/lib/jQuery.Gantt/js/jquery.fn.gantt.min.js');
+wn.require('lib/js/lib/jQuery.Gantt/css/style.css');
+wn.require('lib/js/lib/jQuery.Gantt/js/jquery.fn.gantt.min.js');
 
 erpnext.show_task_gantt = function(parent, project) {
 	
diff --git a/public/js/app/kb_common.js b/public/js/kb_common.js
similarity index 100%
rename from public/js/app/kb_common.js
rename to public/js/kb_common.js
diff --git a/public/js/listing.js b/public/js/listing.js
deleted file mode 100644
index d40c72f..0000000
--- a/public/js/listing.js
+++ /dev/null
@@ -1,91 +0,0 @@
-
-/*
- *	lib/js/legacy/widgets/listing.js
- */
-list_opts={cell_style:{padding:'3px 2px'},alt_cell_style:{},head_style:{height:'20px',overflow:'hidden',verticalAlign:'middle',fontWeight:'bold',padding:'1px',fontSize:'13px'},head_main_style:{padding:'0px'},hide_export:1,hide_print:1,hide_refresh:0,hide_rec_label:0,show_calc:1,show_empty_tab:0,no_border:1,append_records:1,table_width:null};function Listing(head_text,no_index,no_loading){this.start=0;this.page_len=20;this.filters_per_line=7;this.cell_idx=0;this.head_text=head_text?head_text:'Result';this.keyword='records';this.no_index=no_index;this.underline=1;this.no_rec_message='No Result';this.show_cell=null;this.show_result=null;this.colnames=null;this.colwidths=null;this.coltypes=null;this.coloptions=null;this.filters={};this.sort_list={};this.sort_order_dict={};this.sort_heads={};this.is_std_query=false;this.server_call=null;this.no_loading=no_loading;this.opts=copy_dict(list_opts);}
-Listing.prototype.make=function(parent){var me=this;this.wrapper=parent;this.filter_wrapper=$a(parent,'div','srs_filter_wrapper');this.filter_area=$a(this.filter_wrapper,'div','srs_filter_area');$dh(this.filter_wrapper);this.btn_area=$a(parent,'div','',{margin:'8px 0px'});this.body_area=$a(parent,'div','srs_body_area');if(!this.opts.hide_rec_label)
-this.rec_label=$a(this.body_area,'div','',{margin:'4px 0px',color:'#888'});this.results=$a($a(this.body_area,'div','srs_results_area'),'div');this.fetching_area=$a(this.body_area,'div','',{height:'120px',background:'url("images/lib/ui/square_loading.gif") center no-repeat',display:'none'});this.show_no_records=$a(this.body_area,'div','',{margin:'200px 0px',textAlign:'center',fontSize:'14px',color:'#888',display:'none'});this.show_no_records.innerHTML='No Result';if(this.opts.show_empty_tab)
-this.make_result_tab();this.bottom_div=$a(this.body_area,'div','',{paddingTop:'8px'});this.make_toolbar();}
-Listing.prototype.make_toolbar=function(){var me=this;this.buttons={};var make_btn=function(label,icon,onclick,bold){var btn=$btn(me.btn_area,label,onclick,{marginRight:'4px'});if(bold)$y(btn,{fontWeight:'bold'});me.buttons[label]=btn;}
-if(!this.opts.hide_refresh){make_btn('Refresh','ui-icon-refresh',function(btn){me.start=0;me.run();},1);}
-if(this.opts.show_new){make_btn('New ','ui-icon-document',function(){new_doc(me.dt);},1);}
-if(this.opts.show_report){make_btn('Report Builder','ui-icon-clipboard',function(){loadreport(me.dt,null,null,null,1);},0);}
-if(!this.opts.hide_export){make_btn('Export','ui-icon-circle-arrow-e',function(){me.do_export();});}
-if(this.opts.show_calc){make_btn('Calc','ui-icon-calculator',function(){me.do_calc();});$dh(me.buttons['Calc'])}
-this.loading_img=$a(this.btn_area,'img','',{display:'none',marginBottom:'-2px'});this.loading_img.src='images/lib/ui/button-load.gif';if(!keys(this.buttons).length)
-$dh(this.btn_area);}
-Listing.prototype.do_calc=function(){show_calc(this.result_tab,this.colnames,this.coltypes,0)}
-Listing.prototype.add_filter=function(label,ftype,options,tname,fname,cond){if(!this.filter_area){alert('[Listing] make() must be called before add_filter');}
-var me=this;if(!this.filter_set){var h=$a(this.filter_area,'div','',{fontSize:'14px',fontWeight:'bold',marginBottom:'4px'});h.innerHTML='Filter your search';this.filter_area.div=$a(this.filter_area,'div');this.perm=[[1,1],]
-this.filters={};}
-$ds(this.filter_wrapper);if((!this.inp_tab)||(this.cell_idx==this.filters_per_line)){this.inp_tab=$a(this.filter_area.div,'table','',{width:'100%',tableLayout:'fixed'});this.inp_tab.insertRow(0);for(var i=0;i<this.filters_per_line;i++){this.inp_tab.rows[0].insertCell(i);}
-this.cell_idx=0;}
-var c=this.inp_tab.rows[0].cells[this.cell_idx];this.cell_idx++;$y(c,{width:cint(100/this.filters_per_line)+'%',textAlign:'left',verticalAlign:'top'});var d1=$a(c,'div','',{fontSize:'11px',marginBottom:'2px'});d1.innerHTML=label;if(ftype=='Link')d1.innerHTML+=' <img src="images/lib/icons/link.png" style="margin-bottom:-5px" title="Link">';var d2=$a(c,'div');if(in_list(['Text','Small Text','Code','Text Editor','Read Only'],ftype))
-ftype='Data';if(ftype=='Select'&&!in_list(options.split('\n'),''))options='\n'+options
-var inp=make_field({fieldtype:ftype,'label':label,'options':options,no_buttons:1},'',d2,this,0,1);inp.not_in_form=1;inp.report=this;inp.df.single_select=1;inp.parent_cell=c;inp.parent_tab=this.input_tab;$y(inp.wrapper,{width:'95%'});inp.refresh();inp.tn=tname;inp.fn=fname;inp.condition=ftype=='Data'?'like':cond;var me=this;inp.onchange=function(){me.start=0;}
-this.filters[label]=inp;this.filter_set=1;}
-Listing.prototype.remove_filter=function(label){var inp=this.filters[label];inp.parent_tab.rows[0].deleteCell(inp.parent_cell.cellIndex);delete this.filters[label];}
-Listing.prototype.remove_all_filters=function(){for(var k in this.filters)this.remove_filter(k);$dh(this.filter_wrapper);}
-Listing.prototype.add_sort=function(ci,fname){this.sort_list[ci]=fname;}
-Listing.prototype.has_data=function(){return this.n_records;}
-Listing.prototype.set_default_sort=function(fname,sort_order){this.sort_order=sort_order;this.sort_order_dict[fname]=sort_order;this.sort_by=fname;if(this.sort_heads[fname])
-this.sort_heads[fname].set_sorting_as(sort_order);}
-Listing.prototype.set_sort=function(cell,ci,fname){var me=this;$y(cell.sort_cell,{width:'18px'});cell.sort_img=$a(cell.sort_cell,'img');cell.fname=fname;$dh(cell.sort_img);cell.set_sort_img=function(order){var t='images/icons/sort_desc.gif';if(order=='ASC'){t='images/icons/sort_asc.gif';}
-this.sort_img.src=t;}
-cell.set_sorting_as=function(order){me.sort_order=order;me.sort_by=this.fname
-me.sort_order_dict[this.fname]=order;this.set_sort_img(order)
-if(me.cur_sort){$y(me.cur_sort,{backgroundColor:"#FFF"});$dh(me.cur_sort.sort_img);}
-me.cur_sort=this;$y(this,{backgroundColor:"#DDF"});$di(this.sort_img);}
-$y(cell.label_cell,{color:'#44A',cursor:'pointer'});cell.set_sort_img(me.sort_order_dict[fname]?me.sort_order_dict[fname]:'ASC');cell.onmouseover=function(){$di(this.sort_img);}
-cell.onmouseout=function(){if(this!=me.cur_sort)
-$dh(this.sort_img);}
-cell.onclick=function(){this.set_sorting_as((me.sort_order_dict[fname]=='ASC')?'DESC':'ASC');me.run();}
-this.sort_heads[fname]=cell;}
-Listing.prototype.do_export=function(){this.build_query();var me=this;me.cn=[];if(this.no_index)
-me.cn=this.colnames;else{for(var i=1;i<this.colnames.length;i++)
-me.cn.push(this.colnames[i]);}
-var q=export_query(this.query,function(query){export_csv(query,me.head_text,null,1,null,me.cn);});}
-Listing.prototype.build_query=function(){if(this.get_query)this.get_query(this);if(!this.query){alert('No Query!');return;}
-if(!this.prefix)this.prefix='tab';var cond=[];for(var i in this.filters){var f=this.filters[i];var val=f.get_value();var c=f.condition;if(!c)c='=';if(val&&c.toLowerCase()=='like')val+='%';if(f.tn&&val&&!in_list(['All','Select...',''],val))
-cond.push(repl(' AND `%(prefix)s%(dt)s`.%(fn)s %(condition)s "%(val)s"',{prefix:this.prefix,dt:f.tn,fn:f.fn,condition:c,val:val}));}
-if(cond){this.query+=NEWLINE+cond.join(NEWLINE)
-if(this.query_max)
-this.query_max+=NEWLINE+cond.join(NEWLINE)}
-if(this.group_by)
-this.query+=' '+this.group_by+' ';if(this.sort_by&&this.sort_order){this.query+=NEWLINE+' ORDER BY `'+this.sort_by+'` '+this.sort_order;}
-if(this.show_query)msgprint(this.query);}
-Listing.prototype.set_rec_label=function(total,cur_page_len){if(this.opts.hide_rec_label)
-return;else if(total==-1)
-this.rec_label.innerHTML='Fetching...'
-else if(total>0)
-this.rec_label.innerHTML=repl('Total %(total)s %(keyword)s. Showing %(start)s to %(end)s',{total:total,start:cint(this.start)+1,end:cint(this.start)+cint(cur_page_len),keyword:this.keyword});else if(total==null)
-this.rec_label.innerHTML=''
-else if(total==0)
-this.rec_label.innerHTML=this.no_rec_message;}
-Listing.prototype.run=function(run_callback){this.build_query();var q=this.query;var me=this;if(this.max_len&&this.start>=this.max_len)this.start-=this.page_len;q+=' LIMIT '+this.start+','+this.page_len;var call_back=function(r,rt){$dh(me.loading_img);me.max_len=r.n_values;if(r.values&&r.values.length){me.n_records=r.values.length;var nc=r.values[0].length;if(me.colwidths)nc=me.colwidths.length-(me.no_index?0:1);if(me.opts.append_records&&me.start!=0){me.append_rows(r.values.length);}else{me.clear_tab();if(!me.show_empty_tab){me.remove_result_tab();me.make_result_tab(r.values.length);}}
-me.refresh(r.values.length,nc,r.values,r.n_values);me.total_records=r.n_values;me.set_rec_label(r.n_values,r.values.length);}else{me.n_records=0;me.set_rec_label(0);me.clear_tab();if(!me.opts.append_records){if(me.show_empty_tab){me.clear_tab();}else{me.remove_result_tab();me.make_result_tab(0);if(me.opts.show_no_records_label){$ds(me.show_no_records);}}}}
-$ds(me.results);if(run_callback)run_callback();if(me.onrun)me.onrun();}
-$dh(me.show_no_records);this.set_rec_label(-1);$di(this.loading_img);if(this.server_call){this.server_call(this,call_back);}else{args={query_max:(this.query_max?this.query_max:'')}
-if(this.is_std_query)args.query=q;else args.simple_query=q;if(this.opts.formatted)args.formatted=1;$c('webnotes.widgets.query_builder.runquery',args,call_back,null,this.no_loading);}}
-Listing.prototype.remove_result_tab=function(){if(!this.result_tab)return;this.result_tab.parentNode.removeChild(this.result_tab);delete this.result_tab;}
-Listing.prototype.reset_tab=function(){this.remove_result_tab();this.make_result_tab();}
-Listing.prototype.make_result_tab=function(nr){if(this.result_tab)return;if(!this.colwidths)alert("Listing: Must specify column widths");var has_headrow=this.colnames?1:0;if(nr==null)nr=this.page_len;nr+=has_headrow;var nc=this.colwidths.length;var t=make_table(this.results,nr,nc,(this.opts.table_width?this.opts.table_width:'100%'),this.colwidths,{padding:'0px'});t.className='srs_result_tab';this.result_tab=t;$y(t,{borderCollapse:'collapse'});if(this.opts.table_width){$y(this.results,{overflowX:'auto'});$y(t,{tableLayout:'fixed'});}
-if(has_headrow){this.make_headings(t,nr,nc);if(this.sort_by&&this.sort_heads[this.sort_by]){this.sort_heads[this.sort_by].set_sorting_as(this.sort_order);}}
-this.set_table_style();if(this.opts.no_border==1){$y(t,{border:'0px'});}
-this.result_tab=t;}
-Listing.prototype.set_table_style=function(){var t=this.result_tab;for(var ri=(this.colnames?1:0);ri<t.rows.length;ri++){for(var ci=0;ci<t.rows[ri].cells.length;ci++){if(this.opts.cell_style)$y($td(t,ri,ci),this.opts.cell_style);if(this.opts.alt_cell_style&&(ri%2))$y($td(t,ri,ci),this.opts.alt_cell_style);if(this.opts.show_empty_tab&&!$td(t,ri,ci).innerHTML)$td(t,ri,ci).innerHTML='&nbsp;';}}}
-Listing.prototype.append_rows=function(nr){for(var i=0;i<nr;i++){append_row(this.result_tab);}
-this.set_table_style();}
-Listing.prototype.clear_tab=function(){$dh(this.results);if(this.result_tab){var nr=this.result_tab.rows.length;var nc=this.result_tab.rows[0].cells.length;for(var ri=(this.colnames?1:0);ri<nr;ri++)
-for(var ci=0;ci<nc;ci++)
-$td(this.result_tab,ri,ci).innerHTML=(this.opts.show_empty_tab?'&nbsp;':'');}}
-Listing.prototype.clear=function(){this.rec_label.innerHTML='';this.clear_tab();}
-Listing.prototype.refresh_calc=function(){if(!this.opts.show_calc)return;if(has_common(this.coltypes,['Currency','Int','Float'])){$di(this.buttons['Calc']);}else{$dh(this.buttons['Calc']);}}
-Listing.prototype.refresh=function(nr,nc,d,n_values){this.refresh_more_button(nr,n_values);this.refresh_calc();if(this.show_result)
-this.show_result();else{if(nr){var start=this.result_tab.rows.length-nr;for(var ri=start;ri<start+nr;ri++){var c0=$td(this.result_tab,ri,0);if(!this.no_index){c0.innerHTML=cint(this.start)+cint(ri-start)+1;}
-for(var ci=0;ci<nc;ci++){var c=$td(this.result_tab,ri,ci+(this.no_index?0:1));if(c){c.innerHTML='';if(this.show_cell)this.show_cell(c,ri-start,ci,d);else this.std_cell(c,ri-start,ci,d);}}}}}}
-Listing.prototype.refresh_more_button=function(nr,n_values){var me=this;if(this.more_btn){$dh(this.more_btn);}
-if((this.start+nr)==this.max_len||(!this.max_len&&nr<this.page_len)){}else if(nr){if(!this.more_btn){$y(this.bottom_div,{margin:'8px 0px 16px 0px',textAlign:'center'});this.more_btn=$btn(this.bottom_div,'Show more results...',function(){me.start=me.start+me.page_len;me.more_btn.set_working();me.run(function(){me.more_btn.done_working();});},{fontSize:'14px'},0,1);$y(this.more_btn.loading_img,{marginBottom:'0px'});}
-$di(this.more_btn);}}
-Listing.prototype.make_headings=function(t,nr,nc){for(var ci=0;ci<nc;ci++){var tmp=make_table($td(t,0,ci),1,2,'100%',['','0px'],this.opts.head_style);$y(tmp,{tableLayout:'fixed',borderCollapse:'collapse'});$y($td(t,0,ci),this.opts.head_main_style);$td(t,0,ci).sort_cell=$td(tmp,0,1);$td(t,0,ci).label_cell=$td(tmp,0,0);$td(tmp,0,1).style.padding='0px';$td(tmp,0,0).innerHTML=this.colnames[ci]?this.colnames[ci]:'&nbsp;';if(this.sort_list[ci])this.set_sort($td(t,0,ci),ci,this.sort_list[ci]);var div=$a($td(t,0,ci),'div');$td(t,0,ci).style.borderBottom='1px solid #CCC';if(this.coltypes&&this.coltypes[ci]&&in_list(['Currency','Float','Int'],this.coltypes[ci]))$y($td(t,0,ci).label_cell,{textAlign:'right'})}}
-Listing.prototype.std_cell=function(cell,ri,ci,d){var has_headrow=this.colnames?1:0;cell.div=$a(cell,'div');$s(cell.div,d[ri][ci],this.coltypes?this.coltypes[ci+(this.no_index?0:1)]:null,this.coloptions?this.coloptions[ci+(this.no_index?0:1)]:null);}
\ No newline at end of file
diff --git a/public/js/report-legacy.js b/public/js/report-legacy.js
deleted file mode 100644
index 2ab1d1c..0000000
--- a/public/js/report-legacy.js
+++ /dev/null
@@ -1,276 +0,0 @@
-
-/*
- *	lib/js/legacy/widgets/report_builder/report_builder.js
- */
-_r.ReportContainer=function(){if(user=='Guest'){msgprint("Not Allowed");return;}
-var page=wn.container.add_page("Report Builder");this.wrapper=$a(page,'div','layout-wrapper',{padding:'0px'});this.appframe=new wn.ui.AppFrame(this.wrapper);this.appframe.$titlebar.append('<span class="report-title">');this.rb_area=$a(this.wrapper,'div','',{padding:'15px'});var me=this;this.rb_dict={};var run_fn=function(){if(me.cur_rb){me.cur_rb.dt.start_rec=1;me.cur_rb.dt.run();}}
-var runbtn=this.appframe.add_button('Run',run_fn,'icon-refresh');this.appframe.add_button('Export',function(){me.cur_rb&&me.cur_rb.dt.do_export();},'icon-download-alt');this.appframe.add_button('Print',function(){me.cur_rb&&me.cur_rb.dt.do_print();},'icon-print');this.appframe.add_button('Calc',function(){me.cur_rb&&me.cur_rb.dt.do_calc();},'icon-plus');if(has_common(['Administrator','System Manager'],user_roles)){var savebtn=this.appframe.add_button('Save',function(){if(me.cur_rb)me.cur_rb.save_criteria();});var fn=function(){if(me.cur_rb){if(!me.cur_rb.current_loaded){msgprint("error:You must save the report before you can set Advanced features");return;}
-loaddoc('Search Criteria',me.cur_rb.sc_dict[me.cur_rb.current_loaded]);}};var advancedbtn=this.appframe.add_button('Advanced Settings',fn,'icon-cog');}
-this.set_dt=function(dt,onload){my_onload=function(f){if(!f.forbidden){me.cur_rb=f;me.cur_rb.mytabs.items['Result'].expand();if(onload)onload(f);}}
-if(me.cur_rb)
-me.cur_rb.hide();if(me.rb_dict[dt]){me.rb_dict[dt].show(my_onload);}else{me.rb_dict[dt]=new _r.ReportBuilder(me.rb_area,dt,my_onload);}}}
-_r.ReportBuilder=function(parent,doctype,onload){this.menuitems={};this.has_primary_filters=false;this.doctype=doctype;this.forbidden=0;this.filter_fields=[];this.filter_fields_dict={};var me=this;this.fn_list=['beforetableprint','beforerowprint','afterrowprint','aftertableprint','customize_filters','get_query'];this.wrapper=$a(parent,'div','finder_wrapper');this.make_tabs();this.current_loaded=null;this.setup_doctype(onload);this.hide=function(){$dh(me.wrapper);}
-this.show=function(my_onload){$ds(me.wrapper);this.set_main_title('Report: '+get_doctype_label(me.doctype));if(my_onload)my_onload(me);}}
-_r.ReportBuilder.prototype.make_tabs=function(){this.tab_wrapper=$a(this.wrapper,'div','finder_tab_area');this.mytabs=new TabbedPage(this.tab_wrapper);this.mytabs.add_item('Result',null,null,1);this.mytabs.add_item('More Filters',null,null,1);this.mytabs.add_item('Select Columns',null,null,1);this.mytabs.tabs=this.mytabs.items;}
-_r.ReportBuilder.prototype.make_body=function(){this.set_main_title('Report: '+get_doctype_label(this.doctype));var me=this;this.make_save_criteria();this.column_picker=new _r.ReportColumnPicker(this);this.report_filters=new _r.ReportFilters(this);}
-_r.ReportBuilder.prototype.make_save_criteria=function(){var me=this;this.sc_list=[];this.sc_dict={};for(var n in locals['Search Criteria']){var d=locals['Search Criteria'][n];if(d.doc_type==this.doctype){this.sc_list[this.sc_list.length]=d.criteria_name;this.sc_dict[d.criteria_name]=n;}}}
-_r.ReportBuilder.prototype.save_criteria=function(save_as){var overwrite=0;if(this.current_loaded&&(!save_as)){var overwrite=confirm('Do you want to overwrite the saved criteria "'+this.current_loaded+'"');if(overwrite){var doc=locals['Search Criteria'][this.sc_dict[this.current_loaded]];var criteria_name=this.current_loaded;}}
-if(!overwrite){var criteria_name=prompt('Select a name for the criteria:','');if(!criteria_name)
-return;var dn=createLocal('Search Criteria');var doc=locals['Search Criteria'][dn];doc.criteria_name=criteria_name;doc.doc_type=this.doctype;}
-var cl=[];var fl={};var t=this.column_picker.get_selected();for(var i=0;i<t.length;i++)
-cl.push(t[i].parent+'\1'+t[i].label);for(var i=0;i<this.filter_fields.length;i++){var t=this.filter_fields[i];var v=t.get_value?t.get_value():'';if(v)fl[t.df.parent+'\1'+t.df.label+(t.bound?('\1'+t.bound):'')]=v;}
-doc.columns=cl.join(',');doc.filters=JSON.stringify(fl);doc.sort_by=sel_val(this.dt.sort_sel);doc.sort_order=this.dt.sort_order;doc.page_len=this.dt.page_len;if(this.parent_dt)
-doc.parent_doc_type=this.parent_dt
-var me=this;var fn=function(r){me.sc_dict[criteria_name]=r.main_doc_name;me.set_criteria_sel(criteria_name);}
-save_doclist(doc.doctype,doc.name,'Save',fn);}
-_r.ReportBuilder.prototype.hide_all_filters=function(){for(var i=0;i<this.filter_fields.length;i++){this.filter_fields[i].df.filter_hide=1;}}
-_r.ReportBuilder.prototype.run=function(){this.dt.run();}
-_r.ReportBuilder.prototype.clear_criteria=function(){this.column_picker.clear();this.column_picker.set_defaults();for(var i=0;i<this.filter_fields.length;i++){this.filter_fields[i].df.filter_hide=0;this.filter_fields[i].df.ignore=0;if(this.filter_fields[i].is_custom){this.filter_fields[i].df.filter_hide=1;this.filter_fields[i].df.ignore=1;}
-this.filter_fields[i].set_input(null);}
-this.set_sort_options();this.set_main_title('Report: '+get_doctype_label(this.doctype));this.current_loaded=null;this.customized_filters=null;this.sc=null;this.has_index=1;this.has_headings=1;for(var i in this.fn_list)this[this.fn_list[i]]=null;}
-_r.ReportBuilder.prototype.set_main_title=function(title){_r.rb_con.appframe.$titlebar.find('.report-title').html(title);set_title(title);}
-_r.ReportBuilder.prototype.select_column=function(dt,label,value){if(value==null)value=1;this.column_picker.set(dt,label,value);}
-_r.ReportBuilder.prototype.set_filter=function(dt,label,value){if(this.filter_fields_dict[dt+'\1'+label])
-this.filter_fields_dict[dt+'\1'+label].set_input(value);}
-_r.ReportBuilder.prototype.load_criteria=function(criteria_name){this.clear_criteria();if(!this.sc_dict[criteria_name]){alert(criteria_name+' could not be loaded. Please Refresh and try again');}
-this.sc=locals['Search Criteria'][this.sc_dict[criteria_name]];var report=this;if(this.sc&&this.sc.report_script)eval(this.sc.report_script);this.large_report=0;if(report.customize_filters){try{report.customize_filters(this);}catch(err){console.log('Error in "customize_filters":\n'+err);}}
-this.report_filters.refresh();this.column_picker.clear();var cl=this.sc.columns?this.sc.columns.split(','):[];for(var c=0;c<cl.length;c++){var key=cl[c].split('\1');this.select_column(key[0],key[1],1);}
-eval('var fl='+this.sc.filters);for(var n in fl){if(fl[n]){var key=n.split('\1');if(key[1]=='docstatus'){}
-this.set_filter(key[0],key[1],fl[n]);}}
-this.set_criteria_sel(criteria_name);this.set_filters_from_route();}
-_r.ReportBuilder.prototype.set_criteria_sel=function(criteria_name){var sc=locals['Search Criteria'][this.sc_dict[criteria_name]];if(sc&&sc.add_col)
-var acl=sc.add_col.split('\n');else
-var acl=[];var new_sl=[];for(var i=0;i<acl.length;i++){var tmp=acl[i].split(' AS ');if(tmp[1]){var t=eval(tmp[1]);new_sl[new_sl.length]=[t,"`"+t+"`"];}}
-this.set_sort_options(new_sl);if(sc&&sc.sort_by){this.dt.sort_sel.value=sc.sort_by;}
-if(sc&&sc.sort_order){sc.sort_order=='ASC'?this.dt.set_asc():this.dt.set_desc();}
-if(sc&&sc.page_len){this.dt.page_len_sel.inp.value=sc.page_len;}
-this.current_loaded=criteria_name;this.set_main_title(criteria_name);}
-_r.ReportBuilder.prototype.setup_filters_and_cols=function(){function can_dt_be_submitted(dt){return locals.DocType[dt]&&locals.DocType[dt].is_submittable||0;}
-var me=this;var dt=me.parent_dt?me.parent_dt:me.doctype;var fl=[{'fieldtype':'Data','label':'ID','fieldname':'name','in_filter':1,'parent':dt},{'fieldtype':'Data','label':'Owner','fieldname':'owner','in_filter':1,'parent':dt},{'fieldtype':'Date','label':'Created on','fieldname':'creation','in_filter':0,'parent':dt},{'fieldtype':'Date','label':'Last modified on','fieldname':'modified','in_filter':0,'parent':dt},];if(can_dt_be_submitted(dt)){fl[fl.length]={'fieldtype':'Check','label':'Saved','fieldname':'docstatus','search_index':1,'in_filter':1,'def_filter':1,'parent':dt};fl[fl.length]={'fieldtype':'Check','label':'Submitted','fieldname':'docstatus','search_index':1,'in_filter':1,'def_filter':1,'parent':dt};fl[fl.length]={'fieldtype':'Check','label':'Cancelled','fieldname':'docstatus','search_index':1,'in_filter':1,'parent':dt};}
-me.make_datatable();me.orig_sort_list=[];if(me.parent_dt){me.setup_dt_filters_and_cols(fl,me.parent_dt);var fl=[];}
-me.setup_dt_filters_and_cols(fl,me.doctype);if(!this.has_primary_filters)
-$dh(this.report_filters.first_page_filter);this.column_picker.refresh();$ds(me.body);}
-_r.ReportBuilder.prototype.set_filters_from_route=function(){var route=wn.get_route();this.current_route=wn.get_route_str();if(route.length>3){for(var i=3;i<route.length;i++){var p=route[i].split('=');if(p.length==2){var dt=this.parent_dt?this.parent_dt:this.doctype;this.set_filter(dt,p[0],p[1]);}}}}
-_r.ReportBuilder.prototype.add_filter=function(f){if(this.filter_fields_dict[f.parent+'\1'+f.label]){this.filter_fields_dict[f.parent+'\1'+f.label].df=f;}else{this.report_filters.add_field(f,f.parent,null,1);}}
-_r.ReportBuilder.prototype.setup_dt_filters_and_cols=function(fl,dt){var me=this;var lab=$a(me.filter_area,'div','filter_dt_head');lab.innerHTML='Filters for '+get_doctype_label(dt);var lab=$a(me.picker_area,'div','builder_dt_head');lab.innerHTML='Select columns for '+get_doctype_label(dt);var dt_fields=wn.meta.docfield_list[dt];for(var i=0;i<dt_fields.length;i++){fl[fl.length]=dt_fields[i];}
-var sf_list=locals.DocType[dt].search_fields?locals.DocType[dt].search_fields.split(','):[];for(var i in sf_list)sf_list[i]=strip(sf_list[i]);for(var i=0;i<fl.length;i++){var f=fl[i];if(f&&cint(f.in_filter)){me.report_filters.add_field(f,dt,in_list(sf_list,f.fieldname));}
-if(f&&!in_list(no_value_fields,f.fieldtype)&&f.fieldname!='docstatus'&&(!f.report_hide)){me.column_picker.add_field(f);}}
-me.set_sort_options();}
-_r.ReportBuilder.prototype.set_sort_options=function(l){var sl=this.orig_sort_list;empty_select(this.dt.sort_sel);if(l)sl=add_lists(l,this.orig_sort_list);if(!l)l=[];if(!l.length){l.push(['ID','name'])}
-for(var i=0;i<sl.length;i++){this.dt.add_sort_option(sl[i][0],sl[i][1]);}}
-_r.ReportBuilder.prototype.validate_permissions=function(onload){this.perm=get_perm(this.parent_dt?this.parent_dt:this.doctype);if(!this.perm[0][READ]){this.forbidden=1;if(user=='Guest'){msgprint('You must log in to view this page');}else{msgprint('No Read Permission');}
-window.back();return 0;}
-return 1;}
-_r.ReportBuilder.prototype.setup_doctype=function(onload){var me=this;if(!locals['DocType'][this.doctype]){this.load_doctype_from_server(onload);}else{for(var key in locals.DocField){var f=locals.DocField[key];if(f.fieldtype=='Table'&&f.options==this.doctype)
-this.parent_dt=f.parent;}
-if(!me.validate_permissions())
-return;me.validate_permissions();me.make_body();me.setup_filters_and_cols();if(onload)onload(me);}}
-_r.ReportBuilder.prototype.load_doctype_from_server=function(onload){var me=this;$c('webnotes.widgets.form.load.getdoctype',args={'doctype':this.doctype,'with_parent':1},function(r,rt){if(r.parent_dt)me.parent_dt=r.parent_dt;if(!me.validate_permissions())
-return;me.make_body();me.setup_filters_and_cols();if(onload)onload(me);});}
-_r.ReportBuilder.prototype.reset_report=function(){this.clear_criteria();this.mytabs.items['Select Columns'].show();this.mytabs.items['More Filters'].show();this.report_filters.refresh();this.column_picker.refresh();var dt=this.parent_dt?this.parent_dt:this.doctype;this.set_filter(dt,'Saved',1);this.set_filter(dt,'Submitted',1);this.set_filter(dt,'Cancelled',0);this.column_picker.set_defaults();this.dt.clear_all();this.dt.sort_sel.value='ID';this.dt.page_len_sel.inp.value='50';this.dt.set_no_limit(0);this.dt.set_desc();this.set_filters_from_route();}
-_r.ReportBuilder.prototype.make_datatable=function(){var me=this;this.dt_area=$a(this.mytabs.items['Result'].body,'div');var clear_area=$a(this.mytabs.items['Result'].body,'div');clear_area.style.marginTop='8px';clear_area.style.textAlign='right';this.clear_btn=$a($a(clear_area,'span'),'button');this.clear_btn.innerHTML='Clear Settings';this.clear_btn.onclick=function(){me.reset_report();}
-var d=$a(clear_area,'span','',{marginLeft:'16px'});d.innerHTML='<span>Show Query: </span>';this.show_query=$a_input(d,'checkbox');this.show_query.checked=false;this.dt=new _r.DataTable(this.dt_area,'');this.dt.finder=this;this.dt.make_query=function(){var report=me;if(me.current_loaded&&me.sc_dict[me.current_loaded]){var sc=get_local('Search Criteria',me.sc_dict[me.current_loaded]);}
-if(sc)me.dt.search_criteria=sc;else me.dt.search_criteria=null;if(sc&&sc.server_script)me.dt.server_script=sc.server_script;else me.dt.server_script=null;for(var i=0;i<me.fn_list.length;i++){if(me[me.fn_list[i]])me.dt[me.fn_list[i]]=me[me.fn_list[i]];else me.dt[me.fn_list[i]]=null;}
-var fl=[];var docstatus_cl=[];var cl=[];var table_name=function(t){return'`tab'+t+'`';}
-var dis_filters_list=[];if(sc&&sc.dis_filters)
-var dis_filters_list=sc.dis_filters.split('\n');var t=me.column_picker.get_selected();for(var i=0;i<t.length;i++){fl.push(table_name(t[i].parent)+'.`'+t[i].fieldname+'` AS `'+t[i].parent+'.'+t[i].fieldname+'`');}
-me.selected_fields=fl;if(sc&&sc.add_col){var adv_fl=sc.add_col.split('\n');for(var i=0;i<adv_fl.length;i++){fl[fl.length]=adv_fl[i];}}
-me.dt.filter_vals={}
-add_to_filter=function(k,v,is_select){if(v==null)v='';if(!in_list(keys(me.dt.filter_vals),k)){me.dt.filter_vals[k]=v;}else{if(is_select)
-me.dt.filter_vals[k]+='\n'+v;else
-me.dt.filter_vals[k+'1']=v;}}
-for(var i=0;i<me.filter_fields.length;i++){var t=me.filter_fields[i];var v=t.get_value?t.get_value():'';if(t.df.fieldtype=='Select'){if(t.input.multiple){for(var sel_i=0;sel_i<v.length;sel_i++){add_to_filter(t.df.fieldname,v[sel_i],1);}
-if(!v.length)add_to_filter(t.df.fieldname,"",1);}else{add_to_filter(t.df.fieldname,v);}}else add_to_filter(t.df.fieldname,v);if(!in_list(dis_filters_list,t.df.fieldname)&&!t.df.ignore){if(t.df.fieldname=='docstatus'){if(t.df.label=='Saved'){if(t.get_value())docstatus_cl[docstatus_cl.length]=table_name(t.df.parent)+'.docstatus=0';else cl[cl.length]=table_name(t.df.parent)+'.docstatus!=0';}
-else if(t.df.label=='Submitted'){if(t.get_value())docstatus_cl[docstatus_cl.length]=table_name(t.df.parent)+'.docstatus=1';else cl[cl.length]=table_name(t.df.parent)+'.docstatus!=1';}
-else if(t.df.label=='Cancelled'){if(t.get_value())docstatus_cl[docstatus_cl.length]=table_name(t.df.parent)+'.docstatus=2';else cl[cl.length]=table_name(t.df.parent)+'.docstatus!=2';}}else{var fn='`'+t.df.fieldname+'`';var v=t.get_value?t.get_value():'';if(v){if(in_list(['Data','Link','Small Text','Text'],t.df.fieldtype)){cl[cl.length]=table_name(t.df.parent)+'.'+fn+' LIKE "'+v+'%"';}else if(t.df.fieldtype=='Select'){if(t.input.multiple){var tmp_cl=[];for(var sel_i=0;sel_i<v.length;sel_i++){if(v[sel_i]){tmp_cl[tmp_cl.length]=table_name(t.df.parent)+'.'+fn+' = "'+v[sel_i]+'"';}}
-if(tmp_cl.length)cl[cl.length]='('+tmp_cl.join(' OR ')+')';}else{cl[cl.length]=table_name(t.df.parent)+'.'+fn+' = "'+v+'"';}}else{var condition='=';if(t.sql_condition)condition=t.sql_condition;cl[cl.length]=table_name(t.df.parent)+'.'+fn+condition+'"'+v+'"';}}}}}
-me.dt.filter_vals.user=user;me.dt.filter_vals.user_email=user_email;me.filter_vals=me.dt.filter_vals;this.is_simple=0;if(sc&&sc.custom_query){this.query=repl(sc.custom_query,me.dt.filter_vals);this.is_simple=1;return}
-if(me.get_query){this.query=me.get_query();this.is_simple=1;}else{if(docstatus_cl.length)
-cl[cl.length]='('+docstatus_cl.join(' OR ')+')';if(sc&&sc.add_cond){var adv_cl=sc.add_cond.split('\n');for(var i=0;i<adv_cl.length;i++){cl[cl.length]=adv_cl[i];}}
-if(!fl.length){alert('You must select atleast one column to view');this.query='';return;}
-var tn=table_name(me.doctype);if(me.parent_dt){tn=tn+','+table_name(me.parent_dt);cl[cl.length]=table_name(me.doctype)+'.`parent` = '+table_name(me.parent_dt)+'.`name`';}
-if(sc&&sc.add_tab){var adv_tl=sc.add_tab.split('\n');tn=tn+','+adv_tl.join(',');}
-if(!cl.length)
-this.query='SELECT '+fl.join(',\n')+' FROM '+tn
-else
-this.query='SELECT '+fl.join(',')+' FROM '+tn+' WHERE '+cl.join('\n AND ');if(sc&&sc.group_by){this.query+=' GROUP BY '+sc.group_by;}
-this.query=repl(this.query,me.dt.filter_vals)}
-if(me.show_query.checked){this.show_query=1;}
-if(me.current_loaded)this.rep_name=me.current_loaded;else this.rep_name=me.doctype;}}
-_r.ReportBuilder.prototype.get_filter=function(dt,label){return this.filter_fields_dict[dt+FILTER_SEP+label];}
-_r.ReportBuilder.prototype.set_filter_properties=function(dt,label,properties){var f=this.filter_fields_dict[dt+FILTER_SEP+label];for(key in properties){f.df[key]=properties[key];}}
-_r.ReportFilters=function(rb){this.rb=rb;this.first_page_filter=$a(rb.mytabs.items['Result'].body,'div','finder_filter_area');this.filter_area=$a(rb.mytabs.items['More Filters'].body,'div','finder_filter_area');this.filter_fields_area=$a(this.filter_area,'div');}
-_r.ReportFilters.prototype.refresh=function(){var fl=this.rb.filter_fields
-for(var i=0;i<fl.length;i++){var f=fl[i];if(f.df.filter_hide){$dh(f.wrapper);}else{$ds(f.wrapper);}
-if(f.df.bold){if(f.label_cell)
-$y(f.label_cell,{fontWeight:'bold'})}else{if(f.label_cell)$y(f.label_cell,{fontWeight:'normal'})}
-if(f.df['report_default'])
-f.set_input(f.df['report_default']);if(f.df.in_first_page&&f.df.filter_cell){f.df.filter_cell.parentNode.removeChild(f.df.filter_cell);this.first_page_filter.appendChild(f.df.filter_cell);this.rb.has_primary_filters=1;$ds(this.first_page_filter);}}}
-_r.ReportFilters.prototype.add_date_field=function(cell,f,dt,is_custom){var my_div=$a(cell,'div','',{});var f1=copy_dict(f);f1.label='From '+f1.label;var tmp1=this.make_field_obj(f1,dt,my_div,is_custom);tmp1.sql_condition='>=';tmp1.bound='lower';var f2=copy_dict(f);f2.label='To '+f2.label;var tmp2=this.make_field_obj(f2,dt,my_div,is_custom);tmp2.sql_condition='<=';tmp2.bound='upper';}
-_r.ReportFilters.prototype.add_numeric_field=function(cell,f,dt,is_custom){var my_div=$a(cell,'div','',{});var f1=copy_dict(f);f1.label=f1.label+' >=';var tmp1=this.make_field_obj(f1,dt,my_div,is_custom);tmp1.sql_condition='>=';tmp1.bound='lower';var f2=copy_dict(f);f2.label=f2.label+' <=';var tmp2=this.make_field_obj(f2,dt,my_div,is_custom);tmp2.sql_condition='<=';tmp2.bound='upper';}
-_r.ReportFilters.prototype.make_field_obj=function(f,dt,parent,is_custom){var tmp=make_field(f,dt,parent,this.rb,false);tmp.not_in_form=1;tmp.in_filter=1;tmp.refresh();this.rb.filter_fields[this.rb.filter_fields.length]=tmp;this.rb.filter_fields_dict[f.parent+'\1'+f.label]=tmp;if(is_custom)tmp.is_custom=1;return tmp;}
-_r.ReportFilters.prototype.add_field=function(f,dt,in_primary,is_custom){var me=this;if(f.in_first_page)in_primary=true;var fparent=this.filter_fields_area;if(in_primary){fparent=this.first_page_filter;this.rb.has_primary_filters=1;}
-if(f.on_top){var cell=document.createElement('div');fparent.insertBefore(cell,fparent.firstChild);$y(cell,{width:'70%'});}else if(f.insert_before){var cell=document.createElement('div');fparent.insertBefore(cell,fparent[f.df.insert_before].filter_cell);$y(cell,{width:'70%'});}
-else
-var cell=$a(fparent,'div','',{width:'70%'});f.filter_cell=cell;if(f.fieldtype=='Date'){this.add_date_field(cell,f,dt);}else if(in_list(['Currency','Int','Float'],f.fieldtype)){this.add_numeric_field(cell,f,dt);}else if(!in_list(['Section Break','Column Break','Read Only','HTML','Table','Image','Button'],f.fieldtype)){var tmp=this.make_field_obj(f,dt,cell,is_custom);}
-if(f.fieldname!='docstatus')
-me.rb.orig_sort_list.push([f.label,'`tab'+f.parent+'`.`'+f.fieldname+'`']);if(f.def_filter)
-tmp.input.checked=true;}
-_r.ReportColumnPicker=function(rb){this.rb=rb;this.picker_area=$a(this.rb.mytabs.items['Select Columns'].body,'div','finder_picker_area');this.all_fields=[];this.sel_idx=0;this.make_body();}
-_r.ReportColumnPicker.prototype.make_body=function(){var t=make_table(this.picker_area,1,3,'100%',['35%','30%','35%'],{verticalAlign:'middle',textAlign:'center'});$a($td(t,0,0),'h3','',{marginBottom:'8px'}).innerHTML='Columns';this.unsel_fields=$a($td(t,0,0),'select','',{height:'200px',width:'100%',border:'1px solid #AAA'});this.unsel_fields.multiple=true;this.unsel_fields.onchange=function(){for(var i=0;i<this.options.length;i++)this.options[i].field.is_selected=this.options[i].selected;}
-var me=this;this.up_btn=$a($a($td(t,0,1),'div'),'button','',{width:'70px'});this.up_btn.innerHTML='Up &uarr;';this.up_btn.onclick=function(){me.move_up();}
-this.add_all=$a($a($td(t,0,1),'div'),'button','',{width:'40px'});this.add_all.innerHTML='&gt;&gt;';this.add_all.onclick=function(){me.move(me.unsel_fields,'add',1);}
-this.add_btn=$a($a($td(t,0,1),'div'),'button','',{width:'110px'});this.add_btn.innerHTML='<b>Add &gt;</b>';this.add_btn.onclick=function(){me.move(me.unsel_fields,'add');}
-this.remove_btn=$a($a($td(t,0,1),'div'),'button','',{width:'110px'});this.remove_btn.innerHTML='<b>&lt; Remove</b>';this.remove_btn.onclick=function(){me.move(me.sel_fields,'remove');}
-this.remove_all=$a($a($td(t,0,1),'div'),'button','',{width:'40px'});this.remove_all.innerHTML='&lt;&lt;';this.remove_all.onclick=function(){me.move(me.sel_fields,'remove',1);}
-this.dn_btn=$a($a($td(t,0,1),'div'),'button','',{width:'70px'});this.dn_btn.innerHTML='Down &darr;';this.dn_btn.onclick=function(){me.move_down();}
-$a($td(t,0,2),'h3','',{marginBottom:'8px'}).innerHTML='Selected Columns';this.sel_fields=$a($td(t,0,2),'select','',{height:'200px',width:'100%',border:'1px solid #AAA'});this.sel_fields.multiple=true;this.sel_fields.onchange=function(){for(var i=0;i<this.options.length;i++)this.options[i].field.is_selected=this.options[i].selected;}}
-_r.ReportColumnPicker.prototype.get_by_sel_idx=function(s,idx){for(var j=0;j<s.options.length;j++){if(s.options[j].field.sel_idx==idx)
-return s.options[j].field;}
-return{}}
-_r.ReportColumnPicker.prototype.move_up=function(){var s=this.sel_fields;for(var i=1;i<s.options.length;i++){if(s.options[i].selected){s.options[i].field.sel_idx--;this.get_by_sel_idx(s,i-1).sel_idx++;}}
-this.refresh();}
-_r.ReportColumnPicker.prototype.move_down=function(){var s=this.sel_fields;if(s.options.length<=1)return;for(var i=s.options.length-2;i>=0;i--){if(s.options[i].selected){this.get_by_sel_idx(s,i+1).sel_idx--;s.options[i].field.sel_idx++;}}
-this.refresh();}
-_r.ReportColumnPicker.prototype.move=function(s,type,all){for(var i=0;i<s.options.length;i++){if(s.options[i].selected||all){if(type=='add'){s.options[i].field.selected=1;s.options[i].field.sel_idx=this.sel_idx;this.sel_idx++;}else{s.options[i].field.selected=0;s.options[i].field.sel_idx=0;this.sel_idx--;}}}
-this.refresh();}
-_r.ReportColumnPicker.prototype.refresh=function(){var ul=[];var sl=[];for(var i=0;i<this.all_fields.length;i++){var o=this.all_fields[i];if(o.selected){sl.push(o);if(this.rb.dt)this.rb.dt.set_sort_option_disabled(o.df.label,0);}else{ul.push(o);if(this.rb.dt)this.rb.dt.set_sort_option_disabled(o.df.label,1);}}
-ul.sort(function(a,b){return(cint(a.df.idx)-cint(b.df.idx))});sl.sort(function(a,b){return(cint(a.sel_idx)-cint(b.sel_idx))})
-for(var i=0;i<sl.length;i++){sl[i].sel_idx=i;}
-this.set_options(this.unsel_fields,ul);this.set_options(this.sel_fields,sl);}
-_r.ReportColumnPicker.prototype.set_options=function(s,l){empty_select(s);for(var i=0;i<l.length;i++){var v=l[i].df.parent+'.'+l[i].df.label;var v_label=get_doctype_label(l[i].df.parent)+'.'+l[i].df.label;var o=new Option(v_label,v,false,false);o.field=l[i];if(o.field.is_selected)o.selected=1;s.options[s.options.length]=o;}}
-_r.ReportColumnPicker.prototype.clear=function(){this.sel_idx=0;for(var i=0;i<this.all_fields.length;i++){this.all_fields[i].selected=0;}
-this.refresh();}
-_r.ReportColumnPicker.prototype.get_selected=function(){var sl=[];for(var i=0;i<this.all_fields.length;i++){var o=this.all_fields[i];if(o.selected){sl[sl.length]=o.df;o.df.sel_idx=o.sel_idx;}}
-return sl.sort(function(a,b){return(cint(a.sel_idx)-cint(b.sel_idx))});}
-_r.ReportColumnPicker.prototype.set_defaults=function(){for(var i=0;i<this.all_fields.length;i++){if(this.all_fields[i].selected_by_default)
-this.all_fields[i].selected=1;}}
-_r.ReportColumnPicker.prototype.add_field=function(f){if(!f.label)return;var by_default=(f.in_filter)?1:0;this.all_fields.push({selected:by_default,df:f,sel_idx:(by_default?this.sel_idx:0),selected_by_default:by_default});this.sel_idx+=by_default;}
-_r.ReportColumnPicker.prototype.set=function(dt,label,selected){for(var i=0;i<this.all_fields.length;i++){if(this.all_fields[i].df.parent==dt&&this.all_fields[i].df.label==label){this.all_fields[i].selected=selected;this.all_fields[i].sel_idx=this.sel_idx;this.sel_idx+=cint(selected);this.refresh();return;}}}
-/*
- *	lib/js/legacy/widgets/report_builder/datatable.js
- */
-_r.scroll_head=function(ele){var h=ele.childNodes[0];h.style.top=cint(ele.scrollTop)+'px';}
-_r.DataTable=function(html_fieldname,dt,repname,hide_toolbar){var me=this;if(html_fieldname.substr){var html_field=cur_frm.fields_dict[html_fieldname];html_field.onrefresh=function(){if(me.docname!=cur_frm.docname){me.clear_all();me.docname=cur_frm.docname;}}
-var parent=html_field.wrapper;datatables[html_fieldname]=this;}else{var parent=html_fieldname;}
-this.start_rec=1;this.page_len=50;this.repname=repname;this.dt=dt;this.no_limit=false;this.query='';this.has_index=1;this.has_headings=1;this.disabled_options={};this.levels=[];if(this.dt){var tw=$a(parent,'div');var t=$a(tw,'div','link_type');t.style.cssFloat='right';$h(tw,'14px');t.style.margin='2px 0px';t.style.fontSize='11px';t.onclick=function(){new_doc(me.dt);}
-t.innerHTML='New '+this.dt;}
-if(!hide_toolbar)this.make_toolbar(parent);this.wrapper=$a(parent,'div','report_tab');$h(this.wrapper,cint(screen.height*0.35)+'px');this.wrapper.onscroll=function(){_r.scroll_head(this);}
-this.hwrapper=$a(this.wrapper,'div','report_head_wrapper');this.twrapper=$a(this.wrapper,'div','report_tab_wrapper');this.no_data_tag=$a(this.wrapper,'div','report_no_data');this.no_data_tag.innerHTML='No Records Found';this.fetching_tag=$a(this.wrapper,'div','',{height:'100%',background:'url("images/lib/ui/square_loading.gif") center no-repeat',display:'none'});}
-_r.DataTable.prototype.add_icon=function(parent,imgsrc){var i=$a(parent,'img');i.style.padding='2px';i.style.cursor='pointer';i.setAttribute('src','images/lib/icons/'+imgsrc+'.gif');return i;}
-_r.DataTable.prototype.set_no_limit=function(v){if(v){this.no_limit=1;$dh(this.page_len_sel.wrapper);}else{this.no_limit=0;$ds(this.page_len_sel.wrapper);}}
-_r.DataTable.prototype.make_toolbar=function(parent){var me=this;this.hbar=$a(parent,'div','',{margin:'8px 0px 16px 0px'});var ht=make_table(this.hbar,1,3,'100%',['40%','40%','20%'],{verticalAlign:'middle'});var div=$a($td(ht,0,0),'div');var t=make_table($td(ht,0,1),1,6,null,[null,null,null,'20px',null,null],{verticalAlign:'middle'});$td(t,0,0).innerHTML='Sort By:';$y($td(t,0,1),{textAlign:'right',paddingRight:'4px'});this.sort_sel=$a($td(t,0,2),'select','',{width:'100px'});this.sort_sel.onchange=function(){me.start_rec=1;me.run();}
-this.sort_icon=this.add_icon($td(t,0,3),'arrow_down');this.sort_order='DESC';this.sort_icon.onclick=function(){if(me.sort_order=='ASC')me.set_desc();else me.set_asc();me.start_rec=1;me.run();}
-$td(t,0,4).innerHTML='Per Page:';$y($td(t,0,4),{textAlign:'right',paddingRight:'4px'});var s=new SelectWidget($td(t,0,5),['50','100','500','1000'],'70px');s.inp.value='50';s.inp.onchange=function(){me.page_len=flt(this.value);}
-this.page_len_sel=s;var c1=$td(ht,0,2);c1.style.textAlign='right';var ic=this.add_icon(c1,'resultset_first');ic.onclick=function(){me.start_rec=1;me.run();}
-var ic=this.add_icon(c1,'resultset_previous');ic.onclick=function(){if(me.start_rec-me.page_len<=0)return;me.start_rec=me.start_rec-me.page_len;me.run();}
-this.has_next=false;var ic=this.add_icon(c1,'resultset_next');ic.onclick=function(){if(!me.has_next)return;me.start_rec=me.start_rec+me.page_len;me.run();}}
-_r.DataTable.prototype.set_desc=function(){this.sort_icon.src='images/lib/icons/arrow_down.gif';this.sort_order='DESC';}
-_r.DataTable.prototype.set_asc=function(icon){this.sort_icon.src='images/lib/icons/arrow_up.gif';this.sort_order='ASC';}
-_r.DataTable.prototype.set_sort_option_disabled=function(label,disabled){var s=this.sort_sel;if(disabled){for(var i=0;i<s.options.length;i++){if(s.options[i]&&s.options[i].text==label){this.disabled_options[label]=s.options[i];s.remove(i);}}}else{if(this.disabled_options[label]){try{s.add(this.disabled_options[label],s.options[s.options.length-1]);}catch(e){try{s.add(this.disabled_options[label],s.options.length-1);}catch(e){}}
-this.disabled_options[label]=null;}}}
-_r.DataTable.prototype.add_sort_option=function(label,val){var s=this.sort_sel;s.options[s.options.length]=new Option(label,val,false,s.options.length==0?true:false);}
-_r.DataTable.prototype.update_query=function(no_limit){if((_r.rb_con.cur_rb&&_r.rb_con.cur_rb.get_query)||(this.search_criteria&&this.search_criteria.custom_query)){}else{var me=this;var sort_by=null,sort_order="";if(sel_val(this.sort_sel)){sort_by=sel_val(this.sort_sel);sort_order=this.sort_order;}else if(_r.rb_con.cur_rb.sc.sort_by){sort_by=(_r.rb_con.cur_rb.sc.sort_by||"").split(",");sort_by=$.map(sort_by,function(v){return v.trim()+" "+(me.sort_order||"");}).join(", ");sort_order="";}else{this.sort_sel.selectedIndex=0;sort_by=sel_val(this.sort_sel);sort_order=this.sort_order;}
-this.query+=NEWLINE
-+' ORDER BY '+sort_by
-+' '+sort_order;}
-if(no_limit||this.no_limit){if(this.show_query)alert(this.query);return;}
-this.query+=' LIMIT '+(this.start_rec-1)+','+this.page_len;if(this.show_query)
-alert(this.query);}
-_r.DataTable.prototype._get_query=function(no_limit){$dh(this.no_data_tag);this.show_query=0;if(this.make_query)
-this.make_query();this.update_query(no_limit);}
-_r.DataTable.prototype.run=function(){if(this.validate&&!this.validate())
-return;if(_r.rb_con.cur_rb){if(_r.rb_con.cur_rb.large_report==1){msgprint("This is a very large report and cannot be shown in the browser as it is likely to make your browser very slow.<br><br>Please click on 'Export' to open in a spreadsheet");return;}
-_r.rb_con.cur_rb.mytabs.items['Result'].expand();}
-var me=this;this._get_query();if(this.set_data){this.show_result(this.set_data);this.set_data=null;return;}
-$ds(this.fetching_tag);if($.browser.mozilla)this.clear_all();var args={'query':me.query,'report_name':'_r.DataTable','show_deleted':1,'sc_id':me.search_criteria?me.search_criteria.name:'','filter_values':me.filter_vals?docstring(me.filter_vals):'','roles':'["'+user_roles.join('","')+'"]'}
-if(this.is_simple)args.is_simple=1;$c('webnotes.widgets.query_builder.runquery',args,function(r,rt){$dh(me.fetching_tag);me.show_result(r,rt);});}
-_r.DataTable.prototype.clear_all=function(){if(this.htab&&this.htab.parentNode){this.htab.parentNode.removeChild(this.htab);delete this.htab;}
-if(this.tab&&this.tab.parentNode){this.tab.parentNode.removeChild(this.tab);delete this.tab;}
-$dh(this.no_data_tag);}
-_r.DataTable.prototype.has_data=function(){if(this.htab&&this.htab.rows.length)return 1;else return 0;}
-_r.DataTable.prototype.show_result=function(r,rt){var me=this;this.clear_all();this.rset=eval(r.values);if(this.rset&&this.rset.length){if(this.has_headings){this.htab=$a(this.hwrapper,'table');$y(this.twrapper,{top:'25px',borderTop:'0px'});}
-this.tab=$a(this.twrapper,'table');this.colwidths=eval(r.colwidths);this.coltypes=eval(r.coltypes);this.coloptions=eval(r.coloptions);this.colnames=eval(r.colnames);$y(this.tab,{tableLayout:'fixed'});if(this.beforetableprint)this.beforetableprint(this);if(this.has_headings)this.make_head_tab(this.colnames);var start=this.start_rec;var rset_len=this.rset.length;if(rset_len>1000){msgprint("Showing only 1000 records out of "+rset_len+". Use 'Export' to see all records");rset_len=1000;}
-for(var vi=0;vi<rset_len;vi++){var row=this.tab.insertRow(vi);if(this.has_index){var c0=row.insertCell(0);$w(c0,'30px');$a(c0,'div','',{width:'23px'}).innerHTML=start;}
-start++;for(var ci=0;ci<this.rset[vi].length;ci++){this.make_data_cell(vi,ci,this.rset[vi][ci]);}
-if(this.afterrowprint){row.data_cells={};row.data={};for(var ci=0;ci<this.colnames.length;ci++){row.data[this.colnames[ci]]=this.rset[vi][ci];row.data_cells[this.colnames[ci]]=row.cells[ci+1];}f
-this.afterrowprint(row);}}
-if(this.rset.length&&this.rset.length>=this.page_len)this.has_next=true;if(r.style){for(var i=0;i<r.style.length;i++){$yt(this.tab,r.style[i][0],r.style[i][1],r.style[i][2]);}}
-if(this.aftertableprint)this.aftertableprint(this.tab);}else{$ds(this.no_data_tag);}}
-_r.DataTable.prototype.get_col_width=function(i){if(this.colwidths&&this.colwidths.length&&this.colwidths[i])
-return cint(this.colwidths[i])+'px';else return'100px';}
-_r.DataTable.prototype.make_head_tab=function(colnames){var r0=this.htab.insertRow(0);if(this.has_index){var c0=r0.insertCell(0);c0.className='report_head_cell';$w(c0,'30px');$a(c0,'div').innerHTML='Sr';this.total_width=30;}
-for(var i=0;i<colnames.length;i++){var w=this.get_col_width(i);this.total_width+=cint(w);var c=r0.insertCell(r0.cells.length);c.className='report_head_cell';if(w)$w(c,w);$a(c,'div').innerHTML=colnames[i];c.val=colnames[i];}
-$w(this.htab,this.total_width+'px');$w(this.tab,this.total_width+'px');}
-_r.DataTable.prototype.make_data_cell=function(ri,ci,val){var row=this.tab.rows[ri];var c=row.insertCell(row.cells.length);if(row.style.color)
-c.style.color=row.style.color;if(row.style.backgroundColor)
-c.style.backgroundColor=row.style.backgroundColor;if(row.style.fontWeight)
-c.style.fontWeight=row.style.fontWeight;if(row.style.fontSize)
-c.style.fontSize=row.style.fontSize;var w=this.get_col_width(ci);if(w)$w(c,w);c.val=val;var me=this;c.div=$a(c,'div','',{width:(cint(w)-7)+'px'});$s(c.div,val,this.coltypes[ci],this.coloptions[ci])}
-_r.DataTable.prototype.do_print=function(){this._get_query(true);args={query:this.query,title:this.rep_name?this.rep_name:this.dt,colnames:null,colwidhts:null,coltypes:null,has_index:this.has_index,has_headings:this.has_headings,check_limit:1,is_simple:(this.is_simple?'Yes':''),sc_id:(this.search_criteria?this.search_criteria.name:''),filter_values:docstring(this.filter_vals),};_p.print_query=new _p.PrintQuery();_p.print_query.show_dialog(args);}
-_r.DataTable.prototype.do_export=function(){this._get_query(true);var me=this;export_query(this.query,function(q){export_csv(q,(me.rep_name?me.rep_name:me.dt),(me.search_criteria?me.search_criteria.name:''),me.is_simple,docstring(me.filter_vals));});}
-_r.DataTable.prototype.do_calc=function(){_r.show_calc(this.tab,this.colnames,this.coltypes,1);}
-_r.DataTable.prototype.get_col_data=function(colname){var ci=0;if(!this.htab)return[];for(var i=1;i<this.htab.rows[0].cells.length;i++){var hc=this.htab.rows[0].cells[i];if(hc.val==colname){ci=i;break;}}
-var ret=[];for(var ri=0;ri<this.tab.rows.length;ri++){ret[ret.length]=this.tab.rows[ri].cells[ci].val;}
-return ret;}
-_r.DataTable.prototype.get_html=function(){var w=document.createElement('div');w=$a(w,'div');w.style.marginTop='16px';var tab=$a(w,'table');var add_head_style=function(c,w){c.style.fontWeight='bold';c.style.border='1px solid #000';c.style.padding='2px';if(w)$w(c,w);return c;}
-var add_cell_style=function(c){c.style.padding='2px';c.style.border='1px solid #000';return c;}
-tab.style.borderCollapse='collapse';var hr=tab.insertRow(0);var c0=add_head_style(hr.insertCell(0),'30px');c0.innerHTML='Sr';for(var i=1;i<this.htab.rows[0].cells.length;i++){var hc=this.htab.rows[0].cells[i];var c=add_head_style(hr.insertCell(i),hc.style.width);c.innerHTML=hc.innerHTML;}
-for(var ri=0;ri<this.tab.rows.length;ri++){var row=this.tab.rows[ri];var dt_row=tab.insertRow(tab.rows.length);for(var ci=0;ci<row.cells.length;ci++){var c=add_cell_style(dt_row.insertCell(ci));c.innerHTML=row.cells[ci].innerHTML;}}
-return w.innerHTML;}
-/*
- *	lib/js/legacy/widgets/report_builder/calculator.js
- */
-_r.calc_dialog=null;_r.show_calc=function(tab,colnames,coltypes,add_idx){if(!add_idx)add_idx=0;if(!tab||!tab.rows.length){msgprint("No Data");return;}
-if(!_r.calc_dialog){var d=new Dialog(400,400,"Calculator")
-d.make_body([['Select','Column'],['Data','Sum'],['Data','Average'],['Data','Min'],['Data','Max']])
-d.widgets['Sum'].readonly='readonly';d.widgets['Average'].readonly='readonly';d.widgets['Min'].readonly='readonly';d.widgets['Max'].readonly='readonly';d.widgets['Column'].onchange=function(){d.set_calc();}
-d.set_calc=function(){var cn=sel_val(this.widgets['Column']);var cidx=0;var sum=0;var avg=0;var minv=null;var maxv=null;for(var i=0;i<this.colnames.length;i++){if(this.colnames[i]==cn){cidx=i+add_idx;break;}}
-for(var i=0;i<this.datatab.rows.length;i++){var c=this.datatab.rows[i].cells[cidx];var v=c.div?flt(c.div.innerHTML):flt(c.innerHTML);sum+=v;if(minv==null)minv=v;if(maxv==null)maxv=v;if(v>maxv)maxv=v;if(v<minv)minv=v;}
-d.widgets['Sum'].value=fmt_money(sum);d.widgets['Average'].value=fmt_money(sum/this.datatab.rows.length);d.widgets['Min'].value=fmt_money(minv);d.widgets['Max'].value=fmt_money(maxv);_r.calc_dialog=d;}
-d.onshow=function(){var cl=[];for(var i in _r.calc_dialog.colnames){if(in_list(['Currency','Int','Float'],_r.calc_dialog.coltypes[i]))
-cl.push(_r.calc_dialog.colnames[i]);}
-if(!cl.length){this.hide();alert("No Numeric Column");return;}
-var s=this.widgets['Column'];empty_select(s);add_sel_options(s,cl);if(s.inp)s.inp.value=cl[0];else s.value=cl[0];this.set_calc();}
-_r.calc_dialog=d;}
-_r.calc_dialog.datatab=tab;_r.calc_dialog.colnames=colnames;_r.calc_dialog.coltypes=coltypes;_r.calc_dialog.show();}
-/*
- *	lib/js/legacy/widgets/print_query.js
- */
-_p.PrintQuery=function(){this.args={};}
-_p.PrintQuery.prototype.show_dialog=function(args){this.args=args;var me=this;if(!this.dialog){var d=new Dialog(400,300,"Print");d.make_body([['Data','Max rows','Blank to print all rows'],['Data','Rows per page'],['Button','Go'],]);d.widgets['Go'].onclick=function(){d.hide();me.render(cint(d.widgets['Max rows'].value),cint(d.widgets['Rows per page'].value))}
-d.onshow=function(){this.widgets['Rows per page'].value='35';this.widgets['Max rows'].value='500';}
-this.dialog=d;}
-this.dialog.show();}
-_p.PrintQuery.prototype.render=function(max_rows,page_len){var me=this;var args=me.args;if(cint(max_rows)!=0)args.query+=' LIMIT 0,'+cint(max_rows);if(!args.query)return;var callback=function(r,rt){if(!r.values){return;}
-if(!page_len)page_len=r.values.length;if(r.colnames&&r.colnames.length)
-args.colnames=args.has_index?add_lists(['Sr'],r.colnames):r.colnames;if(r.colwidths&&r.colwidths.length)
-args.colwidths=args.has_index?add_lists(['25px'],r.colwidths):r.colwidths;if(r.coltypes)
-args.coltypes=args.has_index?add_lists(['Data'],r.coltypes):r.coltypes;if(args.coltypes){for(var i in args.coltypes)
-if(args.coltypes[i]=='Link')args.coltypes[i]='Data';}
-if(args.colwidths){var tw=0;for(var i=0;i<args.colwidths.length;i++)tw+=cint(args.colwidths[i]?args.colwidths[i]:100);for(var i=0;i<args.colwidths.length;i++)args.colwidths[i]=cint(cint(args.colwidths[i]?args.colwidths[i]:100)/tw*100)+'%';}
-var has_heading=args.colnames?1:0;if(!args.has_headings)has_heading=0;var tl=[]
-for(var st=0;st<r.values.length;st=st+page_len){tl.push(me.build_table(r,st,page_len,has_heading,args.rb))}
-var html='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'
-+'<html><head>'
-+'<title>'+args.title+'</title>'
-+'<style>'+_p.def_print_style_body+_p.def_print_style_other+'</style>'
-+'</head><body>'
-+(r.header_html?r.header_html:'')
-+tl.join('\n<div style="page-break-after: always;"></div>\n')
-+(r.footer_html?r.footer_html:'')
-+'</body></html>';_p.preview(html);}
-var out_args=copy_dict(args);if(args.is_simple){out_args.simple_query=args.query;delete out_args.query;}
-if(args.filter_values)
-out_args.filter_values=args.filter_values;$c('webnotes.widgets.query_builder.runquery',out_args,callback);}
-_p.PrintQuery.prototype.build_table=function(r,start,page_len,has_heading,rb){var div=document.createElement('div');if(!r.page_template){var head=$a(div,'div',null,{fontSize:'20px',fontWeight:'bold',margin:'16px 0px',borderBottom:'1px solid #CCC',paddingBottom:'8px'});head.innerHTML=args.title;}
-var m=start+page_len;if(m>r.values.length)m=r.values.length
-var t=make_table(div,m+has_heading-start,r.values[0].length+args.has_index,'100%',null);t.className='simpletable';if(args.colwidths)
-$y(t,{tableLayout:'fixed'});if(has_heading){for(var i=0;i<args.colnames.length;i++){$td(t,0,i).innerHTML=args.colnames[i].bold();if(args.colwidths&&args.colwidths[i]){$w($td(t,0,i),args.colwidths[i]);}}}
-for(var ri=start;ri<m;ri++){if(args.has_index)
-$td(t,ri+has_heading-start,0).innerHTML=ri+1;for(var ci=0;ci<r.values[0].length;ci++){if(ri-start==0&&args.colwidths&&args.colwidths[i]){$w($td(t,0,i),args.colwidths[i]);}
-var c=$td(t,ri+has_heading-start,ci+args.has_index)
-c.div=$a(c,'div','',{whiteSpace:'normal'});$s(c.div,r.values[ri][ci],args.coltypes?args.coltypes[ci+args.has_index]:null);}}
-if(r.style){for(var i=0;i<r.style.length;i++){$yt(t,r.style[i][0],r.style[i][1],r.style[i][2]);}}
-if(rb&&rb.aftertableprint){rb.aftertableprint(t);}
-if(r.page_template)return repl(r.page_template,{table:div.innerHTML});else return div.innerHTML;}
\ No newline at end of file
diff --git a/public/js/app/stock_grid_report.js b/public/js/stock_grid_report.js
similarity index 100%
rename from public/js/app/stock_grid_report.js
rename to public/js/stock_grid_report.js
diff --git a/public/js/app/tree_grid.css b/public/js/tree_grid.css
similarity index 100%
rename from public/js/app/tree_grid.css
rename to public/js/tree_grid.css
diff --git a/public/rss.xml b/public/rss.xml
deleted file mode 100755
index efe083e..0000000
--- a/public/rss.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/python
-
-# ERPNext - web based ERP (http://erpnext.com)
-# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-# 
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-
-import cgi, cgitb, os, sys
-cgitb.enable()
-
-# import libs
-sys.path.append('..')
-sys.path.append('../lib/py')
-
-import webnotes
-import webnotes.auth
-
-import conf
-sys.path.append(conf.modules_path)
-
-if __name__=='__main__':
-	# webnotes.http_request = webnotes.auth.HTTPRequest()
-	webnotes.connect()
-	from webnotes.cms import feed
-	try:
-		print 'Content-Type: text/xml'
-		print
-		xml = feed.generate()
-		print xml
-	except Exception, e:
-		print 'Content-Type: text/html'
-		print
-		import webnotes.utils
-		print webnotes.utils.getTraceback()
\ No newline at end of file
diff --git a/public/server.py b/public/server.py
deleted file mode 100755
index b95ac20..0000000
--- a/public/server.py
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (c) 2012 Web Notes Technologies Pvt Ltd (http://erpnext.com)
-# 
-# MIT License (MIT)
-# 
-# Permission is hereby granted, free of charge, to any person obtaining a 
-# copy of this software and associated documentation files (the "Software"), 
-# to deal in the Software without restriction, including without limitation 
-# the rights to use, copy, modify, merge, publish, distribute, sublicense, 
-# and/or sell copies of the Software, and to permit persons to whom the 
-# Software is furnished to do so, subject to the following conditions:
-# 
-# The above copyright notice and this permission notice shall be included in 
-# all copies or substantial portions of the Software.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
-# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
-# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 
-# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
-# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 
-# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-# 
-
-
-from __future__ import unicode_literals
-import cgi, cgitb, os, sys
-cgitb.enable()
-
-# import libs
-sys.path.append('..')
-
-import conf
-
-sys.path.append('../lib/py')
-sys.path.append(conf.modules_path)
-
-import webnotes
-import webnotes.handler
-import webnotes.auth
-
-from webnotes.utils import cstr
-
-def init():
-	webnotes.handler.get_cgi_fields()
-	
-	# init request
-	try:
-		webnotes.http_request = webnotes.auth.HTTPRequest()
-		return True
-	except webnotes.AuthenticationError, e:
-		return True
-	#except webnotes.UnknownDomainError, e:
-	#	print "Location: " + (conf.redirect_404)
-	except webnotes.SessionStopped, e:
-		if 'cmd' in webnotes.form_dict:
-			webnotes.handler.print_json()
-		else:
-			print "Content-Type: text/html"
-			print
-			print """<html>
-				<body style="background-color: #EEE;">
-					<h3 style="width: 900px; background-color: #FFF; border: 2px solid #AAA; padding: 20px; font-family: Arial; margin: 20px auto">
-						Updating.
-						We will be back in a few moments...
-					</h3>
-				</body>
-				</html>"""
-
-def respond():
-	import webnotes
-	if 'cmd' in webnotes.form_dict:
-		webnotes.handler.handle()
-	else:
-		print "Content-Type: text/html"
-		print
-		print "<html><head><script>window.location.href='index.html';</script></head></html>"
-
-if __name__=="__main__":
-	if init():
-		respond()
diff --git a/public/sitemap.xml b/public/sitemap.xml
deleted file mode 100755
index 09ce39a..0000000
--- a/public/sitemap.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/python
-
-# ERPNext - web based ERP (http://erpnext.com)
-# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-# 
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-import cgi, cgitb, os, sys
-cgitb.enable()
-
-# import libs
-sys.path.append('..')
-sys.path.append('../lib/py')
-
-import webnotes
-import webnotes.auth
-
-if __name__=='__main__':
-	webnotes.http_request = webnotes.auth.HTTPRequest()
-	domain = os.environ.get('HTTP_HOST')
-	protocol = os.environ.get('HTTPS') and 'https://' or 'http://'
-	from webnotes.cms import sitemap
-	print 'Content-Type: text/xml'
-	print
-	print sitemap.generate(protocol + domain + '/')
\ No newline at end of file
diff --git a/public/unsupported.html b/public/unsupported.html
deleted file mode 100644
index 95967f6..0000000
--- a/public/unsupported.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<html>
-<head>
-	<title>Online ERP, Open Source ERP, ERPNext - Uprade your browser</title>
-</head>
-<body style="background-color: #eee">
-	<div style="width: 900px; margin: 20px auto; padding: 20px;
-	background-color: #fff; border: 2px solid #aaa; font-family: Arial">
-	<p>ERPNext is a complete easy to use web based ERP system that includes accounting
-		inventory, sales, purchase, CRM, projects and a lot more.
-	</p>
-	<h3>Upgrade Your Browser</h3>
-	<p><i>ERPNext requires a modern web browser to function correctly</i></p>
-	<p>Supported browsers are:
-		<ul>
-		<li><a href="http://mozilla.com/firefox">Mozilla Firfox 4+</a>,
-		<li><a href="http://google.com/chrome">Google Chorme 14+</a>,
-		<li><a href="http://apple.com/safari">Apple Safari 5+</a>,
-		<li><a href="http://ie.microsoft.com">Microsoft Internet Explorer 9+</a>,
-		<li><a href="http://www.opera.com/">Opera</a>
-		</ul>
-	</p>
-</body>
\ No newline at end of file
diff --git a/public/web.py b/public/web.py
deleted file mode 100755
index 119636b..0000000
--- a/public/web.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env python
-
-# ERPNext - web based ERP (http://erpnext.com)
-# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-# 
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-"""
-	return a dynamic page from website templates
-
-	all html pages related to website are generated here
-"""
-from __future__ import unicode_literals
-import cgi, cgitb, os, sys
-cgitb.enable()
-
-# import libs
-sys.path.append('..')
-import conf
-sys.path.append('../lib/py')
-sys.path.append(conf.modules_path)
-
-def init():
-	import webnotes.handler
-	webnotes.handler.get_cgi_fields()
-	webnotes.connect()
-
-def respond():
-	import webnotes
-	import website.utils
-	return website.utils.render(webnotes.form_dict.get('page'))
-
-if __name__=="__main__":
-	init()
-	respond()
\ No newline at end of file
diff --git a/erpnext/sandbox/__init__.py b/sandbox/__init__.py
similarity index 100%
rename from erpnext/sandbox/__init__.py
rename to sandbox/__init__.py
diff --git a/erpnext/sandbox/test_leave.py b/sandbox/test_leave.py
similarity index 100%
rename from erpnext/sandbox/test_leave.py
rename to sandbox/test_leave.py
diff --git a/erpnext/sandbox/test_stock_entry.py b/sandbox/test_stock_entry.py
similarity index 100%
rename from erpnext/sandbox/test_stock_entry.py
rename to sandbox/test_stock_entry.py
diff --git a/erpnext/sandbox/test_stock_reco.py b/sandbox/test_stock_reco.py
similarity index 100%
rename from erpnext/sandbox/test_stock_reco.py
rename to sandbox/test_stock_reco.py
diff --git a/erpnext/sandbox/testdata/__init__.py b/sandbox/testdata/__init__.py
similarity index 100%
rename from erpnext/sandbox/testdata/__init__.py
rename to sandbox/testdata/__init__.py
diff --git a/erpnext/sandbox/testdata/leaves.py b/sandbox/testdata/leaves.py
similarity index 100%
rename from erpnext/sandbox/testdata/leaves.py
rename to sandbox/testdata/leaves.py
diff --git a/erpnext/sandbox/testdata/masters.py b/sandbox/testdata/masters.py
similarity index 100%
rename from erpnext/sandbox/testdata/masters.py
rename to sandbox/testdata/masters.py
diff --git a/erpnext/sandbox/testdata/sle_data.py b/sandbox/testdata/sle_data.py
similarity index 100%
rename from erpnext/sandbox/testdata/sle_data.py
rename to sandbox/testdata/sle_data.py
diff --git a/erpnext/sandbox/testdata/stock_entry.py b/sandbox/testdata/stock_entry.py
similarity index 100%
rename from erpnext/sandbox/testdata/stock_entry.py
rename to sandbox/testdata/stock_entry.py
diff --git a/erpnext/sandbox/testdata/stock_reco.py b/sandbox/testdata/stock_reco.py
similarity index 100%
rename from erpnext/sandbox/testdata/stock_reco.py
rename to sandbox/testdata/stock_reco.py
diff --git a/erpnext/selling/DocType Mapper/Delivery Note-Installation Note/Delivery Note-Installation Note.txt b/selling/DocType Mapper/Delivery Note-Installation Note/Delivery Note-Installation Note.txt
similarity index 100%
rename from erpnext/selling/DocType Mapper/Delivery Note-Installation Note/Delivery Note-Installation Note.txt
rename to selling/DocType Mapper/Delivery Note-Installation Note/Delivery Note-Installation Note.txt
diff --git a/erpnext/selling/DocType Mapper/Lead-Customer/Lead-Customer.txt b/selling/DocType Mapper/Lead-Customer/Lead-Customer.txt
similarity index 100%
rename from erpnext/selling/DocType Mapper/Lead-Customer/Lead-Customer.txt
rename to selling/DocType Mapper/Lead-Customer/Lead-Customer.txt
diff --git a/erpnext/selling/DocType Mapper/Lead-Opportunity/Lead-Opportunity.txt b/selling/DocType Mapper/Lead-Opportunity/Lead-Opportunity.txt
similarity index 100%
rename from erpnext/selling/DocType Mapper/Lead-Opportunity/Lead-Opportunity.txt
rename to selling/DocType Mapper/Lead-Opportunity/Lead-Opportunity.txt
diff --git a/erpnext/selling/DocType Mapper/Opportunity-Quotation/Opportunity-Quotation.txt b/selling/DocType Mapper/Opportunity-Quotation/Opportunity-Quotation.txt
similarity index 100%
rename from erpnext/selling/DocType Mapper/Opportunity-Quotation/Opportunity-Quotation.txt
rename to selling/DocType Mapper/Opportunity-Quotation/Opportunity-Quotation.txt
diff --git a/erpnext/selling/DocType Mapper/Project-Sales Order/Project-Sales Order.txt b/selling/DocType Mapper/Project-Sales Order/Project-Sales Order.txt
similarity index 100%
rename from erpnext/selling/DocType Mapper/Project-Sales Order/Project-Sales Order.txt
rename to selling/DocType Mapper/Project-Sales Order/Project-Sales Order.txt
diff --git a/erpnext/selling/DocType Mapper/Quotation-Sales Order/Quotation-Sales Order.txt b/selling/DocType Mapper/Quotation-Sales Order/Quotation-Sales Order.txt
similarity index 100%
rename from erpnext/selling/DocType Mapper/Quotation-Sales Order/Quotation-Sales Order.txt
rename to selling/DocType Mapper/Quotation-Sales Order/Quotation-Sales Order.txt
diff --git a/erpnext/selling/Print Format/Quotation Classic/Quotation Classic.txt b/selling/Print Format/Quotation Classic/Quotation Classic.txt
similarity index 100%
rename from erpnext/selling/Print Format/Quotation Classic/Quotation Classic.txt
rename to selling/Print Format/Quotation Classic/Quotation Classic.txt
diff --git a/erpnext/selling/Print Format/Quotation Modern/Quotation Modern.txt b/selling/Print Format/Quotation Modern/Quotation Modern.txt
similarity index 100%
rename from erpnext/selling/Print Format/Quotation Modern/Quotation Modern.txt
rename to selling/Print Format/Quotation Modern/Quotation Modern.txt
diff --git a/erpnext/selling/Print Format/Quotation Spartan/Quotation Spartan.txt b/selling/Print Format/Quotation Spartan/Quotation Spartan.txt
similarity index 100%
rename from erpnext/selling/Print Format/Quotation Spartan/Quotation Spartan.txt
rename to selling/Print Format/Quotation Spartan/Quotation Spartan.txt
diff --git a/erpnext/selling/Print Format/Sales Order Classic/Sales Order Classic.txt b/selling/Print Format/Sales Order Classic/Sales Order Classic.txt
similarity index 100%
rename from erpnext/selling/Print Format/Sales Order Classic/Sales Order Classic.txt
rename to selling/Print Format/Sales Order Classic/Sales Order Classic.txt
diff --git a/erpnext/selling/Print Format/Sales Order Modern/Sales Order Modern.txt b/selling/Print Format/Sales Order Modern/Sales Order Modern.txt
similarity index 100%
rename from erpnext/selling/Print Format/Sales Order Modern/Sales Order Modern.txt
rename to selling/Print Format/Sales Order Modern/Sales Order Modern.txt
diff --git a/erpnext/selling/Print Format/Sales Order Spartan/Sales Order Spartan.txt b/selling/Print Format/Sales Order Spartan/Sales Order Spartan.txt
similarity index 100%
rename from erpnext/selling/Print Format/Sales Order Spartan/Sales Order Spartan.txt
rename to selling/Print Format/Sales Order Spartan/Sales Order Spartan.txt
diff --git a/erpnext/selling/__init__.py b/selling/__init__.py
similarity index 100%
rename from erpnext/selling/__init__.py
rename to selling/__init__.py
diff --git a/erpnext/selling/doctype/__init__.py b/selling/doctype/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/__init__.py
rename to selling/doctype/__init__.py
diff --git a/erpnext/selling/doctype/campaign/__init__.py b/selling/doctype/campaign/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/campaign/__init__.py
rename to selling/doctype/campaign/__init__.py
diff --git a/erpnext/selling/doctype/campaign/campaign.js b/selling/doctype/campaign/campaign.js
similarity index 100%
rename from erpnext/selling/doctype/campaign/campaign.js
rename to selling/doctype/campaign/campaign.js
diff --git a/erpnext/selling/doctype/campaign/campaign.txt b/selling/doctype/campaign/campaign.txt
similarity index 100%
rename from erpnext/selling/doctype/campaign/campaign.txt
rename to selling/doctype/campaign/campaign.txt
diff --git a/erpnext/selling/doctype/customer/__init__.py b/selling/doctype/customer/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/customer/__init__.py
rename to selling/doctype/customer/__init__.py
diff --git a/erpnext/selling/doctype/customer/customer.js b/selling/doctype/customer/customer.js
similarity index 97%
rename from erpnext/selling/doctype/customer/customer.js
rename to selling/doctype/customer/customer.js
index 708573d..82d001f 100644
--- a/erpnext/selling/doctype/customer/customer.js
+++ b/selling/doctype/customer/customer.js
@@ -14,8 +14,8 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-wn.require('erpnext/setup/doctype/contact_control/contact_control.js');
-wn.require('erpnext/support/doctype/communication/communication.js');
+wn.require('app/setup/doctype/contact_control/contact_control.js');
+wn.require('app/support/doctype/communication/communication.js');
 
 /* ********************************* onload ********************************************* */
 
diff --git a/erpnext/selling/doctype/customer/customer.py b/selling/doctype/customer/customer.py
similarity index 100%
rename from erpnext/selling/doctype/customer/customer.py
rename to selling/doctype/customer/customer.py
diff --git a/erpnext/selling/doctype/customer/customer.txt b/selling/doctype/customer/customer.txt
similarity index 100%
rename from erpnext/selling/doctype/customer/customer.txt
rename to selling/doctype/customer/customer.txt
diff --git a/erpnext/selling/doctype/customer/customer_list.js b/selling/doctype/customer/customer_list.js
similarity index 100%
rename from erpnext/selling/doctype/customer/customer_list.js
rename to selling/doctype/customer/customer_list.js
diff --git a/erpnext/selling/doctype/industry_type/__init__.py b/selling/doctype/industry_type/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/industry_type/__init__.py
rename to selling/doctype/industry_type/__init__.py
diff --git a/erpnext/selling/doctype/industry_type/industry_type.js b/selling/doctype/industry_type/industry_type.js
similarity index 100%
rename from erpnext/selling/doctype/industry_type/industry_type.js
rename to selling/doctype/industry_type/industry_type.js
diff --git a/erpnext/selling/doctype/industry_type/industry_type.txt b/selling/doctype/industry_type/industry_type.txt
similarity index 100%
rename from erpnext/selling/doctype/industry_type/industry_type.txt
rename to selling/doctype/industry_type/industry_type.txt
diff --git a/erpnext/selling/doctype/installation_note/__init__.py b/selling/doctype/installation_note/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/installation_note/__init__.py
rename to selling/doctype/installation_note/__init__.py
diff --git a/erpnext/selling/doctype/installation_note/installation_note.js b/selling/doctype/installation_note/installation_note.js
similarity index 100%
rename from erpnext/selling/doctype/installation_note/installation_note.js
rename to selling/doctype/installation_note/installation_note.js
diff --git a/erpnext/selling/doctype/installation_note/installation_note.py b/selling/doctype/installation_note/installation_note.py
similarity index 96%
rename from erpnext/selling/doctype/installation_note/installation_note.py
rename to selling/doctype/installation_note/installation_note.py
index 2af258a..f0afdc9 100644
--- a/erpnext/selling/doctype/installation_note/installation_note.py
+++ b/selling/doctype/installation_note/installation_note.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/selling/doctype/installation_note/installation_note.txt b/selling/doctype/installation_note/installation_note.txt
similarity index 100%
rename from erpnext/selling/doctype/installation_note/installation_note.txt
rename to selling/doctype/installation_note/installation_note.txt
diff --git a/erpnext/selling/doctype/installation_note_item/__init__.py b/selling/doctype/installation_note_item/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/installation_note_item/__init__.py
rename to selling/doctype/installation_note_item/__init__.py
diff --git a/erpnext/selling/doctype/installation_note_item/installation_note_item.txt b/selling/doctype/installation_note_item/installation_note_item.txt
similarity index 100%
rename from erpnext/selling/doctype/installation_note_item/installation_note_item.txt
rename to selling/doctype/installation_note_item/installation_note_item.txt
diff --git a/erpnext/selling/doctype/lead/__init__.py b/selling/doctype/lead/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/lead/__init__.py
rename to selling/doctype/lead/__init__.py
diff --git a/erpnext/selling/doctype/lead/lead.js b/selling/doctype/lead/lead.js
similarity index 96%
rename from erpnext/selling/doctype/lead/lead.js
rename to selling/doctype/lead/lead.js
index 504b0bd..3f45603 100644
--- a/erpnext/selling/doctype/lead/lead.js
+++ b/selling/doctype/lead/lead.js
@@ -16,8 +16,8 @@
 
 // Module CRM
 
-wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
-wn.require('erpnext/support/doctype/communication/communication.js');
+wn.require('app/utilities/doctype/sms_control/sms_control.js');
+wn.require('app/support/doctype/communication/communication.js');
 
 cur_frm.cscript.onload = function(doc, cdt, cdn) {
 	if(user =='Guest'){
diff --git a/erpnext/selling/doctype/lead/lead.py b/selling/doctype/lead/lead.py
similarity index 94%
rename from erpnext/selling/doctype/lead/lead.py
rename to selling/doctype/lead/lead.py
index eda3cd6..4f197fa 100644
--- a/erpnext/selling/doctype/lead/lead.py
+++ b/selling/doctype/lead/lead.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/selling/doctype/lead/lead.txt b/selling/doctype/lead/lead.txt
similarity index 100%
rename from erpnext/selling/doctype/lead/lead.txt
rename to selling/doctype/lead/lead.txt
diff --git a/erpnext/selling/doctype/lead/lead_list.js b/selling/doctype/lead/lead_list.js
similarity index 100%
rename from erpnext/selling/doctype/lead/lead_list.js
rename to selling/doctype/lead/lead_list.js
diff --git a/erpnext/selling/doctype/opportunity/__init__.py b/selling/doctype/opportunity/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/opportunity/__init__.py
rename to selling/doctype/opportunity/__init__.py
diff --git a/erpnext/selling/doctype/opportunity/opportunity.js b/selling/doctype/opportunity/opportunity.js
similarity index 98%
rename from erpnext/selling/doctype/opportunity/opportunity.js
rename to selling/doctype/opportunity/opportunity.js
index 52cb5fd..45ceda9 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.js
+++ b/selling/doctype/opportunity/opportunity.js
@@ -14,8 +14,8 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
-wn.require('erpnext/support/doctype/communication/communication.js');
+wn.require('app/utilities/doctype/sms_control/sms_control.js');
+wn.require('app/support/doctype/communication/communication.js');
 
 cur_frm.cscript.refresh = function(doc, cdt, cdn){
 	erpnext.hide_naming_series();
diff --git a/erpnext/selling/doctype/opportunity/opportunity.py b/selling/doctype/opportunity/opportunity.py
similarity index 97%
rename from erpnext/selling/doctype/opportunity/opportunity.py
rename to selling/doctype/opportunity/opportunity.py
index c3a6fb7..19aa983 100644
--- a/erpnext/selling/doctype/opportunity/opportunity.py
+++ b/selling/doctype/opportunity/opportunity.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/selling/doctype/opportunity/opportunity.txt b/selling/doctype/opportunity/opportunity.txt
similarity index 100%
rename from erpnext/selling/doctype/opportunity/opportunity.txt
rename to selling/doctype/opportunity/opportunity.txt
diff --git a/erpnext/selling/doctype/opportunity/opportunity_list.js b/selling/doctype/opportunity/opportunity_list.js
similarity index 100%
rename from erpnext/selling/doctype/opportunity/opportunity_list.js
rename to selling/doctype/opportunity/opportunity_list.js
diff --git a/erpnext/selling/doctype/opportunity_item/__init__.py b/selling/doctype/opportunity_item/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/opportunity_item/__init__.py
rename to selling/doctype/opportunity_item/__init__.py
diff --git a/erpnext/selling/doctype/opportunity_item/opportunity_item.txt b/selling/doctype/opportunity_item/opportunity_item.txt
similarity index 100%
rename from erpnext/selling/doctype/opportunity_item/opportunity_item.txt
rename to selling/doctype/opportunity_item/opportunity_item.txt
diff --git a/erpnext/selling/doctype/plot_control/__init__.py b/selling/doctype/plot_control/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/plot_control/__init__.py
rename to selling/doctype/plot_control/__init__.py
diff --git a/erpnext/selling/doctype/plot_control/plot_control.py b/selling/doctype/plot_control/plot_control.py
similarity index 96%
rename from erpnext/selling/doctype/plot_control/plot_control.py
rename to selling/doctype/plot_control/plot_control.py
index d0b24b4..43ab56f 100644
--- a/erpnext/selling/doctype/plot_control/plot_control.py
+++ b/selling/doctype/plot_control/plot_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/selling/doctype/plot_control/plot_control.txt b/selling/doctype/plot_control/plot_control.txt
similarity index 100%
rename from erpnext/selling/doctype/plot_control/plot_control.txt
rename to selling/doctype/plot_control/plot_control.txt
diff --git a/erpnext/selling/doctype/quotation/__init__.py b/selling/doctype/quotation/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/quotation/__init__.py
rename to selling/doctype/quotation/__init__.py
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/selling/doctype/quotation/quotation.js
similarity index 96%
rename from erpnext/selling/doctype/quotation/quotation.js
rename to selling/doctype/quotation/quotation.js
index 2f97bad..cc5bc31 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/selling/doctype/quotation/quotation.js
@@ -21,11 +21,11 @@
 cur_frm.cscript.sales_team_fname = "sales_team";
 
 // =====================================================================================
-wn.require('erpnext/selling/doctype/sales_common/sales_common.js');
-wn.require('erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
-wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
-wn.require('erpnext/setup/doctype/notification_control/notification_control.js');
-wn.require('erpnext/support/doctype/communication/communication.js');
+wn.require('app/selling/doctype/sales_common/sales_common.js');
+wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
+wn.require('app/utilities/doctype/sms_control/sms_control.js');
+wn.require('app/setup/doctype/notification_control/notification_control.js');
+wn.require('app/support/doctype/communication/communication.js');
 
 // ONLOAD
 // ===================================================================================
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/selling/doctype/quotation/quotation.py
similarity index 98%
rename from erpnext/selling/doctype/quotation/quotation.py
rename to selling/doctype/quotation/quotation.py
index 7bb94aa..84609de 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/selling/doctype/quotation/quotation.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, load_json
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, load_json
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/selling/doctype/quotation/quotation.txt b/selling/doctype/quotation/quotation.txt
similarity index 100%
rename from erpnext/selling/doctype/quotation/quotation.txt
rename to selling/doctype/quotation/quotation.txt
diff --git a/erpnext/selling/doctype/quotation/quotation_list.js b/selling/doctype/quotation/quotation_list.js
similarity index 100%
rename from erpnext/selling/doctype/quotation/quotation_list.js
rename to selling/doctype/quotation/quotation_list.js
diff --git a/erpnext/selling/doctype/quotation_item/__init__.py b/selling/doctype/quotation_item/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/quotation_item/__init__.py
rename to selling/doctype/quotation_item/__init__.py
diff --git a/erpnext/selling/doctype/quotation_item/quotation_item.txt b/selling/doctype/quotation_item/quotation_item.txt
similarity index 100%
rename from erpnext/selling/doctype/quotation_item/quotation_item.txt
rename to selling/doctype/quotation_item/quotation_item.txt
diff --git a/erpnext/selling/doctype/sales_and_purchase_return_item/__init__.py b/selling/doctype/sales_and_purchase_return_item/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/sales_and_purchase_return_item/__init__.py
rename to selling/doctype/sales_and_purchase_return_item/__init__.py
diff --git a/erpnext/selling/doctype/sales_and_purchase_return_item/sales_and_purchase_return_item.txt b/selling/doctype/sales_and_purchase_return_item/sales_and_purchase_return_item.txt
similarity index 100%
rename from erpnext/selling/doctype/sales_and_purchase_return_item/sales_and_purchase_return_item.txt
rename to selling/doctype/sales_and_purchase_return_item/sales_and_purchase_return_item.txt
diff --git a/erpnext/selling/doctype/sales_common/__init__.py b/selling/doctype/sales_common/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/sales_common/__init__.py
rename to selling/doctype/sales_common/__init__.py
diff --git a/erpnext/selling/doctype/sales_common/sales_common.js b/selling/doctype/sales_common/sales_common.js
similarity index 99%
rename from erpnext/selling/doctype/sales_common/sales_common.js
rename to selling/doctype/sales_common/sales_common.js
index fe5582d..9050c22 100644
--- a/erpnext/selling/doctype/sales_common/sales_common.js
+++ b/selling/doctype/sales_common/sales_common.js
@@ -18,7 +18,7 @@
 // ------
 // cur_frm.cscript.tname - Details table name
 // cur_frm.cscript.fname - Details fieldname
-// cur_frm.cscript.other_fname - wn.require('erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js'); fieldname
+// cur_frm.cscript.other_fname - wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js'); fieldname
 // cur_frm.cscript.sales_team_fname - Sales Team fieldname
 
 // ============== Load Default Taxes ===================
diff --git a/erpnext/selling/doctype/sales_common/sales_common.py b/selling/doctype/sales_common/sales_common.py
similarity index 98%
rename from erpnext/selling/doctype/sales_common/sales_common.py
rename to selling/doctype/sales_common/sales_common.py
index 5411a5a..f76d6f1 100644
--- a/erpnext/selling/doctype/sales_common/sales_common.py
+++ b/selling/doctype/sales_common/sales_common.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 get_value = webnotes.conn.get_value
 in_transaction = webnotes.conn.in_transaction
diff --git a/erpnext/selling/doctype/sales_common/sales_common.txt b/selling/doctype/sales_common/sales_common.txt
similarity index 100%
rename from erpnext/selling/doctype/sales_common/sales_common.txt
rename to selling/doctype/sales_common/sales_common.txt
diff --git a/erpnext/selling/doctype/sales_order/__init__.py b/selling/doctype/sales_order/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/sales_order/__init__.py
rename to selling/doctype/sales_order/__init__.py
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/selling/doctype/sales_order/sales_order.js
similarity index 97%
rename from erpnext/selling/doctype/sales_order/sales_order.js
rename to selling/doctype/sales_order/sales_order.js
index f4089be..634301e 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/selling/doctype/sales_order/sales_order.js
@@ -22,10 +22,10 @@
 cur_frm.cscript.sales_team_fname = "sales_team";
 
 
-wn.require('erpnext/selling/doctype/sales_common/sales_common.js');
-wn.require('erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
-wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
-wn.require('erpnext/setup/doctype/notification_control/notification_control.js');
+wn.require('app/selling/doctype/sales_common/sales_common.js');
+wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
+wn.require('app/utilities/doctype/sms_control/sms_control.js');
+wn.require('app/setup/doctype/notification_control/notification_control.js');
 
 
 // ONLOAD
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/selling/doctype/sales_order/sales_order.py
similarity index 98%
rename from erpnext/selling/doctype/sales_order/sales_order.py
rename to selling/doctype/sales_order/sales_order.py
index 32c2e26..7b677c5 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/selling/doctype/sales_order/sales_order.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/selling/doctype/sales_order/sales_order.txt b/selling/doctype/sales_order/sales_order.txt
similarity index 100%
rename from erpnext/selling/doctype/sales_order/sales_order.txt
rename to selling/doctype/sales_order/sales_order.txt
diff --git a/erpnext/selling/doctype/sales_order/sales_order_list.js b/selling/doctype/sales_order/sales_order_list.js
similarity index 100%
rename from erpnext/selling/doctype/sales_order/sales_order_list.js
rename to selling/doctype/sales_order/sales_order_list.js
diff --git a/erpnext/selling/doctype/sales_order_item/__init__.py b/selling/doctype/sales_order_item/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/sales_order_item/__init__.py
rename to selling/doctype/sales_order_item/__init__.py
diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.txt b/selling/doctype/sales_order_item/sales_order_item.txt
similarity index 100%
rename from erpnext/selling/doctype/sales_order_item/sales_order_item.txt
rename to selling/doctype/sales_order_item/sales_order_item.txt
diff --git a/erpnext/selling/doctype/sales_team/__init__.py b/selling/doctype/sales_team/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/sales_team/__init__.py
rename to selling/doctype/sales_team/__init__.py
diff --git a/erpnext/selling/doctype/sales_team/sales_team.txt b/selling/doctype/sales_team/sales_team.txt
similarity index 100%
rename from erpnext/selling/doctype/sales_team/sales_team.txt
rename to selling/doctype/sales_team/sales_team.txt
diff --git a/erpnext/selling/doctype/shipping_address/__init__.py b/selling/doctype/shipping_address/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/shipping_address/__init__.py
rename to selling/doctype/shipping_address/__init__.py
diff --git a/erpnext/selling/doctype/shipping_address/shipping_address.js b/selling/doctype/shipping_address/shipping_address.js
similarity index 100%
rename from erpnext/selling/doctype/shipping_address/shipping_address.js
rename to selling/doctype/shipping_address/shipping_address.js
diff --git a/erpnext/selling/doctype/shipping_address/shipping_address.py b/selling/doctype/shipping_address/shipping_address.py
similarity index 100%
rename from erpnext/selling/doctype/shipping_address/shipping_address.py
rename to selling/doctype/shipping_address/shipping_address.py
diff --git a/erpnext/selling/doctype/shipping_address/shipping_address.txt b/selling/doctype/shipping_address/shipping_address.txt
similarity index 100%
rename from erpnext/selling/doctype/shipping_address/shipping_address.txt
rename to selling/doctype/shipping_address/shipping_address.txt
diff --git a/erpnext/selling/doctype/sms_center/__init__.py b/selling/doctype/sms_center/__init__.py
similarity index 100%
rename from erpnext/selling/doctype/sms_center/__init__.py
rename to selling/doctype/sms_center/__init__.py
diff --git a/erpnext/selling/doctype/sms_center/sms_center.py b/selling/doctype/sms_center/sms_center.py
similarity index 93%
rename from erpnext/selling/doctype/sms_center/sms_center.py
rename to selling/doctype/sms_center/sms_center.py
index 372edb7..074199e 100644
--- a/erpnext/selling/doctype/sms_center/sms_center.py
+++ b/selling/doctype/sms_center/sms_center.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/selling/doctype/sms_center/sms_center.txt b/selling/doctype/sms_center/sms_center.txt
similarity index 100%
rename from erpnext/selling/doctype/sms_center/sms_center.txt
rename to selling/doctype/sms_center/sms_center.txt
diff --git a/erpnext/selling/page/__init__.py b/selling/page/__init__.py
similarity index 100%
rename from erpnext/selling/page/__init__.py
rename to selling/page/__init__.py
diff --git a/erpnext/selling/page/sales_analytics/__init__.py b/selling/page/sales_analytics/__init__.py
similarity index 100%
rename from erpnext/selling/page/sales_analytics/__init__.py
rename to selling/page/sales_analytics/__init__.py
diff --git a/erpnext/selling/page/sales_analytics/sales_analytics.js b/selling/page/sales_analytics/sales_analytics.js
similarity index 100%
rename from erpnext/selling/page/sales_analytics/sales_analytics.js
rename to selling/page/sales_analytics/sales_analytics.js
diff --git a/erpnext/selling/page/sales_analytics/sales_analytics.txt b/selling/page/sales_analytics/sales_analytics.txt
similarity index 100%
rename from erpnext/selling/page/sales_analytics/sales_analytics.txt
rename to selling/page/sales_analytics/sales_analytics.txt
diff --git a/erpnext/selling/page/sales_browser/__init__.py b/selling/page/sales_browser/__init__.py
similarity index 100%
rename from erpnext/selling/page/sales_browser/__init__.py
rename to selling/page/sales_browser/__init__.py
diff --git a/erpnext/selling/page/sales_browser/sales_browser.css b/selling/page/sales_browser/sales_browser.css
similarity index 100%
rename from erpnext/selling/page/sales_browser/sales_browser.css
rename to selling/page/sales_browser/sales_browser.css
diff --git a/erpnext/selling/page/sales_browser/sales_browser.html b/selling/page/sales_browser/sales_browser.html
similarity index 100%
rename from erpnext/selling/page/sales_browser/sales_browser.html
rename to selling/page/sales_browser/sales_browser.html
diff --git a/erpnext/selling/page/sales_browser/sales_browser.js b/selling/page/sales_browser/sales_browser.js
similarity index 100%
rename from erpnext/selling/page/sales_browser/sales_browser.js
rename to selling/page/sales_browser/sales_browser.js
diff --git a/erpnext/selling/page/sales_browser/sales_browser.py b/selling/page/sales_browser/sales_browser.py
similarity index 100%
rename from erpnext/selling/page/sales_browser/sales_browser.py
rename to selling/page/sales_browser/sales_browser.py
diff --git a/erpnext/selling/page/sales_browser/sales_browser.txt b/selling/page/sales_browser/sales_browser.txt
similarity index 100%
rename from erpnext/selling/page/sales_browser/sales_browser.txt
rename to selling/page/sales_browser/sales_browser.txt
diff --git a/erpnext/selling/page/selling_home/__init__.py b/selling/page/selling_home/__init__.py
similarity index 100%
rename from erpnext/selling/page/selling_home/__init__.py
rename to selling/page/selling_home/__init__.py
diff --git a/erpnext/selling/page/selling_home/selling_home.html b/selling/page/selling_home/selling_home.html
similarity index 100%
rename from erpnext/selling/page/selling_home/selling_home.html
rename to selling/page/selling_home/selling_home.html
diff --git a/erpnext/selling/page/selling_home/selling_home.js b/selling/page/selling_home/selling_home.js
similarity index 100%
rename from erpnext/selling/page/selling_home/selling_home.js
rename to selling/page/selling_home/selling_home.js
diff --git a/erpnext/selling/page/selling_home/selling_home.txt b/selling/page/selling_home/selling_home.txt
similarity index 100%
rename from erpnext/selling/page/selling_home/selling_home.txt
rename to selling/page/selling_home/selling_home.txt
diff --git a/erpnext/selling/search_criteria/__init__.py b/selling/search_criteria/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/__init__.py
rename to selling/search_criteria/__init__.py
diff --git a/erpnext/selling/search_criteria/customer_address_contact/__init__.py b/selling/search_criteria/customer_address_contact/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/customer_address_contact/__init__.py
rename to selling/search_criteria/customer_address_contact/__init__.py
diff --git a/erpnext/selling/search_criteria/customer_address_contact/customer_address_contact.py b/selling/search_criteria/customer_address_contact/customer_address_contact.py
similarity index 100%
rename from erpnext/selling/search_criteria/customer_address_contact/customer_address_contact.py
rename to selling/search_criteria/customer_address_contact/customer_address_contact.py
diff --git a/erpnext/selling/search_criteria/customer_address_contact/customer_address_contact.sql b/selling/search_criteria/customer_address_contact/customer_address_contact.sql
similarity index 100%
rename from erpnext/selling/search_criteria/customer_address_contact/customer_address_contact.sql
rename to selling/search_criteria/customer_address_contact/customer_address_contact.sql
diff --git a/erpnext/selling/search_criteria/customer_address_contact/customer_address_contact.txt b/selling/search_criteria/customer_address_contact/customer_address_contact.txt
similarity index 100%
rename from erpnext/selling/search_criteria/customer_address_contact/customer_address_contact.txt
rename to selling/search_criteria/customer_address_contact/customer_address_contact.txt
diff --git a/erpnext/selling/search_criteria/delivered_items_to_be_install/__init__.py b/selling/search_criteria/delivered_items_to_be_install/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/delivered_items_to_be_install/__init__.py
rename to selling/search_criteria/delivered_items_to_be_install/__init__.py
diff --git a/erpnext/selling/search_criteria/delivered_items_to_be_install/delivered_items_to_be_install.js b/selling/search_criteria/delivered_items_to_be_install/delivered_items_to_be_install.js
similarity index 100%
rename from erpnext/selling/search_criteria/delivered_items_to_be_install/delivered_items_to_be_install.js
rename to selling/search_criteria/delivered_items_to_be_install/delivered_items_to_be_install.js
diff --git a/erpnext/selling/search_criteria/delivered_items_to_be_install/delivered_items_to_be_install.txt b/selling/search_criteria/delivered_items_to_be_install/delivered_items_to_be_install.txt
similarity index 100%
rename from erpnext/selling/search_criteria/delivered_items_to_be_install/delivered_items_to_be_install.txt
rename to selling/search_criteria/delivered_items_to_be_install/delivered_items_to_be_install.txt
diff --git a/erpnext/selling/search_criteria/delivery_note_itemwise_pending_to_bill/__init__.py b/selling/search_criteria/delivery_note_itemwise_pending_to_bill/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/delivery_note_itemwise_pending_to_bill/__init__.py
rename to selling/search_criteria/delivery_note_itemwise_pending_to_bill/__init__.py
diff --git a/erpnext/selling/search_criteria/delivery_note_itemwise_pending_to_bill/delivery_note_itemwise_pending_to_bill.txt b/selling/search_criteria/delivery_note_itemwise_pending_to_bill/delivery_note_itemwise_pending_to_bill.txt
similarity index 100%
rename from erpnext/selling/search_criteria/delivery_note_itemwise_pending_to_bill/delivery_note_itemwise_pending_to_bill.txt
rename to selling/search_criteria/delivery_note_itemwise_pending_to_bill/delivery_note_itemwise_pending_to_bill.txt
diff --git a/erpnext/selling/search_criteria/draft_sales_orders/__init__.py b/selling/search_criteria/draft_sales_orders/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/draft_sales_orders/__init__.py
rename to selling/search_criteria/draft_sales_orders/__init__.py
diff --git a/erpnext/selling/search_criteria/draft_sales_orders/draft_sales_orders.js b/selling/search_criteria/draft_sales_orders/draft_sales_orders.js
similarity index 100%
rename from erpnext/selling/search_criteria/draft_sales_orders/draft_sales_orders.js
rename to selling/search_criteria/draft_sales_orders/draft_sales_orders.js
diff --git a/erpnext/selling/search_criteria/draft_sales_orders/draft_sales_orders.txt b/selling/search_criteria/draft_sales_orders/draft_sales_orders.txt
similarity index 100%
rename from erpnext/selling/search_criteria/draft_sales_orders/draft_sales_orders.txt
rename to selling/search_criteria/draft_sales_orders/draft_sales_orders.txt
diff --git a/erpnext/selling/search_criteria/follow_up_report/__init__.py b/selling/search_criteria/follow_up_report/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/follow_up_report/__init__.py
rename to selling/search_criteria/follow_up_report/__init__.py
diff --git a/erpnext/selling/search_criteria/follow_up_report/follow_up_report.js b/selling/search_criteria/follow_up_report/follow_up_report.js
similarity index 100%
rename from erpnext/selling/search_criteria/follow_up_report/follow_up_report.js
rename to selling/search_criteria/follow_up_report/follow_up_report.js
diff --git a/erpnext/selling/search_criteria/follow_up_report/follow_up_report.py b/selling/search_criteria/follow_up_report/follow_up_report.py
similarity index 100%
rename from erpnext/selling/search_criteria/follow_up_report/follow_up_report.py
rename to selling/search_criteria/follow_up_report/follow_up_report.py
diff --git a/erpnext/selling/search_criteria/follow_up_report/follow_up_report.txt b/selling/search_criteria/follow_up_report/follow_up_report.txt
similarity index 100%
rename from erpnext/selling/search_criteria/follow_up_report/follow_up_report.txt
rename to selling/search_criteria/follow_up_report/follow_up_report.txt
diff --git a/erpnext/selling/search_criteria/gross_profit/__init__.py b/selling/search_criteria/gross_profit/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/gross_profit/__init__.py
rename to selling/search_criteria/gross_profit/__init__.py
diff --git a/erpnext/selling/search_criteria/gross_profit/gross_profit.js b/selling/search_criteria/gross_profit/gross_profit.js
similarity index 100%
rename from erpnext/selling/search_criteria/gross_profit/gross_profit.js
rename to selling/search_criteria/gross_profit/gross_profit.js
diff --git a/erpnext/selling/search_criteria/gross_profit/gross_profit.py b/selling/search_criteria/gross_profit/gross_profit.py
similarity index 100%
rename from erpnext/selling/search_criteria/gross_profit/gross_profit.py
rename to selling/search_criteria/gross_profit/gross_profit.py
diff --git a/erpnext/selling/search_criteria/gross_profit/gross_profit.txt b/selling/search_criteria/gross_profit/gross_profit.txt
similarity index 100%
rename from erpnext/selling/search_criteria/gross_profit/gross_profit.txt
rename to selling/search_criteria/gross_profit/gross_profit.txt
diff --git a/erpnext/selling/search_criteria/itemwise_delivery_details/__init__.py b/selling/search_criteria/itemwise_delivery_details/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/itemwise_delivery_details/__init__.py
rename to selling/search_criteria/itemwise_delivery_details/__init__.py
diff --git a/erpnext/selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.js b/selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.js
similarity index 100%
rename from erpnext/selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.js
rename to selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.js
diff --git a/erpnext/selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.py b/selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.py
similarity index 100%
rename from erpnext/selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.py
rename to selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.py
diff --git a/erpnext/selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.txt b/selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.txt
similarity index 100%
rename from erpnext/selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.txt
rename to selling/search_criteria/itemwise_delivery_details/itemwise_delivery_details.txt
diff --git a/erpnext/selling/search_criteria/itemwise_sales_details/__init__.py b/selling/search_criteria/itemwise_sales_details/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/itemwise_sales_details/__init__.py
rename to selling/search_criteria/itemwise_sales_details/__init__.py
diff --git a/erpnext/selling/search_criteria/itemwise_sales_details/itemwise_sales_details.js b/selling/search_criteria/itemwise_sales_details/itemwise_sales_details.js
similarity index 100%
rename from erpnext/selling/search_criteria/itemwise_sales_details/itemwise_sales_details.js
rename to selling/search_criteria/itemwise_sales_details/itemwise_sales_details.js
diff --git a/erpnext/selling/search_criteria/itemwise_sales_details/itemwise_sales_details.py b/selling/search_criteria/itemwise_sales_details/itemwise_sales_details.py
similarity index 100%
rename from erpnext/selling/search_criteria/itemwise_sales_details/itemwise_sales_details.py
rename to selling/search_criteria/itemwise_sales_details/itemwise_sales_details.py
diff --git a/erpnext/selling/search_criteria/itemwise_sales_details/itemwise_sales_details.txt b/selling/search_criteria/itemwise_sales_details/itemwise_sales_details.txt
similarity index 100%
rename from erpnext/selling/search_criteria/itemwise_sales_details/itemwise_sales_details.txt
rename to selling/search_criteria/itemwise_sales_details/itemwise_sales_details.txt
diff --git a/erpnext/selling/search_criteria/lead_to_follow_up/__init__.py b/selling/search_criteria/lead_to_follow_up/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/lead_to_follow_up/__init__.py
rename to selling/search_criteria/lead_to_follow_up/__init__.py
diff --git a/erpnext/selling/search_criteria/lead_to_follow_up/lead_to_follow_up.js b/selling/search_criteria/lead_to_follow_up/lead_to_follow_up.js
similarity index 100%
rename from erpnext/selling/search_criteria/lead_to_follow_up/lead_to_follow_up.js
rename to selling/search_criteria/lead_to_follow_up/lead_to_follow_up.js
diff --git a/erpnext/selling/search_criteria/lead_to_follow_up/lead_to_follow_up.txt b/selling/search_criteria/lead_to_follow_up/lead_to_follow_up.txt
similarity index 100%
rename from erpnext/selling/search_criteria/lead_to_follow_up/lead_to_follow_up.txt
rename to selling/search_criteria/lead_to_follow_up/lead_to_follow_up.txt
diff --git a/erpnext/selling/search_criteria/lead_to_follow_up/sales_order_overdue.js b/selling/search_criteria/lead_to_follow_up/sales_order_overdue.js
similarity index 100%
rename from erpnext/selling/search_criteria/lead_to_follow_up/sales_order_overdue.js
rename to selling/search_criteria/lead_to_follow_up/sales_order_overdue.js
diff --git a/erpnext/selling/search_criteria/opportunity_to_follow_up/__init__.py b/selling/search_criteria/opportunity_to_follow_up/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/opportunity_to_follow_up/__init__.py
rename to selling/search_criteria/opportunity_to_follow_up/__init__.py
diff --git a/erpnext/selling/search_criteria/opportunity_to_follow_up/opportunity_to_follow_up.txt b/selling/search_criteria/opportunity_to_follow_up/opportunity_to_follow_up.txt
similarity index 100%
rename from erpnext/selling/search_criteria/opportunity_to_follow_up/opportunity_to_follow_up.txt
rename to selling/search_criteria/opportunity_to_follow_up/opportunity_to_follow_up.txt
diff --git a/erpnext/selling/search_criteria/sales_order_pending_items/__init__.py b/selling/search_criteria/sales_order_pending_items/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/sales_order_pending_items/__init__.py
rename to selling/search_criteria/sales_order_pending_items/__init__.py
diff --git a/erpnext/selling/search_criteria/sales_order_pending_items/sales_order_pending_items.js b/selling/search_criteria/sales_order_pending_items/sales_order_pending_items.js
similarity index 100%
rename from erpnext/selling/search_criteria/sales_order_pending_items/sales_order_pending_items.js
rename to selling/search_criteria/sales_order_pending_items/sales_order_pending_items.js
diff --git a/erpnext/selling/search_criteria/sales_order_pending_items/sales_order_pending_items.txt b/selling/search_criteria/sales_order_pending_items/sales_order_pending_items.txt
similarity index 100%
rename from erpnext/selling/search_criteria/sales_order_pending_items/sales_order_pending_items.txt
rename to selling/search_criteria/sales_order_pending_items/sales_order_pending_items.txt
diff --git a/erpnext/selling/search_criteria/sales_orderwise_booking_&_delivery_summary/__init__.py b/selling/search_criteria/sales_orderwise_booking_&_delivery_summary/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/sales_orderwise_booking_&_delivery_summary/__init__.py
rename to selling/search_criteria/sales_orderwise_booking_&_delivery_summary/__init__.py
diff --git a/erpnext/selling/search_criteria/sales_orderwise_booking_&_delivery_summary/sales_orderwise_booking_&_delivery_summary.txt b/selling/search_criteria/sales_orderwise_booking_&_delivery_summary/sales_orderwise_booking_&_delivery_summary.txt
similarity index 100%
rename from erpnext/selling/search_criteria/sales_orderwise_booking_&_delivery_summary/sales_orderwise_booking_&_delivery_summary.txt
rename to selling/search_criteria/sales_orderwise_booking_&_delivery_summary/sales_orderwise_booking_&_delivery_summary.txt
diff --git a/erpnext/selling/search_criteria/sales_orderwise_pending_amount_to_bill/__init__.py b/selling/search_criteria/sales_orderwise_pending_amount_to_bill/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/sales_orderwise_pending_amount_to_bill/__init__.py
rename to selling/search_criteria/sales_orderwise_pending_amount_to_bill/__init__.py
diff --git a/erpnext/selling/search_criteria/sales_orderwise_pending_amount_to_bill/sales_orderwise_pending_amount_to_bill.js b/selling/search_criteria/sales_orderwise_pending_amount_to_bill/sales_orderwise_pending_amount_to_bill.js
similarity index 100%
rename from erpnext/selling/search_criteria/sales_orderwise_pending_amount_to_bill/sales_orderwise_pending_amount_to_bill.js
rename to selling/search_criteria/sales_orderwise_pending_amount_to_bill/sales_orderwise_pending_amount_to_bill.js
diff --git a/erpnext/selling/search_criteria/sales_orderwise_pending_amount_to_bill/sales_orderwise_pending_amount_to_bill.txt b/selling/search_criteria/sales_orderwise_pending_amount_to_bill/sales_orderwise_pending_amount_to_bill.txt
similarity index 100%
rename from erpnext/selling/search_criteria/sales_orderwise_pending_amount_to_bill/sales_orderwise_pending_amount_to_bill.txt
rename to selling/search_criteria/sales_orderwise_pending_amount_to_bill/sales_orderwise_pending_amount_to_bill.txt
diff --git a/erpnext/selling/search_criteria/sales_orderwise_pending_qty_to_deliver/__init__.py b/selling/search_criteria/sales_orderwise_pending_qty_to_deliver/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/sales_orderwise_pending_qty_to_deliver/__init__.py
rename to selling/search_criteria/sales_orderwise_pending_qty_to_deliver/__init__.py
diff --git a/erpnext/selling/search_criteria/sales_orderwise_pending_qty_to_deliver/sales_orderwise_pending_qty_to_deliver.txt b/selling/search_criteria/sales_orderwise_pending_qty_to_deliver/sales_orderwise_pending_qty_to_deliver.txt
similarity index 100%
rename from erpnext/selling/search_criteria/sales_orderwise_pending_qty_to_deliver/sales_orderwise_pending_qty_to_deliver.txt
rename to selling/search_criteria/sales_orderwise_pending_qty_to_deliver/sales_orderwise_pending_qty_to_deliver.txt
diff --git a/erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/__init__.py b/selling/search_criteria/sales_persons_target_variance_item_group_wise/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/__init__.py
rename to selling/search_criteria/sales_persons_target_variance_item_group_wise/__init__.py
diff --git a/erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.js b/selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.js
similarity index 100%
rename from erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.js
rename to selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.js
diff --git a/erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.py b/selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.py
similarity index 100%
rename from erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.py
rename to selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.py
diff --git a/erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.txt b/selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.txt
similarity index 100%
rename from erpnext/selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.txt
rename to selling/search_criteria/sales_persons_target_variance_item_group_wise/sales_persons_target_variance_item_group_wise.txt
diff --git a/erpnext/selling/search_criteria/sales_personwise_transaction_summary/__init__.py b/selling/search_criteria/sales_personwise_transaction_summary/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/sales_personwise_transaction_summary/__init__.py
rename to selling/search_criteria/sales_personwise_transaction_summary/__init__.py
diff --git a/erpnext/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.js b/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.js
similarity index 100%
rename from erpnext/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.js
rename to selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.js
diff --git a/erpnext/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.py b/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.py
similarity index 100%
rename from erpnext/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.py
rename to selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.py
diff --git a/erpnext/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.txt b/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.txt
similarity index 100%
rename from erpnext/selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.txt
rename to selling/search_criteria/sales_personwise_transaction_summary/sales_personwise_transaction_summary.txt
diff --git a/erpnext/selling/search_criteria/serial_no_amc_expiring_this_month/__init__.py b/selling/search_criteria/serial_no_amc_expiring_this_month/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/serial_no_amc_expiring_this_month/__init__.py
rename to selling/search_criteria/serial_no_amc_expiring_this_month/__init__.py
diff --git a/erpnext/selling/search_criteria/serial_no_amc_expiring_this_month/serial_no_amc_expiring_this_month.txt b/selling/search_criteria/serial_no_amc_expiring_this_month/serial_no_amc_expiring_this_month.txt
similarity index 100%
rename from erpnext/selling/search_criteria/serial_no_amc_expiring_this_month/serial_no_amc_expiring_this_month.txt
rename to selling/search_criteria/serial_no_amc_expiring_this_month/serial_no_amc_expiring_this_month.txt
diff --git a/erpnext/selling/search_criteria/serial_no_warranty_expiring_this_month/__init__.py b/selling/search_criteria/serial_no_warranty_expiring_this_month/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/serial_no_warranty_expiring_this_month/__init__.py
rename to selling/search_criteria/serial_no_warranty_expiring_this_month/__init__.py
diff --git a/erpnext/selling/search_criteria/serial_no_warranty_expiring_this_month/serial_no_warranty_expiring_this_month.txt b/selling/search_criteria/serial_no_warranty_expiring_this_month/serial_no_warranty_expiring_this_month.txt
similarity index 100%
rename from erpnext/selling/search_criteria/serial_no_warranty_expiring_this_month/serial_no_warranty_expiring_this_month.txt
rename to selling/search_criteria/serial_no_warranty_expiring_this_month/serial_no_warranty_expiring_this_month.txt
diff --git a/erpnext/selling/search_criteria/target_variance_report/__init__.py b/selling/search_criteria/target_variance_report/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/target_variance_report/__init__.py
rename to selling/search_criteria/target_variance_report/__init__.py
diff --git a/erpnext/selling/search_criteria/target_variance_report/target_variance_report.js b/selling/search_criteria/target_variance_report/target_variance_report.js
similarity index 100%
rename from erpnext/selling/search_criteria/target_variance_report/target_variance_report.js
rename to selling/search_criteria/target_variance_report/target_variance_report.js
diff --git a/erpnext/selling/search_criteria/target_variance_report/target_variance_report.py b/selling/search_criteria/target_variance_report/target_variance_report.py
similarity index 100%
rename from erpnext/selling/search_criteria/target_variance_report/target_variance_report.py
rename to selling/search_criteria/target_variance_report/target_variance_report.py
diff --git a/erpnext/selling/search_criteria/target_variance_report/target_variance_report.txt b/selling/search_criteria/target_variance_report/target_variance_report.txt
similarity index 100%
rename from erpnext/selling/search_criteria/target_variance_report/target_variance_report.txt
rename to selling/search_criteria/target_variance_report/target_variance_report.txt
diff --git a/erpnext/selling/search_criteria/territories_target_variance_item_group_wise/__init__.py b/selling/search_criteria/territories_target_variance_item_group_wise/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/territories_target_variance_item_group_wise/__init__.py
rename to selling/search_criteria/territories_target_variance_item_group_wise/__init__.py
diff --git a/erpnext/selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.js b/selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.js
similarity index 100%
rename from erpnext/selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.js
rename to selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.js
diff --git a/erpnext/selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.py b/selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.py
similarity index 100%
rename from erpnext/selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.py
rename to selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.py
diff --git a/erpnext/selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.txt b/selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.txt
similarity index 100%
rename from erpnext/selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.txt
rename to selling/search_criteria/territories_target_variance_item_group_wise/territories_target_variance_item_group_wise.txt
diff --git a/erpnext/selling/search_criteria/territory_sales___variance_report/__init__.py b/selling/search_criteria/territory_sales___variance_report/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/territory_sales___variance_report/__init__.py
rename to selling/search_criteria/territory_sales___variance_report/__init__.py
diff --git a/erpnext/selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.js b/selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.js
similarity index 100%
rename from erpnext/selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.js
rename to selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.js
diff --git a/erpnext/selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.py b/selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.py
similarity index 100%
rename from erpnext/selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.py
rename to selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.py
diff --git a/erpnext/selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.txt b/selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.txt
similarity index 100%
rename from erpnext/selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.txt
rename to selling/search_criteria/territory_sales___variance_report/territory_sales___variance_report.txt
diff --git a/erpnext/selling/search_criteria/total_target_variance_report/__init__.py b/selling/search_criteria/total_target_variance_report/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/total_target_variance_report/__init__.py
rename to selling/search_criteria/total_target_variance_report/__init__.py
diff --git a/erpnext/selling/search_criteria/total_target_variance_report/total_target_variance_report.js b/selling/search_criteria/total_target_variance_report/total_target_variance_report.js
similarity index 100%
rename from erpnext/selling/search_criteria/total_target_variance_report/total_target_variance_report.js
rename to selling/search_criteria/total_target_variance_report/total_target_variance_report.js
diff --git a/erpnext/selling/search_criteria/total_target_variance_report/total_target_variance_report.py b/selling/search_criteria/total_target_variance_report/total_target_variance_report.py
similarity index 100%
rename from erpnext/selling/search_criteria/total_target_variance_report/total_target_variance_report.py
rename to selling/search_criteria/total_target_variance_report/total_target_variance_report.py
diff --git a/erpnext/selling/search_criteria/total_target_variance_report/total_target_variance_report.sql b/selling/search_criteria/total_target_variance_report/total_target_variance_report.sql
similarity index 100%
rename from erpnext/selling/search_criteria/total_target_variance_report/total_target_variance_report.sql
rename to selling/search_criteria/total_target_variance_report/total_target_variance_report.sql
diff --git a/erpnext/selling/search_criteria/total_target_variance_report/total_target_variance_report.txt b/selling/search_criteria/total_target_variance_report/total_target_variance_report.txt
similarity index 100%
rename from erpnext/selling/search_criteria/total_target_variance_report/total_target_variance_report.txt
rename to selling/search_criteria/total_target_variance_report/total_target_variance_report.txt
diff --git a/erpnext/selling/search_criteria/variance_report/__init__.py b/selling/search_criteria/variance_report/__init__.py
similarity index 100%
rename from erpnext/selling/search_criteria/variance_report/__init__.py
rename to selling/search_criteria/variance_report/__init__.py
diff --git a/erpnext/selling/search_criteria/variance_report/variance_report.js b/selling/search_criteria/variance_report/variance_report.js
similarity index 100%
rename from erpnext/selling/search_criteria/variance_report/variance_report.js
rename to selling/search_criteria/variance_report/variance_report.js
diff --git a/erpnext/selling/search_criteria/variance_report/variance_report.py b/selling/search_criteria/variance_report/variance_report.py
similarity index 100%
rename from erpnext/selling/search_criteria/variance_report/variance_report.py
rename to selling/search_criteria/variance_report/variance_report.py
diff --git a/erpnext/selling/search_criteria/variance_report/variance_report.sql b/selling/search_criteria/variance_report/variance_report.sql
similarity index 100%
rename from erpnext/selling/search_criteria/variance_report/variance_report.sql
rename to selling/search_criteria/variance_report/variance_report.sql
diff --git a/erpnext/selling/search_criteria/variance_report/variance_report.txt b/selling/search_criteria/variance_report/variance_report.txt
similarity index 100%
rename from erpnext/selling/search_criteria/variance_report/variance_report.txt
rename to selling/search_criteria/variance_report/variance_report.txt
diff --git a/erpnext/setup/__init__.py b/setup/__init__.py
similarity index 100%
rename from erpnext/setup/__init__.py
rename to setup/__init__.py
diff --git a/erpnext/setup/doctype/__init__.py b/setup/doctype/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/__init__.py
rename to setup/doctype/__init__.py
diff --git a/erpnext/setup/doctype/authorization_control/__init__.py b/setup/doctype/authorization_control/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/authorization_control/__init__.py
rename to setup/doctype/authorization_control/__init__.py
diff --git a/erpnext/setup/doctype/authorization_control/authorization_control.py b/setup/doctype/authorization_control/authorization_control.py
similarity index 97%
rename from erpnext/setup/doctype/authorization_control/authorization_control.py
rename to setup/doctype/authorization_control/authorization_control.py
index a49c3f8..a96772c 100644
--- a/erpnext/setup/doctype/authorization_control/authorization_control.py
+++ b/setup/doctype/authorization_control/authorization_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add, make_esc
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add, make_esc
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/setup/doctype/authorization_control/authorization_control.txt b/setup/doctype/authorization_control/authorization_control.txt
similarity index 100%
rename from erpnext/setup/doctype/authorization_control/authorization_control.txt
rename to setup/doctype/authorization_control/authorization_control.txt
diff --git a/erpnext/setup/doctype/authorization_rule/__init__.py b/setup/doctype/authorization_rule/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/authorization_rule/__init__.py
rename to setup/doctype/authorization_rule/__init__.py
diff --git a/erpnext/setup/doctype/authorization_rule/authorization_rule.js b/setup/doctype/authorization_rule/authorization_rule.js
similarity index 100%
rename from erpnext/setup/doctype/authorization_rule/authorization_rule.js
rename to setup/doctype/authorization_rule/authorization_rule.js
diff --git a/erpnext/setup/doctype/authorization_rule/authorization_rule.py b/setup/doctype/authorization_rule/authorization_rule.py
similarity index 95%
rename from erpnext/setup/doctype/authorization_rule/authorization_rule.py
rename to setup/doctype/authorization_rule/authorization_rule.py
index 0d5721b..dbb06ea 100644
--- a/erpnext/setup/doctype/authorization_rule/authorization_rule.py
+++ b/setup/doctype/authorization_rule/authorization_rule.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/setup/doctype/authorization_rule/authorization_rule.txt b/setup/doctype/authorization_rule/authorization_rule.txt
similarity index 100%
rename from erpnext/setup/doctype/authorization_rule/authorization_rule.txt
rename to setup/doctype/authorization_rule/authorization_rule.txt
diff --git a/erpnext/setup/doctype/brand/__init__.py b/setup/doctype/brand/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/brand/__init__.py
rename to setup/doctype/brand/__init__.py
diff --git a/erpnext/setup/doctype/brand/brand.js b/setup/doctype/brand/brand.js
similarity index 100%
rename from erpnext/setup/doctype/brand/brand.js
rename to setup/doctype/brand/brand.js
diff --git a/erpnext/setup/doctype/brand/brand.txt b/setup/doctype/brand/brand.txt
similarity index 100%
rename from erpnext/setup/doctype/brand/brand.txt
rename to setup/doctype/brand/brand.txt
diff --git a/erpnext/setup/doctype/company/__init__.py b/setup/doctype/company/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/company/__init__.py
rename to setup/doctype/company/__init__.py
diff --git a/erpnext/setup/doctype/company/company.js b/setup/doctype/company/company.js
similarity index 100%
rename from erpnext/setup/doctype/company/company.js
rename to setup/doctype/company/company.js
diff --git a/erpnext/setup/doctype/company/company.py b/setup/doctype/company/company.py
similarity index 98%
rename from erpnext/setup/doctype/company/company.py
rename to setup/doctype/company/company.py
index 4386f2e..bd50340 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/setup/doctype/company/company.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/setup/doctype/company/company.txt b/setup/doctype/company/company.txt
similarity index 100%
rename from erpnext/setup/doctype/company/company.txt
rename to setup/doctype/company/company.txt
diff --git a/erpnext/setup/doctype/contact_control/__init__.py b/setup/doctype/contact_control/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/contact_control/__init__.py
rename to setup/doctype/contact_control/__init__.py
diff --git a/erpnext/setup/doctype/contact_control/contact_control.js b/setup/doctype/contact_control/contact_control.js
similarity index 100%
rename from erpnext/setup/doctype/contact_control/contact_control.js
rename to setup/doctype/contact_control/contact_control.js
diff --git a/erpnext/setup/doctype/contact_control/contact_control.py b/setup/doctype/contact_control/contact_control.py
similarity index 92%
rename from erpnext/setup/doctype/contact_control/contact_control.py
rename to setup/doctype/contact_control/contact_control.py
index 09088d1..9aa72eb 100644
--- a/erpnext/setup/doctype/contact_control/contact_control.py
+++ b/setup/doctype/contact_control/contact_control.py
@@ -2,12 +2,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/setup/doctype/contact_control/contact_control.txt b/setup/doctype/contact_control/contact_control.txt
similarity index 100%
rename from erpnext/setup/doctype/contact_control/contact_control.txt
rename to setup/doctype/contact_control/contact_control.txt
diff --git a/erpnext/setup/doctype/country/__init__.py b/setup/doctype/country/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/country/__init__.py
rename to setup/doctype/country/__init__.py
diff --git a/erpnext/setup/doctype/country/country.txt b/setup/doctype/country/country.txt
similarity index 100%
rename from erpnext/setup/doctype/country/country.txt
rename to setup/doctype/country/country.txt
diff --git a/erpnext/setup/doctype/currency/__init__.py b/setup/doctype/currency/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/currency/__init__.py
rename to setup/doctype/currency/__init__.py
diff --git a/erpnext/setup/doctype/currency/currency.js b/setup/doctype/currency/currency.js
similarity index 100%
rename from erpnext/setup/doctype/currency/currency.js
rename to setup/doctype/currency/currency.js
diff --git a/erpnext/setup/doctype/currency/currency.txt b/setup/doctype/currency/currency.txt
similarity index 100%
rename from erpnext/setup/doctype/currency/currency.txt
rename to setup/doctype/currency/currency.txt
diff --git a/erpnext/setup/doctype/customer_group/__init__.py b/setup/doctype/customer_group/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/customer_group/__init__.py
rename to setup/doctype/customer_group/__init__.py
diff --git a/erpnext/setup/doctype/customer_group/customer_group.js b/setup/doctype/customer_group/customer_group.js
similarity index 100%
rename from erpnext/setup/doctype/customer_group/customer_group.js
rename to setup/doctype/customer_group/customer_group.js
diff --git a/erpnext/setup/doctype/customer_group/customer_group.py b/setup/doctype/customer_group/customer_group.py
similarity index 91%
rename from erpnext/setup/doctype/customer_group/customer_group.py
rename to setup/doctype/customer_group/customer_group.py
index 6eb52b5..9e926f9 100644
--- a/erpnext/setup/doctype/customer_group/customer_group.py
+++ b/setup/doctype/customer_group/customer_group.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/setup/doctype/customer_group/customer_group.txt b/setup/doctype/customer_group/customer_group.txt
similarity index 100%
rename from erpnext/setup/doctype/customer_group/customer_group.txt
rename to setup/doctype/customer_group/customer_group.txt
diff --git a/erpnext/setup/doctype/email_digest/__init__.py b/setup/doctype/email_digest/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/email_digest/__init__.py
rename to setup/doctype/email_digest/__init__.py
diff --git a/erpnext/setup/doctype/email_digest/email_digest.css b/setup/doctype/email_digest/email_digest.css
similarity index 100%
rename from erpnext/setup/doctype/email_digest/email_digest.css
rename to setup/doctype/email_digest/email_digest.css
diff --git a/erpnext/setup/doctype/email_digest/email_digest.js b/setup/doctype/email_digest/email_digest.js
similarity index 100%
rename from erpnext/setup/doctype/email_digest/email_digest.js
rename to setup/doctype/email_digest/email_digest.js
diff --git a/erpnext/setup/doctype/email_digest/email_digest.py b/setup/doctype/email_digest/email_digest.py
similarity index 100%
rename from erpnext/setup/doctype/email_digest/email_digest.py
rename to setup/doctype/email_digest/email_digest.py
diff --git a/erpnext/setup/doctype/email_digest/email_digest.txt b/setup/doctype/email_digest/email_digest.txt
similarity index 100%
rename from erpnext/setup/doctype/email_digest/email_digest.txt
rename to setup/doctype/email_digest/email_digest.txt
diff --git a/erpnext/setup/doctype/email_settings/__init__.py b/setup/doctype/email_settings/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/email_settings/__init__.py
rename to setup/doctype/email_settings/__init__.py
diff --git a/erpnext/setup/doctype/email_settings/email_settings.py b/setup/doctype/email_settings/email_settings.py
similarity index 100%
rename from erpnext/setup/doctype/email_settings/email_settings.py
rename to setup/doctype/email_settings/email_settings.py
diff --git a/erpnext/setup/doctype/email_settings/email_settings.txt b/setup/doctype/email_settings/email_settings.txt
similarity index 100%
rename from erpnext/setup/doctype/email_settings/email_settings.txt
rename to setup/doctype/email_settings/email_settings.txt
diff --git a/erpnext/setup/doctype/features_setup/__init__.py b/setup/doctype/features_setup/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/features_setup/__init__.py
rename to setup/doctype/features_setup/__init__.py
diff --git a/erpnext/setup/doctype/features_setup/features_setup.py b/setup/doctype/features_setup/features_setup.py
similarity index 100%
rename from erpnext/setup/doctype/features_setup/features_setup.py
rename to setup/doctype/features_setup/features_setup.py
diff --git a/erpnext/setup/doctype/features_setup/features_setup.txt b/setup/doctype/features_setup/features_setup.txt
similarity index 100%
rename from erpnext/setup/doctype/features_setup/features_setup.txt
rename to setup/doctype/features_setup/features_setup.txt
diff --git a/erpnext/setup/doctype/global_defaults/__init__.py b/setup/doctype/global_defaults/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/global_defaults/__init__.py
rename to setup/doctype/global_defaults/__init__.py
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.js b/setup/doctype/global_defaults/global_defaults.js
similarity index 100%
rename from erpnext/setup/doctype/global_defaults/global_defaults.js
rename to setup/doctype/global_defaults/global_defaults.js
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.py b/setup/doctype/global_defaults/global_defaults.py
similarity index 100%
rename from erpnext/setup/doctype/global_defaults/global_defaults.py
rename to setup/doctype/global_defaults/global_defaults.py
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.txt b/setup/doctype/global_defaults/global_defaults.txt
similarity index 100%
rename from erpnext/setup/doctype/global_defaults/global_defaults.txt
rename to setup/doctype/global_defaults/global_defaults.txt
diff --git a/erpnext/setup/doctype/item_group/__init__.py b/setup/doctype/item_group/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/item_group/__init__.py
rename to setup/doctype/item_group/__init__.py
diff --git a/erpnext/setup/doctype/item_group/item_group.js b/setup/doctype/item_group/item_group.js
similarity index 100%
rename from erpnext/setup/doctype/item_group/item_group.js
rename to setup/doctype/item_group/item_group.js
diff --git a/erpnext/setup/doctype/item_group/item_group.py b/setup/doctype/item_group/item_group.py
similarity index 100%
rename from erpnext/setup/doctype/item_group/item_group.py
rename to setup/doctype/item_group/item_group.py
diff --git a/erpnext/setup/doctype/item_group/item_group.txt b/setup/doctype/item_group/item_group.txt
similarity index 100%
rename from erpnext/setup/doctype/item_group/item_group.txt
rename to setup/doctype/item_group/item_group.txt
diff --git a/erpnext/setup/doctype/market_segment/__init__.py b/setup/doctype/market_segment/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/market_segment/__init__.py
rename to setup/doctype/market_segment/__init__.py
diff --git a/erpnext/setup/doctype/market_segment/market_segment.txt b/setup/doctype/market_segment/market_segment.txt
similarity index 100%
rename from erpnext/setup/doctype/market_segment/market_segment.txt
rename to setup/doctype/market_segment/market_segment.txt
diff --git a/erpnext/setup/doctype/naming_series/__init__.py b/setup/doctype/naming_series/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/naming_series/__init__.py
rename to setup/doctype/naming_series/__init__.py
diff --git a/erpnext/setup/doctype/naming_series/naming_series.js b/setup/doctype/naming_series/naming_series.js
similarity index 100%
rename from erpnext/setup/doctype/naming_series/naming_series.js
rename to setup/doctype/naming_series/naming_series.js
diff --git a/erpnext/setup/doctype/naming_series/naming_series.py b/setup/doctype/naming_series/naming_series.py
similarity index 100%
rename from erpnext/setup/doctype/naming_series/naming_series.py
rename to setup/doctype/naming_series/naming_series.py
diff --git a/erpnext/setup/doctype/naming_series/naming_series.txt b/setup/doctype/naming_series/naming_series.txt
similarity index 100%
rename from erpnext/setup/doctype/naming_series/naming_series.txt
rename to setup/doctype/naming_series/naming_series.txt
diff --git a/erpnext/setup/doctype/naming_series_options/__init__.py b/setup/doctype/naming_series_options/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/naming_series_options/__init__.py
rename to setup/doctype/naming_series_options/__init__.py
diff --git a/erpnext/setup/doctype/naming_series_options/naming_series_options.txt b/setup/doctype/naming_series_options/naming_series_options.txt
similarity index 100%
rename from erpnext/setup/doctype/naming_series_options/naming_series_options.txt
rename to setup/doctype/naming_series_options/naming_series_options.txt
diff --git a/erpnext/setup/doctype/notification_control/__init__.py b/setup/doctype/notification_control/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/notification_control/__init__.py
rename to setup/doctype/notification_control/__init__.py
diff --git a/erpnext/setup/doctype/notification_control/notification_control.js b/setup/doctype/notification_control/notification_control.js
similarity index 100%
rename from erpnext/setup/doctype/notification_control/notification_control.js
rename to setup/doctype/notification_control/notification_control.js
diff --git a/erpnext/setup/doctype/notification_control/notification_control.py b/setup/doctype/notification_control/notification_control.py
similarity index 100%
rename from erpnext/setup/doctype/notification_control/notification_control.py
rename to setup/doctype/notification_control/notification_control.py
diff --git a/erpnext/setup/doctype/notification_control/notification_control.txt b/setup/doctype/notification_control/notification_control.txt
similarity index 100%
rename from erpnext/setup/doctype/notification_control/notification_control.txt
rename to setup/doctype/notification_control/notification_control.txt
diff --git a/erpnext/setup/doctype/period/__init__.py b/setup/doctype/period/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/period/__init__.py
rename to setup/doctype/period/__init__.py
diff --git a/erpnext/setup/doctype/period/period.js b/setup/doctype/period/period.js
similarity index 100%
rename from erpnext/setup/doctype/period/period.js
rename to setup/doctype/period/period.js
diff --git a/erpnext/setup/doctype/period/period.txt b/setup/doctype/period/period.txt
similarity index 100%
rename from erpnext/setup/doctype/period/period.txt
rename to setup/doctype/period/period.txt
diff --git a/erpnext/setup/doctype/period_control/__init__.py b/setup/doctype/period_control/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/period_control/__init__.py
rename to setup/doctype/period_control/__init__.py
diff --git a/erpnext/setup/doctype/period_control/period_control.py b/setup/doctype/period_control/period_control.py
similarity index 91%
rename from erpnext/setup/doctype/period_control/period_control.py
rename to setup/doctype/period_control/period_control.py
index 727664e..a8fb4e8 100644
--- a/erpnext/setup/doctype/period_control/period_control.py
+++ b/setup/doctype/period_control/period_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/setup/doctype/period_control/period_control.txt b/setup/doctype/period_control/period_control.txt
similarity index 100%
rename from erpnext/setup/doctype/period_control/period_control.txt
rename to setup/doctype/period_control/period_control.txt
diff --git a/erpnext/setup/doctype/permission_control/__init__.py b/setup/doctype/permission_control/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/permission_control/__init__.py
rename to setup/doctype/permission_control/__init__.py
diff --git a/erpnext/setup/doctype/permission_control/permission_control.py b/setup/doctype/permission_control/permission_control.py
similarity index 96%
rename from erpnext/setup/doctype/permission_control/permission_control.py
rename to setup/doctype/permission_control/permission_control.py
index 988c954..50b633d 100644
--- a/erpnext/setup/doctype/permission_control/permission_control.py
+++ b/setup/doctype/permission_control/permission_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/setup/doctype/permission_control/permission_control.txt b/setup/doctype/permission_control/permission_control.txt
similarity index 100%
rename from erpnext/setup/doctype/permission_control/permission_control.txt
rename to setup/doctype/permission_control/permission_control.txt
diff --git a/erpnext/setup/doctype/price_list/__init__.py b/setup/doctype/price_list/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/price_list/__init__.py
rename to setup/doctype/price_list/__init__.py
diff --git a/erpnext/setup/doctype/price_list/price_list.js b/setup/doctype/price_list/price_list.js
similarity index 100%
rename from erpnext/setup/doctype/price_list/price_list.js
rename to setup/doctype/price_list/price_list.js
diff --git a/erpnext/setup/doctype/price_list/price_list.py b/setup/doctype/price_list/price_list.py
similarity index 100%
rename from erpnext/setup/doctype/price_list/price_list.py
rename to setup/doctype/price_list/price_list.py
diff --git a/erpnext/setup/doctype/price_list/price_list.txt b/setup/doctype/price_list/price_list.txt
similarity index 100%
rename from erpnext/setup/doctype/price_list/price_list.txt
rename to setup/doctype/price_list/price_list.txt
diff --git a/erpnext/setup/doctype/print_heading/__init__.py b/setup/doctype/print_heading/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/print_heading/__init__.py
rename to setup/doctype/print_heading/__init__.py
diff --git a/erpnext/setup/doctype/print_heading/print_heading.js b/setup/doctype/print_heading/print_heading.js
similarity index 100%
rename from erpnext/setup/doctype/print_heading/print_heading.js
rename to setup/doctype/print_heading/print_heading.js
diff --git a/erpnext/setup/doctype/print_heading/print_heading.py b/setup/doctype/print_heading/print_heading.py
similarity index 85%
rename from erpnext/setup/doctype/print_heading/print_heading.py
rename to setup/doctype/print_heading/print_heading.py
index 04ee345..9cee0b2 100644
--- a/erpnext/setup/doctype/print_heading/print_heading.py
+++ b/setup/doctype/print_heading/print_heading.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/setup/doctype/print_heading/print_heading.txt b/setup/doctype/print_heading/print_heading.txt
similarity index 100%
rename from erpnext/setup/doctype/print_heading/print_heading.txt
rename to setup/doctype/print_heading/print_heading.txt
diff --git a/erpnext/setup/doctype/quotation_lost_reason/__init__.py b/setup/doctype/quotation_lost_reason/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/quotation_lost_reason/__init__.py
rename to setup/doctype/quotation_lost_reason/__init__.py
diff --git a/erpnext/setup/doctype/quotation_lost_reason/quotation_lost_reason.js b/setup/doctype/quotation_lost_reason/quotation_lost_reason.js
similarity index 100%
rename from erpnext/setup/doctype/quotation_lost_reason/quotation_lost_reason.js
rename to setup/doctype/quotation_lost_reason/quotation_lost_reason.js
diff --git a/erpnext/setup/doctype/quotation_lost_reason/quotation_lost_reason.txt b/setup/doctype/quotation_lost_reason/quotation_lost_reason.txt
similarity index 100%
rename from erpnext/setup/doctype/quotation_lost_reason/quotation_lost_reason.txt
rename to setup/doctype/quotation_lost_reason/quotation_lost_reason.txt
diff --git a/erpnext/setup/doctype/sales_browser_control/__init__.py b/setup/doctype/sales_browser_control/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/sales_browser_control/__init__.py
rename to setup/doctype/sales_browser_control/__init__.py
diff --git a/erpnext/setup/doctype/sales_browser_control/sales_browser_control.py b/setup/doctype/sales_browser_control/sales_browser_control.py
similarity index 96%
rename from erpnext/setup/doctype/sales_browser_control/sales_browser_control.py
rename to setup/doctype/sales_browser_control/sales_browser_control.py
index 76ae1ba..d7d6509 100644
--- a/erpnext/setup/doctype/sales_browser_control/sales_browser_control.py
+++ b/setup/doctype/sales_browser_control/sales_browser_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/setup/doctype/sales_browser_control/sales_browser_control.txt b/setup/doctype/sales_browser_control/sales_browser_control.txt
similarity index 100%
rename from erpnext/setup/doctype/sales_browser_control/sales_browser_control.txt
rename to setup/doctype/sales_browser_control/sales_browser_control.txt
diff --git a/erpnext/setup/doctype/sales_partner/__init__.py b/setup/doctype/sales_partner/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/sales_partner/__init__.py
rename to setup/doctype/sales_partner/__init__.py
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.js b/setup/doctype/sales_partner/sales_partner.js
similarity index 98%
rename from erpnext/setup/doctype/sales_partner/sales_partner.js
rename to setup/doctype/sales_partner/sales_partner.js
index 4f2aba2..caf16dc 100644
--- a/erpnext/setup/doctype/sales_partner/sales_partner.js
+++ b/setup/doctype/sales_partner/sales_partner.js
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-wn.require('erpnext/setup/doctype/contact_control/contact_control.js');
+wn.require('app/setup/doctype/contact_control/contact_control.js');
 
 cur_frm.cscript.onload = function(doc,dt,dn){
 	// history doctypes and scripts
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.py b/setup/doctype/sales_partner/sales_partner.py
similarity index 90%
rename from erpnext/setup/doctype/sales_partner/sales_partner.py
rename to setup/doctype/sales_partner/sales_partner.py
index b9bf561..1754b4e 100644
--- a/erpnext/setup/doctype/sales_partner/sales_partner.py
+++ b/setup/doctype/sales_partner/sales_partner.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/setup/doctype/sales_partner/sales_partner.txt b/setup/doctype/sales_partner/sales_partner.txt
similarity index 100%
rename from erpnext/setup/doctype/sales_partner/sales_partner.txt
rename to setup/doctype/sales_partner/sales_partner.txt
diff --git a/erpnext/setup/doctype/sales_person/__init__.py b/setup/doctype/sales_person/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/sales_person/__init__.py
rename to setup/doctype/sales_person/__init__.py
diff --git a/erpnext/setup/doctype/sales_person/sales_person.js b/setup/doctype/sales_person/sales_person.js
similarity index 100%
rename from erpnext/setup/doctype/sales_person/sales_person.js
rename to setup/doctype/sales_person/sales_person.js
diff --git a/erpnext/setup/doctype/sales_person/sales_person.py b/setup/doctype/sales_person/sales_person.py
similarity index 100%
rename from erpnext/setup/doctype/sales_person/sales_person.py
rename to setup/doctype/sales_person/sales_person.py
diff --git a/erpnext/setup/doctype/sales_person/sales_person.txt b/setup/doctype/sales_person/sales_person.txt
similarity index 100%
rename from erpnext/setup/doctype/sales_person/sales_person.txt
rename to setup/doctype/sales_person/sales_person.txt
diff --git a/erpnext/setup/doctype/series_detail/__init__.py b/setup/doctype/series_detail/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/series_detail/__init__.py
rename to setup/doctype/series_detail/__init__.py
diff --git a/erpnext/setup/doctype/series_detail/series_detail.txt b/setup/doctype/series_detail/series_detail.txt
similarity index 100%
rename from erpnext/setup/doctype/series_detail/series_detail.txt
rename to setup/doctype/series_detail/series_detail.txt
diff --git a/erpnext/setup/doctype/setup_control/__init__.py b/setup/doctype/setup_control/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/setup_control/__init__.py
rename to setup/doctype/setup_control/__init__.py
diff --git a/erpnext/setup/doctype/setup_control/setup_control.py b/setup/doctype/setup_control/setup_control.py
similarity index 100%
rename from erpnext/setup/doctype/setup_control/setup_control.py
rename to setup/doctype/setup_control/setup_control.py
diff --git a/erpnext/setup/doctype/setup_control/setup_control.txt b/setup/doctype/setup_control/setup_control.txt
similarity index 100%
rename from erpnext/setup/doctype/setup_control/setup_control.txt
rename to setup/doctype/setup_control/setup_control.txt
diff --git a/erpnext/setup/doctype/sms_parameter/__init__.py b/setup/doctype/sms_parameter/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/sms_parameter/__init__.py
rename to setup/doctype/sms_parameter/__init__.py
diff --git a/erpnext/setup/doctype/sms_parameter/sms_parameter.txt b/setup/doctype/sms_parameter/sms_parameter.txt
similarity index 100%
rename from erpnext/setup/doctype/sms_parameter/sms_parameter.txt
rename to setup/doctype/sms_parameter/sms_parameter.txt
diff --git a/erpnext/setup/doctype/sms_settings/__init__.py b/setup/doctype/sms_settings/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/sms_settings/__init__.py
rename to setup/doctype/sms_settings/__init__.py
diff --git a/erpnext/setup/doctype/sms_settings/sms_settings.txt b/setup/doctype/sms_settings/sms_settings.txt
similarity index 100%
rename from erpnext/setup/doctype/sms_settings/sms_settings.txt
rename to setup/doctype/sms_settings/sms_settings.txt
diff --git a/erpnext/setup/doctype/state/__init__.py b/setup/doctype/state/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/state/__init__.py
rename to setup/doctype/state/__init__.py
diff --git a/erpnext/setup/doctype/state/state.js b/setup/doctype/state/state.js
similarity index 100%
rename from erpnext/setup/doctype/state/state.js
rename to setup/doctype/state/state.js
diff --git a/erpnext/setup/doctype/state/state.txt b/setup/doctype/state/state.txt
similarity index 100%
rename from erpnext/setup/doctype/state/state.txt
rename to setup/doctype/state/state.txt
diff --git a/erpnext/setup/doctype/supplier_type/__init__.py b/setup/doctype/supplier_type/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/supplier_type/__init__.py
rename to setup/doctype/supplier_type/__init__.py
diff --git a/erpnext/setup/doctype/supplier_type/supplier_type.js b/setup/doctype/supplier_type/supplier_type.js
similarity index 100%
rename from erpnext/setup/doctype/supplier_type/supplier_type.js
rename to setup/doctype/supplier_type/supplier_type.js
diff --git a/erpnext/setup/doctype/supplier_type/supplier_type.txt b/setup/doctype/supplier_type/supplier_type.txt
similarity index 100%
rename from erpnext/setup/doctype/supplier_type/supplier_type.txt
rename to setup/doctype/supplier_type/supplier_type.txt
diff --git a/erpnext/setup/doctype/target_detail/__init__.py b/setup/doctype/target_detail/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/target_detail/__init__.py
rename to setup/doctype/target_detail/__init__.py
diff --git a/erpnext/setup/doctype/target_detail/target_detail.txt b/setup/doctype/target_detail/target_detail.txt
similarity index 100%
rename from erpnext/setup/doctype/target_detail/target_detail.txt
rename to setup/doctype/target_detail/target_detail.txt
diff --git a/erpnext/setup/doctype/terms_and_conditions/__init__.py b/setup/doctype/terms_and_conditions/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/terms_and_conditions/__init__.py
rename to setup/doctype/terms_and_conditions/__init__.py
diff --git a/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.js b/setup/doctype/terms_and_conditions/terms_and_conditions.js
similarity index 100%
rename from erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.js
rename to setup/doctype/terms_and_conditions/terms_and_conditions.js
diff --git a/erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.txt b/setup/doctype/terms_and_conditions/terms_and_conditions.txt
similarity index 100%
rename from erpnext/setup/doctype/terms_and_conditions/terms_and_conditions.txt
rename to setup/doctype/terms_and_conditions/terms_and_conditions.txt
diff --git a/erpnext/setup/doctype/territory/__init__.py b/setup/doctype/territory/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/territory/__init__.py
rename to setup/doctype/territory/__init__.py
diff --git a/erpnext/setup/doctype/territory/territory.js b/setup/doctype/territory/territory.js
similarity index 100%
rename from erpnext/setup/doctype/territory/territory.js
rename to setup/doctype/territory/territory.js
diff --git a/erpnext/setup/doctype/territory/territory.py b/setup/doctype/territory/territory.py
similarity index 100%
rename from erpnext/setup/doctype/territory/territory.py
rename to setup/doctype/territory/territory.py
diff --git a/erpnext/setup/doctype/territory/territory.txt b/setup/doctype/territory/territory.txt
similarity index 100%
rename from erpnext/setup/doctype/territory/territory.txt
rename to setup/doctype/territory/territory.txt
diff --git a/erpnext/setup/doctype/uom/__init__.py b/setup/doctype/uom/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/uom/__init__.py
rename to setup/doctype/uom/__init__.py
diff --git a/erpnext/setup/doctype/uom/uom.js b/setup/doctype/uom/uom.js
similarity index 100%
rename from erpnext/setup/doctype/uom/uom.js
rename to setup/doctype/uom/uom.js
diff --git a/erpnext/setup/doctype/uom/uom.txt b/setup/doctype/uom/uom.txt
similarity index 100%
rename from erpnext/setup/doctype/uom/uom.txt
rename to setup/doctype/uom/uom.txt
diff --git a/erpnext/setup/doctype/warehouse_type/__init__.py b/setup/doctype/warehouse_type/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/warehouse_type/__init__.py
rename to setup/doctype/warehouse_type/__init__.py
diff --git a/erpnext/setup/doctype/warehouse_type/warehouse_type.js b/setup/doctype/warehouse_type/warehouse_type.js
similarity index 100%
rename from erpnext/setup/doctype/warehouse_type/warehouse_type.js
rename to setup/doctype/warehouse_type/warehouse_type.js
diff --git a/erpnext/setup/doctype/warehouse_type/warehouse_type.txt b/setup/doctype/warehouse_type/warehouse_type.txt
similarity index 100%
rename from erpnext/setup/doctype/warehouse_type/warehouse_type.txt
rename to setup/doctype/warehouse_type/warehouse_type.txt
diff --git a/erpnext/setup/doctype/workflow_action_detail/__init__.py b/setup/doctype/workflow_action_detail/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/workflow_action_detail/__init__.py
rename to setup/doctype/workflow_action_detail/__init__.py
diff --git a/erpnext/setup/doctype/workflow_action_detail/workflow_action_detail.txt b/setup/doctype/workflow_action_detail/workflow_action_detail.txt
similarity index 100%
rename from erpnext/setup/doctype/workflow_action_detail/workflow_action_detail.txt
rename to setup/doctype/workflow_action_detail/workflow_action_detail.txt
diff --git a/erpnext/setup/doctype/workflow_engine/__init__.py b/setup/doctype/workflow_engine/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/workflow_engine/__init__.py
rename to setup/doctype/workflow_engine/__init__.py
diff --git a/erpnext/setup/doctype/workflow_engine/workflow_engine.py b/setup/doctype/workflow_engine/workflow_engine.py
similarity index 90%
rename from erpnext/setup/doctype/workflow_engine/workflow_engine.py
rename to setup/doctype/workflow_engine/workflow_engine.py
index 82152b9..c71da70 100644
--- a/erpnext/setup/doctype/workflow_engine/workflow_engine.py
+++ b/setup/doctype/workflow_engine/workflow_engine.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/setup/doctype/workflow_engine/workflow_engine.txt b/setup/doctype/workflow_engine/workflow_engine.txt
similarity index 100%
rename from erpnext/setup/doctype/workflow_engine/workflow_engine.txt
rename to setup/doctype/workflow_engine/workflow_engine.txt
diff --git a/erpnext/setup/doctype/workflow_rule/__init__.py b/setup/doctype/workflow_rule/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/workflow_rule/__init__.py
rename to setup/doctype/workflow_rule/__init__.py
diff --git a/erpnext/setup/doctype/workflow_rule/workflow_rule.js b/setup/doctype/workflow_rule/workflow_rule.js
similarity index 100%
rename from erpnext/setup/doctype/workflow_rule/workflow_rule.js
rename to setup/doctype/workflow_rule/workflow_rule.js
diff --git a/erpnext/setup/doctype/workflow_rule/workflow_rule.py b/setup/doctype/workflow_rule/workflow_rule.py
similarity index 97%
rename from erpnext/setup/doctype/workflow_rule/workflow_rule.py
rename to setup/doctype/workflow_rule/workflow_rule.py
index ca09f2f..1f46d15 100644
--- a/erpnext/setup/doctype/workflow_rule/workflow_rule.py
+++ b/setup/doctype/workflow_rule/workflow_rule.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/setup/doctype/workflow_rule/workflow_rule.txt b/setup/doctype/workflow_rule/workflow_rule.txt
similarity index 100%
rename from erpnext/setup/doctype/workflow_rule/workflow_rule.txt
rename to setup/doctype/workflow_rule/workflow_rule.txt
diff --git a/erpnext/setup/doctype/workflow_rule_detail/__init__.py b/setup/doctype/workflow_rule_detail/__init__.py
similarity index 100%
rename from erpnext/setup/doctype/workflow_rule_detail/__init__.py
rename to setup/doctype/workflow_rule_detail/__init__.py
diff --git a/erpnext/setup/doctype/workflow_rule_detail/workflow_rule_detail.txt b/setup/doctype/workflow_rule_detail/workflow_rule_detail.txt
similarity index 100%
rename from erpnext/setup/doctype/workflow_rule_detail/workflow_rule_detail.txt
rename to setup/doctype/workflow_rule_detail/workflow_rule_detail.txt
diff --git a/erpnext/setup/page/__init__.py b/setup/page/__init__.py
similarity index 100%
rename from erpnext/setup/page/__init__.py
rename to setup/page/__init__.py
diff --git a/erpnext/setup/page/modules_setup/__init__.py b/setup/page/modules_setup/__init__.py
similarity index 100%
rename from erpnext/setup/page/modules_setup/__init__.py
rename to setup/page/modules_setup/__init__.py
diff --git a/erpnext/setup/page/modules_setup/modules_setup.css b/setup/page/modules_setup/modules_setup.css
similarity index 100%
rename from erpnext/setup/page/modules_setup/modules_setup.css
rename to setup/page/modules_setup/modules_setup.css
diff --git a/erpnext/setup/page/modules_setup/modules_setup.html b/setup/page/modules_setup/modules_setup.html
similarity index 100%
rename from erpnext/setup/page/modules_setup/modules_setup.html
rename to setup/page/modules_setup/modules_setup.html
diff --git a/erpnext/setup/page/modules_setup/modules_setup.js b/setup/page/modules_setup/modules_setup.js
similarity index 96%
rename from erpnext/setup/page/modules_setup/modules_setup.js
rename to setup/page/modules_setup/modules_setup.js
index 79f4ebc..71fed93 100644
--- a/erpnext/setup/page/modules_setup/modules_setup.js
+++ b/setup/page/modules_setup/modules_setup.js
@@ -1,4 +1,4 @@
-wn.require('js/lib/jquery/jquery.ui.sortable.js');
+wn.require('lib/js/lib/jquery/jquery.ui.sortable.js');
 
 $.extend(wn.pages.modules_setup, {
 	modules: ['Activity', 'Accounts', 'Selling', 'Buying', 'Stock', 'Production', 'Projects', 
diff --git a/erpnext/setup/page/modules_setup/modules_setup.py b/setup/page/modules_setup/modules_setup.py
similarity index 100%
rename from erpnext/setup/page/modules_setup/modules_setup.py
rename to setup/page/modules_setup/modules_setup.py
diff --git a/erpnext/setup/page/modules_setup/modules_setup.txt b/setup/page/modules_setup/modules_setup.txt
similarity index 100%
rename from erpnext/setup/page/modules_setup/modules_setup.txt
rename to setup/page/modules_setup/modules_setup.txt
diff --git a/erpnext/setup/page/permission_engine/__init__.py b/setup/page/permission_engine/__init__.py
similarity index 100%
rename from erpnext/setup/page/permission_engine/__init__.py
rename to setup/page/permission_engine/__init__.py
diff --git a/erpnext/setup/page/permission_engine/permission_engine.html b/setup/page/permission_engine/permission_engine.html
similarity index 100%
rename from erpnext/setup/page/permission_engine/permission_engine.html
rename to setup/page/permission_engine/permission_engine.html
diff --git a/erpnext/setup/page/permission_engine/permission_engine.js b/setup/page/permission_engine/permission_engine.js
similarity index 100%
rename from erpnext/setup/page/permission_engine/permission_engine.js
rename to setup/page/permission_engine/permission_engine.js
diff --git a/erpnext/setup/page/permission_engine/permission_engine.txt b/setup/page/permission_engine/permission_engine.txt
similarity index 100%
rename from erpnext/setup/page/permission_engine/permission_engine.txt
rename to setup/page/permission_engine/permission_engine.txt
diff --git a/erpnext/setup/page/setup/__init__.py b/setup/page/setup/__init__.py
similarity index 100%
rename from erpnext/setup/page/setup/__init__.py
rename to setup/page/setup/__init__.py
diff --git a/erpnext/setup/page/setup/setup.css b/setup/page/setup/setup.css
similarity index 100%
rename from erpnext/setup/page/setup/setup.css
rename to setup/page/setup/setup.css
diff --git a/erpnext/setup/page/setup/setup.html b/setup/page/setup/setup.html
similarity index 100%
rename from erpnext/setup/page/setup/setup.html
rename to setup/page/setup/setup.html
diff --git a/erpnext/setup/page/setup/setup.js b/setup/page/setup/setup.js
similarity index 100%
rename from erpnext/setup/page/setup/setup.js
rename to setup/page/setup/setup.js
diff --git a/erpnext/setup/page/setup/setup.txt b/setup/page/setup/setup.txt
similarity index 100%
rename from erpnext/setup/page/setup/setup.txt
rename to setup/page/setup/setup.txt
diff --git a/erpnext/setup/page/webforms/__init__.py b/setup/page/webforms/__init__.py
similarity index 100%
rename from erpnext/setup/page/webforms/__init__.py
rename to setup/page/webforms/__init__.py
diff --git a/erpnext/setup/page/webforms/webforms.html b/setup/page/webforms/webforms.html
similarity index 100%
rename from erpnext/setup/page/webforms/webforms.html
rename to setup/page/webforms/webforms.html
diff --git a/erpnext/setup/page/webforms/webforms.js b/setup/page/webforms/webforms.js
similarity index 100%
rename from erpnext/setup/page/webforms/webforms.js
rename to setup/page/webforms/webforms.js
diff --git a/erpnext/setup/page/webforms/webforms.txt b/setup/page/webforms/webforms.txt
similarity index 100%
rename from erpnext/setup/page/webforms/webforms.txt
rename to setup/page/webforms/webforms.txt
diff --git a/erpnext/setup/page/webforms/webforms_static.html b/setup/page/webforms/webforms_static.html
similarity index 100%
rename from erpnext/setup/page/webforms/webforms_static.html
rename to setup/page/webforms/webforms_static.html
diff --git a/erpnext/startup/__init__.py b/startup/__init__.py
similarity index 100%
rename from erpnext/startup/__init__.py
rename to startup/__init__.py
diff --git a/erpnext/startup/event_handlers.py b/startup/event_handlers.py
similarity index 100%
rename from erpnext/startup/event_handlers.py
rename to startup/event_handlers.py
diff --git a/erpnext/startup/js/feature_setup.js b/startup/js/feature_setup.js
similarity index 100%
rename from erpnext/startup/js/feature_setup.js
rename to startup/js/feature_setup.js
diff --git a/erpnext/startup/js/modules.js b/startup/js/modules.js
similarity index 100%
rename from erpnext/startup/js/modules.js
rename to startup/js/modules.js
diff --git a/erpnext/startup/js/toolbar.js b/startup/js/toolbar.js
similarity index 100%
rename from erpnext/startup/js/toolbar.js
rename to startup/js/toolbar.js
diff --git a/erpnext/startup/report_data_map.py b/startup/report_data_map.py
similarity index 100%
rename from erpnext/startup/report_data_map.py
rename to startup/report_data_map.py
diff --git a/erpnext/startup/schedule_handlers.py b/startup/schedule_handlers.py
similarity index 100%
rename from erpnext/startup/schedule_handlers.py
rename to startup/schedule_handlers.py
diff --git a/erpnext/startup/startup.css b/startup/startup.css
similarity index 100%
rename from erpnext/startup/startup.css
rename to startup/startup.css
diff --git a/erpnext/startup/startup.js b/startup/startup.js
similarity index 98%
rename from erpnext/startup/startup.js
rename to startup/startup.js
index 7fb48c1..9a6a526 100644
--- a/erpnext/startup/startup.js
+++ b/startup/startup.js
@@ -76,7 +76,7 @@
 
 		// complete registration
 		if(in_list(user_roles,'System Manager') && (wn.boot.setup_complete=='No')) { 
-			wn.require("js/app/complete_setup.js");
+			wn.require("app/js/complete_setup.js");
 			erpnext.complete_setup.show(); 
 		}
 		if(wn.boot.expires_on && in_list(user_roles, 'System Manager')) {
diff --git a/erpnext/startup/startup.py b/startup/startup.py
similarity index 100%
rename from erpnext/startup/startup.py
rename to startup/startup.py
diff --git a/erpnext/stock/DocType Mapper/Delivery Note-Packing Slip/Delivery Note-Packing Slip.txt b/stock/DocType Mapper/Delivery Note-Packing Slip/Delivery Note-Packing Slip.txt
similarity index 100%
rename from erpnext/stock/DocType Mapper/Delivery Note-Packing Slip/Delivery Note-Packing Slip.txt
rename to stock/DocType Mapper/Delivery Note-Packing Slip/Delivery Note-Packing Slip.txt
diff --git a/erpnext/stock/DocType Mapper/Project-Delivery Note/Project-Delivery Note.txt b/stock/DocType Mapper/Project-Delivery Note/Project-Delivery Note.txt
similarity index 100%
rename from erpnext/stock/DocType Mapper/Project-Delivery Note/Project-Delivery Note.txt
rename to stock/DocType Mapper/Project-Delivery Note/Project-Delivery Note.txt
diff --git a/erpnext/stock/DocType Mapper/Purchase Order-Purchase Receipt/Purchase Order-Purchase Receipt.txt b/stock/DocType Mapper/Purchase Order-Purchase Receipt/Purchase Order-Purchase Receipt.txt
similarity index 100%
rename from erpnext/stock/DocType Mapper/Purchase Order-Purchase Receipt/Purchase Order-Purchase Receipt.txt
rename to stock/DocType Mapper/Purchase Order-Purchase Receipt/Purchase Order-Purchase Receipt.txt
diff --git a/erpnext/stock/DocType Mapper/Sales Invoice-Delivery Note/Sales Invoice-Delivery Note.txt b/stock/DocType Mapper/Sales Invoice-Delivery Note/Sales Invoice-Delivery Note.txt
similarity index 100%
rename from erpnext/stock/DocType Mapper/Sales Invoice-Delivery Note/Sales Invoice-Delivery Note.txt
rename to stock/DocType Mapper/Sales Invoice-Delivery Note/Sales Invoice-Delivery Note.txt
diff --git a/erpnext/stock/DocType Mapper/Sales Order-Delivery Note/Sales Order-Delivery Note.txt b/stock/DocType Mapper/Sales Order-Delivery Note/Sales Order-Delivery Note.txt
similarity index 100%
rename from erpnext/stock/DocType Mapper/Sales Order-Delivery Note/Sales Order-Delivery Note.txt
rename to stock/DocType Mapper/Sales Order-Delivery Note/Sales Order-Delivery Note.txt
diff --git a/erpnext/stock/Item Group/All Item Groups/All Item Groups.txt b/stock/Item Group/All Item Groups/All Item Groups.txt
similarity index 100%
rename from erpnext/stock/Item Group/All Item Groups/All Item Groups.txt
rename to stock/Item Group/All Item Groups/All Item Groups.txt
diff --git a/erpnext/stock/Item Group/Default/Default.txt b/stock/Item Group/Default/Default.txt
similarity index 100%
rename from erpnext/stock/Item Group/Default/Default.txt
rename to stock/Item Group/Default/Default.txt
diff --git a/erpnext/stock/Print Format/Delivery Note Classic/Delivery Note Classic.txt b/stock/Print Format/Delivery Note Classic/Delivery Note Classic.txt
similarity index 100%
rename from erpnext/stock/Print Format/Delivery Note Classic/Delivery Note Classic.txt
rename to stock/Print Format/Delivery Note Classic/Delivery Note Classic.txt
diff --git a/erpnext/stock/Print Format/Delivery Note Modern/Delivery Note Modern.txt b/stock/Print Format/Delivery Note Modern/Delivery Note Modern.txt
similarity index 100%
rename from erpnext/stock/Print Format/Delivery Note Modern/Delivery Note Modern.txt
rename to stock/Print Format/Delivery Note Modern/Delivery Note Modern.txt
diff --git a/erpnext/stock/Print Format/Delivery Note Packing List Wise/Delivery Note Packing List Wise.txt b/stock/Print Format/Delivery Note Packing List Wise/Delivery Note Packing List Wise.txt
similarity index 100%
rename from erpnext/stock/Print Format/Delivery Note Packing List Wise/Delivery Note Packing List Wise.txt
rename to stock/Print Format/Delivery Note Packing List Wise/Delivery Note Packing List Wise.txt
diff --git a/erpnext/stock/Print Format/Delivery Note Spartan/Delivery Note Spartan.txt b/stock/Print Format/Delivery Note Spartan/Delivery Note Spartan.txt
similarity index 100%
rename from erpnext/stock/Print Format/Delivery Note Spartan/Delivery Note Spartan.txt
rename to stock/Print Format/Delivery Note Spartan/Delivery Note Spartan.txt
diff --git a/erpnext/stock/Print Format/Purchase Receipt Format/Purchase Receipt Format.txt b/stock/Print Format/Purchase Receipt Format/Purchase Receipt Format.txt
similarity index 100%
rename from erpnext/stock/Print Format/Purchase Receipt Format/Purchase Receipt Format.txt
rename to stock/Print Format/Purchase Receipt Format/Purchase Receipt Format.txt
diff --git a/erpnext/stock/__init__.py b/stock/__init__.py
similarity index 100%
rename from erpnext/stock/__init__.py
rename to stock/__init__.py
diff --git a/erpnext/stock/doctype/__init__.py b/stock/doctype/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/__init__.py
rename to stock/doctype/__init__.py
diff --git a/erpnext/stock/doctype/batch/__init__.py b/stock/doctype/batch/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/batch/__init__.py
rename to stock/doctype/batch/__init__.py
diff --git a/erpnext/stock/doctype/batch/batch.txt b/stock/doctype/batch/batch.txt
similarity index 100%
rename from erpnext/stock/doctype/batch/batch.txt
rename to stock/doctype/batch/batch.txt
diff --git a/erpnext/stock/doctype/batch/batch_list.js b/stock/doctype/batch/batch_list.js
similarity index 100%
rename from erpnext/stock/doctype/batch/batch_list.js
rename to stock/doctype/batch/batch_list.js
diff --git a/erpnext/stock/doctype/bin/__init__.py b/stock/doctype/bin/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/bin/__init__.py
rename to stock/doctype/bin/__init__.py
diff --git a/erpnext/stock/doctype/bin/bin.py b/stock/doctype/bin/bin.py
similarity index 98%
rename from erpnext/stock/doctype/bin/bin.py
rename to stock/doctype/bin/bin.py
index 6f25496..648d581 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/stock/doctype/bin/bin.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 
 set = webnotes.conn.set
diff --git a/erpnext/stock/doctype/bin/bin.txt b/stock/doctype/bin/bin.txt
similarity index 100%
rename from erpnext/stock/doctype/bin/bin.txt
rename to stock/doctype/bin/bin.txt
diff --git a/erpnext/stock/doctype/delivery_note/__init__.py b/stock/doctype/delivery_note/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/delivery_note/__init__.py
rename to stock/doctype/delivery_note/__init__.py
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/stock/doctype/delivery_note/delivery_note.js
similarity index 97%
rename from erpnext/stock/doctype/delivery_note/delivery_note.js
rename to stock/doctype/delivery_note/delivery_note.js
index 5242f24..03743e2 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/stock/doctype/delivery_note/delivery_note.js
@@ -20,10 +20,10 @@
 cur_frm.cscript.other_fname = "other_charges";
 cur_frm.cscript.sales_team_fname = "sales_team";
 
-wn.require('erpnext/selling/doctype/sales_common/sales_common.js');
-wn.require('erpnext/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
-wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
-wn.require('erpnext/setup/doctype/notification_control/notification_control.js');
+wn.require('app/selling/doctype/sales_common/sales_common.js');
+wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
+wn.require('app/utilities/doctype/sms_control/sms_control.js');
+wn.require('app/setup/doctype/notification_control/notification_control.js');
 
 // ONLOAD
 // ================================================================================================
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py
similarity index 98%
rename from erpnext/stock/doctype/delivery_note/delivery_note.py
rename to stock/doctype/delivery_note/delivery_note.py
index 06f14d4..1e0116f 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/stock/doctype/delivery_note/delivery_note.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.txt b/stock/doctype/delivery_note/delivery_note.txt
similarity index 100%
rename from erpnext/stock/doctype/delivery_note/delivery_note.txt
rename to stock/doctype/delivery_note/delivery_note.txt
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note_list.js b/stock/doctype/delivery_note/delivery_note_list.js
similarity index 100%
rename from erpnext/stock/doctype/delivery_note/delivery_note_list.js
rename to stock/doctype/delivery_note/delivery_note_list.js
diff --git a/erpnext/stock/doctype/delivery_note_item/__init__.py b/stock/doctype/delivery_note_item/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/delivery_note_item/__init__.py
rename to stock/doctype/delivery_note_item/__init__.py
diff --git a/erpnext/stock/doctype/delivery_note_item/delivery_note_item.txt b/stock/doctype/delivery_note_item/delivery_note_item.txt
similarity index 100%
rename from erpnext/stock/doctype/delivery_note_item/delivery_note_item.txt
rename to stock/doctype/delivery_note_item/delivery_note_item.txt
diff --git a/erpnext/stock/doctype/delivery_note_packing_item/__init__.py b/stock/doctype/delivery_note_packing_item/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/delivery_note_packing_item/__init__.py
rename to stock/doctype/delivery_note_packing_item/__init__.py
diff --git a/erpnext/stock/doctype/delivery_note_packing_item/delivery_note_packing_item.txt b/stock/doctype/delivery_note_packing_item/delivery_note_packing_item.txt
similarity index 100%
rename from erpnext/stock/doctype/delivery_note_packing_item/delivery_note_packing_item.txt
rename to stock/doctype/delivery_note_packing_item/delivery_note_packing_item.txt
diff --git a/erpnext/stock/doctype/item/__init__.py b/stock/doctype/item/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/item/__init__.py
rename to stock/doctype/item/__init__.py
diff --git a/erpnext/stock/doctype/item/item.js b/stock/doctype/item/item.js
similarity index 100%
rename from erpnext/stock/doctype/item/item.js
rename to stock/doctype/item/item.js
diff --git a/erpnext/stock/doctype/item/item.py b/stock/doctype/item/item.py
similarity index 97%
rename from erpnext/stock/doctype/item/item.py
rename to stock/doctype/item/item.py
index 6a0f200..16fbf3c 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/stock/doctype/item/item.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/stock/doctype/item/item.txt b/stock/doctype/item/item.txt
similarity index 100%
rename from erpnext/stock/doctype/item/item.txt
rename to stock/doctype/item/item.txt
diff --git a/erpnext/stock/doctype/item/item_list.js b/stock/doctype/item/item_list.js
similarity index 100%
rename from erpnext/stock/doctype/item/item_list.js
rename to stock/doctype/item/item_list.js
diff --git a/erpnext/stock/doctype/item/test_item.py b/stock/doctype/item/test_item.py
similarity index 100%
rename from erpnext/stock/doctype/item/test_item.py
rename to stock/doctype/item/test_item.py
diff --git a/erpnext/stock/doctype/item_customer_detail/__init__.py b/stock/doctype/item_customer_detail/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/item_customer_detail/__init__.py
rename to stock/doctype/item_customer_detail/__init__.py
diff --git a/erpnext/stock/doctype/item_customer_detail/item_customer_detail.txt b/stock/doctype/item_customer_detail/item_customer_detail.txt
similarity index 100%
rename from erpnext/stock/doctype/item_customer_detail/item_customer_detail.txt
rename to stock/doctype/item_customer_detail/item_customer_detail.txt
diff --git a/erpnext/stock/doctype/item_price/__init__.py b/stock/doctype/item_price/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/item_price/__init__.py
rename to stock/doctype/item_price/__init__.py
diff --git a/erpnext/stock/doctype/item_price/item_price.txt b/stock/doctype/item_price/item_price.txt
similarity index 100%
rename from erpnext/stock/doctype/item_price/item_price.txt
rename to stock/doctype/item_price/item_price.txt
diff --git a/erpnext/stock/doctype/item_quality_inspection_parameter/__init__.py b/stock/doctype/item_quality_inspection_parameter/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/item_quality_inspection_parameter/__init__.py
rename to stock/doctype/item_quality_inspection_parameter/__init__.py
diff --git a/erpnext/stock/doctype/item_quality_inspection_parameter/item_quality_inspection_parameter.txt b/stock/doctype/item_quality_inspection_parameter/item_quality_inspection_parameter.txt
similarity index 100%
rename from erpnext/stock/doctype/item_quality_inspection_parameter/item_quality_inspection_parameter.txt
rename to stock/doctype/item_quality_inspection_parameter/item_quality_inspection_parameter.txt
diff --git a/erpnext/stock/doctype/item_supplier/__init__.py b/stock/doctype/item_supplier/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/item_supplier/__init__.py
rename to stock/doctype/item_supplier/__init__.py
diff --git a/erpnext/stock/doctype/item_supplier/item_supplier.txt b/stock/doctype/item_supplier/item_supplier.txt
similarity index 100%
rename from erpnext/stock/doctype/item_supplier/item_supplier.txt
rename to stock/doctype/item_supplier/item_supplier.txt
diff --git a/erpnext/stock/doctype/item_tax/__init__.py b/stock/doctype/item_tax/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/item_tax/__init__.py
rename to stock/doctype/item_tax/__init__.py
diff --git a/erpnext/stock/doctype/item_tax/item_tax.txt b/stock/doctype/item_tax/item_tax.txt
similarity index 100%
rename from erpnext/stock/doctype/item_tax/item_tax.txt
rename to stock/doctype/item_tax/item_tax.txt
diff --git a/erpnext/stock/doctype/landed_cost_item/__init__.py b/stock/doctype/landed_cost_item/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/landed_cost_item/__init__.py
rename to stock/doctype/landed_cost_item/__init__.py
diff --git a/erpnext/stock/doctype/landed_cost_item/landed_cost_item.txt b/stock/doctype/landed_cost_item/landed_cost_item.txt
similarity index 100%
rename from erpnext/stock/doctype/landed_cost_item/landed_cost_item.txt
rename to stock/doctype/landed_cost_item/landed_cost_item.txt
diff --git a/erpnext/stock/doctype/landed_cost_master/__init__.py b/stock/doctype/landed_cost_master/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/landed_cost_master/__init__.py
rename to stock/doctype/landed_cost_master/__init__.py
diff --git a/erpnext/stock/doctype/landed_cost_master/landed_cost_master.js b/stock/doctype/landed_cost_master/landed_cost_master.js
similarity index 100%
rename from erpnext/stock/doctype/landed_cost_master/landed_cost_master.js
rename to stock/doctype/landed_cost_master/landed_cost_master.js
diff --git a/erpnext/stock/doctype/landed_cost_master/landed_cost_master.txt b/stock/doctype/landed_cost_master/landed_cost_master.txt
similarity index 100%
rename from erpnext/stock/doctype/landed_cost_master/landed_cost_master.txt
rename to stock/doctype/landed_cost_master/landed_cost_master.txt
diff --git a/erpnext/stock/doctype/landed_cost_master_detail/__init__.py b/stock/doctype/landed_cost_master_detail/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/landed_cost_master_detail/__init__.py
rename to stock/doctype/landed_cost_master_detail/__init__.py
diff --git a/erpnext/stock/doctype/landed_cost_master_detail/landed_cost_master_detail.txt b/stock/doctype/landed_cost_master_detail/landed_cost_master_detail.txt
similarity index 100%
rename from erpnext/stock/doctype/landed_cost_master_detail/landed_cost_master_detail.txt
rename to stock/doctype/landed_cost_master_detail/landed_cost_master_detail.txt
diff --git a/erpnext/stock/doctype/landed_cost_purchase_receipt/__init__.py b/stock/doctype/landed_cost_purchase_receipt/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/landed_cost_purchase_receipt/__init__.py
rename to stock/doctype/landed_cost_purchase_receipt/__init__.py
diff --git a/erpnext/stock/doctype/landed_cost_purchase_receipt/landed_cost_purchase_receipt.txt b/stock/doctype/landed_cost_purchase_receipt/landed_cost_purchase_receipt.txt
similarity index 100%
rename from erpnext/stock/doctype/landed_cost_purchase_receipt/landed_cost_purchase_receipt.txt
rename to stock/doctype/landed_cost_purchase_receipt/landed_cost_purchase_receipt.txt
diff --git a/erpnext/stock/doctype/landed_cost_wizard/__init__.py b/stock/doctype/landed_cost_wizard/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/landed_cost_wizard/__init__.py
rename to stock/doctype/landed_cost_wizard/__init__.py
diff --git a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.js b/stock/doctype/landed_cost_wizard/landed_cost_wizard.js
similarity index 100%
rename from erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.js
rename to stock/doctype/landed_cost_wizard/landed_cost_wizard.js
diff --git a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py b/stock/doctype/landed_cost_wizard/landed_cost_wizard.py
similarity index 100%
rename from erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.py
rename to stock/doctype/landed_cost_wizard/landed_cost_wizard.py
diff --git a/erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.txt b/stock/doctype/landed_cost_wizard/landed_cost_wizard.txt
similarity index 100%
rename from erpnext/stock/doctype/landed_cost_wizard/landed_cost_wizard.txt
rename to stock/doctype/landed_cost_wizard/landed_cost_wizard.txt
diff --git a/erpnext/stock/doctype/packing_slip/__init__.py b/stock/doctype/packing_slip/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/packing_slip/__init__.py
rename to stock/doctype/packing_slip/__init__.py
diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.js b/stock/doctype/packing_slip/packing_slip.js
similarity index 100%
rename from erpnext/stock/doctype/packing_slip/packing_slip.js
rename to stock/doctype/packing_slip/packing_slip.js
diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.py b/stock/doctype/packing_slip/packing_slip.py
similarity index 100%
rename from erpnext/stock/doctype/packing_slip/packing_slip.py
rename to stock/doctype/packing_slip/packing_slip.py
diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.txt b/stock/doctype/packing_slip/packing_slip.txt
similarity index 100%
rename from erpnext/stock/doctype/packing_slip/packing_slip.txt
rename to stock/doctype/packing_slip/packing_slip.txt
diff --git a/erpnext/stock/doctype/packing_slip_item/__init__.py b/stock/doctype/packing_slip_item/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/packing_slip_item/__init__.py
rename to stock/doctype/packing_slip_item/__init__.py
diff --git a/erpnext/stock/doctype/packing_slip_item/packing_slip_item.py b/stock/doctype/packing_slip_item/packing_slip_item.py
similarity index 100%
rename from erpnext/stock/doctype/packing_slip_item/packing_slip_item.py
rename to stock/doctype/packing_slip_item/packing_slip_item.py
diff --git a/erpnext/stock/doctype/packing_slip_item/packing_slip_item.txt b/stock/doctype/packing_slip_item/packing_slip_item.txt
similarity index 100%
rename from erpnext/stock/doctype/packing_slip_item/packing_slip_item.txt
rename to stock/doctype/packing_slip_item/packing_slip_item.txt
diff --git a/erpnext/stock/doctype/purchase_receipt/__init__.py b/stock/doctype/purchase_receipt/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/purchase_receipt/__init__.py
rename to stock/doctype/purchase_receipt/__init__.py
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js b/stock/doctype/purchase_receipt/purchase_receipt.js
similarity index 97%
rename from erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
rename to stock/doctype/purchase_receipt/purchase_receipt.js
index eb048ea..9cb13f4 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -18,10 +18,10 @@
 cur_frm.cscript.fname = "purchase_receipt_details";
 cur_frm.cscript.other_fname = "purchase_tax_details";
 
-wn.require('erpnext/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
-wn.require('erpnext/buying/doctype/purchase_common/purchase_common.js');
-wn.require('erpnext/utilities/doctype/sms_control/sms_control.js');
-wn.require('erpnext/setup/doctype/notification_control/notification_control.js');
+wn.require('app/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
+wn.require('app/buying/doctype/purchase_common/purchase_common.js');
+wn.require('app/utilities/doctype/sms_control/sms_control.js');
+wn.require('app/setup/doctype/notification_control/notification_control.js');
 
 //========================== On Load ================================================================
 cur_frm.cscript.onload = function(doc, cdt, cdn) {
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/stock/doctype/purchase_receipt/purchase_receipt.py
similarity index 98%
rename from erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
rename to stock/doctype/purchase_receipt/purchase_receipt.py
index 2be671e..20eed3b 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.txt b/stock/doctype/purchase_receipt/purchase_receipt.txt
similarity index 100%
rename from erpnext/stock/doctype/purchase_receipt/purchase_receipt.txt
rename to stock/doctype/purchase_receipt/purchase_receipt.txt
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js b/stock/doctype/purchase_receipt/purchase_receipt_list.js
similarity index 100%
rename from erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js
rename to stock/doctype/purchase_receipt/purchase_receipt_list.js
diff --git a/erpnext/stock/doctype/purchase_receipt_item/__init__.py b/stock/doctype/purchase_receipt_item/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/purchase_receipt_item/__init__.py
rename to stock/doctype/purchase_receipt_item/__init__.py
diff --git a/erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.txt b/stock/doctype/purchase_receipt_item/purchase_receipt_item.txt
similarity index 100%
rename from erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.txt
rename to stock/doctype/purchase_receipt_item/purchase_receipt_item.txt
diff --git a/erpnext/stock/doctype/sales_and_purchase_return_tool/__init__.py b/stock/doctype/sales_and_purchase_return_tool/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/sales_and_purchase_return_tool/__init__.py
rename to stock/doctype/sales_and_purchase_return_tool/__init__.py
diff --git a/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.js b/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.js
similarity index 100%
rename from erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.js
rename to stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.js
diff --git a/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py b/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py
similarity index 93%
rename from erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py
rename to stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py
index d8ff604..9ecc4c7 100644
--- a/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py
+++ b/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt b/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt
similarity index 100%
rename from erpnext/stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt
rename to stock/doctype/sales_and_purchase_return_tool/sales_and_purchase_return_tool.txt
diff --git a/erpnext/stock/doctype/sales_bom/__init__.py b/stock/doctype/sales_bom/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/sales_bom/__init__.py
rename to stock/doctype/sales_bom/__init__.py
diff --git a/erpnext/stock/doctype/sales_bom/sales_bom.js b/stock/doctype/sales_bom/sales_bom.js
similarity index 100%
rename from erpnext/stock/doctype/sales_bom/sales_bom.js
rename to stock/doctype/sales_bom/sales_bom.js
diff --git a/erpnext/stock/doctype/sales_bom/sales_bom.py b/stock/doctype/sales_bom/sales_bom.py
similarity index 100%
rename from erpnext/stock/doctype/sales_bom/sales_bom.py
rename to stock/doctype/sales_bom/sales_bom.py
diff --git a/erpnext/stock/doctype/sales_bom/sales_bom.txt b/stock/doctype/sales_bom/sales_bom.txt
similarity index 100%
rename from erpnext/stock/doctype/sales_bom/sales_bom.txt
rename to stock/doctype/sales_bom/sales_bom.txt
diff --git a/erpnext/stock/doctype/sales_bom_item/__init__.py b/stock/doctype/sales_bom_item/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/sales_bom_item/__init__.py
rename to stock/doctype/sales_bom_item/__init__.py
diff --git a/erpnext/stock/doctype/sales_bom_item/sales_bom_item.txt b/stock/doctype/sales_bom_item/sales_bom_item.txt
similarity index 100%
rename from erpnext/stock/doctype/sales_bom_item/sales_bom_item.txt
rename to stock/doctype/sales_bom_item/sales_bom_item.txt
diff --git a/erpnext/stock/doctype/serial_no/__init__.py b/stock/doctype/serial_no/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/serial_no/__init__.py
rename to stock/doctype/serial_no/__init__.py
diff --git a/erpnext/stock/doctype/serial_no/serial_no.js b/stock/doctype/serial_no/serial_no.js
similarity index 100%
rename from erpnext/stock/doctype/serial_no/serial_no.js
rename to stock/doctype/serial_no/serial_no.js
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/stock/doctype/serial_no/serial_no.py
similarity index 100%
rename from erpnext/stock/doctype/serial_no/serial_no.py
rename to stock/doctype/serial_no/serial_no.py
diff --git a/erpnext/stock/doctype/serial_no/serial_no.txt b/stock/doctype/serial_no/serial_no.txt
similarity index 100%
rename from erpnext/stock/doctype/serial_no/serial_no.txt
rename to stock/doctype/serial_no/serial_no.txt
diff --git a/erpnext/stock/doctype/serial_no/serial_no_list.js b/stock/doctype/serial_no/serial_no_list.js
similarity index 100%
rename from erpnext/stock/doctype/serial_no/serial_no_list.js
rename to stock/doctype/serial_no/serial_no_list.js
diff --git a/erpnext/stock/doctype/stock_entry/__init__.py b/stock/doctype/stock_entry/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/stock_entry/__init__.py
rename to stock/doctype/stock_entry/__init__.py
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/stock/doctype/stock_entry/stock_entry.js
similarity index 100%
rename from erpnext/stock/doctype/stock_entry/stock_entry.js
rename to stock/doctype/stock_entry/stock_entry.js
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py
similarity index 98%
rename from erpnext/stock/doctype/stock_entry/stock_entry.py
rename to stock/doctype/stock_entry/stock_entry.py
index 5fa9eb6..6d3afb1 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists, delete_doc
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.txt b/stock/doctype/stock_entry/stock_entry.txt
similarity index 100%
rename from erpnext/stock/doctype/stock_entry/stock_entry.txt
rename to stock/doctype/stock_entry/stock_entry.txt
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry_list.js b/stock/doctype/stock_entry/stock_entry_list.js
similarity index 100%
rename from erpnext/stock/doctype/stock_entry/stock_entry_list.js
rename to stock/doctype/stock_entry/stock_entry_list.js
diff --git a/erpnext/stock/doctype/stock_entry_detail/__init__.py b/stock/doctype/stock_entry_detail/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/stock_entry_detail/__init__.py
rename to stock/doctype/stock_entry_detail/__init__.py
diff --git a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.txt b/stock/doctype/stock_entry_detail/stock_entry_detail.txt
similarity index 100%
rename from erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.txt
rename to stock/doctype/stock_entry_detail/stock_entry_detail.txt
diff --git a/erpnext/stock/doctype/stock_ledger/__init__.py b/stock/doctype/stock_ledger/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/stock_ledger/__init__.py
rename to stock/doctype/stock_ledger/__init__.py
diff --git a/erpnext/stock/doctype/stock_ledger/stock_ledger.py b/stock/doctype/stock_ledger/stock_ledger.py
similarity index 97%
rename from erpnext/stock/doctype/stock_ledger/stock_ledger.py
rename to stock/doctype/stock_ledger/stock_ledger.py
index 8b51b5c..e8a279b 100644
--- a/erpnext/stock/doctype/stock_ledger/stock_ledger.py
+++ b/stock/doctype/stock_ledger/stock_ledger.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/stock/doctype/stock_ledger/stock_ledger.txt b/stock/doctype/stock_ledger/stock_ledger.txt
similarity index 100%
rename from erpnext/stock/doctype/stock_ledger/stock_ledger.txt
rename to stock/doctype/stock_ledger/stock_ledger.txt
diff --git a/erpnext/stock/doctype/stock_ledger_entry/__init__.py b/stock/doctype/stock_ledger_entry/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/stock_ledger_entry/__init__.py
rename to stock/doctype/stock_ledger_entry/__init__.py
diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
similarity index 100%
rename from erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
rename to stock/doctype/stock_ledger_entry/stock_ledger_entry.py
diff --git a/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.txt b/stock/doctype/stock_ledger_entry/stock_ledger_entry.txt
similarity index 100%
rename from erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.txt
rename to stock/doctype/stock_ledger_entry/stock_ledger_entry.txt
diff --git a/erpnext/stock/doctype/stock_reconciliation/__init__.py b/stock/doctype/stock_reconciliation/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/stock_reconciliation/__init__.py
rename to stock/doctype/stock_reconciliation/__init__.py
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js b/stock/doctype/stock_reconciliation/stock_reconciliation.js
similarity index 100%
rename from erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.js
rename to stock/doctype/stock_reconciliation/stock_reconciliation.js
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/stock/doctype/stock_reconciliation/stock_reconciliation.py
similarity index 100%
rename from erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
rename to stock/doctype/stock_reconciliation/stock_reconciliation.py
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.txt b/stock/doctype/stock_reconciliation/stock_reconciliation.txt
similarity index 100%
rename from erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.txt
rename to stock/doctype/stock_reconciliation/stock_reconciliation.txt
diff --git a/erpnext/stock/doctype/stock_uom_replace_utility/__init__.py b/stock/doctype/stock_uom_replace_utility/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/stock_uom_replace_utility/__init__.py
rename to stock/doctype/stock_uom_replace_utility/__init__.py
diff --git a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.js b/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.js
similarity index 100%
rename from erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.js
rename to stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.js
diff --git a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py b/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
similarity index 94%
rename from erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
rename to stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
index b128094..dd2e18a 100644
--- a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
+++ b/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.txt b/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.txt
similarity index 100%
rename from erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.txt
rename to stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.txt
diff --git a/erpnext/stock/doctype/uom_conversion_detail/__init__.py b/stock/doctype/uom_conversion_detail/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/uom_conversion_detail/__init__.py
rename to stock/doctype/uom_conversion_detail/__init__.py
diff --git a/erpnext/stock/doctype/uom_conversion_detail/uom_conversion_detail.txt b/stock/doctype/uom_conversion_detail/uom_conversion_detail.txt
similarity index 100%
rename from erpnext/stock/doctype/uom_conversion_detail/uom_conversion_detail.txt
rename to stock/doctype/uom_conversion_detail/uom_conversion_detail.txt
diff --git a/erpnext/stock/doctype/valuation_control/__init__.py b/stock/doctype/valuation_control/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/valuation_control/__init__.py
rename to stock/doctype/valuation_control/__init__.py
diff --git a/erpnext/stock/doctype/valuation_control/valuation_control.py b/stock/doctype/valuation_control/valuation_control.py
similarity index 100%
rename from erpnext/stock/doctype/valuation_control/valuation_control.py
rename to stock/doctype/valuation_control/valuation_control.py
diff --git a/erpnext/stock/doctype/valuation_control/valuation_control.py~ b/stock/doctype/valuation_control/valuation_control.py~
similarity index 100%
rename from erpnext/stock/doctype/valuation_control/valuation_control.py~
rename to stock/doctype/valuation_control/valuation_control.py~
diff --git a/erpnext/stock/doctype/valuation_control/valuation_control.txt b/stock/doctype/valuation_control/valuation_control.txt
similarity index 100%
rename from erpnext/stock/doctype/valuation_control/valuation_control.txt
rename to stock/doctype/valuation_control/valuation_control.txt
diff --git a/erpnext/stock/doctype/warehouse/__init__.py b/stock/doctype/warehouse/__init__.py
similarity index 100%
rename from erpnext/stock/doctype/warehouse/__init__.py
rename to stock/doctype/warehouse/__init__.py
diff --git a/erpnext/stock/doctype/warehouse/warehouse.js b/stock/doctype/warehouse/warehouse.js
similarity index 100%
rename from erpnext/stock/doctype/warehouse/warehouse.js
rename to stock/doctype/warehouse/warehouse.js
diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/stock/doctype/warehouse/warehouse.py
similarity index 94%
rename from erpnext/stock/doctype/warehouse/warehouse.py
rename to stock/doctype/warehouse/warehouse.py
index 1766dad..6e7883d 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.py
+++ b/stock/doctype/warehouse/warehouse.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/stock/doctype/warehouse/warehouse.txt b/stock/doctype/warehouse/warehouse.txt
similarity index 100%
rename from erpnext/stock/doctype/warehouse/warehouse.txt
rename to stock/doctype/warehouse/warehouse.txt
diff --git a/erpnext/stock/doctype/warehouse/warehouse_list.js b/stock/doctype/warehouse/warehouse_list.js
similarity index 100%
rename from erpnext/stock/doctype/warehouse/warehouse_list.js
rename to stock/doctype/warehouse/warehouse_list.js
diff --git a/erpnext/stock/page/__init__.py b/stock/page/__init__.py
similarity index 100%
rename from erpnext/stock/page/__init__.py
rename to stock/page/__init__.py
diff --git a/erpnext/stock/page/stock_ageing/__init__.py b/stock/page/stock_ageing/__init__.py
similarity index 100%
rename from erpnext/stock/page/stock_ageing/__init__.py
rename to stock/page/stock_ageing/__init__.py
diff --git a/erpnext/stock/page/stock_ageing/stock_ageing.js b/stock/page/stock_ageing/stock_ageing.js
similarity index 98%
rename from erpnext/stock/page/stock_ageing/stock_ageing.js
rename to stock/page/stock_ageing/stock_ageing.js
index 39c2613..3295700 100644
--- a/erpnext/stock/page/stock_ageing/stock_ageing.js
+++ b/stock/page/stock_ageing/stock_ageing.js
@@ -26,7 +26,7 @@
 	
 }
 
-wn.require("js/app/stock_grid_report.js");
+wn.require("app/js/stock_grid_report.js");
 
 erpnext.StockAgeing = erpnext.StockGridReport.extend({
 	init: function(wrapper) {
diff --git a/erpnext/stock/page/stock_ageing/stock_ageing.txt b/stock/page/stock_ageing/stock_ageing.txt
similarity index 100%
rename from erpnext/stock/page/stock_ageing/stock_ageing.txt
rename to stock/page/stock_ageing/stock_ageing.txt
diff --git a/erpnext/stock/page/stock_analytics/__init__.py b/stock/page/stock_analytics/__init__.py
similarity index 100%
rename from erpnext/stock/page/stock_analytics/__init__.py
rename to stock/page/stock_analytics/__init__.py
diff --git a/erpnext/stock/page/stock_analytics/stock_analytics.js b/stock/page/stock_analytics/stock_analytics.js
similarity index 98%
rename from erpnext/stock/page/stock_analytics/stock_analytics.js
rename to stock/page/stock_analytics/stock_analytics.js
index 1989043..9b0309f 100644
--- a/erpnext/stock/page/stock_analytics/stock_analytics.js
+++ b/stock/page/stock_analytics/stock_analytics.js
@@ -24,7 +24,7 @@
 	new erpnext.StockAnalytics(wrapper);
 }
 
-wn.require("js/app/stock_grid_report.js");
+wn.require("app/js/stock_grid_report.js");
 
 erpnext.StockAnalytics = erpnext.StockGridReport.extend({
 	init: function(wrapper) {
diff --git a/erpnext/stock/page/stock_analytics/stock_analytics.txt b/stock/page/stock_analytics/stock_analytics.txt
similarity index 100%
rename from erpnext/stock/page/stock_analytics/stock_analytics.txt
rename to stock/page/stock_analytics/stock_analytics.txt
diff --git a/erpnext/stock/page/stock_home/__init__.py b/stock/page/stock_home/__init__.py
similarity index 100%
rename from erpnext/stock/page/stock_home/__init__.py
rename to stock/page/stock_home/__init__.py
diff --git a/erpnext/stock/page/stock_home/stock_home.html b/stock/page/stock_home/stock_home.html
similarity index 100%
rename from erpnext/stock/page/stock_home/stock_home.html
rename to stock/page/stock_home/stock_home.html
diff --git a/erpnext/stock/page/stock_home/stock_home.js b/stock/page/stock_home/stock_home.js
similarity index 100%
rename from erpnext/stock/page/stock_home/stock_home.js
rename to stock/page/stock_home/stock_home.js
diff --git a/erpnext/stock/page/stock_home/stock_home.txt b/stock/page/stock_home/stock_home.txt
similarity index 100%
rename from erpnext/stock/page/stock_home/stock_home.txt
rename to stock/page/stock_home/stock_home.txt
diff --git a/erpnext/stock/page/stock_ledger/__init__.py b/stock/page/stock_ledger/__init__.py
similarity index 100%
rename from erpnext/stock/page/stock_ledger/__init__.py
rename to stock/page/stock_ledger/__init__.py
diff --git a/erpnext/stock/page/stock_ledger/stock_ledger.js b/stock/page/stock_ledger/stock_ledger.js
similarity index 99%
rename from erpnext/stock/page/stock_ledger/stock_ledger.js
rename to stock/page/stock_ledger/stock_ledger.js
index 3a9020f..08350e6 100644
--- a/erpnext/stock/page/stock_ledger/stock_ledger.js
+++ b/stock/page/stock_ledger/stock_ledger.js
@@ -24,7 +24,7 @@
 	new erpnext.StockLedger(wrapper);
 }
 
-wn.require("js/app/stock_grid_report.js");
+wn.require("app/js/stock_grid_report.js");
 
 erpnext.StockLedger = erpnext.StockGridReport.extend({
 	init: function(wrapper) {
diff --git a/erpnext/stock/page/stock_ledger/stock_ledger.txt b/stock/page/stock_ledger/stock_ledger.txt
similarity index 100%
rename from erpnext/stock/page/stock_ledger/stock_ledger.txt
rename to stock/page/stock_ledger/stock_ledger.txt
diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.txt b/stock/report/stock_ledger/stock_ledger.txt
similarity index 100%
rename from erpnext/stock/report/stock_ledger/stock_ledger.txt
rename to stock/report/stock_ledger/stock_ledger.txt
diff --git a/erpnext/stock/search_criteria/__init__.py b/stock/search_criteria/__init__.py
similarity index 100%
rename from erpnext/stock/search_criteria/__init__.py
rename to stock/search_criteria/__init__.py
diff --git a/erpnext/stock/search_criteria/itemwise_price_list/__init__.py b/stock/search_criteria/itemwise_price_list/__init__.py
similarity index 100%
rename from erpnext/stock/search_criteria/itemwise_price_list/__init__.py
rename to stock/search_criteria/itemwise_price_list/__init__.py
diff --git a/erpnext/stock/search_criteria/itemwise_price_list/itemwise_price_list.js b/stock/search_criteria/itemwise_price_list/itemwise_price_list.js
similarity index 100%
rename from erpnext/stock/search_criteria/itemwise_price_list/itemwise_price_list.js
rename to stock/search_criteria/itemwise_price_list/itemwise_price_list.js
diff --git a/erpnext/stock/search_criteria/itemwise_price_list/itemwise_price_list.txt b/stock/search_criteria/itemwise_price_list/itemwise_price_list.txt
similarity index 100%
rename from erpnext/stock/search_criteria/itemwise_price_list/itemwise_price_list.txt
rename to stock/search_criteria/itemwise_price_list/itemwise_price_list.txt
diff --git a/erpnext/stock/search_criteria/itemwise_receipt_details/__init__.py b/stock/search_criteria/itemwise_receipt_details/__init__.py
similarity index 100%
rename from erpnext/stock/search_criteria/itemwise_receipt_details/__init__.py
rename to stock/search_criteria/itemwise_receipt_details/__init__.py
diff --git a/erpnext/stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.js b/stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.js
similarity index 100%
rename from erpnext/stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.js
rename to stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.js
diff --git a/erpnext/stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.txt b/stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.txt
similarity index 100%
rename from erpnext/stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.txt
rename to stock/search_criteria/itemwise_receipt_details/itemwise_receipt_details.txt
diff --git a/erpnext/stock/search_criteria/shortage_to_purchase_request/__init__.py b/stock/search_criteria/shortage_to_purchase_request/__init__.py
similarity index 100%
rename from erpnext/stock/search_criteria/shortage_to_purchase_request/__init__.py
rename to stock/search_criteria/shortage_to_purchase_request/__init__.py
diff --git a/erpnext/stock/search_criteria/shortage_to_purchase_request/shortage_to_purchase_request.txt b/stock/search_criteria/shortage_to_purchase_request/shortage_to_purchase_request.txt
similarity index 100%
rename from erpnext/stock/search_criteria/shortage_to_purchase_request/shortage_to_purchase_request.txt
rename to stock/search_criteria/shortage_to_purchase_request/shortage_to_purchase_request.txt
diff --git a/erpnext/stock/search_criteria/stock_aging_report/__init__.py b/stock/search_criteria/stock_aging_report/__init__.py
similarity index 100%
rename from erpnext/stock/search_criteria/stock_aging_report/__init__.py
rename to stock/search_criteria/stock_aging_report/__init__.py
diff --git a/erpnext/stock/search_criteria/stock_aging_report/stock_aging_report.js b/stock/search_criteria/stock_aging_report/stock_aging_report.js
similarity index 100%
rename from erpnext/stock/search_criteria/stock_aging_report/stock_aging_report.js
rename to stock/search_criteria/stock_aging_report/stock_aging_report.js
diff --git a/erpnext/stock/search_criteria/stock_aging_report/stock_aging_report.py b/stock/search_criteria/stock_aging_report/stock_aging_report.py
similarity index 100%
rename from erpnext/stock/search_criteria/stock_aging_report/stock_aging_report.py
rename to stock/search_criteria/stock_aging_report/stock_aging_report.py
diff --git a/erpnext/stock/search_criteria/stock_aging_report/stock_aging_report.txt b/stock/search_criteria/stock_aging_report/stock_aging_report.txt
similarity index 100%
rename from erpnext/stock/search_criteria/stock_aging_report/stock_aging_report.txt
rename to stock/search_criteria/stock_aging_report/stock_aging_report.txt
diff --git a/erpnext/stock/search_criteria/stock_ledger/__init__.py b/stock/search_criteria/stock_ledger/__init__.py
similarity index 100%
rename from erpnext/stock/search_criteria/stock_ledger/__init__.py
rename to stock/search_criteria/stock_ledger/__init__.py
diff --git a/erpnext/stock/search_criteria/stock_ledger/stock_ledger.js b/stock/search_criteria/stock_ledger/stock_ledger.js
similarity index 100%
rename from erpnext/stock/search_criteria/stock_ledger/stock_ledger.js
rename to stock/search_criteria/stock_ledger/stock_ledger.js
diff --git a/erpnext/stock/search_criteria/stock_ledger/stock_ledger.txt b/stock/search_criteria/stock_ledger/stock_ledger.txt
similarity index 100%
rename from erpnext/stock/search_criteria/stock_ledger/stock_ledger.txt
rename to stock/search_criteria/stock_ledger/stock_ledger.txt
diff --git a/erpnext/stock/search_criteria/stock_level/__init__.py b/stock/search_criteria/stock_level/__init__.py
similarity index 100%
rename from erpnext/stock/search_criteria/stock_level/__init__.py
rename to stock/search_criteria/stock_level/__init__.py
diff --git a/erpnext/stock/search_criteria/stock_level/stock_level.js b/stock/search_criteria/stock_level/stock_level.js
similarity index 100%
rename from erpnext/stock/search_criteria/stock_level/stock_level.js
rename to stock/search_criteria/stock_level/stock_level.js
diff --git a/erpnext/stock/search_criteria/stock_level/stock_level.py b/stock/search_criteria/stock_level/stock_level.py
similarity index 100%
rename from erpnext/stock/search_criteria/stock_level/stock_level.py
rename to stock/search_criteria/stock_level/stock_level.py
diff --git a/erpnext/stock/search_criteria/stock_level/stock_level.txt b/stock/search_criteria/stock_level/stock_level.txt
similarity index 100%
rename from erpnext/stock/search_criteria/stock_level/stock_level.txt
rename to stock/search_criteria/stock_level/stock_level.txt
diff --git a/erpnext/stock/search_criteria/stock_report/__init__.py b/stock/search_criteria/stock_report/__init__.py
similarity index 100%
rename from erpnext/stock/search_criteria/stock_report/__init__.py
rename to stock/search_criteria/stock_report/__init__.py
diff --git a/erpnext/stock/search_criteria/stock_report/stock_report.js b/stock/search_criteria/stock_report/stock_report.js
similarity index 100%
rename from erpnext/stock/search_criteria/stock_report/stock_report.js
rename to stock/search_criteria/stock_report/stock_report.js
diff --git a/erpnext/stock/search_criteria/stock_report/stock_report.py b/stock/search_criteria/stock_report/stock_report.py
similarity index 100%
rename from erpnext/stock/search_criteria/stock_report/stock_report.py
rename to stock/search_criteria/stock_report/stock_report.py
diff --git a/erpnext/stock/search_criteria/stock_report/stock_report.txt b/stock/search_criteria/stock_report/stock_report.txt
similarity index 100%
rename from erpnext/stock/search_criteria/stock_report/stock_report.txt
rename to stock/search_criteria/stock_report/stock_report.txt
diff --git a/erpnext/stock/tests.py b/stock/tests.py
similarity index 100%
rename from erpnext/stock/tests.py
rename to stock/tests.py
diff --git a/erpnext/support/DocType Mapper/Customer Issue-Maintenance Visit/Customer Issue-Maintenance Visit.txt b/support/DocType Mapper/Customer Issue-Maintenance Visit/Customer Issue-Maintenance Visit.txt
similarity index 100%
rename from erpnext/support/DocType Mapper/Customer Issue-Maintenance Visit/Customer Issue-Maintenance Visit.txt
rename to support/DocType Mapper/Customer Issue-Maintenance Visit/Customer Issue-Maintenance Visit.txt
diff --git a/erpnext/support/DocType Mapper/Maintenance Schedule-Maintenance Visit/Maintenance Schedule-Maintenance Visit.txt b/support/DocType Mapper/Maintenance Schedule-Maintenance Visit/Maintenance Schedule-Maintenance Visit.txt
similarity index 100%
rename from erpnext/support/DocType Mapper/Maintenance Schedule-Maintenance Visit/Maintenance Schedule-Maintenance Visit.txt
rename to support/DocType Mapper/Maintenance Schedule-Maintenance Visit/Maintenance Schedule-Maintenance Visit.txt
diff --git a/erpnext/support/DocType Mapper/Sales Order-Maintenance Schedule/Sales Order-Maintenance Schedule.txt b/support/DocType Mapper/Sales Order-Maintenance Schedule/Sales Order-Maintenance Schedule.txt
similarity index 100%
rename from erpnext/support/DocType Mapper/Sales Order-Maintenance Schedule/Sales Order-Maintenance Schedule.txt
rename to support/DocType Mapper/Sales Order-Maintenance Schedule/Sales Order-Maintenance Schedule.txt
diff --git a/erpnext/support/DocType Mapper/Sales Order-Maintenance Visit/Sales Order-Maintenance Visit.txt b/support/DocType Mapper/Sales Order-Maintenance Visit/Sales Order-Maintenance Visit.txt
similarity index 100%
rename from erpnext/support/DocType Mapper/Sales Order-Maintenance Visit/Sales Order-Maintenance Visit.txt
rename to support/DocType Mapper/Sales Order-Maintenance Visit/Sales Order-Maintenance Visit.txt
diff --git a/erpnext/support/__init__.py b/support/__init__.py
similarity index 100%
rename from erpnext/support/__init__.py
rename to support/__init__.py
diff --git a/erpnext/support/doctype/__init__.py b/support/doctype/__init__.py
similarity index 100%
rename from erpnext/support/doctype/__init__.py
rename to support/doctype/__init__.py
diff --git a/erpnext/support/doctype/communication/__init__.py b/support/doctype/communication/__init__.py
similarity index 100%
rename from erpnext/support/doctype/communication/__init__.py
rename to support/doctype/communication/__init__.py
diff --git a/erpnext/support/doctype/communication/communication.js b/support/doctype/communication/communication.js
similarity index 100%
rename from erpnext/support/doctype/communication/communication.js
rename to support/doctype/communication/communication.js
diff --git a/erpnext/support/doctype/communication/communication.py b/support/doctype/communication/communication.py
similarity index 100%
rename from erpnext/support/doctype/communication/communication.py
rename to support/doctype/communication/communication.py
diff --git a/erpnext/support/doctype/communication/communication.txt b/support/doctype/communication/communication.txt
similarity index 100%
rename from erpnext/support/doctype/communication/communication.txt
rename to support/doctype/communication/communication.txt
diff --git a/erpnext/support/doctype/communication/communication_list.js b/support/doctype/communication/communication_list.js
similarity index 100%
rename from erpnext/support/doctype/communication/communication_list.js
rename to support/doctype/communication/communication_list.js
diff --git a/erpnext/support/doctype/customer_issue/__init__.py b/support/doctype/customer_issue/__init__.py
similarity index 100%
rename from erpnext/support/doctype/customer_issue/__init__.py
rename to support/doctype/customer_issue/__init__.py
diff --git a/erpnext/support/doctype/customer_issue/customer_issue.js b/support/doctype/customer_issue/customer_issue.js
similarity index 100%
rename from erpnext/support/doctype/customer_issue/customer_issue.js
rename to support/doctype/customer_issue/customer_issue.js
diff --git a/erpnext/support/doctype/customer_issue/customer_issue.py b/support/doctype/customer_issue/customer_issue.py
similarity index 91%
rename from erpnext/support/doctype/customer_issue/customer_issue.py
rename to support/doctype/customer_issue/customer_issue.py
index 1876169..d6e29e1 100644
--- a/erpnext/support/doctype/customer_issue/customer_issue.py
+++ b/support/doctype/customer_issue/customer_issue.py
@@ -19,12 +19,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/support/doctype/customer_issue/customer_issue.txt b/support/doctype/customer_issue/customer_issue.txt
similarity index 100%
rename from erpnext/support/doctype/customer_issue/customer_issue.txt
rename to support/doctype/customer_issue/customer_issue.txt
diff --git a/erpnext/support/doctype/customer_issue/customer_issue_list.js b/support/doctype/customer_issue/customer_issue_list.js
similarity index 100%
rename from erpnext/support/doctype/customer_issue/customer_issue_list.js
rename to support/doctype/customer_issue/customer_issue_list.js
diff --git a/erpnext/support/doctype/maintenance_schedule/__init__.py b/support/doctype/maintenance_schedule/__init__.py
similarity index 100%
rename from erpnext/support/doctype/maintenance_schedule/__init__.py
rename to support/doctype/maintenance_schedule/__init__.py
diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js b/support/doctype/maintenance_schedule/maintenance_schedule.js
similarity index 100%
rename from erpnext/support/doctype/maintenance_schedule/maintenance_schedule.js
rename to support/doctype/maintenance_schedule/maintenance_schedule.js
diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py b/support/doctype/maintenance_schedule/maintenance_schedule.py
similarity index 97%
rename from erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
rename to support/doctype/maintenance_schedule/maintenance_schedule.py
index 75300e1..39424f0 100644
--- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
+++ b/support/doctype/maintenance_schedule/maintenance_schedule.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.txt b/support/doctype/maintenance_schedule/maintenance_schedule.txt
similarity index 100%
rename from erpnext/support/doctype/maintenance_schedule/maintenance_schedule.txt
rename to support/doctype/maintenance_schedule/maintenance_schedule.txt
diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule_list.js b/support/doctype/maintenance_schedule/maintenance_schedule_list.js
similarity index 100%
rename from erpnext/support/doctype/maintenance_schedule/maintenance_schedule_list.js
rename to support/doctype/maintenance_schedule/maintenance_schedule_list.js
diff --git a/erpnext/support/doctype/maintenance_schedule_detail/__init__.py b/support/doctype/maintenance_schedule_detail/__init__.py
similarity index 100%
rename from erpnext/support/doctype/maintenance_schedule_detail/__init__.py
rename to support/doctype/maintenance_schedule_detail/__init__.py
diff --git a/erpnext/support/doctype/maintenance_schedule_detail/maintenance_schedule_detail.txt b/support/doctype/maintenance_schedule_detail/maintenance_schedule_detail.txt
similarity index 100%
rename from erpnext/support/doctype/maintenance_schedule_detail/maintenance_schedule_detail.txt
rename to support/doctype/maintenance_schedule_detail/maintenance_schedule_detail.txt
diff --git a/erpnext/support/doctype/maintenance_schedule_item/__init__.py b/support/doctype/maintenance_schedule_item/__init__.py
similarity index 100%
rename from erpnext/support/doctype/maintenance_schedule_item/__init__.py
rename to support/doctype/maintenance_schedule_item/__init__.py
diff --git a/erpnext/support/doctype/maintenance_schedule_item/maintenance_schedule_item.txt b/support/doctype/maintenance_schedule_item/maintenance_schedule_item.txt
similarity index 100%
rename from erpnext/support/doctype/maintenance_schedule_item/maintenance_schedule_item.txt
rename to support/doctype/maintenance_schedule_item/maintenance_schedule_item.txt
diff --git a/erpnext/support/doctype/maintenance_visit/__init__.py b/support/doctype/maintenance_visit/__init__.py
similarity index 100%
rename from erpnext/support/doctype/maintenance_visit/__init__.py
rename to support/doctype/maintenance_visit/__init__.py
diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit.js b/support/doctype/maintenance_visit/maintenance_visit.js
similarity index 100%
rename from erpnext/support/doctype/maintenance_visit/maintenance_visit.js
rename to support/doctype/maintenance_visit/maintenance_visit.js
diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit.py b/support/doctype/maintenance_visit/maintenance_visit.py
similarity index 96%
rename from erpnext/support/doctype/maintenance_visit/maintenance_visit.py
rename to support/doctype/maintenance_visit/maintenance_visit.py
index 89fc2f0..6c545530 100644
--- a/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
+++ b/support/doctype/maintenance_visit/maintenance_visit.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit.txt b/support/doctype/maintenance_visit/maintenance_visit.txt
similarity index 100%
rename from erpnext/support/doctype/maintenance_visit/maintenance_visit.txt
rename to support/doctype/maintenance_visit/maintenance_visit.txt
diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit_list.js b/support/doctype/maintenance_visit/maintenance_visit_list.js
similarity index 100%
rename from erpnext/support/doctype/maintenance_visit/maintenance_visit_list.js
rename to support/doctype/maintenance_visit/maintenance_visit_list.js
diff --git a/erpnext/support/doctype/maintenance_visit_purpose/__init__.py b/support/doctype/maintenance_visit_purpose/__init__.py
similarity index 100%
rename from erpnext/support/doctype/maintenance_visit_purpose/__init__.py
rename to support/doctype/maintenance_visit_purpose/__init__.py
diff --git a/erpnext/support/doctype/maintenance_visit_purpose/maintenance_visit_purpose.txt b/support/doctype/maintenance_visit_purpose/maintenance_visit_purpose.txt
similarity index 100%
rename from erpnext/support/doctype/maintenance_visit_purpose/maintenance_visit_purpose.txt
rename to support/doctype/maintenance_visit_purpose/maintenance_visit_purpose.txt
diff --git a/erpnext/support/doctype/newsletter/__init__.py b/support/doctype/newsletter/__init__.py
similarity index 100%
rename from erpnext/support/doctype/newsletter/__init__.py
rename to support/doctype/newsletter/__init__.py
diff --git a/erpnext/support/doctype/newsletter/newsletter.js b/support/doctype/newsletter/newsletter.js
similarity index 100%
rename from erpnext/support/doctype/newsletter/newsletter.js
rename to support/doctype/newsletter/newsletter.js
diff --git a/erpnext/support/doctype/newsletter/newsletter.py b/support/doctype/newsletter/newsletter.py
similarity index 100%
rename from erpnext/support/doctype/newsletter/newsletter.py
rename to support/doctype/newsletter/newsletter.py
diff --git a/erpnext/support/doctype/newsletter/newsletter.txt b/support/doctype/newsletter/newsletter.txt
similarity index 100%
rename from erpnext/support/doctype/newsletter/newsletter.txt
rename to support/doctype/newsletter/newsletter.txt
diff --git a/erpnext/support/doctype/newsletter/newsletter_list.js b/support/doctype/newsletter/newsletter_list.js
similarity index 100%
rename from erpnext/support/doctype/newsletter/newsletter_list.js
rename to support/doctype/newsletter/newsletter_list.js
diff --git a/erpnext/support/doctype/support_ticket/__init__.py b/support/doctype/support_ticket/__init__.py
similarity index 100%
rename from erpnext/support/doctype/support_ticket/__init__.py
rename to support/doctype/support_ticket/__init__.py
diff --git a/erpnext/support/doctype/support_ticket/support_ticket.css b/support/doctype/support_ticket/support_ticket.css
similarity index 100%
rename from erpnext/support/doctype/support_ticket/support_ticket.css
rename to support/doctype/support_ticket/support_ticket.css
diff --git a/erpnext/support/doctype/support_ticket/support_ticket.js b/support/doctype/support_ticket/support_ticket.js
similarity index 100%
rename from erpnext/support/doctype/support_ticket/support_ticket.js
rename to support/doctype/support_ticket/support_ticket.js
diff --git a/erpnext/support/doctype/support_ticket/support_ticket.py b/support/doctype/support_ticket/support_ticket.py
similarity index 100%
rename from erpnext/support/doctype/support_ticket/support_ticket.py
rename to support/doctype/support_ticket/support_ticket.py
diff --git a/erpnext/support/doctype/support_ticket/support_ticket.txt b/support/doctype/support_ticket/support_ticket.txt
similarity index 100%
rename from erpnext/support/doctype/support_ticket/support_ticket.txt
rename to support/doctype/support_ticket/support_ticket.txt
diff --git a/erpnext/support/doctype/support_ticket/support_ticket_list.js b/support/doctype/support_ticket/support_ticket_list.js
similarity index 100%
rename from erpnext/support/doctype/support_ticket/support_ticket_list.js
rename to support/doctype/support_ticket/support_ticket_list.js
diff --git a/erpnext/support/doctype/support_ticket_response/__init__.py b/support/doctype/support_ticket_response/__init__.py
similarity index 100%
rename from erpnext/support/doctype/support_ticket_response/__init__.py
rename to support/doctype/support_ticket_response/__init__.py
diff --git a/erpnext/support/doctype/support_ticket_response/support_ticket_response.txt b/support/doctype/support_ticket_response/support_ticket_response.txt
similarity index 100%
rename from erpnext/support/doctype/support_ticket_response/support_ticket_response.txt
rename to support/doctype/support_ticket_response/support_ticket_response.txt
diff --git a/erpnext/support/page/__init__.py b/support/page/__init__.py
similarity index 100%
rename from erpnext/support/page/__init__.py
rename to support/page/__init__.py
diff --git a/erpnext/support/page/support_home/__init__.py b/support/page/support_home/__init__.py
similarity index 100%
rename from erpnext/support/page/support_home/__init__.py
rename to support/page/support_home/__init__.py
diff --git a/erpnext/support/page/support_home/support_home.html b/support/page/support_home/support_home.html
similarity index 100%
rename from erpnext/support/page/support_home/support_home.html
rename to support/page/support_home/support_home.html
diff --git a/erpnext/support/page/support_home/support_home.js b/support/page/support_home/support_home.js
similarity index 100%
rename from erpnext/support/page/support_home/support_home.js
rename to support/page/support_home/support_home.js
diff --git a/erpnext/support/page/support_home/support_home.txt b/support/page/support_home/support_home.txt
similarity index 100%
rename from erpnext/support/page/support_home/support_home.txt
rename to support/page/support_home/support_home.txt
diff --git a/erpnext/support/search_criteria/__init__.py b/support/search_criteria/__init__.py
similarity index 100%
rename from erpnext/support/search_criteria/__init__.py
rename to support/search_criteria/__init__.py
diff --git a/erpnext/support/search_criteria/amc_summary/__init__.py b/support/search_criteria/amc_summary/__init__.py
similarity index 100%
rename from erpnext/support/search_criteria/amc_summary/__init__.py
rename to support/search_criteria/amc_summary/__init__.py
diff --git a/erpnext/support/search_criteria/amc_summary/amc_summary.js b/support/search_criteria/amc_summary/amc_summary.js
similarity index 100%
rename from erpnext/support/search_criteria/amc_summary/amc_summary.js
rename to support/search_criteria/amc_summary/amc_summary.js
diff --git a/erpnext/support/search_criteria/amc_summary/amc_summary.py b/support/search_criteria/amc_summary/amc_summary.py
similarity index 100%
rename from erpnext/support/search_criteria/amc_summary/amc_summary.py
rename to support/search_criteria/amc_summary/amc_summary.py
diff --git a/erpnext/support/search_criteria/amc_summary/amc_summary.txt b/support/search_criteria/amc_summary/amc_summary.txt
similarity index 100%
rename from erpnext/support/search_criteria/amc_summary/amc_summary.txt
rename to support/search_criteria/amc_summary/amc_summary.txt
diff --git a/erpnext/support/search_criteria/customer_issues/__init__.py b/support/search_criteria/customer_issues/__init__.py
similarity index 100%
rename from erpnext/support/search_criteria/customer_issues/__init__.py
rename to support/search_criteria/customer_issues/__init__.py
diff --git a/erpnext/support/search_criteria/customer_issues/customer_issues.js b/support/search_criteria/customer_issues/customer_issues.js
similarity index 100%
rename from erpnext/support/search_criteria/customer_issues/customer_issues.js
rename to support/search_criteria/customer_issues/customer_issues.js
diff --git a/erpnext/support/search_criteria/customer_issues/customer_issues.txt b/support/search_criteria/customer_issues/customer_issues.txt
similarity index 100%
rename from erpnext/support/search_criteria/customer_issues/customer_issues.txt
rename to support/search_criteria/customer_issues/customer_issues.txt
diff --git a/erpnext/support/search_criteria/maintenance_orderwise_pending_amount_to_bill/__init__.py b/support/search_criteria/maintenance_orderwise_pending_amount_to_bill/__init__.py
similarity index 100%
rename from erpnext/support/search_criteria/maintenance_orderwise_pending_amount_to_bill/__init__.py
rename to support/search_criteria/maintenance_orderwise_pending_amount_to_bill/__init__.py
diff --git a/erpnext/support/search_criteria/maintenance_orderwise_pending_amount_to_bill/maintenance_orderwise_pending_amount_to_bill.js b/support/search_criteria/maintenance_orderwise_pending_amount_to_bill/maintenance_orderwise_pending_amount_to_bill.js
similarity index 100%
rename from erpnext/support/search_criteria/maintenance_orderwise_pending_amount_to_bill/maintenance_orderwise_pending_amount_to_bill.js
rename to support/search_criteria/maintenance_orderwise_pending_amount_to_bill/maintenance_orderwise_pending_amount_to_bill.js
diff --git a/erpnext/support/search_criteria/maintenance_orderwise_pending_amount_to_bill/maintenance_orderwise_pending_amount_to_bill.txt b/support/search_criteria/maintenance_orderwise_pending_amount_to_bill/maintenance_orderwise_pending_amount_to_bill.txt
similarity index 100%
rename from erpnext/support/search_criteria/maintenance_orderwise_pending_amount_to_bill/maintenance_orderwise_pending_amount_to_bill.txt
rename to support/search_criteria/maintenance_orderwise_pending_amount_to_bill/maintenance_orderwise_pending_amount_to_bill.txt
diff --git a/erpnext/support/search_criteria/maintenance_schedule_details/__init__.py b/support/search_criteria/maintenance_schedule_details/__init__.py
similarity index 100%
rename from erpnext/support/search_criteria/maintenance_schedule_details/__init__.py
rename to support/search_criteria/maintenance_schedule_details/__init__.py
diff --git a/erpnext/support/search_criteria/maintenance_schedule_details/maintenance_schedule_details.js b/support/search_criteria/maintenance_schedule_details/maintenance_schedule_details.js
similarity index 100%
rename from erpnext/support/search_criteria/maintenance_schedule_details/maintenance_schedule_details.js
rename to support/search_criteria/maintenance_schedule_details/maintenance_schedule_details.js
diff --git a/erpnext/support/search_criteria/maintenance_schedule_details/maintenance_schedule_details.txt b/support/search_criteria/maintenance_schedule_details/maintenance_schedule_details.txt
similarity index 100%
rename from erpnext/support/search_criteria/maintenance_schedule_details/maintenance_schedule_details.txt
rename to support/search_criteria/maintenance_schedule_details/maintenance_schedule_details.txt
diff --git a/erpnext/support/search_criteria/warranty_amc_expiry_details/__init__.py b/support/search_criteria/warranty_amc_expiry_details/__init__.py
similarity index 100%
rename from erpnext/support/search_criteria/warranty_amc_expiry_details/__init__.py
rename to support/search_criteria/warranty_amc_expiry_details/__init__.py
diff --git a/erpnext/support/search_criteria/warranty_amc_expiry_details/warranty_amc_expiry_details.js b/support/search_criteria/warranty_amc_expiry_details/warranty_amc_expiry_details.js
similarity index 100%
rename from erpnext/support/search_criteria/warranty_amc_expiry_details/warranty_amc_expiry_details.js
rename to support/search_criteria/warranty_amc_expiry_details/warranty_amc_expiry_details.js
diff --git a/erpnext/support/search_criteria/warranty_amc_expiry_details/warranty_amc_expiry_details.txt b/support/search_criteria/warranty_amc_expiry_details/warranty_amc_expiry_details.txt
similarity index 100%
rename from erpnext/support/search_criteria/warranty_amc_expiry_details/warranty_amc_expiry_details.txt
rename to support/search_criteria/warranty_amc_expiry_details/warranty_amc_expiry_details.txt
diff --git a/erpnext/support/search_criteria/warranty_amc_summary/__init__.py b/support/search_criteria/warranty_amc_summary/__init__.py
similarity index 100%
rename from erpnext/support/search_criteria/warranty_amc_summary/__init__.py
rename to support/search_criteria/warranty_amc_summary/__init__.py
diff --git a/erpnext/support/search_criteria/warranty_amc_summary/warranty_amc_summary.js b/support/search_criteria/warranty_amc_summary/warranty_amc_summary.js
similarity index 100%
rename from erpnext/support/search_criteria/warranty_amc_summary/warranty_amc_summary.js
rename to support/search_criteria/warranty_amc_summary/warranty_amc_summary.js
diff --git a/erpnext/support/search_criteria/warranty_amc_summary/warranty_amc_summary.py b/support/search_criteria/warranty_amc_summary/warranty_amc_summary.py
similarity index 100%
rename from erpnext/support/search_criteria/warranty_amc_summary/warranty_amc_summary.py
rename to support/search_criteria/warranty_amc_summary/warranty_amc_summary.py
diff --git a/erpnext/support/search_criteria/warranty_amc_summary/warranty_amc_summary.sql b/support/search_criteria/warranty_amc_summary/warranty_amc_summary.sql
similarity index 100%
rename from erpnext/support/search_criteria/warranty_amc_summary/warranty_amc_summary.sql
rename to support/search_criteria/warranty_amc_summary/warranty_amc_summary.sql
diff --git a/erpnext/support/search_criteria/warranty_amc_summary/warranty_amc_summary.txt b/support/search_criteria/warranty_amc_summary/warranty_amc_summary.txt
similarity index 100%
rename from erpnext/support/search_criteria/warranty_amc_summary/warranty_amc_summary.txt
rename to support/search_criteria/warranty_amc_summary/warranty_amc_summary.txt
diff --git a/erpnext/utilities/__init__.py b/utilities/__init__.py
similarity index 100%
rename from erpnext/utilities/__init__.py
rename to utilities/__init__.py
diff --git a/erpnext/utilities/cleanup_data.py b/utilities/cleanup_data.py
similarity index 100%
rename from erpnext/utilities/cleanup_data.py
rename to utilities/cleanup_data.py
diff --git a/erpnext/utilities/doctype/__init__.py b/utilities/doctype/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/__init__.py
rename to utilities/doctype/__init__.py
diff --git a/erpnext/utilities/doctype/address/__init__.py b/utilities/doctype/address/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/address/__init__.py
rename to utilities/doctype/address/__init__.py
diff --git a/erpnext/utilities/doctype/address/address.js b/utilities/doctype/address/address.js
similarity index 100%
rename from erpnext/utilities/doctype/address/address.js
rename to utilities/doctype/address/address.js
diff --git a/erpnext/utilities/doctype/address/address.py b/utilities/doctype/address/address.py
similarity index 100%
rename from erpnext/utilities/doctype/address/address.py
rename to utilities/doctype/address/address.py
diff --git a/erpnext/utilities/doctype/address/address.txt b/utilities/doctype/address/address.txt
similarity index 100%
rename from erpnext/utilities/doctype/address/address.txt
rename to utilities/doctype/address/address.txt
diff --git a/erpnext/utilities/doctype/address/address_list.js b/utilities/doctype/address/address_list.js
similarity index 100%
rename from erpnext/utilities/doctype/address/address_list.js
rename to utilities/doctype/address/address_list.js
diff --git a/erpnext/utilities/doctype/answer/__init__.py b/utilities/doctype/answer/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/answer/__init__.py
rename to utilities/doctype/answer/__init__.py
diff --git a/erpnext/utilities/doctype/answer/answer.txt b/utilities/doctype/answer/answer.txt
similarity index 100%
rename from erpnext/utilities/doctype/answer/answer.txt
rename to utilities/doctype/answer/answer.txt
diff --git a/erpnext/utilities/doctype/contact/__init__.py b/utilities/doctype/contact/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/contact/__init__.py
rename to utilities/doctype/contact/__init__.py
diff --git a/erpnext/utilities/doctype/contact/contact.js b/utilities/doctype/contact/contact.js
similarity index 100%
rename from erpnext/utilities/doctype/contact/contact.js
rename to utilities/doctype/contact/contact.js
diff --git a/erpnext/utilities/doctype/contact/contact.py b/utilities/doctype/contact/contact.py
similarity index 100%
rename from erpnext/utilities/doctype/contact/contact.py
rename to utilities/doctype/contact/contact.py
diff --git a/erpnext/utilities/doctype/contact/contact.txt b/utilities/doctype/contact/contact.txt
similarity index 100%
rename from erpnext/utilities/doctype/contact/contact.txt
rename to utilities/doctype/contact/contact.txt
diff --git a/erpnext/utilities/doctype/contact/contact_list.js b/utilities/doctype/contact/contact_list.js
similarity index 100%
rename from erpnext/utilities/doctype/contact/contact_list.js
rename to utilities/doctype/contact/contact_list.js
diff --git a/erpnext/utilities/doctype/gl_mapper/__init__.py b/utilities/doctype/gl_mapper/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/gl_mapper/__init__.py
rename to utilities/doctype/gl_mapper/__init__.py
diff --git a/erpnext/utilities/doctype/gl_mapper/gl_mapper.txt b/utilities/doctype/gl_mapper/gl_mapper.txt
similarity index 100%
rename from erpnext/utilities/doctype/gl_mapper/gl_mapper.txt
rename to utilities/doctype/gl_mapper/gl_mapper.txt
diff --git a/erpnext/utilities/doctype/gl_mapper_detail/__init__.py b/utilities/doctype/gl_mapper_detail/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/gl_mapper_detail/__init__.py
rename to utilities/doctype/gl_mapper_detail/__init__.py
diff --git a/erpnext/utilities/doctype/gl_mapper_detail/gl_mapper_detail.txt b/utilities/doctype/gl_mapper_detail/gl_mapper_detail.txt
similarity index 100%
rename from erpnext/utilities/doctype/gl_mapper_detail/gl_mapper_detail.txt
rename to utilities/doctype/gl_mapper_detail/gl_mapper_detail.txt
diff --git a/erpnext/utilities/doctype/profile_control/__init__.py b/utilities/doctype/profile_control/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/profile_control/__init__.py
rename to utilities/doctype/profile_control/__init__.py
diff --git a/erpnext/utilities/doctype/profile_control/profile_control.py b/utilities/doctype/profile_control/profile_control.py
similarity index 91%
rename from erpnext/utilities/doctype/profile_control/profile_control.py
rename to utilities/doctype/profile_control/profile_control.py
index 570be06..1c07416 100644
--- a/erpnext/utilities/doctype/profile_control/profile_control.py
+++ b/utilities/doctype/profile_control/profile_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/utilities/doctype/profile_control/profile_control.txt b/utilities/doctype/profile_control/profile_control.txt
similarity index 100%
rename from erpnext/utilities/doctype/profile_control/profile_control.txt
rename to utilities/doctype/profile_control/profile_control.txt
diff --git a/erpnext/utilities/doctype/question/__init__.py b/utilities/doctype/question/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/question/__init__.py
rename to utilities/doctype/question/__init__.py
diff --git a/erpnext/utilities/doctype/question/question.py b/utilities/doctype/question/question.py
similarity index 100%
rename from erpnext/utilities/doctype/question/question.py
rename to utilities/doctype/question/question.py
diff --git a/erpnext/utilities/doctype/question/question.txt b/utilities/doctype/question/question.txt
similarity index 100%
rename from erpnext/utilities/doctype/question/question.txt
rename to utilities/doctype/question/question.txt
diff --git a/erpnext/utilities/doctype/rename_tool/__init__.py b/utilities/doctype/rename_tool/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/rename_tool/__init__.py
rename to utilities/doctype/rename_tool/__init__.py
diff --git a/erpnext/utilities/doctype/rename_tool/rename_tool.js b/utilities/doctype/rename_tool/rename_tool.js
similarity index 100%
rename from erpnext/utilities/doctype/rename_tool/rename_tool.js
rename to utilities/doctype/rename_tool/rename_tool.js
diff --git a/erpnext/utilities/doctype/rename_tool/rename_tool.py b/utilities/doctype/rename_tool/rename_tool.py
similarity index 100%
rename from erpnext/utilities/doctype/rename_tool/rename_tool.py
rename to utilities/doctype/rename_tool/rename_tool.py
diff --git a/erpnext/utilities/doctype/rename_tool/rename_tool.txt b/utilities/doctype/rename_tool/rename_tool.txt
similarity index 100%
rename from erpnext/utilities/doctype/rename_tool/rename_tool.txt
rename to utilities/doctype/rename_tool/rename_tool.txt
diff --git a/erpnext/utilities/doctype/reposting_tool/__init__.py b/utilities/doctype/reposting_tool/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/reposting_tool/__init__.py
rename to utilities/doctype/reposting_tool/__init__.py
diff --git a/erpnext/utilities/doctype/reposting_tool/reposting_tool.js b/utilities/doctype/reposting_tool/reposting_tool.js
similarity index 100%
rename from erpnext/utilities/doctype/reposting_tool/reposting_tool.js
rename to utilities/doctype/reposting_tool/reposting_tool.js
diff --git a/erpnext/utilities/doctype/reposting_tool/reposting_tool.py b/utilities/doctype/reposting_tool/reposting_tool.py
similarity index 97%
rename from erpnext/utilities/doctype/reposting_tool/reposting_tool.py
rename to utilities/doctype/reposting_tool/reposting_tool.py
index feb1ea0..3d53b69 100644
--- a/erpnext/utilities/doctype/reposting_tool/reposting_tool.py
+++ b/utilities/doctype/reposting_tool/reposting_tool.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/utilities/doctype/reposting_tool/reposting_tool.txt b/utilities/doctype/reposting_tool/reposting_tool.txt
similarity index 100%
rename from erpnext/utilities/doctype/reposting_tool/reposting_tool.txt
rename to utilities/doctype/reposting_tool/reposting_tool.txt
diff --git a/erpnext/utilities/doctype/sms_control/__init__.py b/utilities/doctype/sms_control/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/sms_control/__init__.py
rename to utilities/doctype/sms_control/__init__.py
diff --git a/erpnext/utilities/doctype/sms_control/sms_control.js b/utilities/doctype/sms_control/sms_control.js
similarity index 100%
rename from erpnext/utilities/doctype/sms_control/sms_control.js
rename to utilities/doctype/sms_control/sms_control.js
diff --git a/erpnext/utilities/doctype/sms_control/sms_control.py b/utilities/doctype/sms_control/sms_control.py
similarity index 100%
rename from erpnext/utilities/doctype/sms_control/sms_control.py
rename to utilities/doctype/sms_control/sms_control.py
diff --git a/erpnext/utilities/doctype/sms_control/sms_control.txt b/utilities/doctype/sms_control/sms_control.txt
similarity index 100%
rename from erpnext/utilities/doctype/sms_control/sms_control.txt
rename to utilities/doctype/sms_control/sms_control.txt
diff --git a/erpnext/utilities/doctype/sms_log/__init__.py b/utilities/doctype/sms_log/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/sms_log/__init__.py
rename to utilities/doctype/sms_log/__init__.py
diff --git a/erpnext/utilities/doctype/sms_log/sms_log.txt b/utilities/doctype/sms_log/sms_log.txt
similarity index 100%
rename from erpnext/utilities/doctype/sms_log/sms_log.txt
rename to utilities/doctype/sms_log/sms_log.txt
diff --git a/erpnext/utilities/doctype/sms_receiver/__init__.py b/utilities/doctype/sms_receiver/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/sms_receiver/__init__.py
rename to utilities/doctype/sms_receiver/__init__.py
diff --git a/erpnext/utilities/doctype/sms_receiver/sms_receiver.txt b/utilities/doctype/sms_receiver/sms_receiver.txt
similarity index 100%
rename from erpnext/utilities/doctype/sms_receiver/sms_receiver.txt
rename to utilities/doctype/sms_receiver/sms_receiver.txt
diff --git a/erpnext/utilities/doctype/trash_control/__init__.py b/utilities/doctype/trash_control/__init__.py
similarity index 100%
rename from erpnext/utilities/doctype/trash_control/__init__.py
rename to utilities/doctype/trash_control/__init__.py
diff --git a/erpnext/utilities/doctype/trash_control/trash_control.py b/utilities/doctype/trash_control/trash_control.py
similarity index 91%
rename from erpnext/utilities/doctype/trash_control/trash_control.py
rename to utilities/doctype/trash_control/trash_control.py
index 1b4ec8a..8498d62 100644
--- a/erpnext/utilities/doctype/trash_control/trash_control.py
+++ b/utilities/doctype/trash_control/trash_control.py
@@ -18,12 +18,12 @@
 from __future__ import unicode_literals
 import webnotes
 
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
+from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
 from webnotes.model import db_exists
 from webnotes.model.doc import Document, addchild, getchildren, make_autoname
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
+from webnotes import session, form, msgprint, errprint
 
 set = webnotes.conn.set
 sql = webnotes.conn.sql
diff --git a/erpnext/utilities/doctype/trash_control/trash_control.txt b/utilities/doctype/trash_control/trash_control.txt
similarity index 100%
rename from erpnext/utilities/doctype/trash_control/trash_control.txt
rename to utilities/doctype/trash_control/trash_control.txt
diff --git a/erpnext/utilities/page/__init__.py b/utilities/page/__init__.py
similarity index 100%
rename from erpnext/utilities/page/__init__.py
rename to utilities/page/__init__.py
diff --git a/erpnext/utilities/page/calendar/__init__.py b/utilities/page/calendar/__init__.py
similarity index 100%
rename from erpnext/utilities/page/calendar/__init__.py
rename to utilities/page/calendar/__init__.py
diff --git a/erpnext/utilities/page/calendar/calendar.css b/utilities/page/calendar/calendar.css
similarity index 100%
rename from erpnext/utilities/page/calendar/calendar.css
rename to utilities/page/calendar/calendar.css
diff --git a/erpnext/utilities/page/calendar/calendar.html b/utilities/page/calendar/calendar.html
similarity index 100%
rename from erpnext/utilities/page/calendar/calendar.html
rename to utilities/page/calendar/calendar.html
diff --git a/erpnext/utilities/page/calendar/calendar.js b/utilities/page/calendar/calendar.js
similarity index 100%
rename from erpnext/utilities/page/calendar/calendar.js
rename to utilities/page/calendar/calendar.js
diff --git a/erpnext/utilities/page/calendar/calendar.py b/utilities/page/calendar/calendar.py
similarity index 100%
rename from erpnext/utilities/page/calendar/calendar.py
rename to utilities/page/calendar/calendar.py
diff --git a/erpnext/utilities/page/calendar/calendar.txt b/utilities/page/calendar/calendar.txt
similarity index 100%
rename from erpnext/utilities/page/calendar/calendar.txt
rename to utilities/page/calendar/calendar.txt
diff --git a/erpnext/utilities/page/markdown_reference/__init__.py b/utilities/page/markdown_reference/__init__.py
similarity index 100%
rename from erpnext/utilities/page/markdown_reference/__init__.py
rename to utilities/page/markdown_reference/__init__.py
diff --git a/erpnext/utilities/page/markdown_reference/markdown_reference.css b/utilities/page/markdown_reference/markdown_reference.css
similarity index 100%
rename from erpnext/utilities/page/markdown_reference/markdown_reference.css
rename to utilities/page/markdown_reference/markdown_reference.css
diff --git a/erpnext/utilities/page/markdown_reference/markdown_reference.html b/utilities/page/markdown_reference/markdown_reference.html
similarity index 100%
rename from erpnext/utilities/page/markdown_reference/markdown_reference.html
rename to utilities/page/markdown_reference/markdown_reference.html
diff --git a/erpnext/utilities/page/markdown_reference/markdown_reference.js b/utilities/page/markdown_reference/markdown_reference.js
similarity index 100%
rename from erpnext/utilities/page/markdown_reference/markdown_reference.js
rename to utilities/page/markdown_reference/markdown_reference.js
diff --git a/erpnext/utilities/page/markdown_reference/markdown_reference.py b/utilities/page/markdown_reference/markdown_reference.py
similarity index 100%
rename from erpnext/utilities/page/markdown_reference/markdown_reference.py
rename to utilities/page/markdown_reference/markdown_reference.py
diff --git a/erpnext/utilities/page/markdown_reference/markdown_reference.txt b/utilities/page/markdown_reference/markdown_reference.txt
similarity index 100%
rename from erpnext/utilities/page/markdown_reference/markdown_reference.txt
rename to utilities/page/markdown_reference/markdown_reference.txt
diff --git a/erpnext/utilities/page/messages/__init__.py b/utilities/page/messages/__init__.py
similarity index 100%
rename from erpnext/utilities/page/messages/__init__.py
rename to utilities/page/messages/__init__.py
diff --git a/erpnext/utilities/page/messages/messages.css b/utilities/page/messages/messages.css
similarity index 100%
rename from erpnext/utilities/page/messages/messages.css
rename to utilities/page/messages/messages.css
diff --git a/erpnext/utilities/page/messages/messages.html b/utilities/page/messages/messages.html
similarity index 100%
rename from erpnext/utilities/page/messages/messages.html
rename to utilities/page/messages/messages.html
diff --git a/erpnext/utilities/page/messages/messages.js b/utilities/page/messages/messages.js
similarity index 100%
rename from erpnext/utilities/page/messages/messages.js
rename to utilities/page/messages/messages.js
diff --git a/erpnext/utilities/page/messages/messages.py b/utilities/page/messages/messages.py
similarity index 100%
rename from erpnext/utilities/page/messages/messages.py
rename to utilities/page/messages/messages.py
diff --git a/erpnext/utilities/page/messages/messages.txt b/utilities/page/messages/messages.txt
similarity index 100%
rename from erpnext/utilities/page/messages/messages.txt
rename to utilities/page/messages/messages.txt
diff --git a/erpnext/utilities/page/question_view/__init__.py b/utilities/page/question_view/__init__.py
similarity index 100%
rename from erpnext/utilities/page/question_view/__init__.py
rename to utilities/page/question_view/__init__.py
diff --git a/erpnext/utilities/page/question_view/question_view.css b/utilities/page/question_view/question_view.css
similarity index 100%
rename from erpnext/utilities/page/question_view/question_view.css
rename to utilities/page/question_view/question_view.css
diff --git a/erpnext/utilities/page/question_view/question_view.html b/utilities/page/question_view/question_view.html
similarity index 100%
rename from erpnext/utilities/page/question_view/question_view.html
rename to utilities/page/question_view/question_view.html
diff --git a/erpnext/utilities/page/question_view/question_view.js b/utilities/page/question_view/question_view.js
similarity index 98%
rename from erpnext/utilities/page/question_view/question_view.js
rename to utilities/page/question_view/question_view.js
index b646cf6..4371082 100644
--- a/erpnext/utilities/page/question_view/question_view.js
+++ b/utilities/page/question_view/question_view.js
@@ -186,4 +186,4 @@
 }
 
 
-wn.require('erpnext/utilities/page/kb_common/kb_common.js');
+wn.require('app/utilities/page/kb_common/kb_common.js');
diff --git a/erpnext/utilities/page/question_view/question_view.py b/utilities/page/question_view/question_view.py
similarity index 100%
rename from erpnext/utilities/page/question_view/question_view.py
rename to utilities/page/question_view/question_view.py
diff --git a/erpnext/utilities/page/question_view/question_view.txt b/utilities/page/question_view/question_view.txt
similarity index 100%
rename from erpnext/utilities/page/question_view/question_view.txt
rename to utilities/page/question_view/question_view.txt
diff --git a/erpnext/utilities/page/questions/__init__.py b/utilities/page/questions/__init__.py
similarity index 100%
rename from erpnext/utilities/page/questions/__init__.py
rename to utilities/page/questions/__init__.py
diff --git a/erpnext/utilities/page/questions/questions.css b/utilities/page/questions/questions.css
similarity index 100%
rename from erpnext/utilities/page/questions/questions.css
rename to utilities/page/questions/questions.css
diff --git a/erpnext/utilities/page/questions/questions.html b/utilities/page/questions/questions.html
similarity index 100%
rename from erpnext/utilities/page/questions/questions.html
rename to utilities/page/questions/questions.html
diff --git a/erpnext/utilities/page/questions/questions.js b/utilities/page/questions/questions.js
similarity index 99%
rename from erpnext/utilities/page/questions/questions.js
rename to utilities/page/questions/questions.js
index e2e7ed5..1c208a8 100644
--- a/erpnext/utilities/page/questions/questions.js
+++ b/utilities/page/questions/questions.js
@@ -215,4 +215,4 @@
 	this.make()
 }
 
-wn.require('js/app/kb_common.js');
+wn.require('app/js/kb_common.js');
diff --git a/erpnext/utilities/page/questions/questions.py b/utilities/page/questions/questions.py
similarity index 100%
rename from erpnext/utilities/page/questions/questions.py
rename to utilities/page/questions/questions.py
diff --git a/erpnext/utilities/page/questions/questions.txt b/utilities/page/questions/questions.txt
similarity index 100%
rename from erpnext/utilities/page/questions/questions.txt
rename to utilities/page/questions/questions.txt
diff --git a/erpnext/utilities/page/todo/__init__.py b/utilities/page/todo/__init__.py
similarity index 100%
rename from erpnext/utilities/page/todo/__init__.py
rename to utilities/page/todo/__init__.py
diff --git a/erpnext/utilities/page/todo/todo.css b/utilities/page/todo/todo.css
similarity index 100%
rename from erpnext/utilities/page/todo/todo.css
rename to utilities/page/todo/todo.css
diff --git a/erpnext/utilities/page/todo/todo.html b/utilities/page/todo/todo.html
similarity index 100%
rename from erpnext/utilities/page/todo/todo.html
rename to utilities/page/todo/todo.html
diff --git a/erpnext/utilities/page/todo/todo.js b/utilities/page/todo/todo.js
similarity index 100%
rename from erpnext/utilities/page/todo/todo.js
rename to utilities/page/todo/todo.js
diff --git a/erpnext/utilities/page/todo/todo.py b/utilities/page/todo/todo.py
similarity index 100%
rename from erpnext/utilities/page/todo/todo.py
rename to utilities/page/todo/todo.py
diff --git a/erpnext/utilities/page/todo/todo.txt b/utilities/page/todo/todo.txt
similarity index 100%
rename from erpnext/utilities/page/todo/todo.txt
rename to utilities/page/todo/todo.txt
diff --git a/erpnext/utilities/page/trash/__init__.py b/utilities/page/trash/__init__.py
similarity index 100%
rename from erpnext/utilities/page/trash/__init__.py
rename to utilities/page/trash/__init__.py
diff --git a/erpnext/utilities/page/trash/trash.html b/utilities/page/trash/trash.html
similarity index 100%
rename from erpnext/utilities/page/trash/trash.html
rename to utilities/page/trash/trash.html
diff --git a/erpnext/utilities/page/trash/trash.js b/utilities/page/trash/trash.js
similarity index 100%
rename from erpnext/utilities/page/trash/trash.js
rename to utilities/page/trash/trash.js
diff --git a/erpnext/utilities/page/trash/trash.txt b/utilities/page/trash/trash.txt
similarity index 100%
rename from erpnext/utilities/page/trash/trash.txt
rename to utilities/page/trash/trash.txt
diff --git a/erpnext/utilities/page/users/__init__.py b/utilities/page/users/__init__.py
similarity index 100%
rename from erpnext/utilities/page/users/__init__.py
rename to utilities/page/users/__init__.py
diff --git a/erpnext/utilities/page/users/users.css b/utilities/page/users/users.css
similarity index 100%
rename from erpnext/utilities/page/users/users.css
rename to utilities/page/users/users.css
diff --git a/erpnext/utilities/page/users/users.html b/utilities/page/users/users.html
similarity index 100%
rename from erpnext/utilities/page/users/users.html
rename to utilities/page/users/users.html
diff --git a/erpnext/utilities/page/users/users.js b/utilities/page/users/users.js
similarity index 100%
rename from erpnext/utilities/page/users/users.js
rename to utilities/page/users/users.js
diff --git a/erpnext/utilities/page/users/users.py b/utilities/page/users/users.py
similarity index 100%
rename from erpnext/utilities/page/users/users.py
rename to utilities/page/users/users.py
diff --git a/erpnext/utilities/page/users/users.txt b/utilities/page/users/users.txt
similarity index 100%
rename from erpnext/utilities/page/users/users.txt
rename to utilities/page/users/users.txt
diff --git a/erpnext/utilities/page/wip_monitor/__init__.py b/utilities/page/wip_monitor/__init__.py
similarity index 100%
rename from erpnext/utilities/page/wip_monitor/__init__.py
rename to utilities/page/wip_monitor/__init__.py
diff --git a/erpnext/utilities/page/wip_monitor/wip_monitor.html b/utilities/page/wip_monitor/wip_monitor.html
similarity index 100%
rename from erpnext/utilities/page/wip_monitor/wip_monitor.html
rename to utilities/page/wip_monitor/wip_monitor.html
diff --git a/erpnext/utilities/page/wip_monitor/wip_monitor.js b/utilities/page/wip_monitor/wip_monitor.js
similarity index 100%
rename from erpnext/utilities/page/wip_monitor/wip_monitor.js
rename to utilities/page/wip_monitor/wip_monitor.js
diff --git a/erpnext/utilities/page/wip_monitor/wip_monitor.txt b/utilities/page/wip_monitor/wip_monitor.txt
similarity index 100%
rename from erpnext/utilities/page/wip_monitor/wip_monitor.txt
rename to utilities/page/wip_monitor/wip_monitor.txt
diff --git a/erpnext/utilities/transaction_base.py b/utilities/transaction_base.py
similarity index 100%
rename from erpnext/utilities/transaction_base.py
rename to utilities/transaction_base.py
diff --git a/erpnext/website/__init__.py b/website/__init__.py
similarity index 100%
rename from erpnext/website/__init__.py
rename to website/__init__.py
diff --git a/erpnext/website/blog.py b/website/blog.py
similarity index 100%
rename from erpnext/website/blog.py
rename to website/blog.py
diff --git a/erpnext/website/css/website.css b/website/css/website.css
similarity index 100%
rename from erpnext/website/css/website.css
rename to website/css/website.css
diff --git a/erpnext/website/doctype/__init__.py b/website/doctype/__init__.py
similarity index 100%
rename from erpnext/website/doctype/__init__.py
rename to website/doctype/__init__.py
diff --git a/erpnext/website/doctype/blog/__init__.py b/website/doctype/blog/__init__.py
similarity index 100%
rename from erpnext/website/doctype/blog/__init__.py
rename to website/doctype/blog/__init__.py
diff --git a/erpnext/website/doctype/blog/blog.js b/website/doctype/blog/blog.js
similarity index 100%
rename from erpnext/website/doctype/blog/blog.js
rename to website/doctype/blog/blog.js
diff --git a/erpnext/website/doctype/blog/blog.py b/website/doctype/blog/blog.py
similarity index 100%
rename from erpnext/website/doctype/blog/blog.py
rename to website/doctype/blog/blog.py
diff --git a/erpnext/website/doctype/blog/blog.txt b/website/doctype/blog/blog.txt
similarity index 100%
rename from erpnext/website/doctype/blog/blog.txt
rename to website/doctype/blog/blog.txt
diff --git a/erpnext/website/doctype/related_page/__init__.py b/website/doctype/related_page/__init__.py
similarity index 100%
rename from erpnext/website/doctype/related_page/__init__.py
rename to website/doctype/related_page/__init__.py
diff --git a/erpnext/website/doctype/related_page/related_page.txt b/website/doctype/related_page/related_page.txt
similarity index 100%
rename from erpnext/website/doctype/related_page/related_page.txt
rename to website/doctype/related_page/related_page.txt
diff --git a/erpnext/website/doctype/style_settings/__init__.py b/website/doctype/style_settings/__init__.py
similarity index 100%
rename from erpnext/website/doctype/style_settings/__init__.py
rename to website/doctype/style_settings/__init__.py
diff --git a/erpnext/website/doctype/style_settings/custom_template.css b/website/doctype/style_settings/custom_template.css
similarity index 100%
rename from erpnext/website/doctype/style_settings/custom_template.css
rename to website/doctype/style_settings/custom_template.css
diff --git a/erpnext/website/doctype/style_settings/style_settings.js b/website/doctype/style_settings/style_settings.js
similarity index 94%
rename from erpnext/website/doctype/style_settings/style_settings.js
rename to website/doctype/style_settings/style_settings.js
index 64fa496..0d0bf9e 100644
--- a/erpnext/website/doctype/style_settings/style_settings.js
+++ b/website/doctype/style_settings/style_settings.js
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-wn.require('js/lib/jscolor/jscolor.js');
+wn.require('lib/js/lib/jscolor/jscolor.js');
 
 cur_frm.cscript.onload_post_render = function() {
 	cur_frm.fields_dict.background_color.input.className = 'color';
diff --git a/erpnext/website/doctype/style_settings/style_settings.py b/website/doctype/style_settings/style_settings.py
similarity index 96%
rename from erpnext/website/doctype/style_settings/style_settings.py
rename to website/doctype/style_settings/style_settings.py
index face729..bf39c8d 100644
--- a/erpnext/website/doctype/style_settings/style_settings.py
+++ b/website/doctype/style_settings/style_settings.py
@@ -38,7 +38,7 @@
 		if self.doc.add_css:
 			self.doc.custom_css += '\n\n/* User CSS */\n\n' + self.doc.add_css
 		
-		from webnotes.session_cache import clear_cache
+		from webnotes.sessions import clear_cache
 		clear_cache('Guest')
 		
 		del self.doc.fields['small_font_size']
diff --git a/erpnext/website/doctype/style_settings/style_settings.txt b/website/doctype/style_settings/style_settings.txt
similarity index 100%
rename from erpnext/website/doctype/style_settings/style_settings.txt
rename to website/doctype/style_settings/style_settings.txt
diff --git a/erpnext/website/doctype/top_bar_item/__init__.py b/website/doctype/top_bar_item/__init__.py
similarity index 100%
rename from erpnext/website/doctype/top_bar_item/__init__.py
rename to website/doctype/top_bar_item/__init__.py
diff --git a/erpnext/website/doctype/top_bar_item/top_bar_item.txt b/website/doctype/top_bar_item/top_bar_item.txt
similarity index 100%
rename from erpnext/website/doctype/top_bar_item/top_bar_item.txt
rename to website/doctype/top_bar_item/top_bar_item.txt
diff --git a/erpnext/website/doctype/web_cache/__init__.py b/website/doctype/web_cache/__init__.py
similarity index 100%
rename from erpnext/website/doctype/web_cache/__init__.py
rename to website/doctype/web_cache/__init__.py
diff --git a/erpnext/website/doctype/web_cache/web_cache.txt b/website/doctype/web_cache/web_cache.txt
similarity index 100%
rename from erpnext/website/doctype/web_cache/web_cache.txt
rename to website/doctype/web_cache/web_cache.txt
diff --git a/erpnext/website/doctype/web_page/__init__.py b/website/doctype/web_page/__init__.py
similarity index 100%
rename from erpnext/website/doctype/web_page/__init__.py
rename to website/doctype/web_page/__init__.py
diff --git a/erpnext/website/doctype/web_page/web_page.js b/website/doctype/web_page/web_page.js
similarity index 100%
rename from erpnext/website/doctype/web_page/web_page.js
rename to website/doctype/web_page/web_page.js
diff --git a/erpnext/website/doctype/web_page/web_page.py b/website/doctype/web_page/web_page.py
similarity index 96%
rename from erpnext/website/doctype/web_page/web_page.py
rename to website/doctype/web_page/web_page.py
index 3cfa425..cb71e00 100644
--- a/erpnext/website/doctype/web_page/web_page.py
+++ b/website/doctype/web_page/web_page.py
@@ -31,7 +31,7 @@
 	def if_home_clear_cache(self):
 		"""if home page, clear cache"""
 		if webnotes.conn.get_value("Website Settings", None, "home_page")==self.doc.name:
-			from webnotes.session_cache import clear_cache
+			from webnotes.sessions import clear_cache
 			clear_cache('Guest')
 			import website.web_cache
 			website.web_cache.clear_cache(self.doc.page_name)
diff --git a/erpnext/website/doctype/web_page/web_page.txt b/website/doctype/web_page/web_page.txt
similarity index 100%
rename from erpnext/website/doctype/web_page/web_page.txt
rename to website/doctype/web_page/web_page.txt
diff --git a/erpnext/website/doctype/website_settings/__init__.py b/website/doctype/website_settings/__init__.py
similarity index 100%
rename from erpnext/website/doctype/website_settings/__init__.py
rename to website/doctype/website_settings/__init__.py
diff --git a/erpnext/website/doctype/website_settings/website_settings.js b/website/doctype/website_settings/website_settings.js
similarity index 100%
rename from erpnext/website/doctype/website_settings/website_settings.js
rename to website/doctype/website_settings/website_settings.js
diff --git a/erpnext/website/doctype/website_settings/website_settings.py b/website/doctype/website_settings/website_settings.py
similarity index 97%
rename from erpnext/website/doctype/website_settings/website_settings.py
rename to website/doctype/website_settings/website_settings.py
index 47a1245..1e7d078 100644
--- a/erpnext/website/doctype/website_settings/website_settings.py
+++ b/website/doctype/website_settings/website_settings.py
@@ -38,7 +38,7 @@
 		#website.web_cache.refresh_cache(build=['Blog'])
 		website.web_cache.refresh_cache()
 
-		from webnotes.session_cache import clear_cache
+		from webnotes.sessions import clear_cache
 		clear_cache('Guest')
 
 	def set_home_page(self):
diff --git a/erpnext/website/doctype/website_settings/website_settings.txt b/website/doctype/website_settings/website_settings.txt
similarity index 100%
rename from erpnext/website/doctype/website_settings/website_settings.txt
rename to website/doctype/website_settings/website_settings.txt
diff --git a/erpnext/website/page/__init__.py b/website/page/__init__.py
similarity index 100%
rename from erpnext/website/page/__init__.py
rename to website/page/__init__.py
diff --git a/erpnext/website/page/unsubscribe/unsubscribe.py b/website/page/unsubscribe/unsubscribe.py
similarity index 100%
rename from erpnext/website/page/unsubscribe/unsubscribe.py
rename to website/page/unsubscribe/unsubscribe.py
diff --git a/erpnext/website/page/website_home/__init__.py b/website/page/website_home/__init__.py
similarity index 100%
rename from erpnext/website/page/website_home/__init__.py
rename to website/page/website_home/__init__.py
diff --git a/erpnext/website/page/website_home/website_home.html b/website/page/website_home/website_home.html
similarity index 100%
rename from erpnext/website/page/website_home/website_home.html
rename to website/page/website_home/website_home.html
diff --git a/erpnext/website/page/website_home/website_home.js b/website/page/website_home/website_home.js
similarity index 100%
rename from erpnext/website/page/website_home/website_home.js
rename to website/page/website_home/website_home.js
diff --git a/erpnext/website/page/website_home/website_home.txt b/website/page/website_home/website_home.txt
similarity index 100%
rename from erpnext/website/page/website_home/website_home.txt
rename to website/page/website_home/website_home.txt
diff --git a/erpnext/website/product.py b/website/product.py
similarity index 100%
rename from erpnext/website/product.py
rename to website/product.py
diff --git a/erpnext/website/templates/__init__.py b/website/templates/__init__.py
similarity index 100%
rename from erpnext/website/templates/__init__.py
rename to website/templates/__init__.py
diff --git a/erpnext/website/templates/css/blog.css b/website/templates/css/blog.css
similarity index 100%
rename from erpnext/website/templates/css/blog.css
rename to website/templates/css/blog.css
diff --git a/erpnext/website/templates/css/blog_page.css b/website/templates/css/blog_page.css
similarity index 100%
rename from erpnext/website/templates/css/blog_page.css
rename to website/templates/css/blog_page.css
diff --git a/erpnext/website/templates/css/login.css b/website/templates/css/login.css
similarity index 100%
rename from erpnext/website/templates/css/login.css
rename to website/templates/css/login.css
diff --git a/erpnext/website/templates/css/product_page.css b/website/templates/css/product_page.css
similarity index 100%
rename from erpnext/website/templates/css/product_page.css
rename to website/templates/css/product_page.css
diff --git a/erpnext/website/templates/css/products.css b/website/templates/css/products.css
similarity index 100%
rename from erpnext/website/templates/css/products.css
rename to website/templates/css/products.css
diff --git a/erpnext/website/templates/html/base.html b/website/templates/html/base.html
similarity index 74%
rename from erpnext/website/templates/html/base.html
rename to website/templates/html/base.html
index 8639a8f..c684b25 100644
--- a/erpnext/website/templates/html/base.html
+++ b/website/templates/html/base.html
@@ -3,7 +3,7 @@
 	<meta charset="utf-8">
 	<title>{% block title %}{% endblock %}</title>
 	<meta name="generator" content="wnframework">
-	<script type="text/javascript" src="js/lib/jquery/jquery.min.js"></script>
+	<script type="text/javascript" src="lib/js/lib/jquery/jquery.min.js"></script>
 	<script type="text/javascript" src="js/all-web.js"></script>
 	<script type="text/javascript" src="js/wn-web.js"></script>
 	<link type="text/css" rel="stylesheet" href="css/all-web.css">
@@ -13,8 +13,8 @@
 	<link rel="shortcut icon" href="files/{{ favicon }}" type="image/x-icon">
 	<link rel="icon" href="files/{{ favicon }}" type="image/x-icon">
 	{% else %}
-	<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon">
-	<link rel="icon" href="images/favicon.ico" type="image/x-icon">
+	<link rel="shortcut icon" href="app/images/favicon.ico" type="image/x-icon">
+	<link rel="icon" href="app/images/favicon.ico" type="image/x-icon">
 	{% endif %}
 	
 	
diff --git a/erpnext/website/templates/html/blog_page.html b/website/templates/html/blog_page.html
similarity index 100%
rename from erpnext/website/templates/html/blog_page.html
rename to website/templates/html/blog_page.html
diff --git a/erpnext/website/templates/html/blog_subscribe.html b/website/templates/html/blog_subscribe.html
similarity index 100%
rename from erpnext/website/templates/html/blog_subscribe.html
rename to website/templates/html/blog_subscribe.html
diff --git a/erpnext/website/templates/html/comment.html b/website/templates/html/comment.html
similarity index 100%
rename from erpnext/website/templates/html/comment.html
rename to website/templates/html/comment.html
diff --git a/erpnext/website/templates/html/outer.html b/website/templates/html/outer.html
similarity index 100%
rename from erpnext/website/templates/html/outer.html
rename to website/templates/html/outer.html
diff --git a/erpnext/website/templates/html/page.html b/website/templates/html/page.html
similarity index 100%
rename from erpnext/website/templates/html/page.html
rename to website/templates/html/page.html
diff --git a/erpnext/website/templates/html/product_page.html b/website/templates/html/product_page.html
similarity index 100%
rename from erpnext/website/templates/html/product_page.html
rename to website/templates/html/product_page.html
diff --git a/erpnext/website/templates/html/web_page.html b/website/templates/html/web_page.html
similarity index 100%
rename from erpnext/website/templates/html/web_page.html
rename to website/templates/html/web_page.html
diff --git a/erpnext/website/templates/js/blog.js b/website/templates/js/blog.js
similarity index 100%
rename from erpnext/website/templates/js/blog.js
rename to website/templates/js/blog.js
diff --git a/erpnext/website/templates/js/blog_page.js b/website/templates/js/blog_page.js
similarity index 100%
rename from erpnext/website/templates/js/blog_page.js
rename to website/templates/js/blog_page.js
diff --git a/erpnext/website/templates/js/blog_subscribe.js b/website/templates/js/blog_subscribe.js
similarity index 100%
rename from erpnext/website/templates/js/blog_subscribe.js
rename to website/templates/js/blog_subscribe.js
diff --git a/erpnext/website/templates/js/login.js b/website/templates/js/login.js
similarity index 100%
rename from erpnext/website/templates/js/login.js
rename to website/templates/js/login.js
diff --git a/erpnext/website/templates/js/product_category.js b/website/templates/js/product_category.js
similarity index 100%
rename from erpnext/website/templates/js/product_category.js
rename to website/templates/js/product_category.js
diff --git a/erpnext/website/templates/js/product_page.js b/website/templates/js/product_page.js
similarity index 100%
rename from erpnext/website/templates/js/product_page.js
rename to website/templates/js/product_page.js
diff --git a/erpnext/website/templates/js/products.js b/website/templates/js/products.js
similarity index 100%
rename from erpnext/website/templates/js/products.js
rename to website/templates/js/products.js
diff --git a/erpnext/website/templates/pages/404.html b/website/templates/pages/404.html
similarity index 100%
rename from erpnext/website/templates/pages/404.html
rename to website/templates/pages/404.html
diff --git a/erpnext/website/templates/pages/blog.html b/website/templates/pages/blog.html
similarity index 100%
rename from erpnext/website/templates/pages/blog.html
rename to website/templates/pages/blog.html
diff --git a/erpnext/website/templates/pages/index.html b/website/templates/pages/index.html
similarity index 100%
rename from erpnext/website/templates/pages/index.html
rename to website/templates/pages/index.html
diff --git a/erpnext/website/templates/pages/login.html b/website/templates/pages/login.html
similarity index 100%
rename from erpnext/website/templates/pages/login.html
rename to website/templates/pages/login.html
diff --git a/erpnext/website/templates/pages/products.html b/website/templates/pages/products.html
similarity index 100%
rename from erpnext/website/templates/pages/products.html
rename to website/templates/pages/products.html
diff --git a/erpnext/website/templates/pages/unsubscribed.html b/website/templates/pages/unsubscribed.html
similarity index 100%
rename from erpnext/website/templates/pages/unsubscribed.html
rename to website/templates/pages/unsubscribed.html
diff --git a/erpnext/website/utils.py b/website/utils.py
similarity index 100%
rename from erpnext/website/utils.py
rename to website/utils.py
diff --git a/erpnext/website/web_cache.py b/website/web_cache.py
similarity index 96%
rename from erpnext/website/web_cache.py
rename to website/web_cache.py
index 9892dac..cde5217 100644
--- a/erpnext/website/web_cache.py
+++ b/website/web_cache.py
@@ -82,7 +82,7 @@
 	import conf
 	import website.utils
 	
-	pages_path = os.path.join(conf.modules_path, 'website', 'templates', 'pages')
+	pages_path = os.path.join(os.path.dirname(conf.__file__), 'app', 'website', 'templates', 'pages')
 	
 	page_list = []
 	
@@ -176,7 +176,7 @@
 	"""
 	import os
 	import conf
-	templates_path = os.path.join(conf.modules_path, 'website', 'templates')
+	templates_path = os.path.join(os.path.dirname(conf.__file__), 'app', 'website', 'templates')
 	
 	from jinja2 import Environment, FileSystemLoader
 	jenv = Environment(loader = FileSystemLoader(templates_path))
diff --git a/erpnext/website/web_page.py b/website/web_page.py
similarity index 100%
rename from erpnext/website/web_page.py
rename to website/web_page.py
