diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp
index f8e07913fbf342a671ee53d6d84f1784948f660f..03925f922c1182024deb2a1826f03579a5f8d6e9 100644
--- a/indra/llui/llfloaterreg.cpp
+++ b/indra/llui/llfloaterreg.cpp
@@ -367,7 +367,7 @@ std::string LLFloaterReg::declareVisibilityControl(const std::string& name)
 std::string LLFloaterReg::declareDockStateControl(const std::string& name)
 {
 	std::string controlname = getDockStateControlName(name);
-	LLUI::sSettingGroups["floater"]->declareBOOL(controlname, FALSE,
+	LLUI::sSettingGroups["floater"]->declareBOOL(controlname, TRUE,
 												 llformat("Window Docking state for %s", name.c_str()),
 												 TRUE);
 	return controlname;
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 2978ef210f38da2d74ec1d40b7498b73ea213411..cba9b09dc0b9dcb94fce39567bd487a4a544f5e0 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -238,7 +238,6 @@ set(viewer_SOURCE_FILES
     llhudrender.cpp
     llhudtext.cpp
     llhudview.cpp
-    llimcontrolpanel.cpp
     llimfloater.cpp
     llimhandler.cpp
     llimpanel.cpp
@@ -291,6 +290,7 @@ set(viewer_SOURCE_FILES
     llnotificationalerthandler.cpp
     llnotificationgrouphandler.cpp
     llnotificationmanager.cpp
+    llnotificationofferhandler.cpp
     llnotificationscripthandler.cpp
     llnotificationtiphandler.cpp
     llnotify.cpp
@@ -727,7 +727,6 @@ set(viewer_HEADER_FILES
     llhudrender.h
     llhudtext.h
     llhudview.h
-    llimcontrolpanel.h
     llimfloater.h
     llimpanel.h
     llimview.h
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 97e0aa5f4613fa2a646a87e8b9d38b26a3a3b628..67ffe54b7e61040db8c552b051af6103d3e402fe 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -57,6 +57,7 @@
 #include "llviewerobjectlist.h"
 #include "llviewermessage.h"	// for handle_lure
 #include "llviewerregion.h"
+#include "llimfloater.h"
 
 
 // static
@@ -176,7 +177,8 @@ void LLAvatarActions::startIM(const LLUUID& id)
 
 	std::string name;
 	gCacheName->getFullName(id, name);
-	gIMMgr->addSession(name, IM_NOTHING_SPECIAL, id);
+	LLUUID session_id = gIMMgr->addSession(name, IM_NOTHING_SPECIAL, id);
+	LLIMFloater::show(session_id);
 	make_ui_sound("UISndStartIM");
 }
 
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index e561507e69bc5324c317103b12056dac9ab9f37d..2ccd6b7d350555d5fce84c7f03d6dd31d6a95cb0 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -132,8 +132,7 @@ class LLChatHistoryHeader: public LLPanel
 		menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_object_icon.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
 		mPopupMenuHandleObject = menu->getHandle();
 
-		LLPanel* visible_panel = getChild<LLPanel>("im_header");
-		visible_panel->setMouseDownCallback(boost::bind(&LLChatHistoryHeader::onHeaderPanelClick, this, _2, _3, _4));
+		setMouseDownCallback(boost::bind(&LLChatHistoryHeader::onHeaderPanelClick, this, _2, _3, _4));
 
 		return LLPanel::postBuild();
 	}
@@ -290,7 +289,11 @@ mMessageSeparatorFilename(p.message_separator),
 mLeftTextPad(p.left_text_pad),
 mRightTextPad(p.right_text_pad),
 mLeftWidgetPad(p.left_widget_pad),
-mRightWidgetPad(p.right_widget_pad)
+mRightWidgetPad(p.right_widget_pad),
+mTopSeparatorPad(p.top_separator_pad),
+mBottomSeparatorPad(p.bottom_separator_pad),
+mTopHeaderPad(p.top_header_pad),
+mBottomHeaderPad(p.bottom_header_pad)
 {
 }
 
@@ -332,16 +335,30 @@ void LLChatHistory::appendWidgetMessage(const LLChat& chat, LLStyle::Params& sty
 	LLView* view = NULL;
 	std::string view_text;
 
+	LLInlineViewSegment::Params p;
+	p.force_newline = true;
+	p.left_pad = mLeftWidgetPad;
+	p.right_pad = mRightWidgetPad;
+
 	if (mLastFromName == chat.mFromName)
 	{
 		view = getSeparator();
 		view_text = "\n";
+		p.top_pad = mTopSeparatorPad;
+		p.bottom_pad = mBottomSeparatorPad;
 	}
 	else
 	{
 		view = getHeader(chat);
 		view_text = chat.mFromName + MESSAGE_USERNAME_DATE_SEPARATOR + formatCurrentTime() + '\n';
+		if (getText().size() == 0)
+			p.top_pad = 0;
+		else
+			p.top_pad = mTopHeaderPad;
+		p.bottom_pad = mBottomHeaderPad;
 	}
+	p.view = view;
+
 	//Prepare the rect for the view
 	LLRect target_rect = getDocumentView()->getRect();
 	// squeeze down the widget by subtracting padding off left and right
@@ -350,12 +367,6 @@ void LLChatHistory::appendWidgetMessage(const LLChat& chat, LLStyle::Params& sty
 	view->reshape(target_rect.getWidth(), view->getRect().getHeight());
 	view->setOrigin(target_rect.mLeft, view->getRect().mBottom);
 
-	LLInlineViewSegment::Params p;
-	p.view = view;
-	p.force_newline = true;
-	p.left_pad = mLeftWidgetPad;
-	p.right_pad = mRightWidgetPad;
-
 	appendWidget(p, view_text, false);
 
 	//Append the text message
diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h
index 92dcfdd958265b23a8fd86289a3420fba9543773..3789ebff4e94273e56fd4c2de55c5a9747790ac4 100644
--- a/indra/newview/llchathistory.h
+++ b/indra/newview/llchathistory.h
@@ -54,6 +54,14 @@ class LLChatHistory : public LLTextEditor
 			Optional<S32>			left_widget_pad;
 			//Widget right padding from the scroll rect
 			Optional<S32>			right_widget_pad;
+			//Separator top padding
+			Optional<S32>			top_separator_pad;
+			//Separator bottom padding
+			Optional<S32>			bottom_separator_pad;
+			//Header top padding
+			Optional<S32>			top_header_pad;
+			//Header bottom padding
+			Optional<S32>			bottom_header_pad;
 
 			Params()
 			:	message_header("message_header"),
@@ -61,7 +69,11 @@ class LLChatHistory : public LLTextEditor
 				left_text_pad("left_text_pad"),
 				right_text_pad("right_text_pad"),
 				left_widget_pad("left_widget_pad"),
-				right_widget_pad("right_widget_pad")
+				right_widget_pad("right_widget_pad"),
+				top_separator_pad("top_separator_pad"),
+				bottom_separator_pad("bottom_separator_pad"),
+				top_header_pad("top_header_pad"),
+				bottom_header_pad("bottom_header_pad")
 				{
 				}
 
@@ -105,9 +117,16 @@ class LLChatHistory : public LLTextEditor
 		std::string mLastFromName;
 		std::string mMessageHeaderFilename;
 		std::string mMessageSeparatorFilename;
+
 		S32 mLeftTextPad;
 		S32 mRightTextPad;
+
 		S32 mLeftWidgetPad;
 		S32 mRightWidgetPad;
+
+		S32 mTopSeparatorPad;
+		S32 mBottomSeparatorPad;
+		S32 mTopHeaderPad;
+		S32 mBottomHeaderPad;
 };
 #endif /* LLCHATHISTORY_H_ */
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 0f259b885cfe1a5d5bcc4888e7321fcf0674ab13..53c4bb32ca79b4f3295f778b6e12b425d137159e 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -211,7 +211,7 @@ LLIMChiclet::LLIMChiclet(const LLIMChiclet::Params& p)
 	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);
+	overlay_icon_rect.translate(overlay_icon_rect.getWidth()/5, overlay_icon_rect.getHeight()/5);
 	mNewMessagesIcon->setRect(overlay_icon_rect);
 	addChild(mNewMessagesIcon);
 
@@ -246,8 +246,6 @@ BOOL LLIMChiclet::handleMouseDown(S32 x, S32 y, MASK mask)
 void LLIMChiclet::draw()
 {
 	LLUICtrl::draw();
-
-	gl_rect_2d(0, getRect().getHeight(), getRect().getWidth(), 0, LLColor4(0.0f,0.0f,0.0f,1.f), FALSE);
 }
 
 // static
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 66a3e3e85c03df90ee9f53e379ffd983eb6e8beb..7e8701bf212f2342ba277c140912ade1c6270192 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1604,7 +1604,6 @@ LLUUID LLIMMgr::addSession(
 		LLIMModel::getInstance()->newSession(session_id, name, dialog, other_participant_id, ids);
 	}
 
-	LLIMFloater::show(session_id);
 
 	//*TODO remove this "floater" thing when Communicate Floater's gone
 	LLFloaterIMPanel* floater = findFloaterBySession(session_id);
diff --git a/indra/newview/lljoystickbutton.cpp b/indra/newview/lljoystickbutton.cpp
index 4fd3b7bddc8d9287a82f7a167e755cf83c949dc3..bd6702a0b2f6f9dabafca900cf460caf658fdb9d 100644
--- a/indra/newview/lljoystickbutton.cpp
+++ b/indra/newview/lljoystickbutton.cpp
@@ -517,43 +517,52 @@ void LLJoystickCameraRotate::draw()
 	LLGLSUIDefault gls_ui;
 
 	getImageUnselected()->draw( 0, 0 );
+	LLPointer<LLUIImage> image = getImageSelected();
 
 	if( mInTop )
 	{
-		drawRotatedImage( getImageSelected()->getImage(), 0 );
+		drawRotatedImage( getImageSelected(), 0 );
 	}
 
 	if( mInRight )
 	{
-		drawRotatedImage( getImageSelected()->getImage(), 1 );
+		drawRotatedImage( getImageSelected(), 1 );
 	}
 
 	if( mInBottom )
 	{
-		drawRotatedImage( getImageSelected()->getImage(), 2 );
+		drawRotatedImage( getImageSelected(), 2 );
 	}
 
 	if( mInLeft )
 	{
-		drawRotatedImage( getImageSelected()->getImage(), 3 );
+		drawRotatedImage( getImageSelected(), 3 );
 	}
 }
 
 // Draws image rotated by multiples of 90 degrees
-void LLJoystickCameraRotate::drawRotatedImage( LLTexture* image, S32 rotations )
+void LLJoystickCameraRotate::drawRotatedImage( LLPointer<LLUIImage> image, S32 rotations )
 {
 	S32 width = image->getWidth();
 	S32 height = image->getHeight();
-
+	LLTexture* texture = image->getImage();
+
+	/*
+	 * Scale  texture coordinate system 
+	 * to handle the different between image size and size of texture.
+	 * If we will use default matrix, 
+	 * it may break texture mapping after rotation.
+	 * see EXT-2023 Camera floater: arrows became shifted when pressed.
+	 */ 
 	F32 uv[][2] = 
 	{
-		{ 1.f, 1.f },
-		{ 0.f, 1.f },
+		{ (F32)width/texture->getWidth(), (F32)height/texture->getHeight() },
+		{ 0.f, (F32)height/texture->getHeight() },
 		{ 0.f, 0.f },
-		{ 1.f, 0.f }
+		{ (F32)width/texture->getWidth(), 0.f }
 	};
 
-	gGL.getTexUnit(0)->bind(image);
+	gGL.getTexUnit(0)->bind(texture);
 
 	gGL.color4fv(UI_VERTEX_COLOR.mV);
 	
diff --git a/indra/newview/lljoystickbutton.h b/indra/newview/lljoystickbutton.h
index 8caef30fa4b10609a56ce2a3622c14eafd969f6b..4c657913b8c3a6fadc782182b3f43fcaec7f3643 100644
--- a/indra/newview/lljoystickbutton.h
+++ b/indra/newview/lljoystickbutton.h
@@ -150,7 +150,7 @@ class LLJoystickCameraRotate
 protected:
 	F32				getOrbitRate();
 	virtual void	updateSlop();
-	void			drawRotatedImage( LLTexture* image, S32 rotations );
+	void			drawRotatedImage( LLPointer<LLUIImage> image, S32 rotations );
 
 protected:
 	BOOL			mInLeft;
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 81d033d7f98da7ae1cfae2e8d53f53b259321308..974291a54e8eaaf30fe54a366d10f0fcd50dab2d 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -61,7 +61,7 @@
 static const S32 RESIZE_BAR_THICKNESS = 3;
 
 LLNearbyChat::LLNearbyChat(const LLSD& key) 
-	: LLDockableFloater(NULL, key)
+	: LLDockableFloater(NULL, false, key)
 	,mChatHistory(NULL)
 {
 	
@@ -107,12 +107,14 @@ BOOL LLNearbyChat::postBuild()
 
 void    LLNearbyChat::applySavedVariables()
 {
-
 	if (mRectControl.size() > 1)
 	{
 		const LLRect& rect = LLUI::sSettingGroups["floater"]->getRect(mRectControl);
-		reshape(rect.getWidth(), rect.getHeight());
-		setRect(rect);
+		if(!rect.isEmpty() && rect.isValid())
+		{
+			reshape(rect.getWidth(), rect.getHeight());
+			setRect(rect);
+		}
 	}
 
 
diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h
index cd4e640ec4896b060430b9e348d52a2378ca03a4..23998a0e5d1bbef91e4ff232d495c41ac7f1df51 100644
--- a/indra/newview/llnotificationhandler.h
+++ b/indra/newview/llnotificationhandler.h
@@ -53,7 +53,8 @@ typedef enum e_notification_type
 	NT_GROUPCHAT, 
 	NT_NEARBYCHAT, 
 	NT_ALERT,
-	NT_ALERTMODAL
+	NT_ALERTMODAL,
+	NT_OFFER
 } ENotificationType;
 
 /**
@@ -231,6 +232,27 @@ class LLAlertHandler : public LLSysHandler
 	bool	mIsModal;
 };
 
+/**
+ * Handler for offers notices.
+ * It manages life time of offer notices.
+ */
+class LLOfferHandler : public LLSysHandler
+{
+public:
+	LLOfferHandler(e_notification_type type, const LLSD& id);
+	virtual ~LLOfferHandler();
+
+	// base interface functions
+	virtual bool processNotification(const LLSD& notify);
+
+protected:
+	virtual void onDeleteToast(LLToast* toast);
+	virtual void initChannel();
+
+	// own handlers
+	void onRejectToast(LLUUID& id);
+};
+
 }
 #endif
 
diff --git a/indra/newview/llnotificationmanager.cpp b/indra/newview/llnotificationmanager.cpp
index 81a6b32917dec999e172db4b687d5ce3a07d10b7..1083cf3634be72326ebbd7d2c6b6a1471483c2fd 100644
--- a/indra/newview/llnotificationmanager.cpp
+++ b/indra/newview/llnotificationmanager.cpp
@@ -63,6 +63,7 @@ void LLNotificationManager::init()
 	LLNotificationChannel::buildChannel("Alerts", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "alert"));
 	LLNotificationChannel::buildChannel("AlertModal", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "alertmodal"));
 	LLNotificationChannel::buildChannel("IM Notifications", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "notifytoast"));
+	LLNotificationChannel::buildChannel("Offer", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "offer"));
   
 	LLNotifications::instance().getChannel("Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
 	LLNotifications::instance().getChannel("NotificationTips")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
@@ -70,6 +71,7 @@ void LLNotificationManager::init()
 	LLNotifications::instance().getChannel("Alerts")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
 	LLNotifications::instance().getChannel("AlertModal")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
 	LLNotifications::instance().getChannel("IM Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
+	LLNotifications::instance().getChannel("Offer")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
 
 	mNotifyHandlers["notify"] = boost::shared_ptr<LLEventHandler>(new LLScriptHandler(NT_NOTIFY, LLSD()));
 	mNotifyHandlers["notifytip"] =  boost::shared_ptr<LLEventHandler>(new LLTipHandler(NT_NOTIFY, LLSD()));
@@ -80,6 +82,7 @@ void LLNotificationManager::init()
 	mNotifyHandlers["notifytoast"] = boost::shared_ptr<LLEventHandler>(new LLIMHandler(NT_IMCHAT, LLSD()));
 	
 	mNotifyHandlers["nearbychat"] = boost::shared_ptr<LLEventHandler>(new LLNearbyChatHandler(NT_NEARBYCHAT, LLSD()));
+	mNotifyHandlers["offer"] = boost::shared_ptr<LLEventHandler>(new LLOfferHandler(NT_OFFER, LLSD()));
 }
 
 //--------------------------------------------------------------------------
diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8e3a44682c886cef42666464f4ebfa05310dc52a
--- /dev/null
+++ b/indra/newview/llnotificationofferhandler.cpp
@@ -0,0 +1,153 @@
+/**
+ * @file llnotificationofferhandler.cpp
+ * @brief Notification Handler Class for Simple Notifications and Notification Tips
+ *
+ * $LicenseInfo:firstyear=2000&license=viewergpl$
+ *
+ * Copyright (c) 2000-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" // must be first include
+
+#include "llnotificationhandler.h"
+#include "lltoastnotifypanel.h"
+#include "llviewercontrol.h"
+#include "llviewerwindow.h"
+#include "llimview.h"
+#include "llimfloater.h"
+#include "llnotificationmanager.h"
+
+using namespace LLNotificationsUI;
+
+//--------------------------------------------------------------------------
+LLOfferHandler::LLOfferHandler(e_notification_type type, const LLSD& id)
+{
+	mType = type;
+
+	// Getting a Channel for our notifications
+	mChannel = LLChannelManager::getInstance()->createNotificationChannel();
+	mChannel->setControlHovering(true);
+
+	LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel);
+	if(channel)
+		channel->setOnRejectToastCallback(boost::bind(&LLOfferHandler::onRejectToast, this, _1));
+}
+
+//--------------------------------------------------------------------------
+LLOfferHandler::~LLOfferHandler()
+{
+}
+
+//--------------------------------------------------------------------------
+void LLOfferHandler::initChannel()
+{
+	S32 channel_right_bound = gViewerWindow->getWorldViewRect().mRight - gSavedSettings.getS32("NotificationChannelRightMargin");
+	S32 channel_width = gSavedSettings.getS32("NotifyBoxWidth");
+	mChannel->init(channel_right_bound - channel_width, channel_right_bound);
+}
+
+//--------------------------------------------------------------------------
+bool LLOfferHandler::processNotification(const LLSD& notify)
+{
+	if(!mChannel)
+	{
+		return false;
+	}
+
+	LLNotificationPtr notification = LLNotifications::instance().find(notify["id"].asUUID());
+
+	if(!notification)
+		return false;
+
+	// arrange a channel on a screen
+	if(!mChannel->getVisible())
+	{
+		initChannel();
+	}
+
+	if(notify["sigtype"].asString() == "add" || notify["sigtype"].asString() == "change")
+	{
+		// add message to IM
+		LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, notification->getPayload()["from_id"]);
+		if (!LLIMMgr::instance().hasSession(session_id))
+		{
+			// create session with faked type to avoid creating chicklets
+			session_id = LLIMMgr::instance().addSession(
+					notification->getSubstitutions()["NAME"], IM_NOTHING_SPECIAL,
+					notification->getPayload()["from_id"]);
+		}
+		LLIMMgr::instance().addMessage(session_id, LLUUID(),
+				notification->getSubstitutions()["NAME"],
+				notification->getMessage());
+
+		LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(notification);
+
+		LLToast::Params p;
+		p.notif_id = notification->getID();
+		p.notification = notification;
+		p.panel = notify_box;
+		p.on_delete_toast = boost::bind(&LLOfferHandler::onDeleteToast, this, _1);
+
+		LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel);
+		if(channel)
+			channel->addToast(p);
+
+		// send a signal to the counter manager
+		mNewNotificationSignal();
+	}
+	else if (notify["sigtype"].asString() == "delete")
+	{
+		mChannel->killToastByNotificationID(notification->getID());
+	}
+
+	return true;
+}
+
+//--------------------------------------------------------------------------
+
+void LLOfferHandler::onDeleteToast(LLToast* toast)
+{
+	// send a signal to the counter manager
+	mDelNotificationSignal();
+
+	// send a signal to a listener to let him perform some action
+	// in this case listener is a SysWellWindow and it will remove a corresponding item from its list
+	mNotificationIDSignal(toast->getNotificationID());
+}
+
+//--------------------------------------------------------------------------
+void LLOfferHandler::onRejectToast(LLUUID& id)
+{
+	LLNotificationPtr notification = LLNotifications::instance().find(id);
+
+	if (notification
+			&& LLNotificationManager::getInstance()->getHandlerForNotification(
+					notification->getType()) == this)
+	{
+		LLNotifications::instance().cancel(notification);
+	}
+}
diff --git a/indra/newview/llnotificationscripthandler.cpp b/indra/newview/llnotificationscripthandler.cpp
index 070af432d6cd48c781cb341689acf6649fe41348..dac7a4ca3a4eecce8a7a83af4305bf813ff3eb0c 100644
--- a/indra/newview/llnotificationscripthandler.cpp
+++ b/indra/newview/llnotificationscripthandler.cpp
@@ -37,6 +37,7 @@
 #include "lltoastnotifypanel.h"
 #include "llviewercontrol.h"
 #include "llviewerwindow.h"
+#include "llnotificationmanager.h"
 
 using namespace LLNotificationsUI;
 
@@ -129,7 +130,9 @@ void LLScriptHandler::onRejectToast(LLUUID& id)
 {
 	LLNotificationPtr notification = LLNotifications::instance().find(id);
 
-	if(notification)
+	if (notification
+			&& LLNotificationManager::getInstance()->getHandlerForNotification(
+					notification->getType()) == this)
 	{
 		LLNotifications::instance().cancel(notification);
 	}
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 10f015774afdc471db00d00662292435020cb608..61f23961687240f51727093fef94c52036174b38 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -291,6 +291,7 @@ void LLPanelGroup::update(LLGroupChange gc)
 	if(gdatap)
 	{
 		childSetValue("group_name", gdatap->mName);
+		childSetToolTip("group_name",gdatap->mName);
 
 		LLButton* btn_join = getChild<LLButton>("btn_join");
 		LLUICtrl* join_text = getChild<LLUICtrl>("join_cost_text");
@@ -337,7 +338,10 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
 
 	LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mID);
 	if(gdatap)
+	{
 		childSetValue("group_name", gdatap->mName);
+		childSetToolTip("group_name",gdatap->mName);
+	}
 
 	LLButton* button_apply = findChild<LLButton>("btn_apply");
 	LLButton* button_refresh = findChild<LLButton>("btn_refresh");
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 1ad4327b76e4e81d5e0235c2c4ab0c7109d9f544..c51654628282e8a6c19bee618e0326cd54844da2 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -101,6 +101,8 @@ BOOL LLLandmarksPanel::postBuild()
 	initLandmarksInventroyPanel();
 	initMyInventroyPanel();
 	initLibraryInventroyPanel();
+	getChild<LLAccordionCtrlTab>("tab_favorites")->setDisplayChildren(true);
+	getChild<LLAccordionCtrlTab>("tab_landmarks")->setDisplayChildren(true);
 
 	gIdleCallbacks.addFunction(LLLandmarksPanel::doIdle, this);
 	return TRUE;
@@ -422,6 +424,7 @@ void LLLandmarksPanel::initAccordion(const std::string& accordion_tab_name, LLIn
 	mAccordionTabs.push_back(accordion_tab);
 	accordion_tab->setDropDownStateChangedCallback(
 		boost::bind(&LLLandmarksPanel::onAccordionExpandedCollapsed, this, _2, inventory_list));
+	accordion_tab->setDisplayChildren(false);
 }
 
 void LLLandmarksPanel::onAccordionExpandedCollapsed(const LLSD& param, LLInventorySubTreePanel* inventory_list)
@@ -618,21 +621,19 @@ void LLLandmarksPanel::onClipboardAction(const LLSD& userdata) const
 
 void LLLandmarksPanel::onFoldingAction(const LLSD& userdata)
 {
-	LLFolderView* landmarks_folder = mLandmarksInventoryPanel->getRootFolder();
-	LLFolderView* fav_folder = mFavoritesInventoryPanel->getRootFolder();
+	if(!mCurrentSelectedList) return;
+
+	LLFolderView* root_folder = mCurrentSelectedList->getRootFolder();
 	std::string command_name = userdata.asString();
 
 	if ("expand_all" == command_name)
 	{
-		landmarks_folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN);
-		fav_folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN);
-		landmarks_folder->arrangeAll();
-		fav_folder->arrangeAll();
+		root_folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN);
+		root_folder->arrangeAll();
 	}
 	else if ("collapse_all" == command_name)
 	{
-		landmarks_folder->closeAllFolders();
-		fav_folder->closeAllFolders();
+		root_folder->closeAllFolders();
 	}
 	else if ( "sort_by_date" == command_name)
 	{
@@ -643,9 +644,6 @@ void LLLandmarksPanel::onFoldingAction(const LLSD& userdata)
 	}
 	else
 	{
-		if(!mCurrentSelectedList) return;
-
-		LLFolderView* root_folder = mCurrentSelectedList->getRootFolder();
 		root_folder->doToSelected(&gInventory, userdata);
 	}
 }
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 2f8fae0f5deedd58e40ca7f97422c2f521478da6..c8bb3d5353c2a70f64b250c22d9952d0348fa41a 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -454,7 +454,7 @@ BOOL LLPanelPeople::postBuild()
 	mNearbyList->setCommitCallback(boost::bind(&LLPanelPeople::onAvatarListCommitted, this, mNearbyList));
 	mRecentList->setCommitCallback(boost::bind(&LLPanelPeople::onAvatarListCommitted, this, mRecentList));
 
-	mGroupList->setDoubleClickCallback(boost::bind(&LLPanelPeople::onGroupInfoButtonClicked, this));
+	mGroupList->setDoubleClickCallback(boost::bind(&LLPanelPeople::onChatButtonClicked, this));
 	mGroupList->setCommitCallback(boost::bind(&LLPanelPeople::updateButtons, this));
 
 	LLAccordionCtrlTab* accordion_tab = getChild<LLAccordionCtrlTab>("tab_all");
diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp
index 103f0416865d93a418e3ebe068e8d9950d036a96..f5c4f89702b88bbf16e808820c0a2e895e6cefdd 100644
--- a/indra/newview/llpanelpick.cpp
+++ b/indra/newview/llpanelpick.cpp
@@ -413,6 +413,8 @@ BOOL LLPanelPickEdit::postBuild()
 	childSetAction(XML_BTN_SAVE, boost::bind(&LLPanelPickEdit::onClickSave, this));
 	childSetAction("set_to_curr_location_btn", boost::bind(&LLPanelPickEdit::onClickSetLocation, this));
 
+	initTexturePickerMouseEvents();
+
 	return TRUE;
 }
 
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index b2a9f6f25133771f253dca4bbe1d7ef5f6eb00df..81f4f1f569adef3e2a0a4e6ca34e34b1db9892c0 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -55,6 +55,23 @@
 
 static LLRegisterPanelClassWrapper<LLPanelPlaceProfile> t_place_profile("panel_place_profile");
 
+// Statics for textures filenames
+static std::string icon_pg;
+static std::string icon_m;
+static std::string icon_r;
+static std::string icon_voice;
+static std::string icon_voice_no;
+static std::string icon_fly;
+static std::string icon_fly_no;
+static std::string icon_push;
+static std::string icon_push_no;
+static std::string icon_build;
+static std::string icon_build_no;
+static std::string icon_scripts;
+static std::string icon_scripts_no;
+static std::string icon_damage;
+static std::string icon_damage_no;
+
 LLPanelPlaceProfile::LLPanelPlaceProfile()
 :	LLPanelPlaceInfo(),
 	mForSalePanel(NULL),
@@ -119,6 +136,22 @@ BOOL LLPanelPlaceProfile::postBuild()
 	mResaleText = getChild<LLTextEditor>("resale");
 	mSaleToText = getChild<LLTextBox>("sale_to");
 
+	icon_pg = getString("icon_PG");
+	icon_m = getString("icon_M");
+	icon_r = getString("icon_R");
+	icon_voice = getString("icon_Voice");
+	icon_voice_no = getString("icon_VoiceNo");
+	icon_fly = getString("icon_Fly");
+	icon_fly_no = getString("icon_FlyNo");
+	icon_push = getString("icon_Push");
+	icon_push_no = getString("icon_PushNo");
+	icon_build = getString("icon_Build");
+	icon_build_no = getString("icon_BuildNo");
+	icon_scripts = getString("icon_Scripts");
+	icon_scripts_no = getString("icon_ScriptsNo");
+	icon_damage = getString("icon_Damage");
+	icon_damage_no = getString("icon_DamageNo");
+
 	return TRUE;
 }
 
@@ -231,22 +264,22 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 	case SIM_ACCESS_MATURE:
 		parcel_data.flags = 0x1;
 
-		mParcelRatingIcon->setValue("parcel_drk_M");
-		mRegionRatingIcon->setValue("parcel_drk_M");
+		mParcelRatingIcon->setValue(icon_m);
+		mRegionRatingIcon->setValue(icon_m);
 		break;
 
 	case SIM_ACCESS_ADULT:
 		parcel_data.flags = 0x2;
 
-		mParcelRatingIcon->setValue("parcel_drk_R");
-		mRegionRatingIcon->setValue("parcel_drk_R");
+		mParcelRatingIcon->setValue(icon_r);
+		mRegionRatingIcon->setValue(icon_r);
 		break;
 
 	default:
 		parcel_data.flags = 0;
 
-		mParcelRatingIcon->setValue("parcel_drk_PG");
-		mRegionRatingIcon->setValue("parcel_drk_PG");
+		mParcelRatingIcon->setValue(icon_pg);
+		mRegionRatingIcon->setValue(icon_pg);
 	}
 
 	std::string rating = LLViewerRegion::accessToString(sim_access);
@@ -270,45 +303,45 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 	// Processing parcel characteristics
 	if (parcel->getParcelFlagAllowVoice())
 	{
-		mVoiceIcon->setValue("parcel_drk_Voice");
+		mVoiceIcon->setValue(icon_voice);
 		mVoiceText->setText(on);
 	}
 	else
 	{
-		mVoiceIcon->setValue("parcel_drk_VoiceNo");
+		mVoiceIcon->setValue(icon_voice_no);
 		mVoiceText->setText(off);
 	}
 
 	if (!region->getBlockFly() && parcel->getAllowFly())
 	{
-		mFlyIcon->setValue("parcel_drk_Fly");
+		mFlyIcon->setValue(icon_fly);
 		mFlyText->setText(on);
 	}
 	else
 	{
-		mFlyIcon->setValue("parcel_drk_FlyNo");
+		mFlyIcon->setValue(icon_fly_no);
 		mFlyText->setText(off);
 	}
 
 	if (region->getRestrictPushObject() || parcel->getRestrictPushObject())
 	{
-		mPushIcon->setValue("parcel_drk_PushNo");
+		mPushIcon->setValue(icon_push_no);
 		mPushText->setText(off);
 	}
 	else
 	{
-		mPushIcon->setValue("parcel_drk_Push");
+		mPushIcon->setValue(icon_push);
 		mPushText->setText(on);
 	}
 
 	if (parcel->getAllowModify())
 	{
-		mBuildIcon->setValue("parcel_drk_Build");
+		mBuildIcon->setValue(icon_build);
 		mBuildText->setText(on);
 	}
 	else
 	{
-		mBuildIcon->setValue("parcel_drk_BuildNo");
+		mBuildIcon->setValue(icon_build_no);
 		mBuildText->setText(off);
 	}
 
@@ -316,23 +349,23 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 	   (region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) ||
 	   !parcel->getAllowOtherScripts())
 	{
-		mScriptsIcon->setValue("parcel_drk_ScriptsNo");
+		mScriptsIcon->setValue(icon_scripts_no);
 		mScriptsText->setText(off);
 	}
 	else
 	{
-		mScriptsIcon->setValue("parcel_drk_Scripts");
+		mScriptsIcon->setValue(icon_scripts);
 		mScriptsText->setText(on);
 	}
 
 	if (region->getAllowDamage() || parcel->getAllowDamage())
 	{
-		mDamageIcon->setValue("parcel_drk_Damage");
+		mDamageIcon->setValue(icon_damage);
 		mDamageText->setText(on);
 	}
 	else
 	{
-		mDamageIcon->setValue("parcel_drk_DamageNo");
+		mDamageIcon->setValue(icon_damage_no);
 		mDamageText->setText(off);
 	}
 
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 437af1c4e712494ea590b895b41530f5248dca83..a34f029095b6f2be6297b6aaffe0bbed8884616c 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -71,9 +71,10 @@ class LLTeleportHistoryFlatItem : public LLPanel
 
 	static void showPlaceInfoPanel(S32 index);
 private:
-	void onInfoBtnClick();
+	void onProfileBtnClick();
 
-	LLButton* mInfoBtn;
+	LLButton* mProfileBtn;
+	
 	LLTeleportHistoryPanel::ContextMenu *mContextMenu;
 
 	S32 mIndex;
@@ -95,8 +96,9 @@ BOOL LLTeleportHistoryFlatItem::postBuild()
 	LLTextBox *region = getChild<LLTextBox>("region");
 	region->setValue(mRegionName);
 
-	mInfoBtn = getChild<LLButton>("info_btn");
-	mInfoBtn->setClickedCallback(boost::bind(&LLTeleportHistoryFlatItem::onInfoBtnClick, this));
+	mProfileBtn = getChild<LLButton>("profile_btn");
+        
+	mProfileBtn->setClickedCallback(boost::bind(&LLTeleportHistoryFlatItem::onProfileBtnClick, this));
 
 	return true;
 }
@@ -111,7 +113,7 @@ void LLTeleportHistoryFlatItem::setValue(const LLSD& value)
 void LLTeleportHistoryFlatItem::onMouseEnter(S32 x, S32 y, MASK mask)
 {
 	childSetVisible("hovered_icon", true);
-	mInfoBtn->setVisible(true);
+	mProfileBtn->setVisible(true);
 
 	LLPanel::onMouseEnter(x, y, mask);
 }
@@ -119,7 +121,7 @@ void LLTeleportHistoryFlatItem::onMouseEnter(S32 x, S32 y, MASK mask)
 void LLTeleportHistoryFlatItem::onMouseLeave(S32 x, S32 y, MASK mask)
 {
 	childSetVisible("hovered_icon", false);
-	mInfoBtn->setVisible(false);
+	mProfileBtn->setVisible(false);
 
 	LLPanel::onMouseLeave(x, y, mask);
 }
@@ -142,7 +144,7 @@ void LLTeleportHistoryFlatItem::showPlaceInfoPanel(S32 index)
 	LLSideTray::getInstance()->showPanel("panel_places", params);
 }
 
-void LLTeleportHistoryFlatItem::onInfoBtnClick()
+void LLTeleportHistoryFlatItem::onProfileBtnClick()
 {
 	LLTeleportHistoryFlatItem::showPlaceInfoPanel(mIndex);
 }
diff --git a/indra/newview/llscreenchannel.h b/indra/newview/llscreenchannel.h
index 987bc4b596aaea6d8671eb8bd30c4e807b45bf7e..fd31690622f8b65ad63a16c7de08f5bb7d184b04 100644
--- a/indra/newview/llscreenchannel.h
+++ b/indra/newview/llscreenchannel.h
@@ -204,8 +204,7 @@ class LLScreenChannel : public LLScreenChannelBase
 	// signal on rejecting of a toast event
 	typedef boost::function<void (LLUUID id)> reject_tost_callback_t;
 	typedef boost::signals2::signal<void (LLUUID id)> reject_tost_signal_t;
-	reject_tost_signal_t mRejectToastSignal;	
-	boost::signals2::connection setOnRejectToastCallback(reject_tost_callback_t cb) { return mRejectToastSignal.connect(cb); }
+	reject_tost_signal_t mRejectToastSignal; boost::signals2::connection setOnRejectToastCallback(reject_tost_callback_t cb) { return mRejectToastSignal.connect(cb); }
 
 private:
 	struct ToastElem
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index c25541842967c8dc7007672666eaede8d8b5f74d..723ac0fc33a203ec58404d4ab9a37df0fdb445c4 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -66,6 +66,7 @@ BOOL LLSysWellWindow::postBuild()
 	// init connections to the list's update events
 	connectListUpdaterToSignal("notify");
 	connectListUpdaterToSignal("groupnotify");
+	connectListUpdaterToSignal("offer");
 
 	// get a corresponding channel
 	initChannel();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index d42c4372dc3e0080dd08e6c7f211802097f2ed95..b30acd47f1f6b562b992977638acd5ae0a832d35 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -3442,26 +3442,13 @@ void handle_show_side_tray()
 	root->addChild(side_tray);
 }
 
-class LLSelfFriends : public view_listener_t
+class LLShowPanelPeopleTab : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
 	{
-		// Open "Friends" tab of the "People" panel in side tray.
+		// Open tab of the "People" panel in side tray.
 		LLSD param;
-		param["people_panel_tab_name"] = "friends_panel";
-
-		LLSideTray::getInstance()->showPanel("panel_people", param);
-		return true;
-	}
-};
-
-class LLSelfGroups : public view_listener_t
-{
-	bool handleEvent(const LLSD& userdata)
-	{
-		// Open "Groups" tab of the "People" panel in side tray.
-		LLSD param;
-		param["people_panel_tab_name"] = "groups_panel";
+		param["people_panel_tab_name"] = userdata.asString();
 		LLSideTray::getInstance()->showPanel("panel_people", param);
 		return true;
 	}
@@ -7940,8 +7927,7 @@ void initialize_menus()
 	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");
+	view_listener_t::addMenu( new LLShowPanelPeopleTab(), "SideTray.PanelPeopleTab");
 
 	 // Avatar pie menu
 	view_listener_t::addMenu(new LLObjectMute(), "Avatar.Mute");
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
index ce5ee83f55627d163fcdfd62f3f76230df13ba26..3d65878cf8602f8ad6b8dc9c43ab3baf04bc1a14 100644
--- a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
@@ -36,13 +36,14 @@
    label="My Friends"
    name="my_friends">
     <menu_item_call.on_click
-     function="Self.Friends"
-     parameter="" />
+    function="SideTray.PanelPeopleTab"
+    parameter="friends_panel" />
   </menu_item_call>
   <menu_item_call
    label="My Groups"
    name="my_groups">
     <menu_item_call.on_click
-     function="Self.Groups" />
+     function="SideTray.PanelPeopleTab"
+     parameter="groups_panel" />
   </menu_item_call>
 </menu>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 3f63f493b14b581254b85c79beb0a7e24104ecf9..ebdfb01787929e92bdbe199732bb1faca29d7ea2 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -114,25 +114,22 @@
      layout="topleft"
      name="Communicate"
      tear_off="true">
-        <menu_item_check
+        <menu_item_call
          label="My Friends"
          layout="topleft"
          name="My Friends"
          shortcut="control|shift|F">
-            <menu_item_check.on_check
-             function="Floater.Visible"
-             parameter="contacts.friends" />
-            <menu_item_check.on_click
-             function="Floater.Toggle"
-             parameter="contacts.friends" />
-        </menu_item_check>
+            <menu_item_call.on_click
+             function="SideTray.PanelPeopleTab"
+             parameter="friends_panel" />
+            </menu_item_call>
         <menu_item_call
          label="My Groups"
          layout="topleft"
          name="My Groups">
             <menu_item_call.on_click
-             function="Floater.Show"
-             parameter="contacts.groups" />
+             function="SideTray.PanelPeopleTab"
+             parameter="groups_panel" />
         </menu_item_call>
         <menu_item_separator
          layout="topleft" />
@@ -155,18 +152,15 @@
              function="Floater.Toggle"
              parameter="nearby_chat" />
         </menu_item_check>
-        <menu_item_check
-         label="Nearby Speakers"
+        <menu_item_call
+         label="Nearby People"
          layout="topleft"
          name="Active Speakers"
          shortcut="control|shift|A">
-            <menu_item_check.on_check
-             function="Floater.Visible"
-             parameter="active_speakers" />
-            <menu_item_check.on_click
-             function="Floater.Toggle"
-             parameter="active_speakers" />
-        </menu_item_check>
+            <menu_item_call.on_click
+             function="SideTray.PanelPeopleTab"
+             parameter="nearby_panel" />
+            </menu_item_call>
         <menu_item_check
          label="Nearby Media"
          layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index babed28f10eaac707b0fd7d5286631dd2f3b9dbe..f26a4d09d4567a60ca1c9b4a7d475c50243c5b84 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -4982,7 +4982,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you a
   <notification
    icon="notify.tga"
    name="UserGiveItem"
-   type="notify">
+   type="offer">
 [NAME] has given you a [OBJECTTYPE] named &apos;[OBJECTNAME]&apos;.
     <form name="form">
       <button
@@ -5028,7 +5028,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you a
   <notification
    icon="notify.tga"
    name="TeleportOffered"
-   type="notify">
+   type="offer">
 [NAME] has offered to teleport you to their location:
 
 [MESSAGE]
@@ -5065,7 +5065,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you a
   <notification
    icon="notify.tga"
    name="OfferFriendship"
-   type="notify">
+   type="offer">
 [NAME] is offering friendship.
 
 [MESSAGE]
@@ -5105,7 +5105,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you a
   <notification
    icon="notify.tga"
    name="FriendshipAccepted"
-   type="notify">
+   type="offer">
 [NAME] accepted your friendship offer.
   </notification>
 
diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml
index a9f622e018324fbd9cb855a1342f8fbf073dbb97..64519b2571543aabb8d9d9134471b171009de1c2 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml
@@ -1,53 +1,44 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
+ background_visible="true"
+ bevel_style="in"
+ bg_alpha_color="black"
  follows="left|top|right"
- height="57"
- label="im_header_container"
+ height="20"
+ label="im_header"
  layout="topleft"
- left="8"
- name="im_header_container">
-    <panel
-     background_visible="true"
-     bevel_style="in"
-     bg_alpha_color="black"
-     follows="left|top|right"
-     height="30"
-     label="im_header"
+ name="im_header" >
+    <avatar_icon
+     follows="left"
+     height="16"
+     image_name="icon_avatar_online.tga"
      layout="topleft"
-     name="im_header"
-     top_pad="17">
-        <avatar_icon
-         follows="left"
-         height="20"
-         image_name="icon_avatar_online.tga"
-         layout="topleft"
-         left="5"
-         mouse_opaque="true"
-         name="avatar_icon"
-         top="5"
-         width="20" />
-        <text
-         follows="left|right"
-         font="SansSerifBigBold"
-         height="20"
-         layout="topleft"
-         left_pad="10"
-         right="-50"
-         name="user_name"
-         text_color="white"
-         top="5"
-         value="Darth Vader"
-         use_ellipses="true" />
-        <text
-         follows="right"
-         font="SansSerifBig"
-         height="20"
-         layout="topleft"
-         name="time_box"
-         right="0"
-         text_color="white"
-         top="5"
-         value="23:30"
-         width="50" />
-    </panel>
+     left="2"
+     mouse_opaque="true"
+     name="avatar_icon"
+     top="2"
+     width="16" />
+    <text
+     follows="left|right"
+     font="SansSerifBigBold"
+     height="20"
+     layout="topleft"
+     left_pad="6"
+     right="-50"
+     name="user_name"
+     text_color="white"
+     top="3"
+     value="Darth Vader"
+     use_ellipses="true" />
+    <text
+     follows="right"
+     font="SansSerifBig"
+     height="20"
+     layout="topleft"
+     name="time_box"
+     right="0"
+     text_color="white"
+     top="3"
+     value="23:30"
+     width="50" />
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_chat_separator.xml b/indra/newview/skins/default/xui/en/panel_chat_separator.xml
index bacc750e863cb7f441efc616b12029a9ac807323..d0a2ddb28913f77d21ebebc5ef57b06fddc097e6 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_separator.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_separator.xml
@@ -1,16 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
+ background_visible="true"
+ bg_alpha_color="black"
  follows="left|right|top"
- height="9"
+ height="1"
  layout="topleft"
- left="8"
- name="chat_separator_container">
-    <panel
-     background_visible="true"
-     bg_alpha_color="black"
-     follows="left|right|top"
-     height="1"
-     layout="topleft"
-     name="chat_separator_panel"
-     top_pad="3" />
-</panel>
+ name="chat_separator_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 282b3f3e55471f8035a867e09621a51fdc5a29c0..f4a212ba0a6def2276b0f6fae7922b8e6139f86e 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
@@ -64,9 +64,9 @@
      top="20"
      left="10"
      name="pick_snapshot" />
-          <button
+          <icon
            height="18"
-           image_overlay="AddItem_Off"
+           image_name="AddItem_Off"
            layout="topleft"
            right="-5"
            name="edit_icon"
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 fedc49ae87b4744ac6576308a4f12cc776bb7a03..2378ae518bf9dbd583d969613fd4c0dca6443fcd 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
@@ -116,9 +116,9 @@
              top_pad="0"
              width="102" />
           </panel>
-           <button
+           <icon
            height="18"
-           image_overlay="AddItem_Off"
+           image_name="AddItem_Off"
            layout="topleft"
            name="2nd_life_edit_icon"
            label=""
@@ -171,9 +171,9 @@
              top_pad="0"
              width="102" />
           </panel>
-           <button
+           <icon
            height="18"
-           image_overlay="AddItem_Off"
+           image_name="AddItem_Off"
            layout="topleft"
            name="real_world_edit_icon"
            label=""
diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
index 03ba7f7c81f9f3352a1fa59f4a88c2a9b830287c..0c24adfad5933cc3112ef6344a786571582dca92 100644
--- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
@@ -50,7 +50,6 @@
      layout="topleft"
      left="10"
      name="back_btn"
-     picture_style="true"
      tab_stop="false"
      top="0"
      width="23" />
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 ae11f028ca781e3470e669a6c195969bfbea87c8..34f9e1daf503480209eb3a1107f19b752a5b8709 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -22,7 +22,7 @@
 	<icon
 	 follows="all"
 	 image_name="NavBar_BG_NoFav"
-	 mouse_opaque="true"
+	 mouse_opaque="false"
 	 name="bg_icon_no_fav"
 	 scale_image="true"
 	 visible="false"
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 4dc65fa7363a23af195f923b56643b0d708ca95a..65f150b33c6c52a3ac3dba073fde4cef600bc5e6 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -92,6 +92,52 @@
      name="acquired_date">
         [wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
     </string>
+    <!-- Texture names for parcel permissions icons -->
+    <string
+     name="icon_PG"
+     value="parcel_drk_PG" />
+    <string
+     name="icon_M"
+     value="parcel_drk_M" />
+    <string
+     name="icon_R"
+     value="parcel_drk_R" />
+    <string
+     name="icon_Voice"
+     value="parcel_drk_Voice" />
+    <string
+     name="icon_VoiceNo"
+     value="parcel_drk_VoiceNo" />
+    <string
+     name="icon_Fly"
+     value="parcel_drk_Fly" />
+    <string
+     name="icon_FlyNo"
+     value="parcel_drk_FlyNo" />
+    <string
+     name="icon_Push"
+     value="parcel_drk_Push" />
+    <string
+     name="icon_PushNo"
+     value="parcel_drk_PushNo" />
+    <string
+     name="icon_Build"
+     value="parcel_drk_Build" />
+    <string
+     name="icon_BuildNo"
+     value="parcel_drk_BuildNo" />
+    <string
+     name="icon_Scripts"
+     value="parcel_drk_Scripts" />
+    <string
+     name="icon_ScriptsNo"
+     value="parcel_drk_ScriptsNo" />
+    <string
+     name="icon_Damage"
+     value="parcel_drk_Damage" />
+    <string
+     name="icon_DamageNo"
+     value="parcel_drk_DamageNo" />
     <button
      follows="top|right"
      height="23"
@@ -99,7 +145,6 @@
      layout="topleft"
      left="10"
      name="back_btn"
-     picture_style="true"
      tab_stop="false"
      top="0"
      width="23" />
@@ -212,15 +257,6 @@
              use_ellipses="true"
              value="SampleRegion"
              width="290" />
-       <!-- <icon
-             follows="top|right"
-             height="16"
-             image_name="Icon_For_Sale"
-             layout="topleft"
-             left="3"
-             mouse_opaque="true"
-             name="icon_for_sale"
-             width="16" />-->
             <text
              follows="left|top|right"
              height="14"
diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
index 0073a1f1a0d0325c1b9e17881a79af83e79e8255..1f67a0a7328bbf6eeda16fd0bc0dffad078f9377 100644
--- a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
@@ -47,16 +47,6 @@
      top="4"
      value="..."
      width="242" />
-    <button
-     follows="right"
-     height="16"
-     image_pressed="Info_Press"
-     image_unselected="Info_Over"
-     left_pad="3"
-     right="-31"
-     name="info_btn"
-     top_delta="-2"
-     width="16" />
     <button
      follows="right"
      height="20"
@@ -66,5 +56,6 @@
      right="-3"
      name="profile_btn"
      top_delta="-2"
+     visible="false"
      width="20" />
 </panel>
diff --git a/indra/newview/skins/default/xui/en/widgets/chat_history.xml b/indra/newview/skins/default/xui/en/widgets/chat_history.xml
index ea6997ebd54940039a796a39d678b28e221d5cf0..32916c08167168fe5db562798beff37c807c1eee 100644
--- a/indra/newview/skins/default/xui/en/widgets/chat_history.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chat_history.xml
@@ -6,6 +6,10 @@
 	right_text_pad="15"
     left_widget_pad="0"
 	right_widget_pad="10"
+	top_separator_pad="5"
+	bottom_separator_pad="5"
+	top_header_pad="17"
+	bottom_header_pad="10"
 	max_length="2147483647"
 	enabled="false"
 	track_bottom="true"