diff --git a/erpnext/home/page/event_updates/event_updates.js b/erpnext/home/page/event_updates/event_updates.js
index faf9a75..1ce83df 100644
--- a/erpnext/home/page/event_updates/event_updates.js
+++ b/erpnext/home/page/event_updates/event_updates.js
@@ -477,10 +477,6 @@
 	});
 }
 
-FeedList.prototype.after_run = function() {
-	this.list.has_data() ? $dh(this.no_result) : $ds(this.no_result)
-}
-
 FeedList.prototype.render_feed = function(parent, data) {
 	new FeedItem(parent, data, this);
 }
diff --git a/erpnext/startup/event_handlers.py b/erpnext/startup/event_handlers.py
index 603d8f3..1bdbcb4 100644
--- a/erpnext/startup/event_handlers.py
+++ b/erpnext/startup/event_handlers.py
@@ -41,7 +41,8 @@
 	
 	if webnotes.session['user']=='Guest':
 		bootinfo['topbar'] = webnotes.model.doc.getsingle('Top Bar Settings')
-		bootinfo['topbaritems'] = webnotes.conn.sql("""select label, std_page, custom_page, parent_label
+		bootinfo['topbaritems'] = webnotes.conn.sql("""select label, std_page, custom_page, 
+			parent_label, parentfield
 			from `tabTop Bar Item` where parent='Top Bar Settings' order by idx asc""", as_dict=1)
 	else:	
 		bootinfo['letter_heads'] = get_letter_heads()
diff --git a/erpnext/startup/modules.js b/erpnext/startup/modules.js
index b5356d9..9503dbe 100644
--- a/erpnext/startup/modules.js
+++ b/erpnext/startup/modules.js
@@ -266,11 +266,14 @@
 SidebarItem.prototype.show_section = function(sec_type) {
 	var me = this;
 	var label = this.det.module_label + ' ' + sec_type;
-	var type_map = {'Reports':'Reports', 'Custom Reports':'Custom Reports', 'Pages':'Tools', 'Single DocType':'Tools', 'Setup Forms':'Tools'}
+	var type_map = {'Reports':'Reports', 'Custom Reports':'Custom Reports', 
+		'Pages':'Tools', 'Single DocType':'Tools', 'Setup Forms':'Tools'}
+
 
 	if(page_body.pages[label]) {
 		loadpage(label, null, 1);
 	} else {
+		
 		// make the reports page
 		var page = page_body.add_page(label);
 		this.wrapper = $a(page,'div','layout_wrapper');
@@ -373,3 +376,6 @@
 	$c_obj('Home Control', 'get_module_order', '', callback)
 
 }
+
+
+
diff --git a/erpnext/startup/modules_new.js b/erpnext/startup/modules_new.js
new file mode 100644
index 0000000..5f912b0
--- /dev/null
+++ b/erpnext/startup/modules_new.js
@@ -0,0 +1,36 @@
+// Tools Page
+erpnext.ListPage = Class.extend({
+	init: function(opts) {
+		var me = this;
+		this.opts = opts;
+		this.page = page_body.add_page[opts.title];
+		this.page.wrapper = $a(this.page, 'div', 'layout_wrapper');
+		this.page.head = new PageHeading(this.wrapper, this.title)
+		this.page.list = new wn.widgets.Listing({
+			parent: this.page.wrapper,
+			query: opts.query,
+			render:row: opts.render_row
+		});
+	},
+	show: function() {
+		if(this.first) {
+			this.page.list.run();
+			this.first = false;
+		}
+		page_body.change_to(this.opts.title);
+	}
+});
+
+erpnext.ToolsPage = erpnext.ListPage.extend({
+	init: function(opts) {
+		this._super({
+			title: opts.module + ' Settings',
+			query: repl('select name, description from tabDocType where \
+				module=%(module)s and ifnull(issingle,0)=1 order by name asc', opts),
+			render_row: function(parent, data) {
+				parent.innerHTML = repl('<a href="#!Form/%(name)s/%(name)s">%(name)s</a>\
+					<div class="comment">%(description)s</div>', data)
+			}
+		})
+	}
+});
\ No newline at end of file
diff --git a/erpnext/startup/startup.js b/erpnext/startup/startup.js
index f97eb39..70dcfc4 100644
--- a/erpnext/startup/startup.js
+++ b/erpnext/startup/startup.js
@@ -28,13 +28,13 @@
 		wn.require('erpnext/startup/toolbar.js');
 		erpnext.toolbar.setup();
 		wn.require('erpnext/startup/feature_setup.js');
+
+		// border to the body
+		// ------------------
+		$('footer').html('<div class="erpnext-footer">\
+			Powered by <a href="https://erpnext.com">ERPNext</a></div>');
 	}
 	
-	// border to the body
-	// ------------------
-	$('footer').html('<div class="erpnext-footer">\
-		Powered by <a href="https://erpnext.com">ERPNext</a></div>');
-
 	$('#startup_div').toggle(false);
 }
 
diff --git a/erpnext/stock/doctype/item/item.txt b/erpnext/stock/doctype/item/item.txt
index 28d0c7a..ec3b160 100644
--- a/erpnext/stock/doctype/item/item.txt
+++ b/erpnext/stock/doctype/item/item.txt
@@ -5,14 +5,14 @@
 	{
 		'creation': '2010-08-08 17:09:05',
 		'docstatus': 0,
-		'modified': '2012-01-30 12:10:37',
+		'modified': '2012-01-30 16:46:37',
 		'modified_by': 'Administrator',
 		'owner': 'Administrator'
 	},
 
 	# These values are common for all DocType
 	{
-		'_last_update': '1327904359',
+		'_last_update': '1327905637',
 		'allow_attach': 1,
 		'allow_trash': 1,
 		'autoname': 'field:item_code',
@@ -29,7 +29,7 @@
 		'show_in_menu': 0,
 		'subject': '%(item_name)s',
 		'tag_fields': 'item_group',
-		'version': 164
+		'version': 165
 	},
 
 	# These values are common for all DocField
@@ -495,98 +495,6 @@
 
 	# DocField
 	{
-		'doctype': 'DocField',
-		'fieldtype': 'Section Break',
-		'label': 'Website Details',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': 'White:FFF',
-		'description': 'Check here to show this item on your website under "Products"',
-		'doctype': 'DocField',
-		'fieldname': 'show_in_website',
-		'fieldtype': 'Check',
-		'label': 'Show in website',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': 'White:FFF',
-		'description': 'Small image shown in listings (100px width) (Attach first)',
-		'doctype': 'DocField',
-		'fieldname': 'thumbnail_image',
-		'fieldtype': 'Select',
-		'label': 'Thumbnail Image',
-		'options': 'attach_files:',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': 'White:FFF',
-		'description': 'Small image shown product page (300px width) (Attach first)',
-		'doctype': 'DocField',
-		'fieldname': 'full_image',
-		'fieldtype': 'Select',
-		'label': 'Full Image',
-		'options': 'attach_files:',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': 'DocField',
-		'fieldtype': 'Column Break',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': 'White:FFF',
-		'description': 'Price list for your website (leave blank if you do not want to show the price)',
-		'doctype': 'DocField',
-		'fieldname': 'website_price_list',
-		'fieldtype': 'Link',
-		'label': 'Website Price List',
-		'options': 'Price List',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': 'White:FFF',
-		'description': 'Enter your shipping warehouse if you want "In Stock" or "Out of Stock" to appear on your website',
-		'doctype': 'DocField',
-		'fieldname': 'website_warehouse',
-		'fieldtype': 'Link',
-		'label': 'Website Warehouse',
-		'options': 'Warehouse',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'doctype': 'DocField',
-		'fieldtype': 'Section Break',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'colour': 'White:FFF',
-		'description': 'Detailed description of your product for your website. Formatted in html/markdown format.',
-		'doctype': 'DocField',
-		'fieldname': 'website_description',
-		'fieldtype': 'Code',
-		'label': 'Website Description',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
 		'colour': 'White:FFF',
 		'doctype': 'DocField',
 		'fieldtype': 'Section Break',
diff --git a/erpnext/website/Module Def/Website/Website.txt b/erpnext/website/Module Def/Website/Website.txt
index fa35cde..8ac31c7 100644
--- a/erpnext/website/Module Def/Website/Website.txt
+++ b/erpnext/website/Module Def/Website/Website.txt
@@ -5,7 +5,7 @@
 	{
 		'creation': '2012-01-23 17:05:32',
 		'docstatus': 0,
-		'modified': '2012-01-30 12:19:11',
+		'modified': '2012-01-31 15:19:28',
 		'modified_by': 'Administrator',
 		'owner': 'Administrator'
 	},
@@ -54,6 +54,22 @@
 
 	# Module Def Item
 	{
+		'display_name': 'Web Page',
+		'doc_name': 'Web Page',
+		'doc_type': 'Forms',
+		'doctype': 'Module Def Item'
+	},
+
+	# Module Def Item
+	{
+		'display_name': 'Product',
+		'doc_name': 'Product',
+		'doc_type': 'Forms',
+		'doctype': 'Module Def Item'
+	},
+
+	# Module Def Item
+	{
 		'display_name': 'Blog',
 		'doc_name': 'Blog',
 		'doc_type': 'Forms',
diff --git a/erpnext/website/css/website.css b/erpnext/website/css/website.css
index 5afb47d..c653c3b 100644
--- a/erpnext/website/css/website.css
+++ b/erpnext/website/css/website.css
@@ -3,6 +3,10 @@
 	margin: auto;
 }
 
+footer {
+	width: 900px;
+	margin: auto;
+}
 header .topbar .container {
 	width: 900px;
 	margin: auto;
@@ -25,4 +29,42 @@
 	margin-right: 15px;
 	color: #606060;
 	overflow-x: hidden;
+}
+
+.web-footer {
+	text-align: center;
+	color: #777;
+	margin: 10px;
+	line-height: 1.7;
+}
+
+.web-footer div, .web-footer a {
+	font-size: 11px;
+}
+
+.web-footer-menu {
+	margin-bottom: 7px;
+}
+.web-footer a, .web-footer a:visited {
+	color: #777;
+}
+
+.web-footer a:hover {
+	background-color: #777;
+	color: #fff;
+}
+
+.web-footer-menu ul {
+	list-style: none;
+	margin: 0px;
+}
+
+.web-footer-menu ul li {
+	display: inline;
+	padding: 2px 15px;
+	border-right: 1px solid #999;
+}
+
+.web-footer-menu ul li:last-child {
+	border-right: 0px solid #777;
 }
\ No newline at end of file
diff --git a/erpnext/website/doctype/blog/blog.py b/erpnext/website/doctype/blog/blog.py
index 1545741..e9c0d74 100644
--- a/erpnext/website/doctype/blog/blog.py
+++ b/erpnext/website/doctype/blog/blog.py
@@ -5,6 +5,7 @@
 """
 
 import webnotes
+import website.utils
 
 class DocType():
 	def __init__(self, d, dl):
@@ -12,27 +13,11 @@
 		
 	def autoname(self):
 		"""save file by its name"""
-		import re
-		self.doc.name = re.sub('[~!@#$%^&*()<>,."\']', '', self.doc.title.lower())
-		self.doc.name = '-'.join(self.doc.name.split()[:4])
-		if webnotes.conn.sql("""select name from tabBlog where name=%s""", self.doc.name) or \
-			webnotes.conn.sql("""select name from tabPage where name=%s""", self.doc.name):
-			webnotes.msgprint("Another page with similar title exists, please change the title",\
-				raise_exception=1)
+		self.doc.name = website.utils.page_name(self.doc.title)
 	
 	def on_update(self):
-		"""write/update 'Page' with the blog"""
-		from webnotes.model.doc import Document
-		
-		if webnotes.conn.sql("""select name from tabPage where name=%s""", self.doc.name):
-			p = Document('Page', self.doc.name)
-		else:
-			p = Document('Page')
-			
-		p.title = self.doc.title
-		p.name = p.page_name = self.doc.name
-		p.module = 'Website'
-		p.standard = 'No'
+		"""write/update 'Page' with the blog"""		
+		p = website.utils.add_page(self.doc.title)
 		
 		from jinja2 import Template
 		import markdown2
@@ -48,11 +33,6 @@
 		
 		p.save()
 		
-		# add guest access
-		if not webnotes.conn.sql("""select parent from `tabPage Role`
-			where role='Guest' and parent=%s""", self.doc.name):
-			d = Document('Page Role')
-			d.parent = self.doc.name
-			d.role = 'Guest'
-			d.save()
+		website.utils.add_guest_access_to_page(p.name)
+
 			
\ No newline at end of file
diff --git a/erpnext/website/doctype/product/__init__.py b/erpnext/website/doctype/product/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/website/doctype/product/__init__.py
diff --git a/erpnext/website/doctype/product/product.js b/erpnext/website/doctype/product/product.js
new file mode 100644
index 0000000..c0b507e
--- /dev/null
+++ b/erpnext/website/doctype/product/product.js
@@ -0,0 +1,6 @@
+$.extend(cur_frm.cscript, {
+	onload: function() {
+		cur_frm.add_fetch('item', 'description', 'short_description');
+		cur_frm.add_fetch('item', 'item_name', 'title');
+	}
+});
\ No newline at end of file
diff --git a/erpnext/website/doctype/product/product.py b/erpnext/website/doctype/product/product.py
new file mode 100644
index 0000000..935d762
--- /dev/null
+++ b/erpnext/website/doctype/product/product.py
@@ -0,0 +1,27 @@
+class DocType:
+	def __init__(self, d, dl):
+		self.doc, self.doclist = d, dl
+		
+	def validate(self):
+		"""make page for this product"""
+		import website.utils
+		
+		p = website.utils.add_page("Product " + self.doc.title)
+		
+		from jinja2 import Template
+		import markdown2
+		import os
+		
+		self.doc.long_description_html = markdown2.markdown(self.doc.long_description or '')
+		
+		with open(os.path.join(os.path.dirname(__file__), 'template.html'), 'r') as f:
+			p.content = Template(f.read()).render(doc=self.doc)
+		
+		with open(os.path.join(os.path.dirname(__file__), 'product_page.js'), 'r') as f:
+			p.script = Template(f.read()).render(doc=self.doc)
+		
+		p.save()
+		
+		website.utils.add_guest_access_to_page(p.name)
+		self.doc.page_name = p.name
+		del self.doc.fields['long_description_html']
\ No newline at end of file
diff --git a/erpnext/website/doctype/product/product.txt b/erpnext/website/doctype/product/product.txt
new file mode 100644
index 0000000..fac4cfb
--- /dev/null
+++ b/erpnext/website/doctype/product/product.txt
@@ -0,0 +1,251 @@
+# DocType, Product
+[
+
+	# These values are common in all dictionaries
+	{
+		'creation': '2012-01-30 16:21:29',
+		'docstatus': 0,
+		'modified': '2012-01-31 13:46:23',
+		'modified_by': 'Administrator',
+		'owner': 'Administrator'
+	},
+
+	# These values are common for all DocType
+	{
+		'_last_update': '1327995660',
+		'allow_attach': 1,
+		'autoname': 'field:item',
+		'colour': 'White:FFF',
+		'description': 'A Product is shown on the website and is linked to an item.',
+		'doctype': 'DocType',
+		'max_attachments': 5,
+		'module': 'Website',
+		'name': '__common__',
+		'section_style': 'Simple',
+		'show_in_menu': 0,
+		'version': 10
+	},
+
+	# These values are common for all DocField
+	{
+		'doctype': 'DocField',
+		'name': '__common__',
+		'parent': 'Product',
+		'parentfield': 'fields',
+		'parenttype': 'DocType'
+	},
+
+	# These values are common for all DocPerm
+	{
+		'doctype': 'DocPerm',
+		'name': '__common__',
+		'parent': 'Product',
+		'parentfield': 'permissions',
+		'parenttype': 'DocType',
+		'read': 1,
+		'role': 'Website Manager'
+	},
+
+	# DocType, Product
+	{
+		'doctype': 'DocType',
+		'name': 'Product'
+	},
+
+	# DocPerm
+	{
+		'create': 1,
+		'doctype': 'DocPerm',
+		'permlevel': 0,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'doctype': 'DocPerm',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'colour': 'White:FFF',
+		'doctype': 'DocField',
+		'fieldname': 'item',
+		'fieldtype': 'Link',
+		'label': 'Item',
+		'options': 'Item',
+		'permlevel': 0,
+		'reqd': 1
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
+		'fieldname': 'title',
+		'fieldtype': 'Link',
+		'label': 'Title',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
+		'fieldname': 'published',
+		'fieldtype': 'Check',
+		'label': 'Published',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'colour': 'White:FFF',
+		'description': 'Select Price List for the web. Leave blank to hide price.',
+		'doctype': 'DocField',
+		'fieldname': 'price_list',
+		'fieldtype': 'Link',
+		'label': 'Price List',
+		'options': 'Price List',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'colour': 'White:FFF',
+		'description': 'Select shipping warehouse to show "In Stock" or "Out of Stock". To hide, leave blank',
+		'doctype': 'DocField',
+		'fieldname': 'warehouse',
+		'fieldtype': 'Link',
+		'label': 'Warehouse',
+		'options': 'Warehouse',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
+		'fieldtype': 'Column Break',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'colour': 'White:FFF',
+		'description': 'Image for listing (Width: 100px) (Attach First)',
+		'doctype': 'DocField',
+		'fieldname': 'thumbnail_image',
+		'fieldtype': 'Select',
+		'label': 'Thumbnail Image',
+		'options': 'attach_files:',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'colour': 'White:FFF',
+		'description': 'Image for listing (Width: 300px) (Attach First)',
+		'doctype': 'DocField',
+		'fieldname': 'full_image',
+		'fieldtype': 'Select',
+		'label': 'Full Image',
+		'options': 'attach_files:',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'colour': 'White:FFF',
+		'doctype': 'DocField',
+		'fieldname': 'short_description',
+		'fieldtype': 'Text',
+		'label': 'Short Description',
+		'permlevel': 0,
+		'reqd': 1
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
+		'fieldtype': 'Section Break',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'colour': 'White:FFF',
+		'description': 'Full description (formatted as markdown)',
+		'doctype': 'DocField',
+		'fieldname': 'long_description',
+		'fieldtype': 'Code',
+		'label': 'Long Description',
+		'permlevel': 0,
+		'reqd': 0
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
+		'fieldtype': 'Section Break',
+		'permlevel': 0
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
+		'fieldname': 'page_name',
+		'fieldtype': 'Data',
+		'label': 'Page Name',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'colour': 'White:FFF',
+		'doctype': 'DocField',
+		'fieldname': 'price',
+		'fieldtype': 'Currency',
+		'hidden': 0,
+		'label': 'Price',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'colour': 'White:FFF',
+		'doctype': 'DocField',
+		'fieldname': 'sales',
+		'fieldtype': 'Currency',
+		'label': 'Sales',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
+		'fieldname': 'stock',
+		'fieldtype': 'Currency',
+		'label': 'Stock',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
+		'fieldname': 'currency',
+		'fieldtype': 'Link',
+		'label': 'Currency',
+		'options': 'Currency',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
+		'fieldname': 'file_list',
+		'fieldtype': 'Text',
+		'hidden': 1,
+		'label': 'File List',
+		'no_copy': 1,
+		'permlevel': 0,
+		'print_hide': 1
+	}
+]
\ No newline at end of file
diff --git a/erpnext/website/doctype/product/product_page.js b/erpnext/website/doctype/product/product_page.js
new file mode 100644
index 0000000..7d031ef
--- /dev/null
+++ b/erpnext/website/doctype/product/product_page.js
@@ -0,0 +1,13 @@
+wn.require('erpnext/website/js/product_category.js');
+
+pscript["onload_{{ doc.page_name }}"] = function(wrapper) {
+	erpnext.make_product_categories(wrapper);
+	$(wrapper).find('.product-inquiry').click(function() {
+		loadpage('contact', function() {
+			$('#content-contact-us [name="contact-message"]').val("Hello,\n\n\
+			Please send me more information on {{ doc.title }} (Item Code:{{ doc.item }})\n\n\
+			My contact details are:\n\nThank you!\
+			");
+		})
+	})
+}
\ No newline at end of file
diff --git a/erpnext/website/doctype/product/template.html b/erpnext/website/doctype/product/template.html
new file mode 100644
index 0000000..8c7f918
--- /dev/null
+++ b/erpnext/website/doctype/product/template.html
@@ -0,0 +1,28 @@
+<div class="layout_wrapper">
+	<div class="web-content" id="content-product-{{ doc.name }}">
+		<h1>{{ doc.title }}</h1>
+		<div class="web-main-section">
+			<div style="float: left;">
+				<image src="files/{{ doc.full_image }}" style="width: 300px; 
+					margin-left: 15px;" />
+				{{ doc.long_description_html }}
+				<button class="btn primary product-inquiry" 
+					data-product="{{ doc.name }}"
+					data-description="{{ doc.short_description }}">Send Inquiry</button>
+			</div>
+		</div>
+		<div class="web-side-section">
+			<div class="info-box round">
+				<p><b>Item Code:</b> {{ doc.item }}</p>
+				<p>{{ doc.short_description }}</p>
+				<p><button class="btn primary product-inquiry" 
+					data-product="{{ doc.name }}"
+					data-description="{{ doc.short_description }}">Send Inquiry</button>
+				</p>
+			</div>
+			<br>
+			<h4>More Categories</h4>
+		</div>
+		<div style="clear: both"></div>
+	</div>
+</div>
\ No newline at end of file
diff --git a/erpnext/website/doctype/products_settings/products_settings.py b/erpnext/website/doctype/products_settings/products_settings.py
new file mode 100644
index 0000000..195f37f
--- /dev/null
+++ b/erpnext/website/doctype/products_settings/products_settings.py
@@ -0,0 +1,15 @@
+import webnotes
+
+class DocType:
+	def __init__(self, d, dl):
+		self.doc, self.doclist = d, dl
+	
+	def on_update(self):
+		tmp = None
+		for d in self.doclist:
+			if d.doctype=="Product Group":
+				import json
+				tmp = json.dumps({"item_group": d.item_group, "label":d.label})
+				break
+				
+		webnotes.conn.set_default("default_product_category", tmp)
\ No newline at end of file
diff --git a/erpnext/website/doctype/top_bar_item/top_bar_item.txt b/erpnext/website/doctype/top_bar_item/top_bar_item.txt
index e352ef5..410352c 100644
--- a/erpnext/website/doctype/top_bar_item/top_bar_item.txt
+++ b/erpnext/website/doctype/top_bar_item/top_bar_item.txt
@@ -5,7 +5,7 @@
 	{
 		'creation': '2012-01-24 10:24:19',
 		'docstatus': 0,
-		'modified': '2012-01-24 10:24:19',
+		'modified': '2012-01-30 14:14:48',
 		'modified_by': 'Administrator',
 		'owner': 'Administrator'
 	},
@@ -19,7 +19,7 @@
 		'name': '__common__',
 		'section_style': 'Simple',
 		'show_in_menu': 0,
-		'version': 1
+		'version': 2
 	},
 
 	# These values are common for all DocField
@@ -52,7 +52,7 @@
 		'fieldname': 'std_page',
 		'fieldtype': 'Select',
 		'label': 'Std Page',
-		'options': 'Home\nAbout\nContact\nProduct\nCustomer\nBlog\nPartner\nCareer\nCustom'
+		'options': 'Home\nAbout\nContact\nProducts\nBlog\nCustom'
 	},
 
 	# DocField
diff --git a/erpnext/website/doctype/top_bar_settings/top_bar_settings.txt b/erpnext/website/doctype/top_bar_settings/top_bar_settings.txt
index d651461..ad9a158 100644
--- a/erpnext/website/doctype/top_bar_settings/top_bar_settings.txt
+++ b/erpnext/website/doctype/top_bar_settings/top_bar_settings.txt
@@ -5,14 +5,14 @@
 	{
 		'creation': '2012-01-24 10:21:41',
 		'docstatus': 0,
-		'modified': '2012-01-24 10:45:02',
+		'modified': '2012-01-31 15:55:34',
 		'modified_by': 'Administrator',
 		'owner': 'Administrator'
 	},
 
 	# These values are common for all DocType
 	{
-		'_last_update': '1327380941',
+		'_last_update': '1327382102',
 		'allow_attach': 1,
 		'colour': 'White:FFF',
 		'doctype': 'DocType',
@@ -23,7 +23,7 @@
 		'name': '__common__',
 		'section_style': 'Simple',
 		'show_in_menu': 0,
-		'version': 3
+		'version': 4
 	},
 
 	# These values are common for all DocField
@@ -69,6 +69,13 @@
 
 	# DocField
 	{
+		'doctype': 'DocField',
+		'fieldtype': 'Section Break',
+		'label': 'Top Bar'
+	},
+
+	# DocField
+	{
 		'colour': 'White:FFF',
 		'description': 'Brand is what appears on the top-right of the toolbar. If it is an image, make sure it\nhas a transparent background and use the &lt;img /&gt; tag',
 		'doctype': 'DocField',
@@ -89,6 +96,38 @@
 	# DocField
 	{
 		'doctype': 'DocField',
+		'fieldtype': 'Section Break',
+		'label': 'Footer'
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
+		'fieldname': 'address',
+		'fieldtype': 'Text',
+		'label': 'Address'
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
+		'fieldname': 'copyright',
+		'fieldtype': 'Data',
+		'label': 'Copyright'
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
+		'fieldname': 'footer_items',
+		'fieldtype': 'Table',
+		'label': 'Footer Items',
+		'options': 'Top Bar Item'
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
 		'fieldname': 'file_list',
 		'fieldtype': 'Text',
 		'hidden': 1,
diff --git a/erpnext/website/doctype/web_page/__init__.py b/erpnext/website/doctype/web_page/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/website/doctype/web_page/__init__.py
diff --git a/erpnext/website/doctype/web_page/template.html b/erpnext/website/doctype/web_page/template.html
new file mode 100644
index 0000000..8b0049b
--- /dev/null
+++ b/erpnext/website/doctype/web_page/template.html
@@ -0,0 +1,13 @@
+<div class="layout_wrapper">
+	<div class="web-content" id="content-{{ doc.name }}">
+		<h1>{{ doc.title }}</h1>
+		<br>
+		<div class="web-main-section">
+			{{ doc.main_section_html }}
+		</div>
+		<div class="web-side-section">
+			{{ doc.side_section_html }}
+		</div>
+		<div style="clear: both"></div>
+	</div>
+</div>
\ No newline at end of file
diff --git a/erpnext/website/doctype/web_page/web_page.py b/erpnext/website/doctype/web_page/web_page.py
new file mode 100644
index 0000000..d2ad6d3
--- /dev/null
+++ b/erpnext/website/doctype/web_page/web_page.py
@@ -0,0 +1,30 @@
+import webnotes
+import website.utils
+
+class DocType:
+	def __init__(self, d, dl):
+		self.doc, self.doclist = d, dl
+	
+	def autoname(self):
+		"""name from title"""
+		self.doc.name = website.utils.page_name(self.doc.title)
+
+	def validate(self):
+		"""make page for this product"""					
+		p = website.utils.add_page(self.doc.title)
+		
+		from jinja2 import Template
+		import os
+	
+		website.utils.markdown(self.doc, ['main_section', 'side_section'])
+		
+		with open(os.path.join(os.path.dirname(__file__), 'template.html'), 'r') as f:
+			p.content = Template(f.read()).render(doc=self.doc)
+
+		p.save()
+		
+		website.utils.add_guest_access_to_page(p.name)
+		
+		del self.doc.fields['main_section_html']
+		del self.doc.fields['side_section_html']
+		
\ No newline at end of file
diff --git a/erpnext/website/doctype/web_page/web_page.txt b/erpnext/website/doctype/web_page/web_page.txt
new file mode 100644
index 0000000..aa08a8e
--- /dev/null
+++ b/erpnext/website/doctype/web_page/web_page.txt
@@ -0,0 +1,110 @@
+# DocType, Web Page
+[
+
+	# These values are common in all dictionaries
+	{
+		'creation': '2012-01-31 15:18:49',
+		'docstatus': 0,
+		'modified': '2012-01-31 15:48:50',
+		'modified_by': 'Administrator',
+		'owner': 'Administrator'
+	},
+
+	# These values are common for all DocType
+	{
+		'_last_update': '1328003330',
+		'allow_attach': 1,
+		'colour': 'White:FFF',
+		'description': 'A custom page is a simple page with the layout - headline, main section, side section\n\nEditing:\n\n- Editing is in [markdown format](http://daringfireball.net/projects/markdown/syntax)\n- You can also add images and embed html code\n\nAccessing the page:\n\n- The page can be accessed as #![page-name] after the main url\n\nIdeal for pages like FAQ, Terms, Help etc.\n\n',
+		'doctype': 'DocType',
+		'max_attachments': 5,
+		'module': 'Website',
+		'name': '__common__',
+		'section_style': 'Simple',
+		'show_in_menu': 0,
+		'version': 3
+	},
+
+	# These values are common for all DocField
+	{
+		'doctype': 'DocField',
+		'name': '__common__',
+		'parent': 'Web Page',
+		'parentfield': 'fields',
+		'parenttype': 'DocType',
+		'permlevel': 0
+	},
+
+	# These values are common for all DocPerm
+	{
+		'doctype': 'DocPerm',
+		'name': '__common__',
+		'parent': 'Web Page',
+		'parentfield': 'permissions',
+		'parenttype': 'DocType',
+		'read': 1,
+		'role': 'Website Manager'
+	},
+
+	# DocType, Web Page
+	{
+		'doctype': 'DocType',
+		'name': 'Web Page'
+	},
+
+	# DocPerm
+	{
+		'create': 1,
+		'doctype': 'DocPerm',
+		'permlevel': 0,
+		'write': 1
+	},
+
+	# DocPerm
+	{
+		'doctype': 'DocPerm',
+		'permlevel': 1
+	},
+
+	# DocField
+	{
+		'colour': 'White:FFF',
+		'description': 'Title / headline of your page',
+		'doctype': 'DocField',
+		'fieldname': 'title',
+		'fieldtype': 'Data',
+		'label': 'Title',
+		'reqd': 1
+	},
+
+	# DocField
+	{
+		'colour': 'White:FFF',
+		'description': 'Content in markdown format that appears on the main side of your page',
+		'doctype': 'DocField',
+		'fieldname': 'main_section',
+		'fieldtype': 'Code',
+		'label': 'Main Section'
+	},
+
+	# DocField
+	{
+		'colour': 'White:FFF',
+		'description': 'Content in markdown format that appears on the right side',
+		'doctype': 'DocField',
+		'fieldname': 'side_section',
+		'fieldtype': 'Code',
+		'label': 'Side Section'
+	},
+
+	# DocField
+	{
+		'doctype': 'DocField',
+		'fieldname': 'file_list',
+		'fieldtype': 'Text',
+		'hidden': 1,
+		'label': 'File List',
+		'no_copy': 1,
+		'print_hide': 1
+	}
+]
\ No newline at end of file
diff --git a/erpnext/website/js/product_category.js b/erpnext/website/js/product_category.js
new file mode 100644
index 0000000..04b7e71
--- /dev/null
+++ b/erpnext/website/js/product_category.js
@@ -0,0 +1,22 @@
+// make sidelisting of categories
+erpnext.product_item_group = {}
+
+erpnext.make_product_categories = function(wrapper) {
+	wrapper.category_list = new wn.widgets.Listing({
+		parent: $(wrapper).find('.web-side-section').get(0),
+		query: 'select label, count(t2.name) as items, t1.item_group \
+			from `tabProduct Group` t1, `tabItem` t2\
+			where t1.parent="Products Settings" \
+			and t2.item_group = t1.item_group \
+			and ifnull(t2.show_in_website, 0)=1 \
+			group by t2.item_group \
+			order by t1.idx desc',
+		hide_refresh: true,
+		render_row: function(parent, data) {
+			parent.innerHTML = repl('<a href="#!products/%(label)s">%(label)s</a> (%(items)s)', 
+				data);
+			erpnext.product_item_group[data.label] = data.item_group;
+		}
+	});
+	wrapper.category_list.run();	
+}
diff --git a/erpnext/website/js/topbar.js b/erpnext/website/js/topbar.js
index 788ed62..d7cba89 100644
--- a/erpnext/website/js/topbar.js
+++ b/erpnext/website/js/topbar.js
@@ -35,8 +35,8 @@
 		var items = wn.boot.topbaritems
 		for(var i=0;i<items.length;i++) {
 			var item = items[i];
-			if(!item.parent_label) {
-				item.route = item.std_page.toLowerCase();
+			if(!item.parent_label && item.parentfield=='top_bar_items') {
+				item.route = item.std_page ? item.std_page.toLowerCase() : item.custom_page;
 				$('header .nav:first').append(repl('<li><a href="#!%(route)s" \
 					data-label="%(label)s">%(label)s</a></li>', item))
 			}
@@ -44,4 +44,31 @@
 	}
 });
 
-erpnext.topbar.topbar = new erpnext.topbar.TopBar();
\ No newline at end of file
+erpnext.topbar.topbar = new erpnext.topbar.TopBar();
+
+// footer
+erpnext.Footer = Class.extend({
+	init: function() {
+		$('footer').html(repl('<div class="web-footer">\
+			<div class="web-footer-menu"><ul></ul></div>\
+			<div class="web-footer-address">%(address)s</div>\
+			<div class="web-footer-copyright">&copy; %(copyright)s</div>\
+			<div class="web-footer-powered">Powered by \
+				<a href="https://erpnext.com">erpnext.com</a></div>\
+		</div>', wn.boot.topbar));
+		this.make_items();
+	},
+	make_items: function() {
+		var items = wn.boot.topbaritems
+		for(var i=0;i<items.length;i++) {
+			var item = items[i];
+			if(!item.parent_label && item.parentfield=='footer_items') {
+				item.route = item.std_page ? item.std_page.toLowerCase() : item.custom_page;
+				$('.web-footer-menu ul').append(repl('<li><a href="#!%(route)s" \
+					data-label="%(label)s">%(label)s</a></li>', item))
+			}
+		}
+	}
+});
+
+erpnext.footer = new erpnext.Footer();
\ No newline at end of file
diff --git a/erpnext/website/page/products/products.html b/erpnext/website/page/products/products.html
index 57f1354..4ef5bf4 100644
--- a/erpnext/website/page/products/products.html
+++ b/erpnext/website/page/products/products.html
@@ -1,6 +1,6 @@
 <div class="layout_wrapper" id="content-products">
 	<div class="web-main-section">
-		<h2 class="products-category"></h2>
+		<h1 class="products-category"></h1>
 		<div class="products-search">
 			<input name="products-search" /><button class="btn">Search</button>
 		</div>
@@ -8,4 +8,5 @@
 	<div class="web-side-section">
 		<h3>Categories</h3>
 	</div>
+	<div style="clear:both;">
 </div>
\ No newline at end of file
diff --git a/erpnext/website/page/products/products.js b/erpnext/website/page/products/products.js
index 993397d..0e7dec5 100644
--- a/erpnext/website/page/products/products.js
+++ b/erpnext/website/page/products/products.js
@@ -1,11 +1,84 @@
 erpnext.products = {}
 
+wn.require('erpnext/website/js/product_category.js');
+
 pscript.onload_products = function(wrapper) {
+	sys_defaults.default_product_category = JSON.parse(sys_defaults.default_product_category);
+	erpnext.products.wrapper = wrapper;	
+
+	// make lists
+	erpnext.make_product_categories(wrapper);
+	erpnext.products.make_product_list(wrapper);
+	
+	// button
+	$(wrapper).find('.products-search .btn').click(function() {
+		wrapper.mainlist.run();
+	});
+	
+	$(wrapper).find('.products-search input').keypress(function(ev) {
+		if(ev.which==13) $(wrapper).find('.products-search .btn').click();
+	});
+}
+
+pscript.onshow_products = function(wrapper) {
+	// show default product category
+	erpnext.products.set_group();
+}
+
+erpnext.products.get_group = function() {
+	var route = window.location.hash.split('/');
+	if(route.length>1) {
+		// from url
+		var grp = erpnext.product_item_group[route[1]];
+		var label = route[1];
+	} else {
+		// default
+		var grp = sys_defaults.default_product_category.item_group;
+		var label = sys_defaults.default_product_category.label;
+	}
+	erpnext.products.cur_group = grp;
+	return {grp:grp, label:label};
+}
+
+erpnext.products.make_product_list = function(wrapper) {
+	wrapper.mainlist = new wn.widgets.Listing({
+		parent: $(wrapper).find('.web-main-section').get(0),
+		run_btn: $(wrapper).find('.products-search .btn').get(0),
+		hide_refresh: true,
+		get_query: function() {
+			args = {
+				searchstr: $('input[name="products-search"]').val() || '',
+				cat: erpnext.products.cur_group
+			};
+			return repl('select t1.name, t1.title, t1.thumbnail_image, \
+				t1.page_name, t1.short_description \
+				from tabProduct t1, tabItem t2 \
+				where t1.item = t2.name \
+				and t2.item_group="%(cat)s" \
+				and t1.short_description like "%%(searchstr)s%"', args)
+		},
+		render_row: function(parent, data) {
+			parent.innerHTML = repl('<div style="float:left; width: 115px;">\
+				<img src="files/%(thumbnail_image)s" style="width:100px;"></div>\
+				<div style="float:left; width: 400px">\
+					<b><a href="#!%(page_name)s">%(title)s</a></b>\
+					<p>%(short_description)s</p></div>\
+				<div style="clear: both; margin-bottom: 7px;"></div>', data);
+		}
+	});
+	
+}
+
+erpnext.products.set_group = function() {
+	var cat = erpnext.products.get_group();
+	if(!cat.grp) {
+		// still nothing
+		setTimeout('erpnext.products.set_group()', 1000);
+		return;		
+	}
 	// get erpnext.products.default_category
+	var wrapper = erpnext.products.wrapper;
 	
-	// make search box
-	
-	// make main listing based on default category
-	
-	// make sidelisting of categories
+	$(wrapper).find('h1').html(cat.label);
+	wrapper.mainlist.run();
 }
\ No newline at end of file
diff --git a/erpnext/website/utils.py b/erpnext/website/utils.py
index e1802cb..330f7a3 100644
--- a/erpnext/website/utils.py
+++ b/erpnext/website/utils.py
@@ -1,14 +1,53 @@
+import webnotes
+from webnotes.model.doc import Document
+
 def make_template(doc, path, convert_fields = ['main_section', 'side_section']):
 	"""make template"""
-	import os, jinja2, markdown2
+	import os, jinja2
 	
-	# markdown
-	for f in convert_fields:
-		doc.fields[f + '_html'] = markdown2.markdown(doc.fields[f] or '', \
-			extras=["wiki-tables"])
+	markdown(doc, convert_fields)
 	
 	# write template
 	with open(path, 'r') as f:
 		temp = jinja2.Template(f.read())
 	
-	return temp.render(doc = doc.fields)	
\ No newline at end of file
+	return temp.render(doc = doc.fields)
+
+def markdown(doc, fields):
+	"""convert fields to markdown"""
+	import markdown2
+	# markdown
+	for f in fields:
+		doc.fields[f + '_html'] = markdown2.markdown(doc.fields[f] or '', \
+			extras=["wiki-tables"])
+
+
+def page_name(title):
+	"""make page name from title, and check that there is no duplicate"""
+	import re
+	name = re.sub('[~!@#$%^&*()<>,."\']', '', title.lower())
+	return '-'.join(name.split()[:4])
+	
+def add_page(title):
+	"""add a custom page with title"""
+	name = page_name(title)
+	if webnotes.conn.sql("""select name from tabPage where name=%s""", name):
+		p = Document('Page', name)
+	else:
+		p = Document('Page')
+		
+	p.title = title
+	p.name = p.page_name = name
+	p.module = 'Website'
+	p.standard = 'No'
+
+	return p
+	
+def add_guest_access_to_page(page):
+	"""add Guest in Page Role"""
+	if not webnotes.conn.sql("""select parent from `tabPage Role`
+		where role='Guest' and parent=%s""", page):
+		d = Document('Page Role')
+		d.parent = page
+		d.role = 'Guest'
+		d.save()
\ No newline at end of file
diff --git a/index.html b/index.html
index d758f2f..a75f24a 100644
--- a/index.html
+++ b/index.html
@@ -3,7 +3,7 @@
 	<meta charset="utf-8">
 	<title>ERPNext</title>
 	<meta name="author" content="">
-	<script type="text/javascript">window._version_number="249";
+	<script type="text/javascript">window._version_number="276";
 
 /*
 *	lib/js/wn/class.js
diff --git a/version.num b/version.num
index cb16690..8bc94cb 100644
--- a/version.num
+++ b/version.num
@@ -1 +1 @@
-249
\ No newline at end of file
+276
\ No newline at end of file
