diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h
index 3d7bbdff8936102a22a2cefcc7a4a009996e5ef4..d3daa941cfe929d09ff6bbd228d17b17fb8089e4 100644
--- a/indra/llui/lllineeditor.h
+++ b/indra/llui/lllineeditor.h
@@ -172,6 +172,8 @@ class LLLineEditor
 	virtual BOOL	setLabelArg( const std::string& key, const LLStringExplicit& text );
 
 	void			setLabel(const LLStringExplicit &new_label) { mLabel = new_label; }
+	const std::string& 	getLabel()	{ return mLabel.getString(); }
+
 	void			setText(const LLStringExplicit &new_text);
 
 	const std::string& getText() const		{ return mText.getString(); }
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 643f89068f286ae8f7231e530f1eaec93d2d84a7..075f8148e3dd0304bf0193230a416fb929415dd5 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -323,7 +323,6 @@ set(viewer_SOURCE_FILES
     llpanellookinfo.cpp
     llpanellooks.cpp
     llpanelmaininventory.cpp
-    llpanelmedia.cpp
     llpanelmediasettingsgeneral.cpp
     llpanelmediasettingspermissions.cpp
     llpanelmediasettingssecurity.cpp
@@ -809,7 +808,6 @@ set(viewer_HEADER_FILES
     llpanellookinfo.h
     llpanellooks.h
     llpanelmaininventory.h
-    llpanelmedia.h
     llpanelmediasettingsgeneral.h
     llpanelmediasettingspermissions.h
     llpanelmediasettingssecurity.h
diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index 8609ba8b1c6d4b9c0269350e0161852d19ad9f52..bb03f47f46f4207e8c8668e1822787b45b36ba1c 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -65,6 +65,20 @@ void LLAvatarList::toggleIcons()
 	}
 }
 
+void LLAvatarList::setSpeakingIndicatorsVisible(bool visible)
+{
+	// Save the new value for new items to use.
+	mShowSpeakingIndicator = visible;
+	
+	// Show/hide icons for all existing items.
+	std::vector<LLPanel*> items;
+	getItems(items);
+	for( std::vector<LLPanel*>::const_iterator it = items.begin(); it != items.end(); it++)
+	{
+		static_cast<LLAvatarListItem*>(*it)->setSpeakingIndicatorVisible(mShowSpeakingIndicator);
+	}
+}
+
 static bool findInsensitive(std::string haystack, const std::string& needle_upper)
 {
     LLStringUtil::toUpper(haystack);
@@ -81,6 +95,7 @@ LLAvatarList::Params::Params()
 , show_last_interaction_time("show_last_interaction_time", false)
 , show_info_btn("show_info_btn", true)
 , show_profile_btn("show_profile_btn", true)
+, show_speaking_indicator("show_speaking_indicator", true)
 {
 }
 
@@ -94,6 +109,7 @@ LLAvatarList::LLAvatarList(const Params& p)
 , mShowIcons(true)
 , mShowInfoBtn(p.show_info_btn)
 , mShowProfileBtn(p.show_profile_btn)
+, mShowSpeakingIndicator(p.show_speaking_indicator)
 {
 	setCommitOnSelectionChange(true);
 
@@ -295,6 +311,7 @@ void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, BOOL is
 	item->setAvatarIconVisible(mShowIcons);
 	item->setShowInfoBtn(mShowInfoBtn);
 	item->setShowProfileBtn(mShowProfileBtn);
+	item->setSpeakingIndicatorVisible(mShowSpeakingIndicator);
 
 	addItem(item, id, pos);
 }
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index 195d9e5b550135766a90379f0c9c3e44a5dc5ea3..490f93e5015e2e96b2118a9d4b5374d105435422 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -61,6 +61,7 @@ class LLAvatarList : public LLFlatListView
 		Optional<bool> show_last_interaction_time; // show most recent interaction time. *HACK: move this to a derived class
 		Optional<bool> show_info_btn;
 		Optional<bool> show_profile_btn;
+		Optional<bool> show_speaking_indicator;
 		Params();
 	};
 
@@ -76,6 +77,7 @@ class LLAvatarList : public LLFlatListView
 	void setContextMenu(LLAvatarListItem::ContextMenu* menu) { mContextMenu = menu; }
 
 	void toggleIcons();
+	void setSpeakingIndicatorsVisible(bool visible);
 	void sortByName();
 	void setShowIcons(std::string param_name);
 	bool getIconsVisible() const { return mShowIcons; }
@@ -105,6 +107,7 @@ class LLAvatarList : public LLFlatListView
 	bool mShowIcons;
 	bool mShowInfoBtn;
 	bool mShowProfileBtn;
+	bool mShowSpeakingIndicator;
 
 	LLTimer*				mLITUpdateTimer; // last interaction time update timer
 	std::string				mIconParamName;
diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
index a7ac14c94862be1ce621247c6bbfd07fed892a7c..7df278d887bf6815d3a17926c3af569eef3a464a 100644
--- a/indra/newview/llavatarlistitem.cpp
+++ b/indra/newview/llavatarlistitem.cpp
@@ -62,6 +62,7 @@ LLAvatarListItem::LLAvatarListItem()
 	mIconWidth = mAvatarName->getRect().mLeft - mAvatarIcon->getRect().mLeft;
 	mInfoBtnWidth = mInfoBtn->getRect().mRight - mSpeakingIndicator->getRect().mRight;
 	mProfileBtnWidth = mProfileBtn->getRect().mRight - mInfoBtn->getRect().mRight;
+	mSpeakingIndicatorWidth = mSpeakingIndicator->getRect().mRight - mAvatarName->getRect().mRight; 
 }
 
 LLAvatarListItem::~LLAvatarListItem()
@@ -230,6 +231,18 @@ void LLAvatarListItem::setShowProfileBtn(bool show)
 	mAvatarName->reshape(mAvatarName->getRect().getWidth() + width_delta, mAvatarName->getRect().getHeight());
 }
 
+void LLAvatarListItem::setSpeakingIndicatorVisible(bool visible)
+{
+	// Already done? Then do nothing.
+	if (mSpeakingIndicator->getVisible() == (BOOL)visible)
+		return;
+	mSpeakingIndicator->setVisible(visible);
+	S32 width_delta = visible ? - mSpeakingIndicatorWidth : mSpeakingIndicatorWidth;
+
+	//Reshaping avatar name
+	mAvatarName->reshape(mAvatarName->getRect().getWidth() + width_delta, mAvatarName->getRect().getHeight());
+}
+
 void LLAvatarListItem::setAvatarIconVisible(bool visible)
 {
 	// Already done? Then do nothing.
diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h
index cd7a85c3dc5b4ca746df79c05067e027863b902d..d379797a464b8c47206709640e39863d76ca086f 100644
--- a/indra/newview/llavatarlistitem.h
+++ b/indra/newview/llavatarlistitem.h
@@ -65,8 +65,9 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver
 	void setAvatarId(const LLUUID& id, bool ignore_status_changes = false);
 	void setLastInteractionTime(const std::string& val);
 	//Show/hide profile/info btn, translating speaker indicator and avatar name coordinates accordingly
-	void setShowProfileBtn(bool hide);
-	void setShowInfoBtn(bool hide);
+	void setShowProfileBtn(bool show);
+	void setShowInfoBtn(bool show);
+	void setSpeakingIndicatorVisible(bool visible);
 	void setAvatarIconVisible(bool visible);
 	
 	const LLUUID& getAvatarId() const;
@@ -109,6 +110,7 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver
 	S32	 mIconWidth; // icon width + padding
 	S32  mInfoBtnWidth; //info btn width + padding
 	S32  mProfileBtnWidth; //profile btn width + padding
+	S32  mSpeakingIndicatorWidth; //speaking indicator width + padding
 };
 
 #endif //LL_LLAVATARLISTITEM_H
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index b9e8c5394dac61701957dbb826f8ba36c48a4fb9..0a187ca4225355f5186f1d6d36626a569c60dbd7 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -198,9 +198,38 @@ void LLChiclet::setValue(const LLSD& value)
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
 
-LLIMChiclet::LLIMChiclet(const LLChiclet::Params& p)
+LLIMChiclet::LLIMChiclet(const LLIMChiclet::Params& p)
 : LLChiclet(p)
+, mNewMessagesIcon(NULL)
+, mCounterCtrl(NULL)
+{
+	// initialize an overlay icon for new messages
+	LLIconCtrl::Params icon_params;
+	icon_params.visible = false;
+	icon_params.image = LLUI::getUIImage(p.new_messages_icon_name);
+	mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(icon_params);
+	// adjust size and position of an icon
+	LLRect chiclet_rect = p.rect;
+	LLRect overlay_icon_rect = LLRect(chiclet_rect.getWidth()/2, chiclet_rect.mTop, chiclet_rect.mRight, chiclet_rect.getHeight()/2); 
+	// shift an icon a little bit to the right and up corner of a chiclet
+	overlay_icon_rect.translate(overlay_icon_rect.getWidth()/4, overlay_icon_rect.getHeight()/4);
+	mNewMessagesIcon->setRect(overlay_icon_rect);
+	addChild(mNewMessagesIcon);
+
+	setShowCounter(false);
+}
+
+void LLIMChiclet::setShowNewMessagesIcon(bool show)
+{
+	if(mNewMessagesIcon)
+	{
+		mNewMessagesIcon->setVisible(show);
+	}
+}
+
+bool LLIMChiclet::getShowNewMessagesIcon()
 {
+	return mNewMessagesIcon->getVisible();
 }
 
 void LLIMChiclet::onMouseDown()
@@ -274,7 +303,7 @@ LLIMP2PChiclet::Params::Params()
 , show_speaker("show_speaker")
 {
 	// *TODO Vadim: Get rid of hardcoded values.
-	rect(LLRect(0, 25, 45, 0));
+	rect(LLRect(0, 25, 25, 0));
 
 	avatar_icon.name("avatar_icon");
 	avatar_icon.follows.flags(FOLLOWS_LEFT | FOLLOWS_TOP | FOLLOWS_BOTTOM);
@@ -293,6 +322,7 @@ LLIMP2PChiclet::Params::Params()
 	unread_notifications.v_pad(5);
 	unread_notifications.text_color(LLColor4::white);
 	unread_notifications.mouse_opaque(false);
+	unread_notifications.visible(false);
 
 	speaker.name("speaker");
 	speaker.rect(LLRect(45, 25, 65, 0));
@@ -303,7 +333,6 @@ LLIMP2PChiclet::Params::Params()
 LLIMP2PChiclet::LLIMP2PChiclet(const Params& p)
 : LLIMChiclet(p)
 , mChicletIconCtrl(NULL)
-, mCounterCtrl(NULL)
 , mSpeakerCtrl(NULL)
 , mPopupMenu(NULL)
 {
@@ -322,28 +351,14 @@ LLIMP2PChiclet::LLIMP2PChiclet(const Params& p)
 	mSpeakerCtrl = LLUICtrlFactory::create<LLChicletSpeakerCtrl>(speaker_params);
 	addChild(mSpeakerCtrl);
 
+	sendChildToFront(mNewMessagesIcon);
 	setShowSpeaker(p.show_speaker);
 }
 
 void LLIMP2PChiclet::setCounter(S32 counter)
 {
 	mCounterCtrl->setCounter(counter);
-
-	if(getShowCounter())
-	{
-		LLRect counter_rect = mCounterCtrl->getRect();
-		LLRect required_rect = mCounterCtrl->getRequiredRect();
-		bool needs_resize = required_rect.getWidth() != counter_rect.getWidth();
-
-		if(needs_resize)
-		{
-			counter_rect.mRight = counter_rect.mLeft + required_rect.getWidth();
-			mCounterCtrl->reshape(counter_rect.getWidth(), counter_rect.getHeight());
-			mCounterCtrl->setRect(counter_rect);
-
-			onChicletSizeChanged();
-		}
-	}
+	setShowNewMessagesIcon(counter);
 }
 
 LLRect LLIMP2PChiclet::getRequiredRect()
@@ -455,9 +470,10 @@ LLAdHocChiclet::Params::Params()
 , unread_notifications("unread_notifications")
 , speaker("speaker")
 , show_speaker("show_speaker")
+, avatar_icon_color("avatar_icon_color", LLColor4::green)
 {
 	// *TODO Vadim: Get rid of hardcoded values.
-	rect(LLRect(0, 25, 45, 0));
+	rect(LLRect(0, 25, 25, 0));
 
 	avatar_icon.name("avatar_icon");
 	avatar_icon.follows.flags(FOLLOWS_LEFT | FOLLOWS_TOP | FOLLOWS_BOTTOM);
@@ -476,6 +492,8 @@ LLAdHocChiclet::Params::Params()
 	unread_notifications.v_pad(5);
 	unread_notifications.text_color(LLColor4::white);
 	unread_notifications.mouse_opaque(false);
+	unread_notifications.visible(false);
+
 
 	speaker.name("speaker");
 	speaker.rect(LLRect(45, 25, 65, 0));
@@ -486,12 +504,13 @@ LLAdHocChiclet::Params::Params()
 LLAdHocChiclet::LLAdHocChiclet(const Params& p)
 : LLIMChiclet(p)
 , mChicletIconCtrl(NULL)
-, mCounterCtrl(NULL)
 , mSpeakerCtrl(NULL)
 , mPopupMenu(NULL)
 {
 	LLChicletAvatarIconCtrl::Params avatar_params = p.avatar_icon;
 	mChicletIconCtrl = LLUICtrlFactory::create<LLChicletAvatarIconCtrl>(avatar_params);
+	//Make the avatar modified
+	mChicletIconCtrl->setColor(p.avatar_icon_color);
 	addChild(mChicletIconCtrl);
 
 	LLChicletNotificationCounterCtrl::Params unread_params = p.unread_notifications;
@@ -505,6 +524,7 @@ LLAdHocChiclet::LLAdHocChiclet(const Params& p)
 	mSpeakerCtrl = LLUICtrlFactory::create<LLChicletSpeakerCtrl>(speaker_params);
 	addChild(mSpeakerCtrl);
 
+	sendChildToFront(mNewMessagesIcon);
 	setShowSpeaker(p.show_speaker);
 }
 
@@ -518,22 +538,7 @@ void LLAdHocChiclet::setSessionId(const LLUUID& session_id)
 void LLAdHocChiclet::setCounter(S32 counter)
 {
 	mCounterCtrl->setCounter(counter);
-
-	if(getShowCounter())
-	{
-		LLRect counter_rect = mCounterCtrl->getRect();
-		LLRect required_rect = mCounterCtrl->getRequiredRect();
-		bool needs_resize = required_rect.getWidth() != counter_rect.getWidth();
-
-		if(needs_resize)
-		{
-			counter_rect.mRight = counter_rect.mLeft + required_rect.getWidth();
-			mCounterCtrl->reshape(counter_rect.getWidth(), counter_rect.getHeight());
-			mCounterCtrl->setRect(counter_rect);
-
-			onChicletSizeChanged();
-		}
-	}
+	setShowNewMessagesIcon(counter);
 }
 
 LLRect LLAdHocChiclet::getRequiredRect()
@@ -562,7 +567,7 @@ BOOL LLAdHocChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask)
 LLIMGroupChiclet::Params::Params()
 : group_icon("group_icon")
 {
-	rect(LLRect(0, 25, 45, 0));
+	rect(LLRect(0, 25, 25, 0));
 
 	group_icon.name("group_icon");
 	
@@ -578,6 +583,7 @@ LLIMGroupChiclet::Params::Params()
 	unread_notifications.font_halign(LLFontGL::HCENTER);
 	unread_notifications.v_pad(5);
 	unread_notifications.text_color(LLColor4::white);
+	unread_notifications.visible(false);
 
 	speaker.name("speaker");
 	speaker.rect(LLRect(45, 25, 65, 0));
@@ -589,7 +595,6 @@ LLIMGroupChiclet::LLIMGroupChiclet(const Params& p)
 : LLIMChiclet(p)
 , LLGroupMgrObserver(LLUUID::null)
 , mChicletIconCtrl(NULL)
-, mCounterCtrl(NULL)
 , mSpeakerCtrl(NULL)
 , mPopupMenu(NULL)
 {
@@ -608,6 +613,7 @@ LLIMGroupChiclet::LLIMGroupChiclet(const Params& p)
 	mSpeakerCtrl = LLUICtrlFactory::create<LLChicletSpeakerCtrl>(speaker_params);
 	addChild(mSpeakerCtrl);
 
+	sendChildToFront(mNewMessagesIcon);
 	setShowSpeaker(p.show_speaker);
 }
 
@@ -619,22 +625,7 @@ LLIMGroupChiclet::~LLIMGroupChiclet()
 void LLIMGroupChiclet::setCounter(S32 counter)
 {
 	mCounterCtrl->setCounter(counter);
-
-	if(getShowCounter())
-	{
-		LLRect counter_rect = mCounterCtrl->getRect();
-		LLRect required_rect = mCounterCtrl->getRequiredRect();
-		bool needs_resize = required_rect.getWidth() != counter_rect.getWidth();
-
-		if(needs_resize)
-		{
-			counter_rect.mRight = counter_rect.mLeft + required_rect.getWidth();
-			mCounterCtrl->reshape(counter_rect.getWidth(), counter_rect.getHeight());
-			mCounterCtrl->setRect(counter_rect);
-
-			onChicletSizeChanged();
-		}
-	}
+	setShowNewMessagesIcon(counter);
 }
 
 LLRect LLIMGroupChiclet::getRequiredRect()
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index 6eefd9829f1139483cb392970e00271a0f084671..a830240b7d45458d22852950423a2daa90e1fc2c 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -278,6 +278,14 @@ class LLIMChiclet : public LLChiclet
 		TYPE_GROUP,
 		TYPE_AD_HOC
 	};
+	struct Params : public LLInitParam::Block<Params, LLChiclet::Params>
+	{
+		Optional<std::string> new_messages_icon_name;
+
+		Params() : new_messages_icon_name("new_messages_icon_name", "icn_voice-localchat.tga")
+		{}
+	};
+
 	
 	/*virtual*/ ~LLIMChiclet() {};
 
@@ -307,6 +315,16 @@ class LLIMChiclet : public LLChiclet
 	*/
 	virtual bool getShowSpeaker() {return mShowSpeaker;};
 
+	/*
+	* Shows/hides overlay icon concerning new unread messages.
+	*/
+	virtual void setShowNewMessagesIcon(bool show);
+
+	/*
+	* Returns visibility of overlay icon concerning new unread messages.
+	*/
+	virtual bool getShowNewMessagesIcon();
+
 	/*
 	 * Draws border around chiclet.
 	*/
@@ -335,7 +353,7 @@ class LLIMChiclet : public LLChiclet
 
 protected:
 
-	LLIMChiclet(const LLChiclet::Params& p);
+	LLIMChiclet(const LLIMChiclet::Params& p);
 
 	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
 
@@ -343,6 +361,9 @@ class LLIMChiclet : public LLChiclet
 
 	bool mShowSpeaker;
 
+	LLIconCtrl* mNewMessagesIcon;
+	LLChicletNotificationCounterCtrl* mCounterCtrl;
+
 	/** the id of another participant, either an avatar id or a group id*/
 	LLUUID mOtherParticipantId;
 
@@ -374,7 +395,7 @@ class LLIMChiclet : public LLChiclet
 class LLIMP2PChiclet : public LLIMChiclet
 {
 public:
-	struct Params : public LLInitParam::Block<Params, LLChiclet::Params>
+	struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>
 	{
 		Optional<LLChicletAvatarIconCtrl::Params> avatar_icon;
 
@@ -436,7 +457,6 @@ class LLIMP2PChiclet : public LLIMChiclet
 private:
 
 	LLChicletAvatarIconCtrl* mChicletIconCtrl;
-	LLChicletNotificationCounterCtrl* mCounterCtrl;
 	LLChicletSpeakerCtrl* mSpeakerCtrl;
 	LLMenuGL* mPopupMenu;
 };
@@ -447,7 +467,7 @@ class LLIMP2PChiclet : public LLIMChiclet
 class LLAdHocChiclet : public LLIMChiclet
 {
 public:
-	struct Params : public LLInitParam::Block<Params, LLChiclet::Params>
+	struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>
 	{
 		Optional<LLChicletAvatarIconCtrl::Params> avatar_icon;
 
@@ -457,6 +477,8 @@ class LLAdHocChiclet : public LLIMChiclet
 
 		Optional<bool>	show_speaker;
 
+		Optional<LLColor4>	avatar_icon_color;
+
 		Params();
 	};
 
@@ -495,7 +517,6 @@ class LLAdHocChiclet : public LLIMChiclet
 private:
 
 	LLChicletAvatarIconCtrl* mChicletIconCtrl;
-	LLChicletNotificationCounterCtrl* mCounterCtrl;
 	LLChicletSpeakerCtrl* mSpeakerCtrl;
 	LLMenuGL* mPopupMenu;
 };
@@ -507,7 +528,7 @@ class LLIMGroupChiclet : public LLIMChiclet, public LLGroupMgrObserver
 {
 public:
 
-	struct Params : public LLInitParam::Block<Params, LLChiclet::Params>
+	struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params>
 	{
 		Optional<LLChicletGroupIconCtrl::Params> group_icon;
 
@@ -576,7 +597,6 @@ class LLIMGroupChiclet : public LLIMChiclet, public LLGroupMgrObserver
 private:
 
 	LLChicletGroupIconCtrl* mChicletIconCtrl;
-	LLChicletNotificationCounterCtrl* mCounterCtrl;
 	LLChicletSpeakerCtrl* mSpeakerCtrl;
 	LLMenuGL* mPopupMenu;
 };
diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp
index 5f79fe8b20189b2d1ea6bfc35b44bdbe4eedd692..c9566578256046cf265ae994cb13eb7b88b471b8 100644
--- a/indra/newview/llfriendcard.cpp
+++ b/indra/newview/llfriendcard.cpp
@@ -91,8 +91,44 @@ const LLUUID& get_folder_uuid(const LLUUID& parentFolderUUID, LLInventoryCollect
 	return LLUUID::null;
 }
 
+
+// LLViewerInventoryCategory::fetchDescendents has it own period of fetching.
+// for now it is FETCH_TIMER_EXPIRY = 10.0f; So made our period a bit more.
+const F32 FETCH_FRIENDS_DESCENDENTS_PERIOD = 11.0f;
+
+
+/**
+ * Intended to call passed callback after the specified period of time.
+ *
+ * Implemented to fix an issue when Inventory folders are in incomplete state. See EXT-2061, EXT-1935, EXT-813.
+ * For now it uses to periodically sync Inventory Friends/All folder with a Agent's Friends List
+ * until it is complete.
+ */ 
+class FriendListUpdater : public LLEventTimer
+{
+public:
+	typedef boost::function<bool()> callback_t;
+
+	FriendListUpdater(callback_t cb, F32 period)
+		:	LLEventTimer(period)
+		,	mCallback(cb)
+	{
+		mEventTimer.start();
+	}
+
+	virtual BOOL tick() // from LLEventTimer
+	{
+		return mCallback();
+	}
+
+private:
+	callback_t		mCallback;
+};
+
+
 // LLFriendCardsManager Constructor / Destructor
 LLFriendCardsManager::LLFriendCardsManager()
+: mFriendsAllFolderCompleted(true)
 {
 	LLAvatarTracker::instance().addObserver(this);
 }
@@ -269,7 +305,7 @@ bool LLFriendCardsManager::isAnyFriendCategory(const LLUUID& catID) const
 	return TRUE == gInventory.isObjectDescendentOf(catID, friendFolderID);
 }
 
-void LLFriendCardsManager::syncFriendsFolder()
+bool LLFriendCardsManager::syncFriendsFolder()
 {
 	//lets create "Friends" and "Friends/All" in the Inventory "Calling Cards" if they are absent
 	LLFriendCardsManager::instance().ensureFriendFoldersExist();
@@ -297,11 +333,35 @@ void LLFriendCardsManager::syncFriendsFolder()
 	// 2. Add missing Friend Cards for friends
 	LLAvatarTracker::buddy_map_t::const_iterator buddy_it = all_buddies.begin();
 	llinfos << "try to build friends, count: " << all_buddies.size() << llendl; 
+	mFriendsAllFolderCompleted = true;
 	for(; buddy_it != all_buddies.end(); ++buddy_it)
 	{
 		const LLUUID& buddy_id = (*buddy_it).first;
 		addFriendCardToInventory(buddy_id);
 	}
+
+	if (!mFriendsAllFolderCompleted)
+	{
+		forceFriendListIsLoaded(findFriendAllSubfolderUUIDImpl());
+
+		static bool timer_started = false;
+		if (!timer_started)
+		{
+			lldebugs << "Create and start timer to sync Inventory Friends All folder with Friends list" << llendl;
+
+			// do not worry about destruction of the FriendListUpdater. 
+			// It will be deleted by LLEventTimer::updateClass when FriendListUpdater::tick() returns true.
+			new FriendListUpdater(boost::bind(&LLFriendCardsManager::syncFriendsFolder, this),
+				FETCH_FRIENDS_DESCENDENTS_PERIOD);
+		}
+		timer_started = true;
+	}
+	else
+	{
+		lldebugs << "Friends/All Inventory folder is synchronized with the Agent's Friends List" << llendl;
+	}
+
+	return mFriendsAllFolderCompleted;
 }
 
 void LLFriendCardsManager::collectFriendsLists(folderid_buddies_map_t& folderBuddiesMap) const
@@ -461,7 +521,9 @@ bool LLFriendCardsManager::addFriendCardToInventory(const LLUUID& avatarID)
 	LLUUID friendListFolderID = findFriendAllSubfolderUUIDImpl();
 	if (shouldBeAdded && !invModel->isCategoryComplete(friendListFolderID))
 	{
+		mFriendsAllFolderCompleted = false;
 		shouldBeAdded = false;
+		lldebugs << "Friends/All category is not completed" << llendl; 
 	}
 	if (shouldBeAdded)
 	{
@@ -520,4 +582,11 @@ void LLFriendCardsManager::onFriendListUpdate(U32 changed_mask)
 	}
 }
 
+void LLFriendCardsManager::forceFriendListIsLoaded(const LLUUID& folder_id) const
+{
+	bool fetching_inventory = gInventory.fetchDescendentsOf(folder_id);
+	lldebugs << "Trying to fetch descendants of Friends/All Inventory folder, fetched: "
+		<< fetching_inventory << llendl;
+}
+
 // EOF
diff --git a/indra/newview/llfriendcard.h b/indra/newview/llfriendcard.h
index 6ada3428311c03b52528cca05022a1f2683cf62a..feea05bc1dcc8cc3df219590686a48c344d2aee4 100644
--- a/indra/newview/llfriendcard.h
+++ b/indra/newview/llfriendcard.h
@@ -89,8 +89,10 @@ class LLFriendCardsManager
 
 	/**
 	 *	Synchronizes content of the Calling Card/Friends/All Global Inventory folder with Agent's Friend List
+	 *
+	 *	@return true - if folder is already synchronized, false otherwise.
 	 */
-	void syncFriendsFolder();
+	bool syncFriendsFolder();
 
 	/*!
 	 * \brief
@@ -144,11 +146,20 @@ class LLFriendCardsManager
 
 	void onFriendListUpdate(U32 changed_mask);
 
+	/**
+	 * Force fetching of the Inventory folder specified by passed folder's LLUUID.
+	 *
+	 * It only sends request to server, server reply should be processed in other place.
+	 * Because request can be sent via UDP we need to periodically check if request was completed with success.
+	 */
+	void forceFriendListIsLoaded(const LLUUID& folder_id) const;
+
 
 private:
 	typedef std::set<LLUUID> avatar_uuid_set_t;
 
 	avatar_uuid_set_t mBuddyIDSet;
+	bool mFriendsAllFolderCompleted;
 };
 
 #endif // LL_LLFRIENDCARD_H
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 19fa66fd0e44de1f6c81174ba2172035f898f981..85863ed85bf63ae719c876a4f4d1239ca9a948d1 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -225,6 +225,7 @@ BOOL LLIMFloater::postBuild()
 	// enable line history support for instant message bar
 	mInputEditor->setEnableLineHistory(TRUE);
 	
+	
 	mInputEditor->setFocusReceivedCallback( boost::bind(onInputEditorFocusReceived, _1, this) );
 	mInputEditor->setFocusLostCallback( boost::bind(onInputEditorFocusLost, _1, this) );
 	mInputEditor->setKeystrokeCallback( onInputEditorKeystroke, this );
@@ -232,14 +233,17 @@ BOOL LLIMFloater::postBuild()
 	mInputEditor->setRevertOnEsc( FALSE );
 	mInputEditor->setReplaceNewlinesWithSpaces( FALSE );
 
-	childSetCommitCallback("chat_editor", onSendMsg, this);
-	
-	mChatHistory = getChild<LLChatHistory>("chat_history");
-		
 	std::string session_name(LLIMModel::instance().getName(mSessionID));
+
+	mInputEditor->setLabel(mInputEditor->getLabel() + " " + session_name);
+
 	LLStringUtil::toUpper(session_name);
 	setTitle(session_name);
 
+	childSetCommitCallback("chat_editor", onSendMsg, this);
+	
+	mChatHistory = getChild<LLChatHistory>("chat_history");
+
 	setDocked(true);
 
 	mTypingStart = LLTrans::getString("IM_typing_start_string");
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index b35fd6134b792f443d90459977f05de5d2ae1e2f..1312949f540af029150e5a8c2801c02a2cb75b6b 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -274,8 +274,14 @@ void LLNavigationBar::draw()
 
 BOOL LLNavigationBar::handleRightMouseDown(S32 x, S32 y, MASK mask)
 {
-	show_navbar_context_menu(this,x,y);
-	return TRUE;
+	BOOL handled = childrenHandleRightMouseDown( x, y, mask) != NULL;
+	if(!handled && !gMenuHolder->hasVisibleMenu())
+	{
+		show_navbar_context_menu(this,x,y);
+		handled = true;
+	}
+					
+	return handled;
 }
 
 void LLNavigationBar::onBackButtonClicked()
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index 21e88b6d07c1f81a616d75a4e2aaa8c4ddde3635..c9168670d5cd80c73f5e41e5e2aedb63fece6dcf 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -59,6 +59,14 @@ void LLPanelChatControlPanel::onOpenVoiceControlsClicked()
 	// TODO: implement Voice Control Panel opening
 }
 
+void LLPanelChatControlPanel::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state)
+{
+	bool is_call_started = ( new_state >= LLVoiceChannel::STATE_CALL_STARTED );
+	childSetVisible("end_call_btn", is_call_started);
+	childSetVisible("voice_ctrls_btn", is_call_started);
+	childSetVisible("call_btn", ! is_call_started);
+}
+
 BOOL LLPanelChatControlPanel::postBuild()
 {
 	childSetAction("call_btn", boost::bind(&LLPanelChatControlPanel::onCallButtonClicked, this));
@@ -76,15 +84,6 @@ void LLPanelChatControlPanel::draw()
 	LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionId);
 	if (!session) return;
 
-	LLVoiceChannel* voice_channel = session->mVoiceChannel;
-	if (voice_channel && voice_enabled)
-	{
-		bool is_call_started = ( voice_channel->getState() >= LLVoiceChannel::STATE_CALL_STARTED );
-		childSetVisible("end_call_btn", is_call_started);
-		childSetVisible("voice_ctrls_btn", is_call_started);
-		childSetVisible("call_btn", ! is_call_started);
-	}
-
 	bool session_initialized = session->mSessionInitialized;
 	bool callback_enabled = session->mCallBackEnabled;
 	LLViewerRegion* region = gAgent.getRegion();
@@ -98,6 +97,15 @@ void LLPanelChatControlPanel::draw()
 	LLPanel::draw();
 }
 
+void LLPanelChatControlPanel::setSessionId(const LLUUID& session_id)
+{
+	//Method is called twice for AdHoc and Group chat. Second time when server init reply received
+	mSessionId = session_id;
+	LLVoiceChannel* voice_channel = LLIMModel::getInstance()->getVoiceChannel(mSessionId);
+	if(voice_channel)
+		voice_channel->setStateChangedCallback(boost::bind(&LLPanelChatControlPanel::onVoiceChannelStateChanged, this, _1, _2));
+}
+
 LLPanelIMControlPanel::LLPanelIMControlPanel()
 {
 }
@@ -115,6 +123,8 @@ BOOL LLPanelIMControlPanel::postBuild()
 	childSetAction("teleport_btn", boost::bind(&LLPanelIMControlPanel::onTeleportButtonClicked, this));
 	childSetAction("pay_btn", boost::bind(&LLPanelIMControlPanel::onPayButtonClicked, this));
 	childSetEnabled("add_friend_btn", !LLAvatarActions::isFriend(getChild<LLAvatarIconCtrl>("avatar_icon")->getAvatarId()));
+
+	
 	
 	return LLPanelChatControlPanel::postBuild();
 }
@@ -158,6 +168,9 @@ void LLPanelIMControlPanel::setSessionId(const LLUUID& session_id)
 
 	getChild<LLAvatarIconCtrl>("avatar_icon")->setValue(mAvatarID);
 
+	// Fetch the currect name
+	gCacheName->get(mAvatarID, FALSE, boost::bind(&LLPanelIMControlPanel::nameUpdatedCallback, this, _1, _2, _3, _4));
+
 	// Disable profile button if participant is not realy SL avatar
 	LLIMModel::LLIMSession* im_session =
 		im_model.findIMSession(session_id);
@@ -165,6 +178,17 @@ void LLPanelIMControlPanel::setSessionId(const LLUUID& session_id)
 		childSetEnabled("view_profile_btn", FALSE);
 }
 
+void LLPanelIMControlPanel::nameUpdatedCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group)
+{
+	if ( id == mAvatarID )
+	{
+		std::string avatar_name;
+		avatar_name.assign(first);
+		avatar_name.append(" ");
+		avatar_name.append(last);
+		getChild<LLTextBox>("avatar_name")->setValue(avatar_name);
+	}
+}
 
 LLPanelGroupControlPanel::LLPanelGroupControlPanel(const LLUUID& session_id)
 {
@@ -214,6 +238,12 @@ void LLPanelGroupControlPanel::onSortMenuItemClicked(const LLSD& userdata)
 
 }
 
+void LLPanelGroupControlPanel::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state)
+{
+	LLPanelChatControlPanel::onVoiceChannelStateChanged(old_state, new_state);
+	mAvatarList->setSpeakingIndicatorsVisible(new_state >= LLVoiceChannel::STATE_CALL_STARTED);
+}
+
 void LLPanelGroupControlPanel::setSessionId(const LLUUID& session_id)
 {
 	LLPanelChatControlPanel::setSessionId(session_id);
diff --git a/indra/newview/llpanelimcontrolpanel.h b/indra/newview/llpanelimcontrolpanel.h
index fa101f42803e636289f82dff9b5b21c6c5197222..ac5d86345e834909b145e83991d63e32f989cd4b 100644
--- a/indra/newview/llpanelimcontrolpanel.h
+++ b/indra/newview/llpanelimcontrolpanel.h
@@ -34,6 +34,7 @@
 #define LL_LLPANELIMCONTROLPANEL_H
 
 #include "llpanel.h"
+#include "llvoicechannel.h"
 
 class LLSpeakerMgr;
 class LLAvatarList;
@@ -52,7 +53,9 @@ class LLPanelChatControlPanel : public LLPanel
 	void onEndCallButtonClicked();
 	void onOpenVoiceControlsClicked();
 
-	virtual void setSessionId(const LLUUID& session_id) { mSessionId = session_id; }
+	virtual void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state);
+
+	virtual void setSessionId(const LLUUID& session_id);
 
 private:
 	LLUUID mSessionId;
@@ -69,6 +72,9 @@ class LLPanelIMControlPanel : public LLPanelChatControlPanel
 
 	void setSessionId(const LLUUID& session_id);
 
+protected:
+	void nameUpdatedCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group);
+
 private:
 	void onViewProfileButtonClicked();
 	void onAddFriendButtonClicked();
@@ -100,6 +106,7 @@ class LLPanelGroupControlPanel : public LLPanelChatControlPanel
 private:
 	void onGroupInfoButtonClicked();
 	void onSortMenuItemClicked(const LLSD& userdata);
+	/*virtual*/ void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state);
 };
 
 class LLPanelAdHocControlPanel : public LLPanelGroupControlPanel
diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp
index 6f3b0db498cc7262eef3b3b1efc8d6c436dbaa94..49856638339e6f513261c0b422ba4cca14768a75 100644
--- a/indra/newview/llpanellandmarkinfo.cpp
+++ b/indra/newview/llpanellandmarkinfo.cpp
@@ -4,7 +4,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  *
- * Copyright (c) 2004-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  *
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
@@ -34,8 +34,6 @@
 
 #include "llpanellandmarkinfo.h"
 
-#include "llinventory.h"
-
 #include "llcombobox.h"
 #include "lllineeditor.h"
 #include "lltextbox.h"
@@ -44,7 +42,6 @@
 
 #include "llagent.h"
 #include "llagentui.h"
-#include "llinventorymodel.h"
 #include "lllandmarkactions.h"
 #include "llviewerinventory.h"
 #include "llviewerparcelmgr.h"
@@ -139,20 +136,6 @@ void LLPanelLandmarkInfo::processParcelInfo(const LLParcelData& parcel_data)
 {
 	LLPanelPlaceInfo::processParcelInfo(parcel_data);
 
-	// HACK: Flag 0x2 == adult region,
-	// Flag 0x1 == mature region, otherwise assume PG
-	std::string rating = LLViewerRegion::accessToString(SIM_ACCESS_PG);
-	if (parcel_data.flags & 0x2)
-	{
-		rating = LLViewerRegion::accessToString(SIM_ACCESS_ADULT);
-	}
-	else if (parcel_data.flags & 0x1)
-	{
-		rating = LLViewerRegion::accessToString(SIM_ACCESS_MATURE);
-	}
-
-	mMaturityRatingText->setValue(rating);
-
 	S32 region_x;
 	S32 region_y;
 	S32 region_z;
diff --git a/indra/newview/llpanellandmarkinfo.h b/indra/newview/llpanellandmarkinfo.h
index 03377986b319cf50215bf679df0108f51037a877..73e0ddb9cc989d58872c7159916f5d77e5cf4b9b 100644
--- a/indra/newview/llpanellandmarkinfo.h
+++ b/indra/newview/llpanellandmarkinfo.h
@@ -4,7 +4,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  *
- * Copyright (c) 2004-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  *
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 6d6fd38ccee6fa92cc827a8d4283d57b1dae9222..1ad4327b76e4e81d5e0235c2c4ab0c7109d9f544 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -4,7 +4,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  *
- * Copyright (c) 2001-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  *
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
diff --git a/indra/newview/llpanellandmarks.h b/indra/newview/llpanellandmarks.h
index 0e7abb486501fbccc224c0e1c2235701f83f938e..d54761ed5905f640b8ca8e8746abdcd4e01f37a5 100644
--- a/indra/newview/llpanellandmarks.h
+++ b/indra/newview/llpanellandmarks.h
@@ -5,7 +5,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  *
- * Copyright (c) 2001-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  *
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp
index e725479abb5fe27eab0ca3aa82b462b2448b9c45..103f0416865d93a418e3ebe068e8d9950d036a96 100644
--- a/indra/newview/llpanelpick.cpp
+++ b/indra/newview/llpanelpick.cpp
@@ -40,6 +40,7 @@
 #include "llagent.h"
 #include "llagentpicksinfo.h"
 #include "llbutton.h"
+#include "lliconctrl.h"
 #include "lllineeditor.h"
 #include "llparcel.h"
 #include "llviewerparcelmgr.h"
@@ -62,6 +63,7 @@
 #define XML_SNAPSHOT	"pick_snapshot"
 #define XML_LOCATION	"pick_location"
 
+#define XML_BTN_ON_TXTR "edit_icon"
 #define XML_BTN_SAVE "save_changes_btn"
 
 #define SAVE_BTN_LABEL "[WHAT]"
@@ -401,8 +403,6 @@ BOOL LLPanelPickEdit::postBuild()
 	LLPanelPickInfo::postBuild();
 
 	mSnapshotCtrl->setOnSelectCallback(boost::bind(&LLPanelPickEdit::onPickChanged, this, _1));
-	mSnapshotCtrl->setMouseEnterCallback(boost::bind(&LLPanelPickEdit::childSetVisible, this, "edit_icon", true));
-	mSnapshotCtrl->setMouseLeaveCallback(boost::bind(&LLPanelPickEdit::childSetVisible, this, "edit_icon", false));
 
 	LLLineEditor* line_edit = getChild<LLLineEditor>("pick_name");
 	line_edit->setKeystrokeCallback(boost::bind(&LLPanelPickEdit::onPickChanged, this, _1), NULL);
@@ -547,3 +547,23 @@ void LLPanelPickEdit::processProperties(void* data, EAvatarProcessorType type)
 		LLPanelPickInfo::processProperties(data, type);
 	}
 }
+
+// PRIVATE AREA
+
+void LLPanelPickEdit::initTexturePickerMouseEvents()
+{
+	text_icon = getChild<LLIconCtrl>(XML_BTN_ON_TXTR);
+	mSnapshotCtrl->setMouseEnterCallback(boost::bind(&LLPanelPickEdit::onTexturePickerMouseEnter, this, _1));
+	mSnapshotCtrl->setMouseLeaveCallback(boost::bind(&LLPanelPickEdit::onTexturePickerMouseLeave, this, _1));
+	text_icon->setVisible(FALSE);
+}
+		
+void LLPanelPickEdit::onTexturePickerMouseEnter(LLUICtrl* ctrl)
+{
+        text_icon->setVisible(TRUE);
+}
+
+void LLPanelPickEdit::onTexturePickerMouseLeave(LLUICtrl* ctrl)
+{
+	text_icon->setVisible(FALSE);
+}
diff --git a/indra/newview/llpanelpick.h b/indra/newview/llpanelpick.h
index 9b605cd6b1a40a6cfc959fa219303cf4b4a370b7..2c0830f2ac7f7f1d53f6c58312a644bfc239c761 100644
--- a/indra/newview/llpanelpick.h
+++ b/indra/newview/llpanelpick.h
@@ -41,6 +41,7 @@
 #include "llremoteparcelrequest.h"
 #include "llavatarpropertiesprocessor.h"
 
+class LLIconCtrl;
 class LLTextureCtrl;
 class LLMessageSystem;
 class LLAvatarPropertiesObserver;
@@ -236,6 +237,16 @@ class LLPanelPickEdit : public LLPanelPickInfo
 	bool mLocationChanged;
 	bool mNeedData;
 	bool mNewPick;
+
+private:
+
+	void initTexturePickerMouseEvents();
+        void onTexturePickerMouseEnter(LLUICtrl* ctrl);
+	void onTexturePickerMouseLeave(LLUICtrl* ctrl);
+
+private:
+
+	LLIconCtrl* text_icon;
 };
 
 #endif // LL_LLPANELPICK_H
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index 6181531f82e1968ed1b2109409527144e91360f1..2bf04f96814233a6507466fcefd0487b8a52081d 100644
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -4,7 +4,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  * 
- * Copyright (c) 2004-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  * 
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h
index 06a0f0a0fdb3291dde52161ec4e9b5cd24ee6d51..5a2754ad106fd7b8767f6dfea28f9a4273e50a83 100644
--- a/indra/newview/llpanelpicks.h
+++ b/indra/newview/llpanelpicks.h
@@ -4,7 +4,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  * 
- * Copyright (c) 2004-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  * 
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp
index 2c5f4b5afaa391656f72346ce9fe5722e1bc8fbc..c60065101581e1c1a4053fcba49d2b1bf5a2f341 100644
--- a/indra/newview/llpanelplaceinfo.cpp
+++ b/indra/newview/llpanelplaceinfo.cpp
@@ -4,7 +4,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  * 
- * Copyright (c) 2004-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  * 
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
@@ -38,8 +38,6 @@
 #include "llsdutil.h"
 #include "llsecondlifeurls.h"
 
-#include "llinventory.h"
-
 #include "llsdutil_math.h"
 
 #include "llscrollcontainer.h"
@@ -48,15 +46,12 @@
 #include "llagent.h"
 #include "llavatarpropertiesprocessor.h"
 #include "llexpandabletextbox.h"
-#include "llfloaterworldmap.h"
-#include "llinventorymodel.h"
 #include "llpanelpick.h"
 #include "lltexturectrl.h"
 #include "llviewerinventory.h"
 #include "llviewerparcelmgr.h"
 #include "llviewerregion.h"
 #include "llviewertexteditor.h"
-#include "llworldmap.h"
 
 LLPanelPlaceInfo::LLPanelPlaceInfo()
 :	LLPanel(),
@@ -209,6 +204,20 @@ void LLPanelPlaceInfo::processParcelInfo(const LLParcelData& parcel_data)
 		mDescEditor->setText(parcel_data.desc);
 	}
 
+	// HACK: Flag 0x2 == adult region,
+	// Flag 0x1 == mature region, otherwise assume PG
+	std::string rating = LLViewerRegion::accessToString(SIM_ACCESS_PG);
+	if (parcel_data.flags & 0x2)
+	{
+		rating = LLViewerRegion::accessToString(SIM_ACCESS_ADULT);
+	}
+	else if (parcel_data.flags & 0x1)
+	{
+		rating = LLViewerRegion::accessToString(SIM_ACCESS_MATURE);
+	}
+
+	mMaturityRatingText->setValue(rating);
+
 	S32 region_x;
 	S32 region_y;
 	S32 region_z;
diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h
index c9e13475428c701d8cc771205d051374d825c050..ec30397cff5388a53bcae89c8c807ef10a40acd7 100644
--- a/indra/newview/llpanelplaceinfo.h
+++ b/indra/newview/llpanelplaceinfo.h
@@ -4,7 +4,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  * 
- * Copyright (c) 2004-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  * 
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index 9ba72fe6cff164316a51427851fe9d48cd83e4d7..b2a9f6f25133771f253dca4bbe1d7ef5f6eb00df 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -4,7 +4,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  *
- * Copyright (c) 2004-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  *
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
@@ -36,8 +36,6 @@
 
 #include "llparcel.h"
 
-#include "llqueryflags.h"
-
 #include "lliconctrl.h"
 #include "lllineeditor.h"
 #include "lltextbox.h"
@@ -84,16 +82,24 @@ BOOL LLPanelPlaceProfile::postBuild()
 	mParcelOwner = getChild<LLTextBox>("owner_value");
 	mLastVisited = getChild<LLTextBox>("last_visited_value");
 
-	mRatingText = getChild<LLTextBox>("rating_value");
+	mParcelRatingIcon = getChild<LLIconCtrl>("rating_icon");
+	mParcelRatingText = getChild<LLTextBox>("rating_value");
+	mVoiceIcon = getChild<LLIconCtrl>("voice_icon");
 	mVoiceText = getChild<LLTextBox>("voice_value");
+	mFlyIcon = getChild<LLIconCtrl>("fly_icon");
 	mFlyText = getChild<LLTextBox>("fly_value");
+	mPushIcon = getChild<LLIconCtrl>("push_icon");
 	mPushText = getChild<LLTextBox>("push_value");
+	mBuildIcon = getChild<LLIconCtrl>("build_icon");
 	mBuildText = getChild<LLTextBox>("build_value");
+	mScriptsIcon = getChild<LLIconCtrl>("scripts_icon");
 	mScriptsText = getChild<LLTextBox>("scripts_value");
+	mDamageIcon = getChild<LLIconCtrl>("damage_icon");
 	mDamageText = getChild<LLTextBox>("damage_value");
 
 	mRegionNameText = getChild<LLTextBox>("region_name");
 	mRegionTypeText = getChild<LLTextBox>("region_type");
+	mRegionRatingIcon = getChild<LLIconCtrl>("region_rating_icon");
 	mRegionRatingText = getChild<LLTextBox>("region_rating");
 	mRegionOwnerText = getChild<LLTextBox>("region_owner");
 	mRegionGroupText = getChild<LLTextBox>("region_group");
@@ -128,16 +134,24 @@ void LLPanelPlaceProfile::resetLocation()
 	mParcelOwner->setValue(not_available);
 	mLastVisited->setValue(not_available);
 
-	mRatingText->setText(not_available);
+	mParcelRatingIcon->setValue(not_available);
+	mParcelRatingText->setText(not_available);
+	mVoiceIcon->setValue(not_available);
 	mVoiceText->setText(not_available);
+	mFlyIcon->setValue(not_available);
 	mFlyText->setText(not_available);
+	mPushIcon->setValue(not_available);
 	mPushText->setText(not_available);
+	mBuildIcon->setValue(not_available);
 	mBuildText->setText(not_available);
-	mParcelScriptsText->setText(not_available);
+	mScriptsIcon->setValue(not_available);
+	mScriptsText->setText(not_available);
+	mDamageIcon->setValue(not_available);
 	mDamageText->setText(not_available);
 
 	mRegionNameText->setValue(not_available);
 	mRegionTypeText->setValue(not_available);
+	mRegionRatingIcon->setValue(not_available);
 	mRegionRatingText->setValue(not_available);
 	mRegionOwnerText->setValue(not_available);
 	mRegionGroupText->setValue(not_available);
@@ -191,33 +205,6 @@ void LLPanelPlaceProfile::setInfoType(INFO_TYPE type)
 	LLPanelPlaceInfo::setInfoType(type);
 }
 
-// virtual
-void LLPanelPlaceProfile::processParcelInfo(const LLParcelData& parcel_data)
-{
-	LLPanelPlaceInfo::processParcelInfo(parcel_data);
-
-	// HACK: Flag 0x2 == adult region,
-	// Flag 0x1 == mature region, otherwise assume PG
-	std::string rating = LLViewerRegion::accessToString(SIM_ACCESS_PG);
-	if (parcel_data.flags & 0x2)
-	{
-		rating = LLViewerRegion::accessToString(SIM_ACCESS_ADULT);
-	}
-	else if (parcel_data.flags & 0x1)
-	{
-		rating = LLViewerRegion::accessToString(SIM_ACCESS_MATURE);
-	}
-
-	mMaturityRatingText->setValue(rating);
-	mRatingText->setValue(rating);
-
-	//update for_sale banner, here we should use DFQ_FOR_SALE instead of PF_FOR_SALE
-	//because we deal with remote parcel response format
-	bool is_for_sale = (parcel_data.flags & DFQ_FOR_SALE) &&
-					 mInfoType == AGENT ? TRUE : FALSE;
-	mForSalePanel->setVisible(is_for_sale);
-}
-
 void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 													LLViewerRegion* region,
 													const LLVector3d& pos_global,
@@ -238,19 +225,34 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 
 	// HACK: Converting sim access flags to the format
 	// returned by remote parcel response.
-	switch(region->getSimAccess())
+	U8 sim_access = region->getSimAccess();
+	switch(sim_access)
 	{
 	case SIM_ACCESS_MATURE:
 		parcel_data.flags = 0x1;
+
+		mParcelRatingIcon->setValue("parcel_drk_M");
+		mRegionRatingIcon->setValue("parcel_drk_M");
 		break;
 
 	case SIM_ACCESS_ADULT:
 		parcel_data.flags = 0x2;
+
+		mParcelRatingIcon->setValue("parcel_drk_R");
+		mRegionRatingIcon->setValue("parcel_drk_R");
 		break;
 
 	default:
 		parcel_data.flags = 0;
+
+		mParcelRatingIcon->setValue("parcel_drk_PG");
+		mRegionRatingIcon->setValue("parcel_drk_PG");
 	}
+
+	std::string rating = LLViewerRegion::accessToString(sim_access);
+	mParcelRatingText->setText(rating);
+	mRegionRatingText->setText(rating);
+
 	parcel_data.desc = parcel->getDesc();
 	parcel_data.name = parcel->getName();
 	parcel_data.sim_name = region->getName();
@@ -268,37 +270,45 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 	// Processing parcel characteristics
 	if (parcel->getParcelFlagAllowVoice())
 	{
+		mVoiceIcon->setValue("parcel_drk_Voice");
 		mVoiceText->setText(on);
 	}
 	else
 	{
+		mVoiceIcon->setValue("parcel_drk_VoiceNo");
 		mVoiceText->setText(off);
 	}
 
 	if (!region->getBlockFly() && parcel->getAllowFly())
 	{
+		mFlyIcon->setValue("parcel_drk_Fly");
 		mFlyText->setText(on);
 	}
 	else
 	{
+		mFlyIcon->setValue("parcel_drk_FlyNo");
 		mFlyText->setText(off);
 	}
 
 	if (region->getRestrictPushObject() || parcel->getRestrictPushObject())
 	{
+		mPushIcon->setValue("parcel_drk_PushNo");
 		mPushText->setText(off);
 	}
 	else
 	{
+		mPushIcon->setValue("parcel_drk_Push");
 		mPushText->setText(on);
 	}
 
 	if (parcel->getAllowModify())
 	{
+		mBuildIcon->setValue("parcel_drk_Build");
 		mBuildText->setText(on);
 	}
 	else
 	{
+		mBuildIcon->setValue("parcel_drk_BuildNo");
 		mBuildText->setText(off);
 	}
 
@@ -306,25 +316,28 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 	   (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) ||
 	   !parcel->getAllowOtherScripts())
 	{
+		mScriptsIcon->setValue("parcel_drk_ScriptsNo");
 		mScriptsText->setText(off);
 	}
 	else
 	{
+		mScriptsIcon->setValue("parcel_drk_Scripts");
 		mScriptsText->setText(on);
 	}
 
 	if (region->getAllowDamage() || parcel->getAllowDamage())
 	{
+		mDamageIcon->setValue("parcel_drk_Damage");
 		mDamageText->setText(on);
 	}
 	else
 	{
+		mDamageIcon->setValue("parcel_drk_DamageNo");
 		mDamageText->setText(off);
 	}
 
 	mRegionNameText->setText(region->getName());
 	mRegionTypeText->setText(region->getSimProductName());
-	mRegionRatingText->setText(region->getSimAccessString());
 
 	// Determine parcel owner
 	if (parcel->isPublic())
@@ -383,9 +396,6 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 													 &dwell);
 	if (for_sale)
 	{
-		// Adding "For Sale" flag in remote parcel response format.
-		parcel_data.flags |= DFQ_FOR_SALE;
-
 		const LLUUID& auth_buyer_id = parcel->getAuthorizedBuyerID();
 		if(auth_buyer_id.notNull())
 		{
@@ -403,6 +413,8 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 			mSaleToText->setText(getString("anyone"));
 		}
 
+		mForSalePanel->setVisible(for_sale);
+
 		const U8* sign = (U8*)getString("price_text").c_str();
 		const U8* sqm = (U8*)getString("area_text").c_str();
 
@@ -455,7 +467,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 
 	mSelectedParcelID = parcel->getLocalID();
 	mLastSelectedRegionID = region->getRegionID();
-	processParcelInfo(parcel_data);
+	LLPanelPlaceInfo::processParcelInfo(parcel_data);
 
 	mYouAreHerePanel->setVisible(is_current_parcel);
 	getChild<LLAccordionCtrlTab>("sales_tab")->setVisible(for_sale);
diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h
index d8e4bcb6bdb7098bcdb64411acab74a88c677eb3..b3ef4acf511f065969792bdf4e8f10bf270ba204 100644
--- a/indra/newview/llpanelplaceprofile.h
+++ b/indra/newview/llpanelplaceprofile.h
@@ -4,7 +4,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  *
- * Copyright (c) 2004-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  *
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
@@ -35,6 +35,7 @@
 
 #include "llpanelplaceinfo.h"
 
+class LLIconCtrl;
 class LLTextEditor;
 
 class LLPanelPlaceProfile : public LLPanelPlaceInfo
@@ -49,8 +50,6 @@ class LLPanelPlaceProfile : public LLPanelPlaceInfo
 
 	/*virtual*/ void setInfoType(INFO_TYPE type);
 
-	/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
-
 	// Displays information about the currently selected parcel
 	// without sending a request to the server.
 	// If is_current_parcel true shows "You Are Here" banner.
@@ -81,16 +80,24 @@ class LLPanelPlaceProfile : public LLPanelPlaceInfo
 	LLTextBox*			mParcelOwner;
 	LLTextBox*			mLastVisited;
 
-	LLTextBox*			mRatingText;
+	LLIconCtrl*			mParcelRatingIcon;
+	LLTextBox*			mParcelRatingText;
+	LLIconCtrl*			mVoiceIcon;
 	LLTextBox*			mVoiceText;
+	LLIconCtrl*			mFlyIcon;
 	LLTextBox*			mFlyText;
+	LLIconCtrl*			mPushIcon;
 	LLTextBox*			mPushText;
+	LLIconCtrl*			mBuildIcon;
 	LLTextBox*			mBuildText;
+	LLIconCtrl*			mScriptsIcon;
 	LLTextBox*			mScriptsText;
+	LLIconCtrl*			mDamageIcon;
 	LLTextBox*			mDamageText;
 
 	LLTextBox*			mRegionNameText;
 	LLTextBox*			mRegionTypeText;
+	LLIconCtrl*			mRegionRatingIcon;
 	LLTextBox*			mRegionRatingText;
 	LLTextBox*			mRegionOwnerText;
 	LLTextBox*			mRegionGroupText;
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 66efb96fc7402b1672229d9fcede7c4216f08d7d..8d117afcfe0cffaddb6ea8c7e5890de9fef9fdfa 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -4,7 +4,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  *
- * Copyright (c) 2004-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  *
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
@@ -160,9 +160,6 @@ BOOL LLPanelPlaces::postBuild()
 	
 	mShowOnMapBtn = getChild<LLButton>("map_btn");
 	mShowOnMapBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onShowOnMapButtonClicked, this));
-	
-	mShareBtn = getChild<LLButton>("share_btn");
-	//mShareBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onShareButtonClicked, this));
 
 	mEditBtn = getChild<LLButton>("edit_btn");
 	mEditBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onEditButtonClicked, this));
@@ -413,13 +410,6 @@ void LLPanelPlaces::onTabSelected()
 	mActivePanel->updateVerbs();
 }
 
-/*
-void LLPanelPlaces::onShareButtonClicked()
-{
-	// TODO: Launch the "Things" Share wizard
-}
-*/
-
 void LLPanelPlaces::onTeleportButtonClicked()
 {
 	LLPanelPlaceInfo* panel = getCurrentInfoPanel();
@@ -852,7 +842,6 @@ void LLPanelPlaces::updateVerbs()
 
 	mTeleportBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn);
 	mShowOnMapBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn);
-	mShareBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn);
 	mOverflowBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn);
 	mEditBtn->setVisible(mPlaceInfoType == LANDMARK_INFO_TYPE && !isLandmarkEditModeOn);
 	mSaveBtn->setVisible(isLandmarkEditModeOn);
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index 39eb5261db4afdb94b6e5d85ede3ca54bd2d71af..0d97353b661b5cb76d8e7babfc709983dbf16541 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -4,7 +4,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  * 
- * Copyright (c) 2004-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  * 
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
@@ -73,7 +73,6 @@ class LLPanelPlaces : public LLPanel
 	void onFilterEdit(const std::string& search_string, bool force_filter);
 	void onTabSelected();
 
-	//void onShareButtonClicked();
 	void onTeleportButtonClicked();
 	void onShowOnMapButtonClicked();
 	void onEditButtonClicked();
@@ -105,7 +104,6 @@ class LLPanelPlaces : public LLPanel
 
 	LLButton*					mTeleportBtn;
 	LLButton*					mShowOnMapBtn;
-	LLButton*					mShareBtn;
 	LLButton*					mEditBtn;
 	LLButton*					mSaveBtn;
 	LLButton*					mCancelBtn;
diff --git a/indra/newview/llpanelplacestab.cpp b/indra/newview/llpanelplacestab.cpp
index 7c0a7b0cc4aeb2aab3ece5fadc4448fe9e652a7c..42c871a41aa146ec6a1be880eb9ad502a139d910 100644
--- a/indra/newview/llpanelplacestab.cpp
+++ b/indra/newview/llpanelplacestab.cpp
@@ -4,7 +4,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  * 
- * Copyright (c) 2004-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  * 
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
@@ -51,7 +51,6 @@ bool LLPanelPlacesTab::isTabVisible()
 
 void LLPanelPlacesTab::setPanelPlacesButtons(LLPanelPlaces* panel)
 {
-	//mShareBtn = panel->getChild<LLButton>("share_btn");
 	mTeleportBtn = panel->getChild<LLButton>("teleport_btn");
 	mShowOnMapBtn = panel->getChild<LLButton>("map_btn");
 }
diff --git a/indra/newview/llpanelplacestab.h b/indra/newview/llpanelplacestab.h
index 1c70869414f06cf1216fbabb3b969fbbba097367..458694d766da36d1a061e03da2454155156d3dae 100644
--- a/indra/newview/llpanelplacestab.h
+++ b/indra/newview/llpanelplacestab.h
@@ -4,7 +4,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  * 
- * Copyright (c) 2004-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  * 
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
@@ -44,10 +44,8 @@ class LLPanelPlacesTab : public LLPanel
 
 	virtual void onSearchEdit(const std::string& string) = 0;
 	virtual void updateVerbs() = 0;		// Updates buttons at the bottom of Places panel
-	//virtual void onShare() = 0;
 	virtual void onShowOnMap() = 0;
 	virtual void onTeleport() = 0;
-	//virtual void onCopySLURL() = 0;
 
 	bool isTabVisible(); // Check if parent TabContainer is visible.
 
@@ -58,7 +56,6 @@ class LLPanelPlacesTab : public LLPanel
 										const LLUUID& snapshot_id,
 										bool teleport);
 protected:
-	//LLButton*				mShareBtn;
 	LLButton*				mTeleportBtn;
 	LLButton*				mShowOnMapBtn;
 };
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 7dd9df674c0c15302dbda39af77831e0187edc36..437af1c4e712494ea590b895b41530f5248dca83 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -4,7 +4,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  * 
- * Copyright (c) 2001-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  * 
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h
index 7c1b403432475a4ae6225ae2b78505795631d43e..b34d9e876c7b47c1115bc4a857845ca3bc244da9 100644
--- a/indra/newview/llpanelteleporthistory.h
+++ b/indra/newview/llpanelteleporthistory.h
@@ -5,7 +5,7 @@
  *
  * $LicenseInfo:firstyear=2009&license=viewergpl$
  * 
- * Copyright (c) 2001-2009, Linden Research, Inc.
+ * Copyright (c) 2009, Linden Research, Inc.
  * 
  * Second Life Viewer Source Code
  * The source code in this file ("Source Code") is provided by Linden Lab
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index 9450bee315328c61a82290762c2ed1c7992e1573..edff706fee51bc249a4d9b54fb53094da3bd64cf 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -45,14 +45,15 @@
 LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* avatar_list):
 	mSpeakerMgr(data_source),
 	mAvatarList(avatar_list),
-	mSpeakerAddListener(*this),
-	mSpeakerRemoveListener(*this),
-	mSpeakerClearListener(*this),
 	mSortOrder(E_SORT_BY_NAME)
 {
-	mSpeakerMgr->addListener(&mSpeakerAddListener, "add");
-	mSpeakerMgr->addListener(&mSpeakerRemoveListener, "remove");
-	mSpeakerMgr->addListener(&mSpeakerClearListener, "clear");
+	mSpeakerAddListener = new SpeakerAddListener(*this);
+	mSpeakerRemoveListener = new SpeakerRemoveListener(*this);
+	mSpeakerClearListener = new SpeakerClearListener(*this);
+
+	mSpeakerMgr->addListener(mSpeakerAddListener, "add");
+	mSpeakerMgr->addListener(mSpeakerRemoveListener, "remove");
+	mSpeakerMgr->addListener(mSpeakerClearListener, "clear");
 
 	mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData"));
 	mAvatarList->setDoubleClickCallback(boost::bind(&LLParticipantList::onAvatarListDoubleClicked, this, mAvatarList));
diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h
index 04d9e2925682cdd24bdd297307b617b27d6432ea..8c209c0b2081dabeaa37e1bf1b9beae0de3e0f8d 100644
--- a/indra/newview/llparticipantlist.h
+++ b/indra/newview/llparticipantlist.h
@@ -103,9 +103,9 @@ class LLParticipantList
 		LLSpeakerMgr*		mSpeakerMgr;
 		LLAvatarList*		mAvatarList;
 
-		SpeakerAddListener		mSpeakerAddListener;
-		SpeakerRemoveListener	mSpeakerRemoveListener;
-		SpeakerClearListener	mSpeakerClearListener;
+		LLPointer<SpeakerAddListener>		mSpeakerAddListener;
+		LLPointer<SpeakerRemoveListener>	mSpeakerRemoveListener;
+		LLPointer<SpeakerClearListener>		mSpeakerClearListener;
 
 		EParticipantSortOrder	mSortOrder;
 };
diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
index 96fcf61e62899c2b41bce022335a8eb435f3e531..cefc88ebee85249ec4bda34b0d70d113de31d4a6 100644
--- a/indra/newview/llvoicechannel.cpp
+++ b/indra/newview/llvoicechannel.cpp
@@ -390,7 +390,15 @@ void LLVoiceChannel::setState(EState state)
 		break;
 	}
 
-	mState = state;
+	doSetState(state);
+}
+
+void LLVoiceChannel::doSetState(const EState& new_state)
+{
+	EState old_state = mState;
+	mState = new_state;
+	if (!mStateChangedCallback.empty())
+		mStateChangedCallback(old_state, mState);
 }
 
 void LLVoiceChannel::toggleCallWindowIfNeeded(EState state)
@@ -620,7 +628,7 @@ void LLVoiceChannelGroup::setState(EState state)
 			gIMMgr->addSystemMessage(mSessionID, "ringing", mNotifyArgs);
 		}
 
-		mState = state;
+		doSetState(state);
 		break;
 	default:
 		LLVoiceChannel::setState(state);
@@ -865,7 +873,7 @@ void LLVoiceChannelP2P::setState(EState state)
 	if (mReceivedCall && state == STATE_RINGING)
 	{
 		gIMMgr->addSystemMessage(mSessionID, "answering", mNotifyArgs);
-		mState = state;
+		doSetState(state);
 		return;
 	}
 	LLVoiceChannel::setState(state);
diff --git a/indra/newview/llvoicechannel.h b/indra/newview/llvoicechannel.h
index 9966bdd5abff75798ab693808e037dae5196801b..8f1e9ff02d3c9807781b2e19425e408f2212440e 100644
--- a/indra/newview/llvoicechannel.h
+++ b/indra/newview/llvoicechannel.h
@@ -52,6 +52,8 @@ class LLVoiceChannel : public LLVoiceClientStatusObserver
 		STATE_CONNECTED
 	} EState;
 
+	typedef boost::function<void(const EState& old_state, const EState& new_state)> state_changed_callback_t;
+
 	LLVoiceChannel(const LLUUID& session_id, const std::string& session_name);
 	virtual ~LLVoiceChannel();
 
@@ -69,6 +71,8 @@ class LLVoiceChannel : public LLVoiceClientStatusObserver
 	virtual BOOL callStarted();
 	const std::string& getSessionName() const { return mSessionName; }
 
+	void setStateChangedCallback(state_changed_callback_t callback) { mStateChangedCallback = callback; }
+
 	const LLUUID getSessionID() { return mSessionID; }
 	EState getState() { return mState; }
 
@@ -85,6 +89,10 @@ class LLVoiceChannel : public LLVoiceClientStatusObserver
 
 protected:
 	virtual void setState(EState state);
+	/**
+	 * Use this method if you want mStateChangedCallback to be executed while state is changed
+	 */
+	void doSetState(const EState& state);
 	void toggleCallWindowIfNeeded(EState state);
 	void setURI(std::string uri);
 
@@ -106,6 +114,9 @@ class LLVoiceChannel : public LLVoiceClientStatusObserver
 	static LLVoiceChannel* sCurrentVoiceChannel;
 	static LLVoiceChannel* sSuspendedVoiceChannel;
 	static BOOL sSuspended;
+
+private:
+	state_changed_callback_t mStateChangedCallback;
 };
 
 class LLVoiceChannelGroup : public LLVoiceChannel
diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml
index 88aca005cfedec555a06fe59e12bfada224dc083..70af2f63b64dbc4d2ba1c06d82272a9ff67c0a22 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -3,7 +3,7 @@
  legacy_header_height="18"
  background_visible="true"
  follows="left|top|right|bottom"
- height="359"
+ height="369"
  layout="topleft"
  left="0"
  name="panel_im"
@@ -12,13 +12,13 @@
  can_dock="true"
  can_minimize="true"
  visible="true" 
- width="400"
+ width="520"
  can_resize="true"
- min_width="200"
- min_height="150">
+ min_width="350"
+ min_height="350">
   <layout_stack follows="left|top|right|bottom"
-                height="344"
-                width="400"
+                height="354"
+                width="520"
                 layout="topleft"
                 orientation="horizontal"
                 name="im_panels"
@@ -28,13 +28,13 @@
       name="panel_im_control_panel"
       layout="topleft"
       top_delta="-3"
-      height="344"
+      height="354"
       follows="left"
       label="IM Control Panel"
       auto_resize="false"
       user_resize="false" />
-    <layout_panel height="344"
-                  width="235"
+    <layout_panel height="354"
+                  width="355"
                   left_delta="146" 
                   top="0"
                   user_resize="false">
@@ -56,14 +56,20 @@
        length="1"
        follows="left|top|right|bottom"
        font="SansSerif"
-       height="290"
+       height="300"
        layout="topleft"
        name="chat_history"
        parse_highlights="true"
        allow_html="true" 
-       width="230">
+       width="350">
       </chat_history>
-      <line_editor follows="left|right" name="chat_editor" height="20" layout="topleft" width="225">
+      <line_editor
+       follows="left|right"
+       height="20"
+       label="To"
+       layout="topleft"
+       name="chat_editor"
+       width="345">
       </line_editor>
     </layout_panel>
   </layout_stack>
diff --git a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
index 87c4e2787f489e0387a50eefff2ec1a97dff6f56..0246e21d254d83bf6a69e9331c8b07310bb053b4 100644
--- a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
@@ -1,9 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
- name="panel_im_control_panel"
- width="180"
+ border="false"
  height="215"
- border="false">
+ name="panel_im_control_panel"
+ width="180">
+
     <avatar_list
      color="DkGray2"
      follows="left|top|right|bottom"
@@ -15,25 +16,48 @@
      opaque="false"
      show_info_btn="false"
      show_profile_btn="false"
+     show_speaking_indicator="false"
      top="10"
-     width="180" />
-    <button
-     name="call_btn"
-     label="Call"
-     left_delta="27"
-     width="125"
-     height="20" />
-    <button
-     name="end_call_btn"
-     label="End Call"
-     width="125"
-     height="20" 
-     visible="false"/>
-    <button
-     enabled="false"
-     name="voice_ctrls_btn"
-     label="Open Voice Controls"
-     width="125"
-     height="20"
-     visible="false"/>
+     width="180"/>
+
+    <panel
+     background_visible="true"
+     bg_alpha_color="0.2 0.2 0.2 1"
+     border="false"
+     bottom="1"
+     follows="left|bottom"
+     height="70"
+     left="0"
+     left_pad="0"
+     name="panel_call_buttons"
+     top_pad="0"
+     width="180">
+
+        <button
+         bottom="10"
+         height="20"
+         label="Call"
+         left_delta="28"
+         name="call_btn"
+         width="125"/>
+
+        <button
+         bottom="40"
+         height="20"
+         label="Leave Call"
+         name="end_call_btn"
+         visible="false"
+         width="125"/>
+
+        <button
+         enabled="false"
+         bottom="10"
+         height="20"
+         label="Open Voice Controls"
+         name="voice_ctrls_btn"
+         visible="false"
+         width="125"/>
+
+    </panel>
+
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
index 3358015335d8aef83d08df25d7c3cf3b5ce1a249..763dd7b922055ac2aa41c6bebc22e829e836cc65 100644
--- a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
@@ -1,9 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
- name="panel_im_control_panel"
- width="180"
+ border="false"
  height="238"
- border="false">
+ name="panel_im_control_panel"
+ width="180">
+
     <avatar_list
      color="DkGray2"
      follows="left|top|right|bottom"
@@ -15,30 +16,56 @@
      opaque="false"
      show_info_btn="false"
      show_profile_btn="false"
+     show_speaking_indicator="false"
      top="10"
-     width="180" />
-    <button
-     name="group_info_btn"
-     label="Group Info"
-     left_delta="27"
-     width="125"
-     height="20" />
+     width="180"/>
+
     <button
-     name="call_btn"
-     label="Call"
-     width="125"
-     height="20" />
-    <button
-     name="end_call_btn"
-     label="End Call"
-     width="125"
-     height="20" 
-     visible="false"/>
-    <button
-	 enabled="false"
-     name="voice_ctrls_btn"
-     label="Open Voice Controls"
-     width="125"
+     bottom_pad="0"
      height="20"
-     visible="false"/>
+     label="Group Info"
+     left_delta="28"
+     name="group_info_btn"
+     width="125"/>
+
+    <panel
+     background_visible="true"
+     bg_alpha_color="0.2 0.2 0.2 1"
+     border="false"
+     bottom="1"
+     follows="left|bottom"
+     height="70"
+     left="0"
+     left_pad="0"
+     name="panel_call_buttons"
+     top_pad="0"
+     width="180">
+
+        <button
+         bottom="10"
+         height="20"
+         label="Call Group"
+         left_delta="28"
+         name="call_btn"
+         width="125"/>
+
+        <button
+         bottom="40"
+         height="20"
+         label="Leave Call"
+         name="end_call_btn"
+         visible="false"
+         width="125"/>
+
+        <button
+         enabled="false"
+         bottom="10"
+         height="20"
+         label="Open Voice Controls"
+         name="voice_ctrls_btn"
+         visible="false"
+         width="125"/>
+
+    </panel>
+
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
index c2f9cfe6755f26d30ee6c8feb40f2b5717a4e008..f0ed94d368d0a6733d62f1ddf7c3c5d6d18bedaa 100644
--- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
@@ -128,7 +128,7 @@ background_visible="true"
                  can_resize="false"
                  expanded="true"
                  layout="topleft"
-                 name="tab_general"
+                 name="group_general_tab"
                  title="General">
          <scroll_container
          color="DkGray2"
@@ -143,11 +143,12 @@ background_visible="true"
          width="333">
             <panel
             border="false"
+         class="panel_group_general" 
              filename="panel_group_general.xml"
              layout="topleft"
              left="0"
              help_topic="group_general_tab"
-             name="general_tab"
+         name="group_general_tab_panel"
              top="0"
              width="303" />
          </scroll_container>
@@ -156,7 +157,7 @@ background_visible="true"
                  can_resize="false"
                  expanded="false"
                  layout="topleft"
-                 name="tab_roles"
+                 name="group_roles_tab"
                  title="Roles">
                <scroll_container
                   color="DkGray2"
@@ -171,11 +172,12 @@ background_visible="true"
                   width="333">
                  <panel
                  border="false"
+         class="panel_group_roles"
                   filename="panel_group_roles.xml"
                   layout="topleft"
                   left="0"
                   help_topic="group_roles_tab"
-                  name="roles_tab"
+         name="group_roles_tab_panel"
                   top="0"
              width="303" />
          </scroll_container>
@@ -184,7 +186,7 @@ background_visible="true"
                  can_resize="false"
                  expanded="false"
                  layout="topleft"
-                 name="tab_notices"
+                 name="group_notices_tab"
                  title="Notices">
             <scroll_container
                   color="DkGray2"
@@ -199,11 +201,12 @@ background_visible="true"
                   width="333">
         <panel
         border="false"
+         class="panel_group_notices"
          filename="panel_group_notices.xml"
          layout="topleft"
          left="0"
          help_topic="group_notices_tab"
-         name="notices_tab"
+         name="group_notices_tab_panel"
          top="0"
          width="303" />
          </scroll_container>
@@ -212,7 +215,7 @@ background_visible="true"
                  can_resize="false"
                  expanded="false"
                  layout="topleft"
-                 name="tab_notices"
+                 name="group_land_tab"
                  title="Land/Assets">
            <scroll_container
                   color="DkGray2"
@@ -227,11 +230,12 @@ background_visible="true"
                   width="333">
         <panel
         border="false"
+         class="panel_group_land_money"
          filename="panel_group_land_money.xml"
          layout="topleft"
          left="0"
          help_topic="group_land_money_tab"
-         name="land_money_tab"
+         name="group_land_tab_panel"
          top="0"
          width="313" />
          </scroll_container>
diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
index 0dd387842631677b7af9090edc501c16b2a766c9..c8b134cdf0d5cf95beb235d8b823b569c5306fc4 100644
--- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
@@ -1,64 +1,101 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="panel_im_control_panel"
-       width="128"
-       height="327"
-       border="false">
+<panel
+ border="false"
+ height="350"
+ name="panel_im_control_panel"
+ width="131">
 
-  <avatar_icon name="avatar_icon"
-               follows="left|top"
-               left_delta="3"
-               width="125"
-               height="125" />
+    <avatar_icon
+     follows="left|top"
+     height="125"
+     left_delta="3"
+     name="avatar_icon"
+     top="-10"
+     width="125"/>
 
-  <button name="view_profile_btn"
-          follows="left|bottom"
-          label="View Profile"
-          width="125"
-		  height="20" />
+    <text
+     follows="left|right"
+     font="SansSerifBig"
+     height="16"
+     layout="topleft"
+     name="avatar_name"
+     use_ellipses="true"
+     value="Unknown"
+     width="125" />
 
-  <button name="add_friend_btn"
-          follows="left|bottom"
-          label="Add Friend"
-          width="125"
-          height="20" />
+    <button
+     follows="left|bottom"
+     height="20"
+     label="View Profile"
+     name="view_profile_btn"
+     width="125"/>
 
-  <button name="call_btn"
-          follows="left|bottom"
-          label="Call"
-          width="125"
-          height="20" />
+    <button
+     follows="left|bottom"
+     height="20"
+     label="Add Friend"
+     name="add_friend_btn"
+     width="125"/>
 
     <button
      follows="left|bottom"
      height="20"
-     label="End Call"
-     name="end_call_btn"
-     visible="false"
-     width="125" />
+     label="Teleport"
+     name="teleport_btn"
+     width="125"/>
+
+    <button
+     follows="left|bottom"
+     height="20"
+     label="Share"
+     name="share_btn"
+     width="125"/>
 
-  <button
-	 enabled="false"
+    <button
      follows="left|bottom"
-     name="voice_ctrls_btn"
-     label="Open Voice Controls"
-     width="125"
      height="20"
-     visible="false"/>
+     label="Pay"
+     name="pay_btn"
+     width="125"/>
+
+    <panel
+     background_visible="true"
+     bg_alpha_color="0.2 0.2 0.2 1"
+     border="false"
+     bottom="1"
+     follows="left|bottom"
+     height="70"
+     left="0"
+     left_pad="0"
+     name="panel_call_buttons"
+     top_pad="0"
+     width="131">
+
+        <button
+         bottom="10"
+         height="20"
+         label="Call"
+         left_delta="3"
+         name="call_btn"
+         width="125"/>
+
+        <button
+         bottom="40"
+         height="20"
+         label="Leave Call"
+         name="end_call_btn"
+         visible="false"
+         width="125"/>
+
+        <button
+         enabled="false"
+         bottom="10"
+         height="20"
+         label="Open Voice Controls"
+         name="voice_ctrls_btn"
+         visible="false"
+         width="125"/>
 
-  <button name="teleport_btn"
-          follows="left|bottom"
-          label="Teleport"
-          width="125"
-          height="20" />
-  <button name="share_btn"
-          follows="left|bottom"
-          label="Share"
-          width="125"
-          height="20" />
-  <button name="pay_btn"
-          follows="left|bottom"
-          label="Pay"
-          width="125"
-          height="20" />
+    </panel>
 
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index ddfa6e72a3912198e05bfe32e76a4c6896d5a520..ae11f028ca781e3470e669a6c195969bfbea87c8 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -11,7 +11,7 @@
 	<icon
 	 follows="all"
 	 image_name="NavBar_BG"
-	 mouse_opaque="true"
+	 mouse_opaque="false"
 	 name="bg_icon"
 	 scale_image="true"
 	 visible="true"
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index 7e073f064d76646390b3f0a9c11df6c2f99390a6..4dc65fa7363a23af195f923b56643b0d708ca95a 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -289,33 +289,14 @@
                          left="0"
                          top="0"
                          width="275">
-                            <icon
-                             follows="top|left"
-                             height="16"
-                             image_name="parcel_drk_M"
-                             layout="topleft"
-                             left="20"
-                             name="icon_M"
-                             top="0"
-                             width="18" />
-                            <icon
-                             follows="top|left"
-                             height="16"
-                             image_name="parcel_drk_R"
-                             layout="topleft"
-                             left="20"
-                             name="icon_R"
-                             top="0"
-                             width="18" />
                             <icon
                              follows="top|left"
                              height="16"
                              image_name="parcel_drk_PG"
                              layout="topleft"
                              left="20"
-                             name="icon_PG"
+                             name="rating_icon"
                              top="0"
-                             visible="false"
                              width="18" />
                             <text
                              follows="left|top"
@@ -332,7 +313,7 @@
                              left_pad="0"
                              name="rating_value"
                              top_delta="0"
-                             value="Mature"
+                             value="unknown"
                              width="120" />
                             <icon
                              follows="top|left"
@@ -340,19 +321,9 @@
                              image_name="parcel_drk_Voice"
                              layout="topleft"
                              left="20"
-                             name="icon_Voice"
+                             name="voice_icon"
                              top_pad="5"
                              width="22" />
-                            <icon
-                             follows="top|left"
-                             height="18"
-                             image_name="parcel_drk_VoiceNo"
-                             layout="topleft"
-                             left="20"
-                             name="icon_VoiceNo"
-                             top_delta="0"
-                             visible="false"
-                             width="22" />
                             <text
                              follows="left|top"
                              height="18"
@@ -377,19 +348,9 @@
                              image_name="parcel_drk_Fly"
                              layout="topleft"
                              left="20"
-                             name="icon_Fly"
+                             name="fly_icon"
                              top_pad="3"
                              width="22" />
-                            <icon
-                             follows="top|left"
-                             height="18"
-                             image_name="parcel_drk_FlyNo"
-                             layout="topleft"
-                             left="20"
-                             name="icon_FlyNo"
-                             top_delta="0"
-                             visible="false"
-                             width="22" />
                             <text
                              follows="left|top"
                              height="16"
@@ -413,18 +374,8 @@
                              image_name="parcel_drk_Push"
                              layout="topleft"
                              left="20"
-                             name="icon_Push"
+                             name="push_icon"
                              top_pad="3"
-                             visible="false"
-                             width="22" />
-                            <icon
-                             follows="top|left"
-                             height="18"
-                             image_name="parcel_drk_PushNo"
-                             layout="topleft"
-                             left="20"
-                             name="icon_PushNo"
-                             top_delta="0"
                              width="22" />
                             <text
                              follows="left|top"
@@ -449,18 +400,9 @@
                              image_name="parcel_drk_Build"
                              layout="topleft"
                              left="20"
-                             name="icon_Build"
+                             name="build_icon"
                              top_pad="3"
                              width="22" />
-                            <icon
-                             follows="top|left"
-                             height="18"
-                             image_name="parcel_drk_BuildNo"
-                             layout="topleft"
-                             left="20"
-                             name="icon_BuildNo"
-                             top_delta="0"
-                             visible="false" />
                             <text
                              follows="left|top"
                              height="14"
@@ -484,18 +426,9 @@
                              image_name="parcel_drk_Scripts"
                              layout="topleft"
                              left="20"
-                             name="icon_Scripts"
+                             name="scripts_icon"
                              top_pad="3"
                              width="22" />
-                            <icon
-                             follows="top|left"
-                             height="18"
-                             image_name="parcel_drk_ScriptsNo"
-                             layout="topleft"
-                             left="20"
-                             name="icon_ScriptsNo"
-                             top_delta="0"
-                             visible="false" />
                             <text
                              follows="left|top"
                              height="14"
@@ -519,18 +452,9 @@
                              image_name="parcel_drk_Damage"
                              layout="topleft"
                              left="20"
-                             name="icon_Damage"
+                             name="damage_icon"
                              top_pad="7"
-                             visible="false"
                              width="22" />
-                            <icon
-                             follows="top|left"
-                             height="18"
-                             image_name="parcel_drk_DamageNo"
-                             layout="topleft"
-                             left="20"
-                             name="icon_DamageNo"
-                             top_delta="0" />
                             <text
                              follows="left|top"
                              height="14"
@@ -622,33 +546,13 @@
                          top_pad="7"
                          value="Rating:"
                          width="80" />
-                        <icon
-                         follows="top|left"
-                         height="16"
-                         image_name="parcel_drk_M"
-                         layout="topleft"
-                         left_pad="0"
-                         name="icon_M"
-                         width="18" />
-                        <icon
-                         follows="top|left"
-                         height="16"
-                         image_name="parcel_drk_R"
-                         layout="topleft"
-                         left_delta="0"
-                         name="icon_R"
-                         top_delta="0"
-                         visible="false"
-                         width="18" />
                         <icon
                          follows="top|left"
                          height="16"
                          image_name="parcel_drk_PG"
                          layout="topleft"
-                         left_delta="0"
-                         name="icon_PG"
-                         top_delta="0"
-                         visible="false"
+                         left_pad="0"
+                         name="region_rating_icon"
                          width="18" />
                         <text
                          follows="left|top|right"
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index 4b5bde690c0478dafc838c078782cae50868dda0..cbbcfe50681d5c142a523c1427ef42a7b6c02d8d 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -79,7 +79,7 @@ background_visible="true"
          left="5"
          name="teleport_btn"
          top="0"
-         width="77" />
+         width="100" />
         <button
          follows="bottom|left"
          font="SansSerifSmall"
@@ -89,18 +89,7 @@ background_visible="true"
          left_pad="5"
          name="map_btn"
          top="0"
-         width="50" />
-        <button
-         enabled="false"
-         follows="bottom|left"
-         font="SansSerifSmall"
-         height="19"
-         label="Share"
-         layout="topleft"
-         left_pad="5"
-         name="share_btn"
-         top="0"
-         width="60" />
+         width="70" />
         <button
          follows="bottom|left"
          font="SansSerifSmall"
@@ -110,7 +99,7 @@ background_visible="true"
          left_pad="5"
          name="edit_btn"
          top="0"
-         width="50" />
+         width="70" />
         <button
          follows="bottom|right"
          font="SansSerifSmall"