website css cleanups + dropdown in top toolbar
diff --git a/css/all-app.css b/css/all-app.css
index 80f023c..b681fa3 100644
--- a/css/all-app.css
+++ b/css/all-app.css
@@ -119,6 +119,13 @@
 	line-height: 1.5em;
 }
 
+hr {
+  margin: 18px 0;
+  border: 0;
+  border-top: 1px solid #e5e5e5;
+  border-bottom: 1px solid #ffffff;
+}
+
 a:active { outline:none; }
 
 :focus { -moz-outline-style:none; }
diff --git a/css/all-web.css b/css/all-web.css
index ece9bf1..f576a1a 100644
--- a/css/all-web.css
+++ b/css/all-web.css
@@ -119,6 +119,13 @@
 	line-height: 1.5em;
 }
 
+hr {
+  margin: 18px 0;
+  border: 0;
+  border-top: 1px solid #e5e5e5;
+  border-bottom: 1px solid #ffffff;
+}
+
 a:active { outline:none; }
 
 :focus { -moz-outline-style:none; }
@@ -1044,6 +1051,14 @@
 	margin-bottom: 15px;
 }
 
+h2 {
+	margin-bottom: 11px;
+}
+
+h3 {
+	margin-bottom: 7px;
+}
+
 pre {
     background-color: #F8F8F8;
     border: 1px solid #CCCCCC;
@@ -1078,13 +1093,6 @@
 	margin-bottom: 20px;
 }
 
-.web-main-section p,
-.web-main-section h4,
-.web-main-section h5,
-.web-main-section pre  {
-	margin-left: 9px;
-}
-
 .web-side-section {
 	width: 30%;
 	float: right;
diff --git a/erpnext/website/css/website.css b/erpnext/website/css/website.css
index 28303db..6c89130 100644
--- a/erpnext/website/css/website.css
+++ b/erpnext/website/css/website.css
@@ -11,6 +11,14 @@
 	margin-bottom: 15px;
 }
 
+h2 {
+	margin-bottom: 11px;
+}
+
+h3 {
+	margin-bottom: 7px;
+}
+
 pre {
     background-color: #F8F8F8;
     border: 1px solid #CCCCCC;
@@ -45,13 +53,6 @@
 	margin-bottom: 20px;
 }
 
-.web-main-section p,
-.web-main-section h4,
-.web-main-section h5,
-.web-main-section pre  {
-	margin-left: 9px;
-}
-
 .web-side-section {
 	width: 30%;
 	float: right;
diff --git a/erpnext/website/doctype/blog/blog_page.js b/erpnext/website/doctype/blog/blog_page.js
index 3ad2535..d8c4076 100644
--- a/erpnext/website/doctype/blog/blog_page.js
+++ b/erpnext/website/doctype/blog/blog_page.js
@@ -21,7 +21,7 @@
 	
 	
 	// comments
-	$(wrapper).find('.web-main-section').append('<h3>Comments</h3>');
+	$(wrapper).find('.web-main-section').append('<hr><h3>Comments</h3>');
 
 	wrapper.comment_list = new wn.widgets.Listing({
 		parent: $(wrapper).find('.web-main-section').get(0),
diff --git a/erpnext/website/doctype/web_page/web_page.py b/erpnext/website/doctype/web_page/web_page.py
index 0a1a60e..6d64c7d 100644
--- a/erpnext/website/doctype/web_page/web_page.py
+++ b/erpnext/website/doctype/web_page/web_page.py
@@ -32,6 +32,7 @@
 		
 		website.utils.add_guest_access_to_page(p.name)
 		self.cleanup_temp()
+		self.if_home_clear_cache()
 			
 	def add_page_links(self):
 		"""add links for next_page and see_also"""
@@ -54,4 +55,10 @@
 		for f in fl:
 			if f in self.doc.fields:
 				del self.doc.fields[f]
+				
+	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
+			clear_cache('Guest')			
 	
\ No newline at end of file
diff --git a/erpnext/website/js/topbar.js b/erpnext/website/js/topbar.js
index a101221..8b70d1e 100644
--- a/erpnext/website/js/topbar.js
+++ b/erpnext/website/js/topbar.js
@@ -13,6 +13,7 @@
 		this.make();
 		$('.brand').html(wn.boot.website_settings.brand_html);
 		this.make_items();
+		$('.topbar').dropdown();
 	},
 	make: function() {
 		$('header').append('<div class="topbar">\
@@ -31,13 +32,32 @@
 		$('.brand').attr('href', '#!' + (wn.boot.website_settings.home_page || 'Login Page'))
 	},
 	make_items: function() {
-		var items = wn.boot.website_menus
+		var items = wn.boot.website_menus;
+		
+		// parent labels
 		for(var i=0;i<items.length;i++) {
 			var item = items[i];
 			if(!item.parent_label && item.parentfield=='top_bar_items') {
 				item.route = item.url || item.custom_page;
-				$('header .nav:first').append(repl('<li><a href="#!%(route)s" \
-					data-label="%(label)s">%(label)s</a></li>', item))
+				$('header .nav:first').append(repl('<li data-label="%(label)s">\
+					<a href="#!%(route)s">%(label)s</a></li>', item))
+			}
+		}
+		
+		// child labels
+		for(var i=0;i<items.length;i++) {
+			var item = items[i];
+			if(item.parent_label && item.parentfield=='top_bar_items') {
+				// check if parent label has class "dropdown"
+				$parent_li = $(repl('header li[data-label="%(parent_label)s"]', item));
+				if(!$parent_li.hasClass('dropdown')) {
+					$parent_li.addClass('dropdown');
+					$parent_li.find('a:first').addClass('dropdown-toggle');
+					$parent_li.append('<ul class="dropdown-menu"></ul>');
+				}
+				item.route = item.url || item.custom_page;
+				$parent_li.find('.dropdown-menu').append(repl('<li data-label="%(label)s">\
+					<a href="#!%(route)s">%(label)s</a></li>', item))
 			}
 		}
 	}
diff --git a/erpnext/website/page/contact/contact.py b/erpnext/website/page/contact/contact.py
index 2fd00f7..a8a9133 100644
--- a/erpnext/website/page/contact/contact.py
+++ b/erpnext/website/page/contact/contact.py
@@ -1,6 +1,6 @@
 import json, webnotes
 
-@webnotes.whitelist()
+@webnotes.whitelist(allow_guest=True)
 def send(args):
 	"""create support ticket"""
 	args = json.loads(args)
diff --git a/erpnext/website/page/products/products.js b/erpnext/website/page/products/products.js
index 28baaec..4877eee 100644
--- a/erpnext/website/page/products/products.js
+++ b/erpnext/website/page/products/products.js
@@ -67,7 +67,7 @@
 				<div style="float:left; width: 400px">\
 					<p><b><a href="#!%(page_name)s">%(title)s</a></b></p>\
 					<p>%(short_description)s</p></div>\
-				<div style="clear: both; margin-bottom: 15px; border-bottom: 1px solid #AAA"></div>', data);
+				<div style="clear: both;"></div><hr />', data);
 		}
 	});
 }
diff --git a/js/all-app.js b/js/all-app.js
index 44f9a83..7b76caf 100644
--- a/js/all-app.js
+++ b/js/all-app.js
Binary files differ
diff --git a/js/all-web.js b/js/all-web.js
index 43b9df4..15a2c6c 100644
--- a/js/all-web.js
+++ b/js/all-web.js
@@ -463,7 +463,10 @@
 this.set_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&&this.input.refresh)this.input.refresh(this.df);if(!this.not_in_form)
+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(){if(this.df.reqd){if(this.get_value&&is_null(this.get_value())){if(this.label_icon)$ds(this.label_icon);$(this.txt?this.txt:this.input).addClass('field-to-update')}else{if(this.label_icon)$dh(this.label_icon);$(this.txt?this.txt:this.input).removeClass('field-to-update')}}}
 Field.prototype.set=function(val){if(this.not_in_form)
@@ -1134,7 +1137,7 @@
 /*
  *	erpnext/website/js/topbar.js
  */
-wn.provide('erpnext.topbar');erpnext.topbar.TopBar=Class.extend({init:function(){this.make();$('.brand').html(wn.boot.website_settings.brand_html);this.make_items();},make:function(){$('header').append('<div class="topbar">\
+wn.provide('erpnext.topbar');erpnext.topbar.TopBar=Class.extend({init:function(){this.make();$('.brand').html(wn.boot.website_settings.brand_html);this.make_items();$('.topbar').dropdown();},make:function(){$('header').append('<div class="topbar">\
    <div class="topbar-inner">\
    <div class="container">\
     <a class="brand">[brand]</a>\
@@ -1146,9 +1149,11 @@
     </ul>\
    </div>\
    </div>\
-   </div>');$('.brand').attr('href','#!'+(wn.boot.website_settings.home_page||'Login Page'))},make_items:function(){var items=wn.boot.website_menus
-for(var i=0;i<items.length;i++){var item=items[i];if(!item.parent_label&&item.parentfield=='top_bar_items'){item.route=item.url||item.custom_page;$('header .nav:first').append(repl('<li><a href="#!%(route)s" \
-     data-label="%(label)s">%(label)s</a></li>',item))}}}});erpnext.Footer=Class.extend({init:function(){$('footer').html(repl('<div class="web-footer">\
+   </div>');$('.brand').attr('href','#!'+(wn.boot.website_settings.home_page||'Login Page'))},make_items:function(){var items=wn.boot.website_menus;for(var i=0;i<items.length;i++){var item=items[i];if(!item.parent_label&&item.parentfield=='top_bar_items'){item.route=item.url||item.custom_page;$('header .nav:first').append(repl('<li data-label="%(label)s">\
+     <a href="#!%(route)s">%(label)s</a></li>',item))}}
+for(var i=0;i<items.length;i++){var item=items[i];if(item.parent_label&&item.parentfield=='top_bar_items'){$parent_li=$(repl('header li[data-label="%(parent_label)s"]',item));if(!$parent_li.hasClass('dropdown')){$parent_li.addClass('dropdown');$parent_li.find('a:first').addClass('dropdown-toggle');$parent_li.append('<ul class="dropdown-menu"></ul>');}
+item.route=item.url||item.custom_page;$parent_li.find('.dropdown-menu').append(repl('<li data-label="%(label)s">\
+     <a href="#!%(route)s">%(label)s</a></li>',item))}}}});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>\
diff --git a/version.num b/version.num
index b872400..9ec873d 100644
--- a/version.num
+++ b/version.num
@@ -1 +1 @@
-427
\ No newline at end of file
+438
\ No newline at end of file