diff --git a/erpnext/startup/startup.js b/erpnext/startup/startup.js
index 6f967ff..a6bc594 100644
--- a/erpnext/startup/startup.js
+++ b/erpnext/startup/startup.js
@@ -112,6 +112,7 @@
 var body_background = '#e2e2e2';
 
 MenuPointer = function(parent, label) {
+	var me = this;
 
 	this.wrapper = $a(parent, 'div', '', {padding:'0px', cursor:'pointer', margin:'2px 0px'});
 	$br(this.wrapper, '3px');
@@ -123,15 +124,21 @@
 
 	// triangle border (?)
 	this.tab.triangle_div = $a($td(this.tab, 0, 1), 'div','', {
-		borderColor: body_background + ' ' + body_background + ' ' + body_background + ' ' + 'transparent',
+		borderColor: body_background,
 		borderWidth:'11px', borderStyle:'solid', height:'0px', width:'0px', marginRight:'-11px'});
 
 	this.label_area = $a($td(this.tab, 0, 0), 'span', '', '', label);
 
 	$(this.wrapper)
 		.hover(
-			function() { if(!this.selected)$bg(this, '#eee'); } ,
-			function() { if(!this.selected)$bg(this, body_background); }
+			function() { 
+				if(!me.selected) 
+					$y(me.label_area, {'color':'#000'}); 
+			},
+			function() { 
+				if(!me.selected) 
+					$y(me.label_area, {'color':'#444'}); 
+			}
 		)
 
 	$y($td(this.tab, 0, 0), {borderBottom:'1px solid #ddd'});
@@ -141,7 +148,8 @@
 // ====================================================================
 
 MenuPointer.prototype.select = function(grey) {
-	$y($td(this.tab, 0, 0), {color:'#fff', borderBottom:'0px solid #000'});
+	$y($td(this.tab, 0, 0), {borderBottom:'0px solid #000'});
+	$y(this.label_area, {'color':'#fff'});
 	//$gr(this.wrapper, '#F84', '#F63');
 	$gr(this.wrapper, '#888', '#666');
 	this.selected = 1;
@@ -149,14 +157,21 @@
 	if(cur_menu_pointer && cur_menu_pointer != this)
 		cur_menu_pointer.deselect();
 
+	$y(this.tab.triangle_div, {borderColor: 
+		body_background + ' ' + body_background + ' ' + body_background + ' ' + 'transparent'})
+
 	cur_menu_pointer = this;
 }
 
 // ====================================================================
 
 MenuPointer.prototype.deselect = function() {
-	$y($td(this.tab, 0, 0), {color:'#444', borderBottom:'1px solid #ddd'});
+	$y($td(this.tab, 0, 0), {borderBottom:'1px solid #ddd'});
+	$y(this.label_area, {'color':'#444'});
+
+
 	$gr(this.wrapper, body_background, body_background);
+	$y(this.tab.triangle_div, {borderColor: body_background});
 	this.selected = 0;
 }
 
diff --git a/index.html b/index.html
index 1aa3268..64eef0f 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="55"
+	<script type="text/javascript">window._version_number="57"
 
 wn={}
 wn.provide=function(namespace){var nsl=namespace.split('.');var l=nsl.length;var parent=window;for(var i=0;i<l;i++){var n=nsl[i];if(!parent[n]){parent[n]={}}
@@ -67,8 +67,6 @@
 throw new SyntaxError('JSON.parse');};}}());wn.versions.check();wn.require("lib/js/lib/jquery.min.js");wn.require("lib/js/lib/history/history.min.js");$(document).bind('ready',function(){var base=window.location.href.split('#')[0];$.each($('a[softlink!="false"]'),function(i,v){if(v.href.substr(0,base.length)==base){var path=(v.href.substr(base.length));if(path.substr(0,1)!='#'){v.href=base+'#'+path;}}});if(!wn.settings.no_history&&window.location.hash){wn.page.set(window.location.hash.substr(1));}});</script>
 </head>
 <body>
-	<div id="dialog_back"></div>
-
 	<div id="startup_div" style="padding: 8px; font-size: 14px;"></div>
 
 	<!-- Main Starts -->
@@ -80,4 +78,5 @@
 		</div>
 	</div>
 	<script>wn.require('js/app.js');</script>
+	<div id="dialog_back"></div>
 </body>
\ No newline at end of file
diff --git a/templates/index.html b/templates/index.html
index 7d8ac03..5a4f9b6 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -6,8 +6,6 @@
 	<script type="text/javascript">{{ boot }}</script>
 </head>
 <body>
-	<div id="dialog_back"></div>
-
 	<div id="startup_div" style="padding: 8px; font-size: 14px;"></div>
 
 	<!-- Main Starts -->
@@ -19,4 +17,5 @@
 		</div>
 	</div>
 	<script>wn.require('js/app.js');</script>
+	<div id="dialog_back"></div>
 </body>
\ No newline at end of file
diff --git a/versions-master.db b/versions-master.db
index 047f64d..0b3bcb2 100644
--- a/versions-master.db
+++ b/versions-master.db
Binary files differ
