diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 0a7584a5765785869579c337b46694525dc69bab..4f0c0d31bd13413618372b1b8b5972cce52b2b90 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -548,7 +548,7 @@ void LLButton::setHighlight(bool b)
 BOOL LLButton::handleHover(S32 x, S32 y, MASK mask)
 {
 	if (isInEnabledChain() 
-		&& (!gFocusMgr.getMouseCapture() || gFocusMgr.getMouseCapture() != this))
+		&& (!gFocusMgr.getMouseCapture() || gFocusMgr.getMouseCapture() == this))
 		mNeedsHighlight = TRUE;
 
 	if (!childrenHandleHover(x, y, mask))
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 984b710b9d60bb5218a8b6d17f25d3d39dd875e1..81b14aac176e641da7280b6cdeb175709c27d6b1 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -252,6 +252,7 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p)
 	mHeaderHeight(p.header_height),
 	mLegacyHeaderHeight(p.legacy_header_height),
 	mMinimized(FALSE),
+	mVisibleWhenMinimized(TRUE),
 	mForeground(FALSE),
 	mFirstLook(TRUE),
 	mButtonScale(1.0f),
@@ -1432,6 +1433,17 @@ void LLFloater::removeDependentFloater(LLFloater* floaterp)
 	floaterp->mDependeeHandle = LLHandle<LLFloater>();
 }
 
+void LLFloater::setVisibleWhenMinimized(bool visible)
+{ 
+	mVisibleWhenMinimized = visible;
+	if (visible && isMinimized())
+	{
+		// restack in minimized stack
+		setMinimized(FALSE);
+		setMinimized(TRUE);
+	}
+}
+
 BOOL LLFloater::offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButton index)
 {
 	if( mButtonsEnabled[index] )
@@ -1808,11 +1820,14 @@ void LLFloater::draw()
 	}
 	if (isMinimized())
 	{
-		for (S32 i = 0; i < BUTTON_COUNT; i++)
+		if (mVisibleWhenMinimized)
 		{
-			drawChild(mButtons[i]);
+			for (S32 i = 0; i < BUTTON_COUNT; i++)
+			{
+				drawChild(mButtons[i]);
+			}
+			drawChild(mDragHandle);
 		}
-		drawChild(mDragHandle);
 	}
 	else
 	{
@@ -2467,7 +2482,7 @@ void LLFloaterView::getMinimizePosition(S32 *left, S32 *bottom)
 			{
 				// Examine minimized children.
 				LLFloater* floater = (LLFloater*)((LLView*)*child_it);
-				if(floater->isMinimized()) 
+				if(floater->isMinimized() && floater->getVisibleWhenMinimized()) 
 				{
 					LLRect r = floater->getRect();
 					if((r.mBottom < (row + floater_header_size))
@@ -2532,6 +2547,52 @@ void LLFloaterView::closeAllChildren(bool app_quitting)
 	}
 }
 
+void LLFloaterView::hiddenFloaterClosed(LLFloater* floater)
+{
+	for (hidden_floaters_t::iterator it = mHiddenFloaters.begin(), end_it = mHiddenFloaters.end();
+		it != end_it;
+		++it)
+	{
+		if (it->first.get() == floater)
+		{
+			it->second.disconnect();
+			mHiddenFloaters.erase(it);
+			break;
+		}
+	}
+}
+
+void LLFloaterView::hideAllFloaters()
+{
+	child_list_t child_list = *(getChildList());
+
+	for (child_list_iter_t it = child_list.begin(); it != child_list.end(); ++it)
+	{
+		LLFloater* floaterp = dynamic_cast<LLFloater*>(*it);
+		if (floaterp && floaterp->getVisible())
+		{
+			floaterp->setVisible(false);
+			boost::signals2::connection connection = floaterp->mCloseSignal.connect(boost::bind(&LLFloaterView::hiddenFloaterClosed, this, floaterp));
+			mHiddenFloaters.push_back(std::make_pair(floaterp->getHandle(), connection));
+		}
+	}
+}
+
+void LLFloaterView::showHiddenFloaters()
+{
+	for (hidden_floaters_t::iterator it = mHiddenFloaters.begin(), end_it = mHiddenFloaters.end();
+		it != end_it;
+		++it)
+	{
+		LLFloater* floaterp = it->first.get();
+		if (floaterp)
+		{
+			floaterp->setVisible(true);
+		}
+		it->second.disconnect();
+	}
+	mHiddenFloaters.clear();
+}
 
 BOOL LLFloaterView::allChildrenClosed()
 {
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index b094c76168abf7b9f75bc1db8c73074cc35deb1e..7cfec09e5fd002f19b33bbf5e57f0d0ffee31928 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -35,6 +35,7 @@
 #include "lluuid.h"
 //#include "llnotificationsutil.h"
 #include <set>
+#include <boost/signals2.hpp>
 
 class LLDragHandle;
 class LLResizeHandle;
@@ -216,6 +217,8 @@ class LLFloater : public LLPanel
 	LLFloater*		getDependee() { return (LLFloater*)mDependeeHandle.get(); }
 	void		removeDependentFloater(LLFloater* dependent);
 	BOOL			isMinimized() const				{ return mMinimized; }
+	void			setVisibleWhenMinimized(bool visible);
+	bool			getVisibleWhenMinimized() const				{ return mVisibleWhenMinimized;}
 	/// isShown() differs from getVisible() in that isShown() also considers
 	/// isMinimized(). isShown() is true only if visible and not minimized.
 	bool			isShown() const;
@@ -426,6 +429,7 @@ class LLFloater : public LLPanel
 	S32				mLegacyHeaderHeight;// HACK see initFloaterXML()
 	
 	BOOL			mMinimized;
+	bool			mVisibleWhenMinimized;
 	BOOL			mForeground;
 	LLHandle<LLFloater>	mDependeeHandle;
 	
@@ -461,8 +465,6 @@ class LLFloater : public LLPanel
 	typedef std::map<LLHandle<LLFloater>, LLFloater*>::iterator handle_map_iter_t;
 	static handle_map_t	sFloaterMap;
 
-	std::vector<LLHandle<LLView> > mMinimizedHiddenChildren;
-
 	BOOL			mHasBeenDraggedWhileMinimized;
 	S32				mPreviousMinimizedBottom;
 	S32				mPreviousMinimizedLeft;
@@ -516,6 +518,10 @@ class LLFloaterView : public LLUICtrl
 	BOOL			allChildrenClosed();
 	void			shiftFloaters(S32 x_offset, S32 y_offset);
 
+	void			hideAllFloaters();
+	void			showHiddenFloaters();
+
+
 	LLFloater* getFrontmost() const;
 	LLFloater* getBackmost() const;
 	LLFloater* getParentFloater(LLView* viewp) const;
@@ -530,11 +536,15 @@ class LLFloaterView : public LLUICtrl
 	void setFloaterSnapView(LLHandle<LLView> snap_view) {mSnapView = snap_view; }
 
 private:
+	void hiddenFloaterClosed(LLFloater* floater);
+
 	LLHandle<LLView>	mSnapView;
 	BOOL			mFocusCycleMode;
 	S32				mSnapOffsetBottom;
 	S32				mSnapOffsetRight;
 	S32				mMinimizePositionVOffset;
+	typedef std::vector<std::pair<LLHandle<LLFloater>, boost::signals2::connection> > hidden_floaters_t;
+	hidden_floaters_t mHiddenFloaters;
 };
 
 //
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index 1320f03a256bdaab379ace16af7866e0281ee58f..541e01fb994c2b0413fd9966e1695ecc2a4b441e 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -872,7 +872,10 @@ void LLToolBarButton::onMouseEnter(S32 x, S32 y, MASK mask)
 	LLUICtrl::onMouseEnter(x, y, mask);
 
 	// Always highlight toolbar buttons, even if they are disabled
-	mNeedsHighlight = TRUE;
+	if (!gFocusMgr.getMouseCapture() || gFocusMgr.getMouseCapture() == this)
+	{
+		mNeedsHighlight = TRUE;
+	}
 }
 
 void LLToolBarButton::onMouseCaptureLost()
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index aa2ff646a867116671bd1b1b6856124b00fd0be0..dd540654fbfdb69a509afe62cc918d2774f3b5d9 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -619,7 +619,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/avatars.html</string>
+      <string>http://drofnas.components.pdp48.lindenlab.com/avatars.html</string>
     </map>
     <key>AvatarBakedTextureUploadTimeout</key>
     <map>
@@ -2717,7 +2717,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/guide.html</string>
+      <string>http://drofnas.components.pdp48.lindenlab.com/guide.html</string>
     </map>
   <key>DisableCameraConstraints</key>
     <map>
diff --git a/indra/newview/llfloatertoybox.cpp b/indra/newview/llfloatertoybox.cpp
index 84881655f818ac693f8b5d73ac9abdad13b2be60..b4c989427165435031395403d8d58994cf72bb9b 100644
--- a/indra/newview/llfloatertoybox.cpp
+++ b/indra/newview/llfloatertoybox.cpp
@@ -30,12 +30,13 @@
 
 #include "llbutton.h"
 #include "llcommandmanager.h"
+#include "llnotifications.h"
+#include "llnotificationsutil.h"
 #include "llpanel.h"
 #include "lltoolbar.h"
 #include "lltoolbarview.h"
 #include "lltrans.h"
 
-
 LLFloaterToybox::LLFloaterToybox(const LLSD& key)
 	: LLFloater(key)
 	, mBtnRestoreDefaults(NULL)
@@ -113,9 +114,21 @@ void LLFloaterToybox::draw()
 	LLFloater::draw();
 }
 
+static bool finish_restore_toybox(const LLSD& notification, const LLSD& response)
+{
+	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+
+	if (option == 0)
+	{
+		LLToolBarView::loadDefaultToolbars();
+	}
+	return false;
+}
+static LLNotificationFunctorRegistration finish_restore_toybox_reg("ConfirmRestoreToybox", finish_restore_toybox);
+
 void LLFloaterToybox::onBtnRestoreDefaults()
 {
-	LLToolBarView::loadDefaultToolbars();
+	LLNotificationsUtil::add("ConfirmRestoreToybox");
 }
 
 BOOL LLFloaterToybox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index 2af01d06c18cba709c3a60589f32ee0babae1d00..c3d8b91d67ae372bfdf4868470fe41b45cde16bf 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -696,25 +696,28 @@ void LLPanelStandStopFlying::updatePosition()
 {
 	if (mAttached) return;
 
-	S32 x = 0;
-	S32 y = 0;
-
-	if(LLView* root = getRootView())
+	S32 y_pos = 0;
+	S32 bottom_tb_center = 0;
+	if (LLToolBar* toolbar_bottom = gToolBarView->getChild<LLToolBar>("toolbar_bottom"))
 	{
-		x = root->calcScreenRect().getCenterX() - getRect().getWidth()/2;
+		y_pos = toolbar_bottom->getRect().getHeight();
+		bottom_tb_center = toolbar_bottom->getRect().getCenterX();
 	}
 
-	if (LLToolBar* toolbar_bottom = gToolBarView->getChild<LLToolBar>("toolbar_bottom"))
+	S32 left_tb_width = 0;
+	if (LLToolBar* toolbar_left = gToolBarView->getChild<LLToolBar>("toolbar_left"))
 	{
-		y = toolbar_bottom->getRect().getHeight();
+		left_tb_width = toolbar_left->getRect().getWidth();
 	}
 
 	if(LLPanel* panel_ssf_container = getRootView()->getChild<LLPanel>("stand_stop_flying_container"))
 	{
-		panel_ssf_container->setOrigin(0, y);
+		panel_ssf_container->setOrigin(0, y_pos);
 	}
 
-	setOrigin(x, 0);
+	S32 x_pos = bottom_tb_center-getRect().getWidth()/2 - left_tb_width;
+
+	setOrigin( x_pos, 0);
 }
 
 // EOF
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index da1b149b59470c471a24bef12515cdcfb79dda60..478af6ab7dc215a337051093cdd5b1152df984b8 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -373,8 +373,6 @@ void set_underclothes_menu_options()
 
 void init_menus()
 {
-	S32 top = gViewerWindow->getRootView()->getRect().getHeight();
-
 	// Initialize actions
 	initialize_menus();
 
@@ -3768,9 +3766,37 @@ class LLViewToggleUI : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
 	{
-		gViewerWindow->setUIVisibility(!gViewerWindow->getUIVisibility());
+		LLNotification::Params params("ConfirmHideUI");
+		params.functor.function(boost::bind(&LLViewToggleUI::confirm, this, _1, _2));
+		LLSD substitutions;
+#if LL_DARWIN
+		substitutions["SHORTCUT"] = "Cmd+Shift+U";
+#else
+		substitutions["SHORTCUT"] = "Ctrl+Shift+U";
+#endif
+		params.substitutions = substitutions;
+		if (gViewerWindow->getUIVisibility())
+		{
+			// hiding, so show notification
+			LLNotifications::instance().add(params);
+		}
+		else
+		{
+			LLNotifications::instance().forceResponse(params, 0);
+		}
+
 		return true;
 	}
+
+	void confirm(const LLSD& notification, const LLSD& response)
+	{
+		S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+
+		if (option == 0) // OK
+		{
+			gViewerWindow->setUIVisibility(!gViewerWindow->getUIVisibility());
+		}
+	}
 };
 
 class LLEditDuplicate : public view_listener_t
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 2473d41a35b994e155ac4df9db1dd1b2c46eaad0..665b31a427e18d7b26c21571106932a6469cb10d 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -4992,7 +4992,11 @@ void LLViewerWindow::setUIVisibility(bool visible)
 
 	if (!visible)
 	{
-		gFloaterView->closeAllChildren(false);
+		gFloaterView->hideAllFloaters();
+	}
+	else
+	{
+		gFloaterView->showHiddenFloaters();
 	}
 }
 
diff --git a/indra/newview/skins/default/textures/navbar/separator.png b/indra/newview/skins/default/textures/navbar/separator.png
new file mode 100644
index 0000000000000000000000000000000000000000..b93e5791a7eab8ba17fae0cd8991daf7d38ef992
Binary files /dev/null and b/indra/newview/skins/default/textures/navbar/separator.png differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 27577d42ea2307deca6991fd0360d77dcbbb0924..4f343525164d782c1ceca23e422a9824c342b681 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -769,5 +769,5 @@ with the same filename but different name
   <texture name="Yellow_Gradient" file_name="windows/yellow_gradient.png"/>
   <texture name="Popup_Caution" file_name="icons/pop_up_caution.png"/>
   <texture name="Camera_Drag_Dot" file_name="world/CameraDragDot.png"/>
-
+  <texture name="NavBar Separator" file_name="navbar/separator.png"/>
 </textures>
diff --git a/indra/newview/skins/default/xui/en/floater_avatar.xml b/indra/newview/skins/default/xui/en/floater_avatar.xml
index 6e5c4ada482a43d4ad3a6863ed072d60c8332422..3c7de6f3348845969a6aa87c81946dba65b520d2 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar.xml
@@ -5,7 +5,7 @@
  can_close="true"
  can_resize="true"
  min_height="230"
- min_width="445"
+ min_width="450"
  height="230"
  layout="topleft"
  name="Avatar"
diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml
index 2b48a9f6d6ae1cc551bf1355a31304fd239bf6cb..e63dc02a5783bebbf4504a399d8c5c839cba6a02 100644
--- a/indra/newview/skins/default/xui/en/floater_destinations.xml
+++ b/indra/newview/skins/default/xui/en/floater_destinations.xml
@@ -7,7 +7,7 @@
  user_resize="true"
  can_resize="true"
  min_height="230"
- min_width="525"
+ min_width="350"
  height="230"
  layout="topleft"
  name="Destinations"
@@ -22,6 +22,5 @@
       width="840"
       follows="all"
       name="destination_guide_contents"
-      start_url="http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/guide.html"
       trusted_content="true"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index fdbc3d18826d09fa56ce5b4b80e2db40a33409e9..c586e3a098ebad5dc7105240ddd63ed01ae9eac9 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -24,6 +24,13 @@
              function="Floater.Toggle"
              parameter="toybox" />
         </menu_item_call>
+         <menu_item_call
+         label="Hide all controls"
+         name="Hide UI"
+         shortcut="control|shift|U">
+           <menu_item_call.on_click
+            function="View.ToggleUI" />
+         </menu_item_call>
         <menu_item_call
              label="My Dashboard"
              name="Manage My Account">
@@ -1719,13 +1726,6 @@
                 <menu_item_call.on_click
                  function="View.DefaultUISize" />
             </menu_item_call>
-            <menu_item_call
-               label="Toggle UI"
-               name="Toggle UI"
-               shortcut="control|shift|U">
-                <menu_item_call.on_click
-                 function="View.ToggleUI" />
-              </menu_item_call>
             <!-- This second, alternative shortcut for Show Advanced Menu is for backward compatibility.  The main shortcut has been changed so it's Linux-friendly, where the old shortcut is typically eaten by the window manager. -->
             <menu_item_check
                label="Show Advanced Menu - legacy shortcut"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 087744fea77e669aa795d4bee77a5833a4072a72..f510b3c5bac9015866f130ffc0fbbf3ba8d98a09 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -4622,6 +4622,20 @@ Are you sure you want to quit?
      yestext="Quit"/>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="ConfirmRestoreToybox"
+   type="alertmodal">
+    <unique/>
+Are you sure you want to restore your default buttons and toolbars? 
+    
+You cannot undo this action.
+    <usetemplate
+     name="okcancelbuttons"
+     notext="Cancel"
+     yestext="OK"/>
+  </notification>
+  
   <notification
    icon="alertmodal.tga"
    name="DeleteItems"
@@ -7536,6 +7550,20 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
    notext="Don't Quit"/>
   </notification>
 
+  <notification
+    name="ConfirmHideUI"
+    label=""
+    type="alertmodal">
+    <unique/>
+    <tag>confirm</tag>
+    This action will hide all menu items and buttons. To get them back, click [SHORTCUT] again.
+    <usetemplate
+      name="okcancelignore"
+      yestext="OK"
+      notext="Cancel"
+      ignoretext="Confirm before hiding UI"/>
+  </notification>
+  
   <global name="UnsupportedGLRequirements">
 You do not appear to have the proper hardware requirements for [APP_NAME]. [APP_NAME] requires an OpenGL graphics card that has multitexture support. If this is the case, you may want to make sure that you have the latest drivers for your graphics card, and service packs and patches for your operating system.
 
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index bf9eeb6d26557ef291a23b9bc585fe88da71e0eb..ab6fa36e6cb6c693159bce210688526c983f4449 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -43,6 +43,16 @@
 	 top="0"
 	 height="34"
 	 width="600"/>
+  <icon
+    follows="all"
+    image_name="NavBar Separator"
+    mouse_opaque="false"
+    name="separator_image"
+    scale_image="true"
+    left="0"
+    top="0"
+    width="800"
+    height="2"/>
 	 <layout_stack
        use_border="true"
        bevel_style="none"