From f26f7e3e29019abf3a10f6925e30baca19eb4e2d Mon Sep 17 00:00:00 2001
From: Steven Bennetts <steve@lindenlab.com>
Date: Wed, 8 Jul 2009 05:19:19 +0000
Subject: [PATCH] merge -r 889-936
 https://svn.aws.productengine.com/secondlife/pe/stable/ -> viewer-2-0 Also: *
 Moved media remote shortcut to Communicate menu * Changed mini map menu to
 toggle instead of show

---
 indra/llcommon/llversionserver.h              |   2 +-
 indra/newview/CMakeLists.txt                  |   4 +
 indra/newview/English.lproj/InfoPlist.strings |   4 +-
 indra/newview/Info-SecondLife.plist           |   2 +-
 indra/newview/llavatarpropertiesprocessor.cpp |   2 +-
 indra/newview/llbottomtray.cpp                |  91 ++++-
 indra/newview/llbottomtray.h                  |  13 +-
 indra/newview/llchiclet.cpp                   |  41 +--
 indra/newview/llchiclet.h                     |  14 +-
 indra/newview/llimview.cpp                    |   1 +
 indra/newview/lllocationinputctrl.cpp         |   6 +-
 indra/newview/llpanelavatar.cpp               |  13 +-
 indra/newview/llpanelavatar.h                 |  48 +--
 indra/newview/llpanellandmarks.cpp            |   2 +-
 indra/newview/llpanelpeople.cpp               |  39 +--
 indra/newview/llpanelpeople.h                 |   2 -
 indra/newview/llpanelpick.cpp                 | 103 +++---
 indra/newview/llpanelpick.h                   |  17 +-
 indra/newview/llpanelpicks.cpp                | 157 +++++++--
 indra/newview/llpanelpicks.h                  |  33 +-
 indra/newview/llpanelplaceinfo.cpp            |  56 ++-
 indra/newview/llpanelplaceinfo.h              |  34 +-
 indra/newview/llpanelplaces.cpp               |  18 +-
 indra/newview/llpanelplaces.h                 |   9 +-
 indra/newview/llpanelprofile.cpp              | 146 ++++++++
 indra/newview/llpanelprofile.h                |  72 ++++
 indra/newview/llpanelprofileview.cpp          |  43 +--
 indra/newview/llpanelprofileview.h            |  19 +-
 indra/newview/llpanelteleporthistory.cpp      |   2 +-
 indra/newview/llsidetray.cpp                  |   4 -
 indra/newview/llviewermedia.cpp               |  70 +++-
 indra/newview/llviewermedia.h                 |   8 +
 indra/newview/llviewermenu.cpp                |  36 +-
 indra/newview/llviewermenu.h                  |   2 -
 indra/newview/llviewerwindow.cpp              |   6 +
 indra/newview/res/viewerRes.rc                |   8 +-
 .../skins/default/xui/en/menu_viewer.xml      |  22 +-
 .../skins/default/xui/en/notifications.xml    |  11 +
 .../skins/default/xui/en/panel_bottomtray.xml | 328 +++++++++++++++---
 .../skins/default/xui/en/panel_edit_pick.xml  |   9 +-
 .../default/xui/en/panel_edit_profile.xml     |   2 +
 .../default/xui/en/panel_landmark_info.xml    | 274 ---------------
 .../skins/default/xui/en/panel_people.xml     |   3 +
 .../skins/default/xui/en/panel_pick_info.xml  |  28 +-
 .../default/xui/en/panel_pick_list_item.xml   |   3 +-
 .../skins/default/xui/en/panel_picks.xml      |   6 +-
 .../skins/default/xui/en/panel_places.xml     |   8 +-
 .../default/xui/en/panel_profile_view.xml     |   2 +-
 .../skins/default/xui/en/panel_side_tray.xml  |  26 +-
 49 files changed, 1131 insertions(+), 718 deletions(-)
 create mode 100644 indra/newview/llpanelprofile.cpp
 create mode 100644 indra/newview/llpanelprofile.h
 delete mode 100644 indra/newview/skins/default/xui/en/panel_landmark_info.xml

diff --git a/indra/llcommon/llversionserver.h b/indra/llcommon/llversionserver.h
index c0fc06ee6e2..23e39ceb08f 100644
--- a/indra/llcommon/llversionserver.h
+++ b/indra/llcommon/llversionserver.h
@@ -36,7 +36,7 @@
 const S32 LL_VERSION_MAJOR = 1;
 const S32 LL_VERSION_MINOR = 29;
 const S32 LL_VERSION_PATCH = 0;
-const S32 LL_VERSION_BUILD = 120909;
+const S32 LL_VERSION_BUILD = 0;
 
 const char * const LL_CHANNEL = "Second Life Server";
 
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 6ec4fbbcd5a..9510dcd9cc7 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -297,6 +297,7 @@ set(viewer_SOURCE_FILES
     llpanellandmarks.cpp
     llpanellandmedia.cpp
     llpanellogin.cpp
+    llpanelmedia.cpp
     llpanelmeprofile.cpp
     llpanelobject.cpp
     llpanelpeople.cpp
@@ -307,6 +308,7 @@ set(viewer_SOURCE_FILES
     llpanelplaceinfo.cpp
     llpanelplaces.cpp
     llpanelplacestab.cpp
+    llpanelprofile.cpp
     llpanelprofileview.cpp
     llpanelteleporthistory.cpp
     llpanelvolume.cpp
@@ -719,6 +721,7 @@ set(viewer_HEADER_FILES
     llpanellandmarks.h
     llpanellandmedia.h
     llpanellogin.h
+    llpanelmedia.h
     llpanelmeprofile.h
     llpanelobject.h
     llpanelpeople.h
@@ -729,6 +732,7 @@ set(viewer_HEADER_FILES
     llpanelplaceinfo.h
     llpanelplaces.h
     llpanelplacestab.h
+    llpanelprofile.h
     llpanelprofileview.h
     llpanelteleporthistory.h
     llpanelvolume.h
diff --git a/indra/newview/English.lproj/InfoPlist.strings b/indra/newview/English.lproj/InfoPlist.strings
index 0a1235b85d0..735424c6478 100644
--- a/indra/newview/English.lproj/InfoPlist.strings
+++ b/indra/newview/English.lproj/InfoPlist.strings
@@ -2,6 +2,6 @@
 
 CFBundleName = "Second Life";
 
-CFBundleShortVersionString = "Second Life version 1.24.0.0";
-CFBundleGetInfoString = "Second Life version 1.24.0.0, Copyright 2004-2008 Linden Research, Inc.";
+CFBundleShortVersionString = "Second Life version 2.0.0.0";
+CFBundleGetInfoString = "Second Life version 2.0.0.0, Copyright 2004-2009 Linden Research, Inc.";
 
diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-SecondLife.plist
index baa5ccf1b93..7264044d37c 100644
--- a/indra/newview/Info-SecondLife.plist
+++ b/indra/newview/Info-SecondLife.plist
@@ -32,7 +32,7 @@
 		</dict>
 	</array>
 	<key>CFBundleVersion</key>
-	<string>1.24.0.0</string>
+	<string>2.0.0.0</string>
 	<key>CSResourcesFileMapped</key>
 	<true/>
 </dict>
diff --git a/indra/newview/llavatarpropertiesprocessor.cpp b/indra/newview/llavatarpropertiesprocessor.cpp
index 5a92888cef3..ecd67e44ae4 100644
--- a/indra/newview/llavatarpropertiesprocessor.cpp
+++ b/indra/newview/llavatarpropertiesprocessor.cpp
@@ -306,7 +306,7 @@ void LLAvatarPropertiesProcessor::processPickInfoReply(LLMessageSystem* msg, voi
 	msg->getS32(_PREHASH_Data, _PREHASH_SortOrder, pick_data.sort_order);
 	msg->getBOOL(_PREHASH_Data, _PREHASH_Enabled, pick_data.enabled);
 
-	notifyObservers(pick_data.agent_id, &pick_data, APT_PICK_INFO);
+	notifyObservers(pick_data.creator_id, &pick_data, APT_PICK_INFO);
 }
 
 void LLAvatarPropertiesProcessor::processAvatarGroupsReply(LLMessageSystem* msg, void**)
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 604a77dac03..136316fbbea 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -34,7 +34,8 @@
 #include "llbottomtray.h"
 #include "llagent.h"
 #include "llchiclet.h"
-#include "lllayoutstack.h"
+#include "llfloaterreg.h"
+#include "llflyoutbutton.h"
 #include "llkeyboard.h"
 #include "llgesturemgr.h"
 #include "llanimationstates.h"
@@ -54,15 +55,22 @@ LLBottomTray* gBottomTray = NULL;
 LLBottomTray::LLBottomTray()
 	: mLastSpecialChatChannel(0)
 	, mGestureLabelTimer()
+	, mChatBox(NULL)
+	, mChicletPanel(NULL)
+	, mIMWell(NULL)
+	, mSysWell(NULL)
+	, mTalkBtn(NULL)
+	, mGestureCombo(NULL)
 {
 	LLUICtrlFactory::getInstance()->buildPanel(this,"panel_bottomtray.xml");
 
 	mChicletPanel = getChild<LLChicletPanel>("chiclet_list",TRUE,FALSE);
 	mIMWell = getChild<LLNotificationChiclet>("im_well",TRUE,FALSE);
 	mSysWell = getChild<LLNotificationChiclet>("sys_well",TRUE,FALSE);
-	mSeparator = getChild<LLViewBorder>("well_separator",TRUE,FALSE);
 	mChatBox = getChild<LLLineEditor>("chat_box",TRUE,FALSE);
 
+	mChicletPanel->setChicletClickCallback(boost::bind(&LLBottomTray::onChicletClick,this,_1));
+
 	if (mChatBox)
 	{
 		mChatBox->setCommitCallback(boost::bind(&LLBottomTray::onChatBoxCommit, this));
@@ -109,12 +117,20 @@ LLBottomTray::~LLBottomTray()
 	}
 }
 
+void LLBottomTray::onChicletClick(LLUICtrl* ctrl)
+{
+	LLIMChiclet* chiclet = dynamic_cast<LLIMChiclet*>(ctrl);
+	if (chiclet)
+	{
+		LLFloaterReg::showInstance("communicate", chiclet->getIMSessionId());
+	}
+}
+
 void LLBottomTray::onChatBoxCommit()
 {
 	if (mChatBox && mChatBox->getText().length() > 0)
 	{
 		sendChat(CHAT_TYPE_NORMAL);
-		mChatBox->setText(LLStringExplicit(""));
 	}
 
 	gAgent.stopTyping();
@@ -269,6 +285,17 @@ void LLBottomTray::refresh()
 	}
 }
 
+void LLBottomTray::updateRightPosition(const S32 new_right_position)
+{
+	LLRect rc = getRect();
+	if (new_right_position != rc.mRight)
+	{
+		rc.mRight = new_right_position;
+		reshape(rc.getWidth(), rc.getHeight(), FALSE);
+		setRect(rc);
+	}
+}
+
 void LLBottomTray::onCommitGesture(LLUICtrl* ctrl)
 {
 	LLCtrlListInterface* gestures = mGestureCombo ? mGestureCombo->getListInterface() : NULL;
@@ -357,15 +384,13 @@ void LLBottomTray::sessionAdded(const LLUUID& session_id, const std::string& nam
 {
 	if(getChicletPanel())
 	{
-		LLSD sid(session_id);
-
-		if(getChicletPanel()->findIMChiclet(&sid))
+		if(getChicletPanel()->findIMChiclet(session_id))
 		{
 
 		}
 		else
 		{
-			LLIMChiclet* chicklet = (LLIMChiclet *)getChicletPanel()->createChiclet(&sid);
+			LLIMChiclet* chicklet = (LLIMChiclet *)getChicletPanel()->createChiclet(session_id);
 			chicklet->setIMSessionName(name);
 			chicklet->setOtherParticipantId(other_participant_id);
 		}
@@ -377,8 +402,7 @@ void LLBottomTray::sessionRemoved(const LLUUID& session_id)
 {
 	if(getChicletPanel())
 	{
-		LLSD sid(session_id);
-		getChicletPanel()->removeIMChiclet(&sid);
+		getChicletPanel()->removeIMChiclet(session_id);
 	}
 }
 
@@ -391,25 +415,52 @@ void LLBottomTray::onFocusLost()
 	}
 }
 
+// virtual
+BOOL LLBottomTray::handleKeyHere( KEY key, MASK mask )
+{
+	BOOL handled = FALSE;
+
+	// ALT-RETURN is reserved for windowed/fullscreen toggle
+	if( KEY_RETURN == key && mask == MASK_CONTROL)
+	{
+		// shout
+		sendChat(CHAT_TYPE_SHOUT);
+		handled = TRUE;
+	}
+
+	return handled;
+}
+
 //virtual
-void LLBottomTray::onVisibilityChange(BOOL curVisibilityIn)
+// setVisible used instead of onVisibilityChange, since LLAgent calls it on entering/leaving mouselook mode.
+// If bottom tray is already visible in mouselook mode, then onVisibilityChange will not be called from setVisible(true),
+void LLBottomTray::setVisible(BOOL visible)
 {
+	LLPanel::setVisible(visible);
+
+	
 	BOOL visibility = gAgent.cameraMouselook() ? false : true;
 
-	if (mChicletPanel && mChicletPanel->getVisible() == visibility)
+	LLViewBorder* separator = getChild<LLViewBorder>("well_separator",TRUE,FALSE);
+
+	if (separator && separator->getVisible() == visibility)
 		return;
 
-	if (mChicletPanel)
-		mChicletPanel->setVisible(visibility);
+	if (separator)
+		separator->setVisible(visibility);
 
-	if (mIMWell)
-		mIMWell->setVisible(visibility);
+	LLPanel* p = getChild<LLPanel>("chiclet_list_panel",TRUE,FALSE);
+	if (p)
+		p->setVisible(visibility);
 
-	if (mSysWell)
-		mSysWell->setVisible(visibility);
+	p = getChild<LLPanel>("im_well_panel",TRUE,FALSE);
+	if (p)
+		p->setVisible(visibility);
+
+	p = getChild<LLPanel>("sys_well_panel",TRUE,FALSE);
+	if (p)
+		p->setVisible(visibility);
 
-	if (mSeparator)
-		mSeparator->setVisible(visibility);
 }
 
 void LLBottomTray::sendChat( EChatType type )
@@ -446,6 +497,8 @@ void LLBottomTray::sendChat( EChatType type )
 				sendChatFromViewer(utf8_revised_text, type, TRUE);
 			}
 		}
+
+		mChatBox->setText(LLStringExplicit(""));
 	}
 
 	gAgent.stopTyping();
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index 7d842a0aade..9a773773e9e 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -34,20 +34,19 @@
 #define LL_LLBOTTOMPANEL_H
 
 #include "llpanel.h"
-#include "llflyoutbutton.h"
 #include "llimview.h"
 #include "llchat.h"
 #include "llgesturemgr.h"
 
 class LLChicletPanel;
 class LLNotificationChiclet;
-class LLNotificationChiclet;
 class LLTalkButton;
+class LLComboBox;
 
 class LLBottomTray 
 	: public LLPanel
 	, public LLIMSessionObserver
-	, LLGestureManagerObserver
+	, public LLGestureManagerObserver
 {
 public:
 	LLBottomTray();
@@ -66,6 +65,7 @@ class LLBottomTray
 	static void onChatBoxFocusLost(LLFocusableElement* caller, void* userdata);
 
 	void refresh();
+	void updateRightPosition(const S32 new_right_position);
 
 	void onCommitGesture(LLUICtrl* ctrl);
 	void refreshGestures();
@@ -78,13 +78,16 @@ class LLBottomTray
 	virtual void changed() { refreshGestures(); }
 
 	virtual void onFocusLost();
-	virtual void onVisibilityChange(BOOL curVisibilityIn);
+	virtual BOOL handleKeyHere(KEY key, MASK mask);
+	virtual void setVisible(BOOL visible);
 
 protected:
 
 	void sendChat( EChatType type );
 	LLWString stripChannelNumber(const LLWString &mesg, S32* channel);
 
+	void onChicletClick(LLUICtrl* ctrl);
+
 	// Which non-zero channel did we last chat on?
 	S32 mLastSpecialChatChannel;
 
@@ -92,13 +95,11 @@ class LLBottomTray
 	LLChicletPanel* 	mChicletPanel;
 	LLNotificationChiclet* 	mIMWell;
 	LLNotificationChiclet* 	mSysWell;
-	LLViewBorder*		mSeparator;
 	LLTalkButton* 		mTalkBtn;
 	LLComboBox* 		mGestureCombo;
 	LLFrameTimer 		mGestureLabelTimer;
 };
 
 extern LLBottomTray* gBottomTray;
-extern S32 BOTTOM_TRAY_HEIGHT;
 
 #endif // LL_LLBOTTOMPANEL_H
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 29845fff5e5..4413212361c 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -32,7 +32,6 @@
 
 #include "llviewerprecompiledheaders.h" // must be first include
 #include "llchiclet.h"
-#include "llfloaterreg.h"
 #include "llvoiceclient.h"
 #include "llagent.h"
 #include "lltextbox.h"
@@ -165,7 +164,7 @@ LLIMChiclet::LLIMChiclet(const LLChiclet::Params& p)
 , mAvatar(NULL)
 , mCounterText(NULL)
 , mSpeaker(NULL)
-, mIMSessionId()
+, mIMSessionId(LLUUID::null)
 , mShowSpeaker(false)
 , mSpeakerStatus(SPEAKER_IDLE)
 {
@@ -204,10 +203,10 @@ LLIMChiclet::~LLIMChiclet()
 
 }
 
-LLChiclet* LLIMChiclet::create(LLSD* imSessionId /* = NULL */)
+LLChiclet* LLIMChiclet::create(const LLUUID& im_session_id /* = LLUUID::null */)
 {
 	LLIMChiclet* chiclet = new LLIMChiclet(LLChiclet::Params());
-	chiclet->setIMSessionId(imSessionId);
+	chiclet->setIMSessionId(im_session_id);
 	return chiclet;
 }
 
@@ -265,7 +264,7 @@ void LLIMChiclet::setShowSpeaker(bool show)
 void LLIMChiclet::draw()
 {
 	LLUICtrl::draw();
-	gl_rect_2d(0, getRect().getHeight(), getRect().getWidth(), 1, LLColor4(0.0f,0.0f,0.0f,1.f), FALSE);
+	gl_rect_2d(0, getRect().getHeight(), getRect().getWidth(), 0, LLColor4(0.0f,0.0f,0.0f,1.f), FALSE);
 }
 
 S32 LLIMChiclet::calcCounterWidth()
@@ -319,8 +318,9 @@ LLChicletPanel::~LLChicletPanel()
 }
 
 void im_chiclet_callback(LLChicletPanel* panel, const LLSD& data){
-
-	LLChiclet* chiclet = panel->findIMChiclet(&data["session_id"]);
+	
+	LLUUID session_id = data["session_id"].asUUID();
+	LLChiclet* chiclet = panel->findIMChiclet(session_id);
 
 	if (chiclet)
 	{
@@ -328,7 +328,7 @@ void im_chiclet_callback(LLChicletPanel* panel, const LLSD& data){
 	}
     else
     {
-    	llwarns << "Unable to set counter for chiclet " << data["session_id"].asUUID() << llendl;
+    	llwarns << "Unable to set counter for chiclet " << session_id << llendl;
     }
 }
 
@@ -341,9 +341,9 @@ BOOL LLChicletPanel::postBuild()
 	return TRUE;
 }
 
-LLChiclet* LLChicletPanel::createChiclet(LLSD* imSessionId, S32 pos)
+LLChiclet* LLChicletPanel::createChiclet(const LLUUID& im_session_id /* = LLUUID::null */, S32 pos /* = 0 */)
 {
-	LLChiclet* chiclet = LLIMChiclet::create(imSessionId);
+	LLChiclet* chiclet = LLIMChiclet::create(im_session_id);
 	if(!chiclet)
 	{
 		assert(false);
@@ -388,20 +388,15 @@ void LLChicletPanel::onChicletClick(LLUICtrl*ctrl,const LLSD&param)
 	LLIMChiclet* chiclet = dynamic_cast<LLIMChiclet*>(ctrl);
 	if (chiclet)
 	{
-		LLFloaterReg::showInstance("communicate", chiclet->getIMSessionId().asUUID());
+		S32 x, y;
+		LLRect rect = getRect();
+		localPointToScreen(rect.getCenterX(), 0, &x, &y);
+		LLIMFloater::show(chiclet->getIMSessionId(), x);
 	}
-    
-	S32 x, y;
-   	LLRect rect = chiclet->getRect();
-
-	localPointToScreen(rect.getCenterX(), 0, &x, &y);
-	LLIMFloater::show(chiclet->getIMSessionId().asUUID(), x);
-
 	mCommitSignal(ctrl,param);
 }
 
-
-LLChiclet* LLChicletPanel::findIMChiclet(const LLSD* imSessionId)
+LLChiclet* LLChicletPanel::findIMChiclet(const LLUUID& im_session_id)
 {
 	chiclet_list_t::const_iterator it = mChicletList.begin();
 	for( ; mChicletList.end() != it; ++it)
@@ -413,7 +408,7 @@ LLChiclet* LLChicletPanel::findIMChiclet(const LLSD* imSessionId)
 			continue;
 		}
 
-		if(chiclet->getIMSessionId().asUUID() == imSessionId->asUUID())
+		if(chiclet->getIMSessionId() == im_session_id)
 		{
 			return chiclet;
 		}
@@ -472,7 +467,7 @@ void LLChicletPanel::removeChiclet(LLChiclet*chiclet)
 	}
 }
 
-void LLChicletPanel::removeIMChiclet(const LLSD* imSessionId)
+void LLChicletPanel::removeIMChiclet(const LLUUID& im_session_id)
 {
 	chiclet_list_t::iterator it = mChicletList.begin();
 	for( ; mChicletList.end() != it; ++it)
@@ -484,7 +479,7 @@ void LLChicletPanel::removeIMChiclet(const LLSD* imSessionId)
 			continue;
 		}
 
-		if(chiclet->getIMSessionId().asUUID() == imSessionId->asUUID())
+		if(chiclet->getIMSessionId() == im_session_id)
 		{
 			removeChiclet(it);
 			return;
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index d861a528b51..ceda61adea0 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -78,15 +78,15 @@ class LLChiclet : public LLUICtrl
 class LLIMChiclet : public LLChiclet
 {
 public:
-	static LLChiclet* create(LLSD* imSessionId = NULL);
+	static LLChiclet* create(const LLUUID& im_session_id = LLUUID::null);
 
 	void setCounter(S32);
 
 	S32 getCounter() {return mCounter;};
 
-	const LLSD& getIMSessionId() const {return mIMSessionId;};
+	const LLUUID& getIMSessionId() const {return mIMSessionId;};
 
-	void setIMSessionId(LLSD* imSessionId) {if (imSessionId) mIMSessionId = *imSessionId;};
+	void setIMSessionId(const LLUUID& im_session_id) { mIMSessionId = im_session_id; }
 	void setIMSessionName(const std::string& name);
 	void setOtherParticipantId(const LLUUID& other_participant_id);
 
@@ -126,7 +126,7 @@ class LLIMChiclet : public LLChiclet
 	LLTextBox* mCounterText;
 	LLIconCtrl* mSpeaker;
 
-	LLSD mIMSessionId;
+	LLUUID mIMSessionId;
 	bool mShowSpeaker;
 	SpeakerStatus mSpeakerStatus;
 };
@@ -182,13 +182,13 @@ class LLChicletPanel : public LLPanel
 
 	~LLChicletPanel();
 
-	LLChiclet* createChiclet(LLSD* imSessionId = NULL, S32 pos = 0);
+	LLChiclet* createChiclet(const LLUUID& im_session_id = LLUUID::null, S32 pos = 0);
 
 	bool addChiclet(LLChiclet*, S32 pos);
 
 	LLChiclet* getChiclet(S32 pos);
 
-	LLChiclet* findIMChiclet(const LLSD* imSessionId);
+	LLChiclet* findIMChiclet(const LLUUID& im_session_id);
 
 	S32 getChicletCount() {return mChicletList.size();};
 
@@ -196,7 +196,7 @@ class LLChicletPanel : public LLPanel
 
 	void removeChiclet(LLChiclet*);
 
-	void removeIMChiclet(const LLSD* imSessionId);
+	void removeIMChiclet(const LLUUID& im_session_id);
 
 	void removeAll();
 
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index a31d7daff73..f8dd35e956b 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -51,6 +51,7 @@
 #include "llresmgr.h"
 #include "llfloaterchat.h"
 #include "llfloaterchatterbox.h"
+#include "llfriendactions.h"
 #include "llhttpnode.h"
 #include "llimpanel.h"
 #include "llresizebar.h"
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index c7ef6e16f78..99f6823ba1d 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -50,7 +50,6 @@
 #include "llinventorymodel.h"
 #include "lllandmarklist.h"
 #include "lllocationhistory.h"
-#include "llpanelplaces.h"
 #include "llsidetray.h"
 #include "llviewerinventory.h"
 #include "llviewerparcelmgr.h"
@@ -352,10 +351,7 @@ void LLLocationInputCtrl::onFocusLost()
 
 void LLLocationInputCtrl::onInfoButtonClicked()
 {
-	LLSD key;
-	key["type"] = LLPanelPlaces::AGENT;
-
-	LLSideTray::getInstance()->showPanel("panel_places", key);
+	LLSideTray::getInstance()->showPanel("panel_places", LLSD().insert("type", "agent"));
 }
 
 void LLLocationInputCtrl::onAddLandmarkButtonClicked()
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 5c572b8fcdd..e3c4167d731 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -43,7 +43,6 @@
 #include "lltexteditor.h"
 #include "lltexturectrl.h"
 #include "lltooldraganddrop.h"
-#include "llviewermenu.h"		// *FIX: for is_agent_friend()
 #include "llscrollcontainer.h"
 #include "llweb.h"
 
@@ -140,7 +139,6 @@ LLPanelProfileTab::LLPanelProfileTab(const Params& params )
 
 LLPanelProfileTab::~LLPanelProfileTab()
 {
-	// *TODO Vadim: use notNull() instead. (there are several similar cases below)
 	if(mAvatarId.notNull())
 	{
 		LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this);
@@ -166,6 +164,11 @@ void LLPanelProfileTab::setProfileType()
 	mProfileType = (gAgentID == mAvatarId) ? PT_OWN : PT_OTHER;
 }
 
+void LLPanelProfileTab::onOpen(const LLSD& key)
+{
+	onActivate(key);
+}
+
 void LLPanelProfileTab::onActivate(const LLUUID& id)
 {
 	setAvatarId(id);
@@ -293,7 +296,7 @@ void LLPanelAvatarProfile::processProperties(void* data, EAvatarProcessorType ty
 
 
 			bool online = avatar_data->flags & AVATAR_ONLINE;
-			if(is_agent_friend(avatar_data->avatar_id))
+			if(LLFriendActions::isFriend(avatar_data->avatar_id))
 			{
 				// Online status NO could be because they are hidden
 				// If they are a friend, we may know the truth!
@@ -533,7 +536,7 @@ void LLPanelAvatarProfile::updateChildrenList()
 		childSetVisible("partner_edit_link", false);
 
 		//hide for friends
-		childSetEnabled("add_friend", !is_agent_friend(getAvatarId()));
+		childSetEnabled("add_friend", !LLFriendActions::isFriend(getAvatarId()));
 
 		//need to update profile view on every activate
 		mUpdated = false;
@@ -727,5 +730,5 @@ void LLPanelAvatarNotes::onActivate(const LLUUID& id)
 void LLPanelAvatarNotes::updateChildrenList()
 {
 	//hide for friends
-	childSetEnabled("add_friend", !is_agent_friend(getAvatarId()));
+	childSetEnabled("add_friend", !LLFriendActions::isFriend(getAvatarId()));
 }
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h
index 8bfa386d550..2b0fbaf1934 100644
--- a/indra/newview/llpanelavatar.h
+++ b/indra/newview/llpanelavatar.h
@@ -34,37 +34,10 @@
 #define LL_LLPANELAVATAR_H
 
 #include "llpanel.h"
-#include "v3dmath.h"
-#include "lluuid.h"
-#include "llwebbrowserctrl.h"
-
 #include "llavatarpropertiesprocessor.h"
 
-class LLButton;
-class LLCheckBoxCtrl;
 class LLComboBox;
-class LLDropTarget;
-class LLInventoryItem;
 class LLLineEditor;
-class LLNameEditor;
-class LLPanelAvatar;
-class LLScrollListCtrl;
-class LLTabContainer;
-class LLTextBox;
-class LLTextEditor;
-class LLTextureCtrl;
-class LLUICtrl;
-class LLViewerImage;
-class LLViewerObject;
-class LLMessageSystem;
-class LLIconCtrl;
-class LLWebBrowserCtrl;
-class LLVector3d;
-class LLFloaterReg;
-
-class LLPanelMeProfile;
-class LLPanelPick;
-class LLAgent;
 
 enum EOnlineStatus
 {
@@ -87,7 +60,9 @@ class LLPanelProfileTab
 	const LLUUID& getAvatarId(){return mAvatarId;}
 
 	virtual void updateData() = 0;
-	
+
+	virtual void onOpen(const LLSD& key);
+
 	virtual void onActivate(const LLUUID& id);
 
 	typedef enum e_profile_type
@@ -138,16 +113,6 @@ class LLPanelAvatarProfile
 	/*virtual*/ BOOL postBuild(void);
 	/*virtual*/ void onOpen(const LLSD& key);
 
-	void onAddFriendButtonClick();
-
-	void onIMButtonClick();
-
-	void onCallButtonClick();
-
-	void onTeleportButtonClick();
-
-	void onShareButtonClick();
-
 private:
 	bool isOwnProfile(){return PT_OWN == mProfileType;}
 	bool isEditMode(){return mEditMode;}
@@ -162,6 +127,13 @@ class LLPanelAvatarProfile
 	void onMyAccountTextboxClicked();
 	void onPartnerEditTextboxClicked();
 
+	void onAddFriendButtonClick();
+	void onIMButtonClick();
+	void onCallButtonClick();
+	void onTeleportButtonClick();
+	void onShareButtonClick();
+
+
 protected:
 	bool mEditMode;
 
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index d1164dafb8d..6fad582eeee 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -262,7 +262,7 @@ void LLLandmarksPanel::onSelectorButtonClicked()
 	if (listenerp->getInventoryType() == LLInventoryType::IT_LANDMARK)
 	{
 		LLSD key;
-		key["type"] = LLPanelPlaces::LANDMARK;
+		key["type"] = "landmark";
 		key["id"] = listenerp->getUUID();
 
 		LLSideTray::getInstance()->showPanel("panel_places", key);
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index b6141384f76..82c8f97d4d7 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -326,7 +326,6 @@ LLPanelPeople::~LLPanelPeople()
 	delete mGroupListUpdater;
 
 	LLView::deleteViewByHandle(mGroupPlusMenuHandle);
-	LLView::deleteViewByHandle(mGroupMinusMenuHandle);
 }
 
 BOOL LLPanelPeople::postBuild()
@@ -377,9 +376,6 @@ BOOL LLPanelPeople::postBuild()
 	registrar.add("People.Group.Plus.Action",  boost::bind(&LLPanelPeople::onGroupPlusMenuItemClicked,  this, _2));
 	LLMenuGL* plus_menu  = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_group_plus.xml",  gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
 	mGroupPlusMenuHandle  = plus_menu->getHandle();
-	registrar.add("People.Group.Minus.Action", boost::bind(&LLPanelPeople::onGroupMinusMenuItemClicked, this, _2));
-	LLMenuGL* minus_menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_group_minus.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
-	mGroupMinusMenuHandle = minus_menu->getHandle();
 
 	// Perform initial update.
 	mFriendListUpdater->forceUpdate();
@@ -430,7 +426,12 @@ bool LLPanelPeople::updateRecentList()
 
 bool LLPanelPeople::updateGroupList()
 {
-	return mGroupList->update(mFilterSubString);
+	bool have_names = mGroupList->update(mFilterSubString);
+
+	if (mGroupList->isEmpty())
+		mGroupList->setCommentText(getString("no_groups"));
+
+	return have_names;
 }
 
 bool LLPanelPeople::filterFriendList()
@@ -742,11 +743,9 @@ void LLPanelPeople::onGroupPlusButtonClicked()
 
 void LLPanelPeople::onGroupMinusButtonClicked()
 {
-	LLMenuGL* minus_menu = (LLMenuGL*)mGroupMinusMenuHandle.get();
-	if (!minus_menu)
-		return;
-
-	showGroupMenu(minus_menu);
+	LLUUID group_id = getCurrentItemID();
+	if (group_id.notNull())
+		LLGroupActions::leave(group_id);
 }
 
 void LLPanelPeople::onGroupPlusMenuItemClicked(const LLSD& userdata)
@@ -759,19 +758,6 @@ void LLPanelPeople::onGroupPlusMenuItemClicked(const LLSD& userdata)
 		LLGroupActions::create();
 }
 
-void LLPanelPeople::onGroupMinusMenuItemClicked(const LLSD& userdata)
-{
-	std::string chosen_item = userdata.asString();
-
-	LLUUID group_id = getCurrentItemID();
-	if (chosen_item == "leave_group")
-		LLGroupActions::leave(group_id);
-	/*
-	else if (chosen_item == "delete_group")
-		; // *TODO: how to delete a group?
-	*/
-}
-
 void LLPanelPeople::onCallButtonClicked()
 {
 	// *TODO: not implemented yet
@@ -794,5 +780,10 @@ void LLPanelPeople::onMoreButtonClicked()
 
 void	LLPanelPeople::onOpen(const LLSD& key)
 {
-	reSelectedCurrentTab();
+	std::string tab_name = key.asString();
+
+	if (!tab_name.empty())
+		mTabContainer->selectTabByName(tab_name);
+	else
+		reSelectedCurrentTab();
 }
diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h
index 4855096750e..11317901062 100644
--- a/indra/newview/llpanelpeople.h
+++ b/indra/newview/llpanelpeople.h
@@ -96,7 +96,6 @@ class LLPanelPeople : public LLPanel
 	void					onGroupPlusButtonClicked();
 	void					onGroupMinusButtonClicked();
 	void					onGroupPlusMenuItemClicked(const LLSD& userdata);
-	void					onGroupMinusMenuItemClicked(const LLSD& userdata);
 
 	// misc callbacks
 	bool					onFriendListUpdate(U32 changed_mask);
@@ -113,7 +112,6 @@ class LLPanelPeople : public LLPanel
 	LLGroupList*			mGroupList;
 
 	LLHandle<LLView>		mGroupPlusMenuHandle;
-	LLHandle<LLView>		mGroupMinusMenuHandle;
 
 	Updater*				mFriendListUpdater;
 	Updater*				mNearbyListUpdater;
diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp
index cb47759a49d..2bcead425aa 100644
--- a/indra/newview/llpanelpick.cpp
+++ b/indra/newview/llpanelpick.cpp
@@ -102,6 +102,11 @@ void LLPanelPick::reset()
 	setLocation("");
 	mSnapshotCtrl->setImageAssetID(LLUUID::null);
 
+	//*HACK just setting asset id to NULL not enough to clear 
+	//the texture controls, w/o setValid(FALSE) it continues to 
+	//draw the previously set image
+	mSnapshotCtrl->setValid(FALSE);
+
 	mDataReceived = FALSE;
 
 	mPosGlobal.clearVec();
@@ -113,25 +118,24 @@ BOOL LLPanelPick::postBuild()
 
 	if (mEditMode)
 	{
-		childSetAction("cancel_btn", onClickCancel, this);
-		childSetAction("set_to_curr_location_btn", onClickSet, this);
-		childSetAction(XML_BTN_SAVE, onClickSave, this);
+		childSetAction("cancel_btn", boost::bind(&LLPanelPick::onClickCancel, this));
+		childSetAction("set_to_curr_location_btn", boost::bind(&LLPanelPick::onClickSet, this));
+		childSetAction(XML_BTN_SAVE, boost::bind(&LLPanelPick::onClickSave, this));
 
 		mSnapshotCtrl->setMouseEnterCallback(boost::bind(&LLPanelPick::childSetVisible, this, "edit_icon", true));
 		mSnapshotCtrl->setMouseLeaveCallback(boost::bind(&LLPanelPick::childSetVisible, this, "edit_icon", false));
 	}
 	else
 	{
-		childSetAction("edit_btn", onClickEdit, this);
-		childSetAction("teleport_btn", onClickTeleport, this);
-		childSetAction("show_on_map_btn", onClickMap, this);
+		childSetAction("edit_btn", boost::bind(&LLPanelPick::onClickEdit, this));
+		childSetAction("teleport_btn", boost::bind(&LLPanelPick::onClickTeleport, this));
+		childSetAction("show_on_map_btn", boost::bind(&LLPanelPick::onClickMap, this));
 
-		if (mExitFunction && mExitData)
+		if (!mBackCb.empty())
 		{
-			childSetAction("back_btn", mExitFunction, mExitData);
+			LLButton* button = findChild<LLButton>("back_btn");
+			if (button) button->setClickedCallback(mBackCb);
 		}
-
-		//*TODO set on menu
 	}
 
 	return TRUE;
@@ -165,6 +169,9 @@ void LLPanelPick::init(LLPickData *pick_data)
 	setLocation(pick_data->location_text);
 	mSnapshotCtrl->setImageAssetID(pick_data->snapshot_id);
 
+	//*HACK see reset() where the texture control was set to FALSE
+	mSnapshotCtrl->setValid(TRUE);
+
 	mPosGlobal = pick_data->pos_global;
 	mSimName = pick_data->sim_name;
 	mParcelId = pick_data->parcel_id;
@@ -322,30 +329,23 @@ void LLPanelPick::sendUpdate()
 //-----------------------------------------
 
 //static
-void LLPanelPick::onClickEdit(void* data)
+void LLPanelPick::onClickEdit()
 {
-	LLPanelPick* self = (LLPanelPick*)data;
-	if (!self) return;
-	if (self->mEditMode) return;
-	if (!self->mDataReceived) return;
-
-	self->setEditMode(TRUE);
+	if (mEditMode) return;
+	if (!mDataReceived) return;
+	setEditMode(TRUE);
 }
 
 //static
-void LLPanelPick::onClickTeleport(void* data)
+void LLPanelPick::onClickTeleport()
 {
-	LLPanelPick* self = (LLPanelPick*)data;
-	if (!self) return;
-	teleport(self->mPosGlobal);
+	teleport(mPosGlobal);
 }
 
 //static
-void LLPanelPick::onClickMap(void* data)
+void LLPanelPick::onClickMap()
 {
-	LLPanelPick* self = (LLPanelPick*)data;
-	if (!self) return;
-	showOnMap(self->mPosGlobal);
+	showOnMap(mPosGlobal);
 }
 
 
@@ -354,49 +354,44 @@ void LLPanelPick::onClickMap(void* data)
 //-----------------------------------------
 
 //static
-void LLPanelPick::onClickCancel(void* data)
+void LLPanelPick::onClickCancel()
 {
-	LLPanelPick* self = (LLPanelPick*) data;
-	if (!self) return;
-	if (!self->mEditMode) return;
+	if (!mEditMode) return;
 	
-	LLUUID pick_id = self->mPickId;
-	LLUUID creator_id = self->mCreatorId;
-	self->reset();
-	self->init(creator_id, pick_id);
+	LLUUID pick_id = mPickId;
+	LLUUID creator_id = mCreatorId;
+	reset();
+	init(creator_id, pick_id);
 }
 
 // static
-void LLPanelPick::onClickSet(void* data)
+void LLPanelPick::onClickSet()
 {
-	LLPanelPick* self = (LLPanelPick*) data;
-	if (!self) return;
-	if (!self->mEditMode) return;
-	if (!self->mDataReceived) return;
+	if (!mEditMode) return;
+	if (!mDataReceived) return;
 
 	// Save location for later.
-	self->mPosGlobal = gAgent.getPositionGlobal();
+	mPosGlobal = gAgent.getPositionGlobal();
 
-	S32 region_x = llround((F32)self->mPosGlobal.mdV[VX]) % REGION_WIDTH_UNITS;
-	S32 region_y = llround((F32)self->mPosGlobal.mdV[VY]) % REGION_WIDTH_UNITS;
-	S32 region_z = llround((F32)self->mPosGlobal.mdV[VZ]);
+	S32 region_x = llround((F32)mPosGlobal.mdV[VX]) % REGION_WIDTH_UNITS;
+	S32 region_y = llround((F32)mPosGlobal.mdV[VY]) % REGION_WIDTH_UNITS;
+	S32 region_z = llround((F32)mPosGlobal.mdV[VZ]);
 
 	std::string location_text = "(will update after save), ";
-	location_text.append(self->mSimName);
+	location_text.append(mSimName);
 	location_text.append(llformat(" (%d, %d, %d)", region_x, region_y, region_z));
 
-	self->setLocation(location_text);
+	setLocation(location_text);
 }
 
 // static
-void LLPanelPick::onClickSave(void* data)
+void LLPanelPick::onClickSave()
 {
-	LLPanelPick* self = (LLPanelPick*)data;
-	if (!self->mEditMode) return;
-	if (!self->mDataReceived) return;
+	if (!mEditMode) return;
+	if (!mDataReceived) return;
 
-	self->sendUpdate();
-	self->setEditMode(FALSE);
+	sendUpdate();
+	setEditMode(FALSE);
 }
 
 void LLPanelPick::updateButtons()
@@ -422,13 +417,13 @@ void LLPanelPick::updateButtons()
 	}
 }
 
-void LLPanelPick::setExitCallback( boost::function<void(void*)> function, void* data )
+void LLPanelPick::setExitCallback(commit_callback_t cb)
 {
-	mExitFunction = function;
-	mExitData = data;
+	mBackCb = cb;
 	if (!mEditMode)
 	{
-		childSetAction("back_btn", function, data);
+		LLButton* button = findChild<LLButton>("back_btn");
+		if (button) button->setClickedCallback(mBackCb);
 	}
 }
 
diff --git a/indra/newview/llpanelpick.h b/indra/newview/llpanelpick.h
index 36bced38494..fd07d9ef91a 100644
--- a/indra/newview/llpanelpick.h
+++ b/indra/newview/llpanelpick.h
@@ -74,7 +74,7 @@ class LLPanelPick : public LLPanel, public LLAvatarPropertiesObserver
 	// but that causes such a complication that we cannot set a callback for a "Back" button
 	// from the parent panel only once, so we have to preserve that callback
 	// in the pick panel and set it for the back button everytime postBuild() is called.
-	void setExitCallback(boost::function<void(void*)> function, void* value);
+	void setExitCallback(commit_callback_t cb);
 
 	static void teleport(const LLVector3d& position);
 	static void showOnMap(const LLVector3d& position);
@@ -100,16 +100,16 @@ class LLPanelPick : public LLPanel, public LLAvatarPropertiesObserver
 	//-----------------------------------------
 	// "PICK INFO" (VIEW MODE) BUTTON HANDLERS
 	//-----------------------------------------
-	static void onClickEdit(void* data);
-	static void onClickTeleport(void* data);
-	static void onClickMap(void* data);
+	void onClickEdit();
+	void onClickTeleport();
+	void onClickMap();
 
 	//-----------------------------------------
 	// "EDIT PICK" (EDIT MODE) BUTTON HANDLERS
 	//-----------------------------------------
-	static void onClickSet(void* data);
-	static void onClickSave(void* data);
-	static void onClickCancel(void* data);
+	void onClickSet();
+	void onClickSave();
+	void onClickCancel();
 
 protected:
 	BOOL mEditMode;
@@ -122,8 +122,7 @@ class LLPanelPick : public LLPanel, public LLAvatarPropertiesObserver
 	LLUUID mParcelId;
 	std::string mSimName;
 
-	boost::function<void(void*)> mExitFunction;
-	void* mExitData;
+	commit_callback_t mBackCb;
 };
 
 #endif // LL_LLPANELPICK_H
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index f3adaded346..778a2299f57 100644
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -38,10 +38,12 @@
 #include "llviewergenericmessage.h"	// send_generic_message
 #include "llmenugl.h"
 #include "llviewermenu.h"
+#include "llregistry.h"
 
 #include "llpanelpicks.h"
 #include "llavatarpropertiesprocessor.h"
 #include "llpanelavatar.h"
+#include "llpanelprofile.h"
 #include "llpanelpick.h"
 
 static const std::string XML_BTN_NEW = "new_btn";
@@ -58,12 +60,13 @@ static const std::string XML_PICKS_LIST = "back_panel";
 //-----------------------------------------------------------------------------
 // LLPanelPicks
 //-----------------------------------------------------------------------------
-LLPanelPicks::LLPanelPicks(const LLUUID& avatar_id /* = LLUUID::null */)
-:	LLPanelProfileTab(avatar_id),
+LLPanelPicks::LLPanelPicks()
+:	LLPanelProfileTab(LLUUID::null),
 	mPopupMenu(NULL),
-	mSelectedPickItem(NULL)
+	mSelectedPickItem(NULL),
+	mProfilePanel(NULL),
+	mPickPanel(NULL)
 {
-	updateData();
 }
 
 LLPanelPicks::~LLPanelPicks()
@@ -76,12 +79,6 @@ LLPanelPicks::~LLPanelPicks()
 
 void* LLPanelPicks::create(void* data /* = NULL */)
 {
-	LLSD* id = NULL;
-	if(data)
-	{
-		id = static_cast<LLSD*>(data);
-		return new LLPanelPicks(LLUUID(id->asUUID()));
-	}
 	return new LLPanelPicks();
 }
 
@@ -125,6 +122,8 @@ void LLPanelPicks::processProperties(void* data, EAvatarProcessorType type)
 				std::string pick_name = it->second;
 
 				LLPickItem* picture = LLPickItem::create();
+				picture->childSetAction("info_chevron", boost::bind(&LLPanelPicks::onClickInfo, this));
+				
 				picks_list->addChild(picture);
 
 				picture->setPickName(pick_name);
@@ -228,24 +227,30 @@ LLView* LLPanelPicks::getPicksList() const
 	return getChild<LLView>(XML_PICKS_LIST, TRUE, FALSE);
 }
 
-BOOL LLPanelPicks::postBuild(void)
+BOOL LLPanelPicks::postBuild()
 {
-	childSetAction(XML_BTN_DELETE, onClickDelete, this);
+	childSetAction(XML_BTN_DELETE, boost::bind(&LLPanelPicks::onClickDelete, this));
 
-	childSetAction("teleport_btn", onClickTeleport, this);
-	childSetAction("show_on_map_btn", onClickMap, this);
-
-	mCommitCallbackRegistrar.add("Pick.Teleport", boost::bind(onClickTeleport, this));
-	mCommitCallbackRegistrar.add("Pick.Map", boost::bind(onClickMap, this));
-	mCommitCallbackRegistrar.add("Pick.Delete", boost::bind(onClickDelete, this));
+	childSetAction("teleport_btn", boost::bind(&LLPanelPicks::onClickTeleport, this));
+	childSetAction("show_on_map_btn", boost::bind(&LLPanelPicks::onClickMap, this));
 
+	childSetAction("info_btn", boost::bind(&LLPanelPicks::onClickInfo, this));
+	childSetAction("new_btn", boost::bind(&LLPanelPicks::onClickNew, this));
+	
+	CommitCallbackRegistry::ScopedRegistrar registar;
+	registar.add("Pick.Info", boost::bind(&LLPanelPicks::onClickInfo, this));
+	registar.add("Pick.Edit", boost::bind(&LLPanelPicks::onClickMenuEdit, this)); 
+	registar.add("Pick.Teleport", boost::bind(&LLPanelPicks::onClickTeleport, this));
+	registar.add("Pick.Map", boost::bind(&LLPanelPicks::onClickMap, this));
+	registar.add("Pick.Delete", boost::bind(&LLPanelPicks::onClickDelete, this));
 	mPopupMenu = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>("menu_picks.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
-
+	
 	return TRUE;
 }
 
-void LLPanelPicks::onActivate(const LLUUID& id)
+void LLPanelPicks::onOpen(const LLSD& key)
 {
+	const LLUUID id(key.asUUID());
 	BOOL self = (gAgent.getID() == id);
 
 	// only agent can edit her picks 
@@ -267,21 +272,18 @@ void LLPanelPicks::onActivate(const LLUUID& id)
 		childSetVisible("pick_title_agent", self);
 	}
 
-	LLPanelProfileTab::onActivate(id);
+	LLPanelProfileTab::onOpen(key);
 }
 
 //static
-void LLPanelPicks::onClickDelete(void *data)
+void LLPanelPicks::onClickDelete()
 {
-	LLPanelPicks* self = (LLPanelPicks*) data;
-	if (!self) return;
-
-	LLPickItem* pick_item = self->getSelectedPickItem();
+	LLPickItem* pick_item = getSelectedPickItem();
 	if (!pick_item) return;
 
 	LLSD args; 
 	args["PICK"] = pick_item->getPickName(); 
-	LLNotifications::instance().add("DeleteAvatarPick", args, LLSD(), boost::bind(&LLPanelPicks::callbackDelete, self, _1, _2)); 
+	LLNotifications::instance().add("DeleteAvatarPick", args, LLSD(), boost::bind(&LLPanelPicks::callbackDelete, this, _1, _2)); 
 }
 
 bool LLPanelPicks::callbackDelete(const LLSD& notification, const LLSD& response) 
@@ -299,20 +301,29 @@ bool LLPanelPicks::callbackDelete(const LLSD& notification, const LLSD& response
 	return false;
 }
 
+bool LLPanelPicks::callbackTeleport( const LLSD& notification, const LLSD& response )
+{
+	S32 option = LLNotification::getSelectedOption(notification, response);
+
+	if (0 == option)
+	{
+		onClickTeleport();
+	}
+	return false;
+}
+
 //static
-void LLPanelPicks::onClickTeleport(void* data)
+void LLPanelPicks::onClickTeleport()
 {
-	LLPanelPicks* self = (LLPanelPicks*)data;
-	LLPickItem* pick_item = self->getSelectedPickItem();
+	LLPickItem* pick_item = getSelectedPickItem();
 	if (!pick_item) return;
 	LLPanelPick::teleport(pick_item->getPosGlobal());
 }
 
 //static
-void LLPanelPicks::onClickMap(void* data)
+void LLPanelPicks::onClickMap()
 {
-	LLPanelPicks* self = (LLPanelPicks*)data;
-	LLPickItem* pick_item = self->getSelectedPickItem();
+	LLPickItem* pick_item = getSelectedPickItem();
 	if (!pick_item) return;
 	LLPanelPick::showOnMap(pick_item->getPosGlobal());
 }
@@ -336,10 +347,26 @@ BOOL LLPanelPicks::handleRightMouseDown(S32 x, S32 y, MASK mask)
 
 BOOL LLPanelPicks::handleMouseDown( S32 x, S32 y, MASK mask )
 {
-	if (isMouseInPick(x, y)) return TRUE;
+	isMouseInPick(x, y);
 	return LLPanel::handleMouseDown(x, y, mask);
 }
 
+BOOL LLPanelPicks::handleDoubleClick(S32 x, S32 y, MASK mask)
+{
+	if (isMouseInPick(x, y))
+	{
+		LLPickItem* pick_item = getSelectedPickItem();
+		if (pick_item) 
+		{
+			LLSD args; 
+			args["PICK"] = pick_item->getPickName(); 
+			LLNotifications::instance().add("TeleportToPick", args, LLSD(), boost::bind(&LLPanelPicks::callbackTeleport, this, _1, _2)); 
+		}
+		return TRUE;
+	}
+	return LLPanel::handleDoubleClick(x, y, mask);
+}
+
 void LLPanelPicks::updateButtons()
 {
 	int picks_num = mPickItemList.size();
@@ -361,7 +388,7 @@ void LLPanelPicks::updateButtons()
 
 }
 
-void LLPanelPicks::setSelectedPickItem( LLPickItem* item )
+void LLPanelPicks::setSelectedPickItem(LLPickItem* item)
 {
 	if (!item) return;
 	if (mSelectedPickItem == item) return;
@@ -395,6 +422,64 @@ BOOL LLPanelPicks::isMouseInPick( S32 x, S32 y )
 }
 
 
+void LLPanelPicks::setProfilePanel(LLPanelProfile* profile_panel)
+{
+	mProfilePanel = profile_panel;
+}
+
+
+void LLPanelPicks::buildPickPanel()
+{
+	if (mPickPanel == NULL)
+	{
+		mPickPanel = new LLPanelPick();
+		mPickPanel->setExitCallback(boost::bind(&LLPanelPicks::onClickBack, this));
+	}
+}
+
+void LLPanelPicks::onClickNew()
+{
+	buildPickPanel();
+	mPickPanel->setEditMode(TRUE);
+	mPickPanel->createNewPick();
+	getProfilePanel()->togglePanel(mPickPanel);
+}
+
+void LLPanelPicks::onClickInfo()
+{
+	LLPickItem* pick = getSelectedPickItem();
+	if (!pick) return;
+
+	buildPickPanel();
+	mPickPanel->reset();
+	mPickPanel->init(pick->getCreatorId(), pick->getPickId());
+	getProfilePanel()->togglePanel(mPickPanel);
+}
+
+void LLPanelPicks::onClickBack()
+{
+	getProfilePanel()->togglePanel(mPickPanel);
+}
+
+void LLPanelPicks::onClickMenuEdit()
+{
+	//*TODO, refactor - most of that is similar to onClickInfo
+	LLPickItem* pick = getSelectedPickItem();
+	if (!pick) return;
+
+	buildPickPanel();
+	mPickPanel->reset();
+	mPickPanel->init(pick->getCreatorId(), pick->getPickId());
+	mPickPanel->setEditMode(TRUE);
+	getProfilePanel()->togglePanel(mPickPanel);
+}
+
+inline LLPanelProfile* LLPanelPicks::getProfilePanel()
+{
+	llassert_always(NULL != mProfilePanel);
+	return mProfilePanel;
+}
+
 //-----------------------------------------------------------------------------
 // LLPanelPicks
 //-----------------------------------------------------------------------------
@@ -506,6 +591,6 @@ void LLPickItem::processProperties(void *data, EAvatarProcessorType type)
 	if (mPickID != pick_data->pick_id) return;
 
 	init(pick_data);
-	LLAvatarPropertiesProcessor::instance().removeObserver(pick_data->agent_id, this);
+	LLAvatarPropertiesProcessor::instance().removeObserver(mCreatorID, this);
 }
 
diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h
index 5ec9809f0b2..3bc79daeb3e 100644
--- a/indra/newview/llpanelpicks.h
+++ b/indra/newview/llpanelpicks.h
@@ -38,7 +38,9 @@
 #include "lluuid.h"
 #include "llavatarpropertiesprocessor.h"
 #include "llpanelavatar.h"
+#include "llregistry.h"
 
+class LLPanelProfile;
 class LLMessageSystem;
 class LLVector3d;
 class LLPanelProfileTab;
@@ -52,14 +54,14 @@ class LLPanelPicks
 	: public LLPanelProfileTab
 {
 public:
-	LLPanelPicks(const LLUUID& avatar_id = LLUUID::null);
+	LLPanelPicks();
 	~LLPanelPicks();
 
 	static void* create(void* data);
 
 	/*virtual*/ BOOL postBuild(void);
 
-	/*virtual*/ void onActivate(const LLUUID& id);
+	/*virtual*/ void onOpen(const LLSD& key);
 
 	void processProperties(void* data, EAvatarProcessorType type);
 
@@ -75,13 +77,29 @@ class LLPanelPicks
 
 	/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
 	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
+	/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
+
+	//*NOTE top down approch when panel toggling is done only by 
+	// parent panels failed to work (picks related code was in me profile panel)
+	void setProfilePanel(LLPanelProfile* profile_panel);
 
 private:
-	static void onClickDelete(void* data);
-	static void onClickTeleport(void* data);
-	static void onClickMap(void* data);
+	void onClickDelete();
+	void onClickTeleport();
+	void onClickMap();
+
+	//------------------------------------------------
+	// Callbacks which require panel toggling
+	//------------------------------------------------
+	void onClickNew();
+	void onClickInfo();
+	void onClickBack();
+	void onClickMenuEdit();
+
+	void buildPickPanel();
 
 	bool callbackDelete(const LLSD& notification, const LLSD& response);
+	bool callbackTeleport(const LLSD& notification, const LLSD& response);
 
 	void reshapePicksList();
 	void reshapePickItem(LLView* const pick_item, const S32 last_bottom);
@@ -92,11 +110,16 @@ class LLPanelPicks
 
 	BOOL isMouseInPick(S32 x, S32 y);
 
+	LLPanelProfile* getProfilePanel();
+
+
 	typedef std::list<LLPickItem*> picture_list_t;
 	picture_list_t mPickItemList;
 
 	LLMenuGL* mPopupMenu;
 	LLPickItem* mSelectedPickItem;
+	LLPanelProfile* mProfilePanel;
+	LLPanelPick* mPickPanel;
 };
 
 class LLPickItem : public LLPanel, public LLAvatarPropertiesObserver
diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp
index d40e10478a4..5bbcf4207ff 100644
--- a/indra/newview/llpanelplaceinfo.cpp
+++ b/indra/newview/llpanelplaceinfo.cpp
@@ -43,29 +43,20 @@
 #include "llqueryflags.h"
 
 #include "llbutton.h"
-#include "llfloater.h"
-#include "llfloaterreg.h"
 #include "lllineeditor.h"
 #include "llscrollcontainer.h"
 #include "lltextbox.h"
-#include "lltrans.h"
-#include "llui.h"
-#include "lluictrlfactory.h"
 
 #include "llagent.h"
 #include "llfloaterworldmap.h"
 #include "llinventorymodel.h"
 #include "lltexturectrl.h"
-#include "lluiconstants.h"
-#include "llviewercontrol.h"
 #include "llviewerinventory.h"
 #include "llviewerregion.h"
 #include "llviewertexteditor.h"
-#include "llviewerwindow.h"
-#include "llweb.h"
 #include "llworldmap.h"
 
-static LLRegisterPanelClassWrapper<LLPanelPlaceInfo> t_places("panel_landmark_info");
+static LLRegisterPanelClassWrapper<LLPanelPlaceInfo> t_place_info("panel_place_info");
 
 LLPanelPlaceInfo::LLPanelPlaceInfo()
 :	LLPanel(),
@@ -86,6 +77,9 @@ LLPanelPlaceInfo::~LLPanelPlaceInfo()
 
 BOOL LLPanelPlaceInfo::postBuild()
 {
+	mTitle = getChild<LLTextBox>("panel_title");
+	mCurrentTitle = mTitle->getText();
+
 	// Since this is only used in the directory browser, always
 	// disable the snapshot control. Otherwise clicking on it will
 	// open a texture picker.
@@ -114,7 +108,8 @@ BOOL LLPanelPlaceInfo::postBuild()
 
 	mScrollingPanel = getChild<LLPanel>("scrolling_panel");
 
-	mInfoPanel = getChild<LLPanel>("info_panel");
+	mInfoPanel = getChild<LLPanel>("info_panel", TRUE, FALSE);
+	mMediaPanel = getChild<LLMediaPanel>("media_panel", TRUE, FALSE);
 
 	return TRUE;
 }
@@ -235,6 +230,45 @@ void LLPanelPlaceInfo::setParcelID(const LLUUID& parcel_id)
 	sendParcelInfoRequest();
 }
 
+void LLPanelPlaceInfo::setInfoType(INFO_TYPE type)
+{
+	if (!mInfoPanel)
+	    return;
+
+	if (type == PLACE)
+	{
+		mCurrentTitle = getString("title_place");
+	}
+	else
+	{
+		mCurrentTitle = getString("title_landmark");
+	}
+	
+	if (mInfoPanel->getVisible())
+	{
+		mTitle->setText(mCurrentTitle);
+	}
+}
+
+void LLPanelPlaceInfo::toggleMediaPanel()
+{
+    if (!(mMediaPanel && mInfoPanel))
+        return;
+
+    bool visible = mInfoPanel->getVisible();
+    if (visible)
+	{
+		mTitle->setText(getString("title_media"));
+	}
+	else
+	{
+		mTitle->setText(mCurrentTitle);
+	}
+
+    mInfoPanel->setVisible(!visible);
+    mMediaPanel->setVisible(visible);
+}
+
 void LLPanelPlaceInfo::sendParcelInfoRequest()
 {
 	if (mParcelID != mRequestedID)
diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h
index cec9e7b80c0..8b00507ba0d 100644
--- a/indra/newview/llpanelplaceinfo.h
+++ b/indra/newview/llpanelplaceinfo.h
@@ -40,6 +40,7 @@
 
 #include "lliconctrl.h"
 
+#include "llpanelmedia.h"
 #include "llremoteparcelrequest.h"
 
 class LLButton;
@@ -52,19 +53,31 @@ class LLTextureCtrl;
 class LLPanelPlaceInfo : public LLPanel, LLRemoteParcelInfoObserver
 {
 public:
+	enum INFO_TYPE
+	{
+		PLACE,
+		LANDMARK
+	};
+
 	LLPanelPlaceInfo();
 	/*virtual*/ ~LLPanelPlaceInfo();
 
 	/*virtual*/ BOOL postBuild();
 
+	// Ignore all old location information, useful if you are 
+	// recycling an existing dialog and need to clear it.
 	void resetLocation();
-		// Ignore all old location information, useful if you are 
-		// recycling an existing dialog and need to clear it.
 
+	// Sends a request for data about the given parcel, which will
+	// only update the location if there is none already available.
 	/*virtual*/ void setParcelID(const LLUUID& parcel_id);
-		// Sends a request for data about the given parcel, which will
-		// only update the location if there is none already available.
 
+	// Depending on how the panel was triggered 
+	// (from landmark or current location, or other) 
+	// sets a corresponding title and contents.
+	void setInfoType(INFO_TYPE type);
+
+	void toggleMediaPanel();
 	void displayItemInfo(const LLInventoryItem* pItem);
 	/*virtual*/ void setErrorStatus(U32 status, const std::string& reason);
 
@@ -81,10 +94,10 @@ class LLPanelPlaceInfo : public LLPanel, LLRemoteParcelInfoObserver
 
 private:
 	enum LANDMARK_INFO_TYPE
-		{
-			TITLE,
-			NOTE
-		};
+	{
+		TITLE,
+		NOTE
+	};
 
 	void onCommitTitleOrNote(LANDMARK_INFO_TYPE type);
 
@@ -92,7 +105,10 @@ class LLPanelPlaceInfo : public LLPanel, LLRemoteParcelInfoObserver
 	LLUUID			mRequestedID;
 	LLUUID			mLandmarkID;
 	LLVector3		mPosRegion;
+	std::string		mCurrentTitle;
+	S32				mMinHeight;
 
+	LLTextBox*			mTitle;
 	LLTextureCtrl*		mSnapshotCtrl;
 	LLTextBox*			mRegionName;
 	LLTextBox*			mParcelName;
@@ -106,7 +122,7 @@ class LLPanelPlaceInfo : public LLPanel, LLRemoteParcelInfoObserver
 	LLTextBox*			mLocationEditor;
 	LLPanel*            mScrollingPanel;
 	LLPanel*			mInfoPanel;
-	S32					mMinHeight;
+	LLMediaPanel*		mMediaPanel;
 };
 
 #endif // LL_LLPANELPLACEINFO_H
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index f23d8397083..f5e225c51b8 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -80,7 +80,7 @@ BOOL LLPanelPlaces::postBuild()
 		mSearchEditor->setSearchCallback(boost::bind(&LLPanelPlaces::onSearchEdit, this, _1));
 	}
 
-	mPlaceInfo = dynamic_cast<LLPanelPlaceInfo*>(getChild<LLPanel>("panel_landmark_info"));
+	mPlaceInfo = getChild<LLPanelPlaceInfo>("panel_place_info", TRUE, FALSE);
 	if (mPlaceInfo)
 	{
 		LLButton* back_btn = mPlaceInfo->getChild<LLButton>("back_btn");
@@ -88,6 +88,9 @@ BOOL LLPanelPlaces::postBuild()
 		{
 			back_btn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this));
 		}
+
+		// *TODO: Assign the action to an appropriate event.
+		childSetAction("overflow_btn", boost::bind(&LLPanelPlaceInfo::toggleMediaPanel, mPlaceInfo), this);
 	}
 
 	//childSetAction("share_btn", boost::bind(&LLPanelPlaces::onShareButtonClicked, this), this);
@@ -109,24 +112,26 @@ void LLPanelPlaces::onOpen(const LLSD& key)
 
 	togglePlaceInfoPanel(TRUE);
 
-	mPlaceInfoType = key["type"].asInteger();
+	mPlaceInfoType = key["type"].asString();
 
-	if (mPlaceInfoType == AGENT)
+	if (mPlaceInfoType == "agent")
 	{
 		// We don't need to teleport to the current location so disable the button
 		getChild<LLButton>("teleport_btn")->setEnabled(FALSE);
 		getChild<LLButton>("map_btn")->setEnabled(TRUE);
 
+		mPlaceInfo->setInfoType(LLPanelPlaceInfo::PLACE);
 		mPlaceInfo->displayParcelInfo(gAgent.getPositionAgent(),
 									  gAgent.getRegion()->getRegionID(),
 									  gAgent.getPositionGlobal());
 	}
-	else if (mPlaceInfoType == LANDMARK)
+	else if (mPlaceInfoType == "landmark")
 	{
 		LLInventoryItem* item = gInventory.getItem(key["id"].asUUID());
 		if (!item)
 			return;
 
+		mPlaceInfo->setInfoType(LLPanelPlaceInfo::LANDMARK);
 		mPlaceInfo->displayItemInfo(item);
 
 		LLLandmark* landmark = gLandmarkList.getAsset(item->getAssetUUID());
@@ -142,7 +147,7 @@ void LLPanelPlaces::onOpen(const LLSD& key)
 									  pos_global);
 
 	}
-	else if (mPlaceInfoType == TELEPORT_HISTORY)
+	else if (mPlaceInfoType == "teleport_history")
 	{
 		S32 index = key["id"].asInteger();
 
@@ -156,6 +161,7 @@ void LLPanelPlaces::onOpen(const LLSD& key)
 
 		LLVector3 pos_local(region_x, region_y, (F32)pos_global.mdV[VZ]);
 
+		mPlaceInfo->setInfoType(LLPanelPlaceInfo::PLACE);
 		mPlaceInfo->displayParcelInfo(pos_local,
 									  hist_items[index].mRegionID,
 									  pos_global);
@@ -211,7 +217,7 @@ void LLPanelPlaces::onTeleportButtonClicked()
 
 void LLPanelPlaces::onShowOnMapButtonClicked()
 {
-	if (!mPlaceInfoType)
+	if (mPlaceInfoType == "agent")
 	{
 		LLVector3d global_pos = gAgent.getPositionGlobal();
 		if (!global_pos.isExactlyZero())
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index 533fb8dd828..89758fc34f4 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -46,13 +46,6 @@ class LLTabContainer;
 class LLPanelPlaces : public LLPanel, LLInventoryObserver
 {
 public:
-	enum PLACE_INFO_TYPE
-	{
-		AGENT,
-		LANDMARK,
-		TELEPORT_HISTORY
-	};
-
 	LLPanelPlaces();
 	virtual ~LLPanelPlaces();
 
@@ -79,7 +72,7 @@ class LLPanelPlaces : public LLPanel, LLInventoryObserver
 	std::string				mFilterSubString;
 
 	// Place information type currently shown in Information panel
-	S32						mPlaceInfoType;
+	std::string				mPlaceInfoType;
 };
 
 #endif //LL_LLPANELPLACES_H
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
new file mode 100644
index 00000000000..deca08050b3
--- /dev/null
+++ b/indra/newview/llpanelprofile.cpp
@@ -0,0 +1,146 @@
+/** 
+* @file llpanelprofile.cpp
+* @brief Profile panel implementation
+*
+* $LicenseInfo:firstyear=2009&license=viewergpl$
+* 
+* Copyright (c) 2009, Linden Research, Inc.
+* 
+* Second Life Viewer Source Code
+* The source code in this file ("Source Code") is provided by Linden Lab
+* to you under the terms of the GNU General Public License, version 2.0
+* ("GPL"), unless you have obtained a separate licensing agreement
+* ("Other License"), formally executed by you and Linden Lab.  Terms of
+* the GPL can be found in doc/GPL-license.txt in this distribution, or
+* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+* 
+* There are special exceptions to the terms and conditions of the GPL as
+* it is applied to this Source Code. View the full text of the exception
+* in the file doc/FLOSS-exception.txt in this software distribution, or
+* online at
+* http://secondlifegrid.net/programs/open_source/licensing/flossexception
+* 
+* By copying, modifying or distributing this software, you acknowledge
+* that you have read and understood your obligations described above,
+* and agree to abide by those obligations.
+* 
+* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+* COMPLETENESS OR PERFORMANCE.
+* $/LicenseInfo$
+*/
+
+#include "llviewerprecompiledheaders.h"
+#include "llpanelprofile.h"
+#include "lltabcontainer.h"
+#include "llpanelpicks.h"
+#include "llagent.h"
+
+static const std::string PANEL_PICKS = "panel_picks";
+static const std::string PANEL_NOTES = "panel_notes";
+static const std::string PANEL_PROFILE = "panel_profile";
+
+static LLRegisterPanelClassWrapper<LLPanelAvatarProfile> t_panel_profile(PANEL_PROFILE);
+static LLRegisterPanelClassWrapper<LLPanelPicks> t_panel_picks(PANEL_PICKS);
+
+
+LLPanelProfile::LLPanelProfile()
+:	LLPanel(),
+	mTabContainer(NULL)
+{
+}
+
+LLPanelProfile::~LLPanelProfile()
+{
+}
+
+BOOL LLPanelProfile::postBuild()
+{
+	mTabContainer = getChild<LLTabContainer>("tabs");
+	mTabContainer->setCommitCallback(boost::bind(&LLPanelProfile::onTabSelected, this, _2));
+
+	LLPanelPicks* panel_picks = getChild<LLPanelPicks>(PANEL_PICKS);
+	panel_picks->setProfilePanel(this);
+	mTabs[PANEL_PICKS] = panel_picks;
+
+	mTabs[PANEL_PROFILE] = getChild<LLPanelAvatarProfile>(PANEL_PROFILE);
+
+	return TRUE;
+}
+
+void LLPanelProfile::onOpen(const LLSD& key)
+{
+	//*NOTE LLUUID::null in this context means Agent related stuff
+	LLUUID id(key.has("id") ? key["id"].asUUID() : gAgentID);
+	if (key.has("open_tab_name"))
+		mTabContainer->selectTabByName(key["open_tab_name"]);
+
+	if(id.notNull() && mAvatarId.notNull() && mAvatarId != id)
+	{
+		mTabs[PANEL_PROFILE]->clear();
+		mTabs[PANEL_PICKS]->clear();
+		mTabs[PANEL_NOTES]->clear();
+	}
+
+	mAvatarId = id;
+
+	mTabContainer->getCurrentPanel()->onOpen(mAvatarId);
+}
+
+//*TODO redo panel toggling
+void LLPanelProfile::togglePanel(LLPanel* panel)
+{
+	// TRUE - we need to open/expand "panel"
+	BOOL expand = this->getChildList()->back() != panel;  // mTabContainer->getVisible();
+
+	if (expand)
+	{
+		//*NOTE on view profile panel along with tabcontainer there is 
+		// a backbutton that will be shown when there will be a panel over it even 
+		//if that panel has visible backgroud
+		setAllChildrenVisible(FALSE);
+		
+		panel->setVisible(TRUE);
+		if (panel->getParent() != this)
+		{
+			addChildInBack(panel);
+		}
+		else
+		{
+			sendChildToBack(panel);
+		}
+
+		LLRect new_rect = getRect();
+		panel->reshape(new_rect.getWidth(), new_rect.getHeight());
+		new_rect.setLeftTopAndSize(0, new_rect.getHeight(), new_rect.getWidth(), new_rect.getHeight());
+		panel->setRect(new_rect);
+	}
+	else 
+	{
+		this->setAllChildrenVisible(TRUE);
+		if (panel->getParent() == this) removeChild(panel);
+		sendChildToBack(mTabContainer);
+		mTabContainer->getCurrentPanel()->onOpen(mAvatarId);
+	}
+}
+
+
+void LLPanelProfile::onTabSelected(const LLSD& param)
+{
+	std::string tab_name = param.asString();
+	if (NULL != mTabs[tab_name])
+	{
+		mTabs[tab_name]->onOpen(mAvatarId);
+	}
+}
+
+void LLPanelProfile::setAllChildrenVisible(BOOL visible)
+{
+	const child_list_t* child_list = getChildList();
+	for (child_list_const_iter_t child_it = child_list->begin(); child_it != child_list->end(); ++child_it)
+	{
+		LLView* viewp = *child_it;
+		viewp->setVisible(visible);
+	}
+}
+
diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h
new file mode 100644
index 00000000000..e8aea849df6
--- /dev/null
+++ b/indra/newview/llpanelprofile.h
@@ -0,0 +1,72 @@
+/** 
+* @file llpanelprofile.h
+* @brief Profile panel
+*
+* $LicenseInfo:firstyear=2009&license=viewergpl$
+* 
+* Copyright (c) 2009, Linden Research, Inc.
+* 
+* Second Life Viewer Source Code
+* The source code in this file ("Source Code") is provided by Linden Lab
+* to you under the terms of the GNU General Public License, version 2.0
+* ("GPL"), unless you have obtained a separate licensing agreement
+* ("Other License"), formally executed by you and Linden Lab.  Terms of
+* the GPL can be found in doc/GPL-license.txt in this distribution, or
+* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+* 
+* There are special exceptions to the terms and conditions of the GPL as
+* it is applied to this Source Code. View the full text of the exception
+* in the file doc/FLOSS-exception.txt in this software distribution, or
+* online at
+* http://secondlifegrid.net/programs/open_source/licensing/flossexception
+* 
+* By copying, modifying or distributing this software, you acknowledge
+* that you have read and understood your obligations described above,
+* and agree to abide by those obligations.
+* 
+* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+* COMPLETENESS OR PERFORMANCE.
+* $/LicenseInfo$
+*/
+
+#ifndef LL_LLPANELPROFILE_H
+#define LL_LLPANELPROFILE_H
+
+#include "llviewerprecompiledheaders.h"
+#include "llpanel.h"
+#include "llpanelavatar.h"
+
+class LLTabContainer;
+
+class LLPanelProfile : public LLPanel
+{
+	LOG_CLASS(LLPanelProfile);
+
+public:
+	virtual BOOL postBuild();
+
+	virtual void onOpen(const LLSD& key);
+
+	virtual void togglePanel(LLPanel*);
+
+protected:
+	LLPanelProfile();
+	~LLPanelProfile();
+
+	void onTabSelected(const LLSD& param);
+
+	void setAllChildrenVisible(BOOL visible);
+
+
+	LLTabContainer* mTabContainer;
+	
+	typedef std::map<std::string, LLPanelProfileTab*> profile_tabs_t;
+	profile_tabs_t mTabs;
+
+	LLUUID mAvatarId;
+};
+
+
+
+#endif //LL_LLPANELPROFILE_H
diff --git a/indra/newview/llpanelprofileview.cpp b/indra/newview/llpanelprofileview.cpp
index 495911c2e33..7d02c8ff0bb 100644
--- a/indra/newview/llpanelprofileview.cpp
+++ b/indra/newview/llpanelprofileview.cpp
@@ -32,11 +32,10 @@
 
 #include "llviewerprecompiledheaders.h"
 #include "llpanelprofileview.h"
-#include <llfloaterreg.h>
-#include <lltabcontainer.h>
-#include <lluictrlfactory.h>
+
 #include "llpanelavatar.h"
 #include "llpanelpicks.h"
+#include "llpanelprofile.h"
 
 static LLRegisterPanelClassWrapper<LLPanelProfileView> t_panel_target_profile("panel_profile_view");
 static LLRegisterPanelClassWrapper<LLPanelAvatarNotes> t_panel_notes("panel_notes");
@@ -46,7 +45,7 @@ static std::string PANEL_PICKS = "panel_picks";
 static std::string PANEL_NOTES = "panel_notes";
 
 LLPanelProfileView::LLPanelProfileView()
-: LLPanel()
+:	LLPanelProfile()
 {
 }
 
@@ -57,35 +56,23 @@ LLPanelProfileView::~LLPanelProfileView(void)
 /*virtual*/ 
 void LLPanelProfileView::onOpen(const LLSD& key)
 {
-	if (!getVisible())
-		setVisible(TRUE);
-
-	LLUUID id(key.asUUID());
-	if(id.notNull() && mProfileId.notNull() && mProfileId != id)
-	{
-		mTabs[PANEL_PROFILE]->clear();
-		mTabs[PANEL_PICKS]->clear();
-		mTabs[PANEL_NOTES]->clear();
-	}
-
-	mProfileId = id;
-	mTabs[PANEL_PROFILE]->onOpen(mProfileId);
-	mTabs[PANEL_PICKS]->onActivate(mProfileId);
-	mTabs[PANEL_NOTES]->onActivate(mProfileId);
+	LLPanelProfile::onOpen(key);
+	
+	//*NOTE profile view panel doesn't have own side tray tab and 
+	//is usually opened over People side tray tab. By Back button
+	// Profile View panel just becomes invisible, see onBackBtnClick()
+	setVisible(TRUE);
 
 	std::string full_name;
-	gCacheName->getFullName(key,full_name);
+	gCacheName->getFullName(key["id"],full_name);
 	childSetValue("user_name",full_name);
 }
 
 
 BOOL LLPanelProfileView::postBuild()
 {
-	mTabContainer = getChild<LLTabContainer>("profile_tabs");
-	mTabContainer->setCommitCallback(boost::bind(&LLPanelProfileView::onTabSelected, this, _2));
+	LLPanelProfile::postBuild();
 
-	mTabs[PANEL_PROFILE] = (getChild<LLPanelAvatarProfile>(PANEL_PROFILE));
-	mTabs[PANEL_PICKS] = (getChild<LLPanelPicks>(PANEL_PICKS));
 	mTabs[PANEL_NOTES] = (getChild<LLPanelAvatarNotes>(PANEL_NOTES));
 
 	childSetCommitCallback("back",boost::bind(&LLPanelProfileView::onBackBtnClick,this),NULL);
@@ -96,14 +83,6 @@ BOOL LLPanelProfileView::postBuild()
 
 //private
 
-void LLPanelProfileView::initTabs(const LLSD& key)
-{
-}
-
-void LLPanelProfileView::onTabSelected(const LLSD& param)
-{
-}
-
 void LLPanelProfileView::onBackBtnClick()
 {
 	setVisible(FALSE);
diff --git a/indra/newview/llpanelprofileview.h b/indra/newview/llpanelprofileview.h
index 2d89f15fe45..6c5fc779518 100644
--- a/indra/newview/llpanelprofileview.h
+++ b/indra/newview/llpanelprofileview.h
@@ -33,12 +33,13 @@
 #ifndef LL_LLPANELPROFILEVIEW_H
 #define LL_LLPANELPROFILEVIEW_H
 
-#include <llpanel.h>
+#include "llpanel.h"
+#include "llpanelprofile.h"
 
+class LLPanelProfile;
 class LLPanelProfileTab;
-class LLTabContainer;
 
-class LLPanelProfileView : public LLPanel
+class LLPanelProfileView : public LLPanelProfile
 {
 	LOG_CLASS(LLPanelProfileView);
 	friend class LLUICtrlFactory;
@@ -48,22 +49,10 @@ class LLPanelProfileView : public LLPanel
 
 	~LLPanelProfileView(void);
 
-	void onTabSelected(const LLSD& param);
-
 	void onOpen(const LLSD& key);
 	
 	BOOL postBuild();
-	
-	void initTabs(const LLSD& key);
-
 	void onBackBtnClick();
-
-private:
-	LLTabContainer*			mTabContainer;
-
-	typedef std::map<std::string, LLPanelProfileTab*> profile_tabs_t;
-	profile_tabs_t mTabs;
-	LLUUID mProfileId;
 };
 
 #endif //LL_LLPANELPROFILEVIEW_H
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index c271ca34b9c..77edae261bb 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -224,7 +224,7 @@ void LLTeleportHistoryPanel::onDoubleClickItem(void* user_data)
 		return;
 
 	LLSD key;
-	key["type"] = LLPanelPlaces::TELEPORT_HISTORY;
+	key["type"] = "teleport_history";
 	key["id"] = itemp->getColumn(LIST_INDEX)->getValue().asInteger();
 
 	LLSideTray::getInstance()->showPanel("panel_places", key);
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index b7c4c748912..53b88ba4304 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -45,7 +45,6 @@
 #include "llfloater.h" //for gFloaterView
 #include "lliconctrl.h"//for Home tab icon
 #include "llwindow.h"//for SetCursor
-#include "llbottomtray.h"//for reshape
 
 //#include "llscrollcontainer.h"
 
@@ -733,9 +732,6 @@ void	LLSideTray::setPanelRect	()
 		panel_width+=mMaxBarWidth;
 
 	S32 panel_height = parent_rect.getHeight()-fake_top_offset;
-	if(gBottomTray)
-		panel_height -= gBottomTray->getRect().getHeight();
-
 	LLRect panel_rect;
 	panel_rect.setLeftTopAndSize( parent_rect.mRight-panel_width, parent_rect.mTop-fake_top_offset, panel_width, panel_height);
 	setRect(panel_rect);
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 1b3fd5d49be..5d1cb824a25 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -34,9 +34,15 @@
 
 #include "llviewermedia.h"
 
+#include "audioengine.h"
+
+#include "llparcel.h"
+
 #include "llmimetypes.h"
 #include "llviewercontrol.h"
 #include "llviewerimage.h"
+#include "llviewerparcelmedia.h"
+#include "llviewerparcelmgr.h"
 #include "llviewerwindow.h"
 #include "llversionviewer.h"
 #include "llviewerimagelist.h"
@@ -461,7 +467,7 @@ bool LLViewerMediaImpl::handleSkinCurrentChanged(const LLSD& /*newvalue*/)
 // Wrapper class
 //////////////////////////////////////////////////////////////////////////////////////////
 
-
+S32 LLViewerMedia::mMusicState = LLViewerMedia::STOPPED;
 //////////////////////////////////////////////////////////////////////////////////////////
 // The viewer takes a long time to load the start screen.  Part of the problem
 // is media initialization -- in particular, QuickTime loads many DLLs and
@@ -686,6 +692,13 @@ bool LLViewerMedia::isActiveMediaTexture(const LLUUID& id)
 		&& isMediaPlaying());
 }
 
+//////////////////////////////////////////////////////////////////////////////////////////
+//static
+bool LLViewerMedia::isMusicPlaying()
+{
+	return mMusicState == PLAYING; 
+}
+
 //////////////////////////////////////////////////////////////////////////////////////////
 // static
 std::string LLViewerMedia::getMediaURL()
@@ -704,3 +717,58 @@ void LLViewerMedia::setMimeType(std::string mime_type)
 {
 	sViewerMediaImpl.mMimeType = mime_type;
 }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+//static
+void LLViewerMedia::toggleMusicPlay(void*)
+{
+	if (mMusicState != PLAYING)
+	{
+		mMusicState = PLAYING; // desired state
+		if (gAudiop)
+		{
+			LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
+			if ( parcel )
+			{
+				gAudiop->startInternetStream(parcel->getMusicURL());
+			}
+		}
+	}
+	else
+	{
+		mMusicState = STOPPED; // desired state
+		if (gAudiop)
+		{
+			gAudiop->stopInternetStream();
+		}
+	}
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////
+//static
+void LLViewerMedia::toggleMediaPlay(void*)
+{
+	if (LLViewerMedia::isMediaPaused())
+	{
+		LLViewerParcelMedia::start();
+	}
+	else if(LLViewerMedia::isMediaPlaying())
+	{
+		LLViewerParcelMedia::pause();
+	}
+	else
+	{
+		LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
+		if (parcel)
+		{
+			LLViewerParcelMedia::play(parcel);
+		}
+	}
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////
+//static
+void LLViewerMedia::mediaStop(void*)
+{
+	LLViewerParcelMedia::stop();
+}
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index 600d7409e22..b3fb2c9031f 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -67,6 +67,7 @@ class LLViewerMedia
 		static bool isMediaPaused();
 		static bool hasMedia();
 		static bool isActiveMediaTexture(const LLUUID& id);
+		static bool isMusicPlaying();
 
 		static std::string getMediaURL();
 		static std::string getMimeType();
@@ -74,9 +75,16 @@ class LLViewerMedia
 
 		static void updateImagesMediaStreams();
 
+		static void toggleMusicPlay(void*);
+		static void toggleMediaPlay(void*);
+		static void mediaStop(void*);
+
 	private:
 		// Fill in initialization data for LLMediaManager::initClass()
 		static void buildMediaManagerData( LLMediaManagerData* init_data );
+		
+		enum { STOPPED=0, PLAYING=1, PAUSED=2 };
+		static S32 mMusicState;
 };
 
 #endif	// LLVIEWERMEDIA_H
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 70a6e24c8f3..da3c94225b8 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -159,6 +159,7 @@
 #include "llresmgr.h"
 #include "llrootview.h"
 #include "llselectmgr.h"
+#include "llsidetray.h"
 #include "llsky.h"
 #include "llstatusbar.h"
 #include "llstatview.h"
@@ -3451,6 +3452,26 @@ class LLSelfEnableStandUp : public view_listener_t
 	}
 };
 
+class LLSelfFriends : public view_listener_t
+{
+	bool handleEvent(const LLSD& userdata)
+	{
+		// Open "Friends" tab of the "People" panel in side tray.
+		LLSideTray::getInstance()->showPanel("panel_people", "friends_panel");
+		return true;
+	}
+};
+
+class LLSelfGroups : public view_listener_t
+{
+	bool handleEvent(const LLSD& userdata)
+	{
+		// Open "Groups" tab of the "People" panel in side tray.
+		LLSideTray::getInstance()->showPanel("panel_people", "groups_panel");
+		return true;
+	}
+};
+
 BOOL check_admin_override(void*)
 {
 	return gAgent.getAdminOverride();
@@ -3584,14 +3605,9 @@ bool LLHaveCallingcard::operator()(LLInventoryCategory* cat,
 }
 */
 
-BOOL is_agent_friend(const LLUUID& agent_id)
-{
-	return (LLAvatarTracker::instance().getBuddyInfo(agent_id) != NULL);
-}
-
 BOOL is_agent_mappable(const LLUUID& agent_id)
 {
-	return (is_agent_friend(agent_id) &&
+	return (LLFriendActions::isFriend(agent_id) &&
 		LLAvatarTracker::instance().getBuddyInfo(agent_id)->isOnline() &&
 		LLAvatarTracker::instance().getBuddyInfo(agent_id)->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION)
 		);
@@ -3604,7 +3620,7 @@ class LLAvatarEnableAddFriend : public view_listener_t
 	bool handleEvent(const LLSD& userdata)
 	{
 		LLVOAvatar* avatar = find_avatar_from_object(LLSelectMgr::getInstance()->getSelection()->getPrimaryObject());
-		bool new_value = avatar && !is_agent_friend(avatar->getID());
+		bool new_value = avatar && !LLFriendActions::isFriend(avatar->getID());
 		return new_value;
 	}
 };
@@ -5360,7 +5376,7 @@ class LLAvatarAddFriend : public view_listener_t
 	bool handleEvent(const LLSD& userdata)
 	{
 		LLVOAvatar* avatar = find_avatar_from_object( LLSelectMgr::getInstance()->getSelection()->getPrimaryObject() );
-		if(avatar && !is_agent_friend(avatar->getID()))
+		if(avatar && !LLFriendActions::isFriend(avatar->getID()))
 		{
 			request_friendship(avatar->getID());
 		}
@@ -7936,6 +7952,10 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLSelfEnableStandUp(), "Self.EnableStandUp");
 	view_listener_t::addMenu(new LLSelfEnableRemoveAllAttachments(), "Self.EnableRemoveAllAttachments");
 
+	// we don't use boost::bind directly to delay side tray construction
+	view_listener_t::addMenu(new LLSelfFriends(), "Self.Friends");
+	view_listener_t::addMenu(new LLSelfGroups(), "Self.Groups");
+
 	 // Avatar pie menu
 	view_listener_t::addMenu(new LLObjectMute(), "Avatar.Mute");
 	view_listener_t::addMenu(new LLAvatarAddFriend(), "Avatar.AddFriend");
diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h
index 13a16399170..e8d350b0b6a 100644
--- a/indra/newview/llviewermenu.h
+++ b/indra/newview/llviewermenu.h
@@ -75,8 +75,6 @@ BOOL enable_deselect(void*);
 BOOL enable_undo(void*);
 BOOL enable_redo(void*);
 
-// returns TRUE if we have a friend relationship with agent_id
-BOOL is_agent_friend(const LLUUID& agent_id);
 BOOL is_agent_mappable(const LLUUID& agent_id);
 
 void confirm_replace_attachment(S32 option, void* user_data);
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index e4aaf2bf29f..ae8717971fa 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -2395,6 +2395,12 @@ void LLViewerWindow::updateUI()
 
 	updateWorldViewRect();
 
+	if(gBottomTray && LLSideTray::instanceCreated())
+	{
+		S32 delta = llround((F32)LLSideTray::getInstance()->getTrayWidth() * mDisplayScale.mV[VX]);
+		gBottomTray->updateRightPosition(mWindowRect.mRight - delta);
+	}
+
 	LLView::sMouseHandlerMessage.clear();
 
 	S32 x = mCurrentMousePoint.mX;
diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc
index a902a6dff02..87a8bd5787a 100644
--- a/indra/newview/res/viewerRes.rc
+++ b/indra/newview/res/viewerRes.rc
@@ -138,8 +138,8 @@ TOOLMEDIAOPEN           CURSOR                  "toolmediaopen.cur"
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,24,0,0
- PRODUCTVERSION 1,24,0,0
+ FILEVERSION 2,0,0,0
+ PRODUCTVERSION 2,0,0,0
  FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -156,12 +156,12 @@ BEGIN
         BEGIN
             VALUE "CompanyName", "Linden Lab"
             VALUE "FileDescription", "Second Life"
-            VALUE "FileVersion", "1.24.0.0"
+            VALUE "FileVersion", "2.0.0.0"
             VALUE "InternalName", "Second Life"
             VALUE "LegalCopyright", "Copyright © 2001-2008, Linden Research, Inc."
             VALUE "OriginalFilename", "SecondLife.exe"
             VALUE "ProductName", "Second Life"
-            VALUE "ProductVersion", "1.24.0.0"
+            VALUE "ProductVersion", "2.0.0.0"
         END
     END
     BLOCK "VarFileInfo"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 04d4362130c..84d54f96733 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -17,15 +17,6 @@
             <menu_item_call.on_click
              function="Floater.Show"
              parameter="preferences" />
-        </menu_item_call>
-		<menu_item_call
-         label="Media Remote Ctrl"
-         layout="topleft"
-         name="Preferences"
-         shortcut="control|A">
-            <menu_item_call.on_click
-             function="Floater.Toggle"
-             parameter="media_remote_ctrl" />
         </menu_item_call>
         <menu_item_separator
          layout="topleft" />
@@ -223,6 +214,17 @@
              function="Floater.Toggle"
              parameter="communicate" />
         </menu_item_check>
+        <menu_item_separator
+         layout="topleft" />
+		<menu_item_call
+         label="Media Remote Ctrl"
+         layout="topleft"
+         name="Preferences"
+         shortcut="control|alt|M">
+            <menu_item_call.on_click
+             function="Floater.Toggle"
+             parameter="media_remote_ctrl" />
+        </menu_item_call>
         <menu_item_separator
          layout="topleft" />
         <menu_item_check
@@ -362,7 +364,7 @@
              function="Floater.Visible"
 			 parameter="mini_map" />
             <menu_item_check.on_click
-             function="Floater.Show"
+             function="Floater.Toggle"
              parameter="mini_map" />
         </menu_item_check>
         <menu_item_separator
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 680226f44f1..f8bb15dc24c 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -3062,6 +3062,17 @@ Are you sure you want to teleport?
      yestext="Teleport"/>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="TeleportToPick"
+   type="alertmodal">
+Teleport to [PICK]?
+    <usetemplate
+     name="okcancelbuttons"
+     notext="Cancel"
+     yestext="OK"/>
+  </notification>
+  
   <notification
    icon="alert.tga"
    label="Message everyone in your Estate"
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index 539b656f343..fe23d587938 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -1,56 +1,274 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 
-<panel follows="left|bottom|right" name="bottom_tray" bg_opaque_color="0.25 0.25 0.25 1.0"
-		bg_alpha_color="0.25 0.25 0.25 1.0" background_visible="true" auto_resize="true"
-		left="0" bottom="0" width="1000" height="28" border_visible="false">
-	<panel.string name="gesture_label">
-        	Gestures
-	</panel.string>		
-	<layout_stack name="toolbar_stack" follows="left|right|bottom|top" 
-		bottom="0" left="0" width="1000" height="25" orientation="horizontal" border_size="0" auto_resize="false">
-	
-		<icon image_name="spacer24.tga" left="0" width="5" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/>
-	  <panel follows="left|right" auto_resize="true" width="250" height="28" min_height="28">
-		<line_editor name="chat_box"  follows="left|right" 
-			width="250" height="20" left="0" bottom="6" 
-			bevel_style="in" border_style="line" border_thickness="1"/>
-	  </panel>
-		<icon image_name="spacer24.tga" left="0" width="5" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/>
-		<view_border bevel_style="in" bottom="0" height="28" width="1" follows="left|right" left="270" mouse_opaque="false" auto_resize="false"/>
-		<icon image_name="spacer24.tga" left="0" width="5" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/>
-	  <panel follows="left|right" auto_resize="false" width="100" height="28" min_height="28">
-		<chiclet_talk name="talk" left="0" bottom="6" width="100" height="20" follows="left|right" auto_resize="false"/>	
-	  </panel>
-		<icon name="DUMMY" image_name="spacer24.tga" left="0" width="5" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/>
-	  <panel follows="left|right" auto_resize="true" width="90" height="28" min_height="28">
-		<combo_box follows="left" height="20" label="Gestures" left="0" bottom="6" name="Gesture" top_delta="0" width="90" />
-	  </panel>
-	  	<icon name="DUMMY" image_name="spacer24.tga" left="0" width="5" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/>
-	  <panel follows="left|right" auto_resize="true" width="250" height="28" min_height="28">
-		<chiclet_panel name="chiclet_list"  follows="left|right" 
-			width="250" height="25" left="0" bottom="2"/>
-	  </panel>
-		<icon image_name="spacer24.tga" left="0" width="5" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/>
-	  <panel follows="left|right" auto_resize="false" width="40" height="28" min_height="28">
-		<chiclet_notification name="im_well" follows="left|right" auto_resize="false"
-			left="0" bottom="4" width="40" height="25" 
-			image_unselected="im_notifications.tga" image_selected="im_notifications.tga">
-			<chiclet_notification.commit_callback
-				function="Notification.Show"
-				parameter="ClickUnimplemented" />
-		</chiclet_notification>
-	  </panel>
-		<icon image_name="spacer24.tga" left="0" width="10" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/>
-		<view_border name="well_separator" bevel_style="in" bottom="0" height="30" width="1" follows="left|right" left="270" mouse_opaque="false" auto_resize="false"/>
-		<icon image_name="spacer24.tga" left="0" width="10" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/>
-	  <panel follows="left|right" auto_resize="false" width="48" height="28" min_height="28">
-		<chiclet_notification name="sys_well" follows="left|right" auto_resize="false"
-			left="0" bottom="5" width="48" height="25" 
-			image_unselected="bottom_tray_sys_notifications.tga" image_selected="bottom_tray_sys_notifications.tga">
-			<chiclet_notification.commit_callback
-				function="Notification.Show"
-				parameter="ClickUnimplemented" />
-		</chiclet_notification>
-	  </panel>
-		<icon image_name="spacer24.tga" left="0" width="5" height="10" bottom="0" follows="left|right" auto_resize="false" color="0 0 0 0"/>
-	</layout_stack>	
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ background_visible="true"
+ bg_alpha_color="0.25 0.25 0.25 1"
+ bg_opaque_color="0.25 0.25 0.25 1"
+ follows="left|bottom|right"
+ height="28"
+ layout="topleft"
+ left="0"
+ name="bottom_tray"
+ top="28"
+ border_visible="true"
+ width="1000">
+    <panel.string
+     name="gesture_label">
+        Gestures
+    </panel.string>
+    <layout_stack
+     border_size="0"
+     follows="left|right|bottom|top"
+     height="28"
+     layout="topleft"
+     left="0"
+     name="toolbar_stack"
+     orientation="horizontal"
+     top="0"
+     width="1000">
+        <icon
+         auto_resize="false"
+         color="0 0 0 0"
+         follows="left|right"
+         height="10"
+         image_name="spacer24.tga"
+         layout="topleft"
+         left="0"
+         top="0"
+         width="5" 
+         min_width="5" />
+        <layout_panel
+         follows="left|right"
+         height="28"
+         layout="topleft"
+         left="5"
+         min_height="28"
+         width="250"
+         top="0"
+         min_width="100">
+            <line_editor
+             border_style="line"
+             border_thickness="1"
+             follows="left|right"
+             height="20"
+             layout="topleft"
+             left="0"
+             name="chat_box"
+             top="3"
+             width="250" />
+        </layout_panel>
+        <icon
+         auto_resize="false"
+         color="0 0 0 0"
+         follows="left|right"
+         height="10"
+         image_name="spacer24.tga"
+         layout="topleft"
+         left="0"
+         top="0"
+         width="5"
+         min_width="5" />
+        <view_border
+         auto_resize="false"
+         bevel_style="in"
+         follows="left|right"
+         height="28"
+         layout="topleft"
+         left="270"
+         top="0"
+         width="1" />
+        <icon
+         auto_resize="false"
+         color="0 0 0 0"
+         follows="left|right"
+         height="10"
+         image_name="spacer24.tga"
+         layout="topleft"
+         left="0"
+         top="0"
+         width="5" 
+         min_width="5" />
+        <layout_panel
+         auto_resize="false"
+         follows="right"
+         height="28"
+         layout="topleft"
+         min_height="28"
+         width="100"
+         top="0"
+         min_width="100">
+            <chiclet_talk
+             follows="right"
+             height="20"
+             layout="topleft"
+             left="0"
+             name="talk"
+             top="3"
+             width="100" />
+        </layout_panel>
+        <icon
+         auto_resize="false"
+         color="0 0 0 0"
+         follows="left|right"
+         height="10"
+         image_name="spacer24.tga"
+         layout="topleft"
+         left="0"
+         name="DUMMY"
+         top="0"
+         width="5" 
+         min_width="5"/>
+        <layout_panel
+         auto_resize="false"
+         follows="right"
+         height="28"
+         layout="topleft"
+         min_height="28"
+         width="90"
+         top="0"
+         min_width="90">
+            <combo_box
+             bottom="22"
+             follows="right"
+             height="20"
+             label="Gestures"
+             layout="topleft"
+             name="Gesture"
+             top="3"
+             width="90" />
+        </layout_panel>
+        <icon
+         auto_resize="false"
+         color="0 0 0 0"
+         follows="left|right"
+         height="10"
+         image_name="spacer24.tga"
+         layout="topleft"
+         left="0"
+         name="DUMMY"
+         top="0"
+         width="5" 
+         min_width="5" />
+        <layout_panel
+         follows="left|right"
+         height="28"
+         layout="topleft"
+         min_height="28"
+         top="0"
+         name="chiclet_list_panel"
+         width="250"
+         min_width="100">
+            <chiclet_panel
+             follows="left|right"
+             height="25"
+             layout="topleft"
+             left="0"
+             name="chiclet_list"
+             top="1"
+             width="250" />
+        </layout_panel>
+        <icon
+         auto_resize="false"
+         color="0 0 0 0"
+         follows="left|right"
+         height="10"
+         image_name="spacer24.tga"
+         layout="topleft"
+         left="0"
+         top="0"
+         width="5" 
+         min_width="5" />
+        <layout_panel
+         auto_resize="false"
+         follows="right"
+         height="28"
+         layout="topleft"
+         min_height="28"
+         name="im_well_panel"
+         width="40"
+         top="0"
+         min_width="40" >
+            <chiclet_notification
+             follows="right"
+             height="25"
+             image_selected="im_notifications.tga"
+             image_unselected="im_notifications.tga"
+             layout="topleft"
+             left="0"
+             name="im_well"
+             top="1"
+             width="40" >
+			  <chiclet_notification.commit_callback
+				 function="Notification.Show"
+				 parameter="ClickUnimplemented" />
+			</chiclet_notification>
+        </layout_panel>
+        <icon
+         auto_resize="false"
+         color="0 0 0 0"
+         follows="left|right"
+         height="10"
+         image_name="spacer24.tga"
+         layout="topleft"
+         left="0"
+         top="0"
+         width="10" 
+         min_width="10"/>
+        <view_border
+         auto_resize="false"
+         bevel_style="in"
+         follows="left|right"
+         height="30"
+         layout="topleft"
+         left="270"
+         name="well_separator"
+         top="0"
+         width="1" />
+        <icon
+         auto_resize="false"
+         color="0 0 0 0"
+         follows="left|right"
+         height="10"
+         image_name="spacer24.tga"
+         layout="topleft"
+         left="0"
+         top="0"
+         width="10" 
+         min_width="10" />
+        <layout_panel
+         auto_resize="false"
+         follows="right"
+         height="28"
+         layout="topleft"
+         min_height="28"
+         top="0"
+         name="sys_well_panel"
+         width="48"
+         min_width="48">
+            <chiclet_notification
+             follows="right"
+             height="25"
+             image_selected="bottom_tray_sys_notifications.tga"
+             image_unselected="bottom_tray_sys_notifications.tga"
+             layout="topleft"
+             left="0"
+             name="sys_well"
+             top="1"
+             width="48" >
+			  <chiclet_notification.commit_callback
+				 function="Notification.Show"
+				 parameter="ClickUnimplemented" />
+			</chiclet_notification>
+        </layout_panel>
+        <icon
+         auto_resize="false"
+         color="0 0 0 0"
+         follows="left|right"
+         height="10"
+         image_name="spacer24.tga"
+         layout="topleft"
+         left="0"
+         top="0"
+         width="5" 
+         min_width="5" />
+    </layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
index acbbde37c99..79833ea20bf 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
@@ -67,7 +67,8 @@
          height="16"
          layout="topleft"
          left="10"
-         name="Name:">
+         name="Name:"
+         text_color="white">
             Name:
         </text>
         <line_editor
@@ -78,6 +79,7 @@
          left="10"
          name="pick_name"
          right="-10"
+         text_color="black"
          width="290" />
         <text
          type="string"
@@ -87,6 +89,7 @@
          layout="topleft"
          left="10"
          name="description_label"
+         text_color="white"
          v_pad="15"
          valign="center">
             Description:
@@ -94,10 +97,12 @@
         <text_editor
          follows="left|top|right"
          height="100"
+         hide_scrollbar="true"
          layout="topleft"
          left="10"
          max_length="1023"
          name="pick_desc"
+         text_color="black"
          right="-10"
          word_wrap="true" />
         <text
@@ -108,6 +113,7 @@
          layout="topleft"
          left="10"
          name="description_label"
+         text_color="white"
          v_pad="15"
          valign="bottom">
             Location:
@@ -121,6 +127,7 @@
          left="10"
          name="pick_location"
          right="-10"
+         text_color="black"
          v_pad="10"
          valign="center"
          word_wrap="true">
diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
index 5f51e8d22c0..38049c896ea 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
@@ -220,11 +220,13 @@
       </line_editor>
       <check_box
        follows="left|top"
+       font="SansSerifBold"
        label="Show me in Search results" 
        layout="topleft"
        left="9"
        name="show_in_search_checkbox"
        height="16"
+       text_enabled_color="white"
        top_pad="10" 
        width="250"/>
     </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
deleted file mode 100644
index 7cdda126b9d..00000000000
--- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml
+++ /dev/null
@@ -1,274 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- bg_alpha_color="0.3 0.3 0.3 1"
- height="560"
- label="Landmark"
- layout="topleft"
- left="0"
- name="landmark_info"
- top="800"
- width="355">
-    <panel.string
-     name="not_available">
-        (N\A)
-    </panel.string>
-    <panel.string
-     name="unknown">
-        (unknown)
-    </panel.string>
-    <panel.string
-     name="public">
-        (public)
-    </panel.string>
-    <panel.string
-     name="server_update_text">
-        Place information not available without server update.
-    </panel.string>
-    <panel.string
-     name="server_error_text">
-        Information about this location is unavailable at this time, please try again later.
-    </panel.string>
-    <panel.string
-     name="server_forbidden_text">
-        Information about this location is unavailable due to access restrictions.  Please check your permissions with the parcel owner.
-    </panel.string>
-    <panel.string
-     name="acquired_date">
-        [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
-    </panel.string>
-    <scroll_container
-     follows="all"
-     height="560"
-     layout="topleft"
-     left="0"
-     top="0"
-     width="355">
-        <panel
-         height="560"
-         layout="topleft"
-         left="0"
-         name="scrolling_panel"
-         top="0"
-         width="310">
-            <button
-             follows="top|left"
-             height="20"
-             image_overlay="navbar_back.tga"
-             image_selected="navbar_bg_button.tga"
-             image_unselected="navbar_bg_button.tga"
-             layout="topleft"
-             left="10"
-             name="back_btn"
-             picture_style="true"
-             top="20"
-             width="20" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerifHugeBold"
-             height="20"
-             layout="topleft"
-             left="50"
-             name="panel_title"
-             text_color="white"
-             top="20"
-             width="150">
-                Landmark
-            </text>
-            <texture_picker
-             follows="top|left"
-             height="128"
-             layout="topleft"
-             left="10"
-             name="logo"
-             top="60"
-             width="128" />
-            <text
-             follows="left|top|right"
-             font="SansSerifHugeBold"
-             height="20"
-             layout="topleft"
-             left="10"
-             name="region_name"
-             text_color="white"
-             top="180"
-             width="310" />
-            <text
-             follows="left|top|right"
-             font="SansSerifBold"
-             height="20"
-             layout="topleft"
-             left="10"
-             name="parcel_name"
-             text_color="white"
-             top="205"
-             width="310" />
-            <panel
-             follows="left|top|right|bottom"
-             height="335"
-             layout="topleft"
-             left="10"
-             name="info_panel"
-             top="225"
-             width="310">
-                <text_editor
-                 bg_focus_color="0.3 0.3 0.3 1"
-                 bg_readonly_color="0.3 0.3 0.3 1"
-                 follows="left|top|right"
-                 font="SansSerif"
-                 height="90"
-                 hide_border="true"
-                 hide_scrollbar="true"
-                 layout="topleft"
-                 left="0"
-                 max_length="1000"
-                 name="description"
-                 read_only="true"
-                 text_color="white"
-                 top="0"
-                 width="310" />
-                <icon
-                 follows="top|left"
-                 height="30"
-                 image_name=""
-                 layout="topleft"
-                 left="0"
-                 mouse_opaque="true"
-                 name="maturity"
-                 top="95"
-                 width="30" />
-                <text
-                 type="string"
-                 length="1"
-                 follows="left|top"
-                 font="SansSerif"
-                 height="15"
-                 layout="topleft"
-                 left="0"
-                 name="owner_lable"
-                 text_color="white"
-                 top="130"
-                 width="50"
-                 word_wrap="true">
-                    Owner:
-                </text>
-                <text
-                 follows="left|top|right"
-                 font="SansSerif"
-                 height="15"
-                 layout="topleft"
-                 left="70"
-                 name="owner"
-                 text_color="white"
-                 top="130"
-                 width="240"
-                 word_wrap="true" />
-                <text
-                 type="string"
-                 length="1"
-                 follows="left|top"
-                 font="SansSerif"
-                 height="15"
-                 layout="topleft"
-                 left="0"
-                 name="creator_lable"
-                 text_color="white"
-                 top="150"
-                 width="50"
-                 word_wrap="true">
-                    Creator:
-                </text>
-                <text
-                 follows="left|top|right"
-                 font="SansSerif"
-                 height="15"
-                 layout="topleft"
-                 left="70"
-                 name="creator"
-                 text_color="white"
-                 top="150"
-                 width="240"
-                 word_wrap="true" />
-                <text
-                 type="string"
-                 length="1"
-                 follows="left|top"
-                 font="SansSerif"
-                 height="15"
-                 layout="topleft"
-                 left="0"
-                 name="created_lable"
-                 text_color="white"
-                 top="170"
-                 width="50"
-                 word_wrap="true">
-                    Created:
-                </text>
-                <text
-                 follows="left|top|right"
-                 font="SansSerif"
-                 height="15"
-                 layout="topleft"
-                 left="70"
-                 name="created"
-                 text_color="white"
-                 top="170"
-                 width="240"
-                 word_wrap="true" />
-                <text
-                 type="string"
-                 length="1"
-                 follows="left|top"
-                 font="SansSerif"
-                 height="15"
-                 layout="topleft"
-                 left="0"
-                 name="title_lable"
-                 text_color="white"
-                 top="190"
-                 width="50"
-                 word_wrap="true">
-                    Title:
-                </text>
-                <line_editor
-                 follows="left|top|right"
-                 font="SansSerif"
-                 height="22"
-                 layout="topleft"
-                 left="0"
-                 max_length="255"
-                 name="title_editor"
-                 top="210"
-                 width="310" />
-                <text
-                 type="string"
-                 length="1"
-                 follows="left|top"
-                 font="SansSerif"
-                 height="15"
-                 layout="topleft"
-                 left="0"
-                 name="notes_lable"
-                 text_color="white"
-                 top="240"
-                 width="90"
-                 word_wrap="true">
-                    My Notes:
-                </text>
-                <text_editor
-                 follows="left|top|bottom|right"
-                 font="SansSerif"
-                 height="70"
-                 hide_scrollbar="true"
-                 layout="topleft"
-                 left="0"
-                 max_length="1000"
-                 name="notes_editor"
-                 top="260"
-                 width="310" />
-            </panel>
-        </panel>
-    </scroll_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index e2597b47008..63082d3150e 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -428,6 +428,9 @@
   <string name="no_friends">
     No friends
   </string>
+  <string name="no_groups">
+    No groups
+  </string>
   <panel 
 	layout="topleft"
 	name="panel_profile_view" 
diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml
index 9fc1627cb91..576654b8605 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -57,34 +57,36 @@
          type="string"
          length="1"
          follows="left|top"
-         height="16"
+         height="15"
          layout="topleft"
          left="10"
-         name="Name:">
+         name="Name:"
+         text_color="white">
             Name:
         </text>
         <text
          type="string"
          length="1"
          follows="left|top|right"
-         height="20"
+         height="15"
          layout="topleft"
          left="10"
          name="pick_name"
          right="-10"
-         text_color="white"
+         text_color="black"
          word_wrap="true">
             [name]
         </text>
         <text
          type="string"
-         length="1"
          follows="left|top"
-         height="20"
+         height="15"
          layout="topleft"
          left="10"
          name="description_label"
-         v_pad="15"
+         text_color="white"
+         top_pad="20"
+         v_pad="0"
          valign="center">
             Description:
         </text>
@@ -92,13 +94,12 @@
          type="string"
          length="1"
          follows="left|top|right"
-         height="40"
+         height="60"
          layout="topleft"
          left="10"
          name="pick_desc"
          right="-10"
-         text_color="white"
-         v_pad="15"
+         text_color="black"
          valign="center"
          word_wrap="true">
             [description]
@@ -111,20 +112,19 @@
          layout="topleft"
          left="10"
          name="description_label"
-         v_pad="15"
+         text_color="white"
+         top_pad="20"
          valign="bottom">
             Location:
         </text>
         <text
          type="string"
-         length="1"
          follows="left|top"
          height="30"
          layout="topleft"
          left="10"
          name="pick_location"
-         text_color="white"
-         v_pad="15"
+         text_color="black"
          valign="center">
             [loading...]
         </text>
diff --git a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
index a4599bdf1ef..6a819d0ef4d 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
@@ -42,6 +42,7 @@
      name="picture_descr"
      text_color="white"
      top="25"
+     use_ellipses="true"
      width="170"
      word_wrap="true" />
     <button
@@ -53,7 +54,7 @@
      image_selected="navbar_bg_button.tga"
      image_unselected="navbar_bg_button.tga"
      layout="topleft"
-     name="inspector"
+     name="info_chevron"
      picture_style="true"
      right="-5"
      tab_stop="false"
diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml
index ed851452fe4..c8a814887aa 100644
--- a/indra/newview/skins/default/xui/en/panel_picks.xml
+++ b/indra/newview/skins/default/xui/en/panel_picks.xml
@@ -93,8 +93,6 @@
          follows="bottom|left"
          font="SansSerifBigBold"
          height="16"
-         image_disabled="plus.tga"
-         image_disabled_selected="plus.tga"
          image_hover_selected="plus.tga"
          image_selected="plus.tga"
          image_unselected="plus.tga"
@@ -109,8 +107,6 @@
          follows="bottom|right"
          font="SansSerifBigBold"
          height="16"
-         image_disabled="minus.tga"
-         image_disabled_selected="minus.tga"
          image_hover_selected="minus.tga"
          image_selected="minus.tga"
          image_unselected="minus.tga"
@@ -169,7 +165,7 @@
          height="25"
          label="Verb"
          layout="topleft"
-         left="280"
+         right="-15"
          name="verb_btn"
          top="0"
          width="50" />
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index 272a7f43285..2aa566543f3 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -31,13 +31,13 @@
      top_pad="19"
      width="335" />
     <panel
-     class="panel_landmark_info"
-     filename="panel_landmark_info.xml"
+     class="panel_place_info"
+     filename="panel_place_info.xml"
      follows="left|top|right|bottom"
      height="675"
      layout="topleft"
      left="0"
-     name="panel_landmark_info"
+     name="panel_place_info"
      top="-310"
      visible="false"
      width="355" />
@@ -73,7 +73,7 @@
      top_delta="0"
      width="60" />
     <button
-     enabled="false"
+     enabled="true"
      follows="bottom|right"
      font="SansSerifSmallBold"
      height="25"
diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml
index 428d071db2f..9e954119293 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml
@@ -38,7 +38,7 @@
      height="625"
      layout="topleft"
      left="0"
-     name="profile_tabs"
+     name="tabs"
      tab_position="top"
      top="35"
      width="355">
diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml
index 5ede1c2e9e1..4f6f53e5b42 100644
--- a/indra/newview/skins/default/xui/en/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/en/panel_side_tray.xml
@@ -7,14 +7,14 @@
   collapsed="true"
 >
   <sidetray_tab 	
-    name="sidebarpanel2" 
+    name="sidebar_people"
+    tab_title="People"
+    description="Find your friends, contacts and people nearby."
+    image="icn_voice-groupfocus.tga"
     mouse_opaque="false" 
     background_opaque="false" 
     background_visible="true" 
     bg_opaque_color="0.5 0.5 0.5 1.0"
-    image="icn_voice-groupfocus.tga"
-    tab_title="People"
-    description="Find your friends, contacts and people nearby."
   >
     <collapsible_ctrl 
       name="people_accordion" 
@@ -36,16 +36,16 @@
       />
     </collapsible_ctrl>
   </sidetray_tab>
-  
+  <!-- *TODO Vadim: isn't the sidetray_tab "label" attribute redundant since we have "tab_title" ? -->
   <sidetray_tab 
-    name="sidebarpanel1" 
+    name="sidebar_places"
+    tab_title="Places"
+    label="Places"
+    description="Find places to go and places you've been."
+    image="inv_item_landmark.tga" 
     mouse_opaque="false" 
     background_visible="true" 
-    label="Places" 
     bg_opaque_color="0.5 0.5 0.5 1.0"
-    image="inv_item_landmark.tga" 
-    tab_title="Places" 
-    description="Find places to go and places you've been."
   >
     <collapsible_ctrl 
       name="places_accordian" 
@@ -67,12 +67,12 @@
   
   <sidetray_tab 
     name="sidebar_me"
+    tab_title="Me"
+    description="Change your profile, your look and quick links to your outfits."
+    image="icn_voice-pvtfocus.tga"
     mouse_opaque="false" 
     background_visible="true" 
     bg_opaque_color="0.5 0.5 0.5 1.0"
-    image="icn_voice-pvtfocus.tga"
-    tab_title="Me"
-    description="Change your profile, your look and quick links to your outfits."
   >
     <collapsible_ctrl 
       name="me_accordion" 
-- 
GitLab