diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp
index ccf6dab942a1bdb1d28a897ad1feb4f4bf1257fc..07fc82c770f544f399a2bfbce51b5e9c682a3ba6 100644
--- a/indra/llplugin/llpluginprocesschild.cpp
+++ b/indra/llplugin/llpluginprocesschild.cpp
@@ -54,8 +54,14 @@ LLPluginProcessChild::~LLPluginProcessChild()
 	if(mInstance != NULL)
 	{
 		sendMessageToPlugin(LLPluginMessage("base", "cleanup"));
-		delete mInstance;
-		mInstance = NULL;
+
+		// IMPORTANT: under some (unknown) circumstances the apr_dso_unload() triggered when mInstance is deleted 
+		// appears to fail and lock up which means that a given instance of the slplugin process never exits. 
+		// This is bad, especially when users try to update their version of SL - it fails because the slplugin 
+		// process as well as a bunch of plugin specific files are locked and cannot be overwritten.
+		exit( 0 );
+		//delete mInstance;
+		//mInstance = NULL;
 	}
 }
 
diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
index 37a28ac721306b6148c4761bc5e12653c53fa6af..1de1d6ded4a0df1a244bb949f3ddae5cfe649e1b 100644
--- a/indra/llrender/llfontgl.cpp
+++ b/indra/llrender/llfontgl.cpp
@@ -472,7 +472,7 @@ F32 LLFontGL::getWidthF32(const llwchar* wchars, S32 begin_offset, S32 max_chars
 }
 
 // Returns the max number of complete characters from text (up to max_chars) that can be drawn in max_pixels
-S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars, BOOL end_on_word_boundary) const
+S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars, EWordWrapStyle end_on_word_boundary) const
 {
 	if (!wchars || !wchars[0] || max_chars == 0)
 	{
@@ -562,9 +562,24 @@ S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_ch
 		drawn_x = cur_x;
 	}
 
-	if( clip && end_on_word_boundary && (start_of_last_word != 0) )
+	if( clip )
 	{
-		i = start_of_last_word;
+		switch (end_on_word_boundary)
+		{
+		case ONLY_WORD_BOUNDARIES:
+			i = start_of_last_word;
+			break;
+		case WORD_BOUNDARY_IF_POSSIBLE:
+			if (start_of_last_word != 0)
+			{
+				i = start_of_last_word;
+			}
+			break;
+		default:
+		case ANYWHERE:
+			// do nothing
+			break;
+		}
 	}
 	return i;
 }
diff --git a/indra/llrender/llfontgl.h b/indra/llrender/llfontgl.h
index ea8eee769030267229d23506cbc5c8736c1a420b..dfa4cf8ce550f6853b3c3a94bfbf123ba2747a7e 100644
--- a/indra/llrender/llfontgl.h
+++ b/indra/llrender/llfontgl.h
@@ -122,7 +122,13 @@ class LLFontGL
 	// The following are called often, frequently with large buffers, so do not use a string interface
 	
 	// Returns the max number of complete characters from text (up to max_chars) that can be drawn in max_pixels
-	S32	maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars = S32_MAX, BOOL end_on_word_boundary = FALSE) const;
+	typedef enum e_word_wrap_style
+	{
+		ONLY_WORD_BOUNDARIES,
+		WORD_BOUNDARY_IF_POSSIBLE,
+		ANYWHERE
+	} EWordWrapStyle ;
+	S32	maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars = S32_MAX, EWordWrapStyle end_on_word_boundary = ANYWHERE) const;
 
 	// Returns the index of the first complete characters from text that can be drawn in max_pixels
 	// given that the character at start_pos should be the last character (or as close to last as possible).
diff --git a/indra/llui/llcheckboxctrl.cpp b/indra/llui/llcheckboxctrl.cpp
index cd10dfdb1c4d363a04c3380e5943565019b8576a..3d32157406f481fa3921fd1ca00a30235af3d8f3 100644
--- a/indra/llui/llcheckboxctrl.cpp
+++ b/indra/llui/llcheckboxctrl.cpp
@@ -107,8 +107,8 @@ LLCheckBoxCtrl::LLCheckBoxCtrl(const LLCheckBoxCtrl::Params& p)
 	{
 		tbparams.font(p.font);
 	}
+	tbparams.text_color( p.enabled() ? p.text_enabled_color() : p.text_disabled_color() );
 	mLabel = LLUICtrlFactory::create<LLTextBox> (tbparams);
-
 	addChild(mLabel);
 
 	// Button
diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp
index c9090d388da5d218732a330c48171c9228b5013e..e08d93b23277e68d2ca4cced4f6e50fee41d1dad 100644
--- a/indra/llui/llconsole.cpp
+++ b/indra/llui/llconsole.cpp
@@ -330,7 +330,7 @@ void LLConsole::Paragraph::updateLines(F32 screen_width, const LLFontGL* font, b
 			skip_chars = 0;
 		}
 
-		U32 drawable = font->maxDrawableChars(mParagraphText.c_str()+paragraph_offset, screen_width, line_end - paragraph_offset, TRUE);
+		U32 drawable = font->maxDrawableChars(mParagraphText.c_str()+paragraph_offset, screen_width, line_end - paragraph_offset, LLFontGL::WORD_BOUNDARY_IF_POSSIBLE);
 
 		if (drawable != 0)
 		{
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index 8a21155cc3a0ab4b58b787f4a55ca6f4c487c84e..73e4d126f32d36e3f8ff449f00712ae83adf2b12 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -1583,7 +1583,6 @@ void LLLineEditor::draw()
 	F32 alpha = getDrawContext().mAlpha;
 	S32 text_len = mText.length();
 	static LLUICachedControl<S32> lineeditor_cursor_thickness ("UILineEditorCursorThickness", 0);
-	static LLUICachedControl<S32> lineeditor_v_pad ("UILineEditorVPad", 0);
 	static LLUICachedControl<F32> preedit_marker_brightness ("UIPreeditMarkerBrightness", 0);
 	static LLUICachedControl<S32> preedit_marker_gap ("UIPreeditMarkerGap", 0);
 	static LLUICachedControl<S32> preedit_marker_position ("UIPreeditMarkerPosition", 0);
@@ -1609,6 +1608,8 @@ void LLLineEditor::draw()
 	LLRect background( 0, getRect().getHeight(), getRect().getWidth(), 0 );
 	background.stretch( -mBorderThickness );
 
+	S32 lineeditor_v_pad = llround((background.getHeight() - mGLFont->getLineHeight())/2);
+
 	drawBackground();
 	
 	// draw text
diff --git a/indra/llui/llmenubutton.h b/indra/llui/llmenubutton.h
index 02eb9d380675fffae506fb148b8e0f8b7d2393de..d0e99d9f40a8b5493c29c318b31f79de0caebc43 100644
--- a/indra/llui/llmenubutton.h
+++ b/indra/llui/llmenubutton.h
@@ -55,6 +55,7 @@ class LLMenuButton
 	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
 	/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask );
 	void hideMenu();
+	LLMenuGL* getMenu() { return mMenu; }
 
 protected:
 	friend class LLUICtrlFactory;
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index abcc0010c032cb6b710636086aa46bdcc68c9a09..29adb0d8b64824be016e55abeec4777d610e1b33 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -1143,37 +1143,41 @@ BOOL LLMenuItemBranchGL::handleKeyHere( KEY key, MASK mask )
 	if (!branch)
 		return LLMenuItemGL::handleKeyHere(key, mask);
 
-	if (getMenu()->getVisible() && branch->getVisible() && key == KEY_LEFT)
+	// an item is highlighted, my menu is open, and I have an active sub menu or we are in
+	// keyboard navigation mode
+	if (getHighlight() 
+		&& getMenu()->isOpen() 
+		&& (isActive() || LLMenuGL::getKeyboardMode()))
 	{
-		// switch to keyboard navigation mode
-		LLMenuGL::setKeyboardMode(TRUE);
-
-		BOOL handled = branch->clearHoverItem();
-		if (branch->getTornOff())
+		if (branch->getVisible() && key == KEY_LEFT)
 		{
-			((LLFloater*)branch->getParent())->setFocus(FALSE);
-		}
-		if (handled && getMenu()->getTornOff())
-		{
-			((LLFloater*)getMenu()->getParent())->setFocus(TRUE);
-		}
-		return handled;
-	}
+			// switch to keyboard navigation mode
+			LLMenuGL::setKeyboardMode(TRUE);
 
-	if (getHighlight() && 
-		getMenu()->isOpen() && 
-		key == KEY_RIGHT && !branch->getHighlightedItem())
-	{
-		// switch to keyboard navigation mode
-		LLMenuGL::setKeyboardMode(TRUE);
+			BOOL handled = branch->clearHoverItem();
+			if (branch->getTornOff())
+			{
+				((LLFloater*)branch->getParent())->setFocus(FALSE);
+			}
+			if (handled && getMenu()->getTornOff())
+			{
+				((LLFloater*)getMenu()->getParent())->setFocus(TRUE);
+			}
+			return handled;
+		}
 
-		LLMenuItemGL* itemp = branch->highlightNextItem(NULL);
-		if (itemp)
+		if (key == KEY_RIGHT && !branch->getHighlightedItem())
 		{
-			return TRUE;
+			// switch to keyboard navigation mode
+			LLMenuGL::setKeyboardMode(TRUE);
+
+			LLMenuItemGL* itemp = branch->highlightNextItem(NULL);
+			if (itemp)
+			{
+				return TRUE;
+			}
 		}
 	}
-
 	return LLMenuItemGL::handleKeyHere(key, mask);
 }
 
@@ -1431,7 +1435,7 @@ BOOL LLMenuItemBranchDownGL::handleKeyHere(KEY key, MASK mask)
 {
 	BOOL menu_open = getBranch()->getVisible();
 	// don't do keyboard navigation of top-level menus unless in keyboard mode, or menu expanded
-	if (getHighlight() && getMenu()->getVisible() && (isActive() || LLMenuGL::getKeyboardMode()))
+	if (getHighlight() && getMenu()->isOpen() && (isActive() || LLMenuGL::getKeyboardMode()))
 	{
 		if (key == KEY_LEFT)
 		{
@@ -2836,6 +2840,7 @@ BOOL LLMenuGL::handleScrollWheel( S32 x, S32 y, S32 clicks )
 	return TRUE;
 }
 
+
 void LLMenuGL::draw( void )
 {
 	if (mNeedsArrange)
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 7447a984aca167c6b9f819b47f5375d68cb76a00..5ebf49c48818df9b3cc2deee0f83816377607ad3 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -2509,10 +2509,15 @@ S32	LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 lin
 	// set max characters to length of segment, or to first newline
 	max_chars = llmin(max_chars, last_char - (mStart + segment_offset));
 
+	// if no character yet displayed on this line, don't require word wrapping since
+	// we can just move to the next line, otherwise insist on it so we make forward progress
+	LLFontGL::EWordWrapStyle word_wrap_style = (line_offset == 0) 
+		? LLFontGL::WORD_BOUNDARY_IF_POSSIBLE 
+		: LLFontGL::ONLY_WORD_BOUNDARIES;
 	S32 num_chars = mStyle->getFont()->maxDrawableChars(text.c_str() + segment_offset + mStart, 
 												(F32)num_pixels,
 												max_chars, 
-												TRUE);
+												word_wrap_style);
 
 	if (num_chars == 0 
 		&& line_offset == 0 
diff --git a/indra/llwindow/llkeyboardwin32.cpp b/indra/llwindow/llkeyboardwin32.cpp
index 35a3e7621af318372cfd0329218e111f8f4b2c9c..ab5ecb4e63cf6053af717d1415abc54726e6952e 100644
--- a/indra/llwindow/llkeyboardwin32.cpp
+++ b/indra/llwindow/llkeyboardwin32.cpp
@@ -80,7 +80,7 @@ LLKeyboardWin32::LLKeyboardWin32()
 	mTranslateKeyMap[VK_OEM_COMMA]  = ',';
 	mTranslateKeyMap[VK_OEM_MINUS]  = '-';
 	mTranslateKeyMap[VK_OEM_PERIOD] = '.';
-	mTranslateKeyMap[VK_OEM_2] = KEY_PAD_DIVIDE;
+	mTranslateKeyMap[VK_OEM_2] = '/';//This used to be KEY_PAD_DIVIDE, but that breaks typing into text fields in media prims
 	mTranslateKeyMap[VK_OEM_3] = '`';
 	mTranslateKeyMap[VK_OEM_4] = '[';
 	mTranslateKeyMap[VK_OEM_5] = '\\';
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 3b9c840e729663809b824137f564b433ee4165b7..b591111b757371263df42ed269644702c20cadaa 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -2184,7 +2184,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
 			{
 				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MBUTTONUP");
 				LLFastTimer t2(FTM_MOUSEHANDLER);
-				// Because we move the cursor position in tllviewerhe app, we need to query
+				// Because we move the cursor position in the llviewer app, we need to query
 				// to find out where the cursor at the time the event is handled.
 				// If we don't do this, many clicks could get buffered up, and if the
 				// first click changes the cursor position, all subsequent clicks
@@ -2214,7 +2214,27 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
 				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEWHEEL");
 				static short z_delta = 0;
 
-				z_delta += HIWORD(w_param);
+				RECT	client_rect;
+
+				// eat scroll events that occur outside our window, since we use mouse position to direct scroll
+				// instead of keyboard focus
+				// NOTE: mouse_coord is in *window* coordinates for scroll events
+				POINT mouse_coord = {(S32)(S16)LOWORD(l_param), (S32)(S16)HIWORD(l_param)};
+
+				if (ScreenToClient(window_imp->mWindowHandle, &mouse_coord)
+					&& GetClientRect(window_imp->mWindowHandle, &client_rect))
+				{
+					// we have a valid mouse point and client rect
+					if (mouse_coord.x < client_rect.left || client_rect.right < mouse_coord.x
+						|| mouse_coord.y < client_rect.top || client_rect.bottom < mouse_coord.y)
+					{
+						// mouse is outside of client rect, so don't do anything
+						return 0;
+					}
+				}
+
+				S16 incoming_z_delta = HIWORD(w_param);
+				z_delta += incoming_z_delta;
 				// cout << "z_delta " << z_delta << endl;
 
 				// current mouse wheels report changes in increments of zDelta (+120, -120)
diff --git a/indra/newview/app_settings/ignorable_dialogs.xml b/indra/newview/app_settings/ignorable_dialogs.xml
index ab18febcccc91213aa7902d8a0415c0504aaf585..e825f13e82995eb4457e17839ed684029f892c49 100644
--- a/indra/newview/app_settings/ignorable_dialogs.xml
+++ b/indra/newview/app_settings/ignorable_dialogs.xml
@@ -177,21 +177,10 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
-    <key>FirstStreamingMusic</key>
+    <key>FirstStreamingMedia</key>
     <map>
       <key>Comment</key>
-      <string>Enables FirstStreamingMusic warning dialog</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
-    <key>FirstStreamingVideo</key>
-    <map>
-      <key>Comment</key>
-      <string>Enables FirstStreamingVideo warning dialog</string>
+      <string>Enables FirstStreamingMedia warning dialog</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 61cb93b67595275f8624ff9047eee4db22157060..7d98a4b6ce6c49a7737737ee2d262383c1d4d2cb 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -4820,6 +4820,17 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+	<key>MyOutfitsAutofill</key>
+	<map>
+		<key>Comment</key>
+		<string>Always autofill My Outfits from library when empty (else happens just once).</string>
+		<key>Persist</key>
+		<integer>1</integer>
+		<key>Type</key>
+		<string>Boolean</string>
+		<key>Value</key>
+		<integer>0</integer>
+	</map>
     <key>NearMeRange</key>
     <map>
       <key>Comment</key>
@@ -9331,18 +9342,7 @@
       <string>S32</string>
       <key>Value</key>
       <integer>2</integer>
-    </map>
-    <key>UILineEditorVPad</key>
-    <map>
-      <key>Comment</key>
-      <string>UI Line Editor Vertical Pad</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <integer>5</integer>
-    </map>
+    </map> 
     <key>UIMaxComboWidth</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index d21965568d252c5a44f5d71806134e97b43bda12..10a2dd132ad965ddc812d0be00dfd1425732fa4f 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -95,19 +95,38 @@ class LLLibraryOutfitsFetch : public LLInventoryFetchDescendentsObserver
 	enum ELibraryOutfitFetchStep {
 		LOFS_FOLDER = 0,
 		LOFS_OUTFITS,
+		LOFS_LIBRARY,
+		LOFS_IMPORTED,
 		LOFS_CONTENTS
 	};
-	LLLibraryOutfitsFetch() : mCurrFetchStep(LOFS_FOLDER), mOutfitsPopulated(false) {}
+	LLLibraryOutfitsFetch() : mCurrFetchStep(LOFS_FOLDER), mOutfitsPopulated(false) 
+	{
+		mMyOutfitsID = LLUUID::null;
+		mClothingID = LLUUID::null;
+		mLibraryClothingID = LLUUID::null;
+		mImportedClothingID = LLUUID::null;
+		mImportedClothingName = "Imported Library Clothing";
+	}
 	~LLLibraryOutfitsFetch() {}
-	virtual void done();	
+	virtual void done();
 	void doneIdle();
+	LLUUID mMyOutfitsID;
+	void importedFolderFetch();
 protected:
 	void folderDone(void);
 	void outfitsDone(void);
+	void libraryDone(void);
+	void importedFolderDone(void);
 	void contentsDone(void);
 	enum ELibraryOutfitFetchStep mCurrFetchStep;
-	std::vector< std::pair< LLUUID, std::string > > mOutfits;
+	typedef std::vector< std::pair< LLUUID, std::string > > cloth_folder_vec_t;
+	cloth_folder_vec_t mLibraryClothingFolders;
+	cloth_folder_vec_t mImportedClothingFolders;
 	bool mOutfitsPopulated;
+	LLUUID mClothingID;
+	LLUUID mLibraryClothingID;
+	LLUUID mImportedClothingID;
+	std::string mImportedClothingName;
 };
 
 LLAgentWearables gAgentWearables;
@@ -911,7 +930,7 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
 	
 	// If this is the very first time the user has logged into viewer2+ (from a legacy viewer, or new account)
 	// then auto-populate outfits from the library into the My Outfits folder.
-	if (LLInventoryModel::getIsFirstTimeInViewer2())
+	if (LLInventoryModel::getIsFirstTimeInViewer2() || gSavedSettings.getBOOL("MyOutfitsAutofill"))
 	{
 		gAgentWearables.populateMyOutfitsFolder();
 	}
@@ -2126,11 +2145,15 @@ void LLAgentWearables::populateMyOutfitsFolder(void)
 	// Get the complete information on the items in the inventory and 
 	// setup an observer that will wait for that to happen.
 	LLInventoryFetchDescendentsObserver::folder_ref_t folders;
-	const LLUUID my_outfits_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
+	outfits->mMyOutfitsID = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
 
-	folders.push_back(my_outfits_id);
+	folders.push_back(outfits->mMyOutfitsID);
 	gInventory.addObserver(outfits);
 	outfits->fetchDescendents(folders);
+	if (outfits->isEverythingComplete())
+	{
+		outfits->done();
+	}
 }
 
 void LLLibraryOutfitsFetch::done()
@@ -2144,13 +2167,24 @@ void LLLibraryOutfitsFetch::done()
 void LLLibraryOutfitsFetch::doneIdle()
 {
 	gInventory.addObserver(this); // Add this back in since it was taken out during ::done()
+	
 	switch (mCurrFetchStep)
 	{
 		case LOFS_FOLDER:
 			folderDone();
+			mCurrFetchStep = LOFS_OUTFITS;
 			break;
 		case LOFS_OUTFITS:
 			outfitsDone();
+			mCurrFetchStep = LOFS_LIBRARY;
+			break;
+		case LOFS_LIBRARY:
+			libraryDone();
+			mCurrFetchStep = LOFS_IMPORTED;
+			break;
+		case LOFS_IMPORTED:
+			importedFolderDone();
+			mCurrFetchStep = LOFS_CONTENTS;
 			break;
 		case LOFS_CONTENTS:
 			contentsDone();
@@ -2172,67 +2206,217 @@ void LLLibraryOutfitsFetch::doneIdle()
 
 void LLLibraryOutfitsFetch::folderDone(void)
 {
-	// Early out if we already have items in My Outfits.
 	LLInventoryModel::cat_array_t cat_array;
 	LLInventoryModel::item_array_t wearable_array;
-	gInventory.collectDescendents(mCompleteFolders.front(), cat_array, wearable_array, 
+	gInventory.collectDescendents(mMyOutfitsID, cat_array, wearable_array, 
 								  LLInventoryModel::EXCLUDE_TRASH);
+	
+	// Early out if we already have items in My Outfits.
 	if (cat_array.count() > 0 || wearable_array.count() > 0)
 	{
 		mOutfitsPopulated = true;
 		return;
 	}
 	
-	// Get the UUID of the library's clothing folder
-	const LLUUID library_clothing_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING, false, true);
+	mClothingID = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
+	mLibraryClothingID = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING, false, true);
 	
 	mCompleteFolders.clear();
 	
 	// Get the complete information on the items in the inventory.
 	LLInventoryFetchDescendentsObserver::folder_ref_t folders;
-	folders.push_back(library_clothing_id);
-	mCurrFetchStep = LOFS_OUTFITS;
+	folders.push_back(mClothingID);
+	folders.push_back(mLibraryClothingID);
 	fetchDescendents(folders);
+	if (isEverythingComplete())
+	{
+		done();
+	}
 }
 
 void LLLibraryOutfitsFetch::outfitsDone(void)
 {
 	LLInventoryModel::cat_array_t cat_array;
 	LLInventoryModel::item_array_t wearable_array;
-	gInventory.collectDescendents(mCompleteFolders.front(), cat_array, wearable_array, 
-								  LLInventoryModel::EXCLUDE_TRASH);
-	
 	LLInventoryFetchDescendentsObserver::folder_ref_t folders;
 	
+	// Collect the contents of the Library's Clothing folder
+	gInventory.collectDescendents(mLibraryClothingID, cat_array, wearable_array, 
+								  LLInventoryModel::EXCLUDE_TRASH);
+	
 	llassert(cat_array.count() > 0);
 	for (LLInventoryModel::cat_array_t::const_iterator iter = cat_array.begin();
 		 iter != cat_array.end();
 		 ++iter)
 	{
 		const LLViewerInventoryCategory *cat = iter->get();
+		
+		// Get the names and id's of every outfit in the library, except for ruth and other "misc" outfits.
 		if (cat->getName() != "More Outfits" && cat->getName() != "Ruth")
 		{
+			// Get the name of every outfit in the library 
 			folders.push_back(cat->getUUID());
-			mOutfits.push_back(std::make_pair(cat->getUUID(), cat->getName()));
+			mLibraryClothingFolders.push_back(std::make_pair(cat->getUUID(), cat->getName()));
+		}
+	}
+	
+	// Collect the contents of your Inventory Clothing folder
+	cat_array.clear();
+	wearable_array.clear();
+	gInventory.collectDescendents(mClothingID, cat_array, wearable_array, 
+								  LLInventoryModel::EXCLUDE_TRASH);
+
+	// Check if you already have an "Imported Library Clothing" folder
+	for (LLInventoryModel::cat_array_t::const_iterator iter = cat_array.begin();
+		 iter != cat_array.end();
+		 ++iter)
+	{
+		const LLViewerInventoryCategory *cat = iter->get();
+		if (cat->getName() == mImportedClothingName)
+		{
+			mImportedClothingID = cat->getUUID();
 		}
 	}
+	
 	mCompleteFolders.clear();
+	
+	fetchDescendents(folders);
+	if (isEverythingComplete())
+	{
+		done();
+	}
+}
+
+class LLLibraryOutfitsCopyDone: public LLInventoryCallback
+{
+public:
+	LLLibraryOutfitsCopyDone(LLLibraryOutfitsFetch * fetcher):
+	mFireCount(0), mLibraryOutfitsFetcher(fetcher)
+	{
+	}
+	
+	virtual ~LLLibraryOutfitsCopyDone()
+	{
+		if (mLibraryOutfitsFetcher)
+		{
+			gInventory.addObserver(mLibraryOutfitsFetcher);
+			mLibraryOutfitsFetcher->done();
+		}
+	}
+	
+	/* virtual */ void fire(const LLUUID& inv_item)
+	{
+		mFireCount++;
+	}
+private:
+	U32 mFireCount;
+	LLLibraryOutfitsFetch * mLibraryOutfitsFetcher;
+};
 
-	mCurrFetchStep = LOFS_CONTENTS;
+void LLLibraryOutfitsFetch::libraryDone(void)
+{
+	// Copy the clothing folders from the library into the imported clothing folder if necessary.
+	if (mImportedClothingID == LLUUID::null)
+	{
+		gInventory.removeObserver(this);
+		LLPointer<LLInventoryCallback> copy_waiter = new LLLibraryOutfitsCopyDone(this);
+		mImportedClothingID = gInventory.createNewCategory(mClothingID,
+														   LLFolderType::FT_NONE,
+														   mImportedClothingName);
+		
+		for (cloth_folder_vec_t::const_iterator iter = mLibraryClothingFolders.begin();
+			 iter != mLibraryClothingFolders.end();
+			 ++iter)
+		{
+			LLUUID folder_id = gInventory.createNewCategory(mImportedClothingID,
+															LLFolderType::FT_NONE,
+															iter->second);
+			LLAppearanceManager::getInstance()->shallowCopyCategory(iter->first, folder_id, copy_waiter);
+		}
+	}
+	else
+	{
+		// Skip straight to fetching the contents of the imported folder
+		importedFolderFetch();
+	}
+}
+
+void LLLibraryOutfitsFetch::importedFolderFetch(void)
+{
+	// Fetch the contents of the Imported Clothing Folder
+	LLInventoryFetchDescendentsObserver::folder_ref_t folders;
+	folders.push_back(mImportedClothingID);
+	
+	mCompleteFolders.clear();
+	
 	fetchDescendents(folders);
+	if (isEverythingComplete())
+	{
+		done();
+	}
 }
 
-void LLLibraryOutfitsFetch::contentsDone(void)
+void LLLibraryOutfitsFetch::importedFolderDone(void)
 {
-	for(S32 i = 0; i < (S32)mOutfits.size(); ++i)
+	LLInventoryModel::cat_array_t cat_array;
+	LLInventoryModel::item_array_t wearable_array;
+	LLInventoryFetchDescendentsObserver::folder_ref_t folders;
+	
+	// Collect the contents of the Imported Clothing folder
+	gInventory.collectDescendents(mImportedClothingID, cat_array, wearable_array, 
+								  LLInventoryModel::EXCLUDE_TRASH);
+	
+	for (LLInventoryModel::cat_array_t::const_iterator iter = cat_array.begin();
+		 iter != cat_array.end();
+		 ++iter)
+	{
+		const LLViewerInventoryCategory *cat = iter->get();
+		
+		// Get the name of every imported outfit
+		folders.push_back(cat->getUUID());
+		mImportedClothingFolders.push_back(std::make_pair(cat->getUUID(), cat->getName()));
+	}
+	
+	mCompleteFolders.clear();
+	fetchDescendents(folders);
+	if (isEverythingComplete())
+	{
+		done();
+	}
+}
+
+void LLLibraryOutfitsFetch::contentsDone(void)
+{		
+	LLInventoryModel::cat_array_t cat_array;
+	LLInventoryModel::item_array_t wearable_array;
+	
+	for (cloth_folder_vec_t::const_iterator folder_iter = mImportedClothingFolders.begin();
+		 folder_iter != mImportedClothingFolders.end();
+		 ++folder_iter)
 	{
 		// First, make a folder in the My Outfits directory.
-		const LLUUID parent_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
-		LLUUID folder_id = gInventory.createNewCategory(parent_id,
-														LLFolderType::FT_OUTFIT,
-														mOutfits[i].second);
-		LLAppearanceManager::getInstance()->shallowCopyCategory(mOutfits[i].first, folder_id, NULL);
+		LLUUID new_outfit_folder_id = gInventory.createNewCategory(mMyOutfitsID, LLFolderType::FT_OUTFIT, folder_iter->second);
+		
+		cat_array.clear();
+		wearable_array.clear();
+		// Collect the contents of each imported clothing folder, so we can create new outfit links for it
+		gInventory.collectDescendents(folder_iter->first, cat_array, wearable_array, 
+									  LLInventoryModel::EXCLUDE_TRASH);
+		
+		for (LLInventoryModel::item_array_t::const_iterator wearable_iter = wearable_array.begin();
+			 wearable_iter != wearable_array.end();
+			 ++wearable_iter)
+		{
+			const LLViewerInventoryItem *item = wearable_iter->get();
+			link_inventory_item(gAgent.getID(),
+								item->getLinkedUUID(),
+								new_outfit_folder_id,
+								item->getName(),
+								LLAssetType::AT_LINK,
+								NULL);
+		}
 	}
+
 	mOutfitsPopulated = true;
 }
 
@@ -2274,6 +2458,8 @@ void LLInitialWearablesFetch::processContents()
 	}
 	else
 	{
+		// if we're constructing the COF from the wearables message, we don't have a proper outfit link
+		LLAppearanceManager::instance().setOutfitDirty(true);
 		processWearablesMessage();
 	}
 	delete this;
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 25f1accb22146d78054a4ff456b1c81e10c5907b..4d4a89bcd432e4efab9323ffafde5f97917a1760 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -674,6 +674,10 @@ void LLAppearanceManager::updateAgentWearables(LLWearableHoldingPattern* holder,
 
 void LLAppearanceManager::updateAppearanceFromCOF()
 {
+	// update dirty flag to see if the state of the COF matches
+	// the saved outfit stored as a folder link
+	updateIsDirty();
+
 	dumpCat(getCOF(),"COF, start");
 
 	bool follow_folder_links = true;
@@ -723,14 +727,30 @@ void LLAppearanceManager::updateAppearanceFromCOF()
 		LLDynamicArray<LLFoundData*> found_container;
 		for(S32 i = 0; i  < wear_items.count(); ++i)
 		{
-			found = new LLFoundData(wear_items.get(i)->getLinkedUUID(), // Wear the base item, not the link
-									wear_items.get(i)->getAssetUUID(),
-									wear_items.get(i)->getName(),
-									wear_items.get(i)->getType());
-			holder->mFoundList.push_front(found);
-			found_container.put(found);
+			LLViewerInventoryItem *item = wear_items.get(i);
+			LLViewerInventoryItem *linked_item = item ? item->getLinkedItem() : NULL;
+			if (item && linked_item)
+			{
+				found = new LLFoundData(linked_item->getUUID(),
+										linked_item->getAssetUUID(),
+										linked_item->getName(),
+										linked_item->getType());
+				holder->mFoundList.push_front(found);
+				found_container.put(found);
+			}
+			else
+			{
+				if (!item)
+				{
+					llwarns << "attempt to wear a null item " << llendl;
+				}
+				else if (!linked_item)
+				{
+					llwarns << "attempt to wear a broken link " << item->getName() << llendl;
+				}
+			}
 		}
-		for(S32 i = 0; i < wear_items.count(); ++i)
+		for(S32 i = 0; i < found_container.count(); ++i)
 		{
 			holder->append = false;
 			found = found_container.get(i);
@@ -989,7 +1009,9 @@ void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_up
 	if (linked_already)
 	{
 		if (do_update)
+		{	
 			LLAppearanceManager::updateAppearanceFromCOF();
+		}
 		return;
 	}
 	else
@@ -1043,6 +1065,75 @@ void LLAppearanceManager::removeCOFItemLinks(const LLUUID& item_id, bool do_upda
 	}
 }
 
+void LLAppearanceManager::updateIsDirty()
+{
+	LLUUID cof = getCOF();
+	LLUUID base_outfit;
+
+	// find base outfit link 
+	const LLViewerInventoryItem* base_outfit_item = getBaseOutfitLink();
+	LLViewerInventoryCategory* catp = NULL;
+	if (base_outfit_item && base_outfit_item->getIsLinkType())
+	{
+		catp = base_outfit_item->getLinkedCategory();
+	}
+	if(catp && catp->getPreferredType() == LLFolderType::FT_OUTFIT)
+	{
+		base_outfit = catp->getUUID();
+	}
+
+	if(base_outfit.isNull())
+	{
+		// no outfit link found, display "unsaved outfit"
+		mOutfitIsDirty = true;
+	}
+	else
+	{
+		LLInventoryModel::cat_array_t cof_cats;
+		LLInventoryModel::item_array_t cof_items;
+		gInventory.collectDescendents(cof, cof_cats, cof_items,
+									  LLInventoryModel::EXCLUDE_TRASH);
+
+		LLInventoryModel::cat_array_t outfit_cats;
+		LLInventoryModel::item_array_t outfit_items;
+		gInventory.collectDescendents(base_outfit, outfit_cats, outfit_items,
+									  LLInventoryModel::EXCLUDE_TRASH);
+
+		if(outfit_items.count() != cof_items.count() -1)
+		{
+			// Current outfit folder should have one more item than the outfit folder.
+			// this one item is the link back to the outfit folder itself.
+			mOutfitIsDirty = true;
+		}
+		else
+		{
+			typedef std::set<LLUUID> item_set_t;
+			item_set_t cof_set;
+			item_set_t outfit_set;
+
+			// sort COF items by UUID
+			for (S32 i = 0; i < cof_items.count(); ++i)
+			{
+				LLViewerInventoryItem *item = cof_items.get(i);
+				// don't add the base outfit link to the list of objects we're comparing
+				if(item != base_outfit_item)
+				{
+					cof_set.insert(item->getLinkedUUID());
+				}
+			}
+
+			// sort outfit folder by UUID
+			for (S32 i = 0; i < outfit_items.count(); ++i)
+			{
+				LLViewerInventoryItem *item = outfit_items.get(i);
+				outfit_set.insert(item->getLinkedUUID());
+			}
+
+			mOutfitIsDirty = (outfit_set != cof_set);
+		}
+	}
+}
+
 //#define DUMP_CAT_VERBOSE
 
 void LLAppearanceManager::dumpCat(const LLUUID& cat_id, const std::string& msg)
@@ -1079,7 +1170,8 @@ void LLAppearanceManager::dumpItemArray(const LLInventoryModel::item_array_t& it
 }
 
 LLAppearanceManager::LLAppearanceManager():
-	mAttachmentInvLinkEnabled(false)
+	mAttachmentInvLinkEnabled(false),
+	mOutfitIsDirty(false)
 {
 }
 
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 11b910ee1104fea8a4bc38d2bddb97be4718497c..b9549689988658078a5d41eae8e7e96c37ff9378 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -96,6 +96,16 @@ class LLAppearanceManager: public LLSingleton<LLAppearanceManager>
 	// Add COF link to ensemble folder.
 	void addEnsembleLink(LLInventoryCategory* item, bool do_update = true);
 
+	//has the current outfit changed since it was loaded?
+	bool isOutfitDirty() { return mOutfitIsDirty; }
+
+	// set false if you just loaded the outfit, true otherwise
+	void setOutfitDirty(bool isDirty) { mOutfitIsDirty = isDirty; }
+	
+	// manually compare ouftit folder link to COF to see if outfit has changed.
+	// should only be necessary to do on initial login.
+	void updateIsDirty();
+
 protected:
 	LLAppearanceManager();
 	~LLAppearanceManager();
@@ -120,6 +130,7 @@ class LLAppearanceManager: public LLSingleton<LLAppearanceManager>
 
 	std::set<LLUUID> mRegisteredAttachments;
 	bool mAttachmentInvLinkEnabled;
+	bool mOutfitIsDirty;
 };
 
 #define SUPPORT_ENSEMBLES 0
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index becc30832df5d4eb5b4669e4c982c8ba60fbac26..fb1bded7959638c978ff5595d2f1a7c243066b3a 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -313,6 +313,7 @@ void init_default_trans_args()
 {
 	default_trans_args.insert("SECOND_LIFE"); // World
 	default_trans_args.insert("APP_NAME");
+	default_trans_args.insert("CAPITALIZED_APP_NAME");
 	default_trans_args.insert("SECOND_LIFE_GRID");
 	default_trans_args.insert("SUPPORT_SITE");
 }
@@ -1929,8 +1930,7 @@ bool LLAppViewer::initConfiguration()
 	LLFirstUse::addConfigVariable("FirstSandbox");
 	LLFirstUse::addConfigVariable("FirstFlexible");
 	LLFirstUse::addConfigVariable("FirstDebugMenus");
-	LLFirstUse::addConfigVariable("FirstStreamingMusic");
-	LLFirstUse::addConfigVariable("FirstStreamingVideo");
+	LLFirstUse::addConfigVariable("FirstStreamingMedia");
 	LLFirstUse::addConfigVariable("FirstSculptedPrim");
 	LLFirstUse::addConfigVariable("FirstVoice");
 	LLFirstUse::addConfigVariable("FirstMedia");
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 21cadda6e3e657cd21f39bc31f08921d5edc798f..cda3e3a4191c6e6eb80ef9ded69ffc2c82b1a752 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -576,10 +576,10 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 		style_params.font.style = "ITALIC";
 
 		if (chat.mFromName.size() > 0)
-			mEditor->appendText(chat.mFromName + " ", TRUE, style_params);
+			mEditor->appendText(chat.mFromName, TRUE, style_params);
 		// Ensure that message ends with NewLine, to avoid losing of new lines
 		// while copy/paste from text chat. See EXT-3263.
-		mEditor->appendText(chat.mText.substr(4) + NEW_LINE, FALSE, style_params);
+		mEditor->appendText(chat.mText.substr(3) + NEW_LINE, FALSE, style_params);
 	}
 	else
 	{
@@ -593,6 +593,12 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_
 		mEditor->appendText(message, FALSE, style_params);
 	}
 	mEditor->blockUndo();
+
+	// automatically scroll to end when receiving chat from myself
+	if (chat.mFromID == gAgentID)
+	{
+		mEditor->setCursorAndScrollToEnd();
+	}
 }
 
 void LLChatHistory::draw()
diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp
index 60a37ac4af96f923a6b3067ff72980b72542d2b8..9ce3f29853a9a7df264039eb1edba2911c350a65 100644
--- a/indra/newview/llchatitemscontainerctrl.cpp
+++ b/indra/newview/llchatitemscontainerctrl.cpp
@@ -170,10 +170,7 @@ void LLNearbyChatToastPanel::init(LLSD& notification)
 
 	std::string str_sender;
 	
-	if(gAgentID != mFromID)
-		str_sender = fromName;
-	else
-		str_sender = LLTrans::getString("You");
+	str_sender = fromName;
 
 	str_sender+=" ";
 
diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp
index 10b7935caf00ab6937ff54bfe8098bd26cfa73c5..abb2fdeb9a0a2f9e94c22f71a32cfb0ddda32e7b 100644
--- a/indra/newview/lldateutil.cpp
+++ b/indra/newview/lldateutil.cpp
@@ -44,15 +44,18 @@ static S32 DAYS_PER_MONTH_LEAP[] =
 
 static S32 days_from_month(S32 year, S32 month)
 {
+	llassert_always(1 <= month);
+	llassert_always(month <= 12);
+
 	if (year % 4 == 0 
 		&& year % 100 != 0)
 	{
 		// leap year
-		return DAYS_PER_MONTH_LEAP[month];
+		return DAYS_PER_MONTH_LEAP[month - 1];
 	}
 	else
 	{
-		return DAYS_PER_MONTH_NOLEAP[month];
+		return DAYS_PER_MONTH_NOLEAP[month - 1];
 	}
 }
 
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index e80499688eb6c49a4c5f2cf55cee8d7bac933032..aa343b2f6972260b26cf926c452e619083648b4f 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -167,20 +167,21 @@ BOOL LLFloaterAbout::postBuild()
 
 	// Now build the various pieces
 	support << getString("AboutHeader", args);
-	if (info.has("COMPILER"))
-	{
-		support << "\n\n" << getString("AboutCompiler", args);
-	}
 	if (info.has("REGION"))
 	{
 		support << "\n\n" << getString("AboutPosition", args);
 	}
 	support << "\n\n" << getString("AboutSystem", args);
+	support << "\n";
 	if (info.has("GRAPHICS_DRIVER_VERSION"))
 	{
-		support << "\n\n" << getString("AboutDriver", args);
+		support << "\n" << getString("AboutDriver", args);
+	}
+	support << "\n" << getString("AboutLibs", args);
+	if (info.has("COMPILER"))
+	{
+		support << "\n" << getString("AboutCompiler", args);
 	}
-	support << "\n\n" << getString("AboutLibs", args);
 	if (info.has("PACKETS_IN"))
 	{
 		support << '\n' << getString("AboutTraffic", args);
@@ -193,11 +194,11 @@ BOOL LLFloaterAbout::postBuild()
 	support_widget->blockUndo();
 
 	// Fix views
-	support_widget->setCursorPos(0);
 	support_widget->setEnabled(FALSE);
+	support_widget->startOfDoc();
 
-	credits_widget->setCursorPos(0);
 	credits_widget->setEnabled(FALSE);
+	credits_widget->startOfDoc();
 
 	return TRUE;
 }
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 11dd48056cc02ff935f0ce8ff59c569af071cc8d..d0716f67b8027cb5212ba6b45e5b30fdfc7258b0 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -325,6 +325,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
 	mCommitCallbackRegistrar.add("Pref.WindowedMod",            boost::bind(&LLFloaterPreference::onCommitWindowedMode, this));	
 	mCommitCallbackRegistrar.add("Pref.UpdateSliderText",       boost::bind(&LLFloaterPreference::onUpdateSliderText,this, _1,_2));	
 	mCommitCallbackRegistrar.add("Pref.AutoDetectAspect",       boost::bind(&LLFloaterPreference::onCommitAutoDetectAspect, this));	
+	mCommitCallbackRegistrar.add("Pref.ParcelMediaAutoPlayEnable",       boost::bind(&LLFloaterPreference::onCommitParcelMediaAutoPlayEnable, this));	
 	mCommitCallbackRegistrar.add("Pref.onSelectAspectRatio",    boost::bind(&LLFloaterPreference::onKeystrokeAspectRatio, this));	
 	mCommitCallbackRegistrar.add("Pref.QualityPerformance",     boost::bind(&LLFloaterPreference::onChangeQuality, this, _2));	
 	mCommitCallbackRegistrar.add("Pref.applyUIColor",			boost::bind(&LLFloaterPreference::applyUIColor, this ,_1, _2));
@@ -986,6 +987,25 @@ void LLFloaterPreference::onCommitAutoDetectAspect()
 	}
 }
 
+void LLFloaterPreference::onCommitParcelMediaAutoPlayEnable()
+{
+	BOOL autoplay = getChild<LLCheckBoxCtrl>("autoplay_enabled")->get();
+		
+	gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, autoplay);
+
+	lldebugs << "autoplay now = " << int(autoplay) << llendl;
+
+	if (autoplay)
+	{
+		// autoplay toggle has gone from FALSE to TRUE; ensure that
+		// the media system is thus actually turned on too.
+		gSavedSettings.setBOOL("AudioStreamingVideo", TRUE);
+		gSavedSettings.setBOOL("AudioStreamingMusic", TRUE);
+		gSavedSettings.setBOOL("AudioStreamingMedia", TRUE);
+		llinfos << "autoplay turned on, turned all media subsystems on" << llendl;
+	}
+}
+
 void LLFloaterPreference::refresh()
 {
 	LLPanel::refresh();
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index 74a53d673c457951204b3a3d5c20779c8ef4691c..b2bc34231d35f08123e254c1a6bdbae03b934c2c 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -132,6 +132,7 @@ class LLFloaterPreference : public LLFloater
 //	void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator);
 
 	void onCommitAutoDetectAspect();
+	void onCommitParcelMediaAutoPlayEnable();
 	void applyResolution();
 	void applyUIColor(LLUICtrl* ctrl, const LLSD& param);
 	void getUIColor(LLUICtrl* ctrl, const LLSD& param);	
diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp
index 3042fbc6ec16dad5ad5aa8b1c1d50c78825ecc55..0964ad7f917cc88ea10eac2abce6a965f378534c 100644
--- a/indra/newview/llfloaterscriptlimits.cpp
+++ b/indra/newview/llfloaterscriptlimits.cpp
@@ -64,6 +64,8 @@
 // summary which only shows available & correct information
 #define USE_SIMPLE_SUMMARY
 
+const S32 SIZE_OF_ONE_KB = 1024;
+
 LLFloaterScriptLimits::LLFloaterScriptLimits(const LLSD& seed)
 	: LLFloater(seed)
 {
@@ -130,7 +132,6 @@ void LLFloaterScriptLimits::refresh()
 	}
 }
 
-
 ///----------------------------------------------------------------------------
 // Base class for panels
 ///----------------------------------------------------------------------------
@@ -331,6 +332,57 @@ void LLPanelScriptLimitsRegionMemory::setErrorStatus(U32 status, const std::stri
 	llerrs << "Can't handle remote parcel request."<< " Http Status: "<< status << ". Reason : "<< reason<<llendl;
 }
 
+// callback from the name cache with an owner name to add to the list
+void LLPanelScriptLimitsRegionMemory::onNameCache(
+						 const LLUUID& id,
+						 const std::string& first_name,
+						 const std::string& last_name)
+{
+	std::string name = first_name + " " + last_name;
+
+	LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");	
+	std::vector<LLSD>::iterator id_itor;
+	for (id_itor = mObjectListItems.begin(); id_itor != mObjectListItems.end(); ++id_itor)
+	{
+		LLSD element = *id_itor;
+		if(element["owner_id"].asUUID() == id)
+		{
+			LLScrollListItem* item = list->getItem(element["id"].asUUID());
+
+			if(item)
+			{
+				item->getColumn(2)->setValue(LLSD(name));
+				element["columns"][2]["value"] = name;
+			}
+		}
+	}
+
+	// fill in the url's tab if needed, all urls must have memory so we can do it all here
+	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+	if(instance)
+	{
+		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+		LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
+
+		LLScrollListCtrl *list = panel->getChild<LLScrollListCtrl>("scripts_list");	
+		std::vector<LLSD>::iterator id_itor;
+		for (id_itor = mObjectListItems.begin(); id_itor != mObjectListItems.end(); ++id_itor)
+		{
+			LLSD element = *id_itor;
+			if(element["owner_id"].asUUID() == id)
+			{
+				LLScrollListItem* item = list->getItem(element["id"].asUUID());
+
+				if(item)
+				{
+					item->getColumn(2)->setValue(LLSD(name));
+					element["columns"][2]["value"] = name;
+				}
+			}
+		}
+	}
+}
+
 void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
 {
 	LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
@@ -345,22 +397,40 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
 	S32 total_objects = 0;
 	S32 total_size = 0;
 
+	std::vector<LLUUID> names_requested;
+
 	for(S32 i = 0; i < number_parcels; i++)
 	{
 		std::string parcel_name = content["parcels"][i]["name"].asString();
-		
+		LLUUID parcel_id = content["parcels"][i]["id"].asUUID();
 		S32 number_objects = content["parcels"][i]["objects"].size();
 		for(S32 j = 0; j < number_objects; j++)
 		{
-			S32 size = content["parcels"][i]["objects"][j]["resources"]["memory"].asInteger() / 1024;
+			S32 size = content["parcels"][i]["objects"][j]["resources"]["memory"].asInteger() / SIZE_OF_ONE_KB;
 			total_size += size;
 			
 			std::string name_buf = content["parcels"][i]["objects"][j]["name"].asString();
 			LLUUID task_id = content["parcels"][i]["objects"][j]["id"].asUUID();
+			LLUUID owner_id = content["parcels"][i]["objects"][j]["owner_id"].asUUID();
+			
+			std::string owner_buf;
+			
+			BOOL name_is_cached = gCacheName->getFullName(owner_id, owner_buf);
+			if(!name_is_cached)
+			{
+				if(std::find(names_requested.begin(), names_requested.end(), owner_id) == names_requested.end())
+				{
+					names_requested.push_back(owner_id);
+					gCacheName->get(owner_id, TRUE,
+					boost::bind(&LLPanelScriptLimitsRegionMemory::onNameCache,
+						this, _1, _2, _3));
+				}
+			}
 
 			LLSD element;
 
 			element["id"] = task_id;
+			element["owner_id"] = owner_id;
 			element["columns"][0]["column"] = "size";
 			element["columns"][0]["value"] = llformat("%d", size);
 			element["columns"][0]["font"] = "SANSSERIF";
@@ -368,18 +438,18 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
 			element["columns"][1]["value"] = name_buf;
 			element["columns"][1]["font"] = "SANSSERIF";
 			element["columns"][2]["column"] = "owner";
-			element["columns"][2]["value"] = "";
+			element["columns"][2]["value"] = owner_buf;
 			element["columns"][2]["font"] = "SANSSERIF";
 			element["columns"][3]["column"] = "location";
 			element["columns"][3]["value"] = parcel_name;
 			element["columns"][3]["font"] = "SANSSERIF";
 
-			list->addElement(element);
-			mObjectListIDs.push_back(task_id);
+			list->addElement(element, ADD_SORTED);
+			mObjectListItems.push_back(element);
 			total_objects++;
 		}
 	}
-	
+
 	mParcelMemoryUsed =total_size;
 	mGotParcelMemoryUsed = TRUE;
 	populateParcelMemoryText();
@@ -556,7 +626,7 @@ void LLPanelScriptLimitsRegionMemory::clearList()
 	childSetValue("memory_used", LLSD(msg_empty_string));
 	childSetValue("parcels_listed", LLSD(msg_empty_string));
 
-	mObjectListIDs.clear();
+	mObjectListItems.clear();
 }
 
 // static
@@ -728,7 +798,7 @@ void LLPanelScriptLimitsRegionURLs::setRegionDetails(LLSD content)
 
 	S32 total_objects = 0;
 	S32 total_size = 0;
-
+	
 	for(S32 i = 0; i < number_parcels; i++)
 	{
 		std::string parcel_name = content["parcels"][i]["name"].asString();
@@ -744,6 +814,10 @@ void LLPanelScriptLimitsRegionURLs::setRegionDetails(LLSD content)
 				
 				std::string name_buf = content["parcels"][i]["objects"][j]["name"].asString();
 				LLUUID task_id = content["parcels"][i]["objects"][j]["id"].asUUID();
+				LLUUID owner_id = content["parcels"][i]["objects"][j]["owner_id"].asUUID();
+
+				std::string owner_buf;
+				gCacheName->getFullName(owner_id, owner_buf); //dont care if this fails as the memory tab will request and fill the field
 
 				LLSD element;
 
@@ -755,14 +829,14 @@ void LLPanelScriptLimitsRegionURLs::setRegionDetails(LLSD content)
 				element["columns"][1]["value"] = name_buf;
 				element["columns"][1]["font"] = "SANSSERIF";
 				element["columns"][2]["column"] = "owner";
-				element["columns"][2]["value"] = "";
+				element["columns"][2]["value"] = owner_buf;
 				element["columns"][2]["font"] = "SANSSERIF";
 				element["columns"][3]["column"] = "location";
 				element["columns"][3]["value"] = parcel_name;
 				element["columns"][3]["font"] = "SANSSERIF";
 
 				list->addElement(element);
-				mObjectListIDs.push_back(task_id);
+				mObjectListItems.push_back(element);
 				total_objects++;
 			}
 		}
@@ -868,7 +942,7 @@ void LLPanelScriptLimitsRegionURLs::clearList()
 	childSetValue("urls_used", LLSD(msg_empty_string));
 	childSetValue("parcels_listed", LLSD(msg_empty_string));
 
-	mObjectListIDs.clear();
+	mObjectListItems.clear();
 }
 
 // static
@@ -982,7 +1056,7 @@ void LLPanelScriptLimitsAttachment::setAttachmentDetails(LLSD content)
 			S32 size = 0;
 			if(content["attachments"][i]["objects"][j]["resources"].has("memory"))
 			{
-				size = content["attachments"][i]["objects"][j]["resources"]["memory"].asInteger();
+				size = content["attachments"][i]["objects"][j]["resources"]["memory"].asInteger() / SIZE_OF_ONE_KB;
 			}
 			S32 urls = 0;
 			if(content["attachments"][i]["objects"][j]["resources"].has("urls"))
@@ -1059,3 +1133,4 @@ void LLPanelScriptLimitsAttachment::onClickRefresh(void* userdata)
 		return;
 	}
 }
+
diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h
index 88239136e3738e9fd5b59af209cc6c4b13149c93..7e2b536eb6b15aacf2740b0f20dc9df4852d473b 100644
--- a/indra/newview/llfloaterscriptlimits.h
+++ b/indra/newview/llfloaterscriptlimits.h
@@ -54,12 +54,12 @@ class LLFloaterScriptLimits : public LLFloater
 
 	// from LLPanel
 	virtual void refresh();
-	
+
 private:
-	
+
 	LLFloaterScriptLimits(const LLSD& seed);
 	~LLFloaterScriptLimits();
-	
+
 protected:
 
 	LLTabContainer* mTab;
@@ -167,13 +167,17 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote
 
 private:
 
+	void onNameCache(	 const LLUUID& id,
+						 const std::string& first_name,
+						 const std::string& last_name);
+
 	LLUUID mParcelId;
 	BOOL mGotParcelMemoryUsed;
 	BOOL mGotParcelMemoryMax;
 	S32 mParcelMemoryMax;
 	S32 mParcelMemoryUsed;
 	
-	std::vector<LLUUID> mObjectListIDs;
+	std::vector<LLSD> mObjectListItems;
 		
 protected:
 
@@ -218,7 +222,7 @@ class LLPanelScriptLimitsRegionURLs : public LLPanelScriptLimitsInfo
 	S32 mParcelURLsMax;
 	S32 mParcelURLsUsed;
 	
-	std::vector<LLUUID> mObjectListIDs;
+	std::vector<LLSD> mObjectListItems;
 		
 protected:
 	
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index 98f9171237a7c639150bc19262ee0559ebfc1c95..0781d8ed0695138ea5a0991813c2dc0905fc6e1b 100644
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
@@ -100,8 +100,6 @@ enum EPanDirection
 // Values in pixels per region
 static const F32 ZOOM_MAX = 128.f;
 
-static const F32 SIM_COORD_DEFAULT = 128.f;
-
 //---------------------------------------------------------------------------
 // Globals
 //---------------------------------------------------------------------------
@@ -189,7 +187,8 @@ LLFloaterWorldMap::LLFloaterWorldMap(const LLSD& key)
 	mInventory(NULL),
 	mInventoryObserver(NULL),
 	mFriendObserver(NULL),
-	mCompletingRegionName(""),
+	mCompletingRegionName(),
+	mCompletingRegionPos(),
 	mWaitingForTracker(FALSE),
 	mIsClosing(FALSE),
 	mSetToUserPosition(TRUE),
@@ -205,7 +204,6 @@ LLFloaterWorldMap::LLFloaterWorldMap(const LLSD& key)
 	mCommitCallbackRegistrar.add("WMap.AvatarCombo",	boost::bind(&LLFloaterWorldMap::onAvatarComboCommit, this));
 	mCommitCallbackRegistrar.add("WMap.Landmark",		boost::bind(&LLFloaterWorldMap::onLandmarkComboCommit, this));
 	mCommitCallbackRegistrar.add("WMap.SearchResult",	boost::bind(&LLFloaterWorldMap::onCommitSearchResult, this));
-	mCommitCallbackRegistrar.add("WMap.CommitLocation",	boost::bind(&LLFloaterWorldMap::onCommitLocation, this));
 	mCommitCallbackRegistrar.add("WMap.GoHome",			boost::bind(&LLFloaterWorldMap::onGoHome, this));	
 	mCommitCallbackRegistrar.add("WMap.Teleport",		boost::bind(&LLFloaterWorldMap::onClickTeleportBtn, this));	
 	mCommitCallbackRegistrar.add("WMap.ShowTarget",		boost::bind(&LLFloaterWorldMap::onShowTargetBtn, this));	
@@ -664,10 +662,6 @@ void LLFloaterWorldMap::updateLocation()
 				S32 agent_y = llround( (F32)fmod( agentPos.mdV[VY], (F64)REGION_WIDTH_METERS ) );
 				S32 agent_z = llround( (F32)agentPos.mdV[VZ] );
 
-				childSetValue("spin x", LLSD(agent_x) );
-				childSetValue("spin y", LLSD(agent_y) );
-				childSetValue("spin z", LLSD(agent_z) );
-
 				// Set the current SLURL
 				mSLURL = LLSLURL::buildSLURL(agent_sim_name, agent_x, agent_y, agent_z);
 			}
@@ -699,9 +693,6 @@ void LLFloaterWorldMap::updateLocation()
 		
 		F32 region_x = (F32)fmod( pos_global.mdV[VX], (F64)REGION_WIDTH_METERS );
 		F32 region_y = (F32)fmod( pos_global.mdV[VY], (F64)REGION_WIDTH_METERS );
-		childSetValue("spin x", LLSD(region_x) );
-		childSetValue("spin y", LLSD(region_y) );
-		childSetValue("spin z", LLSD((F32)pos_global.mdV[VZ]) );
 
 		// simNameFromPosGlobal can fail, so don't give the user an invalid SLURL
 		if ( gotSimName )
@@ -733,9 +724,11 @@ void LLFloaterWorldMap::trackURL(const std::string& region_name, S32 x_coord, S3
 	{
 		// fill in UI based on URL
 		gFloaterWorldMap->childSetValue("location", region_name);
-		childSetValue("spin x", LLSD((F32)x_coord));
-		childSetValue("spin y", LLSD((F32)y_coord));
-		childSetValue("spin z", LLSD((F32)z_coord));
+
+		// Save local coords to highlight position after region global
+		// position is returned.
+		gFloaterWorldMap->mCompletingRegionPos.set(
+			(F32)x_coord, (F32)y_coord, (F32)z_coord);
 
 		// pass sim name to combo box
 		gFloaterWorldMap->mCompletingRegionName = region_name;
@@ -899,18 +892,6 @@ void LLFloaterWorldMap::clearLocationSelection(BOOL clear_ui)
 	{
 		list->operateOnAll(LLCtrlListInterface::OP_DELETE);
 	}
-	if (!childHasKeyboardFocus("spin x"))
-	{
-		childSetValue("spin x", SIM_COORD_DEFAULT);
-	}
-	if (!childHasKeyboardFocus("spin y"))
-	{
-		childSetValue("spin y", SIM_COORD_DEFAULT);
-	}
-	if (!childHasKeyboardFocus("spin z"))
-	{
-		childSetValue("spin z", 0);
-	}
 	LLWorldMap::getInstance()->cancelTracking();
 	mCompletingRegionName = "";
 }
@@ -1466,21 +1447,6 @@ void LLFloaterWorldMap::updateSims(bool found_null_sim)
 	}
 }
 
-void LLFloaterWorldMap::onCommitLocation()
-{
-	LLTracker::ETrackingStatus tracking_status = LLTracker::getTrackingStatus();
-	if ( LLTracker::TRACKING_LOCATION == tracking_status)
-	{
-		LLVector3d pos_global = LLTracker::getTrackedPositionGlobal();
-		F64 local_x = childGetValue("spin x");
-		F64 local_y = childGetValue("spin y");
-		F64 local_z = childGetValue("spin z");
-		pos_global.mdV[VX] += -fmod(pos_global.mdV[VX], 256.0) + local_x;
-		pos_global.mdV[VY] += -fmod(pos_global.mdV[VY], 256.0) + local_y;
-		pos_global.mdV[VZ] = local_z;
-		trackLocation(pos_global);
-	}
-}
 
 void LLFloaterWorldMap::onCommitSearchResult()
 {
@@ -1503,12 +1469,19 @@ void LLFloaterWorldMap::onCommitSearchResult()
 		if (info->isName(sim_name))
 		{
 			LLVector3d pos_global = info->getGlobalOrigin();
-			F64 local_x = childGetValue("spin x");
-			F64 local_y = childGetValue("spin y");
-			F64 local_z = childGetValue("spin z");
-			pos_global.mdV[VX] += local_x;
-			pos_global.mdV[VY] += local_y;
-			pos_global.mdV[VZ] = local_z;
+
+			const F64 SIM_COORD_DEFAULT = 128.0;
+			LLVector3 pos_local(SIM_COORD_DEFAULT, SIM_COORD_DEFAULT, 0.0f);
+
+			// Did this value come from a trackURL() request?
+			if (!mCompletingRegionPos.isExactlyZero())
+			{
+				pos_local = mCompletingRegionPos;
+				mCompletingRegionPos.clear();
+			}
+			pos_global.mdV[VX] += (F64)pos_local.mV[VX];
+			pos_global.mdV[VY] += (F64)pos_local.mV[VY];
+			pos_global.mdV[VZ] = (F64)pos_local.mV[VZ];
 
 			childSetValue("location", sim_name);
 			trackLocation(pos_global);
diff --git a/indra/newview/llfloaterworldmap.h b/indra/newview/llfloaterworldmap.h
index 7feebb583d8ec81e01dd73aa229b44821a9589af..00f5e788fb871910ee7ca95beab36c455be15b5c 100644
--- a/indra/newview/llfloaterworldmap.h
+++ b/indra/newview/llfloaterworldmap.h
@@ -148,7 +148,6 @@ class LLFloaterWorldMap : public LLFloater
 	void			updateSearchEnabled();
 	void			onLocationFocusChanged( LLFocusableElement* ctrl );
 	void		    onLocationCommit();
-	void			onCommitLocation();
 	void		    onCommitSearchResult();
 
 	void			cacheLandmarkPosition();
@@ -170,6 +169,10 @@ class LLFloaterWorldMap : public LLFloater
 	LLFriendObserver* mFriendObserver;
 
 	std::string				mCompletingRegionName;
+	// Local position from trackURL() request, used to select final
+	// position once region lookup complete.
+	LLVector3				mCompletingRegionPos;
+
 	std::string				mLastRegionName;
 	BOOL					mWaitingForTracker;
 
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 112b23d2df08198e8a5865fbccaef342c0ae0af3..1ea5868491ed80fcb71a9a3a6caa84ad00aa3af2 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -569,6 +569,8 @@ LLFolderViewItem* LLFolderView::getCurSelectedItem( void )
 BOOL LLFolderView::setSelection(LLFolderViewItem* selection, BOOL openitem,
 								BOOL take_keyboard_focus)
 {
+	mSignalSelectCallback = take_keyboard_focus ? SIGNAL_KEYBOARD_FOCUS : SIGNAL_NO_KEYBOARD_FOCUS;
+
 	if( selection == this )
 	{
 		return FALSE;
@@ -596,8 +598,6 @@ BOOL LLFolderView::setSelection(LLFolderViewItem* selection, BOOL openitem,
 
 	llassert(mSelectedItems.size() <= 1);
 
-	mSignalSelectCallback = take_keyboard_focus ? SIGNAL_KEYBOARD_FOCUS : SIGNAL_NO_KEYBOARD_FOCUS;
-
 	return rv;
 }
 
@@ -820,10 +820,11 @@ void LLFolderView::clearSelection()
 	mSelectThisID.setNull();
 }
 
-BOOL LLFolderView::getSelectionList(std::set<LLUUID> &selection)
+BOOL LLFolderView::getSelectionList(std::set<LLUUID> &selection) const
 {
-	selected_items_t::iterator item_it;
-	for (item_it = mSelectedItems.begin(); item_it != mSelectedItems.end(); ++item_it)
+	for (selected_items_t::const_iterator item_it = mSelectedItems.begin(); 
+		 item_it != mSelectedItems.end(); 
+		 ++item_it)
 	{
 		selection.insert((*item_it)->getListener()->getUUID());
 	}
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 2598af4df4bc954fe20b242b14ce032b9fbd4c6c..89e1865e3539451703ca16c7f393c2e038123753 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -162,7 +162,7 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler
 
 	virtual S32 extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items);
 
-	virtual BOOL getSelectionList(std::set<LLUUID> &selection);
+	virtual BOOL getSelectionList(std::set<LLUUID> &selection) const;
 
 	// make sure if ancestor is selected, descendents are not
 	void sanitizeSelection();
diff --git a/indra/newview/llfoldervieweventlistener.h b/indra/newview/llfoldervieweventlistener.h
index 473d0be912b1140164505d29bdb44e05eb230278..d6c4459e6fac30e23706d130fe20372a2b1abcc3 100644
--- a/indra/newview/llfoldervieweventlistener.h
+++ b/indra/newview/llfoldervieweventlistener.h
@@ -62,6 +62,7 @@ class LLFolderViewEventListener
 	virtual PermissionMask getPermissionMask() const = 0;
 	virtual LLFolderType::EType getPreferredType() const = 0;
 	virtual LLPointer<LLUIImage> getIcon() const = 0;
+	virtual LLPointer<LLUIImage> getOpenIcon() const { return getIcon(); }
 	virtual LLFontGL::StyleFlags getLabelStyle() const = 0;
 	virtual std::string getLabelSuffix() const = 0;
 	virtual void openItem( void ) = 0;
diff --git a/indra/newview/llfolderviewitem.h b/indra/newview/llfolderviewitem.h
index 6f8c738a59694c2ece01d71ace288b728a0f8ba5..03bb296d29a21ee0206b93c4e3122fd0b8766fbe 100644
--- a/indra/newview/llfolderviewitem.h
+++ b/indra/newview/llfolderviewitem.h
@@ -237,7 +237,7 @@ class LLFolderViewItem : public LLView
 	virtual void recursiveDeselect(BOOL deselect_self);
 
 	// gets multiple-element selection
-	virtual BOOL getSelectionList(std::set<LLUUID> &selection){return TRUE;}
+	virtual BOOL getSelectionList(std::set<LLUUID> &selection) const {return TRUE;}
 
 	// Returns true is this object and all of its children can be removed (deleted by user)
 	virtual BOOL isRemovable();
@@ -304,7 +304,7 @@ class LLFolderViewItem : public LLView
 	// Show children (unfortunate that this is called "open")
 	virtual void setOpen(BOOL open = TRUE) {};
 
-	virtual BOOL isOpen() { return FALSE; }
+	virtual BOOL isOpen() const { return FALSE; }
 
 	virtual LLFolderView*	getRoot();
 	BOOL			isDescendantOf( const LLFolderViewFolder* potential_ancestor );
@@ -499,7 +499,7 @@ class LLFolderViewFolder : public LLFolderViewItem
 	virtual void setOpenArrangeRecursively(BOOL openitem, ERecurseType recurse = RECURSE_NO);
 
 	// Get the current state of the folder.
-	virtual BOOL isOpen() { return mIsOpen; }
+	virtual BOOL isOpen() const { return mIsOpen; }
 
 	// special case if an object is dropped on the child.
 	BOOL handleDragAndDropFromChild(MASK mask,
diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp
index 0b5da40be4d5fb74594b2b58457613ccf49a8b54..08cf86df4aade332a569692556901a16623d0746 100644
--- a/indra/newview/llhudtext.cpp
+++ b/indra/newview/llhudtext.cpp
@@ -606,7 +606,7 @@ void LLHUDText::addLine(const LLWString &wstr, const LLColor4& color, const LLFo
 			U32 line_length = 0;
 			do	
 			{
-				S32 segment_length = mFontp->maxDrawableChars(iter->substr(line_length).c_str(), mUseBubble ? HUD_TEXT_MAX_WIDTH : HUD_TEXT_MAX_WIDTH_NO_BUBBLE, wline.length(), TRUE);
+				S32 segment_length = mFontp->maxDrawableChars(iter->substr(line_length).c_str(), mUseBubble ? HUD_TEXT_MAX_WIDTH : HUD_TEXT_MAX_WIDTH_NO_BUBBLE, wline.length(), LLFontGL::WORD_BOUNDARY_IF_POSSIBLE);
 				mTextSegments.push_back(LLHUDTextSegment(iter->substr(line_length, segment_length), style, color));
 				line_length += segment_length;
 			}
@@ -642,7 +642,7 @@ void LLHUDText::setLabel(const LLWString &wlabel)
 			U32 line_length = 0;
 			do	
 			{
-				S32 segment_length = mFontp->maxDrawableChars(iter->substr(line_length).c_str(), mUseBubble ? HUD_TEXT_MAX_WIDTH : HUD_TEXT_MAX_WIDTH_NO_BUBBLE, wstr.length(), TRUE);
+				S32 segment_length = mFontp->maxDrawableChars(iter->substr(line_length).c_str(), mUseBubble ? HUD_TEXT_MAX_WIDTH : HUD_TEXT_MAX_WIDTH_NO_BUBBLE, wstr.length(), LLFontGL::WORD_BOUNDARY_IF_POSSIBLE);
 				mLabelSegments.push_back(LLHUDTextSegment(iter->substr(line_length, segment_length), LLFontGL::NORMAL, mColor));
 				line_length += segment_length;
 			}
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index fdc5d14d9763cb94b273ce4afa58b2861b99bb22..b05568f353f07dd9fd966785e9b26bc103aec941 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -595,7 +595,7 @@ void LLIMFloater::updateMessages()
 
 			std::string time = msg["time"].asString();
 			LLUUID from_id = msg["from_id"].asUUID();
-			std::string from = from_id != gAgentID ? msg["from"].asString() : LLTrans::getString("You");
+			std::string from = msg["from"].asString();
 			std::string message = msg["message"].asString();
 
 			LLChat chat;
diff --git a/indra/newview/llinspect.h b/indra/newview/llinspect.h
index 731e99534b8ee8417b88980e204f61b9014134b6..a1cb9cd71cd5353946e3adf4cb45f8a0403b814d 100644
--- a/indra/newview/llinspect.h
+++ b/indra/newview/llinspect.h
@@ -55,7 +55,7 @@ class LLInspect : public LLFloater
 	/// Inspectors close themselves when they lose focus
 	/*virtual*/ void onFocusLost();
 	
-private:
+protected:
 	LLFrameTimer		mCloseTimer;
 	LLFrameTimer		mOpenTimer;
 };
diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
index 72b36374dd37317071f6431bc7ef9486f0007355..acbca6010372af98cc8740d46347c24c1e8dfbe9 100644
--- a/indra/newview/llinspectavatar.cpp
+++ b/indra/newview/llinspectavatar.cpp
@@ -93,6 +93,10 @@ class LLInspectAvatar : public LLInspect
 	// Update view based on information from avatar properties processor
 	void processAvatarData(LLAvatarData* data);
 	
+	// override the inspector mouse leave so timer is only paused if 
+	// gear menu is not open
+	/* virtual */ void onMouseLeave(S32 x, S32 y, MASK mask);
+	
 private:
 	// Make network requests for all the data to display in this view.
 	// Used on construction and if avatar id changes.
@@ -259,8 +263,6 @@ BOOL LLInspectAvatar::postBuild(void)
 }
 
 
-
-
 // Multiple calls to showInstance("inspect_avatar", foo) will provide different
 // LLSD for foo, which we will catch here.
 //virtual
@@ -384,6 +386,19 @@ void LLInspectAvatar::processAvatarData(LLAvatarData* data)
 	mPropertiesRequest = NULL;
 }
 
+// For the avatar inspector, we only want to unpause the fade timer 
+// if neither the gear menu or self gear menu are open
+void LLInspectAvatar::onMouseLeave(S32 x, S32 y, MASK mask)
+{
+	LLMenuGL* gear_menu = getChild<LLMenuButton>("gear_btn")->getMenu();
+	LLMenuGL* gear_menu_self = getChild<LLMenuButton>("gear_self_btn")->getMenu();
+	if ( !(gear_menu && gear_menu->getVisible()) &&
+		 !(gear_menu_self && gear_menu_self->getVisible()))
+	{
+		mOpenTimer.unpause();
+	}
+}
+
 void LLInspectAvatar::updateModeratorPanel()
 {
 	bool enable_moderator_panel = false;
diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp
index cb35a287e9c10b06db1232919d884e7acae6d9ce..dd313c528d8e18dbfb53f8bbf10f033d73d26066 100644
--- a/indra/newview/llinspectobject.cpp
+++ b/indra/newview/llinspectobject.cpp
@@ -41,6 +41,7 @@
 #include "llslurl.h"
 #include "llviewermenu.h"		// handle_object_touch(), handle_buy()
 #include "llviewermedia.h"
+#include "llviewermediafocus.h"
 #include "llviewerobjectlist.h"	// to select the requested object
 
 // Linden libraries
@@ -82,6 +83,10 @@ class LLInspectObject : public LLInspect
 	// Release the selection and do other cleanup
 	/*virtual*/ void onClose(bool app_quitting);
 	
+	// override the inspector mouse leave so timer is only paused if 
+	// gear menu is not open
+	/* virtual */ void onMouseLeave(S32 x, S32 y, MASK mask);
+	
 private:
 	// Refresh displayed data with information from selection manager
 	void update();
@@ -181,7 +186,6 @@ BOOL LLInspectObject::postBuild(void)
 	return TRUE;
 }
 
-
 // Multiple calls to showInstance("inspect_avatar", foo) will provide different
 // LLSD for foo, which we will catch here.
 //virtual
@@ -214,6 +218,10 @@ void LLInspectObject::onOpen(const LLSD& data)
 	LLViewerObject* obj = gObjectList.findObject( mObjectID );
 	if (obj)
 	{
+		// Media focus and this code fight over the select manager.  
+		// Make sure any media is unfocused before changing the selection here.
+		LLViewerMediaFocus::getInstance()->clearFocus();
+		
 		LLSelectMgr::instance().deselectAll();
 		mObjectSelection = LLSelectMgr::instance().selectObjectAndFamily(obj);
 
@@ -562,6 +570,16 @@ void LLInspectObject::updateSecureBrowsing()
 	getChild<LLUICtrl>("secure_browsing")->setVisible(is_secure_browsing);
 }
 
+// For the object inspector, only unpause the fade timer 
+// if the gear menu is not open
+void LLInspectObject::onMouseLeave(S32 x, S32 y, MASK mask)
+{
+	LLMenuGL* gear_menu = getChild<LLMenuButton>("gear_btn")->getMenu();
+	if ( !(gear_menu && gear_menu->getVisible()))
+	{
+		mOpenTimer.unpause();
+	}
+}
 
 void LLInspectObject::onClickBuy()
 {
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index d70221b22ae0f775bc5dd2332597df4f878a59d1..20d7f5214bec3472ac0a37e09e1a6b9d79f55462 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -2074,7 +2074,12 @@ void LLFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model
 {
 	if ("open" == action)
 	{
-		openItem();
+		LLFolderViewFolder *f = dynamic_cast<LLFolderViewFolder *>(folder->getItemByID(mUUID));
+		if (f)
+		{
+			f->setOpen(TRUE);
+		}
+		
 		return;
 	}
 	else if ("paste" == action)
@@ -2228,9 +2233,22 @@ LLUIImagePtr LLFolderBridge::getIcon() const
 LLUIImagePtr LLFolderBridge::getIcon(LLFolderType::EType preferred_type)
 {
 	// we only have one folder image now
+	if (preferred_type == LLFolderType::FT_OUTFIT)
+	{
+		return LLUI::getUIImage("Inv_LookFolderClosed");
+	}
 	return LLUI::getUIImage("Inv_FolderClosed");
 }
 
+LLUIImagePtr LLFolderBridge::getOpenIcon() const
+{
+	if (getPreferredType() == LLFolderType::FT_OUTFIT)
+	{
+		return LLUI::getUIImage("Inv_LookFolderOpen");
+	}
+	return LLUI::getUIImage("Inv_FolderOpen");
+}
+
 BOOL LLFolderBridge::renameItem(const std::string& new_name)
 {
 	if(!isItemRenameable())
@@ -2614,6 +2632,13 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 			{
 				mItems.push_back(std::string("Rename"));
 				mItems.push_back(std::string("Delete"));
+
+				// EXT-4030: disallow deletion of currently worn outfit
+				const LLViewerInventoryItem *base_outfit_link = LLAppearanceManager::instance().getBaseOutfitLink();
+				if (base_outfit_link && (cat == base_outfit_link->getLinkedCategory()))
+				{
+					mDisabledItems.push_back(std::string("Delete"));
+				}
 			}
 		}
 
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index cc1fa45b269b03501e2c1a6c2ec34603c13833bb..fced0047e8cb3ecb5c52b28219f23660312d6cde 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -289,6 +289,7 @@ class LLFolderBridge : public LLInvFVBridge
 
 	virtual LLFolderType::EType getPreferredType() const;
 	virtual LLUIImagePtr getIcon() const;
+	virtual LLUIImagePtr getOpenIcon() const;
 	static LLUIImagePtr getIcon(LLFolderType::EType preferred_type);
 
 	virtual BOOL renameItem(const std::string& new_name);
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 164e72e62192d9e9ed452dc305c518d5304808d9..498a29728c28d926c4929cd7cbbc9f913093f222 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -433,11 +433,10 @@ void LLInventoryPanel::initializeViews()
 	{
 		mStartFolderID = (preferred_type != LLFolderType::FT_NONE ? gInventory.findCategoryUUIDForType(preferred_type) : LLUUID::null);
 	}
-	llinfos << this << " Generating views for start folder " << mStartFolderString << llendl;
 	rebuildViewsFor(mStartFolderID);
 
 	mViewsInitialized = true;
-	defaultOpenInventory();
+	openStartFolderOrMyInventory();
 }
 
 void LLInventoryPanel::rebuildViewsFor(const LLUUID& id)
@@ -491,13 +490,14 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
 			
 			if (new_listener)
 			{
-				LLFolderViewFolder::Params p;
-				p.name = new_listener->getDisplayName();
-				p.icon = new_listener->getIcon();
-				p.root = mFolders;
-				p.listener = new_listener;
-				p.tool_tip = p.name;
-				LLFolderViewFolder* folderp = LLUICtrlFactory::create<LLFolderViewFolder>(p);
+				LLFolderViewFolder::Params params;
+				params.name = new_listener->getDisplayName();
+				params.icon = new_listener->getIcon();
+				params.icon_open = new_listener->getOpenIcon();
+				params.root = mFolders;
+				params.listener = new_listener;
+				params.tool_tip = params.name;
+				LLFolderViewFolder* folderp = LLUICtrlFactory::create<LLFolderViewFolder>(params);
 				folderp->setItemSortOrder(mFolders->getSortOrder());
 				itemp = folderp;
 
@@ -523,12 +523,13 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
 			if (new_listener)
 			{
 				LLFolderViewItem::Params params;
-				params.name(new_listener->getDisplayName());
-				params.icon(new_listener->getIcon());
-				params.creation_date(new_listener->getCreationDate());
-				params.root(mFolders);
-				params.listener(new_listener);
-				params.rect(LLRect (0, 0, 0, 0));
+				params.name = new_listener->getDisplayName();
+				params.icon = new_listener->getIcon();
+				params.icon_open = new_listener->getOpenIcon();
+				params.creation_date = new_listener->getCreationDate();
+				params.root = mFolders;
+				params.listener = new_listener;
+				params.rect = LLRect (0, 0, 0, 0);
 				params.tool_tip = params.name;
 				itemp = LLUICtrlFactory::create<LLFolderViewItem> (params);
 			}
@@ -575,7 +576,7 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
 }
 
 // bit of a hack to make sure the inventory is open.
-void LLInventoryPanel::defaultOpenInventory()
+void LLInventoryPanel::openStartFolderOrMyInventory()
 {
 	if (mStartFolderString != "")
 	{
@@ -583,13 +584,17 @@ void LLInventoryPanel::defaultOpenInventory()
 	}
 	else
 	{
-		// Get the first child (it should be "My Inventory") and
-		// open it up by name (just to make sure the first child is actually a folder).
-		LLView* first_child = mFolders->getFirstChild();
-		if (first_child)
+		// Find My Inventory folder and open it up by name
+		for (LLView *child = mFolders->getFirstChild(); child; child = mFolders->findNextSibling(child))
 		{
-			const std::string& first_child_name = first_child->getName();
-			mFolders->openFolder(first_child_name);
+			LLFolderViewFolder *fchild = dynamic_cast<LLFolderViewFolder*>(child);
+			if (fchild && fchild->getListener() &&
+				(fchild->getListener()->getUUID() == gInventory.getRootFolderID()))
+			{
+				const std::string& child_name = child->getName();
+				mFolders->openFolder(child_name);
+				break;
+			}
 		}
 	}
 }
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 4f7f0a79f64a919d7ce60088cc24fdc68c5cb7b4..09533b52f1e12a06d6f9a636f8c5617b9753db35 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -167,7 +167,7 @@ class LLInventoryPanel : public LLPanel
 	static LLInventoryPanel *getActiveInventoryPanel(BOOL auto_open = TRUE);
 
 protected:
-	void defaultOpenInventory(); // open the first level of inventory
+	void openStartFolderOrMyInventory(); // open the first level of inventory
 
 	LLInventoryModel*			mInventory;
 	LLInventoryObserver*		mInventoryObserver;
diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp
index fc9654e9adbe3999f5ec1ef8510ac9c1e464f5d5..92f19c9232e3029d0cc30987aaa9594f8536280a 100644
--- a/indra/newview/lllogchat.cpp
+++ b/indra/newview/lllogchat.cpp
@@ -59,9 +59,6 @@ const static std::string NEW_LINE_SPACE_PREFIX("\n ");
 const static std::string TWO_SPACES("  ");
 const static std::string MULTI_LINE_PREFIX(" ");
 
-//viewer 1.23 may have used "You" for Agent's entries
-const static std::string YOU("You");
-
 /**
  *  Chat log lines - timestamp and name are optional but message text is mandatory.
  *
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index e7043b2d00c742af4ba4ea94d7fce6f876d1cbef..fc0e51b76d1c082d0b16206257c9307d31f8e6de 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -178,7 +178,7 @@ void	LLNearbyChat::addMessage(const LLChat& chat,bool archive)
 	
 	if (!chat.mMuted)
 	{
-		tmp_chat.mFromName = chat.mFromID != gAgentID ? chat.mFromName : LLTrans::getString("You");
+		tmp_chat.mFromName = chat.mFromName;
 
 		if (chat.mChatStyle == CHAT_STYLE_IRC)
 		{
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index 8e14074de16e21adf9d741bd7dccc167fcb786c9..a1c12412b5ddf8e6ec5a9e4e8daca670cb7bf4e3 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -84,6 +84,14 @@ BOOL LLPanelOutfitsInventory::postBuild()
 	return TRUE;
 }
 
+// virtual
+void LLPanelOutfitsInventory::onOpen(const LLSD& key)
+{
+	// Make sure we know which tab is selected, update the filter,
+	// and update verbs.
+	onTabChange();
+}
+
 void LLPanelOutfitsInventory::updateVerbs()
 {
 	if (mParent)
@@ -94,6 +102,7 @@ void LLPanelOutfitsInventory::updateVerbs()
 	if (mListCommands)
 	{
 		mListCommands->childSetVisible("look_edit_btn",sShowDebugEditor);
+		updateListCommands();
 	}
 }
 
@@ -176,7 +185,6 @@ void LLPanelOutfitsInventory::onNew()
 
 void LLPanelOutfitsInventory::onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action)
 {
-	updateListCommands();
 	updateVerbs();
 	if (getRootFolder()->needsAutoRename() && items.size())
 	{
@@ -264,9 +272,11 @@ void LLPanelOutfitsInventory::updateListCommands()
 {
 	bool trash_enabled = isActionEnabled("delete");
 	bool wear_enabled = isActionEnabled("wear");
+	bool make_outfit_enabled = isActionEnabled("make_outfit");
 
 	mListCommands->childSetEnabled("trash_btn", trash_enabled);
 	mListCommands->childSetEnabled("wear_btn", wear_enabled);
+	mListCommands->childSetEnabled("make_outfit_btn", make_outfit_enabled);
 }
 
 void LLPanelOutfitsInventory::onGearButtonClick()
@@ -303,6 +313,8 @@ void LLPanelOutfitsInventory::onClipboardAction(const LLSD& userdata)
 {
 	std::string command_name = userdata.asString();
 	getActivePanel()->getRootFolder()->doToSelected(getActivePanel()->getModel(),command_name);
+	updateListCommands();
+	updateVerbs();
 }
 
 void LLPanelOutfitsInventory::onCustomAction(const LLSD& userdata)
@@ -323,6 +335,7 @@ void LLPanelOutfitsInventory::onCustomAction(const LLSD& userdata)
 	{
 		onWearButtonClick();
 	}
+	// Note: This option has been removed from the gear menu.
 	if (command_name == "add")
 	{
 		onAdd();
@@ -343,20 +356,22 @@ void LLPanelOutfitsInventory::onCustomAction(const LLSD& userdata)
 	{
 		onClipboardAction("delete");
 	}
+	updateListCommands();
+	updateVerbs();
 }
 
 BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata)
 {
 	const std::string command_name = userdata.asString();
-	if (command_name == "delete")
+	if (command_name == "delete" || command_name == "remove")
 	{
 		BOOL can_delete = FALSE;
 		LLFolderView *folder = getActivePanel()->getRootFolder();
 		if (folder)
 		{
-			can_delete = TRUE;
 			std::set<LLUUID> selection_set;
 			folder->getSelectionList(selection_set);
+			can_delete = (selection_set.size() > 0);
 			for (std::set<LLUUID>::iterator iter = selection_set.begin();
 				 iter != selection_set.end();
 				 ++iter)
@@ -375,9 +390,9 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata)
 		LLFolderView *folder = getActivePanel()->getRootFolder();
 		if (folder)
 		{
-			can_delete = TRUE;
 			std::set<LLUUID> selection_set;
 			folder->getSelectionList(selection_set);
+			can_delete = (selection_set.size() > 0);
 			for (std::set<LLUUID>::iterator iter = selection_set.begin();
 				 iter != selection_set.end();
 				 ++iter)
@@ -391,10 +406,24 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata)
 		}
 		return FALSE;
 	}
+	if (command_name == "rename" ||
+		command_name == "delete_outfit")
+	{
+		return (getCorrectListenerForAction() != NULL) && hasItemsSelected();
+	}
+	
+	if (command_name == "wear" ||
+		command_name == "make_outfit")
+	{
+		const BOOL is_my_outfits = (mActivePanel->getName() == "outfitslist_tab");
+		if (!is_my_outfits)
+		{
+			return FALSE;
+		}
+	}
+   
 	if (command_name == "edit" || 
-		command_name == "wear" ||
-		command_name == "add" ||
-		command_name == "remove"
+		command_name == "add"
 		)
 	{
 		return (getCorrectListenerForAction() != NULL);
@@ -402,6 +431,19 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata)
 	return TRUE;
 }
 
+bool LLPanelOutfitsInventory::hasItemsSelected()
+{
+	bool has_items_selected = false;
+	LLFolderView *folder = getActivePanel()->getRootFolder();
+	if (folder)
+	{
+		std::set<LLUUID> selection_set;
+		folder->getSelectionList(selection_set);
+		has_items_selected = (selection_set.size() > 0);
+	}
+	return has_items_selected;
+}
+
 bool LLPanelOutfitsInventory::handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept)
 {
 	*accept = ACCEPT_NO;
@@ -425,17 +467,17 @@ bool LLPanelOutfitsInventory::handleDragAndDropToTrash(BOOL drop, EDragAndDropTy
 void LLPanelOutfitsInventory::initTabPanels()
 {
 	mTabPanels.resize(2);
+
+	LLInventoryPanel *cof_panel = getChild<LLInventoryPanel>("cof_tab");
+	cof_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
+	mTabPanels[0] = cof_panel;
 	
-	LLInventoryPanel *myoutfits_panel = getChild<LLInventoryPanel>("outfitslist_accordionpanel");
+	LLInventoryPanel *myoutfits_panel = getChild<LLInventoryPanel>("outfitslist_tab");
 	myoutfits_panel->setFilterTypes(1LL << LLFolderType::FT_OUTFIT, LLInventoryFilter::FILTERTYPE_CATEGORY);
 	myoutfits_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
-	mTabPanels[0] = myoutfits_panel;
-	mActivePanel = myoutfits_panel;
+	mTabPanels[1] = myoutfits_panel;
 
-
-	LLInventoryPanel *cof_panel = getChild<LLInventoryPanel>("cof_accordionpanel");
-	cof_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
-	mTabPanels[1] = cof_panel;
+	mActivePanel = mTabPanels[0];
 
 	for (tabpanels_vec_t::iterator iter = mTabPanels.begin();
 		 iter != mTabPanels.end();
@@ -479,9 +521,7 @@ void LLPanelOutfitsInventory::onTabChange()
 		return;
 	}
 	mActivePanel->setFilterSubString(mFilterSubString);
-
-	bool is_my_outfits = (mActivePanel->getName() == "outfitslist_accordionpanel");
-	mListCommands->childSetEnabled("make_outfit_btn", is_my_outfits);
+	updateVerbs();
 }
 
 LLInventoryPanel* LLPanelOutfitsInventory::getActivePanel()
diff --git a/indra/newview/llpaneloutfitsinventory.h b/indra/newview/llpaneloutfitsinventory.h
index 1e084750a09878021db5ec180ab18a33c03e2be5..b1173117753ffa096ae84164ee4134975033c6f5 100644
--- a/indra/newview/llpaneloutfitsinventory.h
+++ b/indra/newview/llpaneloutfitsinventory.h
@@ -53,6 +53,7 @@ class LLPanelOutfitsInventory : public LLPanel
 	virtual ~LLPanelOutfitsInventory();
 
 	/*virtual*/ BOOL postBuild();
+	/*virtual*/ void onOpen(const LLSD& key);
 	
 	void onSearchEdit(const std::string& string);
 	void onAdd();
@@ -114,6 +115,7 @@ class LLPanelOutfitsInventory : public LLPanel
 	BOOL isActionEnabled(const LLSD& command_name);
 	void onCustomAction(const LLSD& command_name);
 	bool handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept);
+	bool hasItemsSelected();
 private:
 	LLPanel*					mListCommands;
 	LLMenuGL*					mMenuGearDefault;
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index e2ce534c4fe0224997df1c5511b9b90c424bf782..0ae62843acc88614f86314b134269a6b2e36e16a 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -151,6 +151,8 @@ BOOL LLSidepanelAppearance::postBuild()
 	}
 
 	mCurrentLookName = getChild<LLTextBox>("currentlook_name");
+
+	mOutfitDirtyTag = getChild<LLTextBox>("currentlook_title");
 	
 	mCurrOutfitPanel = getChild<LLPanel>("panel_currentlook");
 
@@ -166,6 +168,11 @@ void LLSidepanelAppearance::onOpen(const LLSD& key)
 	refreshCurrentOutfitName();
 	updateVerbs();
 
+	if (mPanelOutfitsInventory)
+	{
+		mPanelOutfitsInventory->onOpen(key);
+	}
+
 	if(key.size() == 0)
 		return;
 
@@ -208,7 +215,7 @@ void LLSidepanelAppearance::onOpenOutfitButtonClicked()
 	if (tab_outfits)
 	{
 		tab_outfits->changeOpenClose(FALSE);
-		LLInventoryPanel *inventory_panel = tab_outfits->findChild<LLInventoryPanel>("outfitslist_accordionpanel");
+		LLInventoryPanel *inventory_panel = tab_outfits->findChild<LLInventoryPanel>("outfitslist_tab");
 		if (inventory_panel)
 		{
 			LLFolderView *folder = inventory_panel->getRootFolder();
@@ -311,6 +318,7 @@ void LLSidepanelAppearance::updateVerbs()
 
 void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
 {
+	mOutfitDirtyTag->setVisible(LLAppearanceManager::getInstance()->isOutfitDirty());
 	if (name == "")
 	{
 		const LLViewerInventoryItem *outfit_link = LLAppearanceManager::getInstance()->getBaseOutfitLink();
diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h
index 8ef2088edadc6bf6af0666918edd6b9519f3b951..9524b0ece937673775bf60e3a9f5a20bbc77012f 100644
--- a/indra/newview/llsidepanelappearance.h
+++ b/indra/newview/llsidepanelappearance.h
@@ -86,6 +86,7 @@ class LLSidepanelAppearance : public LLPanel
 	LLPanel*					mCurrOutfitPanel;
 
 	LLTextBox*					mCurrentLookName;
+	LLTextBox*					mOutfitDirtyTag;
 
 	// Used to make sure the user's inventory is in memory.
 	LLCurrentlyWornFetchObserver* mFetchWorn;
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index 50cec3184d38b66ac803d7f4f74c06223a8e6954..0b8f66c5f3af41dd0e1def576e0f41cf9d16f779 100644
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -215,6 +215,10 @@ void LLSidepanelTaskInfo::disableAll()
 	childSetVisible("E:",								FALSE);
 	childSetVisible("N:",								FALSE);
 	childSetVisible("F:",								FALSE);
+	
+	mOpenBtn->setEnabled(FALSE);
+	mPayBtn->setEnabled(FALSE);
+	mBuyBtn->setEnabled(FALSE);
 }
 
 void LLSidepanelTaskInfo::refresh()
@@ -1119,6 +1123,8 @@ void LLSidepanelTaskInfo::updateVerbs()
 	*/
 
 	mOpenBtn->setEnabled(enable_object_open());
+	mPayBtn->setEnabled(enable_pay_object());
+	mBuyBtn->setEnabled(enable_buy_object());
 }
 
 void LLSidepanelTaskInfo::onOpenButtonClicked()
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 5f66e6b40911b26c832bdb1d307b3c831ae554cb..412878eef509116b78061ab3fac06ea44567b913 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -68,6 +68,7 @@
 #include "llviewermedia.h"
 #include "llvoavatarself.h"
 #include "llviewermediafocus.h"
+#include "llvovolume.h"
 #include "llworld.h"
 #include "llui.h"
 #include "llweb.h"
@@ -629,12 +630,14 @@ static bool needs_tooltip(LLSelectNode* nodep)
 		return false;
 
 	LLViewerObject* object = nodep->getObject();
+	LLVOVolume* vovolume = dynamic_cast<LLVOVolume*>(object);
 	LLViewerObject *parent = (LLViewerObject *)object->getParent();
 	if (object->flagHandleTouch()
 		|| (parent && parent->flagHandleTouch())
 		|| object->flagTakesMoney()
 		|| (parent && parent->flagTakesMoney())
 		|| object->flagAllowInventoryAdd()
+		|| (vovolume && vovolume->hasMedia())
 		)
 	{
 		return true;
@@ -728,10 +731,11 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask)
 				LLInspector::Params p;
 				p.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>());
 				p.message(avatar_name);
-				p.image(LLUI::getUIImage("Info"));
+				p.image.name("Inspector_I");
 				p.click_callback(boost::bind(showAvatarInspector, hover_object->getID()));
 				p.visible_time_near(6.f);
 				p.visible_time_far(3.f);
+				p.delay_time(0.35f);
 				p.wrap(false);
 				
 				LLToolTipMgr::instance().show(p);
@@ -818,7 +822,7 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask)
 					LLInspector::Params p;
 					p.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>());
 					p.message(tooltip_msg);
-					p.image(LLUI::getUIImage("Info_Off"));
+					p.image.name("Inspector_I");
 					p.click_callback(boost::bind(showObjectInspector, hover_object->getID(), mHoverPick.mObjectFace));
 					p.time_based_media(is_time_based_media);
 					p.web_based_media(is_web_based_media);
@@ -827,6 +831,7 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask)
 					p.click_homepage_callback(boost::bind(VisitHomePage, mHoverPick));
 					p.visible_time_near(6.f);
 					p.visible_time_far(3.f);
+					p.delay_time(0.35f);
 					p.wrap(false);
 					
 					LLToolTipMgr::instance().show(p);
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 0fc0afed3eb78d16ab5230bcbd5cd582d72a2581..7e8c8eb92ed9079ce8943c2b15bf73cdc5f81b05 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -170,12 +170,15 @@ LOG_CLASS(LLMimeDiscoveryResponder);
 		//     accept this and go past it in the MIME type probe
 		// 302 means the resource can be found temporarily in a different place - added this for join.secondlife.com
 		// 499 is a code specifc to join.secondlife.com (????) apparently safe to ignore
-		if(	((status >= 200) && (status < 300))	||
-			((status >= 400) && (status < 499))	|| 
-			(status == 500) ||
-			(status == 302) ||
-			(status == 499) 
-			)
+//		if(	((status >= 200) && (status < 300))	||
+//			((status >= 400) && (status < 499))	|| 
+//			(status == 500) ||
+//			(status == 302) ||
+//			(status == 499) 
+//			)
+		// We now no longer check the error code returned from the probe.
+		// If we have a mime type, use it.  If not, default to the web plugin and let it handle error reporting.
+		if(1)
 		{
 			// The probe was successful.
 			if(mime_type.empty())
@@ -2541,76 +2544,3 @@ void LLViewerMediaImpl::setTextureID(LLUUID id)
 	}
 }
 
-
-//////////////////////////////////////////////////////////////////////////////////////////
-//static
-void LLViewerMedia::toggleMusicPlay(void*)
-{
-// FIXME: This probably doesn't belong here
-#if 0
-	if (mMusicState != PLAYING)
-	{
-		mMusicState = PLAYING; // desired state
-		if (gAudiop)
-		{
-			LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
-			if ( parcel )
-			{
-				gAudiop->startInternetStream(parcel->getMusicURL());
-			}
-		}
-	}
-	else
-	{
-		mMusicState = STOPPED; // desired state
-		if (gAudiop)
-		{
-			gAudiop->stopInternetStream();
-		}
-	}
-#endif
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////
-//static
-void LLViewerMedia::toggleMediaPlay(void*)
-{
-// FIXME: This probably doesn't belong here
-#if 0
-	if (LLViewerMedia::isMediaPaused())
-	{
-		LLViewerParcelMedia::start();
-	}
-	else if(LLViewerMedia::isMediaPlaying())
-	{
-		LLViewerParcelMedia::pause();
-	}
-	else
-	{
-		LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
-		if (parcel)
-		{
-			LLViewerParcelMedia::play(parcel);
-		}
-	}
-#endif
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////
-//static
-void LLViewerMedia::mediaStop(void*)
-{
-// FIXME: This probably doesn't belong here
-#if 0
-	LLViewerParcelMedia::stop();
-#endif
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////
-//static 
-bool LLViewerMedia::isMusicPlaying()
-{	
-// FIXME: This probably doesn't belong here
-// FIXME: make this work
-	return false;	
-}
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index 9119b783c2bc0fba062cce13525f19efc429be57..b103c48bd85a591f19de075548424847373823cc 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -99,14 +99,10 @@ class LLViewerMedia
 		static void setVolume(F32 volume);
 
 		static void updateMedia(void* dummy_arg = NULL);
-		static bool isMusicPlaying();
 
 		static void initClass();
 		static void cleanupClass();
 
-		static void toggleMusicPlay(void*);
-		static void toggleMediaPlay(void*);
-		static void mediaStop(void*);
 		static F32 getVolume();	
 		static void muteListChanged();
 		static void setInWorldMediaDisabled(bool disabled);
@@ -127,7 +123,10 @@ class LLViewerMediaImpl
 {
 	LOG_CLASS(LLViewerMediaImpl);
 public:
-
+	
+	friend class LLViewerMedia;
+	friend class LLMimeDiscoveryResponder;
+	
 	LLViewerMediaImpl(
 		const LLUUID& texture_id,
 		S32 media_width, 
@@ -206,11 +205,15 @@ class LLViewerMediaImpl
 	bool isMediaPaused();
 	bool hasMedia() const;
 	bool isMediaFailed() const { return mMediaSourceFailed; };
+	void setMediaFailed(bool val) { mMediaSourceFailed = val; }
 	void resetPreviousMediaState();
 	
 	void setDisabled(bool disabled);
 	bool isMediaDisabled() const { return mIsDisabled; };
-
+	
+	void setInNearbyMediaList(bool in_list) { mInNearbyMediaList = in_list; }
+	bool getInNearbyMediaList() { return mInNearbyMediaList; }
+	
 	// returns true if this instance should not be loaded (disabled, muted object, crashed, etc.)
 	bool isForcedUnloaded() const;
 	
@@ -315,7 +318,7 @@ class LLViewerMediaImpl
 	void setNavState(EMediaNavState state);
 	
 	void cancelMimeTypeProbe();
-public:
+private:
 	// a single media url with some data and an impl.
 	LLPluginClassMedia* mMediaSource;
 	LLUUID mTextureId;
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 5445a79137cab9e765aeb08a54f5ebbc01577bb2..1bff04352c52a95bb87d43dfa4f29af0fa2d6509 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -62,6 +62,7 @@
 #include "llfloaterreporter.h"
 #include "llfloatersearch.h"
 #include "llfloaterscriptdebug.h"
+#include "llfloatersnapshot.h"
 #include "llfloatertools.h"
 #include "llfloaterworldmap.h"
 #include "llavataractions.h"
@@ -436,17 +437,7 @@ void init_menus()
 	gMenuBarView->setBackgroundColor( color );
 
 	gMenuHolder->addChild(gMenuBarView);
-	
-	// menu holder appears on top of menu bar so you can see the menu title
-	// flash when an item is triggered (the flash occurs in the holder)
-	gViewerWindow->getRootView()->addChild(gMenuHolder);
-
-	// This removes tool tip view from main view and adds it
-	// to root view in front of menu holder.
-	// Otherwise tool tips for menu items would be overlapped by menu, since
-	// main view is behind of menu holder now.
-	gViewerWindow->getRootView()->addChild(gToolTipView);
-   
+  
     gViewerWindow->setMenuBackgroundColor(false, 
         LLViewerLogin::getInstance()->isInProductionGrid());
 
@@ -5857,8 +5848,12 @@ void confirm_replace_attachment(S32 option, void* user_data)
 	}
 }
 
-bool callback_attachment_drop(const LLSD& notification, const LLSD& response)
+void callback_attachment_drop(const LLSD& notification, const LLSD& response)
 {
+	// Ensure user confirmed the drop
+	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+	if (option != 0) return;
+
 	// Called when the user clicked on an object attached to them
 	// and selected "Drop".
 	LLUUID object_id = notification["payload"]["object_id"].asUUID();
@@ -5867,7 +5862,7 @@ bool callback_attachment_drop(const LLSD& notification, const LLSD& response)
 	if (!object)
 	{
 		llwarns << "handle_drop_attachment() - no object to drop" << llendl;
-		return true;
+		return;
 	}
 
 	LLViewerObject *parent = (LLViewerObject*)object->getParent();
@@ -5884,13 +5879,13 @@ bool callback_attachment_drop(const LLSD& notification, const LLSD& response)
 	if (!object)
 	{
 		llwarns << "handle_detach() - no object to detach" << llendl;
-		return true;
+		return;
 	}
 
 	if (object->isAvatar())
 	{
 		llwarns << "Trying to detach avatar from avatar." << llendl;
-		return true;
+		return;
 	}
 	
 	// reselect the object
@@ -5898,7 +5893,7 @@ bool callback_attachment_drop(const LLSD& notification, const LLSD& response)
 
 	LLSelectMgr::getInstance()->sendDropAttachment();
 
-	return true;
+	return;
 }
 
 class LLAttachmentDrop : public view_listener_t
@@ -7954,8 +7949,8 @@ void initialize_menus()
 
 	enable.add("Avatar.EnableMute", boost::bind(&enable_object_mute));
 	enable.add("Object.EnableMute", boost::bind(&enable_object_mute));
-
 	enable.add("Object.EnableBuy", boost::bind(&enable_buy_object));
+	commit.add("Object.ZoomIn", boost::bind(&handle_look_at_selection, "zoom"));
 
 	// Attachment pie menu
 	enable.add("Attachment.Label", boost::bind(&onEnableAttachmentLabel, _1, _2));
diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp
index 86f0f4e04e136246964c3c850fcb70a6a49bd7e1..0f7903a7a536e2cb7bd6a9ff6842d386624387e6 100644
--- a/indra/newview/llviewerparcelmedia.cpp
+++ b/indra/newview/llviewerparcelmedia.cpp
@@ -34,6 +34,7 @@
 #include "llviewerparcelmedia.h"
 
 #include "llagent.h"
+#include "llaudioengine.h"
 #include "llviewercontrol.h"
 #include "llviewermedia.h"
 #include "llviewerregion.h"
@@ -109,7 +110,9 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
 			std::string mediaCurrentUrl = std::string( parcel->getMediaCurrentURL());
 
 			// First use warning
-			if(	! mediaUrl.empty() && gWarningSettings.getBOOL("FirstStreamingVideo") )
+			if( (!mediaUrl.empty() ||
+			     !parcel->getMusicURL().empty())
+			    && gWarningSettings.getBOOL("FirstStreamingMedia") )
 			{
 				LLNotificationsUtil::add("ParcelCanPlayMedia", LLSD(), LLSD(),
 					boost::bind(callback_play_media, _1, _2, parcel));
@@ -593,16 +596,28 @@ bool callback_play_media(const LLSD& notification, const LLSD& response, LLParce
 	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
 	if (option == 0)
 	{
+		// user has elected to automatically play media.
+		gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, TRUE);
 		gSavedSettings.setBOOL("AudioStreamingVideo", TRUE);
+		gSavedSettings.setBOOL("AudioStreamingMusic", TRUE);
 		if(!gSavedSettings.getBOOL("AudioStreamingMedia")) 
 			gSavedSettings.setBOOL("AudioStreamingMedia", TRUE);
+		// play media right now, if available
 		LLViewerParcelMedia::play(parcel);
+		// play music right now, if available
+		if (parcel)
+		{
+			std::string music_url = parcel->getMusicURL();
+			if (gAudiop && !music_url.empty())
+				gAudiop->startInternetStream(music_url);
+		}
 	}
 	else
 	{
 		gSavedSettings.setBOOL("AudioStreamingVideo", FALSE);
+		gSavedSettings.setBOOL("AudioStreamingMusic", FALSE);
 	}
-	gWarningSettings.setBOOL("FirstStreamingVideo", FALSE);
+	gWarningSettings.setBOOL("FirstStreamingMedia", FALSE);
 	return false;
 }
 
diff --git a/indra/newview/llviewerparcelmediaautoplay.cpp b/indra/newview/llviewerparcelmediaautoplay.cpp
index 1b79b4790551f5254c4028232352fcc40a767738..ad2723b66b242f2798ca9fcfeef40446ea6bfed6 100644
--- a/indra/newview/llviewerparcelmediaautoplay.cpp
+++ b/indra/newview/llviewerparcelmediaautoplay.cpp
@@ -35,6 +35,7 @@
 #include "llviewerparcelmedia.h"
 #include "llviewercontrol.h"
 #include "llviewermedia.h"
+#include "llviewerregion.h"
 #include "llparcel.h"
 #include "llviewerparcelmgr.h"
 #include "lluuid.h"
@@ -48,6 +49,8 @@ const F32 AUTOPLAY_SPEED = 0.1f;        // how slow should the agent be moving t
 
 LLViewerParcelMediaAutoPlay::LLViewerParcelMediaAutoPlay() :
 	LLEventTimer(1),
+	
+	mLastParcelID(-1),
 	mPlayed(FALSE),
 	mTimeInParcel(0)
 {
@@ -81,9 +84,18 @@ void LLViewerParcelMediaAutoPlay::playStarted()
 BOOL LLViewerParcelMediaAutoPlay::tick()
 {
 	LLParcel *this_parcel = NULL;
+	LLViewerRegion *this_region = NULL;
 	std::string this_media_url;
 	LLUUID this_media_texture_id;
 	S32 this_parcel_id = 0;
+	LLUUID this_region_id;
+
+	this_region = gAgent.getRegion();
+	
+	if (this_region)
+	{
+		this_region_id = this_region->getRegionID();
+	}
 
 	this_parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
 
@@ -96,12 +108,14 @@ BOOL LLViewerParcelMediaAutoPlay::tick()
 		this_parcel_id = this_parcel->getLocalID();
 	}
 
-	if (this_parcel_id != mLastParcelID)
+	if (this_parcel_id != mLastParcelID ||
+	    this_region_id != mLastRegionID)
 	{
 		// we've entered a new parcel
 		mPlayed    = FALSE;                   // we haven't autoplayed yet
 		mTimeInParcel = 0;                    // reset our timer
 		mLastParcelID = this_parcel_id;
+		mLastRegionID = this_region_id;
 	}
 
 	mTimeInParcel += mPeriod;                 // increase mTimeInParcel by the amount of time between ticks
diff --git a/indra/newview/llviewerparcelmediaautoplay.h b/indra/newview/llviewerparcelmediaautoplay.h
index 16279e7f1fc40f5df9fcc8b276d69f8960b7e45f..1d80b4756cad6e9b918703cdfb77d8d4c6260ae1 100644
--- a/indra/newview/llviewerparcelmediaautoplay.h
+++ b/indra/newview/llviewerparcelmediaautoplay.h
@@ -34,6 +34,7 @@
 #define LLVIEWERPARCELMEDIAAUTOPLAY_H
 
 #include "lltimer.h"
+#include "lluuid.h"
 
 // timer to automatically play media
 class LLViewerParcelMediaAutoPlay : LLEventTimer
@@ -47,6 +48,7 @@ class LLViewerParcelMediaAutoPlay : LLEventTimer
 
  private:
 	S32 mLastParcelID;
+	LLUUID mLastRegionID;
 	BOOL mPlayed;
 	F32 mTimeInParcel;
 };
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 87a9eae02862dd5fca104b702dad7cf7f6049d29..5a5c4e748063b3334d47f9b41e76a32e022ca535 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -44,6 +44,7 @@
 #include "llparcel.h"
 #include "llsecondlifeurls.h"
 #include "message.h"
+#include "llfloaterreg.h"
 
 // Viewer includes
 #include "llagent.h"
@@ -52,6 +53,7 @@
 #include "llfirstuse.h"
 #include "llfloaterbuyland.h"
 #include "llfloatergroups.h"
+#include "llfloaternearbymedia.h"
 #include "llfloatersellland.h"
 #include "llfloatertools.h"
 #include "llparcelselection.h"
@@ -1735,7 +1737,7 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 					}
 					else if (!gAudiop->getInternetStreamURL().empty())
 					{
-						llinfos << "Stopping parcel music" << llendl;
+						llinfos << "Stopping parcel music (parcel stream URL is empty)" << llendl;
 						gAudiop->startInternetStream(LLStringUtil::null);
 					}
 				}
@@ -1754,15 +1756,19 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 
 void optionally_start_music(const std::string& music_url)
 {
-	if (gSavedSettings.getBOOL("AudioStreamingMusic") && gSavedSettings.getBOOL("AudioStreamingMedia"))
-	{
-		// Make the user click the start button on the overlay bar. JC
-		//		llinfos << "Starting parcel music " << music_url << llendl;
-
-		// now only play music when you enter a new parcel if the control is in PLAY state
-		// changed as part of SL-4878
-		if ( gOverlayBar && gOverlayBar->musicPlaying())
+	if (gSavedSettings.getBOOL("AudioStreamingMusic") &&
+	    gSavedSettings.getBOOL("AudioStreamingMedia"))
+	{
+		// only play music when you enter a new parcel if the UI control for this
+		// was not *explicitly* stopped by the user. (part of SL-4878)
+		LLFloaterNearbyMedia *nearby_media_floater = LLFloaterReg::findTypedInstance<LLFloaterNearbyMedia>("nearby_media");
+		if ((nearby_media_floater &&
+		     nearby_media_floater->getParcelAudioAutoStart()) ||
+		    // or they have expressed no opinion in the UI, but have autoplay on...
+		    (!nearby_media_floater &&
+		     gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING)))
 		{
+			llinfos << "Starting parcel music " << music_url << llendl;
 			gAudiop->startInternetStream(music_url);
 		}
 	}
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index f825eaa8ab654e9312b39f0ae185747bc162a311..1edaeec848e914b0f8c402999a84023507e98d85 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -3007,7 +3007,7 @@ void LLViewerMediaTexture::addFace(LLFace* facep)
 	LLViewerTexture::addFace(facep) ;
 
 	const LLTextureEntry* te = facep->getTextureEntry() ;
-	if(te)
+	if(te && te->getID().notNull())
 	{
 		LLViewerTexture* tex = gTextureList.findImage(te->getID()) ;
 		if(tex)
@@ -3024,7 +3024,10 @@ void LLViewerMediaTexture::addFace(LLFace* facep)
 		return ;
 	}
 	
-	llerrs << "The face does not have a valid texture before media texture." << llendl ;
+	if(te && te->getID().notNull()) //should have a texture
+	{
+		llerrs << "The face does not have a valid texture before media texture." << llendl ;
+	}
 }
 
 //virtual 
@@ -3033,7 +3036,7 @@ void LLViewerMediaTexture::removeFace(LLFace* facep)
 	LLViewerTexture::removeFace(facep) ;
 
 	const LLTextureEntry* te = facep->getTextureEntry() ;
-	if(te)
+	if(te && te->getID().notNull())
 	{
 		LLViewerTexture* tex = gTextureList.findImage(te->getID()) ;
 		if(tex)
@@ -3094,7 +3097,10 @@ void LLViewerMediaTexture::removeFace(LLFace* facep)
 		}
 	}
 
-	llerrs << "mTextureList texture reference number is corrupted." << llendl ;
+	if(te && te->getID().notNull()) //should have a texture
+	{
+		llerrs << "mTextureList texture reference number is corrupted." << llendl ;
+	}
 }
 
 void LLViewerMediaTexture::stopPlaying()
@@ -3130,11 +3136,15 @@ void LLViewerMediaTexture::switchTexture(LLFace* facep)
 			const LLTextureEntry* te = facep->getTextureEntry() ;
 			if(te)
 			{
-				LLViewerTexture* tex = gTextureList.findImage(te->getID()) ;
+				LLViewerTexture* tex = te->getID().notNull() ? gTextureList.findImage(te->getID()) : NULL ;
 				if(!tex && te->getID() != mID)//try parcel media.
 				{
 					tex = gTextureList.findImage(mID) ;
 				}
+				if(!tex)
+				{
+					tex = LLViewerFetchedTexture::sDefaultImagep ;
+				}
 				facep->switchTexture(tex) ;
 			}
 		}
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 14002531769e90ae3732be744ea5fe7e5c5528c2..83cbc8a1f919ab11ba4b73f8128e0126edbe4985 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1897,7 +1897,7 @@ void LLViewerWindow::draw()
 
 	if (!gSavedSettings.getBOOL("RenderUIBuffer"))
 	{
-		LLUI::sDirtyRect = this->getWindowRectRaw();
+		LLUI::sDirtyRect = getWindowRectScaled();
 	}
 
 	// HACK for timecode debugging
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 70bfc6752316ee115b984f9dbaceeea4a35ca808..d23bcf9006fbd64ded0e5a6f38428a4899e141b8 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -1852,12 +1852,22 @@ void LLVOVolume::mediaNavigateBounceBack(U8 texture_index)
 	if (mep && impl)
 	{
         std::string url = mep->getCurrentURL();
-        if (url.empty())
+		// If the url we're trying to "bounce back" to is either empty or not
+		// allowed by the whitelist, try the home url.  If *that* doesn't work,
+		// set the media as failed and unload it
+        if (url.empty() || !mep->checkCandidateUrl(url))
         {
             url = mep->getHomeURL();
         }
-        if (! url.empty())
-        {
+        if (url.empty() || !mep->checkCandidateUrl(url))
+		{
+			// The url to navigate back to is not good, and we have nowhere else
+			// to go.
+			LL_WARNS("MediaOnAPrim") << "FAILED to bounce back URL \"" << url << "\" -- unloading impl" << LL_ENDL;
+			impl->setMediaFailed(true);
+		}
+		else {
+			// Okay, navigate now
             LL_INFOS("MediaOnAPrim") << "bouncing back to URL: " << url << LL_ENDL;
             impl->navigateTo(url, "", false, true);
         }
@@ -2689,13 +2699,16 @@ U32 LLVOVolume::getRenderCost(std::set<LLUUID> &textures) const
 		const LLTextureEntry* te = face->getTextureEntry();
 		const LLViewerTexture* img = face->getTexture();
 
-		textures.insert(img->getID());
+		if (img)
+		{
+			textures.insert(img->getID());
+		}
 
 		if (face->getPoolType() == LLDrawPool::POOL_ALPHA)
 		{
 			alpha++;
 		}
-		else if (img->getPrimaryFormat() == GL_ALPHA)
+		else if (img && img->getPrimaryFormat() == GL_ALPHA)
 		{
 			invisi = 1;
 		}
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index cb511c2f0bf7679a02af3cdd9aa2cf599cdfb07f..887cff56f6bc9329a809de800af5fdc535abb842 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -64,14 +64,14 @@
 	 value="0 0 1 1" />
 	<color
 	 name="Yellow"
-	 value="0.114 0.65 0.1" />
+	 value="1 1 0 1" />
 	<color
 	 name="Green"
-	 value="0 .39 .10 1" />
+	 value="0 1 0 1" />
 	<color
 	 name="Transparent"
 	 value="0 0 0 0" />
-  <!-- Make potentially unused colors show up bright purple.
+  <!-- This color name makes potentially unused colors show up bright purple.
   Leave this here until all Unused? are removed below, otherwise
   the viewer generates many warnings on startup. -->
   <color
@@ -167,6 +167,9 @@
     <color
      name="ChatHistoryTextColor"
      reference="LtGray" />
+    <color
+     name="ChicletFlashColor"
+     reference="0.114 0.65 0.1" />
     <color
      name="ColorDropShadow"
      reference="Black_50" />
@@ -229,7 +232,7 @@
      value="1 0 0 1" />
     <color
      name="ColorPaletteEntry20"
-     reference="Unused?" />
+     reference=".5 .5 1 0" />
     <color
      name="ColorPaletteEntry21"
      value="0 1 0 1" />
@@ -367,7 +370,7 @@
      reference="Unused?" />
     <color
      name="HighlightChildColor"
-     reference="Unused?" />
+     reference="Yellow" />
     <color
      name="HighlightInspectColor"
      value="1 0.5 0 1" />
@@ -619,7 +622,7 @@
      value="0.13 0.42 0.77 1" />
     <color
      name="SilhouetteParentColor"
-     reference="Unused?" />
+     reference="Yellow" />
     <color
      name="SliderDisabledThumbColor"
      reference="White_25" />
diff --git a/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png
new file mode 100644
index 0000000000000000000000000000000000000000..447e0af0be61761287ef55d611d7e96428174a53
Binary files /dev/null and b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png differ
diff --git a/indra/newview/skins/default/textures/navbar/NavBar_BG.png b/indra/newview/skins/default/textures/navbar/NavBar_BG.png
index 1df61751a88333c695b2a15affde9fdb15eb63b7..38eea783e6ab496ddf602d4bf61e186a4ab2a303 100644
Binary files a/indra/newview/skins/default/textures/navbar/NavBar_BG.png and b/indra/newview/skins/default/textures/navbar/NavBar_BG.png differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index cc87d5c10585117a68154cdb099ae544ce78ab9d..75424e71f522beec84e552bac26e53196991b6b5 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -71,7 +71,7 @@ with the same filename but different name
   <texture name="Audio_Press" file_name="icons/Audio_Press.png" preload="false" />
 
   <texture name="Avaline_Icon" file_name="icons/avaline_default_icon.jpg" preload="true" />
-  
+
   <texture name="BackArrow_Disabled" file_name="icons/BackArrow_Disabled.png" preload="false" />
   <texture name="BackArrow_Off" file_name="icons/BackArrow_Off.png" preload="false" />
   <texture name="BackArrow_Press" file_name="icons/BackArrow_Press.png" preload="false" />
@@ -222,7 +222,8 @@ with the same filename but different name
   <texture name="Inspector_Background" file_name="windows/Inspector_Background.png" preload="false"
            scale.left="4" scale.top="28" scale.right="60" scale.bottom="4" />
   <texture name="Inspector_Hover" file_name="windows/Inspector_Hover.png" preload="false" />
-
+  <texture name="Inspector_I" file_name="windows/Inspector_I.png" preload="false" />
+  
   <texture name="Inv_Acessories" file_name="icons/Inv_Accessories.png" preload="false" />
   <texture name="Inv_Alpha" file_name="icons/Inv_Alpha.png" preload="false" />
   <texture name="Inv_Animation" file_name="icons/Inv_Animation.png" preload="false" />
@@ -305,8 +306,8 @@ with the same filename but different name
   <texture name="Movement_Up_Off" file_name="bottomtray/Movement_Up_Off.png" preload="false" />
   <texture name="Movement_Up_On" file_name="bottomtray/Movement_Up_On.png" preload="false" />
 
-  <texture name="NavBar_BG_NoFav" file_name="navbar/NavBar_BG_NoFav.png" preload="false" />
-  <texture name="NavBar_BG" file_name="navbar/NavBar_BG.png" preload="false" />
+  <texture name="NavBar_BG_NoFav" file_name="navbar/NavBar_BG_NoFav.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0" />
+  <texture name="NavBar_BG" file_name="navbar/NavBar_BG.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0" />
 
   <texture name="NearbyVoice_Lvl1" file_name="bottomtray/NearbyVoice_Lvl1.png" preload="false" />
   <texture name="NearbyVoice_Lvl2" file_name="bottomtray/NearbyVoice_Lvl2.png" preload="false" />
@@ -351,7 +352,7 @@ with the same filename but different name
 
  <texture name="Parcel_Build_Dark" file_name="icons/Parcel_Build_Dark.png" preload="false" />
  <texture name="Parcel_BuildNo_Dark" file_name="icons/Parcel_BuildNo_Dark.png" preload="false" />
- <texture name="Parcel_Damage_Dark" file_name="icons/Parcel_Damage_Dark.png" preload="false" />
+ <texture name="Parcel_Damage_Dark" file_name="icons/Parcel_Health_Dark.png" preload="false" />
  <texture name="Parcel_DamageNo_Dark" file_name="icons/Parcel_DamageNo_Dark.png" preload="false" />
  <texture name="Parcel_Evry_Dark" file_name="icons/Parcel_Evry_Dark.png" preload="false" />
  <texture name="Parcel_Exp_Dark" file_name="icons/Parcel_Exp_Dark.png" preload="false" />
@@ -552,9 +553,9 @@ with the same filename but different name
   <texture name="TabTop_Divider" file_name="containers/TabTop_Divider.png" preload="false" />
   <texture name="TabTop_Left_Press" file_name="containers/TabTop_Left_Press.png" preload="false" />
   <texture name="TabTop_Middle_Press" file_name="containers/TabTop_Middle_Press.png" preload="false" />
-  <texture name="TabTop_Right_Off" file_name="containers/TabTop_Right_Off.png" preload="false" />
+  <texture name="TabTop_Right_Off" file_name="containers/TabTop_Right_Off.png" preload="false"  scale.left="8" scale.top="8" scale.right="62" scale.bottom="9" />
   <texture name="TabTop_Right_Press" file_name="containers/TabTop_Right_Press.png" preload="false" />
-  <texture name="TabTop_Right_Selected" file_name="containers/TabTop_Right_Selected.png" preload="false" />
+  <texture name="TabTop_Right_Selected" file_name="containers/TabTop_Right_Selected.png" preload="false"  scale.left="8" scale.top="8" scale.right="62" scale.bottom="9" />
   <texture name="TabTop_Middle_Off" file_name="containers/TabTop_Middle_Off.png" preload="false" scale.left="8" scale.top="8" scale.right="120" scale.bottom="9" />
   <texture name="TabTop_Middle_Selected" file_name="containers/TabTop_Middle_Selected.png" preload="false" scale.left="8" scale.top="8" scale.right="96" scale.bottom="9" />
   <texture name="TabTop_Left_Off" file_name="containers/TabTop_Left_Off.png" preload="false" scale.left="8" scale.top="8" scale.right="120" scale.bottom="9" />
@@ -574,7 +575,6 @@ with the same filename but different name
 
   <texture name="TimeBasedMediaBackground" file_name="windows/TimeBasedMediaBackground.png" preload="false" />
 
-
   <texture name="Toast_CloseBtn" file_name="windows/Toast_CloseBtn.png" preload="true" />
   <texture name="Toast_Background" file_name="windows/Toast_Background.png" preload="true"
            scale.left="4" scale.top="28" scale.right="60" scale.bottom="4" />
@@ -604,8 +604,9 @@ with the same filename but different name
   <texture name="TrashItem_Off" file_name="icons/TrashItem_Off.png" preload="false" />
   <texture name="TrashItem_Press" file_name="icons/TrashItem_Press.png" preload="false" />
 
-  <texture name="Unread_IM" file_name="bottomtray/Unread_IM.png" preload="false" />
+  <texture name="Unread_Chiclet" file_name="bottomtray/Unread_Chiclet.png" preload="false" />
   <texture name="Unread_Msg" file_name="bottomtray/Unread_Msg.png" preload="false" />
+  <texture name="Unread_IM" file_name="bottomtray/Unread_IM.png" preload="false" />
 
   <texture name="WellButton_Lit" file_name="bottomtray/WellButton_Lit.png"  preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
   <texture name="WellButton_Lit_Selected" file_name="bottomtray/WellButton_Lit_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
diff --git a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png
index a1d602f6f0c303ccb79c7a0e84cc5e3fe925cc28..61f9b076ced2e6c183ea9ca58d02bb218b79c3a4 100644
Binary files a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png and b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png differ
diff --git a/indra/newview/skins/default/textures/windows/Inspector_I.png b/indra/newview/skins/default/textures/windows/Inspector_I.png
new file mode 100644
index 0000000000000000000000000000000000000000..b4875fd6388dcc4182769eb6a88928f5e34699ba
Binary files /dev/null and b/indra/newview/skins/default/textures/windows/Inspector_I.png differ
diff --git a/indra/newview/skins/default/xui/en/favorites_bar_button.xml b/indra/newview/skins/default/xui/en/favorites_bar_button.xml
index dcf9847adbab87184f1de27a7e50ed031feb9ded..dfb0695ec3c771d0a794397471f7b0dd950a53fd 100644
--- a/indra/newview/skins/default/xui/en/favorites_bar_button.xml
+++ b/indra/newview/skins/default/xui/en/favorites_bar_button.xml
@@ -10,18 +10,16 @@
  image_disabled_selected="transparent.j2c"
  image_selected="transparent.j2c"
  image_unselected="transparent.j2c"
- image_hover_selected="Favorite_Link_Over"
- image_hover_unselected="Favorite_Link_Over"
  image_pressed="Favorite_Link_Over"
- image_pressed_selected="Favorite_Link_Over"
  hover_glow_amount="0.15"
  label_shadow="false"
  layout="topleft"
  left="0"
  name="favorites_bar_btn"
- pad_bottom="-1"
+ pad_bottom="1"
  pad_left="11"
- pad_right="7"
+ pad_right="9"
+ scale_image="true"
  tab_stop="false"
  top="0"
  use_ellipses="true"
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index 2ff99dcf5acfff1939d3bc55a05b551775f7667d..fac7aef690dbb5b037cca946b90b44f0994e4a3d 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -6,7 +6,7 @@
  name="floater_about"
  help_topic="floater_about"
  save_rect="true"
- title="ABOUT [APP_NAME]"
+ title="ABOUT [CAPITALIZED_APP_NAME]"
  width="470">
   <floater.string
      name="AboutHeader">
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index cc955369e29e904808f19acf66a4936c171c7ecb..33fdd923ad2f97ac73d359a1b067f882c218bfa7 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -110,7 +110,7 @@
             </text>
             <line_editor
              follows="left|top"
-             height="16"
+             height="23"
              layout="topleft"
              left_pad="2"
              max_length="63"
@@ -145,7 +145,7 @@
              layout="topleft"
              left="10"
              name="LandType"
-             top="84"
+             top_pad="5"
              width="100">
                 Type:
             </text>
@@ -192,7 +192,7 @@
              layout="topleft"
              left="10"
              name="Owner:"
-             top="124"
+             top_pad="5"
              width="100">
                 Owner:
             </text>
@@ -202,7 +202,7 @@
              follows="left|top"
              height="16"
              layout="topleft"
-             left_pad="5"
+             left_pad="2"
              name="OwnerText"
              width="240">
                 Leyla Linden
@@ -232,6 +232,7 @@
              layout="topleft"
              left="10"
              name="Group:"
+             top_pad="7"
              width="100">
                 Group:
             </text>
@@ -240,10 +241,11 @@
              enabled="false"
              follows="left|top"
              height="16"
-             left_pad="5"
+             left_pad="2"
              layout="topleft"
              name="GroupText"
-             width="240" />
+             width="240">
+Leyla Linden               </text>
                  <button
      follows="right"
      height="16"
@@ -267,10 +269,10 @@
              height="23"
              label="Allow Deed to Group"
              layout="topleft"
-             left="96"
+             left="108"
              name="check deed"
              tool_tip="A group officer can deed this land to the group, so it will be supported by the group&apos;s land allocation."
-             top="164"
+             top_pad="3"
              width="146" />
             <button
              enabled="false"
@@ -289,7 +291,7 @@
              height="16"
              label="Owner Makes Contribution With Deed"
              layout="topleft"
-             left="96"
+             left="108"
              name="check contrib"
              tool_tip="When the land is deeded to the group, the former owner contributes enough land allocation to support it."
              width="199" />
@@ -352,7 +354,7 @@
              layout="topleft"
              left_delta="-199"
              name="For sale to"
-             top_delta="6"
+             top_delta="2"
              width="186">
                 For sale to: [BUYER]
             </text>
@@ -364,7 +366,7 @@
              layout="topleft"
              left_delta="0"
              name="Sell with landowners objects in parcel."
-             top_pad="8"
+             top_pad="0"
              width="186">
                 Objects included in sale
             </text>
@@ -389,6 +391,7 @@
              right="-10"
              name="Cancel Land Sale"
              left_pad="5"
+             top_pad="-10"
              width="145" />
             <text
              type="string"
@@ -422,7 +425,7 @@
              layout="topleft"
              left="10"
              name="PriceLabel"
-             top="288"
+             top_pad="5"
              width="100">
                 Area:
             </text>
@@ -470,7 +473,7 @@
              layout="topleft"
              left_delta="82"
              name="Buy Land..."
-             top="328"
+             top_pad="7"
              width="100" />
             <button
              enabled="true"
@@ -480,7 +483,7 @@
              layout="topleft"
              left="10"
              name="Scripts..."
-             top="352"
+             top_pad="1"
              width="100" />
             <button
              enabled="false"
@@ -490,7 +493,7 @@
              layout="topleft"
              right="-10"
              name="Buy For Group..."
-             top="352"
+             top_delta="0"
              width="180" />
             <button
              enabled="false"
@@ -510,7 +513,7 @@
              layout="topleft"
              right="-10"
              name="Abandon Land..."
-             top="328"
+             top_pad="-47"
              width="180" />
             <button
              follows="left|top"
@@ -519,7 +522,7 @@
              layout="topleft"
              left_delta="0"
              name="Reclaim Land..."
-             top_delta="-50"
+             top_delta="-48"
              width="180" />
             <button
              enabled="false"
@@ -530,7 +533,7 @@
              left_delta="0"
              name="Linden Sale..."
              tool_tip="Land must be owned, set content, and not already for auction."
-             top_pad="4"
+             top_pad="2"
              width="180" />
         </panel>
         <panel
@@ -2022,7 +2025,7 @@ Only large parcels can be listed in search.
              multi_select="true"
              name="AccessList"
              tool_tip="([LISTED] listed, [MAX] max)"
-             width="240" />
+             width="230" />
             <button
              follows="bottom"
              height="23"
@@ -2047,7 +2050,7 @@ Only large parcels can be listed in search.
             follows="top|right"
             height="170"
             width="240"
-            left_pad="8">
+            left_pad="2">
             <text
              type="string"
              length="1"
@@ -2071,7 +2074,7 @@ Only large parcels can be listed in search.
              multi_select="true"
              name="BannedList"
              tool_tip="([LISTED] listed, [MAX] max)"
-             width="240" />
+             width="230" />
             <button
              follows="bottom"
              height="23"
diff --git a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
index 953bd08dd41ace4a534528f1de45ddd1e2099eec..f59badfcb4513c7d299d954e6417fc01d0956914 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
@@ -47,7 +47,7 @@
          label="Search"
          layout="topleft"
          left="6"
-         help_topic="avatarpicker_search_tab"
+         help_topic="avatarpicker"
          name="SearchPanel"
          top="150"
          width="132">
@@ -98,7 +98,7 @@
          label="Friends"
          layout="topleft"
          left="6"
-         help_topic="avatarpicker_friends_tab"
+         help_topic="avatarpicker"
          name="FriendsPanel"
          top="150"
          width="132">
@@ -144,7 +144,7 @@
          label="Near Me"
          layout="topleft"
          left="6"
-         help_topic="avatarpicker_near_me_tab"
+         help_topic="avatarpicker"
          name="NearMePanel"
          top="150"
          width="132">
diff --git a/indra/newview/skins/default/xui/en/floater_help_browser.xml b/indra/newview/skins/default/xui/en/floater_help_browser.xml
index 55a6179afb7e0c33d41c982edec1a433552c4773..446b7138c4ed30a2de3fcf3785443471a663fabf 100644
--- a/indra/newview/skins/default/xui/en/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml
@@ -2,7 +2,7 @@
 <floater
  legacy_header_height="18"
  can_resize="true"
- height="400"
+ height="480"
  layout="topleft"
  min_height="140"
  min_width="467"
@@ -21,7 +21,7 @@
         http://support.secondlife.com
     </floater.string>
     <layout_stack
-     bottom="400"
+     bottom="480"
      follows="left|right|top|bottom"
      layout="topleft"
      left="10"
@@ -29,42 +29,22 @@
      top="20"
      width="600">
         <layout_panel
-         height="20"
+         height="1"
          layout="topleft"
          left_delta="0"
          name="external_controls"
          top_delta="0"
          user_resize="false"
-         width="570">
+         width="590">
             <web_browser
-             bottom="-10"
+             bottom="-4"
              follows="left|right|top|bottom"
              layout="topleft"
              left="0"
              name="browser"
              top="0"
              start_url="data:text/html,%3Chtml%3E%3Cbody bgcolor=%22#2A2A2A%22%3E%3C/body%3E%3C/html%3E"
-             width="570" />
-            <button
-             follows="bottom|left"
-             height="20"
-             label="Open in My Web Browser"
-             layout="topleft"
-             left_delta="0"
-             name="open_browser"
-             top_pad="5"
-             width="185" />
-<!--
-            <button
-             follows="bottom|right"
-             height="20"
-             label="Close"
-             layout="topleft"
-             left_pad="290"
-             name="close"
-             top_delta="0"
-             width="70" />
--->
+             width="590" />
         </layout_panel>
     </layout_stack>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
index 7b4c5f38a18e2f506a665dcf1e5458ca922e760f..3a5ceed5fb6a26e04e072fbc9e7a56d6bc694060 100644
--- a/indra/newview/skins/default/xui/en/floater_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_map.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
+ can_minimize="false" 
  can_resize="true"
  follows="top|right"
  height="225"
diff --git a/indra/newview/skins/default/xui/en/floater_pay_object.xml b/indra/newview/skins/default/xui/en/floater_pay_object.xml
index 1946920a9ceae623fbc2edd8e585beda9b54276e..455018f467dc135407a3cf0e777a59e117cc647d 100644
--- a/indra/newview/skins/default/xui/en/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/en/floater_pay_object.xml
@@ -30,25 +30,25 @@
      type="string"
      length="1"
      follows="left|top"
-     font="SansSerif"
      height="16"
      layout="topleft"
      left_pad="7"
+     top_delta="3"
      name="payee_name"
-     width="210">
-        [FIRST] [LAST]
+     width="184">
+      Ericacita Moostopolison
     </text>
     <text
      type="string"
      length="1"
      follows="left|top"
      halign="left"
-     height="16"
+     height="14"
      layout="topleft"
-     left="30"
+     left="34"
      name="object_name_label"
      top_pad="0"
-     width="150">
+     width="180">
         Via object:
     </text>
    <icon
@@ -59,20 +59,21 @@
      name="icon_object"
      tool_tip="Objects"
      top_pad="0"
-     left="30"
+     left="10"
      />
     <text
      type="string"
      length="1"
      follows="left|top"
-     font="SansSerif"
-     height="18"
+     height="16"
      layout="topleft"
-     left_pad="5"
+     left_pad="7"
      name="object_name_text"
-     top_delta="0"
-     width="210">
-        ...
+     top_delta="3"
+     use_ellipses="true"
+     word_wrap="false"
+     width="188">
+        My awesome object with a really damn long name
     </text>
    <button
      height="23"
@@ -112,7 +113,7 @@
      type="string"
      length="1"
      follows="left|top"
-     height="18"
+     height="14"
      layout="topleft"
      left="25"
      name="amount text"
@@ -123,7 +124,7 @@
     <line_editor
      border_style="line"
      follows="left|top|right"
-     height="19"
+     height="21"
      top_pad="0"
      layout="topleft"
      left="120"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
index 06dbdc95393c4cb33703e288860c880c641244bf..ead5b8c8f2e30dee6b448a03a77f98f0b4f5791f 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
@@ -11,15 +11,15 @@
  min_width="234"
  name="preview notecard"
  help_topic="preview_notecard"
- title="NOTE:"
+ title="NOTECARD:"
  width="400">
     <floater.string
      name="no_object">
-        Unable to find object containing this note.
+        Unable to find object containing this notecard.
     </floater.string>
     <floater.string
      name="not_allowed">
-        You do not have permission to view this note.
+        You do not have permission to view this notecard.
     </floater.string>
     <floater.string
      name="Title">
diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
index 84adabe4fa664f5be62fd4dce645f5b3733b548b..2f88c234cce5273e3a8d07963a845c5f29760223 100644
--- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
@@ -123,6 +123,12 @@
    layout="topleft"
    tool_tip="checkbox"
    name="test_checkbox" />
+  <check_box
+   top_pad="5"
+   enabled="false" 
+   label="Checkbox Disabled"
+   tool_tip="checkbox disabled"
+   name="test_checkbox_disabled" />
   <!-- "combo_box" is a pop-menu of items.  Optionally the box itself can
        contain a general purpose line input editor, allowing the user to
        provide input that is not a list item. -->
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index e55453f7723fd7f61deb34a5a4e640131b66628e..a1e190fc5eef40c2903692e197bfb70ffbec509b 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -2675,7 +2675,7 @@ even though the user gets a free copy.
 			 height="18"
 			 layout="topleft"
 			 left="10"
-       use_ellipsis="true" 
+                         use_ellipses="true"
 			 read_only="true"
 			 name="media_info"
 			 width="180" />
diff --git a/indra/newview/skins/default/xui/en/floater_voice_controls.xml b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
index a4ef807f069117e696f81d666fcbeb8883a939b2..b9649e9c577bcdd42d31015d466fb1d63f073e3b 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
@@ -8,6 +8,7 @@
  min_height="122"
  min_width="190"
  name="floater_voice_controls"
+ help_topic="floater_voice_controls"
  title="Voice Controls"
  save_visibility="true"
  single_instance="true"
diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml
index d29dfa70348c0a03308def9c9a4e043645b4841c..1e104671485564737d6ba857c625dfd37f0fdf34 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory.xml
@@ -85,7 +85,7 @@
          parameter="lsl" />
     </menu_item_call>
     <menu_item_call
-     label="New Note"
+     label="New Notecard"
      layout="topleft"
      name="New Note">
         <menu_item_call.on_click
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
index b07a8bb51234f50b0a21d0b0ed7d73d65aae61f6..5ad099e2d9e7f93deb0f7075c25160aad138af2b 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
@@ -71,7 +71,7 @@
                  parameter="lsl" />
             </menu_item_call>
             <menu_item_call
-             label="New Note"
+             label="New Notecard"
              layout="topleft"
              name="New Note">
                 <menu_item_call.on_click
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index 690167bc33bab99f25dda03265682d8914dcff5c..a0dec346a4fd4eb5aea8bbfedb02aebe19a1727f 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -223,6 +223,7 @@
            parameter="test_inspectors" />
         </menu_item_call>
       </menu>
+<!--
       <menu_item_check
          label="Reg In Client Test (restart)"
          name="Reg In Client Test (restart)">
@@ -232,6 +233,7 @@
                function="ToggleControl"
                parameter="RegInClient" />
       </menu_item_check>
+-->
       <menu_item_separator />
       <menu_item_call
        label="Set Window Size..."
diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml
index 62500c5116c22473631907763b0c62564f0e6b9d..35518cd13b9a6a44d5cca8fb9582906e13b24efb 100644
--- a/indra/newview/skins/default/xui/en/menu_object.xml
+++ b/indra/newview/skins/default/xui/en/menu_object.xml
@@ -57,6 +57,12 @@
          <menu_item_call.on_enable
           function="Object.EnableInspect" />
    </menu_item_call>
+  <menu_item_call
+       label="Zoom In"
+       name="Zoom In">
+    <menu_item_call.on_click
+     function="Object.ZoomIn" />
+  </menu_item_call>
 <menu_item_separator layout="topleft" />
    <context_menu
          label="Put On &gt;"
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby.xml b/indra/newview/skins/default/xui/en/menu_people_nearby.xml
index 5f2e6e0f6c6b76c263a58bf727097967949f11d9..c4da1df01767a53fe167d094ce08dee1fcc2a977 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby.xml
@@ -63,4 +63,10 @@
          function="Avatar.EnableItem"
          parameter="can_block" />
     </menu_item_check>
+    <menu_item_call
+    label="Offer Teleport"
+    name="teleport">
+      <menu_item_call.on_click
+       function="Avatar.OfferTeleport"/>
+    </menu_item_call>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 4e495bab3f0115caf70cfdd9fae47f127fb8e27d..fa7e3e86a33f2810f9e169b75756b2d3311eed4f 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -307,7 +307,7 @@
         <menu_item_separator
          layout="topleft" />
         <menu_item_call
-             label="Buy Land"
+             label="Buy This Land"
              layout="topleft"
              name="Buy Land">
                 <menu_item_call.on_click
@@ -2816,8 +2816,7 @@
             <menu_item_call
              label="Dump Focus Holder"
              layout="topleft"
-             name="Dump Focus Holder"
-             shortcut="control|alt|F">
+             name="Dump Focus Holder">
                 <menu_item_call.on_click
                  function="Advanced.DumpFocusHolder" />
             </menu_item_call>
diff --git a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml
index 970a2e6a8a5a7bf26a23e76e3871c704fe467aa2..003e1baa7ebcde478f9c677f93510ff8d6ae6fd8 100644
--- a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml
@@ -5,6 +5,7 @@
  height="305"
  layout="topleft"
  name="block_list_panel"
+ help_topic="blocked_list"
  min_height="350"
  min_width="240"
  width="280">
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index b92aa10ffc491dbf1dbf50dc27ee74386616cf22..aeaa049f1ff68bf6a3852decdf8a9be1ae86c80a 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -350,7 +350,7 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
              -->
                 <button
                  auto_resize="true"
-                 flash_color="Yellow"
+                 flash_color="ChicletFlashColor"
                  follows="right"
                  halign="center"
                  height="23"
@@ -403,7 +403,7 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
                halign="center"
                height="23"
                follows="right"
-               flash_color="Yellow"
+               flash_color="ChicletFlashColor"
                 label_color="Black"
                left="5"
                name="Unread"
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 9548119d58753abbae2d81af9abfe054af8345eb..a5bab3232cfd2b5158ee531adf5da39ab103b17e 100644
--- a/indra/newview/skins/default/xui/en/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml
@@ -258,7 +258,7 @@ things in this group. There&apos;s a broad variety of Abilities.
          name="static"
          top_pad="5"
          width="300">
-            Assigned Members
+            Assigned Roles
         </text>
         <scroll_list
          draw_stripes="true"
diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
index 58437cd4d24f40396c9d9272f2d9b1cb61315bdf..9d00abd2c9563e91e723480db6d0c2b456211099 100644
--- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
@@ -262,7 +262,7 @@ halign="center"
                  parameter="lsl" />
             </menu_item_call>
             <menu_item_call
-             label="New Note"
+             label="New Notecard"
              layout="topleft"
              name="New Note">
                 <menu_item_call.on_click
diff --git a/indra/newview/skins/default/xui/en/panel_me.xml b/indra/newview/skins/default/xui/en/panel_me.xml
index a99777848b88b125d5b625da9159fc0eb12188f0..e779e37419207fc892485ac4c8d02bba9f7f000c 100644
--- a/indra/newview/skins/default/xui/en/panel_me.xml
+++ b/indra/newview/skins/default/xui/en/panel_me.xml
@@ -26,7 +26,7 @@
    </text> -->
     <tab_container
      follows="all"
-     height="575"
+     height="570"
      halign="center"
      layout="topleft"
      left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml
index 10381d3987e1a6253982ebfa484f2613f6b8cd75..8327edfdd0865f6265cd7418df41ec982d2e7a82 100644
--- a/indra/newview/skins/default/xui/en/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml
@@ -31,244 +31,194 @@
 	 name="RegisterDateFormat">
 	 [REG_DATE] ([AGE])
 	</string>
-    <scroll_container
-     color="DkGray2"
+    <layout_stack
+     name="layout"
+     orientation="vertical"
      follows="all"
-     height="485"
      layout="topleft"
-     name="profile_scroll"
-     reserve_scroll_corner="false"
-     opaque="true"
+     left="0"
      top="0"
-     width="313">
-      <panel
-         name="scroll_content_panel"
-         follows="left|top|right"
-          height="485"
+     height="535"
+     width="313"
+     border_size="0">
+      <layout_panel
+         name="profile_stack"
+         follows="all"
          layout="topleft"
          top="0"
          left="0"
-         width="297">
-	  <panel
-         follows="left|top"
-         height="117"
+         height="505"
+         width="313">
+        <scroll_container
+         color="DkGray2"
+         follows="all"
          layout="topleft"
-         left="10"
-         name="second_life_image_panel"
-         top="0"
-         width="280">
-            <texture_picker
-             allow_no_texture="true"
-             default_image_name="None"
-             enabled="false"
-             follows="top|left"
+         left="0"
+         name="profile_scroll"
+         opaque="true"
+         height="505"
+         width="313"
+         top="0">
+          <panel
+                layout="topleft"
+          follows="left|top|right"
+               name="scroll_content_panel"
+                top="0"
+                left="0"
+                width="303">
+            <panel
+                  follows="left|top|right"
+                  height="117"
+                  layout="topleft"
+                  left="10"
+                  name="second_life_image_panel"
+                  top="0"
+                  width="300">
+              <texture_picker
+               allow_no_texture="true"
+               default_image_name="None"
+               enabled="false"
+               follows="top|left"
+               height="117"
+               layout="topleft"
+               left="0"
+               name="2nd_life_pic"
+               top="10"
+               width="102" />
+              <icon
+              height="102"
+              image_name="Blank"
+              layout="topleft"
+              name="2nd_life_edit_icon"
+              label=""
+              left="0"
+              tool_tip="Click the Edit Profile button below to change image"
+              top="10"
+              width="102" />
+              <text
+               follows="left|top|right"
+         font.style="BOLD"
+               height="15"
+               layout="topleft"
+               left_pad="10"
+               name="title_sl_descr_text"
+               text_color="white"
+               top_delta="0"
+               value="[SECOND_LIFE]:"
+               width="180" />
+              <expandable_text
+               follows="left|top|right"
+               height="95"
+               layout="topleft"
+               left="107"
+               textbox.max_length="512"
+               name="sl_description_edit"
+               top_pad="-3"
+               width="188"
+               expanded_bg_visible="true"
+               expanded_bg_color="DkGray">
+                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
+              </expandable_text>
+            </panel>
+            <panel
+             follows="left|top|right"
              height="117"
              layout="topleft"
-             left="0"
-             name="2nd_life_pic"
-             top="10"
-             width="102" />
-           <icon
-           height="102"
-           image_name="Blank"
-           layout="topleft"
-           name="2nd_life_edit_icon"
-           label=""
-           left="0"
-           tool_tip="Click the Edit Profile button below to change image"
-           top="10"
-           width="102" />
+       top_pad="10"
+             left="10"
+             name="first_life_image_panel"
+             width="300">
+              <texture_picker
+               allow_no_texture="true"
+               default_image_name="None"
+               enabled="false"
+               follows="top|left"
+               height="117"
+               layout="topleft"
+               left="0"
+               name="real_world_pic"
+               width="102" />
+              <icon
+              height="102"
+              image_name="Blank"
+              layout="topleft"
+              name="real_world_edit_icon"
+              label=""
+              left="0"
+              tool_tip="Click the Edit Profile button below to change image"
+              top="4"
+              width="102" />
+              <text
+               follows="left|top|right"
+         font.style="BOLD"
+               height="15"
+               layout="topleft"
+               left_pad="10"
+               name="title_rw_descr_text"
+               text_color="white"
+               top_delta="0"
+               value="Real World:"
+               width="180" />
+              <expandable_text
+               follows="left|top|right"
+               height="95"
+               layout="topleft"
+               left="107"
+               textbox.max_length="512"
+               name="fl_description_edit"
+               top_pad="-3"
+               width="188"
+               expanded_bg_visible="true"
+               expanded_bg_color="DkGray">
+                Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
+              </expandable_text>
+            </panel>
             <text
-             follows="left|top|right"
-	         font.style="BOLD"
+             follows="left|top"
              height="15"
+       font.style="BOLD"
+       font="SansSerifMedium"
              layout="topleft"
-             left_pad="10"
-             name="title_sl_descr_text"
-             text_color="white"
-             top_delta="0"
-             value="[SECOND_LIFE]:"
-             width="165" />
-            <expandable_text
-             follows="left|top|right"
-             height="95"
-             layout="topleft"
-             left="107"
-             textbox.max_length="512"
-             name="sl_description_edit"
-             top_pad="-3"
-             width="173"
-             expanded_bg_visible="true"
-             expanded_bg_color="DkGray">
-                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-            </expandable_text>
-        </panel>
-        <panel
-         follows="left|top"
-         height="117"
-         layout="topleft"
-	     top_pad="10"
-         left="10"
-         name="first_life_image_panel"
-         width="280">
-            <texture_picker
-             allow_no_texture="true"
-             default_image_name="None"
-             enabled="false"
-             follows="top|left"
-             height="117"
-             layout="topleft"
-             left="0"
-             name="real_world_pic"
-             width="102" />
-           <icon
-           height="102"
-           image_name="Blank"
-           layout="topleft"
-           name="real_world_edit_icon"
-           label=""
-           left="0"
-           tool_tip="Click the Edit Profile button below to change image"
-           top="4"
-           width="102" />
+             left="10"
+             name="homepage_edit"
+             top_pad="0"
+             value="http://librarianavengers.org"
+             width="300"
+             word_wrap="false"
+             use_ellipses="true"
+         />
             <text
-             follows="left|top|right"
-	         font.style="BOLD"
-             height="15"
+             follows="left|top"
+           font.style="BOLD"
+             height="10"
              layout="topleft"
-             left_pad="10"
-             name="title_rw_descr_text"
+             left="10"
+             name="title_member_text"
              text_color="white"
-             top_delta="0"
-             value="Real World:"
-             width="165" />
-            <expandable_text
-             follows="left|top|right"
-             height="95"
+             top_pad="10"
+             value="Resident Since:"
+             width="300" />
+            <text
+             follows="left|top"
+             height="15"
              layout="topleft"
-             left="107"
-             textbox.max_length="512"
-             name="fl_description_edit"
-             top_pad="-3"
-             width="173"
-             expanded_bg_visible="true"
-             expanded_bg_color="DkGray">
-                Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-            </expandable_text>
-        </panel>
-
-
-	<!-- <panel
-       name="lifes_images_panel"
-         follows="left|top|right"
-         height="244"
-         layout="topleft"
-         top="0"
-         left="0"
-         width="285">
-	 <panel
-         follows="left|top"
-         height="117"
-         layout="topleft"
-         left="10"
-         name="second_life_image_panel"
-         top="0"
-         width="285">
-          <text
-             follows="left|top|right"
-	     font.style="BOLD"
+             left="10"
+             name="register_date"
+             value="05/31/2376"
+             width="300"
+             word_wrap="true" />
+            <text
+             follows="left|top"
+       font.style="BOLD"
              height="15"
              layout="topleft"
-             left="0"
-            name="second_life_photo_title_text"
+             left="10"
+             name="title_acc_status_text"
              text_color="white"
-             value="[SECOND_LIFE]:"
-             width="170" />
-            <texture_picker
-             allow_no_texture="true"
-             default_image_name="None"
-             enabled="false"
-             follows="top|left"
-             height="117"
-             layout="topleft"
-             left="0"
-             name="2nd_life_pic"
-             top_pad="0"
-             width="102" />
-          </panel>
-           <icon
-           height="18"
-           image_name="AddItem_Off"
-           layout="topleft"
-           name="2nd_life_edit_icon"
-           label=""
-           left="87"
-           tool_tip="Click to select an image"
-           top="25"
-           width="18" />
-      </panel> -->
-
-
-
-
-        <text
-         type="string"
-         follows="left|top"
-         font="SansSerifSmall"
-	     font.style="BOLD"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="me_homepage_text"
-         text_color="white"
-         top_pad="0"
-         width="280">
-             Homepage:
-        </text>
-        <text
-         follows="left|top"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="homepage_edit"
-         top_pad="0"
-         value="http://librarianavengers.org"
-         width="280"
-         word_wrap="false"
-         use_ellipses="true"
-         />
-        <text
-         follows="left|top"
-	     font.style="BOLD"
-         height="10"
-         layout="topleft"
-         left="10"
-         name="title_member_text"
-         text_color="white"
-         top_pad="10"
-         value="Member Since:"
-         width="280" />
-        <text
-         follows="left|top"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="register_date"
-         value="05/31/2376"
-         width="280"
-         word_wrap="true" />
-        <text
-         follows="left|top"
-	 font.style="BOLD"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="title_acc_status_text"
-         text_color="white"
-         top_pad="10"
-         value="Account Status:"
-         width="280" />
-       <!-- <text
+             top_pad="5"
+             value="Account Status:"
+             width="300" />
+            <!-- <text
          type="string"
          follows="left|top"
          font="SansSerifSmall"
@@ -279,81 +229,82 @@
          top_delta="0"
 	 value="Go to Dashboard"
          width="100"/> -->
-        <text
-         follows="left|top"
-         height="20"
-         layout="topleft"
-         left="10"
-         name="acc_status_text"
-         top_pad="0"
-         value="Resident. No payment info on file."
-         width="280"
-         word_wrap="true" />
-        <text
-         follows="left|top"
-	 font.style="BOLD"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="title_partner_text"
-         text_color="white"
-         top_pad="5"
-         value="Partner:"
-         width="280" />
-        <panel
-         follows="left|top"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="partner_data_panel"
-         top_pad="0"
-         width="280">
+            <text
+            follows="left|top"
+            height="28"
+            layout="topleft"
+            left="10"
+            name="acc_status_text"
+            top_pad="0"
+            width="300"
+            word_wrap="true">
+              Resident. No payment info on file.
+              Linden.
+            </text>
             <text
              follows="left|top"
-             height="10"
+       font.style="BOLD"
+             height="15"
              layout="topleft"
-             left="0"
-             name="partner_text"
-             top="0"
-             value="[FIRST] [LAST]"
-         width="280"
-             word_wrap="true" />
-         </panel>
-        <text
-         follows="left|top"
-	 font.style="BOLD"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="title_groups_text"
-         text_color="white"
-         top_pad="8"
-         value="Groups:"
-         width="280" />
-                     <expandable_text
-         follows="left|top|bottom"
-         height="60"
-         layout="topleft"
-         left="10"
-             name="sl_groups"
-       top_pad="0"
-         width="280"
-             expanded_bg_visible="true"
-             expanded_bg_color="DkGray">
-            Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-        </expandable_text>
-      </panel>
- </scroll_container>
- <panel
+             left="10"
+             name="title_partner_text"
+             text_color="white"
+             top_pad="3"
+             value="Partner:"
+             width="300" />
+            <panel
+             follows="left|top"
+             height="15"
+             layout="topleft"
+             left="10"
+             name="partner_data_panel"
+             top_pad="0"
+             width="300">
+              <text
+               follows="left|top"
+               height="10"
+               layout="topleft"
+               left="0"
+               name="partner_text"
+               top="0"
+               value="[FIRST] [LAST]"
+           width="300"
+               word_wrap="true" />
+            </panel>
+            <text
+             follows="left|top"
+       font.style="BOLD"
+             height="13"
+             layout="topleft"
+             left="10"
+             name="title_groups_text"
+             text_color="white"
+             top_pad="3"
+             value="Groups:"
+             width="300" />
+            <expandable_text
+            follows="all"
+            height="113"
+            layout="topleft"
+            left="7"
+            name="sl_groups"
+          top_pad="0"
+            width="298"
+            expanded_bg_visible="true"
+            expanded_bg_color="DkGray">
+              Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. Aenean viverra tulip moosetop. Slan de heelish marfnik tooplod. Sum sum to whop de wompam booster copm.
+            </expandable_text>
+          </panel>
+        </scroll_container>
+      </layout_panel>
+      <!-- <layout_panel
      follows="bottom|left"
      layout="topleft"
      left="0"
      name="profile_buttons_panel"
-     top_pad="2"
-     bottom="10"
-     height="23"
-     width="303">
-        <button
+     height="28"
+     width="313">
+         <button
          follows="bottom|left"
          height="23"
          label="Add Friend"
@@ -361,8 +312,9 @@
          left="0"
          mouse_opaque="false"
          name="add_friend"
+         tool_tip="Offer friendship to the resident"
          top="5"
-         width="75" />
+         width="80" />
         <button
          follows="bottom|left"
          height="23"
@@ -370,7 +322,7 @@
          layout="topleft"
          name="im"
          top="5"
-         left_pad="5"
+         left_pad="3"
          width="45" />
         <button
          follows="bottom|left"
@@ -378,7 +330,7 @@
          label="Call"
          layout="topleft"
          name="call"
-         left_pad="5"
+         left_pad="3"
          top="5"
          width="45" />
         <button
@@ -389,7 +341,7 @@
          layout="topleft"
          name="show_on_map_btn"
          top="5"
-         left_pad="5"
+         left_pad="3"
          width="45" />
         <button
          follows="bottom|left"
@@ -397,23 +349,25 @@
          label="Teleport"
          layout="topleft"
          name="teleport"
-         left_pad="5"
+         left_pad="3"
          top="5"
-         width="80" />
- </panel>
- <panel
+         width="85" />
+ </panel>-->
+ <layout_panel
      follows="bottom|left"
      layout="topleft"
      left="0"
-     top_pad="-17"
+     top_pad="0"
      name="profile_me_buttons_panel"
      visible="false"
-     height="23"
-     width="303">
+     auto_resize="false" 
+     height="28"
+     width="313">
         <button
          follows="bottom|right"
          height="23"
-         left="10"
+         left="20"
+	 top="0"
          label="Edit Profile"
          name="edit_profile_btn"
          tool_tip="Edit your personal information"
@@ -425,7 +379,7 @@
          left_pad="10"
          name="edit_appearance_btn"
          tool_tip="Create/edit your appearance: physical data, clothes and etc."
-         right="-10"
          width="130" />
- </panel>
+ </layout_panel>
+</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index 0f9b095d8c3623821754f6e7c4a85c8c5e8f8d8f..e2884dbedcfeb96e7de81a4938bddd386f8dc845 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -29,12 +29,12 @@
 	 visible="false"
 	 left="0"
 	 top="0"
-	 height="60"
+	 height="50"
 	 width="600"/>
 	<panel
 	 background_visible="false"
 	 follows="left|top|right"
-	 top="5"
+	 top="3"
 	 height="23"
 	 layout="topleft"
 	 name="navigation_panel"
@@ -42,28 +42,17 @@
 	     <button
 	     follows="left|top"
 	     height="23"
-	     image_disabled="PushButton_Disabled"
-	     image_disabled_selected="PushButton_Disabled"
 	     image_overlay="Arrow_Left_Off"
-	     image_selected="PushButton_Selected"
-	     image_unselected="PushButton_Off"
-	     hover_glow_amount="0.15"
 	     layout="topleft"
 	     left="10"
 	     name="back_btn"
 	     tool_tip="Go back to previous location"
 	     top="3"
 	     width="31" />
-
 	    <button
 	     follows="left|top"
 	     height="23"
-	     image_disabled="PushButton_Disabled"
-	     image_disabled_selected="PushButton_Disabled"
 	     image_overlay="Arrow_Right_Off"
-	     image_selected="PushButton_Selected"
-	     image_unselected="PushButton_Off"
-	     hover_glow_amount="0.15"
 	     layout="topleft"
 	     left_pad="0"
 	     name="forward_btn"
@@ -73,12 +62,7 @@
 	    <button
 	     follows="left|top"
 	     height="23"
-	     image_disabled="PushButton_Disabled"
-	     image_disabled_selected="PushButton_Disabled"
 	     image_overlay="Home_Off"
-	     image_selected="PushButton_Selected"
-	     image_unselected="PushButton_Off"
-	     hover_glow_amount="0.15"
 	     layout="topleft"
 	     left_pad="7"
 	     name="home_btn"
@@ -146,7 +130,6 @@
           name="search_combo_editor"/>
         </search_combo_box>
 	</panel>
-
     <favorites_bar
      follows="left|right|top"
      font="SansSerifSmall"
@@ -154,16 +137,17 @@
      layout="topleft"
      left="0"
      name="favorite"
-     image_drag_indication="arrow_down.tga"
-   bottom="57"
+     image_drag_indication="Accordion_ArrowOpened_Off"
+   bottom="55"
    width="590">
     <chevron_button name=">>"
                      image_unselected="TabIcon_Close_Off"
                      image_selected="TabIcon_Close_Off"
                      tab_stop="false"
-                     follows="left|bottom" 
-                     tool_tip="Show more of My Favorites" 
+                     follows="left|bottom"
+                     tool_tip="Show more of My Favorites"
                      width="15"
+		     top="15"
                      height="15"/>
   </favorites_bar>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_notes.xml b/indra/newview/skins/default/xui/en/panel_notes.xml
index f15e75dee9537d84a842d31a211a12d7e0ffa30f..73528b28ad2347f917a3974d579228e624ecde63 100644
--- a/indra/newview/skins/default/xui/en/panel_notes.xml
+++ b/indra/newview/skins/default/xui/en/panel_notes.xml
@@ -19,94 +19,94 @@
      height="517"
      width="313"
      border_size="0">
-        <panel
-         name="notes_stack"
+      <layout_panel
+       name="notes_stack"
+       follows="all"
+       layout="topleft"
+       top="0"
+       left="0"
+       height="475"
+       width="313">
+        <scroll_container
+         color="DkGray2"
          follows="all"
          layout="topleft"
-         top="0"
          left="0"
+         name="profile_scroll"
+         opaque="true"
          height="475"
-         width="313">
-            <scroll_container
-             color="DkGray2"
-             follows="all"
+         width="313"
+         top="0">
+          <panel
+           height="450"
+           layout="topleft"
+           name="profile_scroll_panel"
+           top="0"
+           left="0"
+           width="303">
+            <text
+             follows="left|top"
+             font="SansSerifBold"
+             height="16"
              layout="topleft"
-             left="0"
-             name="profile_scroll"
-             opaque="true"
-             height="475"
-             width="313"
-             top="0">
-              <panel
-               height="450"
-               layout="topleft"
-               name="profile_scroll_panel"
-               top="0"
-               left="0"
-               width="303">
-                <text
-                 follows="left|top"
-                 font="SansSerifBold"
-                 height="16"
-                 layout="topleft"
-                 left="10"
-                 name="status_message"
-                 text_color="white"
-                 top="20"
-                 value="My private notes:"
-                 width="293" />
-                <text_editor
-                 follows="left|top"
-                 height="120"
-                 layout="topleft"
-                 left="10"
-                 max_length="1000"
-                 name="notes_edit"
-                 text_color="DkGray"
-                 top_pad="10"
-                 width="280"
-                 word_wrap="true" />
-                <text
-                 follows="left|top"
-                 font="SansSerifBold"
-                 height="16"
-                 layout="topleft"
-                 left="10"
-                 name="status_message2"
-                 text_color="white"
-                 top_pad="30"
-                 value="Allow this person to:"
-                 width="293" />
-                <check_box
-                 enabled="false"
-                 height="16"
-                 label="See my online status"
-                 layout="topleft"
-                 left="20"
-                 name="status_check"
-                 width="293" />
-                <check_box
-                 enabled="false"
-                 height="16"
-                 label="See me on the map"
-                 layout="topleft"
-                 left="20"
-                 name="map_check"
-                 width="293" />
-                <check_box
-                 enabled="false"
-                 height="16"
-                 label="Edit, delete or take my objects"
-                 layout="topleft"
-                 left="20"
-                 name="objects_check"
-                 width="293" />
-              </panel>
-            </scroll_container>
-        </panel>
-        <panel
-         follows="bottom|left"
-         height="30"
+             left="10"
+             name="status_message"
+             text_color="white"
+             top="20"
+             value="My private notes:"
+             width="293" />
+            <text_editor
+             follows="left|top"
+             height="120"
+             layout="topleft"
+             left="10"
+             max_length="1000"
+             name="notes_edit"
+             text_color="DkGray"
+             top_pad="10"
+             width="280"
+             word_wrap="true" />
+            <text
+             follows="left|top"
+             font="SansSerifBold"
+             height="16"
+             layout="topleft"
+             left="10"
+             name="status_message2"
+             text_color="white"
+             top_pad="30"
+             value="Allow this person to:"
+             width="293" />
+            <check_box
+             enabled="false"
+             height="16"
+             label="See my online status"
+             layout="topleft"
+             left="20"
+             name="status_check"
+             width="293" />
+            <check_box
+             enabled="false"
+             height="16"
+             label="See me on the map"
+             layout="topleft"
+             left="20"
+             name="map_check"
+             width="293" />
+            <check_box
+             enabled="false"
+             height="16"
+             label="Edit, delete or take my objects"
+             layout="topleft"
+             left="20"
+             name="objects_check"
+             width="293" />
+          </panel>
+        </scroll_container>
+      </layout_panel>
+      <layout_panel
+       follows="bottom|left"
+       height="30"
          layout="topleft"
          left="0"
          name="notes_buttons_panel"
@@ -115,14 +115,14 @@
        <button
          follows="bottom|left"
          height="23"
-         label="Add"
+         label="Add Friend"
          layout="topleft"
          left="0"
          mouse_opaque="false"
          name="add_friend"
          tool_tip="Offer friendship to the resident"
          top="5"
-         width="55" />
+         width="80" />
         <button
          follows="bottom|left"
          height="23"
@@ -131,8 +131,8 @@
          name="im"
          tool_tip="Open instant message session"
          top="5"
-         left_pad="5"
-         width="40" />
+         left_pad="3"
+         width="45" />
         <button
          follows="bottom|left"
          height="23"
@@ -140,9 +140,9 @@
          layout="topleft"
          name="call"
          tool_tip="Call this resident"
-         left_pad="5"
+         left_pad="3"
          top="5"
-         width="55" />
+         width="45" />
         <button
          enabled="false"
          follows="bottom|left"
@@ -152,8 +152,8 @@
          name="show_on_map_btn"
          tool_tip="Show the resident on the map"
          top="5"
-         left_pad="5"
-         width="50" />
+         left_pad="3"
+         width="45" />
         <button
          follows="bottom|left"
          height="23"
@@ -161,9 +161,9 @@
          layout="topleft"
          name="teleport"
          tool_tip="Offer teleport"
-         left_pad="5"
+         left_pad="3"
          top="5"
-         width="90" />
-        </panel>
+         width="80" />
+        </layout_panel>
     </layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
index 7e512f95947300b1f3a8d1c0e47002c742869d99..fd540bdc7e8fa081f339c9d7ec8c30e1caf8d3dc 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-
  <panel name="Outfits"
  background_visible="true"
   follows="all"
@@ -8,7 +7,7 @@
  layout="topleft"
  min_height="350"
  min_width="240"
- width="330"
+ width="320"
  border="false">
    <tab_container
      follows="all"
@@ -16,24 +15,28 @@
      layout="topleft"
      left="10"
      name="appearance_tabs"
-     tab_min_width="100"
+     tab_min_width="140"
      tab_height="30"
      tab_position="top"
      halign="center"
      width="313">
          <inventory_panel
+     follows="all"
+ background_visible="true"
+ background_opaque="true"
         label="WEARING"
         help_topic="now_wearing_tab"
         allow_multi_select="true"
         border="false"
-        height="500"
-        width="290"
         left="0"
         top="0"
         mouse_opaque="true"
         name="cof_accordionpanel"
-        start_folder="Current Outfit" />
+        start_folder="Current Outfit"
+     width="313" />
          <inventory_panel
+ background_visible="true"
+ background_opaque="true"
            label="MY OUTFITS"
            help_topic="my_outfits_tab"
            allow_multi_select="true"
@@ -41,10 +44,9 @@
            border="false"
            left="0"
            top="0"
-           height="500"
-           width="290"
+           width="314"
            mouse_opaque="true"
-           name="outfitslist_accordionpanel"
+           name="outfitslist_tab"
            start_folder="My Outfits" /> 
    </tab_container>
 	<panel
@@ -83,23 +85,13 @@
 	 <button
 	  follows="bottom|left"
 		height="23" 
-		label="Edit Look" 
-		layout="topleft"
-        left="10"
-		name="look_edit_btn"
-        top="26"
-        visible="false" 
-		width="90" />
-     <button
-      follows="bottom|left"
-      height="23" 
-      label="Make Outfit" 
+      label="Save Outfit" 
       layout="topleft"
       name="make_outfit_btn"
       tool_tip="Save appearance as an outfit"
        top="26"
-      right="-110"
-      width="90" />
+       left='10'
+      width="120" />
      <button
       follows="bottom|right" 
       height="23" 
@@ -107,8 +99,9 @@
       layout="topleft"
       name="wear_btn"
       right="-10"
+      left_pad="10"
        top="26"
       tool_tip="Wear selected outfit"
-      width="90" />
+      width="120" />
 	 </panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml
index 7b88fca7c367135b07bce5db424ad8f3bb71d0a8..2c7a51f0e78f6921e56462d6f0558a1e0e9df614 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml
@@ -17,17 +17,6 @@
 		 function="panel_outfits_inventory_gear_default.Enable"
 		 parameter="wear" />
     </menu_item_call>
-    <menu_item_call
-     label="Add To Current Outfit"
-     layout="topleft"
-     name="add">
-        <on_click
-         function="panel_outfits_inventory_gear_default.Custom.Action"
-         parameter="add" />
-        <on_enable
-		 function="panel_outfits_inventory_gear_default.Enable"
-		 parameter="add" />
-    </menu_item_call>
     <menu_item_call
      label="Remove From Current Outfit"
      layout="topleft"
@@ -54,7 +43,7 @@
 		 parameter="rename" />
     </menu_item_call>
     <menu_item_call
-     label="Remove"
+     label="Remove Link"
      layout="topleft"
      name="remove_link">
         <on_click
@@ -65,7 +54,7 @@
 		 parameter="remove_link" />
     </menu_item_call>
     <menu_item_call
-     label="Delete"
+     label="Delete Outfit"
      layout="topleft"
      name="delete">
         <on_click
@@ -73,6 +62,6 @@
          parameter="delete" />
         <on_enable
 		 function="panel_outfits_inventory_gear_default.Enable"
-		 parameter="delete" />
+		 parameter="delete_outfit" />
     </menu_item_call>
 </menu>
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 08a10553a86a0b50c85948c1433ca1717ea18953..adf22f825ff6fde9214ffe31cffc2bea94fc4c7b 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -400,7 +400,7 @@ background_visible="true"
          layout="topleft"
          name="group_info_btn"
          tool_tip="Show group information"
-         width="110" />
+         width="102" />
         <button
          follows="bottom|left"
          top="4"
@@ -410,7 +410,7 @@ background_visible="true"
          layout="topleft"
          name="chat_btn"
          tool_tip="Open chat session"
-         width="110" />
+         width="102" />
         <button
          follows="bottom|left"
          top="4"
@@ -420,6 +420,6 @@ background_visible="true"
          layout="topleft"
          name="group_call_btn"
          tool_tip="Call this group"
-         width="110" />
+         width="102" />
     </panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
index 25d7ba0903f193f5a8ba293157ae0970c0d3fba0..5dd93d0f7e6b27b77b0ae782eeabd61fffda2edd 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -85,7 +85,10 @@
      left="30"
      name="autoplay_enabled"
      top_pad="10"
-     width="350" />
+     width="350">
+       <check_box.commit_callback
+          function="Pref.ParcelMediaAutoPlayEnable" />
+    </check_box>
    <text
       type="string"
     length="1"
diff --git a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
index 4cef1f9c608139e00b53b52120d7d2938e21a8c0..075d9232b1db5c18b489c8224a4a32d8ba79a838 100644
--- a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
@@ -14,7 +14,7 @@
   <string name="min_width">300</string>
   <string name="min_height">75</string>
   <string name="zoom_near_padding">1.0</string>
-  <string name="zoom_medium_padding">1.25</string>
+  <string name="zoom_medium_padding">1.1</string>
   <string name="zoom_far_padding">1.5</string>
   <string name="top_world_view_avoid_zone">50</string>
   <layout_stack
@@ -113,6 +113,7 @@
 	</layout_panel>
 	<layout_panel
 		name="fwd"
+		mouse_opaque="false"
 		auto_resize="false"
 		user_resize="false"
 		layout="topleft"
@@ -140,6 +141,7 @@
 	</layout_panel>
 	<layout_panel
 		name="home"
+		mouse_opaque="false"
 		auto_resize="false"
 		user_resize="false"
 		layout="topleft"
@@ -167,6 +169,7 @@
 	</layout_panel>
 	<layout_panel
 		name="media_stop"
+		mouse_opaque="false"
 		auto_resize="false"
 		user_resize="false"
 		layout="topleft"
@@ -194,6 +197,7 @@
 	</layout_panel>
 	<layout_panel
 		name="reload"
+		mouse_opaque="false"
 		auto_resize="false"
 		user_resize="false"
 		layout="topleft"
@@ -221,6 +225,7 @@
 	</layout_panel>
 	<layout_panel
 		name="stop"
+		mouse_opaque="false"
 		auto_resize="false"
 		user_resize="false"
 		layout="topleft"
@@ -248,6 +253,7 @@
 	</layout_panel>
 	<layout_panel
 		name="play"
+		mouse_opaque="false"
 		auto_resize="false"
 		user_resize="false"
 		layout="topleft"
@@ -276,6 +282,7 @@
 	</layout_panel>
 	<layout_panel
 		name="pause"
+		mouse_opaque="false"
 		auto_resize="false"
 		user_resize="false"
 		layout="topleft"
@@ -303,6 +310,7 @@
 	<!-- media URL entry  -->
 	<layout_panel
 		name="media_address"
+		mouse_opaque="false"
 		auto_resize="true"
 		user_resize="false"
 		height="24"
@@ -367,6 +375,7 @@
 	</layout_panel>
 	<layout_panel
 		name="media_play_position"
+		mouse_opaque="false"
 		auto_resize="true"
 		user_resize="false"
 		follows="left|right"
@@ -392,6 +401,7 @@
 	</layout_panel>
 	<layout_panel
 		name="skip_back"
+		mouse_opaque="false"
 		auto_resize="false"
 		user_resize="false"
 		layout="topleft"
@@ -419,6 +429,7 @@
 	</layout_panel>
 	<layout_panel
 		name="skip_forward"
+		mouse_opaque="false"
 		auto_resize="false"
 		user_resize="false"
 		layout="topleft"
@@ -445,6 +456,7 @@
 	</layout_panel>
 	<layout_panel
 		name="media_volume"
+		mouse_opaque="false"
 		auto_resize="false"
 		user_resize="false"
 		layout="topleft"
@@ -501,6 +513,7 @@
 	</layout_panel>
 	<layout_panel
 		name="zoom_frame"
+		mouse_opaque="false"
 		auto_resize="false"
 		user_resize="false"
 		layout="topleft"
@@ -528,6 +541,7 @@
 	</layout_panel>
 	<layout_panel
 		name="close"
+		mouse_opaque="false"
 		auto_resize="false"
 		user_resize="false"
 		layout="topleft"
@@ -554,6 +568,7 @@
 	</layout_panel>
 	<layout_panel
 		name="new_window"
+		mouse_opaque="false"
 		auto_resize="false"
 		user_resize="false"
 		layout="topleft"
@@ -581,6 +596,7 @@
 	<!-- bookend panel -->
 	<layout_panel
 		name="right_bookend"
+		mouse_opaque="false"
 		top="0"
 		width="0"
 		layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index 342cf4144f9c65a2bf35b3417ca40a3e1c7cb10f..43947262ec5498d6df4c981850796e9c5f5f8532 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -27,173 +27,178 @@
     <string
      name="no_partner_text"
      value="None" />
-    <string 
+    <string
 	 name="RegisterDateFormat">
 	 [REG_DATE] ([AGE])
 	</string>
-  <scroll_container
-     color="DkGray2"
+    <layout_stack
+     name="layout"
+     orientation="vertical"
      follows="all"
-     height="485"
      layout="topleft"
-     name="profile_scroll"
-     reserve_scroll_corner="true"
-     opaque="true"
+     left="0"
      top="0"
-     width="313">
-      <panel
-         name="scroll_content_panel"
-         follows="left|top|right"
-          height="485"
+     height="517"
+     width="313"
+     border_size="0">
+      <layout_panel
+         name="profile_stack"
+         follows="all"
          layout="topleft"
          top="0"
          left="0"
+         height="505"
          width="313">
-	 <panel
-         follows="left|top"
-         height="117"
+        <scroll_container
+         color="DkGray2"
+         follows="all"
          layout="topleft"
-         left="10"
-         name="second_life_image_panel"
-         top="0"
-         width="280">
-            <texture_picker
-             allow_no_texture="true"
-             default_image_name="None"
-             enabled="false"
-             follows="top|left"
-             height="102"
+         left="0"
+         name="profile_scroll"
+         opaque="true"
+         height="505"
+         width="313"
+         top="0">
+          <panel
+                layout="topleft"
+          follows="left|top|right"
+                name="profile_scroll_panel"
+                top="0"
+                left="0"
+                width="303">
+            <panel
+                  follows="left|top|right"
+                  height="117"
+                  layout="topleft"
+                  left="10"
+                  name="second_life_image_panel"
+                  top="0"
+                  width="303">
+              <texture_picker
+               allow_no_texture="true"
+               default_image_name="None"
+               enabled="false"
+               follows="top|left"
+               height="117"
+               layout="topleft"
+               left="0"
+               name="2nd_life_pic"
+               top="10"
+               width="102" />
+              <text
+               follows="left|top|right"
+         font.style="BOLD"
+               height="15"
+               layout="topleft"
+               left_pad="10"
+               name="title_sl_descr_text"
+               text_color="white"
+               top_delta="0"
+               value="[SECOND_LIFE]:"
+               width="180" />
+              <expandable_text
+               follows="left|top|right"
+               height="95"
+               layout="topleft"
+               left="107"
+               textbox.max_length="512"
+               name="sl_description_edit"
+               top_pad="-3"
+               width="185"
+               expanded_bg_visible="true"
+               expanded_bg_color="DkGray">
+                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
+              </expandable_text>
+            </panel>
+            <panel
+             follows="left|top|right"
+             height="117"
              layout="topleft"
-             left="0"
-             name="2nd_life_pic"
-             top="10"
-             width="102" />
+       top_pad="10"
+             left="10"
+             name="first_life_image_panel"
+             width="303">
+              <texture_picker
+               allow_no_texture="true"
+               default_image_name="None"
+               enabled="false"
+               follows="top|left"
+               height="117"
+               layout="topleft"
+               left="0"
+               name="real_world_pic"
+               width="102" />
+              <text
+               follows="left|top|right"
+         font.style="BOLD"
+               height="15"
+               layout="topleft"
+               left_pad="10"
+               name="title_rw_descr_text"
+               text_color="white"
+               top_delta="0"
+               value="Real World:"
+               width="180" />
+              <expandable_text
+               follows="left|top|right"
+               height="95"
+               layout="topleft"
+               left="107"
+               textbox.max_length="512"
+               name="fl_description_edit"
+               top_pad="-3"
+               width="185"
+               expanded_bg_visible="true"
+               expanded_bg_color="DkGray">
+                Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
+              </expandable_text>
+            </panel>
             <text
-             follows="left|top|right"
-	     font.style="BOLD"
-             height="15"
+              follows="left|top"
+              height="15"
+        font.style="BOLD"
+        font="SansSerifMedium"
+              layout="topleft"
+              left="10"
+              name="homepage_edit"
+              top_pad="0"
+              value="http://librarianavengers.org"
+              width="300"
+              word_wrap="false"
+              use_ellipses="true"
+         />
+            <text
+             follows="left|top"
+           font.style="BOLD"
+             height="10"
              layout="topleft"
-             left_pad="10"
-             name="title_sl_descr_text"
+             left="10"
+             name="title_member_text"
              text_color="white"
-             top_delta="0"
-             value="[SECOND_LIFE]:"
-             width="165" />
-            <expandable_text
-             follows="left|top|right"
-             height="95"
-             layout="topleft"
-             left="107"
-             textbox.max_length="512"
-             name="sl_description_edit"
-             top_pad="-3"
-             width="173"
-             expanded_bg_visible="true"
-             expanded_bg_color="DkGray">
-                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-            </expandable_text>
-        </panel>
-        <panel
-         follows="left|top"
-         height="117"
-         layout="topleft"
-	 top_pad="10"
-         left="10"
-         name="first_life_image_panel"
-         width="280">
-            <texture_picker
-             allow_no_texture="true"
-             default_image_name="None"
-             enabled="false"
-             follows="top|left"
-             height="102"
+             top_pad="10"
+             value="Resident Since:"
+             width="300" />
+            <text
+             follows="left|top"
+             height="15"
              layout="topleft"
-             left="0"
-             name="real_world_pic"
-             width="102" />
+             left="10"
+             name="register_date"
+             value="05/31/2376"
+             width="300"
+             word_wrap="true" />
             <text
-             follows="left|top|right"
-	     font.style="BOLD"
+             follows="left|top"
+       font.style="BOLD"
              height="15"
              layout="topleft"
-             left_pad="10"
-             name="title_rw_descr_text"
+             left="10"
+             name="title_acc_status_text"
              text_color="white"
-             top_delta="0"
-             value="Real World:"
-             width="165" />
-            <expandable_text
-             follows="left|top|right"
-             height="95"
-             layout="topleft"
-             left="107"
-             textbox.max_length="512"
-             name="fl_description_edit"
-             top_pad="-3"
-             width="173"
-             expanded_bg_visible="true"
-             expanded_bg_color="DkGray">
-                Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-            </expandable_text>
-        </panel>
-        <text
-         type="string"
-         follows="left|top"
-         font="SansSerifSmall"
-	 font.style="BOLD"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="me_homepage_text"
-         text_color="white"
-         top_pad="0"
-         width="280">
-             Homepage:
-        </text>
-        <text
-         follows="left|top"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="homepage_edit"
-         top_pad="0"
-         value="http://librarianavengers.org"
-         width="280"
-         word_wrap="false"
-         use_ellipses="true"
-         />
-        <text
-         follows="left|top"
-	 font.style="BOLD"
-         height="10"
-         layout="topleft"
-         left="10"
-         name="title_member_text"
-         text_color="white"
-         top_pad="10"
-         value="Member Since:"
-         width="280" />
-        <text
-         follows="left|top"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="register_date"
-         value="05/31/1976"
-         width="280"
-         word_wrap="true" />
-        <text
-         follows="left|top"
-	 font.style="BOLD"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="title_acc_status_text"
-         text_color="white"
-         top_pad="10"
-         value="Account Status:"
-         width="280" />
-       <!-- <text
+             top_pad="5"
+             value="Account Status:"
+             width="300" />
+            <!-- <text
          type="string"
          follows="left|top"
          font="SansSerifSmall"
@@ -204,80 +209,81 @@
          top_delta="0"
 	 value="Go to Dashboard"
          width="100"/> -->
-        <text
-         follows="left|top"
-         height="20"
-         layout="topleft"
-         left="10"
-         name="acc_status_text"
-         top_pad="0"
-         value="Resident. No payment info on file."
-         width="280"
-         word_wrap="true" />
-        <text
-         follows="left|top"
-	 font.style="BOLD"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="title_partner_text"
-         text_color="white"
-         top_pad="5"
-         value="Partner:"
-         width="280" />
-        <panel
-         follows="left|top"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="partner_data_panel"
-         top_pad="0"
-         width="280">
             <text
              follows="left|top"
-             height="10"
+             height="28"
              layout="topleft"
-             left="0"
-             name="partner_text"
-             top="0"
-             value="[FIRST] [LAST]"
-         width="280"
-             word_wrap="true" />
-         </panel>
-        <text
-         follows="left|top"
-	 font.style="BOLD"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="title_groups_text"
-         text_color="white"
-         top_pad="8"
-         value="Groups:"
-         width="280" />
-                     <expandable_text
-         follows="left|top|bottom"
-         height="60"
+             left="10"
+             name="acc_status_text"
+             top_pad="0"
+             width="300"
+             word_wrap="true">
+              Resident. No payment info on file.
+              Linden.
+            </text>
+            <text
+             follows="left|top"
+       font.style="BOLD"
+             height="15"
+             layout="topleft"
+             left="10"
+             name="title_partner_text"
+             text_color="white"
+             top_pad="3"
+             value="Partner:"
+             width="300" />
+            <panel
+             follows="left|top"
+             height="15"
+             layout="topleft"
+             left="10"
+             name="partner_data_panel"
+             top_pad="0"
+             width="300">
+              <text
+               follows="left|top"
+               height="10"
+               layout="topleft"
+               left="0"
+               name="partner_text"
+               top="0"
+               value="[FIRST] [LAST]"
+           width="300"
+               word_wrap="true" />
+            </panel>
+            <text
+             follows="left|top"
+       font.style="BOLD"
+             height="13"
+             layout="topleft"
+             left="10"
+             name="title_groups_text"
+             text_color="white"
+             top_pad="3"
+             value="Groups:"
+             width="300" />
+            <expandable_text
+            follows="all"
+            height="113"
+            layout="topleft"
+            left="7"
+            name="sl_groups"
+            top_pad="0"
+            width="298"
+            expanded_bg_visible="true"
+            expanded_bg_color="DkGray">
+              Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. Aenean viverra tulip moosetop. Slan de heelish marfnik tooplod. Sum sum to whop de wompam booster copm.
+            </expandable_text>
+          </panel>
+        </scroll_container>
+      </layout_panel>
+      <layout_panel
+              follows="bottom|left"
+         height="28"
          layout="topleft"
-         left="10"
-             name="sl_groups"
-       top_pad="0"
-         width="280"
-             expanded_bg_visible="true"
-             expanded_bg_color="DkGray">
-            Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-        </expandable_text>
-      </panel>
- </scroll_container>
- <panel
-     follows="bottom|left"
-     layout="topleft"
-     left="0"
-     name="profile_buttons_panel"
-     top_pad="2"
-     bottom="0"
-     height="19"
-     width="303">
+         name="profile_buttons_panel"
+         auto_resize="false" 
+         width="313">
         <button
          follows="bottom|left"
          height="23"
@@ -288,7 +294,7 @@
          name="add_friend"
          tool_tip="Offer friendship to the resident"
          top="5"
-         width="77" />
+         width="80" />
         <button
          follows="bottom|left"
          height="23"
@@ -297,8 +303,8 @@
          name="im"
          tool_tip="Open instant message session"
          top="5"
-         left_pad="5"
-         width="33" />
+         left_pad="3"
+         width="45" />
         <button
          follows="bottom|left"
          height="23"
@@ -306,9 +312,9 @@
          layout="topleft"
          name="call"
          tool_tip="Call this resident"
-         left_pad="5"
+         left_pad="3"
          top="5"
-         width="40" />
+         width="45" />
         <button
          enabled="false"
          follows="bottom|left"
@@ -318,8 +324,8 @@
          name="show_on_map_btn"
          tool_tip="Show the resident on the map"
          top="5"
-         left_pad="5"
-         width="44" />
+         left_pad="3"
+         width="45" />
         <button
          follows="bottom|left"
          height="23"
@@ -327,10 +333,10 @@
          layout="topleft"
          name="teleport"
          tool_tip="Offer teleport"
-         left_pad="5"
+         left_pad="3"
          top="5"
-         width="67" />
-        <button
+         width="85" />
+       <!-- <button
          follows="bottom|right"
          height="23"
          label="â–¼"
@@ -339,23 +345,24 @@
          tool_tip="Pay money to or share inventory with the resident"
          right="-1"
          top="5"
-         width="21" />
- </panel>
- <panel
-     follows="bottom|left"
-     layout="topleft"
-     left="0"
-     top_pad="-17"
-     name="profile_me_buttons_panel"
-     visible="false"
-     height="19"
-     width="303">
+	 left_pad="3"
+         width="23" />-->
+        </layout_panel>
+      <layout_panel
+         follows="bottom|left"
+         height="28"
+         layout="topleft"
+         name="profile_me_buttons_panel"
+         visible="false"
+	       width="313">
         <button
          follows="bottom|right"
          height="23"
-         left="10"
+         left="20"
+	 top="0"
          label="Edit Profile"
          name="edit_profile_btn"
+         tool_tip="Edit your personal information"
          width="130" />
         <button
          follows="bottom|right"
@@ -363,7 +370,9 @@
          label="Edit Appearance"
          left_pad="10"
          name="edit_appearance_btn"
-         right="-10"
+         tool_tip="Create/edit your appearance: physical data, clothes and etc."
          width="130" />
- </panel>
-</panel>
+        </layout_panel>
+    
+</layout_stack>
+</panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml
index 6324ec2bd8958190405f93ba96e49ad0532284fe..c51447eaf002b38b422c6c5da9e610ec5ef844ad 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml
@@ -26,8 +26,8 @@
      top="2"
      width="23" />
     <text_editor
-      allow_scroll="false" 
-      bg_visible="false" 
+      allow_scroll="false"
+      bg_visible="false"
       read_only = "true"
       follows="top|left|right"
       font="SansSerifHugeBold"
@@ -55,7 +55,7 @@
      halign="center"
      layout="topleft"
      left="10"
-	 min_width="333"
+     min_width="333"
      name="tabs"
      tab_min_width="80"
      tab_height="30"
diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml
index 3578c4326d3e5d9de7b59a1c764c1e7f9aa5755f..00f54feabde73a4614e4c5e65a191c3e781eccd6 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -3,7 +3,7 @@
  background_opaque="true"
  background_visible="true"
  bg_opaque_color="MouseGray"
- follows="all"
+ follows="top|right"
  height="19"
  layout="topleft"
  left="0"
@@ -44,15 +44,17 @@
      halign="right"
      follows="right|top"
      image_selected="BuyArrow_Over"
-     image_unselected="BuyArrow_Off"
+     image_unselected="BuyArrow_Over"
      image_pressed="BuyArrow_Press"
      height="16"
-     right="-120"
+     right="-128"
+     label_color="White"
+     label_shadow="false"
      name="buycurrency"
      pad_right="20px"
      tool_tip="My Balance: Click to buy more L$"
-     top="0"
-     width="90" />
+     top="3"
+     width="100" />
     <text
      type="string"
      font="SansSerifSmall"
@@ -62,25 +64,25 @@
      height="16"
      top="4"
      layout="topleft"
-     left_pad="-7"
+     left_pad="0"
      name="TimeText"
      text_color="TimeTextColor"
      tool_tip="Current time (Pacific)"
-     width="80">
+     width="85">
         12:00 AM
     </text>
     <button
      follows="right|bottom"
      height="16"
-     image_selected="Parcel_VoiceNo_Dark"
-     image_unselected="Parcel_Voice_Dark"
+     image_selected="AudioMute_Off"
+     image_pressed="Audio_Press"
+     image_unselected="Audio_Off"
      is_toggle="true"
      left_pad="18"
      top="1"
      name="volume_btn"
      tool_tip="Global Volume Control"
      width="16" />
-
     <text
      enabled="true"
      follows="right|bottom"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
index 44248eedd52d8b0a55f709370aaf0d80af0211a7..fab1f11273ec94b238019898aa73cfb9d668eb26 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -52,25 +52,25 @@ width="333">
       text_color="white"
       top="3"
       use_ellipses="true"
-      width="290"
+      width="305"
       follows="top|left"
       word_wrap="true"
       mouse_opaque="false"
       name="currentlook_name">
       MyOutfit With a really Long Name like MOOSE
       </text>
-      <!-- <text
-      text_color="LtGray_50"
-      width="290"
-      left="40"
+      <text
+      font="SansSerifSmall"
+      text_color="White_50"
+      width="300"
       height="1"
       follows="top|left"
       layout="topleft"
-      top_pad="-2"
+      top_pad="5"
       mouse_opaque="false"
       name="currentlook_title" >
-      (current outfit)
-      </text>-->
+      (unsaved)
+       </text>
    </panel>
    <filter_editor
    height="23"
@@ -80,18 +80,18 @@ width="333">
    label="Filter Outfits"
    max_length="300"
    name="Filter"
-   top_pad="0"
+   top_pad="10"
    width="303" />
    <panel
    class="panel_outfits_inventory"
    filename="panel_outfits_inventory.xml"
    name="panel_outfits_inventory"
-   height="515"
+   height="505"
    min_height="410"
    width="320"
+   left="0"
    top_pad="0"
-   follows="all"
-   />
+   follows="all" />
   <!--   <button
 	  follows="bottom|left"
 		height="23"
@@ -120,4 +120,3 @@ width="333">
    top="35"
    visible="false" />
 </panel>
-
diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
index b738e7242388cef415e9135ea72d23590390367b..51974be854e72d2472aaafa1cbd8f586e6e9a02d 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
@@ -28,7 +28,7 @@
 			 name="panel_main_inventory"
 			 top="0"
 			 label=""
-			 height="500"
+			 height="545"
 			 width="330" />
 		<panel
 			 height="25"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 447901f9842b656d6173f8d9b30b96789d4f7ac7..f2f23a3847dc2d6ab8c0b92e04a596d2ee94d793 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -8,6 +8,7 @@
 	<!-- Default Args - these arguments will be replaced in all strings -->
 	<string name="SECOND_LIFE">Second Life</string>
 	<string name="APP_NAME">Second Life</string>
+	<string name="CAPITALIZED_APP_NAME">SECOND LIFE</string>
 	<string name="SECOND_LIFE_GRID">Second Life Grid</string>
 	<string name="SUPPORT_SITE">Second Life Support Portal</string>
 
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
index 7cb973f4c8dbccf2eb66c61959889fd5cfe1a91e..af0d3382565dd6239d98099607c3496f46daad94 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
@@ -33,7 +33,7 @@
     <chiclet_im_adhoc.new_message_icon
      bottom="12"
      height="13"
-     image_name="Unread_IM"
+     image_name="Unread_Chiclet"
      left="12"
      name="new_message_icon"
      visible="false"
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
index a9b567225eb85ad9f1293a6109f54e6126a46180..b1988a2d2001c6281be7166c4d6d5990dcb93386 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
@@ -34,7 +34,7 @@
     <chiclet_im_group.new_message_icon
      bottom="12"
      height="13"
-     image_name="Unread_IM"
+     image_name="Unread_Chiclet"
      left="12"
      name="new_message_icon"
      visible="false"
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
index 9283594a4ca393e9091e2d514c3864db476b8e3c..52fbce0de76ab815ea2c386a3c137d3a7f451a15 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
@@ -33,7 +33,7 @@
     <chiclet_im_p2p.new_message_icon
      bottom="12"
      height="13"
-     image_name="Unread_IM"
+     image_name="Unread_Chiclet"
      left="12"
      name="new_message_icon"
      visible="false"
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
index 5a22563758299ea7e20db8ad5f2ecf0ece6aecc3..33f85a964cf063c4a8b30205827af8a61a1684cf 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml
@@ -14,7 +14,7 @@
  <chiclet_offer.new_message_icon
   bottom="12"
   height="13"
-  image_name="Unread_IM"
+  image_name="Unread_Chiclet"
   left="12"
   name="new_message_icon"
   visible="false"
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
index 05a23b95f9e578633bef23060902c5cb294e8ca7..560c8e6ea5cbdffbf55b6c97abb54648e1bbfcc0 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml
@@ -14,7 +14,7 @@
  <chiclet_script.new_message_icon
   bottom="12"
   height="13"
-  image_name="Unread_IM"
+  image_name="Unread_Chiclet"
   left="12"
   name="new_message_icon"
   visible="false"
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
index 1368c6826db9b482653437ead71f40ae82a42de7..67bb7c1896f496e0908e82c0520732f05731e5d5 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -3,15 +3,12 @@
 *TODO: Replace hardcoded buttons width/height with getting this info from the button images.
        Currently that doesn't work because LLUIImage::getWidth/getHeight() return 1 for the images.
 -->
-
-
-
 <location_input font="SansSerifSmall"
                 add_landmark_image_enabled="Favorite_Star_Active"
                 add_landmark_image_disabled="Favorite_Star_Off"
                 add_landmark_image_hover="Favorite_Star_Over"
                 add_landmark_image_selected="Favorite_Star_Press"
-				add_landmark_hpad="12"
+		add_landmark_hpad="12"
                 icon_hpad="2"
                 allow_text_entry="true"
                 list_position="below"
@@ -26,8 +23,8 @@
     name="Place Information"
     width="16"
     height="16"
-    left="4" 
-    top="20" 
+    left="6"
+    top="20"
                           follows="left|top"
                           hover_glow_amount="0.15"
                           image_unselected="Info_Off"
@@ -55,7 +52,7 @@
     top="21"
     />
   <voice_icon
-    enabled="true" 
+    enabled="true"
     name="voice_icon"
     width="22"
     height="18"
@@ -97,11 +94,12 @@
     />
   <damage_icon
     name="damage_icon"
-    width="20"
-    height="16"
-    top="20"
+    width="14"
+    height="13"
+    top="22"
+    left="2"
     follows="right|top"
-    image_name="Parcel_Damage_Light"
+    image_name="Parcel_Damage_Dark"
     />
   <!-- Default text color is invisible on top of nav bar background -->
   <damage_text
diff --git a/indra/newview/tests/lldateutil_test.cpp b/indra/newview/tests/lldateutil_test.cpp
index 142a5eb5e6aa02e5c83fbbef22e19e51e58ec9a7..7ba82fbd2c595f59c4b29adfdd389722aa0c71ab 100644
--- a/indra/newview/tests/lldateutil_test.cpp
+++ b/indra/newview/tests/lldateutil_test.cpp
@@ -179,4 +179,14 @@ namespace tut
 			LLDateUtil::ageFromDate("12/31/2009", mNow),
 			"Joined today" );
 	}
+
+	template<> template<>
+	void dateutil_object_t::test<5>()
+	{
+		set_test_name("2010 rollover");
+		LLDate now(std::string("2010-01-04T12:00:00Z"));
+		ensure_equals("days",
+			LLDateUtil::ageFromDate("12/13/2009", now),
+			"3 weeks old" );
+	}
 }
diff --git a/indra/viewer_components/login/lllogin.cpp b/indra/viewer_components/login/lllogin.cpp
index 364088ab31e9e45929e0f517e8c26279046b5527..f5bda71846b2e495e8843579ffd5809e1106048e 100644
--- a/indra/viewer_components/login/lllogin.cpp
+++ b/indra/viewer_components/login/lllogin.cpp
@@ -160,8 +160,11 @@ void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD credential
 			seconds_to_timeout = credentials["cfg_srv_timeout"].asReal();
 		}
 
-		filter.eventAfter(seconds_to_timeout, 
-			getProgressEventLLSD("offline", "fail.login"));
+        // If the SRV request times out (e.g. EXT-3934), simulate response: an
+        // array containing our original URI.
+        LLSD fakeResponse(LLSD::emptyArray());
+        fakeResponse.append(uri);
+		filter.eventAfter(seconds_to_timeout, fakeResponse);
 
 		std::string srv_pump_name = "LLAres";
 		if(credentials.has("cfg_srv_pump"))
diff --git a/indra/viewer_components/login/tests/lllogin_test.cpp b/indra/viewer_components/login/tests/lllogin_test.cpp
index 7159959a4f7dda4d47bf753dfb0c61e633a4843f..8463e6d2caa54f849012b8c1921bfdf8c3233e0b 100644
--- a/indra/viewer_components/login/tests/lllogin_test.cpp
+++ b/indra/viewer_components/login/tests/lllogin_test.cpp
@@ -215,14 +215,14 @@ namespace tut
     void llviewerlogin_object::test<1>()
     {
         DEBUG;
-		// Testing login with immediate repsonses from Ares and XMLPRC
+		// Testing login with immediate responses from Ares and XMLPRC
 		// The response from both requests will come before the post request exits.
 		// This tests an edge case of the login state handling.
 		LLEventStream llaresPump("LLAres"); // Dummy LLAres pump.
 		LLEventStream xmlrpcPump("LLXMLRPCTransaction"); // Dummy XMLRPC pump
 
 		bool respond_immediately = true;
-		// Have 'dummy ares' repsond immediately. 
+		// Have 'dummy ares' respond immediately. 
 		LLAresListener dummyLLAres("dummy_llares", respond_immediately);
 		dummyLLAres.listenTo(llaresPump);
 
@@ -251,7 +251,7 @@ namespace tut
         DEBUG;
 		// Tests a successful login in with delayed responses. 
 		// Also includes 'failure' that cause the login module
-		// To re-attempt connection, once from a basic failure
+		// to re-attempt connection, once from a basic failure
 		// and once from the 'indeterminate' response.
 
 		set_test_name("LLLogin multiple srv uris w/ success");
@@ -464,6 +464,12 @@ namespace tut
 		LLSD frame_event;
 		mainloop.post(frame_event);
 
-		ensure_equals("SRV Failure", listener.lastEvent()["change"].asString(), "fail.login"); 
+		// In this state we have NOT sent a reply from LLAresListener -- in
+		// fact there's no such object. Nonetheless, we expect the timeout to
+		// have stepped the login module forward to try to authenticate with
+		// the original URI.
+		ensure_equals("Auth state", listener.lastEvent()["change"].asString(), "authenticating"); 
+		ensure_equals("Attempt", listener.lastEvent()["data"]["attempt"].asInteger(), 1); 
+		ensure_equals("URI", listener.lastEvent()["data"]["request"]["uri"].asString(), "login.bar.com"); 
 	}
 }