diff --git a/website/css/website.css b/website/css/website.css
index d1be219..fb671a1 100644
--- a/website/css/website.css
+++ b/website/css/website.css
@@ -5,12 +5,17 @@
 div#body_div {
 	padding: 0px;
 	min-height: 400px;
-	margin: 40px auto;
+	margin: 40px auto 10px auto;
 	box-shadow: 1px 1px 3px 3px #bbb;
 	border-radius: 5px;
 	overflow: hidden;
 }
 
+footer {
+	width: 720px;
+	margin: auto;
+}
+
 .navbar-inner {
 	border: 0px;
 	border-bottom: 1px solid #ddd;
@@ -33,6 +38,16 @@
 	padding: 30px;
 }
 
+.social-icons {
+	font-size: 120%
+}
+.social-icons a:hover {
+	text-decoration: none;
+}
+.social-icons a i:hover {
+	text-decoration: none;
+}
+
 .web-footer-menu {
 	margin-bottom: 7px;
 }
diff --git a/website/doctype/website_settings/website_settings.txt b/website/doctype/website_settings/website_settings.txt
index 78bc533..80d721a 100644
--- a/website/doctype/website_settings/website_settings.txt
+++ b/website/doctype/website_settings/website_settings.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-01-10 16:34:33", 
+  "creation": "2013-01-25 11:35:10", 
   "docstatus": 0, 
-  "modified": "2013-01-22 14:59:43", 
+  "modified": "2013-02-20 14:31:02", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -24,17 +24,14 @@
   "permlevel": 0
  }, 
  {
-  "create": 1, 
   "doctype": "DocPerm", 
   "name": "__common__", 
   "parent": "Website Settings", 
   "parentfield": "permissions", 
   "parenttype": "DocType", 
-  "permlevel": 0, 
   "read": 1, 
   "report": 0, 
-  "submit": 0, 
-  "write": 1
+  "submit": 0
  }, 
  {
   "doctype": "DocType", 
@@ -130,6 +127,48 @@
  }, 
  {
   "doctype": "DocField", 
+  "fieldname": "integrations", 
+  "fieldtype": "Section Break", 
+  "label": "Integrations"
+ }, 
+ {
+  "description": "Add Google Analytics ID: eg. UA-89XXX57-1. Please search help on Google Analytics for more information.", 
+  "doctype": "DocField", 
+  "fieldname": "google_analytics_id", 
+  "fieldtype": "Data", 
+  "label": "Google Analytics ID"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "column_break_17", 
+  "fieldtype": "Column Break"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "google_plus_one", 
+  "fieldtype": "Check", 
+  "label": "Google Plus One"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "facebook_share", 
+  "fieldtype": "Check", 
+  "label": "Facebook Share"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "linked_in_share", 
+  "fieldtype": "Check", 
+  "label": "Linked In Share"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "twitter_share", 
+  "fieldtype": "Check", 
+  "label": "Twitter Share"
+ }, 
+ {
+  "doctype": "DocField", 
   "fieldname": "misc_section", 
   "fieldtype": "Section Break", 
   "label": "Misc"
@@ -170,11 +209,25 @@
   "print_hide": 1
  }, 
  {
+  "create": 1, 
   "doctype": "DocPerm", 
-  "role": "System Manager"
+  "permlevel": 0, 
+  "role": "System Manager", 
+  "write": 1
  }, 
  {
+  "create": 1, 
   "doctype": "DocPerm", 
-  "role": "Website Manager"
+  "permlevel": 0, 
+  "role": "Website Manager", 
+  "write": 1
+ }, 
+ {
+  "amend": 0, 
+  "cancel": 0, 
+  "create": 0, 
+  "doctype": "DocPerm", 
+  "permlevel": 1, 
+  "role": "All"
  }
 ]
\ No newline at end of file
diff --git a/website/helpers/make_web_include_files.py b/website/helpers/make_web_include_files.py
index 3bbc563..62b8c66 100644
--- a/website/helpers/make_web_include_files.py
+++ b/website/helpers/make_web_include_files.py
@@ -1,11 +1,11 @@
 # Copyright (c) 2012 Web Notes Technologies Pvt Ltd.
 # License: GNU General Public License (v3). For more information see license.txt
 
+import os
+import webnotes
+import website.utils
+
 def make():
-	import os
-	import webnotes
-	import website.utils
-	import startup.event_handlers
 
 	if not webnotes.conn:
 		webnotes.connect()
@@ -16,17 +16,45 @@
 	if os.path.basename(os.path.abspath('.'))!='public':
 		fname = os.path.join('public', fname)
 			
-	if hasattr(startup.event_handlers, 'get_web_script'):
-		with open(fname, 'w') as f:
-			script = 'window.home_page = "%s";\n' % home_page
-			script += startup.event_handlers.get_web_script()
-			f.write(script)
+	with open(fname, 'w') as f:
+		f.write(get_web_script())
 
 	fname = 'css/wn-web.css'
 	if os.path.basename(os.path.abspath('.'))!='public':
 		fname = os.path.join('public', fname)
 
 	# style - wn.css
-	if hasattr(startup.event_handlers, 'get_web_style'):
-		with open(fname, 'w') as f:
-			f.write(startup.event_handlers.get_web_style())
\ No newline at end of file
+	with open(fname, 'w') as f:
+		f.write(get_web_style())
+
+def get_web_script():
+	"""returns web startup script"""
+	user_script = ""
+	
+	ws = webnotes.doc("Website Settings", "Website Settings")
+
+	if ws.google_analytics_id:
+		user_script += google_analytics_template % ws.google_analytics_id
+	
+	user_script += (webnotes.conn.get_value('Website Script', None, 'javascript') or '')
+
+	return user_script
+	
+def get_web_style():
+	"""returns web css"""
+	return webnotes.conn.get_value('Style Settings', None, 'custom_css') or ''
+
+google_analytics_template = """
+
+// Google Analytics template
+
+window._gaq = window._gaq || [];
+window._gaq.push(['_setAccount', '%s']);
+window._gaq.push(['_trackPageview']);
+
+(function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+})();
+"""
\ No newline at end of file
diff --git a/website/module_def/website/locale/_messages_doc.json b/website/module_def/website/locale/_messages_doc.json
index 7e41f2b..c33eada 100644
--- a/website/module_def/website/locale/_messages_doc.json
+++ b/website/module_def/website/locale/_messages_doc.json
@@ -3,7 +3,6 @@
  "", 
  "Settings for Contact Us Page", 
  "Cross Listing of Item in multiple groups", 
- "A Product is shown on the website and is linked to an item.", 
  "Product Category for website", 
  "Slideshow like display for the website", 
  "Page to show on the website", 
diff --git a/website/templates/html/base.html b/website/templates/html/base.html
index 995d3b7..2724e57 100644
--- a/website/templates/html/base.html
+++ b/website/templates/html/base.html
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <head>
 	<meta charset="utf-8">
-	<title>{% block title %}{% endblock %}</title>
+	<title>{{ title }}</title>
 	<meta name="generator" content="wnframework">
 	<script type="text/javascript" src="lib/js/lib/jquery/jquery.min.js"></script>
 	<script type="text/javascript" src="js/all-web.min.js"></script>
diff --git a/website/templates/html/outer.html b/website/templates/html/outer.html
deleted file mode 100644
index 322ce60..0000000
--- a/website/templates/html/outer.html
+++ /dev/null
@@ -1,86 +0,0 @@
-{#
-	requires, brand_html, top_bar_items, footer_items, copyright, content, address
-#}
-
-{% extends "html/base.html" %}
-
-{% block body %}
-	<header>
-	</header>
-	<div id="body_div">
-		<div class="navbar-wrapper">
-		<div class="navbar{% if top_bar_background=="Black" %} navbar-inverse{% endif %}" 
-			style="margin-bottom: 0px;">
-			<div class="navbar-inner">
-			<div class="container">
-				<a class="brand" href="index.html">{{ brand_html }}</a>
-				<ul class="nav">
-					{% for page in top_bar_items %}
-						{% if not page.parent_label %}
-						<li data-label="{{ page.label }}"
-							{% if page.child_items %}
-								class="dropdown"
-							{% endif %}>
-							<a href="{{ page.url or '#' }}" 
-								{% if page.child_items %}
-									class="dropdown-toggle"
-									onclick="return false;"
-									data-toggle="dropdown"
-								{% endif %}
-								{{ page.target or ''}}>
-							{{ page.label }}
-							{% if page.child_items %}
-								<b class="caret"></b>
-							</a>
-								<ul class="dropdown-menu">
-								{% for child in page.child_items %}
-									<li data-label="{{ child.label }}">
-										<a {% if child.indent %}
-											style="padding-left: 
-												{{(int(child.indent)+1)*15 }}px"
-										{% endif %}
-										href="{{ child.url }}" {{ child.target or '' }}>
-											{{ child.label }}
-										</a>
-									</li>
-								{% endfor %}
-								</ul>
-							{% else %}
-							</a>
-							{% endif %}
-							</li>
-						{% endif %}
-					{% endfor %}
-				</ul>
-				<img src="lib/images/ui/spinner.gif" id="spinner"/>
-				<ul class="nav pull-right">
-					<li id="login-topbar-item"><a href="login.html">Login</a></li>
-				</ul>
-			</div>
-			</div>
-		</div>
-		</div>
-		<script>$('.dropdown-toggle').dropdown()</script>
-		<div class="content" id="page-{{ name }}" style="display: block;">
-		{% block content %}
-		{% endblock %}
-		</div>
-	</div>
-	<footer><div class="web-footer">
-		<div class="web-footer-menu"><ul>
-		{% for item in footer_items %}
-			<li><a href="{{ item.url }}" {{ item.target }}
-				data-label="{{ item.label }}">{{ item.label }}</a></li>
-		{% endfor %}
-		</ul></div>
-		{% if copyright %}
-		<div class="web-footer-copyright">&copy; {{ copyright }}</div>
-		{% endif %}
-		{% if address %}
-		{{ address }}
-		{% endif %}
-		<p><a style="font-size: 90%;" href="attributions.html">ERPNext Powered</a></p>
-		</div>
-	</footer>
-
-{% endblock %}
\ No newline at end of file
diff --git a/website/templates/html/product_group.html b/website/templates/html/product_group.html
index a503882..1dd853f 100644
--- a/website/templates/html/product_group.html
+++ b/website/templates/html/product_group.html
@@ -1,7 +1,5 @@
 {% extends "html/page.html" %}
 
-{% block title %}{{ name }}{% endblock %}
-
 {% block content %}
 
 <div class="layout-wrapper layout-wrapper-background">
diff --git a/website/templates/html/product_page.html b/website/templates/html/product_page.html
index a574cf6..14fecfb 100644
--- a/website/templates/html/product_page.html
+++ b/website/templates/html/product_page.html
@@ -8,14 +8,6 @@
 	{% include "css/product_page.css" %}
 {% endblock %}
 
-{% block title %}
-	{% if item_name != name %}
-		{{ item_name }} [{{ name }}]
-	{% else %}
-		{{ item_name or name }}
-	{% endif %}
-{% endblock %}
-
 {% block content %}
 	<div class="layout-wrapper layout-wrapper-background">
 		<div class="web-content" id="content-product-{{ name }}">
diff --git a/website/utils.py b/website/utils.py
index 48ca844..84e11ce 100644
--- a/website/utils.py
+++ b/website/utils.py
@@ -162,7 +162,7 @@
 	if not args:
 		return False
 	
-	args.update(get_outer_env())
+	args.update(get_outer_env(page_name))
 	
 	return args	
 
@@ -203,7 +203,10 @@
 
 	return None, None
 	
-def get_outer_env():
+def get_outer_env(page_name):
+	from webnotes.utils import get_request_site_address
+	from urllib import quote
+	
 	all_top_items = webnotes.conn.sql("""\
 		select * from `tabTop Bar Item`
 		where parent='Website Settings' and parentfield='top_bar_items'
@@ -243,14 +246,18 @@
 	})
 	
 	settings = webnotes.doc("Website Settings", "Website Settings")
-	for k in ["brand_html", "copyright", "address", "top_bar_background", "favicon"]:
+	for k in ["brand_html", "copyright", "address", "top_bar_background", "favicon", 
+		"facebook_share", "google_plus_one", "twitter_share", "linked_in_share"]:
 		if k in settings.fields:
-			ret[k] = settings.fields[k]
+			ret[k] = settings.fields.get(k)
 
 	if not ret.brand_html:
 		ret.brand_html = "ERPNext"
 	if not ret.top_bar_background:
 		ret.top_bar_background = "Black"
+	
+	ret.url = quote(get_request_site_address(full_address=True), "")
+	
 	return ret
 
 def get_home_page():
