diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index fd369730d6428854050736f0b750cb856810a551..a7946cacf54a06c285dd80ca05fa147a554ed9cb 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -486,6 +486,11 @@ void LLButton::onMouseLeave(S32 x, S32 y, MASK mask)
 	mNeedsHighlight = FALSE;
 }
 
+void LLButton::setHighlight(bool b)
+{
+	mNeedsHighlight = b;
+}
+
 BOOL LLButton::handleHover(S32 x, S32 y, MASK mask)
 {
 	if (!childrenHandleHover(x, y, mask))
diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
index 5e2aea2b74b1b3b6bffd2af30c22c0bc1387d858..85580a98bf25f3c781c66a718a4ff0438e181550 100644
--- a/indra/llui/llbutton.h
+++ b/indra/llui/llbutton.h
@@ -176,6 +176,7 @@ class LLButton
 	BOOL			getToggleState() const;
 	void			setToggleState(BOOL b);
 
+	void			setHighlight(bool b);
 	void			setFlashing( BOOL b );
 	BOOL			getFlashing() const		{ return mFlashing; }
 
diff --git a/indra/llui/llmenubutton.cpp b/indra/llui/llmenubutton.cpp
index 8dbcd6e22921e0729fd1b3bbb6842846edc9435d..a657ed039a0e1861f9f268e6837e72b954af3a60 100644
--- a/indra/llui/llmenubutton.cpp
+++ b/indra/llui/llmenubutton.cpp
@@ -85,6 +85,8 @@ void LLMenuButton::toggleMenu()
 
 void LLMenuButton::hideMenu() 
 { 
+	if(!mMenu)
+		return;
 	mMenu->setVisible(FALSE); 
 }
 
diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp
index c8094f9c7c6a5a6fbe7986f56ac1990be6273ebe..34501ae080c47f598bfe1efc681c16feaf37d752 100644
--- a/indra/llui/lltooltip.cpp
+++ b/indra/llui/lltooltip.cpp
@@ -38,10 +38,11 @@
 // Library includes
 #include "lltextbox.h"
 #include "lliconctrl.h"
+#include "llbutton.h"
 #include "llmenugl.h"       // hideMenus()
 #include "llui.h"			// positionViewNearMouse()
 #include "llwindow.h"
-
+#include "lltrans.h"
 //
 // Constants
 //
@@ -155,7 +156,10 @@ LLToolTip::Params::Params()
 	visible_time_near("visible_time_near", LLUI::sSettingGroups["config"]->getF32( "ToolTipVisibleTimeNear" )),
 	visible_time_far("visible_time_far", LLUI::sSettingGroups["config"]->getF32( "ToolTipVisibleTimeFar" )),
 	sticky_rect("sticky_rect"),
-	image("image")
+	image("image"),
+	time_based_media("time_based_media", false),
+	web_based_media("web_based_media", false),
+	media_playing("media_playing", false)
 {
 	name = "tooltip";
 	font = LLFontGL::getFontSansSerif();
@@ -167,7 +171,11 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p)
 :	LLPanel(p),
 	mMaxWidth(p.max_width),
 	mHasClickCallback(p.click_callback.isProvided()),
-	mPadding(p.padding)
+	mPadding(p.padding),
+	mTextBox(NULL),
+	mInfoButton(NULL),
+	mPlayMediaButton(NULL),
+	mHomePageButton(NULL)
 {
 	LLTextBox::Params params;
 	params.initial_value = "tip_text";
@@ -186,25 +194,82 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p)
 	params.allow_html = false; // disallow hyperlinks in tooltips, as they want to spawn their own explanatory tooltips
 	mTextBox = LLUICtrlFactory::create<LLTextBox> (params);
 	addChild(mTextBox);
-
+	
+	S32 TOOLTIP_ICON_SIZE = 0;
+	S32 TOOLTIP_PLAYBUTTON_SIZE = 0;
 	if (p.image.isProvided())
 	{
-		LLIconCtrl::Params icon_params;
-		icon_params.name = "tooltip_icon";
+		LLButton::Params icon_params;
+		icon_params.name = "tooltip_info";
 		LLRect icon_rect;
 		LLUIImage* imagep = p.image;
-		const S32 TOOLTIP_ICON_SIZE = (imagep ? imagep->getWidth() : 16);
+		TOOLTIP_ICON_SIZE = (imagep ? imagep->getWidth() : 16);
 		icon_rect.setOriginAndSize(mPadding, mPadding, TOOLTIP_ICON_SIZE, TOOLTIP_ICON_SIZE);
 		icon_params.rect = icon_rect;
-		icon_params.follows.flags = FOLLOWS_LEFT | FOLLOWS_BOTTOM;
-		icon_params.image = p.image;
-		icon_params.mouse_opaque = false;
-		addChild(LLUICtrlFactory::create<LLIconCtrl>(icon_params));
-
+		//icon_params.follows.flags = FOLLOWS_LEFT | FOLLOWS_BOTTOM;
+		icon_params.image_unselected(imagep);
+		icon_params.scale_image(true);
+		icon_params.flash_color(icon_params.highlight_color());
+		mInfoButton  = LLUICtrlFactory::create<LLButton>(icon_params);
+		if (p.click_callback.isProvided())
+		{
+			mInfoButton->setCommitCallback(boost::bind(p.click_callback()));
+		}
+		addChild(mInfoButton);
+		
 		// move text over to fit image in
 		mTextBox->translate(TOOLTIP_ICON_SIZE + mPadding, 0);
 	}
-
+	
+	if (p.time_based_media.isProvided() && p.time_based_media == true)
+	{
+		LLButton::Params p_button;
+		p_button.name(std::string("play_media"));
+		TOOLTIP_PLAYBUTTON_SIZE = 16;
+		LLRect button_rect;
+		button_rect.setOriginAndSize((mPadding +TOOLTIP_ICON_SIZE+ mPadding ), mPadding, TOOLTIP_ICON_SIZE, TOOLTIP_ICON_SIZE);
+		p_button.rect = button_rect;
+		p_button.image_selected.name("button_anim_pause.tga");
+		p_button.image_unselected.name("button_anim_play.tga");
+		p_button.scale_image(true);
+		
+		mPlayMediaButton = LLUICtrlFactory::create<LLButton>(p_button); 
+		if(p.click_playmedia_callback.isProvided())
+		{
+			mPlayMediaButton->setCommitCallback(boost::bind(p.click_playmedia_callback()));
+		}
+		if(p.media_playing.isProvided())
+		{
+			mPlayMediaButton->setToggleState(p.media_playing);
+		}
+		addChild(mPlayMediaButton);
+		
+		// move text over to fit image in
+		mTextBox->translate(TOOLTIP_PLAYBUTTON_SIZE + mPadding, 0);
+	}
+	
+	if (p.web_based_media.isProvided() && p.web_based_media == true)
+	{
+		LLButton::Params p_w_button;
+		p_w_button.name(std::string("home_page"));
+		TOOLTIP_PLAYBUTTON_SIZE = 16;
+		LLRect button_rect;
+		button_rect.setOriginAndSize((mPadding +TOOLTIP_ICON_SIZE+ mPadding ), mPadding, TOOLTIP_ICON_SIZE, TOOLTIP_ICON_SIZE);
+		p_w_button.rect = button_rect;
+		p_w_button.image_unselected.name("map_home.tga");
+		p_w_button.scale_image(true);
+		
+		mHomePageButton = LLUICtrlFactory::create<LLButton>(p_w_button); 
+		if(p.click_homepage_callback.isProvided())
+		{
+			mHomePageButton->setCommitCallback(boost::bind(p.click_homepage_callback()));
+		}
+		addChild(mHomePageButton);
+		
+		// move text over to fit image in
+		mTextBox->translate(TOOLTIP_PLAYBUTTON_SIZE + mPadding, 0);
+	}
+	
 	if (p.click_callback.isProvided())
 	{
 		setMouseUpCallback(boost::bind(p.click_callback()));
@@ -255,6 +320,10 @@ void LLToolTip::setVisible(BOOL visible)
 
 BOOL LLToolTip::handleHover(S32 x, S32 y, MASK mask)
 {
+	//mInfoButton->setFlashing(true);
+	if(mInfoButton)
+		mInfoButton->setHighlight(true);
+	
 	LLPanel::handleHover(x, y, mask);
 	if (mHasClickCallback)
 	{
@@ -263,6 +332,14 @@ BOOL LLToolTip::handleHover(S32 x, S32 y, MASK mask)
 	return TRUE;
 }
 
+void LLToolTip::onMouseLeave(S32 x, S32 y, MASK mask)
+{
+	//mInfoButton->setFlashing(true);
+	if(mInfoButton)
+		mInfoButton->setHighlight(false);
+	LLUICtrl::onMouseLeave(x, y, mask);
+}
+
 void LLToolTip::draw()
 {
 	F32 alpha = 1.f;
@@ -393,7 +470,9 @@ void LLToolTipMgr::show(const LLToolTip::Params& params)
 		&& LLUI::getMouseIdleTime() > params.delay_time)	// the mouse has been still long enough
 	{
 		bool tooltip_changed = mLastToolTipParams.message() != params.message()
-								|| mLastToolTipParams.pos() != params.pos();
+								|| mLastToolTipParams.pos() != params.pos()
+								|| mLastToolTipParams.time_based_media() != params.time_based_media()
+								|| mLastToolTipParams.web_based_media() != params.web_based_media();
 
 		bool tooltip_shown = mToolTip 
 							 && mToolTip->getVisible() 
diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h
index 63e7249a12b1d5c6da6d0270cde9b7f60d9314d9..4a5f60f93da006d4eacb3ade4af535f352f1318a 100644
--- a/indra/llui/lltooltip.h
+++ b/indra/llui/lltooltip.h
@@ -81,6 +81,13 @@ class LLToolTip : public LLPanel
 
 		Optional<click_callback_t>	click_callback;
 		Optional<LLUIImage*>		image;
+		
+		
+		Optional<bool>				time_based_media;
+		Optional<bool>				web_based_media;
+		Optional<bool>				media_playing;
+		Optional<click_callback_t>	click_playmedia_callback;
+		Optional<click_callback_t>	click_homepage_callback;
 		Optional<S32>				max_width;
 		Optional<S32>				padding;
 		Optional<bool>				wrap;
@@ -89,7 +96,7 @@ class LLToolTip : public LLPanel
 	};
 	/*virtual*/ void draw();
 	/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
-
+	/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
 	/*virtual*/ void setValue(const LLSD& value);
 	/*virtual*/ void setVisible(BOOL visible);
 
@@ -101,6 +108,10 @@ class LLToolTip : public LLPanel
 
 private:
 	class LLTextBox*	mTextBox;
+	class LLButton*     mInfoButton;
+	class LLButton*     mPlayMediaButton;
+	class LLButton*     mHomePageButton;
+
 	LLFrameTimer	mFadeTimer;
 	LLFrameTimer	mVisibleTimer;
 	S32				mMaxWidth;
diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp
index 29cca14a7bbb3b74087efdd01a93ce8bbf345ca5..050a61c79b266f567f03f9cde619e865e52e7e0c 100644
--- a/indra/newview/llinspectobject.cpp
+++ b/indra/newview/llinspectobject.cpp
@@ -35,10 +35,12 @@
 
 // Viewer
 #include "llinspect.h"
+#include "llmediaentry.h"
 #include "llnotifications.h"	// *TODO: Eliminate, add LLNotificationsUtil wrapper
 #include "llselectmgr.h"
 #include "llslurl.h"
 #include "llviewermenu.h"		// handle_object_touch(), handle_buy()
+#include "llviewermedia.h"
 #include "llviewerobjectlist.h"	// to select the requested object
 
 // Linden libraries
@@ -92,8 +94,10 @@ class LLInspectObject : public LLInspect
 	void updateName(LLSelectNode* nodep);
 	void updateDescription(LLSelectNode* nodep);
 	void updatePrice(LLSelectNode* nodep);
-	
 	void updateCreator(LLSelectNode* nodep);
+	
+	void updateMediaCurrentURL();	
+	void updateSecureBrowsing();
 		
 	void onClickBuy();
 	void onClickPay();
@@ -106,13 +110,17 @@ class LLInspectObject : public LLInspect
 	
 private:
 	LLUUID				mObjectID;
+	S32					mObjectFace;
+	viewer_media_t		mMediaImpl;
 	LLSafeHandle<LLObjectSelection> mObjectSelection;
 };
 
 LLInspectObject::LLInspectObject(const LLSD& sd)
 :	LLInspect( LLSD() ),	// single_instance, doesn't really need key
-	mObjectID(),			// set in onOpen()
-	mObjectSelection()
+	mObjectID(NULL),			// set in onOpen()
+	mObjectFace(0),
+	mObjectSelection(NULL),
+	mMediaImpl(NULL)
 {
 	// can't make the properties request until the widgets are constructed
 	// as it might return immediately, so do it in postBuild.
@@ -139,7 +147,7 @@ BOOL LLInspectObject::postBuild(void)
 	getChild<LLUICtrl>("object_name")->setValue("");
 	getChild<LLUICtrl>("object_creator")->setValue("");
 	getChild<LLUICtrl>("object_description")->setValue("");
-
+	getChild<LLUICtrl>("object_media_url")->setValue("");
 	// Set buttons invisible until we know what this object can do
 	hideButtons();
 
@@ -182,7 +190,11 @@ void LLInspectObject::onOpen(const LLSD& data)
 
 	// Extract appropriate avatar id
 	mObjectID = data["object_id"];
-
+	
+	if(data.has("object_face"))
+	{
+		mObjectFace = data["object_face"];
+	}
 	// Position the inspector relative to the mouse cursor
 	// Similar to how tooltips are positioned
 	// See LLToolTipMgr::createToolTip
@@ -213,6 +225,17 @@ void LLInspectObject::onOpen(const LLSD& data)
 			}
 		} functor;
 		mObjectSelection->applyToNodes(&functor);
+		
+		// Does this face have media?
+		const LLTextureEntry* tep = obj->getTE(mObjectFace);
+		if (!tep)
+			return;
+		
+		const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL;
+		if(!mep)
+			return;
+		
+		mMediaImpl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID());
 	}
 }
 
@@ -243,6 +266,30 @@ void LLInspectObject::update()
 	updateDescription(nodep);
 	updateCreator(nodep);
 	updatePrice(nodep);
+	
+	LLViewerObject* obj = nodep->getObject();
+	if(!obj)
+		return;
+	
+	if ( mObjectFace < 0 
+		||  mObjectFace >= obj->getNumTEs() )
+	{
+		return;
+	}
+	
+	// Does this face have media?
+	const LLTextureEntry* tep = obj->getTE(mObjectFace);
+	if (!tep)
+		return;
+	
+	const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL;
+	if(!mep)
+		return;
+	
+	mMediaImpl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID());
+	
+	updateMediaCurrentURL();
+	updateSecureBrowsing();
 }
 
 void LLInspectObject::hideButtons()
@@ -381,6 +428,40 @@ void LLInspectObject::updateDescription(LLSelectNode* nodep)
 	}
 }
 
+void LLInspectObject::updateMediaCurrentURL()
+{	
+	LLTextBox* textbox = getChild<LLTextBox>("object_media_url");
+	std::string media_url = "";
+	textbox->setValue(media_url);
+	textbox->setToolTip(media_url);
+	
+	if(mMediaImpl.notNull() && mMediaImpl->hasMedia())
+	{
+		LLStringUtil::format_map_t args;
+		LLPluginClassMedia* media_plugin = NULL;
+		media_plugin = mMediaImpl->getMediaPlugin();
+		if(media_plugin)
+		{
+			if(media_plugin->pluginSupportsMediaTime())
+			{
+				args["[CurrentURL]"] =  mMediaImpl->getMediaURL();
+			}
+			else
+			{
+				args["[CurrentURL]"] =  media_plugin->getLocation();
+			}
+			media_url = LLTrans::getString("CurrentURL", args);
+			textbox->setText(media_url);
+			textbox->setToolTip(media_url);
+		}
+	}
+	else
+	{
+		textbox->setText(media_url);
+		textbox->setToolTip(media_url);
+	}
+}
+
 void LLInspectObject::updateCreator(LLSelectNode* nodep)
 {
 	// final information for display
@@ -453,6 +534,40 @@ void LLInspectObject::updatePrice(LLSelectNode* nodep)
 	getChild<LLUICtrl>("price_icon")->setVisible(show_price_icon);
 }
 
+void LLInspectObject::updateSecureBrowsing()
+{
+	bool is_secure_browsing = false;
+	
+	if(mMediaImpl.notNull() 
+	   && mMediaImpl->hasMedia())
+	{
+		LLPluginClassMedia* media_plugin = NULL;
+		std::string current_url = "";
+		media_plugin = mMediaImpl->getMediaPlugin();
+		if(media_plugin)
+		{
+			if(media_plugin->pluginSupportsMediaTime())
+			{
+				current_url = mMediaImpl->getMediaURL();
+			}
+			else
+			{
+				current_url =  media_plugin->getLocation();
+			}
+		}
+		
+		std::string prefix =  std::string("https://");
+		std::string test_prefix = current_url.substr(0, prefix.length());
+		LLStringUtil::toLower(test_prefix);	
+		if(test_prefix == prefix)
+		{
+			is_secure_browsing = true;
+		}
+	}
+	getChild<LLUICtrl>("secure_browsing")->setVisible(is_secure_browsing);
+}
+
+
 void LLInspectObject::onClickBuy()
 {
 	handle_buy();
diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp
index 4c552ee815288e20a166ff2a6248173b302474fe..e4b32c4820d379cbe98ddcc317995c6f03a88f01 100644
--- a/indra/newview/llpanelprimmediacontrols.cpp
+++ b/indra/newview/llpanelprimmediacontrols.cpp
@@ -258,7 +258,8 @@ void LLPanelPrimMediaControls::updateShape()
         LLUICtrl* zoom_ctrl					= getChild<LLUICtrl>("zoom_frame");
 		LLPanel* media_loading_panel		= getChild<LLPanel>("media_progress_indicator");
 		LLUICtrl* media_address_ctrl		= getChild<LLUICtrl>("media_address");
-		LLUICtrl* media_play_slider_ctrl	= getChild<LLUICtrl>("media_play_position");
+		LLUICtrl* media_play_slider_panel	= getChild<LLUICtrl>("media_play_position");
+		LLUICtrl* media_play_slider_ctrl	= getChild<LLUICtrl>("media_play_slider");
 		LLUICtrl* volume_ctrl				= getChild<LLUICtrl>("media_volume");
 		LLButton* volume_btn				= getChild<LLButton>("media_volume_button");
 		LLUICtrl* volume_up_ctrl			= getChild<LLUICtrl>("volume_up");
@@ -282,7 +283,7 @@ void LLPanelPrimMediaControls::updateShape()
 		close_ctrl->setVisible(has_focus);
 		open_ctrl->setVisible(true);
 		media_address_ctrl->setVisible(has_focus && !mini_controls);
-		media_play_slider_ctrl->setVisible(has_focus && !mini_controls);
+		media_play_slider_panel->setVisible(has_focus && !mini_controls);
 		volume_ctrl->setVisible(false);
 		volume_up_ctrl->setVisible(false);
 		volume_down_ctrl->setVisible(false);
@@ -309,8 +310,8 @@ void LLPanelPrimMediaControls::updateShape()
 			fwd_ctrl->setEnabled(has_focus);
 			media_address_ctrl->setVisible(false);
 			media_address_ctrl->setEnabled(false);
-			media_play_slider_ctrl->setVisible(!mini_controls);
-			media_play_slider_ctrl->setEnabled(!mini_controls);
+			media_play_slider_panel->setVisible(!mini_controls);
+			media_play_slider_panel->setEnabled(!mini_controls);
 				
 			volume_ctrl->setVisible(has_focus);
 			volume_up_ctrl->setVisible(has_focus);
@@ -406,8 +407,8 @@ void LLPanelPrimMediaControls::updateShape()
 			media_stop_ctrl->setVisible(FALSE);
 			media_address_ctrl->setVisible(has_focus && !mini_controls);
 			media_address_ctrl->setEnabled(has_focus && !mini_controls);
-			media_play_slider_ctrl->setVisible(FALSE);
-			media_play_slider_ctrl->setEnabled(FALSE);
+			media_play_slider_panel->setVisible(FALSE);
+			media_play_slider_panel->setEnabled(FALSE);
 				
 			volume_ctrl->setVisible(FALSE);
 			volume_up_ctrl->setVisible(FALSE);
@@ -594,9 +595,9 @@ void LLPanelPrimMediaControls::updateShape()
 			mLastCursorPos = cursor_pos_window;
 		}
 		
-		if(isMouseOver())
+		if(isMouseOver() || hasFocus())
 		{
-			// Never fade the controls if the mouse is over them.
+			// Never fade the controls if the mouse is over them or they have keyboard focus.
 			mFadeTimer.stop();
 		}
 		else if(!mClearFaceOnFade && (mInactivityTimer.getElapsedTimeF32() < mInactiveTimeout))
@@ -629,9 +630,13 @@ void LLPanelPrimMediaControls::draw()
 
 		if(mFadeTimer.getElapsedTimeF32() >= mControlFadeTime)
 		{
-			setVisible(FALSE);
 			if(mClearFaceOnFade)
 			{
+				// Hiding this object makes scroll events go missing after it fades out 
+				// (see DEV-41755 for a full description of the train wreck).
+				// Only hide the controls when we're untargeting.
+				setVisible(FALSE);
+
 				mClearFaceOnFade = false;
 				mTargetImplID = LLUUID::null;
 				mTargetObjectID = LLUUID::null;
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 7c17699bf98c9975403e66e34a3954d9872cbb41..304f1dffaf009f7a248b2f771cd4e6b9a13bb4b2 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -732,7 +732,47 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask)
 				{
 					tooltip_msg.append( nodep->mName );
 				}
-
+				
+				bool is_time_based_media = false;
+				bool is_web_based_media = false;
+				bool is_media_playing = false;
+				
+				// Does this face have media?
+				const LLTextureEntry* tep = hover_object->getTE(mHoverPick.mObjectFace);
+				
+				if(tep)
+				{
+					const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL;
+					if (mep)
+					{
+						viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL;
+						LLPluginClassMedia* media_plugin = NULL;
+				
+						if (media_impl.notNull() && (media_impl->hasMedia()))
+						{
+							LLStringUtil::format_map_t args;
+					
+							media_plugin = media_impl->getMediaPlugin();
+							if(media_plugin)
+							{	if(media_plugin->pluginSupportsMediaTime())
+								{
+									is_time_based_media = true;
+									is_web_based_media = false;
+									args["[CurrentURL]"] =  media_impl->getMediaURL();
+									is_media_playing = media_impl->isMediaPlaying();
+								}
+								else
+								{
+									is_time_based_media = false;
+									is_web_based_media = true;
+									args["[CurrentURL]"] =  media_plugin->getLocation();
+								}
+								//tooltip_msg.append(LLTrans::getString("CurrentURL", args));
+							}
+						}
+					}
+				}
+				
 				bool needs_tip = needs_tooltip(nodep);
 
 				if (show_all_object_tips || needs_tip)
@@ -741,8 +781,13 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask)
 					mPick = mHoverPick;
 					LLToolTipMgr::instance().show(LLToolTip::Params()
 						.message(tooltip_msg)
-						.image(LLUI::getUIImage("Info"))
-						.click_callback(boost::bind(showObjectInspector, hover_object->getID()))
+						.image(LLUI::getUIImage("Info_Off"))
+						.click_callback(boost::bind(showObjectInspector, hover_object->getID(), mHoverPick.mObjectFace))
+						.time_based_media(is_time_based_media)
+						.web_based_media(is_web_based_media)						  
+						.media_playing(is_media_playing)						  
+						.click_playmedia_callback(boost::bind(playCurrentMedia, mHoverPick))
+						.click_homepage_callback(boost::bind(VisitHomePage, mHoverPick))						
 						.visible_time_near(6.f)
 						.visible_time_far(3.f)
 						.wrap(false));
@@ -925,6 +970,20 @@ static void show_inspector(const char* inspector, const char* param, const LLUUI
 	LLFloaterReg::showInstance(inspector, params);
 }
 
+
+static void show_inspector(const char* inspector,  LLSD& params)
+{
+	if (LLToolTipMgr::instance().toolTipVisible())
+	{
+		LLRect rect = LLToolTipMgr::instance().getToolTipRect();
+		params["pos"]["x"] = rect.mLeft;
+		params["pos"]["y"] = rect.mTop;
+	}
+	
+	LLFloaterReg::showInstance(inspector, params);
+}
+
+
 // static
 void LLToolPie::showAvatarInspector(const LLUUID& avatar_id)
 {
@@ -937,6 +996,114 @@ void LLToolPie::showObjectInspector(const LLUUID& object_id)
 	show_inspector("inspect_object", "object_id", object_id);
 }
 
+
+// static
+void LLToolPie::showObjectInspector(const LLUUID& object_id, const S32& object_face)
+{
+	LLSD params;
+	params["object_id"] = object_id;
+	params["object_face"] = object_face;
+	show_inspector("inspect_object", params);
+}
+
+// static
+void LLToolPie::playCurrentMedia(const LLPickInfo& info)
+{
+	//FIXME: how do we handle object in different parcel than us?
+	LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
+	if (!parcel) return;
+	
+	LLPointer<LLViewerObject> objectp = info.getObject();
+	
+	// Early out cases.  Must clear media hover. 
+	// did not hit an object or did not hit a valid face
+	if ( objectp.isNull() ||
+		info.mObjectFace < 0 || 
+		info.mObjectFace >= objectp->getNumTEs() )
+	{
+		return;
+	}
+	
+	// Does this face have media?
+	const LLTextureEntry* tep = objectp->getTE(info.mObjectFace);
+	if (!tep)
+		return;
+	
+	const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL;
+	if(!mep)
+		return;
+	
+	LLPluginClassMedia* media_plugin = NULL;
+	
+//	if (gSavedSettings.getBOOL("MediaOnAPrimUI"))
+//	{		
+		viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID());
+		
+		if(media_impl.notNull() && media_impl->hasMedia())
+		{
+			media_plugin = media_impl->getMediaPlugin();
+			
+			if (media_plugin && media_plugin->pluginSupportsMediaTime())
+			{
+				if(media_impl->isMediaPlaying())
+				{
+					media_impl->pause();
+				}
+				else //if(media_impl->isMediaPaused())
+				{
+					media_impl->play();
+				}
+				
+			}
+					
+		}
+//	 }
+
+}
+
+// static
+void LLToolPie::VisitHomePage(const LLPickInfo& info)
+{
+	//FIXME: how do we handle object in different parcel than us?
+	LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
+	if (!parcel) return;
+	
+	LLPointer<LLViewerObject> objectp = info.getObject();
+	
+	// Early out cases.  Must clear media hover. 
+	// did not hit an object or did not hit a valid face
+	if ( objectp.isNull() ||
+		info.mObjectFace < 0 || 
+		info.mObjectFace >= objectp->getNumTEs() )
+	{
+		return;
+	}
+	
+	// Does this face have media?
+	const LLTextureEntry* tep = objectp->getTE(info.mObjectFace);
+	if (!tep)
+		return;
+	
+	const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL;
+	if(!mep)
+		return;
+	
+	LLPluginClassMedia* media_plugin = NULL;
+	
+	viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID());
+	
+	if(media_impl.notNull() && media_impl->hasMedia())
+	{
+		media_plugin = media_impl->getMediaPlugin();
+		
+		if (media_plugin && !(media_plugin->pluginSupportsMediaTime()))
+		{
+			media_impl->navigateHome();
+		}
+	}
+}
+
+
 void LLToolPie::handleDeselect()
 {
 	if(	hasMouseCapture() )
@@ -1035,12 +1202,17 @@ bool LLToolPie::handleMediaClick(const LLPickInfo& pick)
 
 	// Does this face have media?
 	const LLTextureEntry* tep = objectp->getTE(pick.mObjectFace);
+	if(!tep)
+		return false;
+
 	LLMediaEntry* mep = (tep->hasMedia()) ? tep->getMediaData() : NULL;
+	
+	if(!mep)
+		return false;
+	
 	viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL;
 
-	if (tep 
-		&& mep
-		&& gSavedSettings.getBOOL("MediaOnAPrimUI")
+	if (gSavedSettings.getBOOL("MediaOnAPrimUI")
 		&& media_impl.notNull())
 	{
 		if (!LLViewerMediaFocus::getInstance()->isFocusedOnFace(pick.getObject(), pick.mObjectFace) )
@@ -1085,6 +1257,9 @@ bool LLToolPie::handleMediaHover(const LLPickInfo& pick)
 
 	// Does this face have media?
 	const LLTextureEntry* tep = objectp->getTE(pick.mObjectFace);
+	if(!tep)
+		return false;
+	
 	const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL;
 	if (mep
 		&& gSavedSettings.getBOOL("MediaOnAPrimUI"))
diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h
index 5faedbec5aae03f74508fb7cb8deed99030f1145..3660c685525d9436eaac30856acd182bb1d46708 100644
--- a/indra/newview/lltoolpie.h
+++ b/indra/newview/lltoolpie.h
@@ -78,6 +78,10 @@ class LLToolPie : public LLTool, public LLSingleton<LLToolPie>
 
 	static void			showAvatarInspector(const LLUUID& avatar_id);
 	static void			showObjectInspector(const LLUUID& object_id);
+	static void			showObjectInspector(const LLUUID& object_id, const S32& object_face);
+	static void			playCurrentMedia(const LLPickInfo& info);
+	static void			VisitHomePage(const LLPickInfo& info);
+	
 private:
 	BOOL outsideSlop		(S32 x, S32 y, S32 start_x, S32 start_y);
 	BOOL pickLeftMouseDownCallback();
diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp
index 5d0b77d4fbe824137aa489d0deca858e90671567..0ef4679057e0404236e5acb1e4ae9809dd500991 100644
--- a/indra/newview/llviewermediafocus.cpp
+++ b/indra/newview/llviewermediafocus.cpp
@@ -48,6 +48,9 @@
 #include "llviewerparcelmgr.h"
 #include "llweb.h"
 #include "llmediaentry.h"
+#include "llkeyboard.h"
+#include "lltoolmgr.h"
+
 //
 // LLViewerMediaFocus
 //
@@ -114,13 +117,16 @@ void LLViewerMediaFocus::setFocusFace(LLPointer<LLViewerObject> objectp, S32 fac
 	}
 	else
 	{
-		if(mFocusedImplID != LLUUID::null)
+		if(mFocusedImplID.notNull())
 		{
 			if(mMediaControls.get())
 			{
 				mMediaControls.get()->resetZoomLevel();
 			}
+		}
 
+		if(hasFocus())
+		{
 			gFocusMgr.setKeyboardFocus(NULL);
 		}
 		
@@ -298,8 +304,9 @@ BOOL LLViewerMediaFocus::handleScrollWheel(S32 x, S32 y, S32 clicks)
         // the scrollEvent() API's x and y are not the same as handleScrollWheel's x and y.
         // The latter is the position of the mouse at the time of the event
         // The former is the 'scroll amount' in x and y, respectively.
-        // All we have for 'scroll amount' here is 'clicks', and no mask.
-		media_impl->getMediaPlugin()->scrollEvent(0, clicks, /*mask*/0);
+        // All we have for 'scroll amount' here is 'clicks'.
+		// We're also not passed the keyboard modifier mask, but we can get that from gKeyboard.
+		media_impl->getMediaPlugin()->scrollEvent(0, clicks, gKeyboard->currentMask(TRUE));
 		retval = TRUE;
 	}
 	return retval;
@@ -307,6 +314,30 @@ BOOL LLViewerMediaFocus::handleScrollWheel(S32 x, S32 y, S32 clicks)
 
 void LLViewerMediaFocus::update()
 {
+	if(mFocusedImplID.notNull() || mFocusedObjectID.notNull())
+	{
+		// We have a focused impl/face.
+		if(!getFocus())
+		{
+			// We've lost keyboard focus -- check to see whether the media controls have it
+			if(mMediaControls.get() && mMediaControls.get()->hasFocus())
+			{
+				// the media controls have focus -- don't clear.
+			}
+			else
+			{
+				// Someone else has focus -- back off.
+				clearFocus();
+			}
+		}
+		else if(LLToolMgr::getInstance()->inBuildMode())
+		{
+			// Build tools are selected -- clear focus.
+			clearFocus();
+		}
+	}
+	
+	
 	LLViewerMediaImpl *media_impl = getFocusedMediaImpl();
 	LLViewerObject *viewer_object = getFocusedObject();
 	S32 face = mFocusedObjectFace;
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index 287c997c65cc2c371f52fa8b7cd39772532f0d50..6e22472153c9760606999e22c1fa27d9e7af5f67 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -408,7 +408,7 @@
      reference="White" />
     <color
      name="MapAvatarColor"
-     reference="White" />
+     reference="Green" />
     <color
      name="MapAvatarFriendColor"
      reference="Unused?" />
diff --git a/indra/newview/skins/default/textures/containers/Accordion_Selected.png b/indra/newview/skins/default/textures/containers/Accordion_Selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..0616dea6a349f790fe633bac125da58867ace1de
Binary files /dev/null and b/indra/newview/skins/default/textures/containers/Accordion_Selected.png differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 401f32c9087c2d6d7b7353e93fb87e3cde1bf330..f0d27ac11d6030153c7e0603520935db8d12645b 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -6,6 +6,8 @@
   <texture name="Accordion_ArrowOpened_Press" file_name="containers/Accordion_ArrowOpened_Press.png" preload="false" />
   <texture name="Accordion_Off" file_name="containers/Accordion_Off.png" preload="false" />
   <texture name="Accordion_Press" file_name="containers/Accordion_Press.png" preload="false" />
+  <texture name="Accordion_Over" file_name="containers/Accordion_Over.png" preload="false" />
+  <texture name="Accordion_Selected" file_name="containers/Accordion_Selected.png" preload="false" />
 
 <texture name="Activate_Checkmark" file_name="taskpanel/Activate_Checkmark.png" preload="false" />
 
diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
index 26d5d4bedfd0bee2bc95e5524db51e9fae463bba..88712bda5e6aa6e4a1eb1a8ecc320cfb0a0b556f 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
@@ -4,10 +4,10 @@
  can_minimize="false"
  height="275"
  layout="topleft"
+ title="Buy L$"
  name="buy currency"
  help_topic="buy_linden_dollars"
  single_instance="true"
- title="Buy L$"
  width="350">
     <floater.string
      name="buy_currency">
diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml
index 01a1b95a9ad1cf79cc657da07c43ce19a41ca7bf..02cbef5987e3591121b3dfb15fe3a77ca6fe39a6 100644
--- a/indra/newview/skins/default/xui/en/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/en/floater_moveview.xml
@@ -3,7 +3,7 @@
  legacy_header_height="18"
  can_dock="true"
  can_close="true"
- can_minimize="true"
+ can_minimize="false"
  center_horiz="true"
  follows="bottom"
  height="110"
@@ -38,7 +38,7 @@
         Fly Backwards (press Down Arrow or S)
     </string>
     <panel
-     border="true" 
+     border="false" 
      height="83"
      follows="left|top" 
      layout="topleft"
@@ -136,7 +136,7 @@
     </panel>
 <!-- Width and height of this panel should be synchronized with panel_stand_stop_flying.xml -->
     <panel
-     border="true" 
+     border="false" 
      height="27"
      layout="topleft"
      left="0"
diff --git a/indra/newview/skins/default/xui/en/inspect_object.xml b/indra/newview/skins/default/xui/en/inspect_object.xml
index 603ff55e6d5e25f5a1d139115bab46734efc92a1..fe492e0ae808f60ef1f02b6aa026405739f3ef80 100644
--- a/indra/newview/skins/default/xui/en/inspect_object.xml
+++ b/indra/newview/skins/default/xui/en/inspect_object.xml
@@ -71,7 +71,7 @@ owner James Linden
    width="150">
 L$300,000
   </text>
-    <text
+   <text
    follows="all"
    height="30"
    left="8"
@@ -84,24 +84,35 @@ This is a really long description for an object being as how it is at least 80 c
   </text>
   <!-- Overlapping buttons for all default actions.  Show "Buy" if
   for sale, "Sit" if can sit, etc. -->
+   <text
+   follows="all"
+   height="15"
+   left_delta="0"
+   name="object_media_url"
+   top_pad="-5"
+   width="291"
+   max_length = "50" 
+   use_ellipses="true"
+   word_wrap="true"/>   
+    
   <button
-     follows="top|left"
-     font="SansSerif"
-     height="23"
-     label="Buy"
-     left="10"
-     name="buy_btn"
-     top="114"
-     width="100" />
+   follows="top|left"
+   font="SansSerif"
+   height="20"
+   label="Buy"
+   left="10"
+   name="buy_btn"
+   top="114"
+   width="75" />
   <button
    follows="top|left"
    font="SansSerif"
-   height="23"
+   height="20"
    label="Pay"
    left_delta="0"
    name="pay_btn"
    top_delta="0"
-   width="100" />
+   width="75" />
   <button
    follows="top|left"
    font="SansSerif"
@@ -110,16 +121,16 @@ This is a really long description for an object being as how it is at least 80 c
    left_delta="0"
    name="take_free_copy_btn"
    top_delta="0"
-   width="100" />
+   width="75" />
   <button
    follows="top|left"
    font="SansSerifSmall"
-   height="23"
+   height="20"
    label="Touch"
    left_delta="0"
    name="touch_btn"
    top_delta="0"
-   width="100" />
+   width="75" />
   <button
    follows="top|left"
    font="SansSerif"
@@ -128,17 +139,27 @@ This is a really long description for an object being as how it is at least 80 c
    left_delta="0"
    name="sit_btn"
    top_delta="0"
-   width="100" />
+   width="75" />
   <button
    follows="top|left"
    font="SansSerifSmall"
-   height="23"
+   height="20"
    label="Open"
    left_delta="0"
    name="open_btn"
    top_delta="0"
-   width="100" />
-  <!-- non-overlapping buttons here -->
+   width="75" />
+  <icon
+   name="secure_browsing"
+   image_name="map_infohub.tga"
+   left_delta="80"
+   width="16"
+   height="16"
+   top_delta="2"
+   tool_tip="Secure Browsing"
+   follows="left|top"/> 
+   
+ <!--  non-overlapping buttons here -->
     <menu_button
      follows="top|left"
      height="18"
diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml
index 9bd240eccce73e57069275a95b9f436de2b16a7e..a85c55f9b2ca54c83e510715402c11da7582e0da 100644
--- a/indra/newview/skins/default/xui/en/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_general.xml
@@ -1,15 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
- border="true"
  follows="all"
- height="445"
+ height="412"
  label="General"
  class="panel_group_general"
  layout="topleft"
- left="1"
+ left="0"
+ top="0"
  name="general_tab"
- top="500"
- width="280">
+ width="313">
     <panel.string
      name="help_text">
         The General tab contains general information about this group, a list of members, general Group Preferences and member options.
@@ -18,7 +17,7 @@ Hover your mouse over the options for more help.
     </panel.string>
     <panel.string
      name="group_info_unchanged">
-        General group information has changed.
+        General group information has changed
     </panel.string>
     <panel.string
      name="incomplete_member_data_str">
@@ -28,42 +27,28 @@ Hover your mouse over the options for more help.
      type="string"
      follows="left|top"
      left="5"
-     height="75"
+     height="60"
      layout="topleft"
      max_length="511"
      name="charter"
      top="5"
-     width="260"
+     width="303"
      word_wrap="true">
-        Group Charter
+     Group Charter
     </text_editor>
-    <text
-      follows="left|top"
-     type="string"
-     font="SansSerifBig"
-     tool_tip="Owners are shown in bold."
-     height="16"
-     layout="topleft"
-     left="5"
-     name="text_owners_and_visible_members"
-     text_color="EmphasisColor"
-     top_pad="10"
-     width="270">
-        Members
-    </text>
     <name_list
      column_padding="0"
      draw_heading="true"
      follows="left|top"
-     heading_height="14"
-     height="80"
+     heading_height="16"
+     height="160"
      layout="topleft"
      left_delta="0"
      name="visible_members"
      top_pad="0"
-     width="263">
+     width="303">
         <name_list.columns
-         label="Member Name"
+         label="Member"
          name="name"
          relative_width="0.6" />
         <name_list.columns
@@ -71,27 +56,16 @@ Hover your mouse over the options for more help.
          name="title"
          relative_width="0.4" />
       </name_list>
-    <text
-      follows="left|top"
-      height="16"
-     type="string"
-     text_color="EmphasisColor"
-     top_pad="10"
-     font="SansSerifBig"
-     layout="topleft"
-     name="text_group_preferences">
-        Group Preferences
-    </text>
          <text
          follows="left|top"
          type="string"
-         height="16"
+         height="14"
          layout="topleft"
          left_delta="0"
          name="active_title_label"
-         top_pad="8"
-         width="240">
-            My Active Title
+         top_pad="5"
+         width="303">
+            My Title
         </text>
         <combo_box
          follows="left|top"
@@ -100,58 +74,58 @@ Hover your mouse over the options for more help.
          left_delta="0"
          name="active_title"
          tool_tip="Sets the title that appears in your avatar&apos;s name tag when this group is active."
-         top_pad="0"
-         width="240" />
+         top_pad="2"
+         width="303" />
         <check_box
          height="16"
          font="SansSerifSmall"
          label="Receive notices"
          layout="topleft"
-         left_delta="0"
+         left="5"
          name="receive_notices"
          tool_tip="Sets whether you want to receive Notices from this group.  Uncheck this box if this group is spamming you."
          top_pad="5"
-         width="240" />
+         width="303" />
         <check_box
          height="16"
          label="Show in my profile"
          layout="topleft"
-         left_delta="0"
+         left="5"
          name="list_groups_in_profile"
          tool_tip="Sets whether you want to show this group in your profile"
          top_pad="5"
-         width="240" />
+         width="303" />
         <panel
          background_visible="true"
          bevel_style="in"
          border="true"
          bg_alpha_color="FloaterUnfocusBorderColor"
          follows="left|top"
-         height="125"
+         height="93"
          layout="topleft"
-         left_delta="0"
+         left="5"
          name="preferences_container"
-         top_pad="10"
-         width="263">
+         top_pad="5"
+         width="303">
         <check_box
          follows="right|top"
          height="16"
          label="Open enrollment"
          layout="topleft"
-         left_delta="0"
+         left="10"
          name="open_enrollement"
          tool_tip="Sets whether this group allows new members to join without being invited."
          top_pad="5"
          width="90" />
         <check_box
          height="16"
-         label="Enrollment fee:"
+         label="Enrollment fee"
          layout="topleft"
          left_delta="0"
          name="check_enrollment_fee"
          tool_tip="Sets whether to require an enrollment fee to join the group"
          top_pad="5"
-         width="90" />
+         width="300" />
         <spinner
          decimal_digits="0"
          follows="left|top"
@@ -161,43 +135,38 @@ Hover your mouse over the options for more help.
          label_width="20"
          label="L$"
          layout="topleft"
-         left="25"
+         right="-10"
          max_val="99999"
-         top_pad="5"
+         left_pad="2"
          name="spin_enrollment_fee"
          tool_tip="New members must pay this fee to join the group when Enrollment Fee is checked."
-         top_delta="-2"
          width="105" />
         <check_box
          height="16"
          initial_value="true"
          label="Show in search"
          layout="topleft"
-         left="4"
+         left="10"
          name="show_in_group_list"
          tool_tip="Let people see this group in search results"
          top_pad="4"
-         width="90" />
+         width="300" />
         <combo_box
          height="20"
          layout="topleft"
          left_delta="0"
          name="group_mature_check"
          tool_tip="Sets whether your group information is considered mature"
-         top_pad="10"
-         width="240">
-            <combo_box.item
-             label="- Select Mature -"
-             name="select_mature"
-             value="Select" />
-            <combo_box.item
-             label="Mature Content"
-             name="mature"
-             value="Mature" />
+         top_pad="5"
+         width="190">
             <combo_box.item
              label="PG Content"
              name="pg"
              value="Not Mature" />
-        </combo_box>  
+             <combo_box.item
+             label="Mature Content"
+             name="mature"
+             value="Mature" />
+        </combo_box>
     </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 da6cf8891a4cee47c903421d1584ea4cb4e4e2a3..d8d47c40084940d6390abfcb49aa9aab3b9ceb3d 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
@@ -1,20 +1,22 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-
 <panel
- 	follows="left|top|right|bottom"
-	height="660"
-	label="Group Info"
- 	layout="topleft"
-	name="panel_group_info"
-	border="false"
-	width="300">
+background_visible="true"
+ follows="all"
+ height="570"
+ label="Group Info"
+ layout="topleft"
+ min_height="350"
+ left="0"
+ top="20"
+ name="GroupInfo"
+ width="333">
     <panel.string
      name="default_needs_apply_text">
-        There are unapplied changes on the current tab.
+        There are unsaved changes to the current tab
     </panel.string>
     <panel.string
      name="want_apply_text">
-        Do you want to apply these changes?
+        Do you want to save these changes?
     </panel.string>
     <panel.string
      name="group_join_btn">
@@ -25,34 +27,34 @@
         Free
     </panel.string>
     <button
-     layout="topleft"
-     name="back"
-     right="-9"
-     top="0"
-     width="25"
-     height="25"
-     label=""
      follows="top|right"
+     height="23"
      image_overlay="BackArrow_Off"
-     tab_stop="false" />
-    <text
      layout="topleft"
-     top="0"
+     name="back"
+     picture_style="true"
      left="10"
-     width="250"
-     height="20"
+     tab_stop="false"
+     top="2"
+     width="23" />
+    <text
+     follows="top|left|right"
      font="SansSerifHugeBold"
+     height="26"
+     layout="topleft"
+     left_pad="10"
+     name="group_name"
      text_color="white"
-     follows="top|left|right"
-     mouse_opaque="true"
-     use_ellipses="true"
-     name="group_name">(Loading...)</text>
+     top="0"
+     value="(Loading...)"
+     use_elipsis="true"
+     width="300" />
     <line_editor
      follows="left|top"
      font="SansSerif"
      label="Type your new group name here"
      layout="topleft"
-     left_delta="0"
+     left_delta="10"
      max_length="35"
      name="group_name_editor"
      top_delta="5"
@@ -64,7 +66,7 @@
      height="113"
      label=""
      layout="topleft"
-	 left="10"
+     left="20"
      name="insignia"
      tool_tip="Click to choose a picture"
      top_pad="5"
@@ -79,7 +81,7 @@
      name="prepend_founded_by"
      top_delta="0"
      width="140">
-      Founded by:
+      Founder:
     </text>
     <name_box
      follows="left|top"
@@ -88,10 +90,12 @@
      layout="topleft"
      left_delta="0"
      name="founder_name"
-     top_pad="10"
+     top_pad="2"
      use_ellipses="true"
      width="140" />
     <text
+    font="SansSerifBig"
+    text_color="EmphasisColor"
      type="string"
      follows="left|top"
      height="16"
@@ -106,22 +110,84 @@
     <button
      follows="left|top"
      left_delta="0"
-     top_pad="10"
-     height="20"
+     top_pad="6"
+     height="23"
      label="Join now!"
      label_selected="Join now!"
      name="btn_join"
      visible="true"
-     width="85" />
-    <button
-     top="632"
-     height="20"
-     font="SansSerifSmall"
-     label="Save"
-     label_selected="Save"
-     name="btn_apply"
-     left="5"
-     width="65" />
+     width="120" />
+   <accordion
+             follows="all"
+             height="405"
+             layout="topleft"
+             left="0"
+             name="groups_accordion"
+             top_pad="20"
+             width="333">
+             <accordion_tab
+                 can_resize="false"
+                 layout="topleft"
+                 name="tab_general"
+                 title="General">
+        <panel
+        border="false"
+         filename="panel_group_general.xml"
+         layout="topleft"
+         left="0"
+         help_topic="group_general_tab"
+         name="general_tab"
+         top="0"
+         width="333" />
+         </accordion_tab>
+         <accordion_tab
+                 can_resize="false"
+                 expanded="false"
+                 layout="topleft"
+                 name="tab_roles"
+                 title="Roles">
+        <panel
+        border="false"
+         filename="panel_group_roles.xml"
+         layout="topleft"
+         left="0"
+         help_topic="group_roles_tab"
+         name="roles_tab"
+         top="0"
+         width="333" />
+         </accordion_tab>
+         <accordion_tab
+                 can_resize="false"
+                 expanded="false"
+                 layout="topleft"
+                 name="tab_notices"
+                 title="Notices">
+        <panel
+         filename="panel_group_notices.xml"
+         layout="topleft"
+         left="0"
+         help_topic="group_notices_tab"
+         name="notices_tab"
+         top="0"
+         width="333" />
+         </accordion_tab>
+                  <accordion_tab
+                 can_resize="false"
+                 expanded="false"
+                 layout="topleft"
+                 name="tab_notices"
+                 title="Land/Assets">
+        <panel
+        border="false"
+         filename="panel_group_land_money.xml"
+         layout="topleft"
+         left="0"
+         help_topic="group_land_money_tab"
+         name="land_money_tab"
+         top="0"
+         width="333" />
+         </accordion_tab>
+         </accordion>
     <button
      follows="top|left"
      height="20"
@@ -129,41 +195,31 @@
      layout="topleft"
      name="btn_refresh"
      picture_style="true"
-     top="632"
-     left="75"
+     left="5"
      width="20" />
+     <button
+     height="20"
+     font="SansSerifSmall"
+     label="Save"
+     label_selected="Save"
+     name="btn_apply"
+     left_pad="5"
+     width="65" />
     <button
-     top="632"
      height="20"
      label="Create"
      label_selected="Create"
      name="btn_create"
-     left="5"
+     left_pad="5"
      visible="false"
      width="65" />
     <button
-	 top="632"
-	 left="75"	 
+     left_pad="5"
      height="20"
      label="Cancel"
      label_selected="Cancel"
      name="btn_cancel"
      visible="false"
      width="65" />
-      <accordion layout="topleft" left="2" width="296" top="135" height="500" follows="all" name="group_accordion">
-		<accordion_tab min_height="445" title="General" name="group_general_tab">
-        	<panel class="panel_group_general" filename="panel_group_general.xml" name="group_general_tab_panel"/>
-		</accordion_tab>
-		<accordion_tab min_height="380" title="Members &amp; Roles" name="group_roles_tab" expanded="False" can_resize="false">
-        	<panel class="panel_group_roles" filename="panel_group_roles.xml" name="group_roles_tab_panel"/>
-		</accordion_tab>
-		<accordion_tab min_height="530" title="Notices" name="group_notices_tab" expanded="False" can_resize="false">
-			<panel class="panel_group_notices" filename="panel_group_notices.xml" name="group_notices_tab_panel"/>
-		</accordion_tab>
-		<accordion_tab min_height="270" title="Land &amp; L$" name="group_land_tab" expanded="False" can_resize="false">
-			<panel class="panel_group_land_money" filename="panel_group_land_money.xml" name="group_land_tab_panel"/>
-		</accordion_tab>
-	  </accordion>
-
 
 </panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml
index af1919bd8f332ff195495df6fdabb2751f1da622..e2e4ca8b8f2827e78729e370f31d80d813081c2b 100644
--- a/indra/newview/skins/default/xui/en/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml
@@ -1,20 +1,20 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
- border="true"
- height="490"
+ border="false"
+ height="412"
  label="Members &amp; Roles"
  layout="topleft"
- left="1"
+ left="0"
+ top="0"
  name="roles_tab"
- top="490"
- width="280">
+ width="313">
     <panel.string
      name="default_needs_apply_text">
-        There are unapplied changes on the current sub-tab.
+        There are unsaved changes to the current tab
     </panel.string>
     <panel.string
      name="want_apply_text">
-        Do you want to apply these changes?
+        Do you want to save these changes?
     </panel.string>
     <panel.string
      name="help_text" />
@@ -160,17 +160,19 @@
         </text>
     </panel> -->
     <tab_container
+    border="true"
      follows="left|top"
-     height="180"
+     height="260"
      layout="topleft"
      left="5"
      name="roles_tab_container"
      tab_position="top"
-     top="10"
-     width="265">
+     tab_height="20"
+     top="0"
+     width="303">
         <panel
-         border="true"
-         height="165"
+         border="false"
+         height="260"
          label="Members"
          layout="topleft"
          left="1"
@@ -179,7 +181,7 @@
          tool_tip="Members"
          top="17"
          class="panel_group_members_subtab"
-         width="265">
+         width="300">
             <panel.string
              name="help_text">
                 You can add or remove Roles assigned to Members.
@@ -190,77 +192,56 @@ clicking on their names.
          layout="topleft"
          top="10"
          left="4"
-         width="255"
+         width="280"
          height="20"
          follows="left|top|right"
          max_length="250"
          label="Filter Members"
          name="filter_input"
          font="SansSerif" />
-            <!--<line_editor
-             border_style="line"
-             border_thickness="1"
-             follows="left|top"
-             height="16"
-             layout="topleft"
-             left="4"
-             max_length="63"
-             name="search_text"
-             top="10"
-             width="90" />
-            <button
-             font="SansSerifSmall"
-             height="20"
-             label="Search"
-             layout="topleft"
-             left_pad="5"
-             name="search_button"
-             top_delta="-2"
-             width="80" />
-            <button
+          <!--  <button
              enabled="false"
              font="SansSerifSmall"
              height="20"
              label="Show All"
              layout="topleft"
-             left_pad="0"
+             left_pad="-90"
              name="show_all_button"
-             top_delta="0"
-             width="80" /> -->
+             top_delta="-6"
+             width="80" />-->
             <name_list
              column_padding="0"
              draw_heading="true"
-             heading_height="14"
-             height="100"
+             heading_height="20"
+             height="160"
              follows="left|top"
              layout="topleft"
-             left="4"
+             left="0"
              multi_select="true"
              name="member_list"
-             top_pad="6"
-             width="255">
+             top_pad="2"
+             width="300">
                 <name_list.columns
                  label="Member"
                  name="name"
-                 width="90" />
+               relative_width="0.45" />
                 <name_list.columns
                  label="Donations"
                  name="donated"
-                 width="95" />
+         relative_width="0.3" />
                 <name_list.columns
                  label="Online"
                  name="online"
-                 width="80" />
+         relative_width="0.2" />
             </name_list>
             <button
              height="20"
              font="SansSerifSmall"
              label="Invite"
              layout="topleft"
-             left_delta="0"
              name="member_invite"
-             top_pad="6"
-             width="125" />
+             top_pad="3"
+             width="100" />
             <button
              height="20"
              font="SansSerifSmall"
@@ -268,18 +249,17 @@ clicking on their names.
              layout="topleft"
              left_pad="5"
              name="member_eject"
-             top_delta="0"
-             width="125" />
+             width="100" />
             <icon
              height="16"
-             image_name="inv_folder_plain_closed.tga"
+             image_name="Inv_FolderClosed"
              layout="topleft"
              name="power_folder_icon"
              visible="false"
              width="16" />
         </panel>
         <panel
-         border="true"
+         border="false"
          height="164"
          label="Roles"
          layout="topleft"
@@ -292,7 +272,7 @@ clicking on their names.
             <panel.string
              name="help_text">
                 Roles have a title and an allowed list of Abilities
-that Members can perform. Members can belong to 
+that Members can perform. Members can belong to
 one or more Roles. A group can have up to 10 Roles,
 including the Everyone and Owner Roles.
             </panel.string>
@@ -302,7 +282,7 @@ including the Everyone and Owner Roles.
             </panel.string>
             <panel.string
              name="power_folder_icon">
-                inv_folder_plain_closed.tga
+                Inv_FolderClosed
             </panel.string>
             <panel.string
              name="power_all_have_icon">
@@ -316,7 +296,7 @@ including the Everyone and Owner Roles.
             layout="topleft"
             top="10"
             left="4"
-            width="255"
+            width="260"
             height="20"
             follows="left|top|right"
             max_length="250"
@@ -357,13 +337,13 @@ including the Everyone and Owner Roles.
              column_padding="0"
              draw_heading="true"
              follows="left|top"
-             heading_height="14"
-             height="100"
+             heading_height="20"
+             height="150"
              layout="topleft"
              left="4"
              name="role_list"
              top_pad="4"
-             width="255">
+             width="300">
                 <scroll_list.columns
                  label="Role"
                  name="name"
@@ -397,7 +377,7 @@ including the Everyone and Owner Roles.
              width="125" />
         </panel>
         <panel
-         border="true"
+         border="false"
          height="164"
          label="Abilities"
          layout="topleft"
@@ -407,7 +387,7 @@ including the Everyone and Owner Roles.
          class="panel_group_actions_subtab"
          top="17"
          tool_tip="You can view an Ability&apos;s Description and which Roles and Members can execute the Ability."
-         width="265">
+         width="300">
             <panel.string
              name="help_text">
                 Abilities allow Members in Roles to do specific
@@ -486,13 +466,13 @@ things in this group. There&apos;s a broad variety of Abilities.
         </panel>
     </tab_container>
     <panel
-     height="190"
+     height="150"
      layout="topleft"
      follows="left|top"
      left="10"
      name="members_footer"
-     top_pad="10"
-     width="265">
+     top_pad="2"
+     width="300">
         <text
          type="string"
          font="SansSerif"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 4eacd72a7d3acaccbeac4261326f70b7952567f4..e842517853dd421577584b88b0b89884b9e0e7b4 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -74,6 +74,7 @@
 	<string name="TooltipTeleportUrl">Click to teleport to this location</string>
 	<string name="TooltipObjectIMUrl">Click to view this object's description</string>
 	<string name="TooltipSLAPP">Click to run the secondlife:// command</string>
+	<string name="CurrentURL" value=" CurrentURL: [CurrentURL]" />
 	
 	<!-- ButtonToolTips, llfloater.cpp -->
 	<string name="BUTTON_CLOSE_DARWIN">Close (&#8984;W)</string>
@@ -636,7 +637,7 @@ Sets the script timer to zero
 float llGetAndResetTime()
 Returns the script time in seconds and then resets the script timer to zero
 	</string>
-	<string name="LSLTipText_llSound" translate="false">
+	<string name="LSLTipText_llSoplayund" translate="false">
 llSound(string sound, float volume, integer queue, integer loop)
 Plays sound at volume and whether it should loop or not
 	</string>
@@ -2187,6 +2188,7 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
 
 	<!-- media -->
 	<string name="Multiple Media">Multiple Media</string>
+	<string name="Play Media">Play/Pause Media</string>
 	
 	<!-- OSMessageBox messages -->
 	<string name="MBCmdLineError">
diff --git a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml
index dabcb1038bf97b539aa5277fbbde91eb09a2a829..fcfe89c6530852c9a9f47babc3e233230d2a3135 100644
--- a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml
+++ b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml
@@ -9,4 +9,5 @@
     header_image="Accordion_Off"
     header_image_over="Accordion_Over"
     header_image_pressed="Accordion_Press"
+    header_image_selected="Accordion_Selected"
     />
diff --git a/indra/newview/skins/default/xui/en/widgets/panel.xml b/indra/newview/skins/default/xui/en/widgets/panel.xml
index 127f0f40e84c87cbf0fecc68ad7939464da063aa..1bd5a5bda26c69745ed6570ca2d384d9e17446f1 100644
--- a/indra/newview/skins/default/xui/en/widgets/panel.xml
+++ b/indra/newview/skins/default/xui/en/widgets/panel.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <!-- Optional parameters:
+  border - show border around panel
   bg_opaque_image - image name for "in-front" panel look
   bg_alpha_image - image name for "in-back" or transparent panel look
 -->