website cleanups
diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py
index e29297c..63bf3b4 100644
--- a/erpnext/setup/doctype/item_group/item_group.py
+++ b/erpnext/setup/doctype/item_group/item_group.py
@@ -16,8 +16,9 @@
 
 	def validate(self):
 		if not self.parent_website_route:
-			self.parent_website_route = frappe.get_website_route("Item Group",
-				self.parent_item_group)
+			if frappe.db.get_value("Item Group", self.parent_item_group, "show_in_website"):
+				self.parent_website_route = frappe.get_website_route("Item Group",
+					self.parent_item_group)
 
 	def on_update(self):
 		NestedSet.on_update(self)
diff --git a/erpnext/setup/page/setup_wizard/default_website.py b/erpnext/setup/page/setup_wizard/default_website.py
index 1667d87..3f1d8e1 100644
--- a/erpnext/setup/page/setup_wizard/default_website.py
+++ b/erpnext/setup/page/setup_wizard/default_website.py
@@ -55,6 +55,11 @@
 			"label":"Blog",
 			"url": "blog"
 		})
+		website_settings.append("top_bar_items", {
+			"doctype": "Top Bar Item",
+			"label": _("Products"),
+			"url": frappe.db.get_value("Website Route", {"ref_doctype":"Item Group"})
+		})
 		website_settings.save()
 
 	def make_blog(self):
diff --git a/erpnext/setup/page/setup_wizard/install_fixtures.py b/erpnext/setup/page/setup_wizard/install_fixtures.py
index 8eaa1c0..67e8350 100644
--- a/erpnext/setup/page/setup_wizard/install_fixtures.py
+++ b/erpnext/setup/page/setup_wizard/install_fixtures.py
@@ -11,13 +11,18 @@
 	records = [
 
 		# item group
-		{'doctype': 'Item Group', 'item_group_name': _('All Item Groups'), 'is_group': 'Yes', 'parent_item_group': ''},
-		{'doctype': 'Item Group', 'item_group_name': _('Products'), 'is_group': 'No',
-			'parent_item_group': _('All Item Groups'), "show_in_website": 1 },
-		{'doctype': 'Item Group', 'item_group_name': _('Raw Material'), 'is_group': 'No', 'parent_item_group': _('All Item Groups') },
-		{'doctype': 'Item Group', 'item_group_name': _('Services'), 'is_group': 'No', 'parent_item_group': _('All Item Groups') },
-		{'doctype': 'Item Group', 'item_group_name': _('Sub Assemblies'), 'is_group': 'No', 'parent_item_group': _('All Item Groups') },
-		{'doctype': 'Item Group', 'item_group_name': _('Consumable'), 'is_group': 'No', 'parent_item_group': _('All Item Groups') },
+		{'doctype': 'Item Group', 'item_group_name': _('All Item Groups'),
+			'is_group': 'Yes', 'parent_item_group': ''},
+		{'doctype': 'Item Group', 'item_group_name': _('Products'),
+			'is_group': 'No', 'parent_item_group': _('All Item Groups'), "show_in_website": 1 },
+		{'doctype': 'Item Group', 'item_group_name': _('Raw Material'),
+			'is_group': 'No', 'parent_item_group': _('All Item Groups') },
+		{'doctype': 'Item Group', 'item_group_name': _('Services'),
+			'is_group': 'No', 'parent_item_group': _('All Item Groups') },
+		{'doctype': 'Item Group', 'item_group_name': _('Sub Assemblies'),
+			'is_group': 'No', 'parent_item_group': _('All Item Groups') },
+		{'doctype': 'Item Group', 'item_group_name': _('Consumable'),
+			'is_group': 'No', 'parent_item_group': _('All Item Groups') },
 
 		# deduction type
 		{'doctype': 'Deduction Type', 'name': _('Income Tax'), 'description': _('Income Tax'), 'deduction_name': _('Income Tax')},
diff --git a/erpnext/templates/generators/item.html b/erpnext/templates/generators/item.html
index d560b80..8db39a3 100644
--- a/erpnext/templates/generators/item.html
+++ b/erpnext/templates/generators/item.html
@@ -22,19 +22,20 @@
 				{% endif %}
 			</div>
 			<div class="col-md-6">
-				<h3 itemprop="name" style="margin-top: 0px;">{{ item_name }}</h3>
-				<p class="help">Item Code: <span itemprop="productID">{{ name }}</span></p>
-				<h4>Product Description</h4>
+				<!-- <h3 itemprop="name" style="margin-top: 0px;">{{ item_name }}</h3> -->
 				<div itemprop="description">
-				{{ web_long_description or description or "[No description given]" }}
+				{{ web_long_description or description or _("No description given") }}
 				</div>
+				<p class="text-muted">
+					{{ _("Item Code") }}: <span itemprop="productID">{{ name }}</span></p>
+				<br>
 				<div style="min-height: 100px; margin: 10px 0;">
 					<div class="item-price-info" style="display: none;">
 						<h4 class="item-price" itemprop="price"></h4>
 						<div class="item-stock" itemprop="availablity"></div>
 						<div id="item-add-to-cart">
 							<button class="btn btn-primary">
-								<i class="icon-shopping-cart"></i> Add to Cart</button>
+								<i class="icon-shopping-cart"></i> + {{ _("Add to Cart") }}</button>
 						</div>
 						<div id="item-update-cart" class="input-group col-md-4" style="display: none;
 							padding-left: 0px; padding-right: 0px;">
@@ -51,7 +52,7 @@
 		{% if doc.get({"doctype":"Item Website Specification"}) -%}
 		<div class="row" style="margin-top: 20px">
 			<div class="col-md-12">
-				<h4>Specifications</h4>
+				<h4>{{ _("Specifications") }}</h4>
 				<table class="table table-bordered" style="width: 100%">
 				{% for d in doc.get(
 					{"doctype":"Item Website Specification"}) -%}
diff --git a/erpnext/templates/generators/item_group.html b/erpnext/templates/generators/item_group.html
index 1415adf..c52629f 100644
--- a/erpnext/templates/generators/item_group.html
+++ b/erpnext/templates/generators/item_group.html
@@ -1,7 +1,3 @@
-{% block title %} {{ title }} {% endblock %}
-
-{% block header %}<h2>{{ title }}</h2>{% endblock %}
-
 {% block content %}
 <div class="item-group-content">
 	{% include 'templates/includes/product_search_box.html' %}
@@ -11,22 +7,9 @@
 		{% endif %}
 		{% if description %}<!-- description -->
 		<div itemprop="description">{{ description or ""}}</div>
-		{% else %}
-		<h3>{{ name }}</h3>
 		{% endif %}
 	</div>
 	<div>
-		{% if sub_groups %}
-		<hr />
-		<div class="row">
-		{% for d in sub_groups %}
-			<div class="col-sm-4">
-				<a href="{{ d.page_name }}">{{ d.name }} ({{ d.count }})</a>
-			</div>
-		{% endfor %}
-		</div>
-		<hr />
-		{% endif %}
 		{% if items %}
 		<div id="search-list" class="row">
 			{% for item in items %}
@@ -37,7 +20,7 @@
 				<div class="alert alert-info info">Showing top 100 items.</div>
 			{% endif %}
 		{% else %}
-			<div class="alert alert-warning">No items listed.</div>
+			<div class="text-muted">No items listed.</div>
 		{% endif %}
 	</div>
 </div>
@@ -53,5 +36,3 @@
 </script>
 
 {% endblock %}
-
-{% block sidebar %}{% include "templates/includes/sidebar.html" %}{% endblock %}
diff --git a/erpnext/templates/generators/item_group.py b/erpnext/templates/generators/item_group.py
index 772f4f1..fab581c 100644
--- a/erpnext/templates/generators/item_group.py
+++ b/erpnext/templates/generators/item_group.py
@@ -13,9 +13,6 @@
 def get_context(context):
 	item_group_context = context.doc.as_dict()
 	item_group_context.update({
-		"sub_groups": frappe.db.sql("""select name, page_name
-			from `tabItem Group` where parent_item_group=%s
-			and ifnull(show_in_website,0)=1""", context.docname, as_dict=1),
 		"items": get_product_list_for_group(product_group = context.docname, limit=100),
 		"parent_groups": get_parent_item_groups(context.docname),
 		"title": context.docname
@@ -24,22 +21,20 @@
 	if context.doc.slideshow:
 		item_group_context.update(get_slideshow(context.doc))
 
-	for d in item_group_context.get("sub_groups"):
-		d.count = get_group_item_count(d.name)
-
 	return item_group_context
 
 def get_product_list_for_group(product_group=None, start=0, limit=10):
 	child_groups = ", ".join(['"' + i[0] + '"' for i in get_child_groups(product_group)])
 
 	# base query
-	query = """select name, item_name, page_name, website_image, item_group,
-			web_long_description as website_description
-		from `tabItem` where docstatus = 0 and show_in_website = 1
-		and (item_group in (%s)
-			or name in (select parent from `tabWebsite Item Group` where item_group in (%s))) """ % (child_groups, child_groups)
+	query = """select t1.name, t1.item_name, t1.page_name, t1.website_image, t1.item_group,
+			t1.web_long_description as website_description, t2.name as route
+		from `tabItem` t1, `tabWebsite Route` t2
+		where t1.show_in_website = 1 and (item_group in (%s)
+			or t1.name in (select parent from `tabWebsite Item Group` where item_group in (%s)))
+			and t1.name = t2.docname and t2.ref_doctype='Item' """ % (child_groups, child_groups)
 
-	query += """order by weightage desc, modified desc limit %s, %s""" % (start, limit)
+	query += """order by t1.weightage desc, t1.modified desc limit %s, %s""" % (start, limit)
 
 	data = frappe.db.sql(query, {"product_group": product_group}, as_dict=1)
 
diff --git a/erpnext/templates/includes/product_in_grid.html b/erpnext/templates/includes/product_in_grid.html
index 9ef4bbd..7edd0de 100644
--- a/erpnext/templates/includes/product_in_grid.html
+++ b/erpnext/templates/includes/product_in_grid.html
@@ -9,6 +9,6 @@
 		</a>
 	</div>
 	<div style="height: 100px; overflow: hidden; font-size: 80%;">
-		<h4 style="margin-bottom: 2px;"><a href="{{ page_name }}">{{ item_name }}</a></h4>
+		<div style="margin-bottom: 2px;"><a href="{{ route or page_name }}">{{ item_name }}</a></div>
 	</div>
-</div>
\ No newline at end of file
+</div>
diff --git a/erpnext/templates/includes/product_in_list.html b/erpnext/templates/includes/product_in_list.html
index 116124a..836781e 100644
--- a/erpnext/templates/includes/product_in_list.html
+++ b/erpnext/templates/includes/product_in_list.html
@@ -10,6 +10,6 @@
 		</a>
 	</div>
 	<div style="height: 100px; overflow: hidden; font-size: 80%;">
-		<h4 style="margin-bottom: 2px;"><a href="{{ page_name }}">{{ item_name }}</a></h4>
+		<div><a href="{{ page_name }}">{{ item_name }}</a></div>
 	</div>
-</div>
\ No newline at end of file
+</div>
diff --git a/erpnext/templates/includes/product_search_box.html b/erpnext/templates/includes/product_search_box.html
index d9dd53b..d4f6e7b 100644
--- a/erpnext/templates/includes/product_search_box.html
+++ b/erpnext/templates/includes/product_search_box.html
@@ -1,28 +1,31 @@
-<div style="margin-bottom: 20px;">
-	<form class="form-inline form-search row">
-		<div class="input-group col-md-4 col-md-offset-8">
-			<input class="form-control" type="text" id="product-search" placeholder="Product Search...">
-			<span class="input-group-btn">
-				<button class="btn btn-default" type="button" id="btn-product-search">
-					<i class="icon-search"></i></button>
-			</span>
-		</div>
-	</form>
-	<script>
-		// redirect to product search page
-		frappe.ready(function() {
-			$('.dropdown-toggle').dropdown();
-			$("#btn-product-search").click(function() {
-				var txt = $("#product-search").val();
-				if(txt) {
-					window.location.href="product_search?q=" + txt;
-				}
-				return false;
-			});
-			$("#product-search").keypress(function(e) {
-				if(e.which==13) $("#btn-product-search").click();
-			});
-			$(".form-search").on("submit", function() { return false; });
-		});
-	</script>
-</div>
+<script>
+frappe.ready(function() {
+	$(".product-search").remove();
+
+	$('<div class="product-search">\
+			<form class="form-inline form-search">\
+			<div class="input-group">\
+				<input class="form-control" type="text" id="product-search" placeholder="Product Search...">\
+				<span class="input-group-btn">\
+					<button class="btn btn-default" type="button" id="btn-product-search">\
+						<i class="icon-search"></i></button>\
+				</span>\
+			</div>\
+		</form>\
+	</div>').appendTo(".page-header-right");
+
+	$('.dropdown-toggle').dropdown();
+	$("#btn-product-search").click(function() {
+		var txt = $("#product-search").val();
+		if(txt) {
+			window.location.href="product_search?q=" + txt;
+		}
+		return false;
+	});
+	$("#product-search").keypress(function(e) {
+		if(e.which==13) $("#btn-product-search").click();
+	});
+	$(".form-search").on("submit", function() { return false; });
+
+});
+</script>
diff --git a/erpnext/templates/pages/product_search.py b/erpnext/templates/pages/product_search.py
index 8d4a8f6..8b454ce 100644
--- a/erpnext/templates/pages/product_search.py
+++ b/erpnext/templates/pages/product_search.py
@@ -12,18 +12,19 @@
 @frappe.whitelist(allow_guest=True)
 def get_product_list(search=None, start=0, limit=10):
 	# base query
-	query = """select name, item_name, page_name, website_image, item_group,
-			web_long_description as website_description
-		from `tabItem` where docstatus = 0 and show_in_website = 1 """
+	query = """select t1.name, t1.item_name, t1.page_name, t1.website_image, t1.item_group,
+			t1.web_long_description as website_description, t2.name as route
+		from `tabItem` t1, `tabWebsite Route` t2 where t1.show_in_website = 1
+			and t1.name = t2.docname and t2.ref_doctype = 'Item'"""
 
 	# search term condition
 	if search:
-		query += """and (web_long_description like %(search)s or
-				item_name like %(search)s or name like %(search)s)"""
+		query += """and (t1.web_long_description like %(search)s or t1.description like %(search)s or
+				t1.item_name like %(search)s or t1.name like %(search)s)"""
 		search = "%" + cstr(search) + "%"
 
 	# order by
-	query += """order by weightage desc, modified desc limit %s, %s""" % (start, limit)
+	query += """order by t1.weightage desc, t1.modified desc limit %s, %s""" % (start, limit)
 
 	data = frappe.db.sql(query, {
 		"search": search,