website updates and fix to sessions
diff --git a/website/templates/css/products.css b/website/templates/css/products.css
deleted file mode 100644
index 73289c4..0000000
--- a/website/templates/css/products.css
+++ /dev/null
@@ -1,11 +0,0 @@
-	<style>
-		.img-area {
-			float:left;
-			width: 115px;
-		}
-		
-		.product-list-description {
-			float:left;
-			width: 400px;
-		}
-	</style>
\ No newline at end of file
diff --git a/website/templates/html/outer.html b/website/templates/html/outer.html
index 9741451..1580cbe 100644
--- a/website/templates/html/outer.html
+++ b/website/templates/html/outer.html
@@ -9,7 +9,7 @@
 	</header>
 	<div id="body_div">
 		<div class="navbar-wrapper">
-		<div class="navbar navbar-inverse" 
+		<div class="navbar" 
 			style="margin-bottom: 0px;">
 			<div class="navbar-inner">
 			<div class="container">
diff --git a/website/templates/html/product_group.html b/website/templates/html/product_group.html
index d5e1871..91d79b5 100644
--- a/website/templates/html/product_group.html
+++ b/website/templates/html/product_group.html
@@ -1 +1,35 @@
 {% extends "html/page.html" %}
+
+{% block content %}
+
+<div class="layout-wrapper layout-wrapper-background">
+	<div class="web-content" id="content-product_group">
+		<div class="layout-main" style="padding: 30px;">
+			{% include 'html/product_search_box.html' %}
+			{% if description %}
+			<div>{{ description or ""}}</div>
+			{% else %}
+			<h3>{{ name }}</h3>
+			{% endif %}
+			{% if sub_groups %}
+			<div class="well">
+				<div class="container-fluid">
+				{% for d in sub_groups %}
+					<div class="span2">
+						<i class="icon-chevron-right"></i>
+						<a href="{{ d.page_name }}">{{ d.name }}</a></div>
+				{% endfor %}
+				</div>
+			</div>
+			{% endif %}
+			{% if obj.doclist.get({"doctype":"Featured Item"}) %}
+			<hr>
+			<h3>Featured Products</h3>
+			
+			{% endif %}
+			
+		</div>
+	</div>
+</div>
+
+{% endblock %}
\ No newline at end of file
diff --git a/website/templates/html/product_page.html b/website/templates/html/product_page.html
index 50b3060..dd94190 100644
--- a/website/templates/html/product_page.html
+++ b/website/templates/html/product_page.html
@@ -22,6 +22,7 @@
 			<div class="layout-main" style="padding: 30px;">
 				{% include 'html/product_search_box.html' %}
 				<h1>{{ item_name }}</h1>
+				<p class="help">Item Code: {{ name }}</p>
 				<div class="product-page-content">
 					<div class="span6">
 					{% if website_image %}
@@ -29,7 +30,7 @@
 					{% else %}
 					<div class="img-area">
 						<div style='background-color: #eee; padding: 40px;
-							width: 32px; font-size: 32px; color: #888;'>
+							width: 32px; font-size: 32px; color: #888;' title='No Image'>
 						<i class='icon-camera'></i></div>
 					</div>
 					
@@ -46,7 +47,8 @@
 					<div class="span9">
 						<h3>Product Description</h3>
 						<div>
-						{{ web_long_description or web_short_description }}
+						{{ web_long_description or web_short_description or 
+							"[No description given]" }}
 						</div>
 						<hr>
 						{% if obj.doclist.get({"doctype":"Item Website Specification"}) %}
diff --git a/website/templates/html/product_search_box.html b/website/templates/html/product_search_box.html
index 3cbb3e9..125f0ba 100644
--- a/website/templates/html/product_search_box.html
+++ b/website/templates/html/product_search_box.html
@@ -1,7 +1,8 @@
-<div class="pull-right">
+<div class="pull-right" style="margin-top:-15px;">
 	<form class="form-search">
 		<div class="input-append">
-			<input type="text" class="span2 search-query" id="product-search">
+			<input type="text" class="span2 search-query" 
+				id="product-search" placeholder="Product Search...">
 			<button class="btn" id="btn-product-search">
 				<i class="icon-search"></i></button>
 		</div>
@@ -21,4 +22,5 @@
 			})
 		})
 	</script>
-</div>
\ No newline at end of file
+</div>
+<div class="clearfix"></div>
\ No newline at end of file
diff --git a/website/templates/js/blog.js b/website/templates/js/blog.js
index 43b2d70..6f3260c 100644
--- a/website/templates/js/blog.js
+++ b/website/templates/js/blog.js
@@ -59,10 +59,17 @@
 				<p><a href="%(page_name)s">Read with comments...</a></p>\
 				<hr /><br />', b)).appendTo($wrap);
 		});
-		blog.start += data.length;
+		blog.start += (data.length || 0);
 		if(!data.length) {
-			$("#next-page").toggle(false)
-				.parent().append("<div class='alert'>Nothing more to show.</div>");
+			if(blog.start) {
+				$("#next-page").toggle(false)
+					.parent().append("<div class='alert'>Nothing more to show.</div>");	
+			} else {
+				$("#next-page").toggle(false)
+					.parent().append("<div class='alert'>No blogs written yet.</div>");	
+			}
+		} else {
+			$("#next-page").toggle(true);
 		}
 	}
 }
\ No newline at end of file
diff --git a/website/templates/js/blog_subscribe.js b/website/templates/js/blog_subscribe.js
deleted file mode 100644
index cdc0130..0000000
--- a/website/templates/js/blog_subscribe.js
+++ /dev/null
@@ -1,33 +0,0 @@
-wn.provide('erpnext.blog');
-
-(function() {
-	$('body').on('click', '.btn-blog-subscribe', function() {
-		var d = new wn.ui.Dialog({
-			title: "Get Blog Updates via Email",
-			fields: [
-				{label: "Your Name", fieldtype:"Data", reqd:1},
-				{label: "Your Email Address", fieldtype:"Data", reqd:1
-					,description: "You can unsubscribe anytime."},
-				{label: "Subscribe", fieldtype:"Button"}
-			]
-		});
-		$(d.fields_dict.subscribe.input).click(function() {
-			var args = d.get_values();
-			if(!args) return;
-			wn.call({
-				method: 'website.helpers.blog.add_subscriber',
-				args: args,
-				callback: function(r) {
-					if(r.exc) {
-						msgprint('Opps there seems to be some error, Please check back after some time.');
-					} else {
-						msgprint('Thanks for subscribing!');
-					}
-					d.hide();
-				},
-				btn: this
-			})
-		})
-		d.show()
-	})	
-})()
diff --git a/website/templates/js/product_category.js b/website/templates/js/product_category.js
deleted file mode 100644
index 2b34708..0000000
--- a/website/templates/js/product_category.js
+++ /dev/null
@@ -1,18 +0,0 @@
-wn.provide('erpnext.products');
-
-erpnext.products.make_product_categories = function(wrapper) {
-	if (!wrapper) { wrapper = erpnext.products.wrapper; }
-	if (!wrapper) { return; }
-
-	wrapper.category_list = new wn.ui.Listing({
-		parent: $(wrapper).find('.more-categories').get(0),
-		method: 'website.helpers.product.get_product_category_list',
-		hide_refresh: true,
-		render_row: function(parent, data) {
-			parent.innerHTML = repl(
-				'<a href="products.html#!products/%(item_group)s">%(item_group)s</a> (%(items)s)', 
-				data);
-		}
-	});
-	wrapper.category_list.run();
-}
\ No newline at end of file
diff --git a/website/templates/js/products.js b/website/templates/js/products.js
deleted file mode 100644
index 720d192..0000000
--- a/website/templates/js/products.js
+++ /dev/null
@@ -1,106 +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/>.
-
-// js inside blog page
-
-{% include "js/product_category.js" %}
-
-wn.pages['{{ name }}'].onload = function(wrapper) {
-	erpnext.products.wrapper = wrapper;
-	
-	// make product categories in the sidebar
-	erpnext.products.make_product_categories(wrapper);
-	
-	// make lists
-	erpnext.products.make_product_list(wrapper);
-	
-	// bind search button or enter key
-	$(wrapper).find('.products-search .btn').click(function() {
-		erpnext.products.product_list.run();
-	});
-	
-	$(wrapper).find('.products-search input').keypress(function(ev) {
-		if(ev.which==13) $(wrapper).find('.products-search .btn').click();
-	});
-}
-
-erpnext.products.make_product_list = function(wrapper) {
-	if (!wrapper) { wrapper = erpnext.products.wrapper; }
-	if (!wrapper) { return; }
-	
-	erpnext.products.product_list = new wn.ui.Listing({
-		parent: $(wrapper).find('#products-list').get(0),
-		run_btn: $(wrapper).find('.products-search .btn').get(0),
-		no_toolbar: true,
-		method: 'website.helpers.product.get_product_list',
-		get_args: function() {
-			return {
-				search: $('input[name="products-search"]').val() || '',
-				product_group: erpnext.products.cur_group || '',
-			};
-		},
-		render_row: function(parent, data) {
-			if (!data.web_short_description) {
-				data.web_short_description = data.description;
-			}
-			parent.innerHTML = repl('\
-				<a href="%(page_name)s.html"><div class="img-area"></div></a>\
-				<div class="product-list-description">\
-					<h4><a href="%(page_name)s.html">%(item_name)s</a></h4>\
-					<p>%(web_short_description)s</p></div>\
-				<div style="clear: both;"></div>', data);
-				
-			if(data.website_image) {
-				$(parent).find('.img-area').append(repl(
-					'<img src="files/%(website_image)s" style="width:100px;">', data))
-			} else {
-				$(parent).find('.img-area').append(wn.dom.placeholder(100, 
-					data.item_name));
-			}
-		}
-	});
-}
-
-wn.pages['{{ name }}'].onshow = function(wrapper) {
-	// show default product category
-	erpnext.products.set_group();
-}
-
-erpnext.products.set_group = function() {
-	var cat = erpnext.products.get_group();
-
-	// get erpnext.products.default_category
-	var wrapper = erpnext.products.wrapper;
-	
-	$(wrapper).find('h1').html(cat.label);
-	erpnext.products.product_list.run();
-}
-
-erpnext.products.get_group = function() {
-	route = wn.get_route();
-	if(route && route.length>1) {
-		// from url
-		var grp = route[1];
-		var label = route[1];
-		erpnext.products.cur_group = grp;
-	} else {
-		// default
-		var grp = 'Products';
-		var label = 'Products';
-		erpnext.products.cur_group = null;
-	}
-	return {grp:grp, label:label};
-}
\ No newline at end of file
diff --git a/website/templates/pages/404.html b/website/templates/pages/404.html
index 0423608..04584d9 100644
--- a/website/templates/pages/404.html
+++ b/website/templates/pages/404.html
@@ -3,7 +3,7 @@
 {% block content %}
 <div class="content">
 	<div class="layout-wrapper layout-main">
-		<h3>Page missing or moved</h3>
+		<h3><i class="icon-exclamation-sign"></i> Page missing or moved</h3>
 		<br>
 		<p>We are very sorry for this, but the page you are looking for is missing
 			(this could be because of a typo in the address) or moved.</p>
diff --git a/website/templates/pages/blog.html b/website/templates/pages/blog.html
index 75681d5..f31af42 100644
--- a/website/templates/pages/blog.html
+++ b/website/templates/pages/blog.html
@@ -17,11 +17,12 @@
 			<div class="layout-main">
 				<h1>Blog</h1>
 				<br>
-				<div id="blog-list" style="min-height: 400px;">
+				<div id="blog-list">
 					<!-- blog list will be generated dynamically -->
 				</div>
 				<div style="text-align: center;">
-					<button id="next-page" class="btn">More...</button>
+					<button id="next-page" class="btn" 
+						style="display:none;">More...</button>
 				</div>
 			</div>
 		</div>
diff --git a/website/templates/pages/error.html b/website/templates/pages/error.html
new file mode 100644
index 0000000..4fe394f
--- /dev/null
+++ b/website/templates/pages/error.html
@@ -0,0 +1,11 @@
+{% extends "html/outer.html" %}
+
+{% block content %}
+<div class="content">
+	<div class="layout-wrapper layout-main">
+		<h3><i class="icon-exclamation-sign"></i> Oops, a server error has occured</h3>
+		<br>
+		<pre>%(error)s</pre>
+	</div>
+</div>
+{% endblock %}
\ No newline at end of file
diff --git a/website/templates/pages/product_search.html b/website/templates/pages/product_search.html
index 53a0572..f8a1144 100644
--- a/website/templates/pages/product_search.html
+++ b/website/templates/pages/product_search.html
@@ -56,7 +56,13 @@
 			
 		}
 		if(data.length < 10) {
-			$(".more-btn").replaceWith("<div class='alert'>Nothing more to show</div>");
+			if(!table) {
+				$(".more-btn")
+					.replaceWith("<div class='alert'>No results found for your search.</div>");
+			} else {
+				$(".more-btn")
+					.replaceWith("<div class='alert'>Nothing more to show.</div>");
+			}
 		} else {
 			$(".more-btn").toggle(true)
 		}
@@ -78,8 +84,11 @@
 			<div id="search-list">
 				
 			</div>
-			<div class="more-btn" style="text-align: middle; display: none;">
-				<button class="btn">More...</button>
+			<div style="text-align: center;">
+				<div class="more-btn" 
+					style="display: none; text-align: center;">
+					<button class="btn">More...</button>
+				</div>
 			</div>
 		</div>
 	</div>
diff --git a/website/templates/pages/products.html b/website/templates/pages/products.html
deleted file mode 100644
index aa23ea2..0000000
--- a/website/templates/pages/products.html
+++ /dev/null
@@ -1,37 +0,0 @@
-{% extends "html/page.html" %}
-
-{% block javascript %}
-	{% include "js/products.js" %}
-{% endblock %}
-
-{% block css %}
-	{% include "css/products.css" %}
-{% endblock %}
-
-{% block title %}
-	Products
-{% endblock %}
-
-{% block content %}
-	<div class="layout-wrapper layout-wrapper-background">
-		<div class="web-content" id="content-products">
-			
-			<div class="layout-main-section">
-				<h1 class="products-category"></h1>
-				<div class="products-search" style="margin-bottom: 15px;">
-					<input name="products-search" />
-					<button class="btn" style="margin-left: 7px">Search</button>
-				</div>
-				<div id="products-list">
-					<!-- product list will be generated dynamically -->
-				</div>
-			</div>
-			
-			<div class="layout-side-section">
-				<h3>Categories</h3>
-				<div class="more-categories"></div>
-			</div>
-			<div style="clear: both"></div>
-		</div>
-	</div>
-{% endblock %}
\ No newline at end of file