diff --git a/indra/llcommon/llapp.h b/indra/llcommon/llapp.h
index 27a52cdd9972a7fb60ce4049fae66b2ab20bb839..e5b8edf9c398ddbff4b299d528251f819e3f1218 100644
--- a/indra/llcommon/llapp.h
+++ b/indra/llcommon/llapp.h
@@ -235,7 +235,7 @@ class LL_COMMON_API LLApp : public LLOptionInterface
 	// Child process handling (Unix only for now)
 	//
 	// Set a callback to be run on exit of a child process
-	// WARNING!  This callback is run from the signal handler due to the extreme crappiness of
+	// WARNING!  This callback is run from the signal handler due to
 	// Linux threading requiring waitpid() to be called from the thread that spawned the process.
 	// At some point I will make this more behaved, but I'm not going to fix this right now - djs
 	void setChildCallback(pid_t pid, LLAppChildCallback callback);
diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp
index 6d5b12d840b25123e18a775c16ba693a3c417a7b..1c664e093b78ed35970968afb3242a6fd5c8e6da 100644
--- a/indra/llcommon/llassettype.cpp
+++ b/indra/llcommon/llassettype.cpp
@@ -45,12 +45,16 @@ struct AssetEntry : public LLDictionaryEntry
 	AssetEntry(const char *desc_name,
 			   const char *type_name, 	// 8 character limit!
 			   const char *human_name, 	// for decoding to human readable form; put any and as many printable characters you want in each one
-			   bool can_link) 			// can you create a link to this type?
+			   bool can_link, 			// can you create a link to this type?
+			   bool can_fetch, 			// can you fetch this asset by ID?
+			   bool can_know) 			// can you see this asset's ID?
 		:
 		LLDictionaryEntry(desc_name),
 		mTypeName(type_name),
 		mHumanName(human_name),
-		mCanLink(can_link)
+		mCanLink(can_link),
+		mCanFetch(can_fetch),
+		mCanKnow(can_know)
 	{
 		llassert(strlen(mTypeName) <= 8);
 	}
@@ -58,6 +62,8 @@ struct AssetEntry : public LLDictionaryEntry
 	const char *mTypeName;
 	const char *mHumanName;
 	bool mCanLink;
+	bool mCanFetch;
+	bool mCanKnow;
 };
 
 class LLAssetDictionary : public LLSingleton<LLAssetDictionary>,
@@ -69,32 +75,32 @@ class LLAssetDictionary : public LLSingleton<LLAssetDictionary>,
 
 LLAssetDictionary::LLAssetDictionary()
 {
-	//       												   DESCRIPTION			TYPE NAME	HUMAN NAME			CAN LINK?	
-	//      												  |--------------------|-----------|-------------------|-----------|
-	addEntry(LLAssetType::AT_TEXTURE, 			new AssetEntry("TEXTURE",			"texture",	"texture",			FALSE));
-	addEntry(LLAssetType::AT_SOUND, 			new AssetEntry("SOUND",				"sound",	"sound",			FALSE));
-	addEntry(LLAssetType::AT_CALLINGCARD, 		new AssetEntry("CALLINGCARD",		"callcard",	"calling card",		FALSE));
-	addEntry(LLAssetType::AT_LANDMARK, 			new AssetEntry("LANDMARK",			"landmark",	"landmark",			FALSE));
-	addEntry(LLAssetType::AT_SCRIPT, 			new AssetEntry("SCRIPT",			"script",	"legacy script",	FALSE));
-	addEntry(LLAssetType::AT_CLOTHING, 			new AssetEntry("CLOTHING",			"clothing",	"clothing",			TRUE));
-	addEntry(LLAssetType::AT_OBJECT, 			new AssetEntry("OBJECT",			"object",	"object",			TRUE));
-	addEntry(LLAssetType::AT_NOTECARD, 			new AssetEntry("NOTECARD",			"notecard",	"note card",		FALSE));
-	addEntry(LLAssetType::AT_CATEGORY, 			new AssetEntry("CATEGORY",			"category",	"folder",			TRUE));
-	addEntry(LLAssetType::AT_LSL_TEXT, 			new AssetEntry("LSL_TEXT",			"lsltext",	"lsl2 script",		FALSE));
-	addEntry(LLAssetType::AT_LSL_BYTECODE, 		new AssetEntry("LSL_BYTECODE",		"lslbyte",	"lsl bytecode",		FALSE));
-	addEntry(LLAssetType::AT_TEXTURE_TGA, 		new AssetEntry("TEXTURE_TGA",		"txtr_tga",	"tga texture",		FALSE));
-	addEntry(LLAssetType::AT_BODYPART, 			new AssetEntry("BODYPART",			"bodypart",	"body part",		TRUE));
-	addEntry(LLAssetType::AT_SOUND_WAV, 		new AssetEntry("SOUND_WAV",			"snd_wav",	"sound",			FALSE));
-	addEntry(LLAssetType::AT_IMAGE_TGA, 		new AssetEntry("IMAGE_TGA",			"img_tga",	"targa image",		FALSE));
-	addEntry(LLAssetType::AT_IMAGE_JPEG, 		new AssetEntry("IMAGE_JPEG",		"jpeg",		"jpeg image",		FALSE));
-	addEntry(LLAssetType::AT_ANIMATION, 		new AssetEntry("ANIMATION",			"animatn",	"animation",		FALSE));
-	addEntry(LLAssetType::AT_GESTURE, 			new AssetEntry("GESTURE",			"gesture",	"gesture",			TRUE));
-	addEntry(LLAssetType::AT_SIMSTATE, 			new AssetEntry("SIMSTATE",			"simstate",	"simstate",			FALSE));
-
-	addEntry(LLAssetType::AT_LINK, 				new AssetEntry("LINK",				"link",		"symbolic link",	FALSE));
-	addEntry(LLAssetType::AT_LINK_FOLDER, 		new AssetEntry("FOLDER_LINK",		"link_f", 	"symbolic folder link", FALSE));
-
-	addEntry(LLAssetType::AT_NONE, 				new AssetEntry("NONE",				"-1",		NULL,		  		FALSE));
+	//       												   DESCRIPTION			TYPE NAME	HUMAN NAME			CAN LINK?   CAN FETCH?  CAN KNOW?	
+	//      												  |--------------------|-----------|-------------------|-----------|-----------|---------|
+	addEntry(LLAssetType::AT_TEXTURE, 			new AssetEntry("TEXTURE",			"texture",	"texture",			false,		false,		true));
+	addEntry(LLAssetType::AT_SOUND, 			new AssetEntry("SOUND",				"sound",	"sound",			false,		true,		true));
+	addEntry(LLAssetType::AT_CALLINGCARD, 		new AssetEntry("CALLINGCARD",		"callcard",	"calling card",		false,		false,		false));
+	addEntry(LLAssetType::AT_LANDMARK, 			new AssetEntry("LANDMARK",			"landmark",	"landmark",			false,		true,		true));
+	addEntry(LLAssetType::AT_SCRIPT, 			new AssetEntry("SCRIPT",			"script",	"legacy script",	false,		false,		false));
+	addEntry(LLAssetType::AT_CLOTHING, 			new AssetEntry("CLOTHING",			"clothing",	"clothing",			true,		true,		true));
+	addEntry(LLAssetType::AT_OBJECT, 			new AssetEntry("OBJECT",			"object",	"object",			true,		false,		false));
+	addEntry(LLAssetType::AT_NOTECARD, 			new AssetEntry("NOTECARD",			"notecard",	"note card",		false,		false,		true));
+	addEntry(LLAssetType::AT_CATEGORY, 			new AssetEntry("CATEGORY",			"category",	"folder",			true,		false,		false));
+	addEntry(LLAssetType::AT_LSL_TEXT, 			new AssetEntry("LSL_TEXT",			"lsltext",	"lsl2 script",		false,		false,		false));
+	addEntry(LLAssetType::AT_LSL_BYTECODE, 		new AssetEntry("LSL_BYTECODE",		"lslbyte",	"lsl bytecode",		false,		false,		false));
+	addEntry(LLAssetType::AT_TEXTURE_TGA, 		new AssetEntry("TEXTURE_TGA",		"txtr_tga",	"tga texture",		false,		false,		false));
+	addEntry(LLAssetType::AT_BODYPART, 			new AssetEntry("BODYPART",			"bodypart",	"body part",		true,		true,		true));
+	addEntry(LLAssetType::AT_SOUND_WAV, 		new AssetEntry("SOUND_WAV",			"snd_wav",	"sound",			false,		false,		false));
+	addEntry(LLAssetType::AT_IMAGE_TGA, 		new AssetEntry("IMAGE_TGA",			"img_tga",	"targa image",		false,		false,		false));
+	addEntry(LLAssetType::AT_IMAGE_JPEG, 		new AssetEntry("IMAGE_JPEG",		"jpeg",		"jpeg image",		false,		false,		false));
+	addEntry(LLAssetType::AT_ANIMATION, 		new AssetEntry("ANIMATION",			"animatn",	"animation",		false,		true,		true));
+	addEntry(LLAssetType::AT_GESTURE, 			new AssetEntry("GESTURE",			"gesture",	"gesture",			true,		true,		true));
+	addEntry(LLAssetType::AT_SIMSTATE, 			new AssetEntry("SIMSTATE",			"simstate",	"simstate",			false,		false,		false));
+
+	addEntry(LLAssetType::AT_LINK, 				new AssetEntry("LINK",				"link",		"sym link",			false,		false,		true));
+	addEntry(LLAssetType::AT_LINK_FOLDER, 		new AssetEntry("FOLDER_LINK",		"link_f", 	"sym folder link",	false,		false,		true));
+
+	addEntry(LLAssetType::AT_NONE, 				new AssetEntry("NONE",				"-1",		NULL,		  		false,		false,		false));
 };
 
 // static
@@ -225,3 +231,27 @@ const std::string &LLAssetType::badLookup()
 	return sBadLookup;
 
 }
+
+// static
+bool LLAssetType::lookupIsAssetFetchByIDAllowed(EType asset_type)
+{
+	const LLAssetDictionary *dict = LLAssetDictionary::getInstance();
+	const AssetEntry *entry = dict->lookup(asset_type);
+	if (entry)
+	{
+		return entry->mCanFetch;
+	}
+	return false;
+}
+
+// static
+bool LLAssetType::lookupIsAssetIDKnowable(EType asset_type)
+{
+	const LLAssetDictionary *dict = LLAssetDictionary::getInstance();
+	const AssetEntry *entry = dict->lookup(asset_type);
+	if (entry)
+	{
+		return entry->mCanKnow;
+	}
+	return false;
+}
diff --git a/indra/llcommon/llassettype.h b/indra/llcommon/llassettype.h
index c7bbc2e74aa2dec81f7cd8197b0484b879448e30..2c2dc27aaa47806d6ccd7e56e05c218a084e4276 100644
--- a/indra/llcommon/llassettype.h
+++ b/indra/llcommon/llassettype.h
@@ -146,6 +146,9 @@ class LL_COMMON_API LLAssetType
 	static bool 				lookupCanLink(EType asset_type);
 	static bool 				lookupIsLinkType(EType asset_type);
 
+	static bool 				lookupIsAssetFetchByIDAllowed(EType asset_type); // the asset allows direct download
+	static bool 				lookupIsAssetIDKnowable(EType asset_type); // asset data can be known by the viewer
+	
 	static const std::string&	badLookup(); // error string when a lookup fails
 
 protected:
diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp
index 5f3d9d658202985bafaff33bb8b2648771fb1300..b5a73ec1d13e37f33a0c415bef9187e0dd2061ff 100644
--- a/indra/llcommon/llstring.cpp
+++ b/indra/llcommon/llstring.cpp
@@ -911,6 +911,20 @@ bool LLStringUtil::simpleReplacement(std::string &replacement, std::string token
 	return false;
 }
 
+//static
+template<>
+void LLStringUtil::setLocale(std::string inLocale)
+{
+	sLocale = inLocale;
+};
+
+//static
+template<>
+std::string LLStringUtil::getLocale(void)
+{
+	return sLocale;
+};
+
 // static
 template<> 
 void LLStringUtil::formatNumber(std::string& numStr, std::string decimals)
diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h
index 62cedcde4e4688bd7015beb0d3c260e1e634a47f..96588b29b94d04158bd4636cbfc3d37a87474795 100644
--- a/indra/llcommon/llstring.h
+++ b/indra/llcommon/llstring.h
@@ -241,8 +241,8 @@ class LLStringUtilBase
 	LL_COMMON_API static S32 format(std::basic_string<T>& s, const LLSD& substitutions);
 	LL_COMMON_API static bool simpleReplacement(std::basic_string<T>& replacement, std::basic_string<T> token, const format_map_t& substitutions);
 	LL_COMMON_API static bool simpleReplacement(std::basic_string<T>& replacement, std::basic_string<T> token, const LLSD& substitutions);
-	static void setLocale (std::string inLocale) {sLocale = inLocale;};
-	static std::string getLocale (void) {return sLocale;};
+	LL_COMMON_API static void setLocale (std::string inLocale);
+	LL_COMMON_API static std::string getLocale (void);
 	
 	static bool isValidIndex(const std::basic_string<T>& string, size_type i)
 	{
diff --git a/indra/llcommon/lluuid.h b/indra/llcommon/lluuid.h
index c78fb1201804686242792e28950e4a340f4a1cc8..3a0d66e4a5d953ab59f44d5645b4f6cd97fdcad0 100644
--- a/indra/llcommon/lluuid.h
+++ b/indra/llcommon/lluuid.h
@@ -133,6 +133,7 @@ class LL_COMMON_API LLUUID
 	U8 mData[UUID_BYTES];
 };
 
+typedef std::vector<LLUUID> uuid_vec_t;
 
 // Construct
 inline LLUUID::LLUUID()
diff --git a/indra/llcommon/llversionserver.h b/indra/llcommon/llversionserver.h
index 0f1e59a18cce8886fbb562add35ef5b1437d6ee5..e3663544db71565ff43c30ebfc78db26fb22f9d4 100644
--- a/indra/llcommon/llversionserver.h
+++ b/indra/llcommon/llversionserver.h
@@ -36,7 +36,7 @@
 const S32 LL_VERSION_MAJOR = 1;
 const S32 LL_VERSION_MINOR = 31;
 const S32 LL_VERSION_PATCH = 0;
-const S32 LL_VERSION_BUILD = 200030;
+const S32 LL_VERSION_BUILD = 203110;
 
 const char * const LL_CHANNEL = "Second Life Server";
 
diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index 540aea42522a261e2ac1bd007999a97485ec5ed5..3ab4257fabe90f4e5d0dd31aead6095d308c3197 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -36,7 +36,7 @@
 const S32 LL_VERSION_MAJOR = 2;
 const S32 LL_VERSION_MINOR = 0;
 const S32 LL_VERSION_PATCH = 0;
-const S32 LL_VERSION_BUILD = 200030;
+const S32 LL_VERSION_BUILD = 203110;
 
 const char * const LL_CHANNEL = "Second Life Developer";
 
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index 7d0de18c7cb98ea3dfac889a30b5ab8ebccb7bd7..0874f574c55e025c86d45bb9a59f1d7c150e9208 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -93,9 +93,10 @@ LLImageBase::LLImageBase()
 	  mWidth(0),
 	  mHeight(0),
 	  mComponents(0),
+	  mBadBufferAllocation(false),
+	  mAllowOverSize(false),
 	  mMemType(LLMemType::MTYPE_IMAGEBASE)
 {
-	mBadBufferAllocation = FALSE ;
 }
 
 // virtual
@@ -134,8 +135,6 @@ void LLImageBase::sanityCheck()
 	}
 }
 
-BOOL LLImageBase::sSizeOverride = FALSE;
-
 // virtual
 void LLImageBase::deleteData()
 {
@@ -157,23 +156,32 @@ U8* LLImageBase::allocateData(S32 size)
 			llerrs << llformat("LLImageBase::allocateData called with bad dimensions: %dx%dx%d",mWidth,mHeight,mComponents) << llendl;
 		}
 	}
-	if (size < 1 || (size > 4096*4096*16 && sSizeOverride == FALSE))
+	
+	//make this function thread-safe.
+	static const U32 MAX_BUFFER_SIZE = 4096 * 4096 * 16 ; //256 MB
+	if (size < 1 || size > MAX_BUFFER_SIZE) 
 	{
 		llinfos << "width: " << mWidth << " height: " << mHeight << " components: " << mComponents << llendl ;
+		if(mAllowOverSize)
+		{
+			llinfos << "Oversize: " << size << llendl ;
+		}
+		else
+		{
 		llerrs << "LLImageBase::allocateData: bad size: " << size << llendl;
 	}
-	
+	}
 	if (!mData || size != mDataSize)
 	{
 		deleteData(); // virtual
-		mBadBufferAllocation = FALSE ;
+		mBadBufferAllocation = false ;
 		mData = new U8[size];
 		if (!mData)
 		{
 			llwarns << "allocate image data: " << size << llendl;
 			size = 0 ;
 			mWidth = mHeight = 0 ;
-			mBadBufferAllocation = TRUE ;
+			mBadBufferAllocation = true ;
 		}
 		mDataSize = size;
 	}
@@ -222,7 +230,7 @@ U8* LLImageBase::getData()
 	return mData; 
 }
 
-BOOL LLImageBase::isBufferInvalid()
+bool LLImageBase::isBufferInvalid()
 {
 	return mBadBufferAllocation || mData == NULL ;
 }
@@ -258,7 +266,11 @@ LLImageRaw::LLImageRaw(U16 width, U16 height, S8 components)
 	: LLImageBase()
 {
 	mMemType = LLMemType::MTYPE_IMAGERAW;
-	llassert( S32(width) * S32(height) * S32(components) <= MAX_IMAGE_DATA_SIZE );
+	//llassert( S32(width) * S32(height) * S32(components) <= MAX_IMAGE_DATA_SIZE );
+	if(S32(width) * S32(height) * S32(components) > MAX_IMAGE_DATA_SIZE)
+	{
+		llwarns << "over size: width: " << (S32)width << " height: " << (S32)height << " components: " << (S32)components << llendl ;
+	}
 	allocateDataSize(width, height, components);
 	++sRawImageCount;
 }
diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h
index 686f58388653fa1f5ff2e9814ea96ef46e889a0e..10444e7f89d9bd580508db6fd75b3fb3a7937581 100644
--- a/indra/llimage/llimage.h
+++ b/indra/llimage/llimage.h
@@ -48,7 +48,7 @@ const S32 MAX_IMAGE_SIZE = (1<<MAX_IMAGE_MIP); // 2048
 const S32 MIN_IMAGE_AREA = MIN_IMAGE_SIZE * MIN_IMAGE_SIZE;
 const S32 MAX_IMAGE_AREA = MAX_IMAGE_SIZE * MAX_IMAGE_SIZE;
 const S32 MAX_IMAGE_COMPONENTS = 8;
-const S32 MAX_IMAGE_DATA_SIZE = MAX_IMAGE_AREA * MAX_IMAGE_COMPONENTS;
+const S32 MAX_IMAGE_DATA_SIZE = MAX_IMAGE_AREA * MAX_IMAGE_COMPONENTS; //2048 * 2048 * 8 = 16 MB
 
 // Note!  These CANNOT be changed without modifying simulator code
 // *TODO: change both to 1024 when SIM texture fetching is deprecated
@@ -124,10 +124,12 @@ class LLImageBase : public LLThreadSafeRefCount
 
 	const U8 *getData() const	;
 	U8 *getData()				;
-	BOOL isBufferInvalid() ;
+	bool isBufferInvalid() ;
 
 	void setSize(S32 width, S32 height, S32 ncomponents);
 	U8* allocateDataSize(S32 width, S32 height, S32 ncomponents, S32 size = -1); // setSize() + allocateData()
+	void enableOverSize() {mAllowOverSize = true ;}
+	void disableOverSize() {mAllowOverSize = false; }
 
 protected:
 	// special accessor to allow direct setting of mData and mDataSize by LLImageFormatted
@@ -140,8 +142,6 @@ class LLImageBase : public LLThreadSafeRefCount
 	// <= 0 priority means that there's no need for more data.
 	static F32 calc_download_priority(F32 virtual_size, F32 visible_area, S32 bytes_sent);
 
-	static void setSizeOverride(BOOL enabled) { sSizeOverride = enabled; }
-
 	static EImageCodec getCodecFromExtension(const std::string& exten);
 	
 private:
@@ -153,12 +153,10 @@ class LLImageBase : public LLThreadSafeRefCount
 
 	S8 mComponents;
 
-	BOOL mBadBufferAllocation ;
-
+	bool mBadBufferAllocation ;
+	bool mAllowOverSize ;
 public:
 	LLMemType::DeclareMemType& mMemType; // debug
-	
-	static BOOL sSizeOverride;
 };
 
 // Raw representation of an image (used for textures, and other uncompressed formats
diff --git a/indra/llinventory/CMakeLists.txt b/indra/llinventory/CMakeLists.txt
index b358f0a0138fa2467996229ef82af591460ccfed..a563db901a84eeaf95e19da77ff032899a3c8e71 100644
--- a/indra/llinventory/CMakeLists.txt
+++ b/indra/llinventory/CMakeLists.txt
@@ -20,6 +20,7 @@ set(llinventory_SOURCE_FILES
     llcategory.cpp
     lleconomy.cpp
     llinventory.cpp
+    llinventorydefines.cpp
     llinventorytype.cpp
     lllandmark.cpp
     llnotecard.cpp
@@ -36,6 +37,7 @@ set(llinventory_HEADER_FILES
     llcategory.h
     lleconomy.h
     llinventory.h
+    llinventorydefines.h
     llinventorytype.h
     lllandmark.h
     llnotecard.h
diff --git a/indra/llinventory/llinventory.cpp b/indra/llinventory/llinventory.cpp
index d665deb60507c2d6d3f6b9ed1a3365e1af1615a4..2c767a4857592ca7810ab0c2681e6dedbb270908 100644
--- a/indra/llinventory/llinventory.cpp
+++ b/indra/llinventory/llinventory.cpp
@@ -31,10 +31,10 @@
  */
 
 #include "linden_common.h"
-
 #include "llinventory.h"
 
 #include "lldbstrings.h"
+#include "llinventorydefines.h"
 #include "llxorcipher.h"
 #include "llsd.h"
 #include "message.h"
@@ -43,9 +43,8 @@
 #include "llsdutil.h"
 
 ///----------------------------------------------------------------------------
-/// exported functions
+/// Exported functions
 ///----------------------------------------------------------------------------
-
 static const std::string INV_ITEM_ID_LABEL("item_id");
 static const std::string INV_FOLDER_ID_LABEL("folder_id");
 static const std::string INV_PARENT_ID_LABEL("parent_id");
@@ -64,25 +63,23 @@ static const std::string INV_CREATION_DATE_LABEL("created_at");
 // key used by agent-inventory-service
 static const std::string INV_ASSET_TYPE_LABEL_WS("type_default");
 static const std::string INV_FOLDER_ID_LABEL_WS("category_id");
+
 ///----------------------------------------------------------------------------
 /// Local function declarations, constants, enums, and typedefs
 ///----------------------------------------------------------------------------
-
 const U8 TASK_INVENTORY_ITEM_KEY = 0;
 const U8 TASK_INVENTORY_ASSET_KEY = 1;
 
 const LLUUID MAGIC_ID("3c115e51-04f4-523c-9fa6-98aff1034730");	
-	
 
 ///----------------------------------------------------------------------------
 /// Class LLInventoryObject
 ///----------------------------------------------------------------------------
 
-LLInventoryObject::LLInventoryObject(
-	const LLUUID& uuid,
-	const LLUUID& parent_uuid,
-	LLAssetType::EType type,
-	const std::string& name) :
+LLInventoryObject::LLInventoryObject(const LLUUID& uuid,
+									 const LLUUID& parent_uuid,
+									 LLAssetType::EType type,
+									 const std::string& name) :
 	mUUID(uuid),
 	mParentUUID(parent_uuid),
 	mType(type),
@@ -99,7 +96,7 @@ LLInventoryObject::LLInventoryObject() :
 {
 }
 
-LLInventoryObject::~LLInventoryObject( void )
+LLInventoryObject::~LLInventoryObject()
 {
 }
 
@@ -292,18 +289,17 @@ void LLInventoryObject::updateServer(BOOL) const
 /// Class LLInventoryItem
 ///----------------------------------------------------------------------------
 
-LLInventoryItem::LLInventoryItem(
-	const LLUUID& uuid,
-	const LLUUID& parent_uuid,
-	const LLPermissions& permissions,
-	const LLUUID& asset_uuid,
-	LLAssetType::EType type,
-	LLInventoryType::EType inv_type,
-	const std::string& name, 
-	const std::string& desc,
-	const LLSaleInfo& sale_info,
-	U32 flags,
-	S32 creation_date_utc) :
+LLInventoryItem::LLInventoryItem(const LLUUID& uuid,
+								 const LLUUID& parent_uuid,
+								 const LLPermissions& permissions,
+								 const LLUUID& asset_uuid,
+								 LLAssetType::EType type,
+								 LLInventoryType::EType inv_type,
+								 const std::string& name, 
+								 const std::string& desc,
+								 const LLSaleInfo& sale_info,
+								 U32 flags,
+								 S32 creation_date_utc) :
 	LLInventoryObject(uuid, parent_uuid, type, name),
 	mPermissions(permissions),
 	mAssetUUID(asset_uuid),
@@ -458,11 +454,18 @@ void LLInventoryItem::setCreationDate(time_t creation_date_utc)
 	mCreationDate = creation_date_utc;
 }
 
+// Currently only used in the Viewer to handle calling cards
+// where the creator is actually used to store the target.
+void LLInventoryItem::setCreator(const LLUUID& creator)
+{ 
+	mPermissions.setCreator(creator); 
+}
+
 void LLInventoryItem::accumulatePermissionSlamBits(const LLInventoryItem& old_item)
 {
 	// Remove any pre-existing II_FLAGS_PERM_OVERWRITE_MASK flags 
 	// because we now detect when they should be set.
-	setFlags( old_item.getFlags() | (getFlags() & ~(LLInventoryItem::II_FLAGS_PERM_OVERWRITE_MASK)) );
+	setFlags( old_item.getFlags() | (getFlags() & ~(LLInventoryItemFlags::II_FLAGS_PERM_OVERWRITE_MASK)) );
 
 	// Enforce the PERM_OVERWRITE flags for any masks that are different
 	// but only for AT_OBJECT's since that is the only asset type that can 
@@ -473,20 +476,20 @@ void LLInventoryItem::accumulatePermissionSlamBits(const LLInventoryItem& old_it
 		U32 flags_to_be_set = 0;
 		if(old_permissions.getMaskNextOwner() != getPermissions().getMaskNextOwner())
 		{
-			flags_to_be_set |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_PERM;
+			flags_to_be_set |= LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_PERM;
 		}
 		if(old_permissions.getMaskEveryone() != getPermissions().getMaskEveryone())
 		{
-			flags_to_be_set |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
+			flags_to_be_set |= LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
 		}
 		if(old_permissions.getMaskGroup() != getPermissions().getMaskGroup())
 		{
-			flags_to_be_set |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
+			flags_to_be_set |= LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
 		}
 		LLSaleInfo old_sale_info = old_item.getSaleInfo();
 		if(old_sale_info != getSaleInfo())
 		{
-			flags_to_be_set |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_SALE;
+			flags_to_be_set |= LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_SALE;
 		}
 		setFlags(getFlags() | flags_to_be_set);
 	}
@@ -1304,28 +1307,14 @@ void LLInventoryItem::unpackBinaryBucket(U8* bin_bucket, S32 bin_bucket_size)
 	setCreationDate(now);
 }
 
-// returns TRUE if a should appear before b
-BOOL item_dictionary_sort( LLInventoryItem* a, LLInventoryItem* b )
-{
-	return (LLStringUtil::compareDict( a->getName().c_str(), b->getName().c_str() ) < 0);
-}
-
-// returns TRUE if a should appear before b
-BOOL item_date_sort( LLInventoryItem* a, LLInventoryItem* b )
-{
-	return a->getCreationDate() < b->getCreationDate();
-}
-
-
 ///----------------------------------------------------------------------------
 /// Class LLInventoryCategory
 ///----------------------------------------------------------------------------
 
-LLInventoryCategory::LLInventoryCategory(
-	const LLUUID& uuid,
-	const LLUUID& parent_uuid,
-	LLFolderType::EType preferred_type,
-	const std::string& name) :
+LLInventoryCategory::LLInventoryCategory(const LLUUID& uuid,
+										 const LLUUID& parent_uuid,
+										 LLFolderType::EType preferred_type,
+										 const std::string& name) :
 	LLInventoryObject(uuid, parent_uuid, LLAssetType::AT_CATEGORY, name),
 	mPreferredType(preferred_type)
 {
diff --git a/indra/llinventory/llinventory.h b/indra/llinventory/llinventory.h
index 9faecbea85735d8904300ff99c8ec5f75f9cf403..b083e305b10f777f4fcd6ffee8d5fdd385e933db 100644
--- a/indra/llinventory/llinventory.h
+++ b/indra/llinventory/llinventory.h
@@ -33,8 +33,6 @@
 #ifndef LL_LLINVENTORY_H
 #define LL_LLINVENTORY_H
 
-#include <functional>
-
 #include "lldarray.h"
 #include "llfoldertype.h"
 #include "llinventorytype.h"
@@ -45,180 +43,94 @@
 #include "llsd.h"
 #include "lluuid.h"
 
-// consts for Key field in the task inventory update message
-extern const U8 TASK_INVENTORY_ITEM_KEY;
-extern const U8 TASK_INVENTORY_ASSET_KEY;
-
-// anonymous enumeration to specify a max inventory buffer size for
-// use in packBinaryBucket()
-enum
-{
-	MAX_INVENTORY_BUFFER_SIZE = 1024
-};
-
-
+class LLMessageSystem;
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // Class LLInventoryObject
 //
-// This is the base class for inventory objects that handles the
-// common code between items and categories. The 'mParentUUID' member
-// means the parent category since all inventory objects except each
-// user's root category are in some category. Each user's root
-// category will have mParentUUID==LLUUID::null.
+//   Base class for anything in the user's inventory.   Handles the common code 
+//   between items and categories. 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-class LLMessageSystem;
-
 class LLInventoryObject : public LLRefCount
 {
-protected:
-	LLUUID mUUID;
-	LLUUID mParentUUID;
-	LLAssetType::EType mType;
-	std::string mName;
+public:
+	typedef std::list<LLPointer<LLInventoryObject> > object_list_t;
 
-protected:
-	virtual ~LLInventoryObject( void );
-	
+	//--------------------------------------------------------------------
+	// Initialization
+	//--------------------------------------------------------------------
 public:
 	MEM_TYPE_NEW(LLMemType::MTYPE_INVENTORY);
-	LLInventoryObject(const LLUUID& uuid, const LLUUID& parent_uuid,
-					  LLAssetType::EType type, const std::string& name);
 	LLInventoryObject();
+	LLInventoryObject(const LLUUID& uuid, 
+					  const LLUUID& parent_uuid,
+					  LLAssetType::EType type, 
+					  const std::string& name);
 	void copyObject(const LLInventoryObject* other); // LLRefCount requires custom copy
+protected:
+	virtual ~LLInventoryObject();
 
-	// accessors
-	virtual const LLUUID& getUUID() const;
+	//--------------------------------------------------------------------
+	// Accessors
+	//--------------------------------------------------------------------
+public:
+	virtual const LLUUID& getUUID() const; // inventoryID that this item points to
+	virtual const LLUUID& getLinkedUUID() const; // inventoryID that this item points to, else this item's inventoryID
 	const LLUUID& getParentUUID() const;
-	virtual const LLUUID& getLinkedUUID() const; // get the inventoryID that this item points to, else this item's inventoryID
 	virtual const std::string& getName() const;
 	virtual LLAssetType::EType getType() const;
 	LLAssetType::EType getActualType() const; // bypasses indirection for linked items
 	BOOL getIsLinkType() const;
-	// mutators - will not call updateServer();
+	
+	//--------------------------------------------------------------------
+	// Mutators
+	//   Will not call updateServer
+	//--------------------------------------------------------------------
+public:
 	void setUUID(const LLUUID& new_uuid);
 	virtual void rename(const std::string& new_name);
 	void setParent(const LLUUID& new_parent);
 	void setType(LLAssetType::EType type);
 
-	// file support - implemented here so that a minimal information
-	// set can be transmitted between simulator and viewer.
-// 	virtual BOOL importFile(LLFILE* fp);
+	//--------------------------------------------------------------------
+	// File Support
+	//   Implemented here so that a minimal information set can be transmitted 
+	//   between simulator and viewer.
+	//--------------------------------------------------------------------
+public:
+	// virtual BOOL importFile(LLFILE* fp);
 	virtual BOOL exportFile(LLFILE* fp, BOOL include_asset_key = TRUE) const;
-
 	virtual BOOL importLegacyStream(std::istream& input_stream);
 	virtual BOOL exportLegacyStream(std::ostream& output_stream, BOOL include_asset_key = TRUE) const;
 
-	// virtual methods
 	virtual void removeFromServer();
 	virtual void updateParentOnServer(BOOL) const;
 	virtual void updateServer(BOOL) const;
+
+	//--------------------------------------------------------------------
+	// Member Variables
+	//--------------------------------------------------------------------
+protected:
+	LLUUID mUUID;
+	LLUUID mParentUUID; // Parent category.  Root categories have LLUUID::NULL.
+	LLAssetType::EType mType;
+	std::string mName;
 };
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // Class LLInventoryItem
 //
-// An inventory item represents something that the current user has in
-// their inventory.
+//   An item in the current user's inventory.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
 class LLInventoryItem : public LLInventoryObject
 {
 public:
 	typedef LLDynamicArray<LLPointer<LLInventoryItem> > item_array_t;
-	
-protected:
-	LLPermissions mPermissions;
-	LLUUID mAssetUUID;
-	std::string mDescription;
-	LLSaleInfo mSaleInfo;
-	LLInventoryType::EType mInventoryType;
-	U32 mFlags;
-	time_t mCreationDate;	// seconds from 1/1/1970, UTC
 
+	//--------------------------------------------------------------------
+	// Initialization
+	//--------------------------------------------------------------------
 public:
-
-	/**
-	 * Anonymous enumeration for specifying the inventory item flags.
-	 */
-	enum
-	{
-		// The shared flags at the top are shared among all inventory
-		// types. After that section, all values of flags are type
-		// dependent.  The shared flags will start at 2^30 and work
-		// down while item type specific flags will start at 2^0 and
-		// work up.
-		II_FLAGS_NONE = 0,
-
-
-		//
-		// Shared flags
-		//
-		//
-
-		// This value means that the asset has only one reference in
-		// the system. If the inventory item is deleted, or the asset
-		// id updated, then we can remove the old reference.
-		II_FLAGS_SHARED_SINGLE_REFERENCE = 0x40000000,
-
-
-		//
-		// Landmark flags
-		//
-		II_FLAGS_LANDMARK_VISITED = 1,
-
-		//
-		// Object flags
-		//
-
-		// flag to indicate that object permissions should have next
-		// owner perm be more restrictive on rez. We bump this into
-		// the second byte of the flags since the low byte is used to
-		// track attachment points.
-		II_FLAGS_OBJECT_SLAM_PERM = 0x100,
-
-		// flag to indicate that the object sale information has been changed.
-		II_FLAGS_OBJECT_SLAM_SALE = 0x1000,
-
-		// These flags specify which permissions masks to overwrite
-		// upon rez.  Normally, if no permissions slam (above) or
-		// overwrite flags are set, the asset's permissions are
-		// used and the inventory's permissions are ignored.  If
-		// any of these flags are set, the inventory's permissions
-		// take precedence.
-		II_FLAGS_OBJECT_PERM_OVERWRITE_BASE			= 0x010000,
-		II_FLAGS_OBJECT_PERM_OVERWRITE_OWNER		= 0x020000,
-		II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP		= 0x040000,
-		II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE		= 0x080000,
-		II_FLAGS_OBJECT_PERM_OVERWRITE_NEXT_OWNER	= 0x100000,
-
- 		// flag to indicate whether an object that is returned is composed 
-		// of muiltiple items or not.
-		II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS			= 0x200000,
-
-		//
-		// wearables use the low order byte of flags to store the
-		// EWearableType enumeration found in newview/llwearable.h
-		//
-		II_FLAGS_WEARABLES_MASK = 0xff,
-
-		// these bits need to be cleared whenever the asset_id is updated
-		// on a pre-existing inventory item (DEV-28098 and DEV-30997)
-		II_FLAGS_PERM_OVERWRITE_MASK  =   II_FLAGS_OBJECT_SLAM_PERM 
-										| II_FLAGS_OBJECT_SLAM_SALE 
-										| II_FLAGS_OBJECT_PERM_OVERWRITE_BASE
-										| II_FLAGS_OBJECT_PERM_OVERWRITE_OWNER
-										| II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP
-										| II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE
-										| II_FLAGS_OBJECT_PERM_OVERWRITE_NEXT_OWNER,
-	};
-
-protected:
-	~LLInventoryItem(); // ref counted
-
-public:
-
 	MEM_TYPE_NEW(LLMemType::MTYPE_INVENTORY);
 	LLInventoryItem(const LLUUID& uuid,
 					const LLUUID& parent_uuid,
@@ -237,10 +149,14 @@ class LLInventoryItem : public LLInventoryObject
 	// is prohibited
 	LLInventoryItem(const LLInventoryItem* other);
 	virtual void copyItem(const LLInventoryItem* other); // LLRefCount requires custom copy
-
 	void generateUUID() { mUUID.generate(); }
+protected:
+	~LLInventoryItem(); // ref counted
 	
-	// accessors
+	//--------------------------------------------------------------------
+	// Accessors
+	//--------------------------------------------------------------------
+public:
 	virtual const LLUUID& getLinkedUUID() const;
 	virtual const LLPermissions& getPermissions() const;
 	virtual const LLUUID& getCreatorUUID() const;
@@ -252,8 +168,12 @@ class LLInventoryItem : public LLInventoryObject
 	virtual time_t getCreationDate() const;
 	virtual U32 getCRC32() const; // really more of a checksum.
 	
-	// mutators - will not call updateServer(), and will never fail
-	// (though it may correct to sane values)
+	//--------------------------------------------------------------------
+	// Mutators
+	//   Will not call updateServer and will never fail
+	//   (though it may correct to sane values)
+	//--------------------------------------------------------------------
+public:
 	void setAssetUUID(const LLUUID& asset_id);
 	void setDescription(const std::string& new_desc);
 	void setSaleInfo(const LLSaleInfo& sale_info);
@@ -261,62 +181,68 @@ class LLInventoryItem : public LLInventoryObject
 	void setInventoryType(LLInventoryType::EType inv_type);
 	void setFlags(U32 flags);
 	void setCreationDate(time_t creation_date_utc);
+	void setCreator(const LLUUID& creator); // only used for calling cards
 
 	// Check for changes in permissions masks and sale info
-	// and set the corresponding bits in mFlags
+	// and set the corresponding bits in mFlags.
 	void accumulatePermissionSlamBits(const LLInventoryItem& old_item);
-	
-	// This is currently only used in the Viewer to handle calling cards
-	// where the creator is actually used to store the target.
-	void setCreator(const LLUUID& creator) { mPermissions.setCreator(creator); }
 
-	// Put this inventory item onto the current outgoing mesage. It
-	// assumes you have already called nextBlock().
+	// Put this inventory item onto the current outgoing mesage.
+	// Assumes you have already called nextBlock().
 	virtual void packMessage(LLMessageSystem* msg) const;
 
-	// unpack returns TRUE if the inventory item came through the
-	// network ok. It uses a simple crc check which is defeatable, but
-	// we want to detect network mangling somehow.
+	// Returns TRUE if the inventory item came through the network correctly.
+	// Uses a simple crc check which is defeatable, but we want to detect 
+	// network mangling somehow.
 	virtual BOOL unpackMessage(LLMessageSystem* msg, const char* block, S32 block_num = 0);
-	// file support
+
+	//--------------------------------------------------------------------
+	// File Support
+	//--------------------------------------------------------------------
+public:
 	virtual BOOL importFile(LLFILE* fp);
 	virtual BOOL exportFile(LLFILE* fp, BOOL include_asset_key = TRUE) const;
-
 	virtual BOOL importLegacyStream(std::istream& input_stream);
 	virtual BOOL exportLegacyStream(std::ostream& output_stream, BOOL include_asset_key = TRUE) const;
 
-	// helper functions
-
-	// pack all information needed to reconstruct this item into the given binary bucket.
-	// perm_override is optional
+	//--------------------------------------------------------------------
+	// Helper Functions
+	//--------------------------------------------------------------------
+public:
+	// Pack all information needed to reconstruct this item into the given binary bucket.
 	S32 packBinaryBucket(U8* bin_bucket, LLPermissions* perm_override = NULL) const;
 	void unpackBinaryBucket(U8* bin_bucket, S32 bin_bucket_size);
 	LLSD asLLSD() const;
 	void asLLSD( LLSD& sd ) const;
 	bool fromLLSD(const LLSD& sd);
 
+	//--------------------------------------------------------------------
+	// Member Variables
+	//--------------------------------------------------------------------
+protected:
+	LLPermissions mPermissions;
+	LLUUID mAssetUUID;
+	std::string mDescription;
+	LLSaleInfo mSaleInfo;
+	LLInventoryType::EType mInventoryType;
+	U32 mFlags;
+	time_t mCreationDate; // seconds from 1/1/1970, UTC
 };
 
-BOOL item_dictionary_sort(LLInventoryItem* a,LLInventoryItem* b);
-BOOL item_date_sort(LLInventoryItem* a, LLInventoryItem* b);
-
-
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // Class LLInventoryCategory
 //
-// An instance of this class represents a category of inventory
-// items. Users come with a set of default categories, and can create
-// new ones as needed.
+//   A category/folder of inventory items. Users come with a set of default 
+//   categories, and can create new ones as needed.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
 class LLInventoryCategory : public LLInventoryObject
 {
 public:
 	typedef LLDynamicArray<LLPointer<LLInventoryCategory> > cat_array_t;
 
-protected:
-	~LLInventoryCategory();
-	
+	//--------------------------------------------------------------------
+	// Initialization
+	//--------------------------------------------------------------------
 public:
 	MEM_TYPE_NEW(LLMemType::MTYPE_INVENTORY);
 	LLInventoryCategory(const LLUUID& uuid, const LLUUID& parent_uuid,
@@ -325,40 +251,49 @@ class LLInventoryCategory : public LLInventoryObject
 	LLInventoryCategory();
 	LLInventoryCategory(const LLInventoryCategory* other);
 	void copyCategory(const LLInventoryCategory* other); // LLRefCount requires custom copy
+protected:
+	~LLInventoryCategory();
 
-	// accessors and mutators
+	//--------------------------------------------------------------------
+	// Accessors And Mutators
+	//--------------------------------------------------------------------
+public:
 	LLFolderType::EType getPreferredType() const;
 	void setPreferredType(LLFolderType::EType type);
-	// For messaging system support
-	virtual void packMessage(LLMessageSystem* msg) const;
-	virtual void unpackMessage(LLMessageSystem* msg, const char* block, S32 block_num = 0);
-
 	LLSD asLLSD() const;
 	bool fromLLSD(const LLSD& sd);
 
-	// file support
+	//--------------------------------------------------------------------
+	// Messaging
+	//--------------------------------------------------------------------
+public:
+	virtual void packMessage(LLMessageSystem* msg) const;
+	virtual void unpackMessage(LLMessageSystem* msg, const char* block, S32 block_num = 0);
+
+	//--------------------------------------------------------------------
+	// File Support
+	//--------------------------------------------------------------------
+public:
 	virtual BOOL importFile(LLFILE* fp);
 	virtual BOOL exportFile(LLFILE* fp, BOOL include_asset_key = TRUE) const;
-
 	virtual BOOL importLegacyStream(std::istream& input_stream);
 	virtual BOOL exportLegacyStream(std::ostream& output_stream, BOOL include_asset_key = TRUE) const;
 
+	//--------------------------------------------------------------------
+	// Member Variables
+	//--------------------------------------------------------------------
 protected:
-	// May be the type that this category was "meant" to hold (although it may hold any type).	
-	LLFolderType::EType	mPreferredType;		
+	LLFolderType::EType	mPreferredType; // Type that this category was "meant" to hold (although it may hold any type).	
 };
 
 
 //-----------------------------------------------------------------------------
-// Useful bits
+// Convertors
+//
+//   These functions convert between structured data and an inventory
+//   item, appropriate for serialization.
 //-----------------------------------------------------------------------------
-
-typedef std::list<LLPointer<LLInventoryObject> > InventoryObjectList;
-
-// These functions convert between structured data and an inventory
-// item, appropriate for serialization.
 LLSD ll_create_sd_from_inventory_item(LLPointer<LLInventoryItem> item);
-//LLPointer<LLInventoryItem> ll_create_item_from_sd(const LLSD& sd_item);
 LLSD ll_create_sd_from_inventory_category(LLPointer<LLInventoryCategory> cat);
 LLPointer<LLInventoryCategory> ll_create_category_from_sd(const LLSD& sd_cat);
 
diff --git a/indra/llinventory/llinventorydefines.cpp b/indra/llinventory/llinventorydefines.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a9610d4d4baf776fb6545851699d9d5f6bc7bba5
--- /dev/null
+++ b/indra/llinventory/llinventorydefines.cpp
@@ -0,0 +1,37 @@
+/** 
+ * @file llinventorydefines.cpp
+ * @brief Implementation of the inventory defines.
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ * 
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+#include "llinventorydefines.h"
+
+const U8 TASK_INVENTORY_ITEM_KEY = 0;
+const U8 TASK_INVENTORY_ASSET_KEY = 1;
diff --git a/indra/llinventory/llinventorydefines.h b/indra/llinventory/llinventorydefines.h
new file mode 100644
index 0000000000000000000000000000000000000000..ccf1a356dec1beba64560c561db41e64cb2fc2a8
--- /dev/null
+++ b/indra/llinventory/llinventorydefines.h
@@ -0,0 +1,106 @@
+/** 
+ * @file llinventorydefines.h
+ * @brief LLInventoryDefines
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ * 
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLINVENTORYDEFINES_H
+#define LL_LLINVENTORYDEFINES_H
+
+// Consts for "key" field in the task inventory update message
+extern const U8 TASK_INVENTORY_ITEM_KEY;
+extern const U8 TASK_INVENTORY_ASSET_KEY;
+
+// Max inventory buffer size (for use in packBinaryBucket)
+enum
+{
+	MAX_INVENTORY_BUFFER_SIZE = 1024
+};
+
+//--------------------------------------------------------------------
+// Inventory item flags enums
+//   The shared flags at the top are shared among all inventory
+//   types. After that section, all values of flags are type
+//   dependent.  The shared flags will start at 2^30 and work
+//   down while item type specific flags will start at 2^0 and work up.
+//--------------------------------------------------------------------
+class LLInventoryItemFlags
+{
+public:
+	enum EType
+	{
+		II_FLAGS_NONE 								= 0,
+		
+		II_FLAGS_SHARED_SINGLE_REFERENCE 			= 0x40000000,
+			// The asset has only one reference in the system. If the 
+			// inventory item is deleted, or the assetid updated, then we 
+			// can remove the old reference.
+		
+		II_FLAGS_LANDMARK_VISITED 					= 1,
+
+		II_FLAGS_OBJECT_SLAM_PERM 					= 0x100,
+			// Object permissions should have next owner perm be more 
+			// restrictive on rez. We bump this into the second byte of the 
+			// flags since the low byte is used to track attachment points.
+
+		II_FLAGS_OBJECT_SLAM_SALE 					= 0x1000,
+			// The object sale information has been changed.
+		
+		II_FLAGS_OBJECT_PERM_OVERWRITE_BASE			= 0x010000,
+		II_FLAGS_OBJECT_PERM_OVERWRITE_OWNER		= 0x020000,
+		II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP		= 0x040000,
+		II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE		= 0x080000,
+		II_FLAGS_OBJECT_PERM_OVERWRITE_NEXT_OWNER	= 0x100000,
+			// Specify which permissions masks to overwrite
+			// upon rez.  Normally, if no permissions slam (above) or
+			// overwrite flags are set, the asset's permissions are
+			// used and the inventory's permissions are ignored.  If
+			// any of these flags are set, the inventory's permissions
+			// take precedence.
+
+		II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS			= 0x200000,
+			// Whether a returned object is composed of multiple items.
+
+		II_FLAGS_WEARABLES_MASK = 0xff,
+			// Wearables use the low order byte of flags to store the
+			// EWearableType enumeration found in newview/llwearable.h
+
+		II_FLAGS_PERM_OVERWRITE_MASK = 				(II_FLAGS_OBJECT_SLAM_PERM |
+													 II_FLAGS_OBJECT_SLAM_SALE |
+													 II_FLAGS_OBJECT_PERM_OVERWRITE_BASE |
+													 II_FLAGS_OBJECT_PERM_OVERWRITE_OWNER |
+													 II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP |
+													 II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE |
+													 II_FLAGS_OBJECT_PERM_OVERWRITE_NEXT_OWNER),
+			// These bits need to be cleared whenever the asset_id is updated
+			// on a pre-existing inventory item (DEV-28098 and DEV-30997)
+	};
+};
+
+#endif // LL_LLINVENTORYDEFINES_H
diff --git a/indra/llinventory/llinventorytype.h b/indra/llinventory/llinventorytype.h
index e515b8a304b3396d4524c5f638e579181ec2f66b..20da95400225f11f073a9e85965e742f71e3a73f 100644
--- a/indra/llinventory/llinventorytype.h
+++ b/indra/llinventory/llinventorytype.h
@@ -75,7 +75,6 @@ class LLInventoryType
 	// machine transation between type and strings
 	static EType lookup(const std::string& name);
 	static const std::string &lookup(EType type);
-
 	// translation from a type to a human readable form.
 	static const std::string &lookupHumanReadable(EType type);
 
diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp
index ec21ae40e732d7499bab1ffa82982e9446ba4afa..b08cb28218f96d39372f15ca926d79c3dff1663e 100644
--- a/indra/llinventory/llparcel.cpp
+++ b/indra/llinventory/llparcel.cpp
@@ -452,7 +452,7 @@ BOOL LLParcel::allowTerraformBy(const LLUUID &agent_id) const
 
 bool LLParcel::isAgentBlockedFromParcel(LLParcel* parcelp,
                                         const LLUUID& agent_id,
-                                        const std::vector<LLUUID>& group_ids,
+                                        const uuid_vec_t& group_ids,
                                         const BOOL is_agent_identified,
                                         const BOOL is_agent_transacted,
                                         const BOOL is_agent_ageverified)
diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h
index 2a9a596912fce7403ab1da61cc7590f8128ccaa2..4ee9d9b40feec22c90ed1764017e331d3ecfa001 100644
--- a/indra/llinventory/llparcel.h
+++ b/indra/llinventory/llparcel.h
@@ -258,7 +258,7 @@ class LLParcel
 	void setMediaURLResetTimer(F32 time);
 	virtual void	setLocalID(S32 local_id);
 
-	// blow away all the extra crap lurking in parcels, including urls, access lists, etc
+	// blow away all the extra stuff lurking in parcels, including urls, access lists, etc
 	void clearParcel();
 
 	// This value is not persisted out to the parcel file, it is only
@@ -538,7 +538,7 @@ class LLParcel
 
 	static bool isAgentBlockedFromParcel(LLParcel* parcelp, 
 									const LLUUID& agent_id,
-									const std::vector<LLUUID>& group_ids,
+									const uuid_vec_t& group_ids,
 									const BOOL is_agent_identified,
 									const BOOL is_agent_transacted,
 									const BOOL is_agent_ageverified);
diff --git a/indra/llmessage/llassetstorage.cpp b/indra/llmessage/llassetstorage.cpp
index 0ab10812006c41c75ca77569927e9966bafafee4..02523467e839be212ed8760b7dd4add619aaf968 100644
--- a/indra/llmessage/llassetstorage.cpp
+++ b/indra/llmessage/llassetstorage.cpp
@@ -408,6 +408,8 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, vo
 {
 	lldebugs << "LLAssetStorage::getAssetData() - " << uuid << "," << LLAssetType::lookup(type) << llendl;
 
+	llinfos << "ASSET_TRACE requesting " << uuid << " type " << LLAssetType::lookup(type) << llendl;
+
 	if (mShutDown)
 	{
 		return; // don't get the asset or do any callbacks, we are shutting down
@@ -471,6 +473,8 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, vo
 		// we've already got the file
 		// theoretically, partial files w/o a pending request shouldn't happen
 		// unless there's a weird error
+		llinfos << "ASSET_TRACE asset " << uuid << " found in VFS" << llendl;
+
 		if (callback)
 		{
 			callback(mVFS, uuid, type, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);
@@ -528,6 +532,8 @@ void LLAssetStorage::downloadCompleteCallback(
 	LLAssetType::EType file_type,
 	void* user_data, LLExtStat ext_status)
 {
+	llinfos << "ASSET_TRACE asset " << file_id << " downloadCompleteCallback" << llendl;
+
 	lldebugs << "LLAssetStorage::downloadCompleteCallback() for " << file_id
 		 << "," << LLAssetType::lookup(file_type) << llendl;
 	LLAssetRequest* req = (LLAssetRequest*)user_data;
diff --git a/indra/llmessage/lltransfersourceasset.cpp b/indra/llmessage/lltransfersourceasset.cpp
index 8f36d516d7c1687a46f1e2f76ab3f9edddfc5e28..43f7c07e9480e4dcaf6bd82fd1a52d1db6e77087 100644
--- a/indra/llmessage/lltransfersourceasset.cpp
+++ b/indra/llmessage/lltransfersourceasset.cpp
@@ -60,7 +60,7 @@ void LLTransferSourceAsset::initTransfer()
 		// to the simulator. This is subset of assets we allow to be
 		// simply pulled straight from the asset system.
 		LLUUID* tidp;
-		if(is_asset_fetch_by_id_allowed(mParams.getAssetType()))
+		if(LLAssetType::lookupIsAssetFetchByIDAllowed(mParams.getAssetType()))
 		{
 			tidp = new LLUUID(getID());
 			gAssetStorage->getAssetData(
@@ -131,7 +131,7 @@ LLTSCode LLTransferSourceAsset::dataCallback(const S32 packet_id,
 	*data_handle = tmpp;
 	if (!vf.read(tmpp, max_bytes))		/* Flawfinder: Ignore */
 	{
-		// Crap, read failure, need to deal with it.
+		// Read failure, need to deal with it.
 		delete[] tmpp;
 		*data_handle = NULL;
 		returned_bytes = 0;
@@ -257,50 +257,3 @@ BOOL LLTransferSourceParamsAsset::unpackParams(LLDataPacker &dp)
 
 	return TRUE;
 }
-
-/**
- * Helper functions
- */
-bool is_asset_fetch_by_id_allowed(LLAssetType::EType type)
-{
-	// *FIX: Make this list smaller.
-	bool rv = false;
-	switch(type)
-	{
-		case LLAssetType::AT_SOUND:
-		case LLAssetType::AT_LANDMARK:
-		case LLAssetType::AT_CLOTHING:
-		case LLAssetType::AT_BODYPART:
-		case LLAssetType::AT_ANIMATION:
-		case LLAssetType::AT_GESTURE:
-			rv = true;
-			break;
-		default:
-			break;
-	}
-	return rv;
-}
-
-bool is_asset_id_knowable(LLAssetType::EType type)
-{
-	// *FIX: Make this list smaller.
-	bool rv = false;
-	switch(type)
-	{
-		case LLAssetType::AT_TEXTURE:
-		case LLAssetType::AT_SOUND:
-		case LLAssetType::AT_LANDMARK:
-		case LLAssetType::AT_CLOTHING:
-		case LLAssetType::AT_NOTECARD:
-		case LLAssetType::AT_BODYPART:
-		case LLAssetType::AT_ANIMATION:
-		case LLAssetType::AT_GESTURE:
-		case LLAssetType::AT_LINK:
-		case LLAssetType::AT_LINK_FOLDER:
-			rv = true;
-			break;
-		default:
-			break;
-	}
-	return rv;
-}
diff --git a/indra/llmessage/lltransfersourceasset.h b/indra/llmessage/lltransfersourceasset.h
index 70b09b6aaf5d682babb1e30dc6d929ebdfbd6ee5..861659565436da6acf805e8bbfe89cbfe256a9bc 100644
--- a/indra/llmessage/lltransfersourceasset.h
+++ b/indra/llmessage/lltransfersourceasset.h
@@ -84,24 +84,4 @@ class LLTransferSourceAsset : public LLTransferSource
 	S32 mCurPos;
 };
 
-/**
- * @brief Quick check to see if the asset allows direct download.
- *
- * This might not be the right place for this function call, but it
- * originally started life inside the LLTransferSourceAsset code.
- * @param type The type of asset.
- * @return Returns true if the asset can be fetched by id.
- */
-bool is_asset_fetch_by_id_allowed(LLAssetType::EType type);
-
-/**
- * @brief Quick check to see if all asset data can be known by the viewer.
- *
- * This might not be the right place for this function call, but it
- * originally started life inside the LLTransferSourceAsset code.
- * @param type The type of asset.
- * @return Returns true if the asset id can be transmitted to the viewer.
- */
-bool is_asset_id_knowable(LLAssetType::EType type);
-
 #endif // LL_LLTRANSFERSOURCEASSET_H
diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp
index 9e3986f257631c17d7895b7163788bec925111ca..a118e21ffbb261b7d19ef01a04bf15a6417296e3 100644
--- a/indra/llmessage/message_prehash.cpp
+++ b/indra/llmessage/message_prehash.cpp
@@ -1147,7 +1147,7 @@ char* _PREHASH_ForceObjectSelect = LLMessageStringTable::getInstance()->getStrin
 char* _PREHASH_Price = LLMessageStringTable::getInstance()->getString("Price");
 char* _PREHASH_SunDirection = LLMessageStringTable::getInstance()->getString("SunDirection");
 char* _PREHASH_FromName = LLMessageStringTable::getInstance()->getString("FromName");
-char* _PREHASH_ChangeInventoryItemFlags = LLMessageStringTable::getInstance()->getString("ChangeInventoryItemFlags");
+char* _PREHASH_ChangeInventoryItemFlags = LLMessageStringTable::getInstance()->getString("ChangLLInventoryItemFlags");
 char* _PREHASH_Force = LLMessageStringTable::getInstance()->getString("Force");
 char* _PREHASH_TransactionBlock = LLMessageStringTable::getInstance()->getString("TransactionBlock");
 char* _PREHASH_PowersMask = LLMessageStringTable::getInstance()->getString("PowersMask");
diff --git a/indra/llplugin/CMakeLists.txt b/indra/llplugin/CMakeLists.txt
index 6706775d4feff329e1754404f638ca75fa0f7663..441becbae00c5683b4770750fa1805ccf5a71abc 100644
--- a/indra/llplugin/CMakeLists.txt
+++ b/indra/llplugin/CMakeLists.txt
@@ -3,6 +3,7 @@
 project(llplugin)
 
 include(00-Common)
+include(CURL)
 include(LLCommon)
 include(LLImage)
 include(LLMath)
@@ -23,6 +24,7 @@ include_directories(
 
 set(llplugin_SOURCE_FILES
     llpluginclassmedia.cpp
+    llplugincookiestore.cpp
     llplugininstance.cpp
     llpluginmessage.cpp
     llpluginmessagepipe.cpp
@@ -36,6 +38,7 @@ set(llplugin_HEADER_FILES
 
     llpluginclassmedia.h
     llpluginclassmediaowner.h
+    llplugincookiestore.h
     llplugininstance.h
     llpluginmessage.h
     llpluginmessageclasses.h
@@ -53,3 +56,19 @@ list(APPEND llplugin_SOURCE_FILES ${llplugin_HEADER_FILES})
 add_library (llplugin ${llplugin_SOURCE_FILES})
 
 add_subdirectory(slplugin)
+
+# Add tests
+include(LLAddBuildTest)
+# UNIT TESTS
+SET(llplugin_TEST_SOURCE_FILES
+  llplugincookiestore.cpp
+  )
+
+# llplugincookiestore has a dependency on curl, so we need to link the curl library into the test.
+set_source_files_properties(
+  llplugincookiestore.cpp
+  PROPERTIES
+    LL_TEST_ADDITIONAL_LIBRARIES "${CURL_LIBRARIES}"
+  )
+
+LL_ADD_PROJECT_UNIT_TESTS(llplugin "${llplugin_TEST_SOURCE_FILES}")
diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp
index bf0e19473ee6bad521d1697bf11b5ddeb9c5610f..e09b511a6e475ace147d16ea9e3e6343a0e42cf9 100644
--- a/indra/llplugin/llpluginclassmedia.cpp
+++ b/indra/llplugin/llpluginclassmedia.cpp
@@ -993,6 +993,13 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
 			mClickTargetType = TARGET_NONE;
 			mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_NOFOLLOW);
 		}
+		else if(message_name == "cookie_set")
+		{
+			if(mOwner)
+			{
+				mOwner->handleCookieSet(this, message.getValue("cookie"));
+			}
+		}
 		else
 		{
 			LL_WARNS("Plugin") << "Unknown " << message_name << " class message: " << message_name << LL_ENDL;
@@ -1076,6 +1083,13 @@ void LLPluginClassMedia::clear_cookies()
 	sendMessage(message);
 }
 
+void LLPluginClassMedia::set_cookies(const std::string &cookies)
+{
+	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "set_cookies");
+	message.setValue("cookies", cookies);	
+	sendMessage(message);
+}
+
 void LLPluginClassMedia::enable_cookies(bool enable)
 {
 	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "enable_cookies");
diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h
index 79356beb6843081048c2221d00dd035007eba878..8c7b00f45b0284f3ec39ade63666f9d87ef5f7bf 100644
--- a/indra/llplugin/llpluginclassmedia.h
+++ b/indra/llplugin/llpluginclassmedia.h
@@ -189,6 +189,7 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner
 	void focus(bool focused);
 	void clear_cache();
 	void clear_cookies();
+	void set_cookies(const std::string &cookies);
 	void enable_cookies(bool enable);
 	void proxy_setup(bool enable, const std::string &host = LLStringUtil::null, int port = 0);
 	void browse_stop();
diff --git a/indra/llplugin/llpluginclassmediaowner.h b/indra/llplugin/llpluginclassmediaowner.h
index 6d369cd51a36a57e3a129dde9b91b21c517e5abd..5669b81fd1f15ff2b3797f2a8a2e844cef6207aa 100644
--- a/indra/llplugin/llpluginclassmediaowner.h
+++ b/indra/llplugin/llpluginclassmediaowner.h
@@ -39,6 +39,7 @@
 #include <queue>
 
 class LLPluginClassMedia;
+class LLPluginCookieStore;
 
 class LLPluginClassMediaOwner
 {
@@ -78,6 +79,7 @@ class LLPluginClassMediaOwner
 	
 	virtual ~LLPluginClassMediaOwner() {};
 	virtual void handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent /*event*/) {};
+	virtual void handleCookieSet(LLPluginClassMedia* /*self*/, const std::string &/*cookie*/) {};
 };
 
 #endif // LL_LLPLUGINCLASSMEDIAOWNER_H
diff --git a/indra/llplugin/llplugincookiestore.cpp b/indra/llplugin/llplugincookiestore.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..85b1e70d7870d99827e163e1bee2d0b467b74a4d
--- /dev/null
+++ b/indra/llplugin/llplugincookiestore.cpp
@@ -0,0 +1,659 @@
+/** 
+ * @file llplugincookiestore.cpp
+ * @brief LLPluginCookieStore provides central storage for http cookies used by plugins
+ *
+ * @cond
+ * $LicenseInfo:firstyear=2010&license=viewergpl$
+ *
+ * Copyright (c) 2010, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlife.com/developers/opensource/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlife.com/developers/opensource/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ * @endcond
+ */
+
+#include "linden_common.h"
+#include "indra_constants.h"
+
+#include "llplugincookiestore.h"
+#include <iostream>
+
+// for curl_getdate() (apparently parsing RFC 1123 dates is hard)
+#include <curl/curl.h>
+
+LLPluginCookieStore::LLPluginCookieStore():
+	mHasChangedCookies(false)
+{
+}
+
+
+LLPluginCookieStore::~LLPluginCookieStore()
+{
+	clearCookies();
+}
+
+
+LLPluginCookieStore::Cookie::Cookie(const std::string &s, std::string::size_type cookie_start, std::string::size_type cookie_end):
+	mCookie(s, cookie_start, cookie_end - cookie_start),
+	mNameStart(0), mNameEnd(0),
+	mValueStart(0), mValueEnd(0),
+	mDomainStart(0), mDomainEnd(0),
+	mPathStart(0), mPathEnd(0),
+	mDead(false), mChanged(true)
+{
+}
+
+LLPluginCookieStore::Cookie *LLPluginCookieStore::Cookie::createFromString(const std::string &s, std::string::size_type cookie_start, std::string::size_type cookie_end, const std::string &host)
+{
+	Cookie *result = new Cookie(s, cookie_start, cookie_end);
+
+	if(!result->parse(host))
+	{
+		delete result;
+		result = NULL;
+	}
+	
+	return result;
+}
+
+std::string LLPluginCookieStore::Cookie::getKey() const
+{
+	std::string result;
+	if(mDomainEnd > mDomainStart)
+	{
+		result += mCookie.substr(mDomainStart, mDomainEnd - mDomainStart);
+	}
+	result += ';';
+	if(mPathEnd > mPathStart)
+	{
+		result += mCookie.substr(mPathStart, mPathEnd - mPathStart);
+	}
+	result += ';';
+	result += mCookie.substr(mNameStart, mNameEnd - mNameStart);
+	return result;
+}
+
+bool LLPluginCookieStore::Cookie::parse(const std::string &host)
+{
+	bool first_field = true;
+
+	std::string::size_type cookie_end = mCookie.size();
+	std::string::size_type field_start = 0;
+
+	lldebugs << "parsing cookie: " << mCookie << llendl;
+	while(field_start < cookie_end)
+	{
+		// Finding the start of the next field requires honoring special quoting rules
+		// see the definition of 'quoted-string' in rfc2616 for details
+		std::string::size_type next_field_start = findFieldEnd(field_start);
+
+		// The end of this field should not include the terminating ';' or any trailing whitespace
+		std::string::size_type field_end = mCookie.find_last_not_of("; ", next_field_start);
+		if(field_end == std::string::npos || field_end < field_start)
+		{
+			// This field was empty or all whitespace.  Set end = start so it shows as empty.
+			field_end = field_start;
+		}
+		else if (field_end < next_field_start)
+		{
+			// we actually want the index of the char _after_ what 'last not of' found
+			++field_end;
+		}
+		
+		// find the start of the actual name (skip separator and possible whitespace)
+		std::string::size_type name_start = mCookie.find_first_not_of("; ", field_start);
+		if(name_start == std::string::npos || name_start > next_field_start)
+		{
+			// Again, nothing but whitespace.
+			name_start = field_start;
+		}
+		
+		// the name and value are separated by the first equals sign
+		std::string::size_type name_value_sep = mCookie.find_first_of("=", name_start);
+		if(name_value_sep == std::string::npos || name_value_sep > field_end)
+		{
+			// No separator found, so this is a field without an = 
+			name_value_sep = field_end;
+		}
+		
+		// the name end is before the name-value separator
+		std::string::size_type name_end = mCookie.find_last_not_of("= ", name_value_sep);
+		if(name_end == std::string::npos || name_end < name_start)
+		{
+			// I'm not sure how we'd hit this case... it seems like it would have to be an empty name.
+			name_end = name_start;
+		}
+		else if (name_end < name_value_sep)
+		{
+			// we actually want the index of the char _after_ what 'last not of' found
+			++name_end;
+		}
+		
+		// Value is between the name-value sep and the end of the field.
+		std::string::size_type value_start = mCookie.find_first_not_of("= ", name_value_sep);
+		if(value_start == std::string::npos || value_start > field_end)
+		{
+			// All whitespace or empty value
+			value_start = field_end;
+		}
+		std::string::size_type value_end = mCookie.find_last_not_of("; ", field_end);
+		if(value_end == std::string::npos || value_end < value_start)
+		{
+			// All whitespace or empty value
+			value_end = value_start;
+		}
+		else if (value_end < field_end)
+		{
+			// we actually want the index of the char _after_ what 'last not of' found
+			++value_end;
+		}
+
+		lldebugs 
+			<< "    field name: \"" << mCookie.substr(name_start, name_end - name_start) 
+			<< "\", value: \"" << mCookie.substr(value_start, value_end - value_start) << "\""
+			<< llendl;
+				
+		// See whether this field is one we know
+		if(first_field)
+		{
+			// The first field is the name=value pair
+			mNameStart = name_start;
+			mNameEnd = name_end;
+			mValueStart = value_start;
+			mValueEnd = value_end;
+			first_field = false;
+		}
+		else
+		{
+			// Subsequent fields must come from the set in rfc2109
+			if(matchName(name_start, name_end, "expires"))
+			{
+				std::string date_string(mCookie, value_start, value_end - value_start); 
+				// If the cookie contains an "expires" field, it MUST contain a parsable date.
+				
+				// HACK: LLDate apparently can't PARSE an rfc1123-format date, even though it can GENERATE one.
+				//  The curl function curl_getdate can do this, but I'm hesitant to unilaterally introduce a curl dependency in LLDate.
+#if 1
+				time_t date = curl_getdate(date_string.c_str(), NULL );
+				mDate.secondsSinceEpoch((F64)date);
+				lldebugs << "        expire date parsed to: " << mDate.asRFC1123() << llendl;
+#else
+				// This doesn't work (rfc1123-format dates cause it to fail)
+				if(!mDate.fromString(date_string))
+				{
+					// Date failed to parse.
+					llwarns << "failed to parse cookie's expire date: " << date << llendl;
+					return false;
+				}
+#endif
+			}
+			else if(matchName(name_start, name_end, "domain"))
+			{
+				mDomainStart = value_start;
+				mDomainEnd = value_end;
+			}
+			else if(matchName(name_start, name_end, "path"))
+			{
+				mPathStart = value_start;
+				mPathEnd = value_end;
+			}
+			else if(matchName(name_start, name_end, "max-age"))
+			{
+				// TODO: how should we handle this?
+			}
+			else if(matchName(name_start, name_end, "secure"))
+			{
+				// We don't care about the value of this field (yet)
+			}
+			else if(matchName(name_start, name_end, "version"))
+			{
+				// We don't care about the value of this field (yet)
+			}
+			else if(matchName(name_start, name_end, "comment"))
+			{
+				// We don't care about the value of this field (yet)
+			}
+			else
+			{
+				// An unknown field is a parse failure
+				return false;
+			}
+			
+		}
+
+		
+		// move on to the next field, skipping this field's separator and any leading whitespace
+		field_start = mCookie.find_first_not_of("; ", next_field_start);
+	}
+		
+	// The cookie MUST have a name
+	if(mNameEnd <= mNameStart)
+		return false;
+	
+	// If the cookie doesn't have a domain, add the current host as the domain.
+	if(mDomainEnd <= mDomainStart)
+	{
+		if(host.empty())
+		{
+			// no domain and no current host -- this is a parse failure.
+			return false;
+		}
+		
+		// Figure out whether this cookie ended with a ";" or not...
+		std::string::size_type last_char = mCookie.find_last_not_of(" ");
+		if((last_char != std::string::npos) && (mCookie[last_char] != ';'))
+		{
+			mCookie += ";";
+		}
+		
+		mCookie += " domain=";
+		mDomainStart = mCookie.size();
+		mCookie += host;
+		mDomainEnd = mCookie.size();
+		
+		lldebugs << "added domain (" << mDomainStart << " to " << mDomainEnd << "), new cookie is: " << mCookie << llendl;
+	}
+
+	// If the cookie doesn't have a path, add "/".
+	if(mPathEnd <= mPathStart)
+	{
+		// Figure out whether this cookie ended with a ";" or not...
+		std::string::size_type last_char = mCookie.find_last_not_of(" ");
+		if((last_char != std::string::npos) && (mCookie[last_char] != ';'))
+		{
+			mCookie += ";";
+		}
+		
+		mCookie += " path=";
+		mPathStart = mCookie.size();
+		mCookie += "/";
+		mPathEnd = mCookie.size();
+		
+		lldebugs << "added path (" << mPathStart << " to " << mPathEnd << "), new cookie is: " << mCookie << llendl;
+	}
+	
+	
+	return true;
+}
+
+std::string::size_type LLPluginCookieStore::Cookie::findFieldEnd(std::string::size_type start, std::string::size_type end)
+{
+	std::string::size_type result = start;
+	
+	if(end == std::string::npos)
+		end = mCookie.size();
+	
+	bool in_quotes = false;
+	for(; (result < end); result++)
+	{
+		switch(mCookie[result])
+		{
+			case '\\':
+				if(in_quotes)
+					result++; // The next character is backslash-quoted.  Skip over it.
+			break;
+			case '"':
+				in_quotes = !in_quotes;
+			break;
+			case ';':
+				if(!in_quotes)
+					return result;
+			break;
+		}		
+	}
+	
+	// If we got here, no ';' was found.
+	return end;
+}
+
+bool LLPluginCookieStore::Cookie::matchName(std::string::size_type start, std::string::size_type end, const char *name)
+{
+	// NOTE: this assumes 'name' is already in lowercase.  The code which uses it should be able to arrange this...
+	
+	while((start < end) && (*name != '\0'))
+	{
+		if(tolower(mCookie[start]) != *name)
+			return false;
+			
+		start++;
+		name++;
+	}
+	
+	// iff both strings hit the end at the same time, they're equal.
+	return ((start == end) && (*name == '\0'));
+}
+
+std::string LLPluginCookieStore::getAllCookies()
+{
+	std::stringstream result;
+	writeAllCookies(result);
+	return result.str();
+}
+
+void LLPluginCookieStore::writeAllCookies(std::ostream& s)
+{
+	cookie_map_t::iterator iter;
+	for(iter = mCookies.begin(); iter != mCookies.end(); iter++)
+	{
+		// Don't return expired cookies
+		if(!iter->second->isDead())
+		{
+			s << (iter->second->getCookie()) << "\n";
+		}
+	}
+
+}
+
+std::string LLPluginCookieStore::getPersistentCookies()
+{
+	std::stringstream result;
+	writePersistentCookies(result);
+	return result.str();
+}
+
+void LLPluginCookieStore::writePersistentCookies(std::ostream& s)
+{
+	cookie_map_t::iterator iter;
+	for(iter = mCookies.begin(); iter != mCookies.end(); iter++)
+	{
+		// Don't return expired cookies or session cookies
+		if(!iter->second->isDead() && !iter->second->isSessionCookie())
+		{
+			s << iter->second->getCookie() << "\n";
+		}
+	}
+}
+
+std::string LLPluginCookieStore::getChangedCookies(bool clear_changed)
+{
+	std::stringstream result;
+	writeChangedCookies(result, clear_changed);
+	
+	return result.str();
+}
+
+void LLPluginCookieStore::writeChangedCookies(std::ostream& s, bool clear_changed)
+{
+	if(mHasChangedCookies)
+	{
+		lldebugs << "returning changed cookies: " << llendl;
+		cookie_map_t::iterator iter;
+		for(iter = mCookies.begin(); iter != mCookies.end(); )
+		{
+			cookie_map_t::iterator next = iter;
+			next++;
+			
+			// Only return cookies marked as "changed"
+			if(iter->second->isChanged())
+			{
+				s << iter->second->getCookie() << "\n";
+
+				lldebugs << "    " << iter->second->getCookie() << llendl;
+
+				// If requested, clear the changed mark
+				if(clear_changed)
+				{
+					if(iter->second->isDead())
+					{
+						// If this cookie was previously marked dead, it needs to be removed entirely.	
+						delete iter->second;
+						mCookies.erase(iter);
+					}
+					else
+					{
+						// Not dead, just mark as not changed.
+						iter->second->setChanged(false);
+					}
+				}
+			}
+			
+			iter = next;
+		}
+	}
+	
+	if(clear_changed)
+		mHasChangedCookies = false;
+}
+
+void LLPluginCookieStore::setAllCookies(const std::string &cookies, bool mark_changed)
+{
+	clearCookies();
+	setCookies(cookies, mark_changed);
+}
+
+void LLPluginCookieStore::readAllCookies(std::istream& s, bool mark_changed)
+{
+	clearCookies();
+	readCookies(s, mark_changed);
+}
+	
+void LLPluginCookieStore::setCookies(const std::string &cookies, bool mark_changed)
+{
+	std::string::size_type start = 0;
+
+	while(start != std::string::npos)
+	{
+		std::string::size_type end = cookies.find_first_of("\r\n", start);
+		if(end > start)
+		{
+			// The line is non-empty.  Try to create a cookie from it.
+			setOneCookie(cookies, start, end, mark_changed);
+		}
+		start = cookies.find_first_not_of("\r\n ", end);
+	}
+}
+
+void LLPluginCookieStore::setCookiesFromHost(const std::string &cookies, const std::string &host, bool mark_changed)
+{
+	std::string::size_type start = 0;
+
+	while(start != std::string::npos)
+	{
+		std::string::size_type end = cookies.find_first_of("\r\n", start);
+		if(end > start)
+		{
+			// The line is non-empty.  Try to create a cookie from it.
+			setOneCookie(cookies, start, end, mark_changed, host);
+		}
+		start = cookies.find_first_not_of("\r\n ", end);
+	}
+}
+			
+void LLPluginCookieStore::readCookies(std::istream& s, bool mark_changed)
+{
+	std::string line;
+	while(s.good() && !s.eof())
+	{
+		std::getline(s, line);
+		if(!line.empty())
+		{
+			// Try to create a cookie from this line.
+			setOneCookie(line, 0, std::string::npos, mark_changed);
+		}
+	}
+}
+
+std::string LLPluginCookieStore::quoteString(const std::string &s)
+{
+	std::stringstream result;
+	
+	result << '"';
+	
+	for(std::string::size_type i = 0; i < s.size(); ++i)
+	{
+		char c = s[i];
+		switch(c)
+		{
+			// All these separators need to be quoted in HTTP headers, according to section 2.2 of rfc 2616:
+			case '(': case ')': case '<': case '>': case '@':
+			case ',': case ';': case ':': case '\\': case '"':
+			case '/': case '[': case ']': case '?': case '=':
+			case '{': case '}':	case ' ': case '\t':
+				result << '\\';
+			break;
+		}
+		
+		result << c;
+	}
+	
+	result << '"';
+	
+	return result.str();
+}
+
+std::string LLPluginCookieStore::unquoteString(const std::string &s)
+{
+	std::stringstream result;
+	
+	bool in_quotes = false;
+	
+	for(std::string::size_type i = 0; i < s.size(); ++i)
+	{
+		char c = s[i];
+		switch(c)
+		{
+			case '\\':
+				if(in_quotes)
+				{
+					// The next character is backslash-quoted.  Pass it through untouched.
+					++i; 
+					if(i < s.size())
+					{
+						result << s[i];
+					}
+					continue;
+				}
+			break;
+			case '"':
+				in_quotes = !in_quotes;
+				continue;
+			break;
+		}
+		
+		result << c;
+	}
+	
+	return result.str();
+}
+
+// The flow for deleting a cookie is non-obvious enough that I should call it out here...
+// Deleting a cookie is done by setting a cookie with the same name, path, and domain, but with an expire timestamp in the past.
+// (This is exactly how a web server tells a browser to delete a cookie.)
+// When deleting with mark_changed set to true, this replaces the existing cookie in the list with an entry that's marked both dead and changed.
+// Some time later when writeChangedCookies() is called with clear_changed set to true, the dead cookie is deleted from the list after being returned, so that the
+// delete operation (in the form of the expired cookie) is passed along.
+void LLPluginCookieStore::setOneCookie(const std::string &s, std::string::size_type cookie_start, std::string::size_type cookie_end, bool mark_changed, const std::string &host)
+{
+	Cookie *cookie = Cookie::createFromString(s, cookie_start, cookie_end, host);
+	if(cookie)
+	{
+		lldebugs << "setting cookie: " << cookie->getCookie() << llendl;
+		
+		// Create a key for this cookie
+		std::string key = cookie->getKey();
+		
+		// Check to see whether this cookie should have expired
+		if(!cookie->isSessionCookie() && (cookie->getDate() < LLDate::now()))
+		{
+			// This cookie has expired.
+			if(mark_changed)
+			{
+				// If we're marking cookies as changed, we should keep it anyway since we'll need to send it out with deltas.
+				cookie->setDead(true);
+				lldebugs << "    marking dead" << llendl;
+			}
+			else
+			{
+				// If we're not marking cookies as changed, we don't need to keep this cookie at all.
+				// If the cookie was already in the list, delete it.
+				removeCookie(key);
+
+				delete cookie;
+				cookie = NULL;
+
+				lldebugs << "    removing" << llendl;
+			}
+		}
+		
+		if(cookie)
+		{
+			// If it already exists in the map, replace it.
+			cookie_map_t::iterator iter = mCookies.find(key);
+			if(iter != mCookies.end())
+			{
+				if(iter->second->getCookie() == cookie->getCookie())
+				{
+					// The new cookie is identical to the old -- don't mark as changed.
+					// Just leave the old one in the map.
+					delete cookie;
+					cookie = NULL;
+
+					lldebugs << "    unchanged" << llendl;
+				}
+				else
+				{
+					// A matching cookie was already in the map.  Replace it.
+					delete iter->second;
+					iter->second = cookie;
+					
+					cookie->setChanged(mark_changed);
+					if(mark_changed)
+						mHasChangedCookies = true;
+
+					lldebugs << "    replacing" << llendl;
+				}
+			}
+			else
+			{
+				// The cookie wasn't in the map.  Insert it.
+				mCookies.insert(std::make_pair(key, cookie));
+				
+				cookie->setChanged(mark_changed);
+				if(mark_changed)
+					mHasChangedCookies = true;
+
+				lldebugs << "    adding" << llendl;
+			}
+		}
+	}
+}
+
+void LLPluginCookieStore::clearCookies()
+{
+	while(!mCookies.empty())
+	{
+		cookie_map_t::iterator iter = mCookies.begin();
+		delete iter->second;
+		mCookies.erase(iter);
+	}
+}
+
+void LLPluginCookieStore::removeCookie(const std::string &key)
+{
+	cookie_map_t::iterator iter = mCookies.find(key);
+	if(iter != mCookies.end())
+	{
+		delete iter->second;
+		mCookies.erase(iter);
+	}
+}
+
diff --git a/indra/llplugin/llplugincookiestore.h b/indra/llplugin/llplugincookiestore.h
new file mode 100644
index 0000000000000000000000000000000000000000..a93f0c14f0d72529c72452d990c9be35cebb5d66
--- /dev/null
+++ b/indra/llplugin/llplugincookiestore.h
@@ -0,0 +1,125 @@
+/** 
+ * @file llplugincookiestore.h
+ * @brief LLPluginCookieStore provides central storage for http cookies used by plugins
+ *
+ * @cond
+ * $LicenseInfo:firstyear=2010&license=viewergpl$
+ *
+ * Copyright (c) 2010, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlife.com/developers/opensource/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlife.com/developers/opensource/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ * @endcond
+ */
+
+#ifndef LL_LLPLUGINCOOKIESTORE_H
+#define LL_LLPLUGINCOOKIESTORE_H
+
+#include "lldate.h"
+#include <map>
+#include <string>
+#include <iostream>
+
+class LLPluginCookieStore
+{
+	LOG_CLASS(LLPluginCookieStore);
+public:
+	LLPluginCookieStore();
+	~LLPluginCookieStore();
+
+	// gets all cookies currently in storage -- use when initializing a plugin
+	std::string getAllCookies();
+	void writeAllCookies(std::ostream& s);
+	
+	// gets only persistent cookies (i.e. not session cookies) -- use when writing cookies to a file
+	std::string getPersistentCookies();
+	void writePersistentCookies(std::ostream& s);
+	
+	// gets cookies which are marked as "changed" -- use when sending periodic updates to plugins
+	std::string getChangedCookies(bool clear_changed = true);
+	void writeChangedCookies(std::ostream& s, bool clear_changed = true);
+	
+	// (re)initializes internal data structures and bulk-sets cookies -- use when reading cookies from a file
+	void setAllCookies(const std::string &cookies, bool mark_changed = false);
+	void readAllCookies(std::istream& s, bool mark_changed = false);
+	
+	// sets one or more cookies (without reinitializing anything) -- use when receiving cookies from a plugin
+	void setCookies(const std::string &cookies, bool mark_changed = true);
+	void readCookies(std::istream& s, bool mark_changed = true);
+
+	// sets one or more cookies (without reinitializing anything), supplying a hostname the cookies came from -- use when setting a cookie manually
+	void setCookiesFromHost(const std::string &cookies, const std::string &host, bool mark_changed = true);
+
+	// quote or unquote a string as per the definition of 'quoted-string' in rfc2616
+	static std::string quoteString(const std::string &s);
+	static std::string unquoteString(const std::string &s);
+	
+private:
+
+	void setOneCookie(const std::string &s, std::string::size_type cookie_start, std::string::size_type cookie_end, bool mark_changed, const std::string &host = LLStringUtil::null);
+
+	class Cookie
+	{
+	public:
+		static Cookie *createFromString(const std::string &s, std::string::size_type cookie_start = 0, std::string::size_type cookie_end = std::string::npos, const std::string &host = LLStringUtil::null);
+		
+		// Construct a string from the cookie that uniquely represents it, to be used as a key in a std::map.
+		std::string getKey() const;
+		
+		const std::string &getCookie() const { return mCookie; };
+		bool isSessionCookie() const { return mDate.isNull(); };
+
+		bool isDead() const { return mDead; };
+		void setDead(bool dead) { mDead = dead; };
+		
+		bool isChanged() const { return mChanged; };
+		void setChanged(bool changed) { mChanged = changed; };
+
+		const LLDate &getDate() const { return mDate; };
+		
+	private:
+		Cookie(const std::string &s, std::string::size_type cookie_start = 0, std::string::size_type cookie_end = std::string::npos);
+		bool parse(const std::string &host);
+		std::string::size_type findFieldEnd(std::string::size_type start = 0, std::string::size_type end = std::string::npos);
+		bool matchName(std::string::size_type start, std::string::size_type end, const char *name);
+		
+		std::string mCookie;	// The full cookie, in RFC 2109 string format
+		LLDate mDate;			// The expiration date of the cookie.  For session cookies, this will be a null date (mDate.isNull() is true).
+		// Start/end indices of various parts of the cookie string.  Stored as indices into the string to save space and time.
+		std::string::size_type mNameStart, mNameEnd;
+		std::string::size_type mValueStart, mValueEnd;
+		std::string::size_type mDomainStart, mDomainEnd;
+		std::string::size_type mPathStart, mPathEnd;
+		bool mDead;
+		bool mChanged;
+	};
+	
+	typedef std::map<std::string, Cookie*> cookie_map_t;
+	
+	cookie_map_t mCookies;
+	bool mHasChangedCookies;
+	
+	void clearCookies();
+	void removeCookie(const std::string &key);
+};
+
+#endif // LL_LLPLUGINCOOKIESTORE_H
diff --git a/indra/llplugin/tests/llplugincookiestore_test.cpp b/indra/llplugin/tests/llplugincookiestore_test.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..020d9c1977361957c37030ac6d3a4b92718027b1
--- /dev/null
+++ b/indra/llplugin/tests/llplugincookiestore_test.cpp
@@ -0,0 +1,211 @@
+/** 
+ * @file llplugincookiestore_test.cpp
+ * @brief Unit tests for LLPluginCookieStore.
+ *
+ * @cond
+ * $LicenseInfo:firstyear=2010&license=viewergpl$
+ *
+ * Copyright (c) 2010, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlife.com/developers/opensource/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlife.com/developers/opensource/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ * @endcond
+ */
+
+#include "linden_common.h"
+#include "../test/lltut.h"
+
+#include "../llplugincookiestore.h"
+
+
+namespace tut
+{
+	// Main Setup
+	struct LLPluginCookieStoreFixture
+	{
+		LLPluginCookieStoreFixture()
+		{
+			// We need dates definitively in the past and the future to properly test cookie expiration.
+			LLDate now = LLDate::now(); 
+			LLDate past(now.secondsSinceEpoch() - (60.0 * 60.0 * 24.0));	// 1 day in the past
+			LLDate future(now.secondsSinceEpoch() + (60.0 * 60.0 * 24.0));	// 1 day in the future
+			
+			mPastString = past.asRFC1123();
+			mFutureString = future.asRFC1123();
+		}
+		
+		std::string mPastString;
+		std::string mFutureString;
+		LLPluginCookieStore mCookieStore;
+		
+		// List of cookies used for validation
+		std::list<std::string> mCookies;
+		
+		// This sets up mCookies from a string returned by one of the functions in LLPluginCookieStore
+		void setCookies(const std::string &cookies)
+		{
+			mCookies.clear();
+			std::string::size_type start = 0;
+
+			while(start != std::string::npos)
+			{
+				std::string::size_type end = cookies.find_first_of("\r\n", start);
+				if(end > start)
+				{
+					std::string line(cookies, start, end - start);
+					if(line.find_first_not_of("\r\n\t ") != std::string::npos)
+					{
+						// The line has some non-whitespace characters.  Save it to the list.
+						mCookies.push_back(std::string(cookies, start, end - start));
+					}
+				}
+				start = cookies.find_first_not_of("\r\n ", end);
+			}
+		}
+		
+		// This ensures that a cookie matching the one passed is in the list.
+		void ensureCookie(const std::string &cookie)
+		{
+			std::list<std::string>::iterator iter;
+			for(iter = mCookies.begin(); iter != mCookies.end(); iter++)
+			{
+				if(*iter == cookie)
+				{
+					// Found the cookie
+					// TODO: this should do a smarter equality comparison on the two cookies, instead of just a string compare.
+					return;
+				}
+			}
+			
+			// Didn't find this cookie
+			std::string message = "cookie not found: ";
+			message += cookie;
+			ensure(message, false);
+		}
+		
+		// This ensures that the number of cookies in the list matches what's expected.
+		void ensureSize(const std::string &message, size_t size)
+		{
+			if(mCookies.size() != size)
+			{
+				std::stringstream full_message;
+				
+				full_message << message << " (expected " << size << ", actual " << mCookies.size() << ")";
+				ensure(full_message.str(), false);
+			}
+		}
+	};
+	
+	typedef test_group<LLPluginCookieStoreFixture> factory;
+	typedef factory::object object;
+	factory tf("LLPluginCookieStore test");
+
+	// Tests
+	template<> template<>
+	void object::test<1>()
+	{
+		// Test 1: cookie uniqueness and update lists.
+		// Valid, distinct cookies:
+		
+		std::string cookie01 = "cookieA=value; domain=example.com; path=/";
+		std::string cookie02 = "cookieB=value; domain=example.com; path=/"; // different name
+		std::string cookie03 = "cookieA=value; domain=foo.example.com; path=/"; // different domain
+		std::string cookie04 = "cookieA=value; domain=example.com; path=/bar/"; // different path
+		std::string cookie05 = "cookieC; domain=example.com; path=/"; // empty value
+		std::string cookie06 = "cookieD=value; domain=example.com; path=/; expires="; // different name, persistent cookie
+		cookie06 += mFutureString;
+		
+		mCookieStore.setCookies(cookie01);
+		mCookieStore.setCookies(cookie02);
+		mCookieStore.setCookies(cookie03);
+		mCookieStore.setCookies(cookie04);
+		mCookieStore.setCookies(cookie05);
+		mCookieStore.setCookies(cookie06);
+		
+		// Invalid cookies (these will get parse errors and not be added to the store)
+
+		std::string badcookie01 = "cookieD=value; domain=example.com; path=/; foo=bar"; // invalid field name
+		std::string badcookie02 = "cookieE=value; path=/"; // no domain
+
+		mCookieStore.setCookies(badcookie01);
+		mCookieStore.setCookies(badcookie02);
+		
+		// All cookies added so far should have been marked as "changed"
+		setCookies(mCookieStore.getChangedCookies());
+		ensureSize("count of changed cookies", 6);
+		ensureCookie(cookie01);
+		ensureCookie(cookie02);
+		ensureCookie(cookie03);
+		ensureCookie(cookie04);
+		ensureCookie(cookie05);
+		ensureCookie(cookie06);
+		
+		// Save off the current state of the cookie store (we'll restore it later)
+		std::string savedCookies = mCookieStore.getAllCookies();
+		
+		// Test replacing cookies
+		std::string cookie01a = "cookieA=newvalue; domain=example.com; path=/";	// updated value
+		std::string cookie02a = "cookieB=newvalue; domain=example.com; path=/; expires="; // remove cookie (by setting an expire date in the past)
+		cookie02a += mPastString;
+		
+		mCookieStore.setCookies(cookie01a);
+		mCookieStore.setCookies(cookie02a);
+
+		// test for getting changed cookies
+		setCookies(mCookieStore.getChangedCookies());
+		ensureSize("count of updated cookies", 2);
+		ensureCookie(cookie01a);
+		ensureCookie(cookie02a);
+		
+		// and for the state of the store after getting changed cookies
+		setCookies(mCookieStore.getAllCookies());
+		ensureSize("count of valid cookies", 5);
+		ensureCookie(cookie01a);
+		ensureCookie(cookie03);
+		ensureCookie(cookie04);
+		ensureCookie(cookie05);
+		ensureCookie(cookie06);
+
+		// Check that only the persistent cookie is returned here
+		setCookies(mCookieStore.getPersistentCookies());
+		ensureSize("count of persistent cookies", 1);
+		ensureCookie(cookie06);
+
+		// Restore the cookie store to a previous state and verify
+		mCookieStore.setAllCookies(savedCookies);
+		
+		// Since setAllCookies defaults to not marking cookies as changed, this list should be empty.
+		setCookies(mCookieStore.getChangedCookies());
+		ensureSize("count of changed cookies after restore", 0);
+
+		// Verify that the restore worked as it should have.
+		setCookies(mCookieStore.getAllCookies());
+		ensureSize("count of restored cookies", 6);
+		ensureCookie(cookie01);
+		ensureCookie(cookie02);
+		ensureCookie(cookie03);
+		ensureCookie(cookie04);
+		ensureCookie(cookie05);
+		ensureCookie(cookie06);
+	}
+
+}
diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
index 2ed1082f569e6232ca1819b6c0ca0c1bc059ac86..cdcf780d2e08d058e19f284b645e4ca006fa0117 100644
--- a/indra/llui/llaccordionctrl.cpp
+++ b/indra/llui/llaccordionctrl.cpp
@@ -372,11 +372,33 @@ void	LLAccordionCtrl::arrangeSinge()
 		}
 		else
 		{
-			panel_height = expanded_height;
+			if(mFitParent)
+			{
+				panel_height = expanded_height;
+			}
+			else
+			{
+				if(accordion_tab->getAccordionView())
+				{
+					panel_height = accordion_tab->getAccordionView()->getRect().getHeight() + 
+						accordion_tab->getHeaderHeight() + 2*BORDER_MARGIN;
+				}
+				else
+				{
+					panel_height = accordion_tab->getRect().getHeight();
+				}
+			}
 		}
+
+		// make sure at least header is shown
+		panel_height = llmax(panel_height, accordion_tab->getHeaderHeight());
+
 		ctrlSetLeftTopAndSize(mAccordionTabs[i], panel_left, panel_top, panel_width, panel_height);
 		panel_top-=mAccordionTabs[i]->getRect().getHeight();
 	}
+
+	show_hide_scrollbar(getRect().getWidth(), getRect().getHeight());
+	updateLayout(getRect().getWidth(), getRect().getHeight());
 }
 
 void	LLAccordionCtrl::arrangeMultiple()
diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp
index e12776f83ab5c83a21d4f895e9c8bb9d00894b9e..0959722aa695971f2654c3397e6b8681487ac463 100644
--- a/indra/llui/llaccordionctrltab.cpp
+++ b/indra/llui/llaccordionctrltab.cpp
@@ -465,10 +465,11 @@ void LLAccordionCtrlTab::setHeaderVisible(bool value)
 	reshape(getRect().getWidth(), getRect().getHeight(), FALSE);
 };
 
-//vurtual
+//virtual
 BOOL LLAccordionCtrlTab::postBuild()
 {
-	mHeader->setVisible(mHeaderVisible);
+	if(mHeader)
+		mHeader->setVisible(mHeaderVisible);
 	
 	static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0);
 
@@ -504,7 +505,8 @@ BOOL LLAccordionCtrlTab::postBuild()
 		mScrollbar->setVisible(false);
 	}
 
-	mContainerPanel->setVisible(mDisplayChildren);
+	if(mContainerPanel)
+		mContainerPanel->setVisible(mDisplayChildren);
 
 	return LLUICtrl::postBuild();
 }
diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h
index 462ccc6d5392f45090e84883f3b16d0e607b4baa..4b8b22405ea2fc3e4e6326e6ee51508b162478a3 100644
--- a/indra/llui/llaccordionctrltab.h
+++ b/indra/llui/llaccordionctrltab.h
@@ -35,8 +35,9 @@
 
 #include <string>
 #include "llrect.h"
+#include "lluictrl.h"
+#include "lluicolor.h"
 
-class LLUICtrl;
 class LLUICtrlFactory;
 class LLUIImage;
 class LLButton;
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 1d4dc35cee457becd5df32ef4f859bfcaedcbb58..33c6a8b6aca10ba1c9de9dec50857635bfc17906 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -824,7 +824,7 @@ void LLButton::draw()
 			x = text_right;
 			break;
 		case LLFontGL::HCENTER:
-			x = getRect().getWidth() / 2;
+			x = text_left + (text_width / 2);
 			break;
 		case LLFontGL::LEFT:
 		default:
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index 3a8efadaa48c002dde797827121f538f877003b5..cc107c972d8651ef2689f12dd306fabd53b3dcc9 100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -495,7 +495,6 @@ void LLComboBox::createLineEditor(const LLComboBox::Params& p)
 		params.max_length_bytes(mMaxChars);
 		params.commit_callback.function(boost::bind(&LLComboBox::onTextCommit, this, _2));
 		params.keystroke_callback(boost::bind(&LLComboBox::onTextEntry, this, _1));
-		params.handle_edit_keys_directly(true);
 		params.commit_on_focus_lost(false);
 		params.follows.flags(FOLLOWS_ALL);
 		params.label(mLabel);
diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp
index 832f1489020a113c7564edfa5f38ce88e5976c34..9d4e2fa495fea2ab6e735856963da252246306a3 100644
--- a/indra/llui/lldraghandle.cpp
+++ b/indra/llui/lldraghandle.cpp
@@ -248,15 +248,14 @@ void LLDragHandleTop::reshapeTitleBox()
 		return;
 	}
 	const LLFontGL* font = LLFontGL::getFontSansSerif();
-	S32 title_width = font->getWidth( mTitleBox->getText() ) + TITLE_HPAD;
-	if (getMaxTitleWidth() > 0)
-		title_width = llmin(title_width, getMaxTitleWidth());
+	S32 title_width = getRect().getWidth();
+	title_width -= 2 * LEFT_PAD + 2 * BORDER_PAD + getButtonsRect().getWidth();
 	S32 title_height = llround(font->getLineHeight());
 	LLRect title_rect;
 	title_rect.setLeftTopAndSize( 
 		LEFT_PAD, 
 		getRect().getHeight() - title_vpad,
-		getRect().getWidth() - LEFT_PAD - RIGHT_PAD,
+		title_width,
 		title_height);
 
 	// calls reshape on mTitleBox
diff --git a/indra/llui/lldraghandle.h b/indra/llui/lldraghandle.h
index dc5410787b52655b313895a526e938e1a9e8de68..825bc9303e218d545414aa8b6859e199a109b4b9 100644
--- a/indra/llui/lldraghandle.h
+++ b/indra/llui/lldraghandle.h
@@ -71,6 +71,8 @@ class LLDragHandle : public LLView
 	BOOL			getForeground() const		{ return mForeground; }
 	void			setMaxTitleWidth(S32 max_width) {mMaxTitleWidth = llmin(max_width, mMaxTitleWidth); }
 	S32				getMaxTitleWidth() const { return mMaxTitleWidth; }
+	void			setButtonsRect(const LLRect& rect){ mButtonsRect = rect; }
+	LLRect			getButtonsRect() { return mButtonsRect; }
 	void			setTitleVisible(BOOL visible);
 
 	virtual void	setTitle( const std::string& title ) = 0;
@@ -88,6 +90,7 @@ class LLDragHandle : public LLView
 	LLTextBox*		mTitleBox;
 	
 private:
+	LLRect			mButtonsRect;
 	S32				mDragLastScreenX;
 	S32				mDragLastScreenY;
 	S32				mLastMouseScreenX;
diff --git a/indra/llui/lleditmenuhandler.cpp b/indra/llui/lleditmenuhandler.cpp
index 821afae8fda971ba5bac30a9770da1853ae83ebd..245bce76f5e1df23fc62c18bfbb42b9f997d2397 100644
--- a/indra/llui/lleditmenuhandler.cpp
+++ b/indra/llui/lleditmenuhandler.cpp
@@ -37,3 +37,10 @@
 /* static */
 LLEditMenuHandler* LLEditMenuHandler::gEditMenuHandler = NULL;
 
+LLEditMenuHandler::~LLEditMenuHandler()
+{
+	if (gEditMenuHandler == this)
+	{
+		gEditMenuHandler = NULL;
+	}
+}
diff --git a/indra/llui/lleditmenuhandler.h b/indra/llui/lleditmenuhandler.h
index 1de9c56afb3c3ae634766782eb0da569d85282a8..d72283cd9946eb8cf058d839dc1579739d0a088c 100644
--- a/indra/llui/lleditmenuhandler.h
+++ b/indra/llui/lleditmenuhandler.h
@@ -38,7 +38,7 @@ class LLEditMenuHandler
 {
 public:
 	// this is needed even though this is just an interface class.
-	virtual ~LLEditMenuHandler() {};
+	virtual ~LLEditMenuHandler();
 	
 	virtual void	undo() {};
 	virtual BOOL	canUndo() const { return FALSE; }
diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp
index 2e5aeec41d8da155d2fd8a04b5d0deadd6dc26c8..35f5a6bbb9364780f6a912fb1ac75b7a361cabed 100644
--- a/indra/llui/llflatlistview.cpp
+++ b/indra/llui/llflatlistview.cpp
@@ -243,7 +243,7 @@ LLUUID LLFlatListView::getSelectedUUID() const
 	}
 }
 
-void LLFlatListView::getSelectedUUIDs(std::vector<LLUUID>& selected_uuids) const
+void LLFlatListView::getSelectedUUIDs(uuid_vec_t& selected_uuids) const
 {
 	if (mSelectedItemPairs.empty()) return;
 
@@ -558,15 +558,6 @@ BOOL LLFlatListView::handleKeyHere(KEY key, MASK mask)
 			}
 			break;
 		}
-		case 'A':
-		{
-			if(MASK_CONTROL & mask)
-			{
-				selectAll();
-				handled = TRUE;
-			}
-			break;
-		}
 		default:
 			break;
 	}
@@ -791,10 +782,15 @@ bool LLFlatListView::selectNextItemPair(bool is_up_direction, bool reset_selecti
 	return false;
 }
 
-bool LLFlatListView::selectAll()
+BOOL LLFlatListView::canSelectAll() const
 {
-	if (!mAllowSelection)
-		return false;
+	return !mItemPairs.empty() && mAllowSelection && mMultipleSelection;
+}
+
+void LLFlatListView::selectAll()
+{
+	if (!mAllowSelection || !mMultipleSelection)
+		return;
 
 	mSelectedItemPairs.clear();
 
@@ -814,8 +810,6 @@ bool LLFlatListView::selectAll()
 
 	// Stretch selected item rect to ensure it won't be clipped
 	mSelectedItemsBorder->setRect(getLastSelectedItemRect().stretch(-1));
-
-	return true;
 }
 
 bool LLFlatListView::isSelected(item_pair_t* item_pair) const
@@ -953,11 +947,17 @@ void LLFlatListView::getValues(std::vector<LLSD>& values) const
 void LLFlatListView::onFocusReceived()
 {
 	mSelectedItemsBorder->setVisible(TRUE);
+	gEditMenuHandler = this;
 }
 // virtual
 void LLFlatListView::onFocusLost()
 {
 	mSelectedItemsBorder->setVisible(FALSE);
+	// Route menu back to the default
+ 	if( gEditMenuHandler == this )
+	{
+		gEditMenuHandler = NULL;
+	}
 }
 
 //virtual 
diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h
index 92cb40332e5bb81714b9e6569e8fbc4881b49091..e3c07e811faab6adbb94eac1c0e4de9f8661a745 100644
--- a/indra/llui/llflatlistview.h
+++ b/indra/llui/llflatlistview.h
@@ -58,7 +58,7 @@
  * - Order of returned selected items are not guaranteed
  * - The control assumes that all items being added are unique.
  */
-class LLFlatListView : public LLScrollContainer
+class LLFlatListView : public LLScrollContainer, public LLEditMenuHandler
 {
 public:
 
@@ -114,8 +114,6 @@ class LLFlatListView : public LLScrollContainer
 		Params();
 	};
 	
-	virtual ~LLFlatListView() { clear(); };
-
 	/**
 	 * Connects callback to signal called when Return key is pressed.
 	 */
@@ -224,7 +222,7 @@ class LLFlatListView : public LLScrollContainer
 	 * Get LLUUIDs associated with selected items
 	 * @param selected_uuids An std::vector being populated with LLUUIDs associated with selected items
 	 */
-	virtual void getSelectedUUIDs(std::vector<LLUUID>& selected_uuids) const;
+	virtual void getSelectedUUIDs(uuid_vec_t& selected_uuids) const;
 
 	/** Get the top selected item */
 	virtual LLPanel* getSelectedItem() const;
@@ -344,7 +342,8 @@ class LLFlatListView : public LLScrollContainer
 
 	virtual bool selectNextItemPair(bool is_up_direction, bool reset_selection);
 
-	virtual bool selectAll();
+	virtual BOOL canSelectAll() const;
+	virtual void selectAll();
 
 	virtual bool isSelected(item_pair_t* item_pair) const;
 
@@ -379,11 +378,14 @@ class LLFlatListView : public LLScrollContainer
 
 	void setNoItemsCommentVisible(bool visible) const;
 
-private:
+protected:
 
 	/** Comparator to use when sorting the list. */
 	const ItemComparator* mItemComparator;
 
+
+private:
+
 	LLPanel* mItemsPanel;
 
 	S32 mItemsNoScrollWidth;
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index a9accc0ba6521876784819735d143a10861323d0..e672252a5071acdc05304fb1d7205fb8b1e9e4b4 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -346,7 +346,7 @@ void LLFloater::layoutDragHandle()
 		rect = getLocalRect();
 	}
 	mDragHandle->setRect(rect);
-	updateButtons();
+	updateTitleButtons();
 	applyTitle();
 }
 
@@ -1061,11 +1061,10 @@ void LLFloater::setMinimized(BOOL minimize)
 		// Reshape *after* setting mMinimized
 		reshape( mExpandedRect.getWidth(), mExpandedRect.getHeight(), TRUE );
 	}
-	
-	applyTitle ();
 
 	make_ui_sound("UISndWindowClose");
-	updateButtons();
+	updateTitleButtons();
+	applyTitle ();
 }
 
 void LLFloater::setFocus( BOOL b )
@@ -1121,6 +1120,7 @@ void LLFloater::setIsChrome(BOOL is_chrome)
 		setFocus(FALSE);
 		// can't Ctrl-Tab to "chrome" floaters
 		setFocusRoot(FALSE);
+		mButtons[BUTTON_CLOSE]->setToolTip(LLStringExplicit(getButtonTooltip(Params(), BUTTON_CLOSE, is_chrome)));
 	}
 	
 	// no titles displayed on "chrome" floaters
@@ -1190,7 +1190,7 @@ void LLFloater::setHost(LLMultiFloater* host)
 		mButtonScale = 1.f;
 		//mButtonsEnabled[BUTTON_TEAR_OFF] = FALSE;
 	}
-	updateButtons();
+	updateTitleButtons();
 	if (host)
 	{
 		mHostHandle = host->getHandle();
@@ -1389,7 +1389,7 @@ void LLFloater::setCanDock(bool b)
 			mButtonsEnabled[BUTTON_DOCK] = FALSE;
 		}
 	}
-	updateButtons();
+	updateTitleButtons();
 }
 
 void LLFloater::setDocked(bool docked, bool pop_on_undock)
@@ -1398,7 +1398,7 @@ void LLFloater::setDocked(bool docked, bool pop_on_undock)
 	{
 		mDocked = docked;
 		mButtonsEnabled[BUTTON_DOCK] = !mDocked;
-		updateButtons();
+		updateTitleButtons();
 
 		storeDockStateControl();
 	}
@@ -1451,7 +1451,7 @@ void LLFloater::onClickTearOff(LLFloater* self)
 		}
 		self->setTornOff(false);
 	}
-	self->updateButtons();
+	self->updateTitleButtons();
 }
 
 // static
@@ -1691,7 +1691,7 @@ void	LLFloater::setCanMinimize(BOOL can_minimize)
 	mButtonsEnabled[BUTTON_MINIMIZE] = can_minimize && !isMinimized();
 	mButtonsEnabled[BUTTON_RESTORE]  = can_minimize &&  isMinimized();
 
-	updateButtons();
+	updateTitleButtons();
 }
 
 void	LLFloater::setCanClose(BOOL can_close)
@@ -1699,7 +1699,7 @@ void	LLFloater::setCanClose(BOOL can_close)
 	mCanClose = can_close;
 	mButtonsEnabled[BUTTON_CLOSE] = can_close;
 
-	updateButtons();
+	updateTitleButtons();
 }
 
 void	LLFloater::setCanTearOff(BOOL can_tear_off)
@@ -1707,7 +1707,7 @@ void	LLFloater::setCanTearOff(BOOL can_tear_off)
 	mCanTearOff = can_tear_off;
 	mButtonsEnabled[BUTTON_TEAR_OFF] = mCanTearOff && !mHostHandle.isDead();
 
-	updateButtons();
+	updateTitleButtons();
 }
 
 
@@ -1731,10 +1731,11 @@ void LLFloater::setCanDrag(BOOL can_drag)
 	}
 }
 
-void LLFloater::updateButtons()
+void LLFloater::updateTitleButtons()
 {
 	static LLUICachedControl<S32> floater_close_box_size ("UIFloaterCloseBoxSize", 0);
 	static LLUICachedControl<S32> close_box_from_top ("UICloseBoxFromTop", 0);
+	LLRect buttons_rect;
 	S32 button_count = 0;
 	for (S32 i = 0; i < BUTTON_COUNT; i++)
 	{
@@ -1785,6 +1786,15 @@ void LLFloater::updateButtons()
 					llround((F32)floater_close_box_size * mButtonScale));
 			}
 
+			if(!buttons_rect.isValid())
+			{
+				buttons_rect = btn_rect;
+			}
+			else
+			{
+				mDragOnLeft ? buttons_rect.mRight + btn_rect.mRight : 
+					buttons_rect.mLeft = btn_rect.mLeft;
+			}
 			mButtons[i]->setRect(btn_rect);
 			mButtons[i]->setVisible(TRUE);
 			// the restore button should have a tab stop so that it takes action when you Ctrl-Tab to a minimized floater
@@ -1796,7 +1806,10 @@ void LLFloater::updateButtons()
 		}
 	}
 	if (mDragHandle)
-		mDragHandle->setMaxTitleWidth(getRect().getWidth() - (button_count * (floater_close_box_size + 1)));
+	{
+		localRectToOtherView(buttons_rect, &buttons_rect, mDragHandle);
+		mDragHandle->setButtonsRect(buttons_rect);
+	}
 }
 
 void LLFloater::buildButtons(const Params& floater_params)
@@ -1844,7 +1857,7 @@ void LLFloater::buildButtons(const Params& floater_params)
 		p.click_callback.function(boost::bind(sButtonCallbacks[i], this));
 		p.tab_stop(false);
 		p.follows.flags(FOLLOWS_TOP|FOLLOWS_RIGHT);
-		p.tool_tip = getButtonTooltip(floater_params, (EFloaterButton)i);
+		p.tool_tip = getButtonTooltip(floater_params, (EFloaterButton)i, getIsChrome());
 		p.scale_image(true);
 		p.chrome(true);
 
@@ -1853,7 +1866,7 @@ void LLFloater::buildButtons(const Params& floater_params)
 		mButtons[i] = buttonp;
 	}
 
-	updateButtons();
+	updateTitleButtons();
 }
 
 // static
@@ -1899,8 +1912,15 @@ LLUIImage* LLFloater::getButtonPressedImage(const Params& p, EFloaterButton e)
 }
 
 // static
-std::string LLFloater::getButtonTooltip(const Params& p, EFloaterButton e)
+std::string LLFloater::getButtonTooltip(const Params& p, EFloaterButton e, bool is_chrome)
 {
+	// EXT-4081 (Lag Meter: Ctrl+W does not close floater)
+	// If floater is chrome set 'Close' text for close button's tooltip
+	if(is_chrome && BUTTON_CLOSE == e)
+	{
+		static std::string close_tooltip_chrome = LLTrans::getString("BUTTON_CLOSE_CHROME");
+		return close_tooltip_chrome;
+	}
 	// TODO: per-floater localizable tooltips set in XML
 	return sButtonToolTips[e];
 }
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 97d2bda59435f86b2ee0592ccd9b86891a95189e..403723d9d8d1f074c56b7245908278ae4112fa4f 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -311,19 +311,26 @@ friend class LLMultiFloater;
 
 	virtual	void	onClickCloseBtn();
 
+	virtual void	updateTitleButtons();
+
 private:
 	void			setForeground(BOOL b);	// called only by floaterview
 	void			cleanupHandles(); // remove handles to dead floaters
 	void			createMinimizeButton();
-	void			updateButtons();
 	void			buildButtons(const Params& p);
 	
 	// Images and tooltips are named in the XML, but we want to look them
 	// up by index.
 	static LLUIImage*	getButtonImage(const Params& p, EFloaterButton e);
 	static LLUIImage*	getButtonPressedImage(const Params& p, EFloaterButton e);
-	static std::string	getButtonTooltip(const Params& p, EFloaterButton e);
 	
+	/**
+	 * @params is_chrome - if floater is Chrome it means that floater will never get focus.
+	 * Therefore it can't be closed with 'Ctrl+W'. So the tooltip text of close button( X )
+	 * should be 'Close' not 'Close(Ctrl+W)' as for usual floaters.
+	 */
+	static std::string	getButtonTooltip(const Params& p, EFloaterButton e, bool is_chrome);
+
 	BOOL			offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButton index);
 	void			addResizeCtrls();
 	void			layoutResizeCtrls();
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index 483a394bbdbcbb55069dfdbbfe623340fe4ec1d4..843f72d8e40bc02fcada552ef536f13853463913 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -91,7 +91,6 @@ LLLineEditor::Params::Params()
 	background_image_disabled("background_image_disabled"),
 	background_image_focused("background_image_focused"),
 	select_on_focus("select_on_focus", false),
-	handle_edit_keys_directly("handle_edit_keys_directly", false),
 	revert_on_esc("revert_on_esc", true),
 	commit_on_focus_lost("commit_on_focus_lost", true),
 	ignore_tab("ignore_tab", true),
@@ -136,7 +135,6 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p)
 	mIgnoreArrowKeys( FALSE ),
 	mIgnoreTab( p.ignore_tab ),
 	mDrawAsterixes( FALSE ),
-	mHandleEditKeysDirectly(p.handle_edit_keys_directly),
 	mSelectAllonFocusReceived( p.select_on_focus ),
 	mPassDelete(FALSE),
 	mReadOnly(FALSE),
@@ -192,12 +190,8 @@ LLLineEditor::~LLLineEditor()
 {
 	mCommitOnFocusLost = FALSE;
 
+	// calls onCommit() while LLLineEditor still valid
 	gFocusMgr.releaseFocusIfNeeded( this );
-
-	if( gEditMenuHandler == this )
-	{
-		gEditMenuHandler = NULL;
-	}
 }
 
 
@@ -497,6 +491,7 @@ void LLLineEditor::selectAll()
 	setCursor(mSelectionEnd);
 	//mScrollHPos = 0;
 	mIsSelecting = TRUE;
+	updatePrimary();
 }
 
 
@@ -788,7 +783,7 @@ void LLLineEditor::removeChar()
 	}
 	else
 	{
-		reportBadKeystroke();
+		LLUI::reportBadKeystroke();
 	}
 }
 
@@ -827,7 +822,7 @@ void LLLineEditor::addChar(const llwchar uni_char)
 	}
 	else
 	{
-		reportBadKeystroke();
+		LLUI::reportBadKeystroke();
 	}
 
 	getWindow()->hideCursorUntilMouseMove();
@@ -916,7 +911,7 @@ BOOL LLLineEditor::handleSelectionKey(KEY key, MASK mask)
 			}
 			else
 			{
-				reportBadKeystroke();
+				LLUI::reportBadKeystroke();
 			}
 			break;
 
@@ -932,7 +927,7 @@ BOOL LLLineEditor::handleSelectionKey(KEY key, MASK mask)
 			}
 			else
 			{
-				reportBadKeystroke();
+				LLUI::reportBadKeystroke();
 			}
 			break;
 
@@ -958,22 +953,6 @@ BOOL LLLineEditor::handleSelectionKey(KEY key, MASK mask)
 		}
 	}
 
-	if (!handled && mHandleEditKeysDirectly)
-	{
-		if( (MASK_CONTROL & mask) && ('A' == key) )
-		{
-			if( canSelectAll() )
-			{
-				selectAll();
-			}
-			else
-			{
-				reportBadKeystroke();
-			}
-			handled = TRUE;
-		}
-	}
-
 	if(handled)
 	{
 		// take selection to 'primary' clipboard
@@ -1020,7 +999,7 @@ void LLLineEditor::cut()
 		if( need_to_rollback )
 		{
 			rollback.doRollback( this );
-			reportBadKeystroke();
+			LLUI::reportBadKeystroke();
 		}
 		else
 		if( mKeystrokeCallback )
@@ -1129,7 +1108,7 @@ void LLLineEditor::pasteHelper(bool is_primary)
 				}
 				// Truncate the clean string at the limit of what will fit
 				clean_string = clean_string.substr(0, wchars_that_fit);
-				reportBadKeystroke();
+				LLUI::reportBadKeystroke();
 			}
  
 			mText.insert(getCursor(), clean_string);
@@ -1141,7 +1120,7 @@ void LLLineEditor::pasteHelper(bool is_primary)
 			if( need_to_rollback )
 			{
 				rollback.doRollback( this );
-				reportBadKeystroke();
+				LLUI::reportBadKeystroke();
 			}
 			else
 			if( mKeystrokeCallback )
@@ -1206,7 +1185,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)
 			}
 			else
 			{
-				reportBadKeystroke();
+				LLUI::reportBadKeystroke();
 			}
 		}
 		handled = TRUE;
@@ -1255,7 +1234,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)
 			}
 			else
 			{
-				reportBadKeystroke();
+				LLUI::reportBadKeystroke();
 			}
 			handled = TRUE;
 		}
@@ -1282,7 +1261,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)
 			}
 			else
 			{
-				reportBadKeystroke();
+				LLUI::reportBadKeystroke();
 			}
 			handled = TRUE;
 		}
@@ -1299,7 +1278,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)
 			}
 			else
 			{
-				reportBadKeystroke();
+				LLUI::reportBadKeystroke();
 			}
 			handled = TRUE;
 		}
@@ -1316,7 +1295,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)
 			}
 			else
 			{
-				reportBadKeystroke();
+				LLUI::reportBadKeystroke();
 			}
 			handled = TRUE;
 		}
@@ -1339,64 +1318,6 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask)
 		break;
 	}
 
-	if( !handled && mHandleEditKeysDirectly )
-	{
-		// Standard edit keys (Ctrl-X, Delete, etc,) are handled here instead of routed by the menu system.
-		if( KEY_DELETE == key )
-		{
-			if( canDoDelete() )
-			{
-				doDelete();
-			}
-			else
-			{
-				reportBadKeystroke();
-			}
-			handled = TRUE;
-		}
-		else
-		if( MASK_CONTROL & mask )
-		{
-			if( 'C' == key )
-			{
-				if( canCopy() )
-				{
-					copy();
-				}
-				else
-				{
-					reportBadKeystroke();
-				}
-				handled = TRUE;
-			}
-			else
-			if( 'V' == key )
-			{
-				if( canPaste() )
-				{
-					paste();
-				}
-				else
-				{
-					reportBadKeystroke();
-				}
-				handled = TRUE;
-			}
-			else
-			if( 'X' == key )
-			{
-				if( canCut() )
-				{
-					cut();
-				}
-				else
-				{
-					reportBadKeystroke();
-				}
-				handled = TRUE;
-			}
-		}
-	}
 	return handled;
 }
 
@@ -1451,7 +1372,7 @@ BOOL LLLineEditor::handleKeyHere(KEY key, MASK mask )
 			{
 				rollback.doRollback(this);
 
-				reportBadKeystroke();
+				LLUI::reportBadKeystroke();
 			}
 
 			// Notify owner if requested
@@ -1499,7 +1420,7 @@ BOOL LLLineEditor::handleUnicodeCharHere(llwchar uni_char)
 		{
 			rollback.doRollback( this );
 
-			reportBadKeystroke();
+			LLUI::reportBadKeystroke();
 		}
 
 		// Notify owner if requested
@@ -1544,7 +1465,7 @@ void LLLineEditor::doDelete()
 		if( need_to_rollback )
 		{
 			rollback.doRollback( this );
-			reportBadKeystroke();
+			LLUI::reportBadKeystroke();
 		}
 		else
 		{
@@ -1879,11 +1800,6 @@ S32 LLLineEditor::findPixelNearestPos(const S32 cursor_offset) const
 	return result;
 }
 
-void LLLineEditor::reportBadKeystroke()
-{
-	make_ui_sound("UISndBadKeystroke");
-}
-
 //virtual
 void LLLineEditor::clear()
 {
diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h
index b62138426b9428d7b100298ec2491a34610697ef..9489e723e320a9b225505dcf12ff7dcee06e9774 100644
--- a/indra/llui/lllineeditor.h
+++ b/indra/llui/lllineeditor.h
@@ -81,7 +81,6 @@ class LLLineEditor
 										background_image_focused;
 
 		Optional<bool>					select_on_focus,
-										handle_edit_keys_directly,
 										revert_on_esc,
 										commit_on_focus_lost,
 										ignore_tab;
@@ -215,7 +214,6 @@ class LLLineEditor
 	void			extendSelection(S32 new_cursor_pos);
 	void			deleteSelection();
 
-	void			setHandleEditKeysDirectly( BOOL b ) { mHandleEditKeysDirectly = b; }
 	void			setSelectAllonFocusReceived(BOOL b);
 	
 	typedef boost::function<void (LLLineEditor* caller, void* user_data)> callback_t;
@@ -247,7 +245,6 @@ class LLLineEditor
 	void			addChar(const llwchar c);
 	void			setCursorAtLocalPos(S32 local_mouse_x);
 	S32				findPixelNearestPos(S32 cursor_offset = 0) const;
-	void			reportBadKeystroke();
 	BOOL			handleSpecialKey(KEY key, MASK mask);
 	BOOL			handleSelectionKey(KEY key, MASK mask);
 	BOOL			handleControlKey(KEY key, MASK mask);
@@ -325,7 +322,6 @@ class LLLineEditor
 	BOOL		mIgnoreTab;
 	BOOL		mDrawAsterixes;
 
-	BOOL		mHandleEditKeysDirectly;  // If true, the standard edit keys (Ctrl-X, Delete, etc,) are handled here instead of routed by the menu system
 	BOOL		mSelectAllonFocusReceived;
 	BOOL		mPassDelete;
 
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index fb4a9d032d6b1c5009ce6b35b1879cda0a04085a..e0e86ae228f90593dea75e65230549568b740ee9 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -3345,7 +3345,7 @@ void LLMenuHolderGL::draw()
 	LLView::draw();
 	// now draw last selected item as overlay
 	LLMenuItemGL* selecteditem = (LLMenuItemGL*)sItemLastSelectedHandle.get();
-	if (selecteditem && sItemActivationTimer.getStarted() && sItemActivationTimer.getElapsedTimeF32() < ACTIVATE_HIGHLIGHT_TIME)
+	if (selecteditem && selecteditem->getVisible() && sItemActivationTimer.getStarted() && sItemActivationTimer.getElapsedTimeF32() < ACTIVATE_HIGHLIGHT_TIME)
 	{
 		// make sure toggle items, for example, show the proper state when fading out
 		selecteditem->buildDrawLabel();
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
index 39d1986461aa7c51a9f34fb8be607b3bd9c8b676..6f0f83d4b9e041e085d6ea1aeac85e40e3443751 100644
--- a/indra/llui/llmenugl.h
+++ b/indra/llui/llmenugl.h
@@ -295,7 +295,7 @@ class LLMenuItemCallGL : public LLMenuItemGL
 // class, by allowing another method to be specified which determines
 // if the menu item should consider itself checked as true or not.  Be
 // careful that the provided callback is fast - it needs to be VERY
-// FUCKING EFFICIENT, because it may need to be checked a lot.
+// EFFICIENT because it may need to be checked a lot.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 class LLMenuItemCheckGL 
diff --git a/indra/llui/llmultifloater.cpp b/indra/llui/llmultifloater.cpp
index 4af9108329ae6dbb131150a8764fc7d8d04942ea..3aea648562d5bb2126b0c85cdd19c8b490b6ae91 100644
--- a/indra/llui/llmultifloater.cpp
+++ b/indra/llui/llmultifloater.cpp
@@ -345,7 +345,7 @@ void LLMultiFloater::setVisible(BOOL visible)
 
 BOOL LLMultiFloater::handleKeyHere(KEY key, MASK mask)
 {
-	if (key == 'W' && mask == MASK_CONTROL)
+	if (key == 'W' && mask == (MASK_CONTROL|MASK_SHIFT))
 	{
 		LLFloater* floater = getActiveFloater();
 		// is user closeable and is system closeable
diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index d7424cf05a90329c3075277e0bde564dca8b7616..65ef53443b3f629ed15acad5926444505ceeef03 100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -1552,3 +1552,11 @@ std::ostream& operator<<(std::ostream& s, const LLNotification& notification)
 	return s;
 }
 
+void LLPostponedNotification::onCachedNameReceived(const LLUUID& id, const std::string& first,
+		const std::string& last, bool is_group)
+{
+	gCacheName->getFullName(id, mName);
+	modifyNotificationParams();
+	LLNotifications::instance().add(mParams);
+	cleanup();
+}
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index 400491a1544ce55371d0f02c6dd50dbf2b83fcab..1799ca65b7ac4eb9f62d6103b60e996ab122402f 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -104,6 +104,7 @@
 #include "llinitparam.h"
 #include "llnotificationslistener.h"
 #include "llnotificationptr.h"
+#include "llcachename.h"
 
 	
 typedef enum e_notification_priority
@@ -949,6 +950,62 @@ class LLNotifications :
     boost::scoped_ptr<LLNotificationsListener> mListener;
 };
 
+/**
+ * Abstract class for postponed notifications.
+ * Provides possibility to add notification after specified by id avatar or group will be
+ * received from cache name. The object of this type automatically well be deleted
+ * by cleanup method after respond will be received from cache name.
+ *
+ * To add custom postponed notification to the notification system client should:
+ *  1 create class derived from LLPostponedNotification;
+ *  2 call LLPostponedNotification::add method;
+ */
+class LLPostponedNotification
+{
+public:
+	/**
+	 * Performs hooking cache name callback which will add notification to notifications system.
+	 * Type of added notification should be specified by template parameter T
+	 * and non-private derived from LLPostponedNotification class,
+	 * otherwise compilation error will occur.
+	 */
+	template<class T>
+	static void add(const LLNotification::Params& params,
+			const LLUUID& id, bool is_group)
+	{
+		// upcast T to the base type to restrict T derivation from LLPostponedNotification
+		LLPostponedNotification* thiz = new T();
+
+		thiz->mParams = params;
+
+		gCacheName->get(id, is_group, boost::bind(
+				&LLPostponedNotification::onCachedNameReceived, thiz, _1, _2,
+				_3, _4));
+	}
+
+private:
+	void onCachedNameReceived(const LLUUID& id, const std::string& first,
+			const std::string& last, bool is_group);
+
+	void cleanup()
+	{
+		delete this;
+	}
+
+protected:
+	LLPostponedNotification() {}
+	virtual ~LLPostponedNotification() {}
+
+	/**
+	 * Abstract method provides possibility to modify notification parameters and
+	 * will be called after cache name retrieve information about avatar or group
+	 * and before notification will be added to the notification system.
+	 */
+	virtual void modifyNotificationParams() = 0;
+
+	LLNotification::Params mParams;
+	std::string mName;
+};
 
 #endif//LL_LLNOTIFICATIONS_H
 
diff --git a/indra/llui/llscrollingpanellist.cpp b/indra/llui/llscrollingpanellist.cpp
index 4f55c0507c5defd8666b8262c4299ee861a9d0c1..b7840d1b59f906aaac8d8128ef122c27d9fa547d 100644
--- a/indra/llui/llscrollingpanellist.cpp
+++ b/indra/llui/llscrollingpanellist.cpp
@@ -47,7 +47,12 @@ void LLScrollingPanelList::clearPanels()
 {
 	deleteAllChildren();
 	mPanelList.clear();
-	reshape( 1, 1, FALSE );
+
+	LLRect rc = getRect();
+	rc.setLeftTopAndSize(rc.mLeft, rc.mTop, 1, 1);
+	setRect(rc);
+
+	notifySizeChanged(rc.getHeight());
 }
 
 S32 LLScrollingPanelList::addPanel( LLScrollingPanel* panel )
@@ -67,7 +72,11 @@ S32 LLScrollingPanelList::addPanel( LLScrollingPanel* panel )
 		max_width = llmax( max_width, childp->getRect().getWidth() );
 		cur_gap = GAP_BETWEEN_PANELS;
 	}
-	reshape( max_width, total_height, FALSE );
+ 	LLRect rc = getRect();
+ 	rc.setLeftTopAndSize(rc.mLeft, rc.mTop, max_width, total_height);
+ 	setRect(rc);
+
+	notifySizeChanged(rc.getHeight());
 
 	// Reposition each of the child views
 	S32 cur_y = total_height;
@@ -131,7 +140,11 @@ void LLScrollingPanelList::removePanel( U32 panel_index )
 		max_width = llmax( max_width, childp->getRect().getWidth() );
 		cur_gap = GAP_BETWEEN_PANELS;
 	}
-	reshape( max_width, total_height, FALSE );
+	LLRect rc = getRect();
+	rc.setLeftTopAndSize(rc.mLeft, rc.mTop, max_width, total_height);
+	setRect(rc);
+
+	notifySizeChanged(rc.getHeight());
 
 	// Reposition each of the child views
 	S32 cur_y = total_height;
@@ -200,3 +213,12 @@ void LLScrollingPanelList::draw()
 	LLUICtrl::draw();
 }
 
+void LLScrollingPanelList::notifySizeChanged(S32 height)
+{
+	LLSD info;
+	info["action"] = "size_changes";
+	info["height"] = height;
+	notifyParent(info);
+}
+
+// EOF
diff --git a/indra/llui/llscrollingpanellist.h b/indra/llui/llscrollingpanellist.h
index 3abfbcbbe7800ffcb483f5e2485859508556c2df..5f1996159b3990d241cfc15a9f6066abafc4c326 100644
--- a/indra/llui/llscrollingpanellist.h
+++ b/indra/llui/llscrollingpanellist.h
@@ -61,7 +61,6 @@ class LLScrollingPanelList : public LLUICtrl
 		Params()
 		{
 			name = "scrolling_panel_list";
-			follows.flags = FOLLOWS_LEFT | FOLLOWS_BOTTOM;
 		}
 	};
 	LLScrollingPanelList(const Params& p)
@@ -86,6 +85,11 @@ class LLScrollingPanelList : public LLUICtrl
 private:
 	void				updatePanelVisiblilty();
 
+	/**
+	 * Notify parent about size change, makes sense when used inside accordion
+	 */
+	void				notifySizeChanged(S32 height);
+
 	panel_list_t		mPanelList;
 };
 
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 77caaaa425e6f079c544c29b9ea8e165a66ef280..db0f2bd6e2b3d0ed2582cb58a6ff2b6098b26183 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -324,11 +324,6 @@ LLScrollListCtrl::~LLScrollListCtrl()
 	delete mSortCallback;
 
 	std::for_each(mItemList.begin(), mItemList.end(), DeletePointer());
-
-	if( gEditMenuHandler == this )
-	{
-		gEditMenuHandler = NULL;
-	}
 }
 
 
@@ -957,14 +952,14 @@ void LLScrollListCtrl::mouseOverHighlightNthItem(S32 target_index)
 	}
 }
 
-S32	LLScrollListCtrl::selectMultiple( std::vector<LLUUID> ids )
+S32	LLScrollListCtrl::selectMultiple( uuid_vec_t ids )
 {
 	item_list::iterator iter;
 	S32 count = 0;
 	for (iter = mItemList.begin(); iter != mItemList.end(); iter++)
 	{
 		LLScrollListItem* item = *iter;
-		std::vector<LLUUID>::iterator iditr;
+		uuid_vec_t::iterator iditr;
 		for(iditr = ids.begin(); iditr != ids.end(); ++iditr)
 		{
 			if (item->getEnabled() && (item->getUUID() == (*iditr)))
diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h
index ebdc82115f8d210b7a8409b3902482a555c63202..1f0ef585dba171b3f0097272f4b98ea934cc380e 100644
--- a/indra/llui/llscrolllistctrl.h
+++ b/indra/llui/llscrolllistctrl.h
@@ -379,7 +379,7 @@ class LLScrollListCtrl : public LLUICtrl, public LLEditMenuHandler,
 	BOOL			getSortAscending() { return mSortColumns.empty() ? TRUE : mSortColumns.back().second; }
 	BOOL			hasSortOrder() const;
 
-	S32		selectMultiple( std::vector<LLUUID> ids );
+	S32		selectMultiple( uuid_vec_t ids );
 	// conceptually const, but mutates mItemList
 	void			updateSort() const;
 	// sorts a list without affecting the permanent sort order (so further list insertions can be unsorted, for example)
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 5f4b16ec9ef1a79e5c30091696c9fdc853e0e53e..e08026eaf4024766889896a7b96ec02dc91af77a 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -962,7 +962,18 @@ void LLTextBase::reshape(S32 width, S32 height, BOOL called_from_parent)
 {
 	if (width != getRect().getWidth() || height != getRect().getHeight())
 	{
+		//EXT-4288
+		//to keep consistance scrolling behaviour 
+		//when scrolling from top and from bottom...
+		bool is_scrolled_to_end = (mScroller!=NULL) && scrolledToEnd();
+		
 		LLUICtrl::reshape( width, height, called_from_parent );
+	
+		if (is_scrolled_to_end)
+		{
+			deselect();
+			endOfDoc();
+		}		
 
 		// do this first after reshape, because other things depend on
 		// up-to-date mVisibleTextRect
@@ -1047,6 +1058,13 @@ void LLTextBase::setValue(const LLSD& value )
 	setText(value.asString());
 }
 
+//virtual
+BOOL LLTextBase::canDeselect() const 
+{ 
+	return hasSelection(); 
+}
+
+
 //virtual
 void LLTextBase::deselect()
 {
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index 5b24c635577b643d5015251a8fc1977ec16ae4e4..8ed0680df9a16818c138051bf1b5be892a5908e2 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -132,6 +132,7 @@ class LLTextBase
 	/*virtual*/ LLTextViewModel* getViewModel() const;
 
 	// LLEditMenuHandler interface
+	/*virtual*/ BOOL		canDeselect() const;
 	/*virtual*/ void		deselect();
 
 	// used by LLTextSegment layout code
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 7d230f7d42a7a6746aa034deeed32304c59602e0..a1cae4bb988fe24a57ec30c1d2c43fd2a6789ccc 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -240,7 +240,6 @@ LLTextEditor::Params::Params()
 	prevalidate_callback("prevalidate_callback"),
 	embedded_items("embedded_items", false),
 	ignore_tab("ignore_tab", true),
-	handle_edit_keys_directly("handle_edit_keys_directly", false),
 	show_line_numbers("show_line_numbers", false),
 	default_color("default_color"),
     commit_on_focus_lost("commit_on_focus_lost", false),
@@ -258,7 +257,6 @@ LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) :
 	mShowLineNumbers ( p.show_line_numbers ),
 	mCommitOnFocusLost( p.commit_on_focus_lost),
 	mAllowEmbeddedItems( p.embedded_items ),
-	mHandleEditKeysDirectly( p.handle_edit_keys_directly ),
 	mMouseDownX(0),
 	mMouseDownY(0),
 	mTabsToNextField(p.ignore_tab),
@@ -305,12 +303,6 @@ LLTextEditor::~LLTextEditor()
 {
 	gFocusMgr.releaseFocusIfNeeded( this ); // calls onCommit() while LLTextEditor still valid
 
-	// Route menu back to the default
-	if( gEditMenuHandler == this )
-	{
-		gEditMenuHandler = NULL;
-	}
-
 	// Scrollbar is deleted by LLView
 	std::for_each(mUndoStack.begin(), mUndoStack.end(), DeletePointer());
 
@@ -507,21 +499,6 @@ void LLTextEditor::getSegmentsInRange(LLTextEditor::segment_vec_t& segments_out,
 	}
 }
 
-// virtual
-BOOL LLTextEditor::canDeselect() const
-{
-	return hasSelection(); 
-}
-
-
-void LLTextEditor::deselect()
-{
-	mSelectionStart = 0;
-	mSelectionEnd = 0;
-	mIsSelecting = FALSE;
-}
-
-
 BOOL LLTextEditor::selectionContainsLineBreaks()
 {
 	if (hasSelection())
@@ -668,6 +645,7 @@ void LLTextEditor::selectAll()
 	mSelectionStart = getLength();
 	mSelectionEnd = 0;
 	setCursorPos(mSelectionEnd);
+	updatePrimary();
 }
 
 BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask)
@@ -1025,7 +1003,7 @@ void LLTextEditor::removeCharOrTab()
 	}
 	else
 	{
-		reportBadKeystroke();
+		LLUI::reportBadKeystroke();
 	}
 }
 
@@ -1048,7 +1026,7 @@ void LLTextEditor::removeChar()
 	}
 	else
 	{
-		reportBadKeystroke();
+		LLUI::reportBadKeystroke();
 	}
 }
 
@@ -1198,22 +1176,6 @@ BOOL LLTextEditor::handleSelectionKey(const KEY key, const MASK mask)
 		}
 	}
 
-	if( !handled && mHandleEditKeysDirectly )
-	{
-		if( (MASK_CONTROL & mask) && ('A' == key) )
-		{
-			if( canSelectAll() )
-			{
-				selectAll();
-			}
-			else
-			{
-				reportBadKeystroke();
-			}
-			handled = TRUE;
-		}
-	}
-
 	if( handled )
 	{
 		// take selection to 'primary' clipboard
@@ -1247,6 +1209,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)
 
 		case KEY_DOWN:
 			changeLine( 1 );
+			deselect();
 			break;
 
 		case KEY_PAGE_DOWN:
@@ -1260,7 +1223,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)
 		case KEY_LEFT:
 			if( hasSelection() )
 			{
-				setCursorPos(llmin( mCursorPos - 1, mSelectionStart, mSelectionEnd ));
+				setCursorPos(llmin( mSelectionStart, mSelectionEnd ));
 			}
 			else
 			{
@@ -1270,7 +1233,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)
 				}
 				else
 				{
-					reportBadKeystroke();
+					LLUI::reportBadKeystroke();
 				}
 			}
 			break;
@@ -1278,7 +1241,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)
 		case KEY_RIGHT:
 			if( hasSelection() )
 			{
-				setCursorPos(llmax( mCursorPos + 1, mSelectionStart, mSelectionEnd ));
+				setCursorPos(llmax( mSelectionStart, mSelectionEnd ));
 			}
 			else
 			{
@@ -1288,7 +1251,7 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)
 				}
 				else
 				{
-					reportBadKeystroke();
+					LLUI::reportBadKeystroke();
 				}
 			}	
 			break;
@@ -1299,6 +1262,11 @@ BOOL LLTextEditor::handleNavigationKey(const KEY key, const MASK mask)
 		}
 	}
 	
+	if (handled)
+	{
+		deselect();
+	}
+	
 	return handled;
 }
 
@@ -1551,75 +1519,13 @@ BOOL LLTextEditor::handleControlKey(const KEY key, const MASK mask)
 	return handled;
 }
 
-BOOL LLTextEditor::handleEditKey(const KEY key, const MASK mask)
-{
-	BOOL handled = FALSE;
 
-	// Standard edit keys (Ctrl-X, Delete, etc,) are handled here instead of routed by the menu system.
-	if( KEY_DELETE == key )
-	{
-		if( canDoDelete() )
-		{
-			doDelete();
-		}
-		else
-		{
-			reportBadKeystroke();
-		}
-		handled = TRUE;
-	}
-	else
-	if( MASK_CONTROL & mask )
+BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask)	
 	{
-		if( 'C' == key )
-		{
-			if( canCopy() )
-			{
-				copy();
-			}
-			else
-			{
-				reportBadKeystroke();
-			}
-			handled = TRUE;
-		}
-		else
-		if( 'V' == key )
-		{
-			if( canPaste() )
-			{
-				paste();
-			}
-			else
-			{
-				reportBadKeystroke();
-			}
-			handled = TRUE;
-		}
-		else
-		if( 'X' == key )
-		{
-			if( canCut() )
-			{
-				cut();
-			}
-			else
-			{
-				reportBadKeystroke();
-			}
-			handled = TRUE;
-		}
-	}
-
-	return handled;
-}
-
-	
-BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask, BOOL* return_key_hit)	
-{
-	*return_key_hit = FALSE;
 	BOOL handled = TRUE;
 
+	if (mReadOnly) return FALSE;
+
 	switch( key )
 	{
 	case KEY_INSERT:
@@ -1641,7 +1547,7 @@ BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask, BOOL* return
 		}
 		else
 		{
-			reportBadKeystroke();
+			LLUI::reportBadKeystroke();
 		}
 		break;
 
@@ -1694,6 +1600,10 @@ BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask, BOOL* return
 		break;
 	}
 
+	if (handled)
+	{
+		onKeyStroke();
+	}
 	return handled;
 }
 
@@ -1714,9 +1624,6 @@ void LLTextEditor::unindentLineBeforeCloseBrace()
 BOOL LLTextEditor::handleKeyHere(KEY key, MASK mask )
 {
 	BOOL	handled = FALSE;
-	BOOL	selection_modified = FALSE;
-	BOOL	return_key_hit = FALSE;
-	BOOL	text_may_have_changed = TRUE;
 
 	// Special case for TAB.  If want to move to next field, report
 	// not handled and let the parent take care of field movement.
@@ -1724,116 +1631,24 @@ BOOL LLTextEditor::handleKeyHere(KEY key, MASK mask )
 	{
 		return FALSE;
 	}
-	/*
-	if (KEY_F10 == key)
-	{
-		LLComboBox::Params cp;
-		cp.name = "combo box";
-		cp.label = "my combo";
-		cp.rect.width = 100;
-		cp.rect.height = 20;
-		cp.items.add().label = "item 1";
-		cp.items.add().label = "item 2";
-		cp.items.add().label = "item 3";
 		
-		appendWidget(LLUICtrlFactory::create<LLComboBox>(cp), "combo", true, false);
-	}
-	if (KEY_F11 == key)
-	{
-		LLButton::Params bp;
-		bp.name = "text button";
-		bp.label = "Click me";
-		bp.rect.width = 100;
-		bp.rect.height = 20;
-
-		appendWidget(LLUICtrlFactory::create<LLButton>(bp), "button", true, false);
-	}
-	*/
-	if (mReadOnly)
+	if (mReadOnly && mScroller)
 	{
-		if(mScroller)
-		{
-			handled = mScroller->handleKeyHere( key, mask );
+		handled = (mScroller && mScroller->handleKeyHere( key, mask ))
+				|| handleSelectionKey(key, mask)
+				|| handleControlKey(key, mask);
 		}
 		else 
 		{
-			handled = handleNavigationKey( key, mask );
-		}
-
-	}
-	else
-	{
-		// handle navigation keys ourself
-		handled = handleNavigationKey( key, mask );
-	}
-
-
-	if( handled )
-	{
-		text_may_have_changed = FALSE;
-	}
-		
-	if( !handled )
-	{
-		handled = handleSelectionKey( key, mask );
-		if( handled )
-		{
-			selection_modified = TRUE;
-		}
-	}
-
-	if( !handled )
-	{
-		handled = handleControlKey( key, mask );
-		if( handled )
-		{
-			selection_modified = TRUE;
-		}
-	}
-
-	if( !handled && mHandleEditKeysDirectly )
-	{
-		handled = handleEditKey( key, mask );
-		if( handled )
-		{
-			selection_modified = TRUE;
-			text_may_have_changed = TRUE;
-		}
-	}
-
-	// Handle most keys only if the text editor is writeable.
-	if( !mReadOnly )
-	{
-		if( !handled )
-		{
-			handled = handleSpecialKey( key, mask, &return_key_hit );
-			if( handled )
-			{
-				selection_modified = TRUE;
-				text_may_have_changed = TRUE;
-			}
-		}
-
+		handled = handleNavigationKey( key, mask )
+				|| handleSelectionKey(key, mask)
+				|| handleControlKey(key, mask)
+				|| handleSpecialKey(key, mask);
 	}
 
 	if( handled )
 	{
 		resetCursorBlink();
-
-		// Most keystrokes will make the selection box go away, but not all will.
-		if( !selection_modified &&
-			KEY_SHIFT != key &&
-			KEY_CONTROL != key &&
-			KEY_ALT != key &&
-			KEY_CAPSLOCK )
-		{
-			deselect();
-		}
-
-		if(text_may_have_changed)
-		{
-			onKeyStroke();
-		}
 		needsScroll();
 	}
 
@@ -2334,7 +2149,7 @@ void LLTextEditor::getCurrentLineAndColumn( S32* line, S32* col, BOOL include_wo
 void LLTextEditor::autoIndent()
 {
 	// Count the number of spaces in the current line
-	S32 line = getLineNumFromDocIndex(mCursorPos);
+	S32 line = getLineNumFromDocIndex(mCursorPos, false);
 	S32 line_start = getLineStart(line);
 	S32 space_count = 0;
 	S32 i;
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index 71d937b2c451253a7bcd39aaf6492211fa2cecbe..9b3ab9414ce5a588f959cab897bc9e618ef1fed6 100644
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -68,7 +68,6 @@ class LLTextEditor :
 
 		Optional<bool>			embedded_items,
 								ignore_tab,
-								handle_edit_keys_directly,
 								show_line_numbers,
 								commit_on_focus_lost,
 								show_context_menu;
@@ -146,8 +145,6 @@ class LLTextEditor :
 	virtual BOOL	canDoDelete() const;
 	virtual void	selectAll();
 	virtual BOOL	canSelectAll()	const;
-	virtual void	deselect();
-	virtual BOOL	canDeselect() const;
 
 	void			selectNext(const std::string& search_text_in, BOOL case_insensitive, BOOL wrap = TRUE);
 	BOOL			replaceText(const std::string& search_text, const std::string& replace_text, BOOL case_insensitive, BOOL wrap = TRUE);
@@ -218,13 +215,10 @@ class LLTextEditor :
 	S32				indentLine( S32 pos, S32 spaces );
 	void			unindentLineBeforeCloseBrace();
 
-	void			reportBadKeystroke() { make_ui_sound("UISndBadKeystroke"); }
-
 	BOOL			handleNavigationKey(const KEY key, const MASK mask);
-	BOOL			handleSpecialKey(const KEY key, const MASK mask, BOOL* return_key_hit);
+	BOOL			handleSpecialKey(const KEY key, const MASK mask);
 	BOOL			handleSelectionKey(const KEY key, const MASK mask);
 	BOOL			handleControlKey(const KEY key, const MASK mask);
-	BOOL			handleEditKey(const KEY key, const MASK mask);
 
 	BOOL			selectionContainsLineBreaks();
 	void			deleteSelection(BOOL transient_operation);
@@ -329,10 +323,6 @@ class LLTextEditor :
 
 	LLUUID			mSourceID;
 
-	// If true, the standard edit keys (Ctrl-X, Delete, etc,) are handled here 
-	//instead of routed by the menu system
-	BOOL			mHandleEditKeysDirectly;  
-
 	LLCoordGL		mLastIMEPosition;		// Last position of the IME editor
 
 	keystroke_signal_t mKeystrokeSignal;
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index b049895526393e6a04818a03b7f00bc41981381c..f9a4ed7285dd65336db550a02862d4578c9f7534 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -1914,7 +1914,12 @@ void LLUI::clearPopups()
 	}
 }
 
-
+//static
+void LLUI::reportBadKeystroke()
+{
+	make_ui_sound("UISndBadKeystroke");
+}
+	
 //static
 // spawn_x and spawn_y are top left corner of view in screen GL coordinates
 void LLUI::positionViewNearMouse(LLView* view, S32 spawn_x, S32 spawn_y)
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 30f3623dedcd300c590fb088419cec06289f8a6a..c18262ef76b6c63dbf88105cb4abfad730c648d9 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -217,6 +217,8 @@ class LLUI
 	static void removePopup(LLView*);
 	static void clearPopups();
 
+	static void reportBadKeystroke();
+
 	// Ensures view does not overlap mouse cursor, but is inside
 	// the view's parent rectangle.  Used for tooltips, inspectors.
 	// Optionally override the view's default X/Y, which are relative to the
diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index e8e345967309ac3f6ecceba36391a0899f70c846..736de651da3a5720ba81ea6bc3f259c5ce6ba5ff 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -493,6 +493,35 @@ std::string LLUrlEntryInventory::getLabel(const std::string &url, const LLUrlLab
 	return LLURI::unescape(label.empty() ? url : label);
 }
 
+//
+// LLUrlEntryObjectIM Describes a Second Life inspector for the object Url, e.g.,
+// secondlife:///app/objectim/7bcd7864-da6b-e43f-4486-91d28a28d95b?name=Object&owner=3de548e1-57be-cfea-2b78-83ae3ad95998&slurl=Danger!%20Danger!/200/200/30/&groupowned=1
+//
+LLUrlEntryObjectIM::LLUrlEntryObjectIM()
+{
+	mPattern = boost::regex("secondlife:///app/objectim/[\\da-f-]+\?.*",
+							boost::regex::perl|boost::regex::icase);
+	mMenuName = "menu_url_objectim.xml";
+}
+
+std::string LLUrlEntryObjectIM::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
+{
+	LLURI uri(url);
+	LLSD query_map = uri.queryMap();
+	if (query_map.has("name"))
+		return query_map["name"];
+	return unescapeUrl(url);
+}
+
+std::string LLUrlEntryObjectIM::getLocation(const std::string &url) const
+{
+	LLURI uri(url);
+	LLSD query_map = uri.queryMap();
+	if (query_map.has("slurl"))
+		return query_map["slurl"];
+	return LLUrlEntryBase::getLocation(url);
+}
+
 ///
 /// LLUrlEntryParcel Describes a Second Life parcel Url, e.g.,
 /// secondlife:///app/parcel/0000060e-4b39-e00b-d0c3-d98b1934e3a8/about
@@ -703,7 +732,7 @@ std::string LLUrlEntryWorldMap::getLabel(const std::string &url, const LLUrlLabe
 	}
 
 	const std::string label = LLTrans::getString("SLurlLabelShowOnMap");
-	std::string location = path_array[2];
+	std::string location = unescapeUrl(path_array[2]);
 	std::string x = (path_parts > 3) ? path_array[3] : "128";
 	std::string y = (path_parts > 4) ? path_array[4] : "128";
 	std::string z = (path_parts > 5) ? path_array[5] : "0";
diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h
index 84d09687798ef8bed89e66092844d710d1662ea9..29575d752ced36fca7fa35713084028004b41d1d 100644
--- a/indra/llui/llurlentry.h
+++ b/indra/llui/llurlentry.h
@@ -201,6 +201,18 @@ class LLUrlEntryInventory : public LLUrlEntryBase
 private:
 };
 
+///
+/// LLUrlEntryObjectIM Describes a Second Life inspector for the object Url, e.g.,
+/// secondlife:///app/objectim/7bcd7864-da6b-e43f-4486-91d28a28d95b?name=Object&owner=3de548e1-57be-cfea-2b78-83ae3ad95998&slurl=Danger!%20Danger!/200/200/30/&groupowned=1
+///
+class LLUrlEntryObjectIM : public LLUrlEntryBase
+{
+public:
+	LLUrlEntryObjectIM();
+	/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb);
+	/*virtual*/ std::string getLocation(const std::string &url) const;
+private:
+};
 
 ///
 /// LLUrlEntryParcel Describes a Second Life parcel Url, e.g.,
diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp
index faa02e19040e203a4bb1fcd6ffcb417ccc827330..0a70aa586a2cc40135232a4d9e992f27c3829ffe 100644
--- a/indra/llui/llurlregistry.cpp
+++ b/indra/llui/llurlregistry.cpp
@@ -53,8 +53,10 @@ LLUrlRegistry::LLUrlRegistry()
 	registerUrl(new LLUrlEntryParcel());
 	registerUrl(new LLUrlEntryTeleport());
 	registerUrl(new LLUrlEntryWorldMap());
+	registerUrl(new LLUrlEntryObjectIM());
 	registerUrl(new LLUrlEntryPlace());
 	registerUrl(new LLUrlEntryInventory());
+	registerUrl(new LLUrlEntryObjectIM());
 	//LLUrlEntrySL and LLUrlEntrySLLabel have more common pattern, 
 	//so it should be registered in the end of list
 	registerUrl(new LLUrlEntrySL());
diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h
index 55b221e7161fe6a6682ded12a40b63ab9fe341d6..52132c38d36bd21b20edfb06a29f634e8aee542e 100644
--- a/indra/llwindow/llwindow.h
+++ b/indra/llwindow/llwindow.h
@@ -160,7 +160,7 @@ class LLWindow
 	virtual void setLanguageTextInput( const LLCoordGL & pos ) {};
 	virtual void updateLanguageTextInputArea() {}
 	virtual void interruptLanguageTextInput() {}
-	virtual void spawnWebBrowser(const std::string& escaped_url) {};
+	virtual void spawnWebBrowser(const std::string& escaped_url, bool async) {};
 
 	static std::vector<std::string> getDynamicFallbackFontList();
 	
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index 022b97f481fa1979f3c2349284f3ec4071c1a68c..7026a3f7a634602e35bcd8f0c3006b3a09bcc492 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -3178,7 +3178,7 @@ S32 OSMessageBoxMacOSX(const std::string& text, const std::string& caption, U32
 
 // Open a URL with the user's default web browser.
 // Must begin with protocol identifier.
-void LLWindowMacOSX::spawnWebBrowser(const std::string& escaped_url)
+void LLWindowMacOSX::spawnWebBrowser(const std::string& escaped_url, bool async)
 {
 	bool found = false;
 	S32 i;
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index 7c6b32402960b161d7ca22bc8857b052b0f931c5..5ac74bb00456551c5260e14e880c190b09323084 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -116,7 +116,7 @@ class LLWindowMacOSX : public LLWindow
 	
 	/*virtual*/ void allowLanguageTextInput(LLPreeditor *preeditor, BOOL b);
 	/*virtual*/ void interruptLanguageTextInput();
-	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url);
+	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url, bool async);
 
 	static std::vector<std::string> getDynamicFallbackFontList();
 
diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index 1f705f9e60b156cfde44c4d1f750bad39c22f18b..399d284402a8d9daef5c05a687ccbbb657485e76 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -2074,6 +2074,9 @@ void LLWindowSDL::initCursors()
 	mSDLCursors[UI_CURSOR_TOOLPAUSE] = makeSDLCursorFromBMP("toolpause.BMP",0,0);
 	mSDLCursors[UI_CURSOR_TOOLMEDIAOPEN] = makeSDLCursorFromBMP("toolmediaopen.BMP",0,0);
 	mSDLCursors[UI_CURSOR_PIPETTE] = makeSDLCursorFromBMP("lltoolpipette.BMP",2,28);
+	mSDLCursors[UI_CURSOR_TOOLSIT] = makeSDLCursorFromBMP("toolsit.BMP",20,15);
+	mSDLCursors[UI_CURSOR_TOOLBUY] = makeSDLCursorFromBMP("toolbuy.BMP",20,15);
+	mSDLCursors[UI_CURSOR_TOOLOPEN] = makeSDLCursorFromBMP("toolopen.BMP",20,15);
 
 	if (getenv("LL_ATI_MOUSE_CURSOR_BUG") != NULL) {
 		llinfos << "Disabling cursor updating due to LL_ATI_MOUSE_CURSOR_BUG" << llendl;
@@ -2465,7 +2468,7 @@ void exec_cmd(const std::string& cmd, const std::string& arg)
 
 // Open a URL with the user's default web browser.
 // Must begin with protocol identifier.
-void LLWindowSDL::spawnWebBrowser(const std::string& escaped_url)
+void LLWindowSDL::spawnWebBrowser(const std::string& escaped_url, bool async)
 {
 	llinfos << "spawn_web_browser: " << escaped_url << llendl;
 	
@@ -2543,6 +2546,7 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()
 	// Use libfontconfig to find us a nice ordered list of fallback fonts
 	// specific to this system.
 	std::string final_fallback("/usr/share/fonts/truetype/kochi/kochi-gothic.ttf");
+	const int max_font_count_cutoff = 40; // fonts are expensive in the current system, don't enumerate an arbitrary number of them
 	// Our 'ideal' font properties which define the sorting results.
 	// slant=0 means Roman, index=0 means the first face in a font file
 	// (the one we actually use), weight=80 means medium weight,
@@ -2558,7 +2562,6 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()
 	std::vector<std::string> rtns;
 	FcFontSet *fs = NULL;
 	FcPattern *sortpat = NULL;
-	int font_count = 0;
 
 	llinfos << "Getting system font list from FontConfig..." << llendl;
 
@@ -2602,12 +2605,13 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()
 		FcPatternDestroy(sortpat);
 	}
 
+	int found_font_count = 0;
 	if (fs)
 	{
 		// Get the full pathnames to the fonts, where available,
 		// which is what we really want.
-		int i;
-		for (i=0; i<fs->nfont; ++i)
+		found_font_count = fs->nfont;
+		for (int i=0; i<fs->nfont; ++i)
 		{
 			FcChar8 *filename;
 			if (FcResultMatch == FcPatternGetString(fs->fonts[i],
@@ -2616,7 +2620,8 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()
 			    && filename)
 			{
 				rtns.push_back(std::string((const char*)filename));
-				++font_count;
+				if (rtns.size() >= max_font_count_cutoff)
+					break; // hit limit
 			}
 		}
 		FcFontSetDestroy (fs);
@@ -2629,7 +2634,7 @@ std::vector<std::string> LLWindowSDL::getDynamicFallbackFontList()
 	{
 		lldebugs << "  file: " << *it << llendl;
 	}
-	llinfos << "Using " << font_count << " system font(s)." << llendl;
+	llinfos << "Using " << rtns.size() << "/" << found_font_count << " system fonts." << llendl;
 
 	rtns.push_back(final_fallback);
 	return rtns;
diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h
index e6bdd46a77f204fd232da297663fde2985ee1b71..8e65a2f3245c39990fb65054ce193d65184baf8d 100644
--- a/indra/llwindow/llwindowsdl.h
+++ b/indra/llwindow/llwindowsdl.h
@@ -125,7 +125,7 @@ class LLWindowSDL : public LLWindow
 	/*virtual*/ void *getPlatformWindow();
 	/*virtual*/ void bringToFront();
 
-	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url);
+	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url, bool async);
 	
 	static std::vector<std::string> getDynamicFallbackFontList();
 
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 8df9dad58114d3641c873efc178a8ae73091754b..95c1980dd6902e127887eea2522fb354fa84791d 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -2959,7 +2959,7 @@ S32 OSMessageBoxWin32(const std::string& text, const std::string& caption, U32 t
 }
 
 
-void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url )
+void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url, bool async)
 {
 	bool found = false;
 	S32 i;
@@ -2989,84 +2989,16 @@ void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url )
 
 	// let the OS decide what to use to open the URL
 	SHELLEXECUTEINFO sei = { sizeof( sei ) };
-	sei.fMask = SEE_MASK_FLAG_DDEWAIT;
+	// NOTE: this assumes that SL will stick around long enough to complete the DDE message exchange
+	// necessary for ShellExecuteEx to complete
+	if (async)
+	{
+		sei.fMask = SEE_MASK_ASYNCOK;
+	}
 	sei.nShow = SW_SHOWNORMAL;
 	sei.lpVerb = L"open";
 	sei.lpFile = url_utf16.c_str();
 	ShellExecuteEx( &sei );
-
-	//// TODO: LEAVING OLD CODE HERE SO I DON'T BONE OTHER MERGES
-	//// DELETE THIS ONCE THE MERGES ARE DONE
-
-	// Figure out the user's default web browser
-	// HKEY_CLASSES_ROOT\http\shell\open\command
-	/*
-	std::string reg_path_str = gURLProtocolWhitelistHandler[i] + "\\shell\\open\\command";
-	WCHAR reg_path_wstr[256];
-	mbstowcs( reg_path_wstr, reg_path_str.c_str(), LL_ARRAY_SIZE(reg_path_wstr) );
-
-	HKEY key;
-	WCHAR browser_open_wstr[1024];
-	DWORD buffer_length = 1024;
-	RegOpenKeyEx(HKEY_CLASSES_ROOT, reg_path_wstr, 0, KEY_QUERY_VALUE, &key);
-	RegQueryValueEx(key, NULL, NULL, NULL, (LPBYTE)browser_open_wstr, &buffer_length);
-	RegCloseKey(key);
-
-	// Convert to STL string
-	LLWString browser_open_wstring = utf16str_to_wstring(browser_open_wstr);
-
-	if (browser_open_wstring.length() < 2)
-	{
-		LL_WARNS("Window") << "Invalid browser executable in registry " << browser_open_wstring << LL_ENDL;
-		return;
-	}
-
-	// Extract the process that's supposed to be launched
-	LLWString browser_executable;
-	if (browser_open_wstring[0] == '"')
-	{
-		// executable is quoted, find the matching quote
-		size_t quote_pos = browser_open_wstring.find('"', 1);
-		// copy out the string including both quotes
-		browser_executable = browser_open_wstring.substr(0, quote_pos+1);
-	}
-	else
-	{
-		// executable not quoted, find a space
-		size_t space_pos = browser_open_wstring.find(' ', 1);
-		browser_executable = browser_open_wstring.substr(0, space_pos);
-	}
-
-	LL_DEBUGS("Window") << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << LL_ENDL;
-	LL_INFOS("Window") << "Browser executable: " << wstring_to_utf8str(browser_executable) << LL_ENDL;
-
-	// Convert URL to wide string for Windows API
-	// Assume URL is UTF8, as can come from scripts
-	LLWString url_wstring = utf8str_to_wstring(escaped_url);
-	llutf16string url_utf16 = wstring_to_utf16str(url_wstring);
-
-	// Convert executable and path to wide string for Windows API
-	llutf16string browser_exec_utf16 = wstring_to_utf16str(browser_executable);
-
-	// ShellExecute returns HINSTANCE for backwards compatiblity.
-	// MS docs say to cast to int and compare to 32.
-	HWND our_window = NULL;
-	LPCWSTR directory_wstr = NULL;
-	int retval = (int) ShellExecute(our_window, 	// Flawfinder: ignore
-									L"open", 
-									browser_exec_utf16.c_str(), 
-									url_utf16.c_str(), 
-									directory_wstr,
-									SW_SHOWNORMAL);
-	if (retval > 32)
-	{
-		LL_DEBUGS("Window") << "load_url success with " << retval << LL_ENDL;
-	}
-	else
-	{
-		LL_INFOS("Window") << "load_url failure with " << retval << LL_ENDL;
-	}
-	*/
 }
 
 /*
diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h
index 9d5773577202a06547903ac686cb112ebf1b2ed3..d4a3446515ef09b8fc34f9f01b16a5c017606666 100644
--- a/indra/llwindow/llwindowwin32.h
+++ b/indra/llwindow/llwindowwin32.h
@@ -114,7 +114,7 @@ class LLWindowWin32 : public LLWindow
 	/*virtual*/ void setLanguageTextInput( const LLCoordGL & pos );
 	/*virtual*/ void updateLanguageTextInputArea();
 	/*virtual*/ void interruptLanguageTextInput();
-	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url);
+	/*virtual*/ void spawnWebBrowser(const std::string& escaped_url, bool async);
 
 	LLWindowCallbacks::DragNDropResult completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, LLWindowCallbacks::DragNDropAction action, const std::string url );
 
diff --git a/indra/lscript/lscript_execute/lscript_execute.cpp b/indra/lscript/lscript_execute/lscript_execute.cpp
index e849fa9a6e8532586fc8d70913b157e62917be7c..8de54aeda54ba7ce8cf0ebbc1da793faf77a3d6c 100644
--- a/indra/lscript/lscript_execute/lscript_execute.cpp
+++ b/indra/lscript/lscript_execute/lscript_execute.cpp
@@ -520,7 +520,7 @@ void LLScriptExecuteLSL2::callNextQueuedEventHandler(U64 event_register, const L
 		}
 		else
 		{
-			llwarns << "Shit, somehow got an event that we're not registered for!" << llendl;
+			llwarns << "Somehow got an event that we're not registered for!" << llendl;
 		}
 		delete eventdata;
 	}
diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp
index 0462fce236273bf22fa727c5575a904d15b1189c..436e077e9b65c695035a334bf3c104859485d8de 100644
--- a/indra/media_plugins/webkit/media_plugin_webkit.cpp
+++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp
@@ -89,6 +89,7 @@ class MediaPluginWebKit :
 
 	std::string mProfileDir;
 	std::string mHostLanguage;
+	std::string mUserAgent;
 	bool mCookiesEnabled;
 	bool mJavascriptEnabled;
 	bool mPluginsEnabled;
@@ -300,7 +301,7 @@ class MediaPluginWebKit :
 		LLQtWebKit::getInstance()->addObserver( mBrowserWindowId, this );
 
 		// append details to agent string
-		LLQtWebKit::getInstance()->setBrowserAgentId( "LLPluginMedia Web Browser" );
+		LLQtWebKit::getInstance()->setBrowserAgentId( mUserAgent );
 
 #if !LL_QTWEBKIT_USES_PIXMAPS
 		// don't flip bitmap
@@ -507,6 +508,19 @@ class MediaPluginWebKit :
 		sendMessage(message);
 	}
 	
+
+	////////////////////////////////////////////////////////////////////////////////
+	// virtual
+	void onCookieChanged(const EventType& event)
+	{
+		LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "cookie_set");
+		message.setValue("cookie", event.getStringValue());
+		// These could be passed through as well, but aren't really needed.
+//		message.setValue("uri", event.getEventUri());
+//		message.setValueBoolean("dead", (event.getIntValue() != 0))
+		sendMessage(message);
+	}
+	
 	LLQtWebKit::EKeyboardModifier decodeModifiers(std::string &modifiers)
 	{
 		int result = 0;
@@ -675,6 +689,7 @@ MediaPluginWebKit::MediaPluginWebKit(LLPluginInstance::sendMessageFunction host_
 	mHostLanguage = "en";		// default to english
 	mJavascriptEnabled = true;	// default to on
 	mPluginsEnabled = true;		// default to on
+	mUserAgent = "LLPluginMedia Web Browser";
 }
 
 MediaPluginWebKit::~MediaPluginWebKit()
@@ -1051,6 +1066,10 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
 				mJavascriptEnabled = message_in.getValueBoolean("enable");
 				//LLQtWebKit::getInstance()->enableJavascript( mJavascriptEnabled );
 			}
+			else if(message_name == "set_cookies")
+			{
+				LLQtWebKit::getInstance()->setCookies(message_in.getValue("cookies"));
+			}
 			else if(message_name == "proxy_setup")
 			{
 				bool val = message_in.getValueBoolean("enable");
@@ -1086,8 +1105,8 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
 			}
 			else if(message_name == "set_user_agent")
 			{
-				std::string user_agent = message_in.getValue("user_agent");
-				LLQtWebKit::getInstance()->setBrowserAgentId( user_agent );
+				mUserAgent = message_in.getValue("user_agent");
+				LLQtWebKit::getInstance()->setBrowserAgentId( mUserAgent );
 			}
 			else if(message_name == "init_history")
 			{
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index f45237a73ca1c92350708ef15ee076321051ab96..47fde08a9de671c2a511d154b2f26f6def00808a 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -74,6 +74,7 @@ set(viewer_SOURCE_FILES
     llagentpilot.cpp
     llagentui.cpp
     llagentwearables.cpp
+    llagentwearablesfetch.cpp
     llanimstatelabels.cpp
     llappearancemgr.cpp
     llappviewer.cpp
@@ -253,6 +254,7 @@ set(viewer_SOURCE_FILES
     llinventoryfilter.cpp
     llinventoryfunctions.cpp
     llinventorymodel.cpp
+    llinventorymodelbackgroundfetch.cpp
     llinventoryobserver.cpp
     llinventorypanel.cpp
     lljoystickbutton.cpp
@@ -317,7 +319,6 @@ set(viewer_SOURCE_FILES
     llpanellandmedia.cpp
     llpanellogin.cpp
     llpanelloginlistener.cpp
-    llpanellookinfo.cpp
     llpanelmaininventory.cpp
     llpanelmediasettingsgeneral.cpp
     llpanelmediasettingspermissions.cpp
@@ -326,6 +327,7 @@ set(viewer_SOURCE_FILES
     llpanelnearbymedia.cpp
     llpanelobject.cpp
     llpanelobjectinventory.cpp
+    llpaneloutfitedit.cpp
     llpaneloutfitsinventory.cpp
     llpanelpeople.cpp
     llpanelpeoplemenus.cpp
@@ -573,6 +575,7 @@ set(viewer_HEADER_FILES
     llagentpilot.h
     llagentui.h
     llagentwearables.h
+    llagentwearablesfetch.h
     llanimstatelabels.h
     llappearance.h
     llappearancemgr.h
@@ -754,6 +757,7 @@ set(viewer_HEADER_FILES
     llinventoryfilter.h
     llinventoryfunctions.h
     llinventorymodel.h
+    llinventorymodelbackgroundfetch.h
     llinventoryobserver.h
     llinventorypanel.h
     lljoystickbutton.h
@@ -814,7 +818,6 @@ set(viewer_HEADER_FILES
     llpanellandmedia.h
     llpanellogin.h
     llpanelloginlistener.h
-    llpanellookinfo.h
     llpanelmaininventory.h
     llpanelmediasettingsgeneral.h
     llpanelmediasettingspermissions.h
@@ -823,6 +826,7 @@ set(viewer_HEADER_FILES
     llpanelnearbymedia.h
     llpanelobject.h
     llpanelobjectinventory.h
+    llpaneloutfitedit.h
     llpaneloutfitsinventory.h
     llpanelpeople.h
     llpanelpeoplemenus.h
diff --git a/indra/newview/English.lproj/InfoPlist.strings b/indra/newview/English.lproj/InfoPlist.strings
index 879408d6e4f38567bae0d88ce2647706acd9a398..02c3dfc6e0c16d31b7079ce4cccbfa585f9e7dbc 100644
--- a/indra/newview/English.lproj/InfoPlist.strings
+++ b/indra/newview/English.lproj/InfoPlist.strings
@@ -2,6 +2,6 @@
 
 CFBundleName = "Second Life";
 
-CFBundleShortVersionString = "Second Life version 2.0.0.200030";
-CFBundleGetInfoString = "Second Life version 2.0.0.200030, Copyright 2004-2009 Linden Research, Inc.";
+CFBundleShortVersionString = "Second Life version 2.0.0.203110";
+CFBundleGetInfoString = "Second Life version 2.0.0.203110, Copyright 2004-2009 Linden Research, Inc.";
 
diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-SecondLife.plist
index 38ebb22b8487637bb55c4d2e9dd3680f666a6b22..4cb01a0f338759a56d18093eadfb9a75691592b3 100644
--- a/indra/newview/Info-SecondLife.plist
+++ b/indra/newview/Info-SecondLife.plist
@@ -32,7 +32,7 @@
 		</dict>
 	</array>
 	<key>CFBundleVersion</key>
-	<string>2.0.0.200030</string>
+	<string>2.0.0.203110</string>
 	<key>CSResourcesFileMapped</key>
 	<true/>
 </dict>
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 9f474a39bc264341ef91f31fe6aec22718f7b720..8b66cce8a3e8e71bb4552c8e4c7689d062257b95 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2564,6 +2564,17 @@
       <key>Value</key>
       <real>0.10000000149</real>
     </map>
+    <key>DragAndDropDistanceThreshold</key>
+    <map>
+      <key>Comment</key>
+      <string>Number of pixels that mouse should move before triggering drag and drop mode</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>S32</string>
+      <key>Value</key>
+      <integer>3</integer>
+    </map>
     <key>DropShadowButton</key>
     <map>
       <key>Comment</key>
@@ -4609,7 +4620,7 @@
     <key>Type</key>
     <string>Boolean</string>
     <key>Value</key>
-    <integer>1</integer>
+    <integer>0</integer>
   </map>
   <key>MediaShowOutsideParcel</key>
   <map>
@@ -8117,13 +8128,13 @@
     <key>NearbyPeopleSortOrder</key>
     <map>
       <key>Comment</key>
-      <string>Specifies sort order for nearby people (0 = by name, 2 = by most recent)</string>
+      <string>Specifies sort order for nearby people (0 = by name, 3 = by distance, 4 = by most recent)</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
       <string>U32</string>
       <key>Value</key>
-      <integer>2</integer>
+      <integer>4</integer>
     </map>
     <key>RecentPeopleSortOrder</key>
     <map>
@@ -8653,17 +8664,6 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
-    <key>SmallAvatarNames</key>
-    <map>
-      <key>Comment</key>
-      <string>Display avatar name text in smaller font</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
     <key>SnapEnabled</key>
     <map>
       <key>Comment</key>
@@ -10369,7 +10369,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>1</integer>
+      <integer>0</integer>
     </map>
     <key>VivoxDebugLevel</key>
     <map>
diff --git a/indra/newview/installers/darwin/release-dmg/_DS_Store b/indra/newview/installers/darwin/release-dmg/_DS_Store
index 495ec37f5347a38e228c305410c683bbf4166765..8f6c25c2f4406537ae70bce453c4d742649f8c33 100644
Binary files a/indra/newview/installers/darwin/release-dmg/_DS_Store and b/indra/newview/installers/darwin/release-dmg/_DS_Store differ
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 7a34112807b68b270f71244d46380d12adfe5b79..ec465358faaeadfde36ca23f4deaf0439afb6704 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -44,7 +44,6 @@
 #include "llcallingcard.h"
 #include "llchannelmanager.h"
 #include "llconsole.h"
-//#include "llfirstuse.h"
 #include "llfloatercamera.h"
 #include "llfloatercustomize.h"
 #include "llfloaterreg.h"
@@ -90,41 +89,18 @@ const BOOL ANIMATE = TRUE;
 const U8 AGENT_STATE_TYPING =	0x04;
 const U8 AGENT_STATE_EDITING =  0x10;
 
-//drone wandering constants
-const F32 MAX_WANDER_TIME = 20.f;						// seconds
-const F32 MAX_HEADING_HALF_ERROR = 0.2f;				// radians
-const F32 WANDER_MAX_SLEW_RATE = 2.f * DEG_TO_RAD;		// radians / frame
-const F32 WANDER_TARGET_MIN_DISTANCE = 10.f;			// meters
-
 // Autopilot constants
-const F32 AUTOPILOT_HEADING_HALF_ERROR = 10.f * DEG_TO_RAD;	// radians
-const F32 AUTOPILOT_MAX_SLEW_RATE = 1.f * DEG_TO_RAD;		// radians / frame
-const F32 AUTOPILOT_STOP_DISTANCE = 2.f;					// meters
 const F32 AUTOPILOT_HEIGHT_ADJUST_DISTANCE = 8.f;			// meters
 const F32 AUTOPILOT_MIN_TARGET_HEIGHT_OFF_GROUND = 1.f;	// meters
 const F32 AUTOPILOT_MAX_TIME_NO_PROGRESS = 1.5f;		// seconds
 
-// face editing constants
-const LLVector3d FACE_EDIT_CAMERA_OFFSET(0.4f, -0.05f, 0.07f);
-const LLVector3d FACE_EDIT_TARGET_OFFSET(0.f, 0.f, 0.05f);
-
-const F32 METERS_PER_WHEEL_CLICK = 1.f;
-
-const F32 MAX_TIME_DELTA = 1.f;
+const F32 MAX_VELOCITY_AUTO_LAND_SQUARED = 4.f * 4.f;
+const F64 CHAT_AGE_FAST_RATE = 3.0;
 
 // fidget constants
 const F32 MIN_FIDGET_TIME = 8.f; // seconds
 const F32 MAX_FIDGET_TIME = 20.f; // seconds
 
-const S32 MAX_NUM_CHAT_POSITIONS = 10;
-
-const F32 MAX_VELOCITY_AUTO_LAND_SQUARED = 4.f * 4.f;
-
-const F32 MAX_FOCUS_OFFSET = 20.f;
-
-const F32 MIN_RADIUS_ALPHA_SIZZLE = 0.5f;
-
-const F64 CHAT_AGE_FAST_RATE = 3.0;
 
 // The agent instance.
 LLAgent gAgent;
@@ -159,11 +135,11 @@ bool handleSlowMotionAnimation(const LLSD& newvalue)
 {
 	if (newvalue.asBoolean())
 	{
-		gAgent.getAvatarObject()->setAnimTimeFactor(0.2f);
+		gAgentAvatarp->setAnimTimeFactor(0.2f);
 	}
 	else
 	{
-		gAgent.getAvatarObject()->setAnimTimeFactor(1.0f);
+		gAgentAvatarp->setAnimTimeFactor(1.0f);
 	}
 	return true;
 }
@@ -207,8 +183,6 @@ LLAgent::LLAgent() :
 	mDistanceTraveled(0.F),
 	mLastPositionGlobal(LLVector3d::zero),
 
-	mAvatarObject(NULL),
-
 	mRenderState(0),
 	mTypingTimer(),
 
@@ -220,13 +194,6 @@ LLAgent::LLAgent() :
 
 	mIsBusy(FALSE),
 
-	mAtKey(0), // Either 1, 0, or -1... indicates that movement-key is pressed
-	mWalkKey(0), // like AtKey, but causes less forward thrust
-	mLeftKey(0),
-	mUpKey(0),
-	mYawKey(0.f),
-	mPitchKey(0.f),
-
 	mControlFlags(0x00000000),
 	mbFlagsDirty(FALSE),
 	mbFlagsNeedReset(FALSE),
@@ -294,7 +261,6 @@ void LLAgent::init()
 //-----------------------------------------------------------------------------
 void LLAgent::cleanup()
 {
-	mAvatarObject = NULL;
 	mRegionp = NULL;
 }
 
@@ -315,7 +281,7 @@ LLAgent::~LLAgent()
 //-----------------------------------------------------------------------------
 void LLAgent::onAppFocusGained()
 {
-	if (CAMERA_MODE_MOUSELOOK == gAgentCamera.mCameraMode)
+	if (CAMERA_MODE_MOUSELOOK == gAgentCamera.getCameraMode())
 	{
 		gAgentCamera.changeCameraToDefault();
 		LLToolMgr::getInstance()->clearSavedTool();
@@ -325,12 +291,12 @@ void LLAgent::onAppFocusGained()
 
 void LLAgent::ageChat()
 {
-	if (mAvatarObject.notNull())
+	if (isAgentAvatarValid())
 	{
 		// get amount of time since I last chatted
-		F64 elapsed_time = (F64)mAvatarObject->mChatTimer.getElapsedTimeF32();
+		F64 elapsed_time = (F64)gAgentAvatarp->mChatTimer.getElapsedTimeF32();
 		// add in frame time * 3 (so it ages 4x)
-		mAvatarObject->mChatTimer.setAge(elapsed_time + (F64)gFrameDTClamped * (CHAT_AGE_FAST_RATE - 1.0));
+		gAgentAvatarp->mChatTimer.setAge(elapsed_time + (F64)gFrameDTClamped * (CHAT_AGE_FAST_RATE - 1.0));
 	}
 }
 
@@ -342,7 +308,7 @@ void LLAgent::moveAt(S32 direction, bool reset)
 	// age chat timer so it fades more quickly when you are intentionally moving
 	ageChat();
 
-	setKey(direction, mAtKey);
+	gAgentCamera.setAtKey(LLAgentCamera::directionToKey(direction));
 
 	if (direction > 0)
 	{
@@ -367,7 +333,7 @@ void LLAgent::moveAtNudge(S32 direction)
 	// age chat timer so it fades more quickly when you are intentionally moving
 	ageChat();
 
-	setKey(direction, mWalkKey);
+	gAgentCamera.setWalkKey(LLAgentCamera::directionToKey(direction));
 
 	if (direction > 0)
 	{
@@ -389,7 +355,7 @@ void LLAgent::moveLeft(S32 direction)
 	// age chat timer so it fades more quickly when you are intentionally moving
 	ageChat();
 
-	setKey(direction, mLeftKey);
+	gAgentCamera.setLeftKey(LLAgentCamera::directionToKey(direction));
 
 	if (direction > 0)
 	{
@@ -411,7 +377,7 @@ void LLAgent::moveLeftNudge(S32 direction)
 	// age chat timer so it fades more quickly when you are intentionally moving
 	ageChat();
 
-	setKey(direction, mLeftKey);
+	gAgentCamera.setLeftKey(LLAgentCamera::directionToKey(direction));
 
 	if (direction > 0)
 	{
@@ -433,7 +399,7 @@ void LLAgent::moveUp(S32 direction)
 	// age chat timer so it fades more quickly when you are intentionally moving
 	ageChat();
 
-	setKey(direction, mUpKey);
+	gAgentCamera.setUpKey(LLAgentCamera::directionToKey(direction));
 
 	if (direction > 0)
 	{
@@ -452,7 +418,7 @@ void LLAgent::moveUp(S32 direction)
 //-----------------------------------------------------------------------------
 void LLAgent::moveYaw(F32 mag, bool reset_view)
 {
-	mYawKey = mag;
+	gAgentCamera.setYawKey(mag);
 
 	if (mag > 0)
 	{
@@ -474,7 +440,7 @@ void LLAgent::moveYaw(F32 mag, bool reset_view)
 //-----------------------------------------------------------------------------
 void LLAgent::movePitch(F32 mag)
 {
-	mPitchKey = mag;
+	gAgentCamera.setPitchKey(mag);
 
 	if (mag > 0)
 	{
@@ -517,20 +483,20 @@ BOOL LLAgent::getFlying() const
 //-----------------------------------------------------------------------------
 void LLAgent::setFlying(BOOL fly)
 {
-	if (mAvatarObject.notNull())
+	if (isAgentAvatarValid())
 	{
 		// *HACK: Don't allow to start the flying mode if we got ANIM_AGENT_STANDUP signal
 		// because in this case we won't get a signal to start avatar flying animation and
 		// it will be walking with flying mode "ON" indication. However we allow to switch
 		// the flying mode off if we get ANIM_AGENT_STANDUP signal. See process_avatar_animation().
 		// See EXT-2781.
-		if(fly && mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_STANDUP) != mAvatarObject->mSignaledAnimations.end())
+		if(fly && gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_STANDUP) != gAgentAvatarp->mSignaledAnimations.end())
 		{
 			return;
 		}
 
 		// don't allow taking off while sitting
-		if (fly && mAvatarObject->isSitting())
+		if (fly && gAgentAvatarp->isSitting())
 		{
 			return;
 		}
@@ -583,9 +549,9 @@ void LLAgent::toggleFlying()
 bool LLAgent::enableFlying()
 {
 	BOOL sitting = FALSE;
-	if (gAgent.getAvatarObject())
+	if (isAgentAvatarValid())
 	{
-		sitting = gAgent.getAvatarObject()->isSitting();
+		sitting = gAgentAvatarp->isSitting();
 	}
 	return !sitting;
 }
@@ -755,9 +721,9 @@ void LLAgent::sendReliableMessage()
 //-----------------------------------------------------------------------------
 LLVector3 LLAgent::getVelocity() const
 {
-	if (mAvatarObject.notNull())
+	if (isAgentAvatarValid())
 	{
-		return mAvatarObject->getVelocity();
+		return gAgentAvatarp->getVelocity();
 	}
 	else
 	{
@@ -776,13 +742,13 @@ void LLAgent::setPositionAgent(const LLVector3 &pos_agent)
 		llerrs << "setPositionAgent is not a number" << llendl;
 	}
 
-	if (mAvatarObject.notNull() && mAvatarObject->getParent())
+	if (isAgentAvatarValid() && gAgentAvatarp->getParent())
 	{
 		LLVector3 pos_agent_sitting;
 		LLVector3d pos_agent_d;
-		LLViewerObject *parent = (LLViewerObject*)mAvatarObject->getParent();
+		LLViewerObject *parent = (LLViewerObject*)gAgentAvatarp->getParent();
 
-		pos_agent_sitting = mAvatarObject->getPosition() * parent->getRotation() + parent->getPositionAgent();
+		pos_agent_sitting = gAgentAvatarp->getPosition() * parent->getRotation() + parent->getPositionAgent();
 		pos_agent_d.setVec(pos_agent_sitting);
 
 		mFrameAgent.setOrigin(pos_agent_sitting);
@@ -803,9 +769,9 @@ void LLAgent::setPositionAgent(const LLVector3 &pos_agent)
 //-----------------------------------------------------------------------------
 const LLVector3d &LLAgent::getPositionGlobal() const
 {
-	if (mAvatarObject.notNull() && !mAvatarObject->mDrawable.isNull())
+	if (isAgentAvatarValid() && !gAgentAvatarp->mDrawable.isNull())
 	{
-		mPositionGlobal = getPosGlobalFromAgent(mAvatarObject->getRenderPosition());
+		mPositionGlobal = getPosGlobalFromAgent(gAgentAvatarp->getRenderPosition());
 	}
 	else
 	{
@@ -820,9 +786,9 @@ const LLVector3d &LLAgent::getPositionGlobal() const
 //-----------------------------------------------------------------------------
 const LLVector3 &LLAgent::getPositionAgent()
 {
-	if(mAvatarObject.notNull() && !mAvatarObject->mDrawable.isNull())
+	if (isAgentAvatarValid() && !gAgentAvatarp->mDrawable.isNull())
 	{
-		mFrameAgent.setOrigin(mAvatarObject->getRenderPosition());	
+		mFrameAgent.setOrigin(gAgentAvatarp->getRenderPosition());	
 	}
 
 	return mFrameAgent.getOrigin();
@@ -948,21 +914,21 @@ LLVector3 LLAgent::getReferenceUpVector()
 {
 	// this vector is in the coordinate frame of the avatar's parent object, or the world if none
 	LLVector3 up_vector = LLVector3::z_axis;
-	if (mAvatarObject.notNull() && 
-		mAvatarObject->getParent() &&
-		mAvatarObject->mDrawable.notNull())
+	if (isAgentAvatarValid() && 
+		gAgentAvatarp->getParent() &&
+		gAgentAvatarp->mDrawable.notNull())
 	{
-		U32 camera_mode = gAgentCamera.mCameraAnimating ? gAgentCamera.mLastCameraMode : gAgentCamera.mCameraMode;
+		U32 camera_mode = gAgentCamera.getCameraAnimating() ? gAgentCamera.getLastCameraMode() : gAgentCamera.getCameraMode();
 		// and in third person...
 		if (camera_mode == CAMERA_MODE_THIRD_PERSON)
 		{
 			// make the up vector point to the absolute +z axis
-			up_vector = up_vector * ~((LLViewerObject*)mAvatarObject->getParent())->getRenderRotation();
+			up_vector = up_vector * ~((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();
 		}
 		else if (camera_mode == CAMERA_MODE_MOUSELOOK)
 		{
 			// make the up vector point to the avatar's +z axis
-			up_vector = up_vector * mAvatarObject->mDrawable->getRotation();
+			up_vector = up_vector * gAgentAvatarp->mDrawable->getRotation();
 		}
 	}
 
@@ -998,7 +964,7 @@ F32 LLAgent::clampPitchToLimits(F32 angle)
 
 	F32 angle_from_skyward = acos( mFrameAgent.getAtAxis() * skyward );
 
-	if (mAvatarObject.notNull() && mAvatarObject->isSitting())
+	if (isAgentAvatarValid() && gAgentAvatarp->isSitting())
 	{
 		look_down_limit = 130.f * DEG_TO_RAD;
 	}
@@ -1051,42 +1017,11 @@ LLQuaternion LLAgent::getQuat() const
 	return mFrameAgent.getQuaternion();
 }
 
-//-----------------------------------------------------------------------------
-// setKey()
-//-----------------------------------------------------------------------------
-void LLAgent::setKey(const S32 direction, S32 &key)
-{
-	if (direction > 0)
-	{
-		key = 1;
-	}
-	else if (direction < 0)
-	{
-		key = -1;
-	}
-	else
-	{
-		key = 0;
-	}
-}
-
-
 //-----------------------------------------------------------------------------
 // getControlFlags()
 //-----------------------------------------------------------------------------
 U32 LLAgent::getControlFlags()
 {
-/*
-	// HACK -- avoids maintenance of control flags when camera mode is turned on or off,
-	// only worries about it when the flags are measured
-	if (mCameraMode == CAMERA_MODE_MOUSELOOK) 
-	{
-		if ( !(mControlFlags & AGENT_CONTROL_MOUSELOOK) )
-		{
-			mControlFlags |= AGENT_CONTROL_MOUSELOOK;
-		}
-	}
-*/
 	return mControlFlags;
 }
 
@@ -1182,10 +1117,9 @@ void LLAgent::clearAFK()
 
 	// Gods can sometimes get into away state (via gestures)
 	// without setting the appropriate control flag. JC
-	LLVOAvatar* av = mAvatarObject;
 	if (mControlFlags & AGENT_CONTROL_AWAY
-		|| (av
-			&& (av->mSignaledAnimations.find(ANIM_AGENT_AWAY) != av->mSignaledAnimations.end())))
+		|| (isAgentAvatarValid()
+			&& (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AWAY) != gAgentAvatarp->mSignaledAnimations.end())))
 	{
 		sendAnimationRequest(ANIM_AGENT_AWAY, ANIM_REQUEST_STOP);
 		clearControlFlags(AGENT_CONTROL_AWAY);
@@ -1246,7 +1180,7 @@ BOOL LLAgent::getBusy() const
 //-----------------------------------------------------------------------------
 void LLAgent::startAutoPilotGlobal(const LLVector3d &target_global, const std::string& behavior_name, const LLQuaternion *target_rotation, void (*finish_callback)(BOOL, void *),  void *callback_data, F32 stop_distance, F32 rot_threshold)
 {
-	if (!gAgent.getAvatarObject())
+	if (!isAgentAvatarValid())
 	{
 		return;
 	}
@@ -1307,7 +1241,7 @@ void LLAgent::startAutoPilotGlobal(const LLVector3d &target_global, const std::s
 	LLViewerObject *obj;
 
 	LLWorld::getInstance()->resolveStepHeightGlobal(NULL, target_global, traceEndPt, targetOnGround, groundNorm, &obj);
-	F64 target_height = llmax((F64)gAgent.getAvatarObject()->getPelvisToFoot(), target_global.mdV[VZ] - targetOnGround.mdV[VZ]);
+	F64 target_height = llmax((F64)gAgentAvatarp->getPelvisToFoot(), target_global.mdV[VZ] - targetOnGround.mdV[VZ]);
 
 	// clamp z value of target to minimum height above ground
 	mAutoPilotTargetGlobal.mdV[VZ] = targetOnGround.mdV[VZ] + target_height;
@@ -1361,6 +1295,11 @@ void LLAgent::stopAutoPilot(BOOL user_cancel)
 		{
 			resetAxes(mAutoPilotTargetFacing);
 		}
+		// If the user cancelled, don't change the fly state
+		if (!user_cancel)
+		{
+			setFlying(mAutoPilotFlyOnStop);
+		}
 		//NB: auto pilot can terminate for a reason other than reaching the destination
 		if (mAutoPilotFinishedCallback)
 		{
@@ -1368,11 +1307,6 @@ void LLAgent::stopAutoPilot(BOOL user_cancel)
 		}
 		mLeaderID = LLUUID::null;
 
-		// If the user cancelled, don't change the fly state
-		if (!user_cancel)
-		{
-			setFlying(mAutoPilotFlyOnStop);
-		}
 		setControlFlags(AGENT_CONTROL_STOP);
 
 		if (user_cancel && !mAutoPilotBehaviorName.empty())
@@ -1407,12 +1341,9 @@ void LLAgent::autoPilot(F32 *delta_yaw)
 			mAutoPilotTargetGlobal = object->getPositionGlobal();
 		}
 		
-		if (mAvatarObject.isNull())
-		{
-			return;
-		}
+		if (!isAgentAvatarValid()) return;
 
-		if (mAvatarObject->mInAir)
+		if (gAgentAvatarp->mInAir)
 		{
 			setFlying(TRUE);
 		}
@@ -1488,9 +1419,9 @@ void LLAgent::autoPilot(F32 *delta_yaw)
 		// If we're flying, handle autopilot points above or below you.
 		if (getFlying() && xy_distance < AUTOPILOT_HEIGHT_ADJUST_DISTANCE)
 		{
-			if (mAvatarObject.notNull())
+			if (isAgentAvatarValid())
 			{
-				F64 current_height = mAvatarObject->getPositionGlobal().mdV[VZ];
+				F64 current_height = gAgentAvatarp->getPositionGlobal().mdV[VZ];
 				F32 delta_z = (F32)(mAutoPilotTargetGlobal.mdV[VZ] - current_height);
 				F32 slope = delta_z / xy_distance;
 				if (slope > 0.45f && delta_z > 6.f)
@@ -1555,30 +1486,30 @@ void LLAgent::propagate(const F32 dt)
 	LLFloaterMove *floater_move = LLFloaterReg::findTypedInstance<LLFloaterMove>("moveview");
 	if (floater_move)
 	{
-		floater_move->mForwardButton   ->setToggleState( mAtKey > 0 || mWalkKey > 0 );
-		floater_move->mBackwardButton  ->setToggleState( mAtKey < 0 || mWalkKey < 0 );
-		floater_move->mTurnLeftButton  ->setToggleState( mYawKey > 0.f );
-		floater_move->mTurnRightButton ->setToggleState( mYawKey < 0.f );
-		floater_move->mMoveUpButton    ->setToggleState( mUpKey > 0 );
-		floater_move->mMoveDownButton  ->setToggleState( mUpKey < 0 );
+		floater_move->mForwardButton   ->setToggleState( gAgentCamera.getAtKey() > 0 || gAgentCamera.getWalkKey() > 0 );
+		floater_move->mBackwardButton  ->setToggleState( gAgentCamera.getAtKey() < 0 || gAgentCamera.getWalkKey() < 0 );
+		floater_move->mTurnLeftButton  ->setToggleState( gAgentCamera.getYawKey() > 0.f );
+		floater_move->mTurnRightButton ->setToggleState( gAgentCamera.getYawKey() < 0.f );
+		floater_move->mMoveUpButton    ->setToggleState( gAgentCamera.getUpKey() > 0 );
+		floater_move->mMoveDownButton  ->setToggleState( gAgentCamera.getUpKey() < 0 );
 	}
 
 	// handle rotation based on keyboard levels
 	const F32 YAW_RATE = 90.f * DEG_TO_RAD;				// radians per second
-	yaw(YAW_RATE * mYawKey * dt);
+	yaw(YAW_RATE * gAgentCamera.getYawKey() * dt);
 
 	const F32 PITCH_RATE = 90.f * DEG_TO_RAD;			// radians per second
-	pitch(PITCH_RATE * mPitchKey * dt);
+	pitch(PITCH_RATE * gAgentCamera.getPitchKey() * dt);
 	
 	// handle auto-land behavior
-	if (mAvatarObject.notNull())
+	if (isAgentAvatarValid())
 	{
-		BOOL in_air = mAvatarObject->mInAir;
+		BOOL in_air = gAgentAvatarp->mInAir;
 		LLVector3 land_vel = getVelocity();
 		land_vel.mV[VZ] = 0.f;
 
 		if (!in_air 
-			&& mUpKey < 0 
+			&& gAgentCamera.getUpKey() < 0 
 			&& land_vel.magVecSquared() < MAX_VELOCITY_AUTO_LAND_SQUARED
 			&& gSavedSettings.getBOOL("AutomaticFly"))
 		{
@@ -1587,13 +1518,7 @@ void LLAgent::propagate(const F32 dt)
 		}
 	}
 
-	// clear keys
-	mAtKey = 0;
-	mWalkKey = 0;
-	mLeftKey = 0;
-	mUpKey = 0;
-	mYawKey = 0.f;
-	mPitchKey = 0.f;
+	gAgentCamera.clearGeneralKeys();
 }
 
 //-----------------------------------------------------------------------------
@@ -1626,29 +1551,6 @@ std::ostream& operator<<(std::ostream &s, const LLAgent &agent)
 	return s;
 }
 
-
-// ------------------- Beginning of legacy LLCamera hack ----------------------
-// This section is included for legacy LLCamera support until
-// it is no longer needed.  Some legacy code must exist in 
-// non-legacy functions, and is labeled with "// legacy" comments.
-
-//-----------------------------------------------------------------------------
-// setAvatarObject()
-//-----------------------------------------------------------------------------
-void LLAgent::setAvatarObject(LLVOAvatarSelf *avatar)			
-{ 
-	mAvatarObject = avatar;
-
-	if (!avatar)
-	{
-		llinfos << "Setting LLAgent::mAvatarObject to NULL" << llendl;
-		return;
-	}
-	
-	gAgentCamera.setAvatarObject(avatar);
-	gAgentWearables.setAvatarObject(avatar);
-}
-
 // TRUE if your own avatar needs to be rendered.  Usually only
 // in third person and build.
 //-----------------------------------------------------------------------------
@@ -1768,14 +1670,14 @@ U8 LLAgent::getRenderState()
 //-----------------------------------------------------------------------------
 void LLAgent::endAnimationUpdateUI()
 {
-	if (gAgentCamera.mCameraMode == gAgentCamera.mLastCameraMode)
+	if (gAgentCamera.getCameraMode() == gAgentCamera.getLastCameraMode())
 	{
 		// We're already done endAnimationUpdateUI for this transition.
 		return;
 	}
 
 	// clean up UI from mode we're leaving
-	if (gAgentCamera.mLastCameraMode == CAMERA_MODE_MOUSELOOK )
+	if (gAgentCamera.getLastCameraMode() == CAMERA_MODE_MOUSELOOK )
 	{
 		// show mouse cursor
 		gViewerWindow->showCursor();
@@ -1820,26 +1722,26 @@ void LLAgent::endAnimationUpdateUI()
 		}
 
 		// Disable mouselook-specific animations
-		if (mAvatarObject.notNull())
+		if (isAgentAvatarValid())
 		{
-			if( mAvatarObject->isAnyAnimationSignaled(AGENT_GUN_AIM_ANIMS, NUM_AGENT_GUN_AIM_ANIMS) )
+			if( gAgentAvatarp->isAnyAnimationSignaled(AGENT_GUN_AIM_ANIMS, NUM_AGENT_GUN_AIM_ANIMS) )
 			{
-				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_AIM_RIFLE_R) != mAvatarObject->mSignaledAnimations.end())
+				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AIM_RIFLE_R) != gAgentAvatarp->mSignaledAnimations.end())
 				{
 					sendAnimationRequest(ANIM_AGENT_AIM_RIFLE_R, ANIM_REQUEST_STOP);
 					sendAnimationRequest(ANIM_AGENT_HOLD_RIFLE_R, ANIM_REQUEST_START);
 				}
-				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_AIM_HANDGUN_R) != mAvatarObject->mSignaledAnimations.end())
+				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AIM_HANDGUN_R) != gAgentAvatarp->mSignaledAnimations.end())
 				{
 					sendAnimationRequest(ANIM_AGENT_AIM_HANDGUN_R, ANIM_REQUEST_STOP);
 					sendAnimationRequest(ANIM_AGENT_HOLD_HANDGUN_R, ANIM_REQUEST_START);
 				}
-				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_AIM_BAZOOKA_R) != mAvatarObject->mSignaledAnimations.end())
+				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AIM_BAZOOKA_R) != gAgentAvatarp->mSignaledAnimations.end())
 				{
 					sendAnimationRequest(ANIM_AGENT_AIM_BAZOOKA_R, ANIM_REQUEST_STOP);
 					sendAnimationRequest(ANIM_AGENT_HOLD_BAZOOKA_R, ANIM_REQUEST_START);
 				}
-				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_AIM_BOW_L) != mAvatarObject->mSignaledAnimations.end())
+				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_AIM_BOW_L) != gAgentAvatarp->mSignaledAnimations.end())
 				{
 					sendAnimationRequest(ANIM_AGENT_AIM_BOW_L, ANIM_REQUEST_STOP);
 					sendAnimationRequest(ANIM_AGENT_HOLD_BOW_L, ANIM_REQUEST_START);
@@ -1847,7 +1749,7 @@ void LLAgent::endAnimationUpdateUI()
 			}
 		}
 	}
-	else if(gAgentCamera.mLastCameraMode == CAMERA_MODE_CUSTOMIZE_AVATAR)
+	else if (gAgentCamera.getLastCameraMode() == CAMERA_MODE_CUSTOMIZE_AVATAR)
 	{
 		// make sure we ask to save changes
 
@@ -1858,7 +1760,7 @@ void LLAgent::endAnimationUpdateUI()
 			gMorphView->setVisible( FALSE );
 		}
 
-		if (mAvatarObject.notNull())
+		if (isAgentAvatarValid())
 		{
 			if(mCustomAnim)
 			{
@@ -1875,7 +1777,7 @@ void LLAgent::endAnimationUpdateUI()
 	//---------------------------------------------------------------------
 	// Set up UI for mode we're entering
 	//---------------------------------------------------------------------
-	if (gAgentCamera.mCameraMode == CAMERA_MODE_MOUSELOOK)
+	if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK)
 	{
 		// hide menus
 		gMenuBarView->setVisible(FALSE);
@@ -1890,7 +1792,7 @@ void LLAgent::endAnimationUpdateUI()
 		LLPanelStandStopFlying::getInstance()->setVisible(FALSE);
 
 		// clear out camera lag effect
-		gAgentCamera.mCameraLag.clearVec();
+		gAgentCamera.clearCameraLag();
 
 		// JC - Added for always chat in third person option
 		gFocusMgr.setKeyboardFocus(NULL);
@@ -1918,49 +1820,49 @@ void LLAgent::endAnimationUpdateUI()
 
 		gConsole->setVisible( TRUE );
 
-		if (mAvatarObject.notNull())
+		if (isAgentAvatarValid())
 		{
 			// Trigger mouselook-specific animations
-			if( mAvatarObject->isAnyAnimationSignaled(AGENT_GUN_HOLD_ANIMS, NUM_AGENT_GUN_HOLD_ANIMS) )
+			if( gAgentAvatarp->isAnyAnimationSignaled(AGENT_GUN_HOLD_ANIMS, NUM_AGENT_GUN_HOLD_ANIMS) )
 			{
-				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_HOLD_RIFLE_R) != mAvatarObject->mSignaledAnimations.end())
+				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_HOLD_RIFLE_R) != gAgentAvatarp->mSignaledAnimations.end())
 				{
 					sendAnimationRequest(ANIM_AGENT_HOLD_RIFLE_R, ANIM_REQUEST_STOP);
 					sendAnimationRequest(ANIM_AGENT_AIM_RIFLE_R, ANIM_REQUEST_START);
 				}
-				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_HOLD_HANDGUN_R) != mAvatarObject->mSignaledAnimations.end())
+				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_HOLD_HANDGUN_R) != gAgentAvatarp->mSignaledAnimations.end())
 				{
 					sendAnimationRequest(ANIM_AGENT_HOLD_HANDGUN_R, ANIM_REQUEST_STOP);
 					sendAnimationRequest(ANIM_AGENT_AIM_HANDGUN_R, ANIM_REQUEST_START);
 				}
-				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_HOLD_BAZOOKA_R) != mAvatarObject->mSignaledAnimations.end())
+				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_HOLD_BAZOOKA_R) != gAgentAvatarp->mSignaledAnimations.end())
 				{
 					sendAnimationRequest(ANIM_AGENT_HOLD_BAZOOKA_R, ANIM_REQUEST_STOP);
 					sendAnimationRequest(ANIM_AGENT_AIM_BAZOOKA_R, ANIM_REQUEST_START);
 				}
-				if (mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_HOLD_BOW_L) != mAvatarObject->mSignaledAnimations.end())
+				if (gAgentAvatarp->mSignaledAnimations.find(ANIM_AGENT_HOLD_BOW_L) != gAgentAvatarp->mSignaledAnimations.end())
 				{
 					sendAnimationRequest(ANIM_AGENT_HOLD_BOW_L, ANIM_REQUEST_STOP);
 					sendAnimationRequest(ANIM_AGENT_AIM_BOW_L, ANIM_REQUEST_START);
 				}
 			}
-			if (mAvatarObject->getParent())
+			if (gAgentAvatarp->getParent())
 			{
 				LLVector3 at_axis = LLViewerCamera::getInstance()->getAtAxis();
-				LLViewerObject* root_object = (LLViewerObject*)mAvatarObject->getRoot();
+				LLViewerObject* root_object = (LLViewerObject*)gAgentAvatarp->getRoot();
 				if (root_object->flagCameraDecoupled())
 				{
 					resetAxes(at_axis);
 				}
 				else
 				{
-					resetAxes(at_axis * ~((LLViewerObject*)mAvatarObject->getParent())->getRenderRotation());
+					resetAxes(at_axis * ~((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation());
 				}
 			}
 		}
 
 	}
-	else if (gAgentCamera.mCameraMode == CAMERA_MODE_CUSTOMIZE_AVATAR)
+	else if (gAgentCamera.getCameraMode() == CAMERA_MODE_CUSTOMIZE_AVATAR)
 	{
 		LLToolMgr::getInstance()->setCurrentToolset(gFaceEditToolset);
 
@@ -1970,23 +1872,22 @@ void LLAgent::endAnimationUpdateUI()
 		}
 
 		// freeze avatar
-		if (mAvatarObject.notNull())
+		if (isAgentAvatarValid())
 		{
-			mPauseRequest = mAvatarObject->requestPause();
+			mPauseRequest = gAgentAvatarp->requestPause();
 		}
 	}
 
-	if (getAvatarObject())
+	if (isAgentAvatarValid())
 	{
-		getAvatarObject()->updateAttachmentVisibility(gAgentCamera.mCameraMode);
+		gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode());
 	}
 
 	gFloaterTools->dirty();
 
 	// Don't let this be called more than once if the camera
 	// mode hasn't changed.  --JC
-	gAgentCamera.mLastCameraMode = gAgentCamera.mCameraMode;
-
+	gAgentCamera.updateLastCamera();
 }
 
 //-----------------------------------------------------------------------------
@@ -2055,10 +1956,10 @@ void LLAgent::setStartPosition( U32 location_id )
 
     LLVector3 agent_pos = getPositionAgent();
 
-    if (mAvatarObject.notNull())
+    if (isAgentAvatarValid())
     {
         // the z height is at the agent's feet
-        agent_pos.mV[VZ] -= 0.5f * mAvatarObject->mBodySize.mV[VZ];
+        agent_pos.mV[VZ] -= 0.5f * gAgentAvatarp->mBodySize.mV[VZ];
     }
 
     agent_pos.mV[VX] = llclamp( agent_pos.mV[VX], INSET, REGION_WIDTH - INSET );
@@ -2165,7 +2066,7 @@ void LLAgent::onAnimStop(const LLUUID& id)
 		setControlFlags(AGENT_CONTROL_FINISH_ANIM);
 
 		// now trigger dusting self off animation
-		if (mAvatarObject.notNull() && !mAvatarObject->mBelowWater && rand() % 3 == 0)
+		if (isAgentAvatarValid() && !gAgentAvatarp->mBelowWater && rand() % 3 == 0)
 			sendAnimationRequest( ANIM_AGENT_BRUSH, ANIM_REQUEST_START );
 	}
 	else if (id == ANIM_AGENT_PRE_JUMP || id == ANIM_AGENT_LAND || id == ANIM_AGENT_MEDIUM_LAND)
@@ -2364,9 +2265,9 @@ void LLAgent::buildFullnameAndTitle(std::string& name) const
 		name.erase(0, name.length());
 	}
 
-	if (mAvatarObject.notNull())
+	if (isAgentAvatarValid())
 	{
-		name += mAvatarObject->getFullname();
+		name += gAgentAvatarp->getFullname();
 	}
 }
 
@@ -2512,14 +2413,14 @@ BOOL LLAgent::canJoinGroups() const
 
 LLQuaternion LLAgent::getHeadRotation()
 {
-	if (mAvatarObject.isNull() || !mAvatarObject->mPelvisp || !mAvatarObject->mHeadp)
+	if (!isAgentAvatarValid() || !gAgentAvatarp->mPelvisp || !gAgentAvatarp->mHeadp)
 	{
 		return LLQuaternion::DEFAULT;
 	}
 
 	if (!gAgentCamera.cameraMouselook())
 	{
-		return mAvatarObject->getRotation();
+		return gAgentAvatarp->getRotation();
 	}
 
 	// We must be in mouselook
@@ -2528,9 +2429,9 @@ LLQuaternion LLAgent::getHeadRotation()
 	LLVector3 left = up % look_dir;
 
 	LLQuaternion rot(look_dir, left, up);
-	if (mAvatarObject->getParent())
+	if (gAgentAvatarp->getParent())
 	{
-		rot = rot * ~mAvatarObject->getParent()->getRotation();
+		rot = rot * ~gAgentAvatarp->getParent()->getRotation();
 	}
 
 	return rot;
@@ -3153,8 +3054,7 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *
 {
 	gAgentQueryManager.mNumPendingQueries--;
 
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (!avatarp || avatarp->isDead())
+	if (!isAgentAvatarValid() || gAgentAvatarp->isDead())
 	{
 		llwarns << "No avatar for user in cached texture update!" << llendl;
 		return;
@@ -3187,27 +3087,27 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *
 			if (texture_id.notNull())
 			{
 				//llinfos << "Received cached texture " << (U32)texture_index << ": " << texture_id << llendl;
-				avatarp->setCachedBakedTexture(LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)texture_index), texture_id);
-				//avatarp->setTETexture( LLVOAvatar::sBakedTextureIndices[texture_index], texture_id );
+				gAgentAvatarp->setCachedBakedTexture(LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)texture_index), texture_id);
+				//gAgentAvatarp->setTETexture( LLVOAvatar::sBakedTextureIndices[texture_index], texture_id );
 				gAgentQueryManager.mActiveCacheQueries[texture_index] = 0;
 				num_results++;
 			}
 			else
 			{
 				// no cache of this bake. request upload.
-				avatarp->requestLayerSetUpload((EBakedTextureIndex)texture_index);
+				gAgentAvatarp->requestLayerSetUpload((EBakedTextureIndex)texture_index);
 			}
 		}
 	}
 
 	llinfos << "Received cached texture response for " << num_results << " textures." << llendl;
 
-	avatarp->updateMeshTextures();
+	gAgentAvatarp->updateMeshTextures();
 
 	if (gAgentQueryManager.mNumPendingQueries == 0)
 	{
 		// RN: not sure why composites are disabled at this point
-		avatarp->setCompositeUpdatesEnabled(TRUE);
+		gAgentAvatarp->setCompositeUpdatesEnabled(TRUE);
 		gAgent.sendAgentSetAppearance();
 	}
 }
@@ -3260,11 +3160,10 @@ BOOL LLAgent::getHomePosGlobal( LLVector3d* pos_global )
 
 void LLAgent::clearVisualParams(void *data)
 {
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (avatarp)
+	if (isAgentAvatarValid())
 	{
-		avatarp->clearVisualParamWeights();
-		avatarp->updateVisualParams();
+		gAgentAvatarp->clearVisualParamWeights();
+		gAgentAvatarp->updateVisualParams();
 	}
 }
 
@@ -3288,16 +3187,15 @@ bool LLAgent::teleportCore(bool is_local)
 	// sync with other viewers. Discuss in DEV-14145/VWR-6744 before reenabling.
 
 	// Stop all animation before actual teleporting 
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-        if (avatarp)
+        if (isAgentAvatarValid())
 	{
-		for ( LLVOAvatar::AnimIterator anim_it= avatarp->mPlayingAnimations.begin();
-		      anim_it != avatarp->mPlayingAnimations.end();
+		for ( LLVOAvatar::AnimIterator anim_it= gAgentAvatarp->mPlayingAnimations.begin();
+		      anim_it != gAgentAvatarp->mPlayingAnimations.end();
 		      ++anim_it)
                {
-                       avatarp->stopMotion(anim_it->first);
+                       gAgentAvatarp->stopMotion(anim_it->first);
                }
-               avatarp->processAnimationStateChanges();
+               gAgentAvatarp->processAnimationStateChanges();
        }
 #endif
 
@@ -3305,9 +3203,9 @@ bool LLAgent::teleportCore(bool is_local)
 	// yet if the teleport will succeed.  Look in 
 	// process_teleport_location_reply
 
-	// close the map and find panels so we can see our destination
+	// close the map panel so we can see our destination.
+	// we don't close search floater, see EXT-5840.
 	LLFloaterReg::hideInstance("world_map");
-	LLFloaterReg::hideInstance("search");
 
 	// hide land floater too - it'll be out of date
 	LLFloaterReg::hideInstance("about_land");
@@ -3490,13 +3388,11 @@ void LLAgent::stopCurrentAnimations()
 {
 	// This function stops all current overriding animations on this
 	// avatar, propagating this change back to the server.
-
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (avatarp)
+	if (isAgentAvatarValid())
 	{
 		for ( LLVOAvatar::AnimIterator anim_it =
-			      avatarp->mPlayingAnimations.begin();
-		      anim_it != avatarp->mPlayingAnimations.end();
+			      gAgentAvatarp->mPlayingAnimations.begin();
+		      anim_it != gAgentAvatarp->mPlayingAnimations.end();
 		      anim_it++)
 		{
 			if (anim_it->first ==
@@ -3509,7 +3405,7 @@ void LLAgent::stopCurrentAnimations()
 			else
 			{
 				// stop this animation locally
-				avatarp->stopMotion(anim_it->first, TRUE);
+				gAgentAvatarp->stopMotion(anim_it->first, TRUE);
 				// ...and tell the server to tell everyone.
 				sendAnimationRequest(anim_it->first, ANIM_REQUEST_STOP);
 			}
@@ -3616,7 +3512,7 @@ void LLAgent::requestLeaveGodMode()
 //-----------------------------------------------------------------------------
 void LLAgent::sendAgentSetAppearance()
 {
-	if (mAvatarObject.isNull()) return;
+	if (!isAgentAvatarValid()) return;
 
 	if (gAgentQueryManager.mNumPendingQueries > 0 && !gAgentCamera.cameraCustomizeAvatar()) 
 	{
@@ -3624,7 +3520,7 @@ void LLAgent::sendAgentSetAppearance()
 	}
 
 
-	llinfos << "TAT: Sent AgentSetAppearance: " << mAvatarObject->getBakedStatusForPrintout() << llendl;
+	llinfos << "TAT: Sent AgentSetAppearance: " << gAgentAvatarp->getBakedStatusForPrintout() << llendl;
 	//dumpAvatarTEs( "sendAgentSetAppearance()" );
 
 	LLMessageSystem* msg = gMessageSystem;
@@ -3638,7 +3534,7 @@ void LLAgent::sendAgentSetAppearance()
 	// NOTE -- when we start correcting all of the other Havok geometry 
 	// to compensate for the COLLISION_TOLERANCE ugliness we will have 
 	// to tweak this number again
-	const LLVector3 body_size = mAvatarObject->mBodySize;
+	const LLVector3 body_size = gAgentAvatarp->mBodySize;
 	msg->addVector3Fast(_PREHASH_Size, body_size);	
 
 	// To guard against out of order packets
@@ -3648,20 +3544,20 @@ void LLAgent::sendAgentSetAppearance()
 
 	// is texture data current relative to wearables?
 	// KLW - TAT this will probably need to check the local queue.
-	BOOL textures_current = mAvatarObject->areTexturesCurrent();
+	BOOL textures_current = gAgentAvatarp->areTexturesCurrent();
 
 	for(U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++ )
 	{
 		const ETextureIndex texture_index = LLVOAvatarDictionary::bakedToLocalTextureIndex((EBakedTextureIndex)baked_index);
 
 		// if we're not wearing a skirt, we don't need the texture to be baked
-		if (texture_index == TEX_SKIRT_BAKED && !mAvatarObject->isWearingWearableType(WT_SKIRT))
+		if (texture_index == TEX_SKIRT_BAKED && !gAgentAvatarp->isWearingWearableType(WT_SKIRT))
 		{
 			continue;
 		}
 
 		// IMG_DEFAULT_AVATAR means not baked. 0 index should be ignored for baked textures
-		if (!mAvatarObject->isTextureDefined(texture_index, 0))
+		if (!gAgentAvatarp->isTextureDefined(texture_index, 0))
 		{
 			textures_current = FALSE;
 			break;
@@ -3699,7 +3595,7 @@ void LLAgent::sendAgentSetAppearance()
 			msg->addU8Fast(_PREHASH_TextureIndex, (U8)texture_index);
 		}
 		msg->nextBlockFast(_PREHASH_ObjectData);
-		mAvatarObject->sendAppearanceMessage( gMessageSystem );
+		gAgentAvatarp->sendAppearanceMessage( gMessageSystem );
 	}
 	else
 	{
@@ -3712,9 +3608,9 @@ void LLAgent::sendAgentSetAppearance()
 
 
 	S32 transmitted_params = 0;
-	for (LLViewerVisualParam* param = (LLViewerVisualParam*)mAvatarObject->getFirstVisualParam();
+	for (LLViewerVisualParam* param = (LLViewerVisualParam*)gAgentAvatarp->getFirstVisualParam();
 		 param;
-		 param = (LLViewerVisualParam*)mAvatarObject->getNextVisualParam())
+		 param = (LLViewerVisualParam*)gAgentAvatarp->getNextVisualParam())
 	{
 		if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE)
 		{
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index 891ce799d22be6535f7ac919758e87885532ff1b..a460077b7e7ae119a3b5970084f82fa86594f113 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -39,9 +39,6 @@
 #include "llagentconstants.h"
 #include "llagentdata.h" 			// gAgentID, gAgentSessionID
 #include "llcharacter.h" 			// LLAnimPauseRequest
-#include "llfollowcam.h" 			// Ventrella
-#include "llhudeffectlookat.h" 		// EPointAtType
-#include "llhudeffectpointat.h" 	// ELookAtType
 #include "llpointer.h"
 #include "lluicolor.h"
 #include "llvoavatardefines.h"
@@ -51,7 +48,6 @@ extern const U8 	AGENT_STATE_TYPING;  // Typing indication
 extern const U8 	AGENT_STATE_EDITING; // Set when agent has objects selected
 
 class LLChat;
-class LLVOAvatarSelf;
 class LLViewerRegion;
 class LLMotion;
 class LLToolset;
@@ -109,7 +105,6 @@ class LLAgent : public LLOldEvents::LLObservable
 	virtual 		~LLAgent();
 	void			init();
 	void			cleanup();
-	void			setAvatarObject(LLVOAvatarSelf *avatar);
 
 	//--------------------------------------------------------------------
 	// Login
@@ -171,20 +166,6 @@ class LLAgent : public LLOldEvents::LLObservable
  **                                                                            **
  *******************************************************************************/
 
-/********************************************************************************
- **                                                                            **
- **                    GENERAL ACCESSORS
- **/
-
-public:
- 	LLVOAvatarSelf* getAvatarObject() const		{ return mAvatarObject; }
-private:
-	LLPointer<LLVOAvatarSelf> mAvatarObject; 	// NULL until avatar object sent down from simulator
-
-/**                    General Accessors
- **                                                                            **
- *******************************************************************************/
-
 /********************************************************************************
  **                                                                            **
  **                    POSITION
@@ -217,7 +198,7 @@ class LLAgent : public LLOldEvents::LLObservable
 	// Coordinate System
 	//--------------------------------------------------------------------
 public:
-	LLCoordFrame	getFrameAgent()	const	{ return mFrameAgent; }
+	const LLCoordFrame&	getFrameAgent()	const	{ return mFrameAgent; }
 	void 			initOriginGlobal(const LLVector3d &origin_global); // Only to be used in ONE place
 	void			resetAxes();
 	void			resetAxes(const LLVector3 &look_at); // Makes reasonable left and up
@@ -450,19 +431,6 @@ class LLAgent : public LLOldEvents::LLObservable
  **                                                                            **
  **                    MOVEMENT
  **/
-	
-	//--------------------------------------------------------------------
-	// Keys
-	//--------------------------------------------------------------------
-public:
-	void			setKey(const S32 direction, S32 &key); // Sets key to +1 for +direction, -1 for -direction
-private:
-	S32 			mAtKey;				// Either 1, 0, or -1. Indicates that movement key is pressed
-	S32				mWalkKey; 			// Like AtKey, but causes less forward thrust
-	S32 			mLeftKey;
-	S32				mUpKey;
-	F32				mYawKey;
-	F32				mPitchKey;
 
 	//--------------------------------------------------------------------
 	// Movement from user input
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index e000d44ab8b6175f4f4ec54f63061dae8a69ff1f..9638d0e94f821482f7454dc1b92425699dfcce8c 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -35,50 +35,25 @@
 
 #include "pipeline.h"
 
-#include "llagentlistener.h"
-#include "llagentwearables.h"
-#include "llagentui.h"
+#include "llagent.h"
 #include "llanimationstates.h"
-#include "llbottomtray.h"
-#include "llcallingcard.h"
-#include "llchannelmanager.h"
-#include "llconsole.h"
-//#include "llfirstuse.h"
 #include "llfloatercamera.h"
 #include "llfloatercustomize.h"
 #include "llfloaterreg.h"
-#include "llfloatertools.h"
-#include "llgroupactions.h"
-#include "llgroupmgr.h"
-#include "llhomelocationresponder.h"
 #include "llhudmanager.h"
 #include "lljoystickbutton.h"
-#include "llmorphview.h"
-#include "llmoveview.h"
-#include "llnavigationbar.h" // to show/hide navigation bar when changing mouse look state
-#include "llnearbychatbar.h"
-#include "llnotificationsutil.h"
-#include "llparcel.h"
-#include "llsdutil.h"
-#include "llsidetray.h"
-#include "llsky.h"
+#include "llselectmgr.h"
 #include "llsmoothstep.h"
-#include "llstatusbar.h"
-#include "llteleportflags.h"
-#include "lltool.h"
 #include "lltoolmgr.h"
-#include "lltrans.h"
+#include "llviewercamera.h"
 #include "llviewercontrol.h"
-#include "llviewerdisplay.h"
 #include "llviewerjoystick.h"
-#include "llviewermediafocus.h"
 #include "llviewerobjectlist.h"
-#include "llviewerparcelmgr.h"
-#include "llviewerstats.h"
+#include "llviewerregion.h"
+#include "llviewerwindow.h"
 #include "llvoavatarself.h"
 #include "llwindow.h"
 #include "llworld.h"
-#include "llworldmap.h"
 
 using namespace LLVOAvatarDefines;
 
@@ -132,6 +107,8 @@ LLAgentCamera gAgentCamera;
 // LLAgentCamera()
 //-----------------------------------------------------------------------------
 LLAgentCamera::LLAgentCamera() :
+	mInitialized(false),
+
 	mDrawDistance( DEFAULT_FAR_PLANE ),
 
 	mLookAt(NULL),
@@ -167,7 +144,7 @@ LLAgentCamera::LLAgentCamera() :
 	mSitCameraEnabled(FALSE),
 	mCameraSmoothingLastPositionGlobal(),
 	mCameraSmoothingLastPositionAgent(),
-	mCameraSmoothingStop(FALSE),
+	mCameraSmoothingStop(false),
 
 	mCameraUpVector(LLVector3::z_axis), // default is straight up
 
@@ -181,6 +158,13 @@ LLAgentCamera::LLAgentCamera() :
 	mTrackFocusObject(TRUE),
 	mUIOffset(0.f),
 
+	mAtKey(0), // Either 1, 0, or -1... indicates that movement-key is pressed
+	mWalkKey(0), // like AtKey, but causes less forward thrust
+	mLeftKey(0),
+	mUpKey(0),
+	mYawKey(0.f),
+	mPitchKey(0.f),
+
 	mOrbitLeftKey(0.f),
 	mOrbitRightKey(0.f),
 	mOrbitUpKey(0.f),
@@ -196,6 +180,10 @@ LLAgentCamera::LLAgentCamera() :
 	mPanOutKey(0.f)
 {
 	mFollowCam.setMaxCameraDistantFromSubject( MAX_CAMERA_DISTANCE_FROM_AGENT );
+
+	clearGeneralKeys();
+	clearOrbitKeys();
+	clearPanKeys();
 }
 
 // Requires gSavedSettings to be initialized.
@@ -233,7 +221,7 @@ void LLAgentCamera::init()
 	mCameraZoomFraction = 1.f;
 	mTrackFocusObject = gSavedSettings.getBOOL("TrackFocusObject");
 
-	mInitialized = TRUE;
+	mInitialized = true;
 }
 
 //-----------------------------------------------------------------------------
@@ -372,10 +360,9 @@ void LLAgentCamera::unlockView()
 {
 	if (getFocusOnAvatar())
 	{
-		LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
-		if (avatarp)
+		if (isAgentAvatarValid())
 		{
-			setFocusGlobal(LLVector3d::zero, avatarp->mID);
+			setFocusGlobal(LLVector3d::zero, gAgentAvatarp->mID);
 		}
 		setFocusOnAvatar(FALSE, FALSE);	// no animation
 	}
@@ -852,7 +839,7 @@ void LLAgentCamera::cameraOrbitAround(const F32 radians)
 	}
 	else if (mFocusOnAvatar && (mCameraMode == CAMERA_MODE_THIRD_PERSON || mCameraMode == CAMERA_MODE_FOLLOW))
 	{
-		gAgent.getFrameAgent().rotate(radians, gAgent.getReferenceUpVector());
+		gAgent.yaw(radians);
 	}
 	else
 	{
@@ -1057,7 +1044,7 @@ void LLAgentCamera::cameraPanLeft(F32 meters)
 	mFocusGlobal = mFocusTargetGlobal;
 
 	// disable smoothing for camera pan, which causes some residents unhappiness
-	mCameraSmoothingStop = TRUE;
+	mCameraSmoothingStop = true;
 	
 	cameraZoomIn(1.f);
 	updateFocusOffset();
@@ -1077,7 +1064,7 @@ void LLAgentCamera::cameraPanUp(F32 meters)
 	mFocusGlobal = mFocusTargetGlobal;
 
 	// disable smoothing for camera pan, which causes some residents unhappiness
-	mCameraSmoothingStop = TRUE;
+	mCameraSmoothingStop = true;
 
 	cameraZoomIn(1.f);
 	updateFocusOffset();
@@ -1092,30 +1079,25 @@ void LLAgentCamera::updateLookAt(const S32 mouse_x, const S32 mouse_y)
 {
 	static LLVector3 last_at_axis;
 
-	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
-
-	if (!avatarp)
-	{
-		return;
-	}
+	if (!isAgentAvatarValid()) return;
 
-	LLQuaternion av_inv_rot = ~avatarp->mRoot.getWorldRotation();
-	LLVector3 root_at = LLVector3::x_axis * avatarp->mRoot.getWorldRotation();
+	LLQuaternion av_inv_rot = ~gAgentAvatarp->mRoot.getWorldRotation();
+	LLVector3 root_at = LLVector3::x_axis * gAgentAvatarp->mRoot.getWorldRotation();
 
 	if 	((gViewerWindow->getMouseVelocityStat()->getCurrent() < 0.01f) &&
 		 (root_at * last_at_axis > 0.95f))
 	{
-		LLVector3 vel = avatarp->getVelocity();
+		LLVector3 vel = gAgentAvatarp->getVelocity();
 		if (vel.magVecSquared() > 4.f)
 		{
-			setLookAt(LOOKAT_TARGET_IDLE, avatarp, vel * av_inv_rot);
+			setLookAt(LOOKAT_TARGET_IDLE, gAgentAvatarp, vel * av_inv_rot);
 		}
 		else
 		{
 			// *FIX: rotate mframeagent by sit object's rotation?
-			LLQuaternion look_rotation = avatarp->isSitting() ? avatarp->getRenderRotation() : gAgent.getFrameAgent().getQuaternion(); // use camera's current rotation
+			LLQuaternion look_rotation = gAgentAvatarp->isSitting() ? gAgentAvatarp->getRenderRotation() : gAgent.getFrameAgent().getQuaternion(); // use camera's current rotation
 			LLVector3 look_offset = LLVector3(2.f, 0.f, 0.f) * look_rotation * av_inv_rot;
-			setLookAt(LOOKAT_TARGET_IDLE, avatarp, look_offset);
+			setLookAt(LOOKAT_TARGET_IDLE, gAgentAvatarp, look_offset);
 		}
 		last_at_axis = root_at;
 		return;
@@ -1125,7 +1107,7 @@ void LLAgentCamera::updateLookAt(const S32 mouse_x, const S32 mouse_y)
 	
 	if (CAMERA_MODE_CUSTOMIZE_AVATAR == getCameraMode())
 	{
-		setLookAt(LOOKAT_TARGET_NONE, avatarp, LLVector3(-2.f, 0.f, 0.f));	
+		setLookAt(LOOKAT_TARGET_NONE, gAgentAvatarp, LLVector3(-2.f, 0.f, 0.f));	
 	}
 	else
 	{
@@ -1142,9 +1124,9 @@ void LLAgentCamera::updateLookAt(const S32 mouse_x, const S32 mouse_y)
 		{
 			// range from -.5 to .5
 			F32 x_from_center = 
-				((F32) mouse_x / (F32) gViewerWindow->getWindowWidthScaled() ) - 0.5f;
+				((F32) mouse_x / (F32) gViewerWindow->getWorldViewWidthScaled() ) - 0.5f;
 			F32 y_from_center = 
-				((F32) mouse_y / (F32) gViewerWindow->getWindowHeightScaled() ) - 0.5f;
+				((F32) mouse_y / (F32) gViewerWindow->getWorldViewHeightScaled() ) - 0.5f;
 
 			frameCamera.yaw( - x_from_center * gSavedSettings.getF32("YawFromMousePosition") * DEG_TO_RAD);
 			frameCamera.pitch( - y_from_center * gSavedSettings.getF32("PitchFromMousePosition") * DEG_TO_RAD);
@@ -1154,7 +1136,7 @@ void LLAgentCamera::updateLookAt(const S32 mouse_x, const S32 mouse_y)
 		headLookAxis = frameCamera.getAtAxis();
 		// RN: we use world-space offset for mouselook and freelook
 		//headLookAxis = headLookAxis * av_inv_rot;
-		setLookAt(lookAtType, avatarp, headLookAxis);
+		setLookAt(lookAtType, gAgentAvatarp, headLookAxis);
 	}
 }
 
@@ -1175,15 +1157,13 @@ void LLAgentCamera::updateCamera()
 
 	validateFocusObject();
 
-	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
-
-	if (avatarp && 
-		avatarp->isSitting() &&
+	if (isAgentAvatarValid() && 
+		gAgentAvatarp->isSitting() &&
 		camera_mode == CAMERA_MODE_MOUSELOOK)
 	{
 		//Ventrella
 		//changed camera_skyward to the new global "mCameraUpVector"
-		mCameraUpVector = mCameraUpVector * avatarp->getRenderRotation();
+		mCameraUpVector = mCameraUpVector * gAgentAvatarp->getRenderRotation();
 		//end Ventrella
 	}
 
@@ -1212,17 +1192,15 @@ void LLAgentCamera::updateCamera()
 	LLFloaterCamera* camera_floater = LLFloaterReg::findTypedInstance<LLFloaterCamera>("camera");
 	if (camera_floater)
 	{
-		camera_floater->mRotate->setToggleState(
-		mOrbitRightKey > 0.f,	// left
-		mOrbitUpKey > 0.f,		// top
-		mOrbitLeftKey > 0.f,	// right
-		mOrbitDownKey > 0.f);	// bottom
-
-		camera_floater->mTrack->setToggleState(
-		mPanLeftKey > 0.f,		// left
-		mPanUpKey > 0.f,		// top
-		mPanRightKey > 0.f,		// right
-		mPanDownKey > 0.f);		// bottom
+		camera_floater->mRotate->setToggleState(gAgentCamera.getOrbitRightKey() > 0.f,	// left
+												gAgentCamera.getOrbitUpKey() > 0.f,		// top
+												gAgentCamera.getOrbitLeftKey() > 0.f,	// right
+												gAgentCamera.getOrbitDownKey() > 0.f);	// bottom
+		
+		camera_floater->mTrack->setToggleState(gAgentCamera.getPanLeftKey() > 0.f,		// left
+											   gAgentCamera.getPanUpKey() > 0.f,			// top
+											   gAgentCamera.getPanRightKey() > 0.f,		// right
+											   gAgentCamera.getPanDownKey() > 0.f);		// bottom
 	}
 
 	// Handle camera movement based on keyboard.
@@ -1230,21 +1208,21 @@ void LLAgentCamera::updateCamera()
 	const F32 ORBIT_AROUND_RATE = 90.f * DEG_TO_RAD;		// radians per second
 	const F32 PAN_RATE = 5.f;								// meters per second
 
-	if( mOrbitUpKey || mOrbitDownKey )
+	if (gAgentCamera.getOrbitUpKey() || gAgentCamera.getOrbitDownKey())
 	{
-		F32 input_rate = mOrbitUpKey - mOrbitDownKey;
+		F32 input_rate = gAgentCamera.getOrbitUpKey() - gAgentCamera.getOrbitDownKey();
 		cameraOrbitOver( input_rate * ORBIT_OVER_RATE / gFPSClamped );
 	}
 
-	if( mOrbitLeftKey || mOrbitRightKey)
+	if (gAgentCamera.getOrbitLeftKey() || gAgentCamera.getOrbitRightKey())
 	{
-		F32 input_rate = mOrbitLeftKey - mOrbitRightKey;
-		cameraOrbitAround( input_rate * ORBIT_AROUND_RATE / gFPSClamped );
+		F32 input_rate = gAgentCamera.getOrbitLeftKey() - gAgentCamera.getOrbitRightKey();
+		cameraOrbitAround(input_rate * ORBIT_AROUND_RATE / gFPSClamped);
 	}
 
-	if( mOrbitInKey || mOrbitOutKey )
+	if (gAgentCamera.getOrbitInKey() || gAgentCamera.getOrbitOutKey())
 	{
-		F32 input_rate = mOrbitInKey - mOrbitOutKey;
+		F32 input_rate = gAgentCamera.getOrbitInKey() - gAgentCamera.getOrbitOutKey();
 		
 		LLVector3d to_focus = gAgent.getPosGlobalFromAgent(LLViewerCamera::getInstance()->getOrigin()) - calcFocusPositionTargetGlobal();
 		F32 distance_to_focus = (F32)to_focus.magVec();
@@ -1252,38 +1230,27 @@ void LLAgentCamera::updateCamera()
 		cameraOrbitIn( input_rate * distance_to_focus / gFPSClamped );
 	}
 
-	if( mPanInKey || mPanOutKey )
+	if (gAgentCamera.getPanInKey() || gAgentCamera.getPanOutKey())
 	{
-		F32 input_rate = mPanInKey - mPanOutKey;
-		cameraPanIn( input_rate * PAN_RATE / gFPSClamped );
+		F32 input_rate = gAgentCamera.getPanInKey() - gAgentCamera.getPanOutKey();
+		cameraPanIn(input_rate * PAN_RATE / gFPSClamped);
 	}
 
-	if( mPanRightKey || mPanLeftKey )
+	if (gAgentCamera.getPanRightKey() || gAgentCamera.getPanLeftKey())
 	{
-		F32 input_rate = mPanRightKey - mPanLeftKey;
-		cameraPanLeft( input_rate * -PAN_RATE / gFPSClamped );
+		F32 input_rate = gAgentCamera.getPanRightKey() - gAgentCamera.getPanLeftKey();
+		cameraPanLeft(input_rate * -PAN_RATE / gFPSClamped );
 	}
 
-	if( mPanUpKey || mPanDownKey )
+	if (gAgentCamera.getPanUpKey() || gAgentCamera.getPanDownKey())
 	{
-		F32 input_rate = mPanUpKey - mPanDownKey;
-		cameraPanUp( input_rate * PAN_RATE / gFPSClamped );
+		F32 input_rate = gAgentCamera.getPanUpKey() - gAgentCamera.getPanDownKey();
+		cameraPanUp(input_rate * PAN_RATE / gFPSClamped );
 	}
 
 	// Clear camera keyboard keys.
-	mOrbitLeftKey		= 0.f;
-	mOrbitRightKey		= 0.f;
-	mOrbitUpKey			= 0.f;
-	mOrbitDownKey		= 0.f;
-	mOrbitInKey			= 0.f;
-	mOrbitOutKey		= 0.f;
-
-	mPanRightKey		= 0.f;
-	mPanLeftKey			= 0.f;
-	mPanUpKey			= 0.f;
-	mPanDownKey			= 0.f;
-	mPanInKey			= 0.f;
-	mPanOutKey			= 0.f;
+	gAgentCamera.clearOrbitKeys();
+	gAgentCamera.clearPanKeys();
 
 	// lerp camera focus offset
 	mCameraFocusOffset = lerp(mCameraFocusOffset, mCameraFocusOffsetTarget, LLCriticalDamp::getInterpolant(CAMERA_FOCUS_HALF_LIFE));
@@ -1291,7 +1258,7 @@ void LLAgentCamera::updateCamera()
 	//Ventrella
 	if ( mCameraMode == CAMERA_MODE_FOLLOW )
 	{
-		if (avatarp)
+		if (isAgentAvatarValid())
 		{
 			//--------------------------------------------------------------------------------
 			// this is where the avatar's position and rotation are given to followCam, and 
@@ -1299,13 +1266,13 @@ void LLAgentCamera::updateCamera()
 			// (2) focus, and (3) upvector. They can then be queried elsewhere in llAgent.
 			//--------------------------------------------------------------------------------
 			// *TODO: use combined rotation of frameagent and sit object
-			LLQuaternion avatarRotationForFollowCam = avatarp->isSitting() ? avatarp->getRenderRotation() : gAgent.getFrameAgent().getQuaternion();
+			LLQuaternion avatarRotationForFollowCam = gAgentAvatarp->isSitting() ? gAgentAvatarp->getRenderRotation() : gAgent.getFrameAgent().getQuaternion();
 
 			LLFollowCamParams* current_cam = LLFollowCamMgr::getActiveFollowCamParams();
 			if (current_cam)
 			{
 				mFollowCam.copyParams(*current_cam);
-				mFollowCam.setSubjectPositionAndRotation( avatarp->getRenderPosition(), avatarRotationForFollowCam );
+				mFollowCam.setSubjectPositionAndRotation( gAgentAvatarp->getRenderPosition(), avatarRotationForFollowCam );
 				mFollowCam.update();
 				LLViewerJoystick::getInstance()->setCameraNeedsUpdate(true);
 			}
@@ -1380,9 +1347,9 @@ void LLAgentCamera::updateCamera()
 			gAgent.setShowAvatar(TRUE);
 		}
 
-		if (avatarp && (mCameraMode != CAMERA_MODE_MOUSELOOK))
+		if (isAgentAvatarValid() && (mCameraMode != CAMERA_MODE_MOUSELOOK))
 		{
-			avatarp->updateAttachmentVisibility(mCameraMode);
+			gAgentAvatarp->updateAttachmentVisibility(mCameraMode);
 		}
 	}
 	else 
@@ -1399,7 +1366,8 @@ void LLAgentCamera::updateCamera()
 		LLVector3d camera_pos_agent = camera_pos_global - agent_pos;
 		// Sitting on what you're manipulating can cause camera jitter with smoothing. 
 		// This turns off smoothing while editing. -MG
-		mCameraSmoothingStop |= (BOOL)LLToolMgr::getInstance()->inBuildMode();
+		bool in_build_mode = LLToolMgr::getInstance()->inBuildMode();
+		mCameraSmoothingStop = mCameraSmoothingStop || in_build_mode;
 		
 		if (cameraThirdPerson() && !mCameraSmoothingStop)
 		{
@@ -1431,7 +1399,7 @@ void LLAgentCamera::updateCamera()
 								 
 		mCameraSmoothingLastPositionGlobal = camera_pos_global;
 		mCameraSmoothingLastPositionAgent = camera_pos_agent;
-		mCameraSmoothingStop = FALSE;
+		mCameraSmoothingStop = false;
 	}
 
 	
@@ -1480,40 +1448,40 @@ void LLAgentCamera::updateCamera()
 	}
 	gAgent.setLastPositionGlobal(global_pos);
 	
-	if (LLVOAvatar::sVisibleInFirstPerson && avatarp && !avatarp->isSitting() && cameraMouselook())
+	if (LLVOAvatar::sVisibleInFirstPerson && isAgentAvatarValid() && !gAgentAvatarp->isSitting() && cameraMouselook())
 	{
-		LLVector3 head_pos = avatarp->mHeadp->getWorldPosition() + 
-			LLVector3(0.08f, 0.f, 0.05f) * avatarp->mHeadp->getWorldRotation() + 
-			LLVector3(0.1f, 0.f, 0.f) * avatarp->mPelvisp->getWorldRotation();
+		LLVector3 head_pos = gAgentAvatarp->mHeadp->getWorldPosition() + 
+			LLVector3(0.08f, 0.f, 0.05f) * gAgentAvatarp->mHeadp->getWorldRotation() + 
+			LLVector3(0.1f, 0.f, 0.f) * gAgentAvatarp->mPelvisp->getWorldRotation();
 		LLVector3 diff = mCameraPositionAgent - head_pos;
-		diff = diff * ~avatarp->mRoot.getWorldRotation();
+		diff = diff * ~gAgentAvatarp->mRoot.getWorldRotation();
 
-		LLJoint* torso_joint = avatarp->mTorsop;
-		LLJoint* chest_joint = avatarp->mChestp;
+		LLJoint* torso_joint = gAgentAvatarp->mTorsop;
+		LLJoint* chest_joint = gAgentAvatarp->mChestp;
 		LLVector3 torso_scale = torso_joint->getScale();
 		LLVector3 chest_scale = chest_joint->getScale();
 
 		// shorten avatar skeleton to avoid foot interpenetration
-		if (!avatarp->mInAir)
+		if (!gAgentAvatarp->mInAir)
 		{
 			LLVector3 chest_offset = LLVector3(0.f, 0.f, chest_joint->getPosition().mV[VZ]) * torso_joint->getWorldRotation();
 			F32 z_compensate = llclamp(-diff.mV[VZ], -0.2f, 1.f);
 			F32 scale_factor = llclamp(1.f - ((z_compensate * 0.5f) / chest_offset.mV[VZ]), 0.5f, 1.2f);
 			torso_joint->setScale(LLVector3(1.f, 1.f, scale_factor));
 
-			LLJoint* neck_joint = avatarp->mNeckp;
+			LLJoint* neck_joint = gAgentAvatarp->mNeckp;
 			LLVector3 neck_offset = LLVector3(0.f, 0.f, neck_joint->getPosition().mV[VZ]) * chest_joint->getWorldRotation();
 			scale_factor = llclamp(1.f - ((z_compensate * 0.5f) / neck_offset.mV[VZ]), 0.5f, 1.2f);
 			chest_joint->setScale(LLVector3(1.f, 1.f, scale_factor));
 			diff.mV[VZ] = 0.f;
 		}
 
-		avatarp->mPelvisp->setPosition(avatarp->mPelvisp->getPosition() + diff);
+		gAgentAvatarp->mPelvisp->setPosition(gAgentAvatarp->mPelvisp->getPosition() + diff);
 
-		avatarp->mRoot.updateWorldMatrixChildren();
+		gAgentAvatarp->mRoot.updateWorldMatrixChildren();
 
-		for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin(); 
-			 iter != avatarp->mAttachmentPoints.end(); )
+		for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
+			 iter != gAgentAvatarp->mAttachmentPoints.end(); )
 		{
 			LLVOAvatar::attachment_map_t::iterator curiter = iter++;
 			LLViewerJointAttachment* attachment = curiter->second;
@@ -1537,6 +1505,11 @@ void LLAgentCamera::updateCamera()
 	}
 }
 
+void LLAgentCamera::updateLastCamera()
+{
+	mLastCameraMode = mCameraMode;
+}
+
 void LLAgentCamera::updateFocusOffset()
 {
 	validateFocusObject();
@@ -1600,8 +1573,6 @@ LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal()
 		clearFocusObject();
 	}
 
-	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
-
 	// Ventrella
 	if (mCameraMode == CAMERA_MODE_FOLLOW && mFocusOnAvatar)
 	{
@@ -1612,12 +1583,12 @@ LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal()
 	{
 		LLVector3d at_axis(1.0, 0.0, 0.0);
 		LLQuaternion agent_rot = gAgent.getFrameAgent().getQuaternion();
-		if (avatarp && avatarp->getParent())
+		if (isAgentAvatarValid() && gAgentAvatarp->getParent())
 		{
-			LLViewerObject* root_object = (LLViewerObject*)avatarp->getRoot();
+			LLViewerObject* root_object = (LLViewerObject*)gAgentAvatarp->getRoot();
 			if (!root_object->flagCameraDecoupled())
 			{
-				agent_rot *= ((LLViewerObject*)(avatarp->getParent()))->getRenderRotation();
+				agent_rot *= ((LLViewerObject*)(gAgentAvatarp->getParent()))->getRenderRotation();
 			}
 		}
 		at_axis = at_axis * agent_rot;
@@ -1667,7 +1638,7 @@ LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal()
 		}
 		return mFocusTargetGlobal;
 	}
-	else if (mSitCameraEnabled && avatarp && avatarp->isSitting() && mSitCameraReferenceObject.notNull())
+	else if (mSitCameraEnabled && isAgentAvatarValid() && gAgentAvatarp->isSitting() && mSitCameraReferenceObject.notNull())
 	{
 		// sit camera
 		LLVector3 object_pos = mSitCameraReferenceObject->getRenderPosition();
@@ -1686,12 +1657,10 @@ LLVector3d LLAgentCamera::calcThirdPersonFocusOffset()
 {
 	// ...offset from avatar
 	LLVector3d focus_offset;
-
-	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
 	LLQuaternion agent_rot = gAgent.getFrameAgent().getQuaternion();
-	if (avatarp && avatarp->getParent())
+	if (isAgentAvatarValid() && gAgentAvatarp->getParent())
 	{
-		agent_rot *= ((LLViewerObject*)(avatarp->getParent()))->getRenderRotation();
+		agent_rot *= ((LLViewerObject*)(gAgentAvatarp->getParent()))->getRenderRotation();
 	}
 
 	focus_offset = mFocusOffsetInitial[mCameraPreset] * agent_rot;
@@ -1700,12 +1669,10 @@ LLVector3d LLAgentCamera::calcThirdPersonFocusOffset()
 
 void LLAgentCamera::setupSitCamera()
 {
-	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
-
 	// agent frame entering this function is in world coordinates
-	if (avatarp && avatarp->getParent())
+	if (isAgentAvatarValid() && gAgentAvatarp->getParent())
 	{
-		LLQuaternion parent_rot = ((LLViewerObject*)avatarp->getParent())->getRenderRotation();
+		LLQuaternion parent_rot = ((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();
 		// slam agent coordinate frame to proper parent local version
 		LLVector3 at_axis = gAgent.getFrameAgent().getAtAxis();
 		at_axis.mV[VZ] = 0.f;
@@ -1768,13 +1735,11 @@ F32	LLAgentCamera::calcCameraFOVZoomFactor()
 //-----------------------------------------------------------------------------
 LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
 {
-	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
-
 	// Compute base camera position and look-at points.
 	F32			camera_land_height;
-	LLVector3d	frame_center_global = !avatarp ? 
+	LLVector3d	frame_center_global = !isAgentAvatarValid() ? 
 		gAgent.getPositionGlobal() :
-		gAgent.getPosGlobalFromAgent(avatarp->mRoot.getWorldPosition());
+		gAgent.getPosGlobalFromAgent(gAgentAvatarp->mRoot.getWorldPosition());
 	
 	BOOL		isConstrained = FALSE;
 	LLVector3d	head_offset;
@@ -1789,32 +1754,32 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
 	}// End Ventrella
 	else if (mCameraMode == CAMERA_MODE_MOUSELOOK)
 	{
-		if (!avatarp || avatarp->mDrawable.isNull())
+		if (!isAgentAvatarValid() || gAgentAvatarp->mDrawable.isNull())
 		{
 			llwarns << "Null avatar drawable!" << llendl;
 			return LLVector3d::zero;
 		}
 		head_offset.clearVec();
-		if (avatarp->isSitting() && avatarp->getParent())
+		if (gAgentAvatarp->isSitting() && gAgentAvatarp->getParent())
 		{
-			avatarp->updateHeadOffset();
-			head_offset.mdV[VX] = avatarp->mHeadOffset.mV[VX];
-			head_offset.mdV[VY] = avatarp->mHeadOffset.mV[VY];
-			head_offset.mdV[VZ] = avatarp->mHeadOffset.mV[VZ] + 0.1f;
-			const LLMatrix4& mat = ((LLViewerObject*) avatarp->getParent())->getRenderMatrix();
+			gAgentAvatarp->updateHeadOffset();
+			head_offset.mdV[VX] = gAgentAvatarp->mHeadOffset.mV[VX];
+			head_offset.mdV[VY] = gAgentAvatarp->mHeadOffset.mV[VY];
+			head_offset.mdV[VZ] = gAgentAvatarp->mHeadOffset.mV[VZ] + 0.1f;
+			const LLMatrix4& mat = ((LLViewerObject*) gAgentAvatarp->getParent())->getRenderMatrix();
 			camera_position_global = gAgent.getPosGlobalFromAgent
-								((avatarp->getPosition()+
-								 LLVector3(head_offset)*avatarp->getRotation()) * mat);
+								((gAgentAvatarp->getPosition()+
+								 LLVector3(head_offset)*gAgentAvatarp->getRotation()) * mat);
 		}
 		else
 		{
-			head_offset.mdV[VZ] = avatarp->mHeadOffset.mV[VZ];
-			if (avatarp->isSitting())
+			head_offset.mdV[VZ] = gAgentAvatarp->mHeadOffset.mV[VZ];
+			if (gAgentAvatarp->isSitting())
 			{
 				head_offset.mdV[VZ] += 0.1;
 			}
-			camera_position_global = gAgent.getPosGlobalFromAgent(avatarp->getRenderPosition());//frame_center_global;
-			head_offset = head_offset * avatarp->getRenderRotation();
+			camera_position_global = gAgent.getPosGlobalFromAgent(gAgentAvatarp->getRenderPosition());//frame_center_global;
+			head_offset = head_offset * gAgentAvatarp->getRenderRotation();
 			camera_position_global = camera_position_global + head_offset;
 		}
 	}
@@ -1824,8 +1789,8 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
 		F32 camera_distance = 0.f;
 
 		if (mSitCameraEnabled 
-			&& avatarp 
-			&& avatarp->isSitting() 
+			&& isAgentAvatarValid() 
+			&& gAgentAvatarp->isSitting() 
 			&& mSitCameraReferenceObject.notNull())
 		{
 			// sit camera
@@ -1841,9 +1806,9 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
 			local_camera_offset = mCameraZoomFraction * getCameraOffsetInitial() * gSavedSettings.getF32("CameraOffsetScale");
 			
 			// are we sitting down?
-			if (avatarp && avatarp->getParent())
+			if (isAgentAvatarValid() && gAgentAvatarp->getParent())
 			{
-				LLQuaternion parent_rot = ((LLViewerObject*)avatarp->getParent())->getRenderRotation();
+				LLQuaternion parent_rot = ((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();
 				// slam agent coordinate frame to proper parent local version
 				LLVector3 at_axis = gAgent.getFrameAgent().getAtAxis() * parent_rot;
 				at_axis.mV[VZ] = 0.f;
@@ -1857,7 +1822,7 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
 				local_camera_offset = gAgent.getFrameAgent().rotateToAbsolute( local_camera_offset );
 			}
 
-			if (!mCameraCollidePlane.isExactlyZero() && (!avatarp || !avatarp->isSitting()))
+			if (!mCameraCollidePlane.isExactlyZero() && (!isAgentAvatarValid() || !gAgentAvatarp->isSitting()))
 			{
 				LLVector3 plane_normal;
 				plane_normal.setVec(mCameraCollidePlane.mV);
@@ -1910,11 +1875,11 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
 			// set the global camera position
 			LLVector3d camera_offset;
 			
-			LLVector3 av_pos = !avatarp ? LLVector3::zero : avatarp->getRenderPosition();
+			LLVector3 av_pos = !isAgentAvatarValid() ? LLVector3::zero : gAgentAvatarp->getRenderPosition();
 			camera_offset.setVec( local_camera_offset );
 			camera_position_global = frame_center_global + head_offset + camera_offset;
 
-			if (avatarp)
+			if (isAgentAvatarValid())
 			{
 				LLVector3d camera_lag_d;
 				F32 lag_interp = LLCriticalDamp::getInterpolant(CAMERA_LAG_HALF_LIFE);
@@ -1922,8 +1887,8 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
 				LLVector3 vel = gAgent.getVelocity();
 
 				// lag by appropriate amount for flying
-				F32 time_in_air = avatarp->mTimeInAir.getElapsedTimeF32();
-				if(!mCameraAnimating && avatarp->mInAir && time_in_air > GROUND_TO_AIR_CAMERA_TRANSITION_START_TIME)
+				F32 time_in_air = gAgentAvatarp->mTimeInAir.getElapsedTimeF32();
+				if(!mCameraAnimating && gAgentAvatarp->mInAir && time_in_air > GROUND_TO_AIR_CAMERA_TRANSITION_START_TIME)
 				{
 					LLVector3 frame_at_axis = gAgent.getFrameAgent().getAtAxis();
 					frame_at_axis -= projected_vec(frame_at_axis, gAgent.getReferenceUpVector());
@@ -1935,7 +1900,7 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
 
 					lag_interp *= u;
 
-					if (gViewerWindow->getLeftMouseDown() && gViewerWindow->getLastPick().mObjectID == avatarp->getID())
+					if (gViewerWindow->getLeftMouseDown() && gViewerWindow->getLastPick().mObjectID == gAgentAvatarp->getID())
 					{
 						// disable camera lag when using mouse-directed steering
 						target_lag.clearVec();
@@ -2136,8 +2101,6 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate)
 		return;
 	}
 
-	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
-
 	// visibility changes at end of animation
 	gViewerWindow->getWindow()->resetBusyCount();
 
@@ -2146,10 +2109,10 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate)
 
 	LLToolMgr::getInstance()->setCurrentToolset(gMouselookToolset);
 
-	if (avatarp)
+	if (isAgentAvatarValid())
 	{
-		avatarp->stopMotion(ANIM_AGENT_BODY_NOISE);
-		avatarp->stopMotion(ANIM_AGENT_BREATHE_ROT);
+		gAgentAvatarp->stopMotion(ANIM_AGENT_BODY_NOISE);
+		gAgentAvatarp->stopMotion(ANIM_AGENT_BREATHE_ROT);
 	}
 
 	//gViewerWindow->stopGrab();
@@ -2161,7 +2124,7 @@ void LLAgentCamera::changeCameraToMouselook(BOOL animate)
 	{
 		gFocusMgr.setKeyboardFocus(NULL);
 		
-		mLastCameraMode = mCameraMode;
+		updateLastCamera();
 		mCameraMode = CAMERA_MODE_MOUSELOOK;
 		const U32 old_flags = gAgent.getControlFlags();
 		gAgent.setControlFlags(AGENT_CONTROL_MOUSELOOK);
@@ -2223,7 +2186,7 @@ void LLAgentCamera::changeCameraToFollow(BOOL animate)
 		}
 		startCameraAnimation();
 
-		mLastCameraMode = mCameraMode;
+		updateLastCamera();
 		mCameraMode = CAMERA_MODE_FOLLOW;
 
 		// bang-in the current focus, position, and up vector of the follow cam
@@ -2234,12 +2197,11 @@ void LLAgentCamera::changeCameraToFollow(BOOL animate)
 			LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset);
 		}
 
-		LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
-		if (avatarp)
+		if (isAgentAvatarValid())
 		{
-			avatarp->mPelvisp->setPosition(LLVector3::zero);
-			avatarp->startMotion( ANIM_AGENT_BODY_NOISE );
-			avatarp->startMotion( ANIM_AGENT_BREATHE_ROT );
+			gAgentAvatarp->mPelvisp->setPosition(LLVector3::zero);
+			gAgentAvatarp->startMotion( ANIM_AGENT_BODY_NOISE );
+			gAgentAvatarp->startMotion( ANIM_AGENT_BREATHE_ROT );
 		}
 
 		// unpause avatar animation
@@ -2278,15 +2240,14 @@ void LLAgentCamera::changeCameraToThirdPerson(BOOL animate)
 
 	mCameraZoomFraction = INITIAL_ZOOM_FRACTION;
 
-	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
-	if (avatarp)
+	if (isAgentAvatarValid())
 	{
-		if (!avatarp->isSitting())
+		if (!gAgentAvatarp->isSitting())
 		{
-			avatarp->mPelvisp->setPosition(LLVector3::zero);
+			gAgentAvatarp->mPelvisp->setPosition(LLVector3::zero);
 		}
-		avatarp->startMotion(ANIM_AGENT_BODY_NOISE);
-		avatarp->startMotion(ANIM_AGENT_BREATHE_ROT);
+		gAgentAvatarp->startMotion(ANIM_AGENT_BODY_NOISE);
+		gAgentAvatarp->startMotion(ANIM_AGENT_BREATHE_ROT);
 	}
 
 	LLVector3 at_axis;
@@ -2308,7 +2269,7 @@ void LLAgentCamera::changeCameraToThirdPerson(BOOL animate)
 			mTargetCameraDistance = MIN_CAMERA_DISTANCE;
 			animate = FALSE;
 		}
-		mLastCameraMode = mCameraMode;
+		updateLastCamera();
 		mCameraMode = CAMERA_MODE_THIRD_PERSON;
 		const U32 old_flags = gAgent.getControlFlags();
 		gAgent.clearControlFlags(AGENT_CONTROL_MOUSELOOK);
@@ -2320,9 +2281,9 @@ void LLAgentCamera::changeCameraToThirdPerson(BOOL animate)
 	}
 
 	// Remove any pitch from the avatar
-	if (avatarp && avatarp->getParent())
+	if (isAgentAvatarValid() && gAgentAvatarp->getParent())
 	{
-		LLQuaternion obj_rot = ((LLViewerObject*)avatarp->getParent())->getRenderRotation();
+		LLQuaternion obj_rot = ((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();
 		at_axis = LLViewerCamera::getInstance()->getAtAxis();
 		at_axis.mV[VZ] = 0.f;
 		at_axis.normalize();
@@ -2379,7 +2340,7 @@ void LLAgentCamera::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL came
 
 	if (mCameraMode != CAMERA_MODE_CUSTOMIZE_AVATAR)
 	{
-		mLastCameraMode = mCameraMode;
+		updateLastCamera();
 		mCameraMode = CAMERA_MODE_CUSTOMIZE_AVATAR;
 		const U32 old_flags = gAgent.getControlFlags();
 		gAgent.clearControlFlags(AGENT_CONTROL_MOUSELOOK);
@@ -2394,8 +2355,7 @@ void LLAgentCamera::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL came
 		LLVOAvatarSelf::onCustomizeStart();
 	}
 
-	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
-	if (avatarp)
+	if (isAgentAvatarValid())
 	{
 		if(avatar_animate)
 		{
@@ -2407,8 +2367,8 @@ void LLAgentCamera::changeCameraToCustomizeAvatar(BOOL avatar_animate, BOOL came
 
 			gAgent.sendAnimationRequest(ANIM_AGENT_CUSTOMIZE, ANIM_REQUEST_START);
 			gAgent.setCustomAnim(TRUE);
-			avatarp->startMotion(ANIM_AGENT_CUSTOMIZE);
-			LLMotion* turn_motion = avatarp->findMotion(ANIM_AGENT_CUSTOMIZE);
+			gAgentAvatarp->startMotion(ANIM_AGENT_CUSTOMIZE);
+			LLMotion* turn_motion = gAgentAvatarp->findMotion(ANIM_AGENT_CUSTOMIZE);
 
 			if (turn_motion)
 			{
@@ -2511,16 +2471,15 @@ void LLAgentCamera::setFocusGlobal(const LLVector3d& focus, const LLUUID &object
 	setFocusObject(gObjectList.findObject(object_id));
 	LLVector3d old_focus = mFocusTargetGlobal;
 	LLViewerObject *focus_obj = mFocusObject;
-	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
 
 	// if focus has changed
 	if (old_focus != focus)
 	{
 		if (focus.isExactlyZero())
 		{
-			if (avatarp)
+			if (isAgentAvatarValid())
 			{
-				mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(avatarp->mHeadp->getWorldPosition());
+				mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(gAgentAvatarp->mHeadp->getWorldPosition());
 			}
 			else
 			{
@@ -2563,9 +2522,9 @@ void LLAgentCamera::setFocusGlobal(const LLVector3d& focus, const LLUUID &object
 	{
 		if (focus.isExactlyZero())
 		{
-			if (avatarp)
+			if (isAgentAvatarValid())
 			{
-				mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(avatarp->mHeadp->getWorldPosition());
+				mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(gAgentAvatarp->mHeadp->getWorldPosition());
 			}
 			else
 			{
@@ -2702,10 +2661,9 @@ void LLAgentCamera::setFocusOnAvatar(BOOL focus_on_avatar, BOOL animate)
 		if (mCameraMode == CAMERA_MODE_THIRD_PERSON)
 		{
 			LLVector3 at_axis;
-			LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
-			if (avatarp && avatarp->getParent())
+			if (isAgentAvatarValid() && gAgentAvatarp->getParent())
 			{
-				LLQuaternion obj_rot = ((LLViewerObject*)avatarp->getParent())->getRenderRotation();
+				LLQuaternion obj_rot = ((LLViewerObject*)gAgentAvatarp->getParent())->getRenderRotation();
 				at_axis = LLViewerCamera::getInstance()->getAtAxis();
 				at_axis.mV[VZ] = 0.f;
 				at_axis.normalize();
@@ -2733,16 +2691,15 @@ void LLAgentCamera::setFocusOnAvatar(BOOL focus_on_avatar, BOOL animate)
 
 BOOL LLAgentCamera::setLookAt(ELookAtType target_type, LLViewerObject *object, LLVector3 position)
 {
-	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
 	if(object && object->isAttachment())
 	{
 		LLViewerObject* parent = object;
 		while(parent)
 		{
-			if (parent == avatarp)
+			if (parent == gAgentAvatarp)
 			{
 				// looking at an attachment on ourselves, which we don't want to do
-				object = avatarp;
+				object = gAgentAvatarp;
 				position.clearVec();
 			}
 			parent = (LLViewerObject*)parent->getParent();
@@ -2751,7 +2708,7 @@ BOOL LLAgentCamera::setLookAt(ELookAtType target_type, LLViewerObject *object, L
 	if(!mLookAt || mLookAt->isDead())
 	{
 		mLookAt = (LLHUDEffectLookAt *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_LOOKAT);
-		mLookAt->setSourceObject(avatarp);
+		mLookAt->setSourceObject(gAgentAvatarp);
 	}
 
 	return mLookAt->setLookAt(target_type, object, position);
@@ -2774,14 +2731,13 @@ void LLAgentCamera::lookAtLastChat()
 		return;
 	}
 
-	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
 	LLVector3 delta_pos;
 	if (chatter->isAvatar())
 	{
 		LLVOAvatar *chatter_av = (LLVOAvatar*)chatter;
-		if (avatarp && chatter_av->mHeadp)
+		if (isAgentAvatarValid() && chatter_av->mHeadp)
 		{
-			delta_pos = chatter_av->mHeadp->getWorldPosition() - avatarp->mHeadp->getWorldPosition();
+			delta_pos = chatter_av->mHeadp->getWorldPosition() - gAgentAvatarp->mHeadp->getWorldPosition();
 		}
 		else
 		{
@@ -2793,7 +2749,7 @@ void LLAgentCamera::lookAtLastChat()
 
 		changeCameraToThirdPerson();
 
-		LLVector3 new_camera_pos = avatarp->mHeadp->getWorldPosition();
+		LLVector3 new_camera_pos = gAgentAvatarp->mHeadp->getWorldPosition();
 		LLVector3 left = delta_pos % LLVector3::z_axis;
 		left.normalize();
 		LLVector3 up = left % delta_pos;
@@ -2822,7 +2778,7 @@ void LLAgentCamera::lookAtLastChat()
 
 		changeCameraToThirdPerson();
 
-		LLVector3 new_camera_pos = avatarp->mHeadp->getWorldPosition();
+		LLVector3 new_camera_pos = gAgentAvatarp->mHeadp->getWorldPosition();
 		LLVector3 left = delta_pos % LLVector3::z_axis;
 		left.normalize();
 		LLVector3 up = left % delta_pos;
@@ -2847,8 +2803,7 @@ BOOL LLAgentCamera::setPointAt(EPointAtType target_type, LLViewerObject *object,
 	if (!mPointAt || mPointAt->isDead())
 	{
 		mPointAt = (LLHUDEffectPointAt *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINTAT);
-		LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
-		mPointAt->setSourceObject(avatarp);
+		mPointAt->setSourceObject(gAgentAvatarp);
 	}
 	return mPointAt->setPointAt(target_type, object, position);
 }
@@ -2871,5 +2826,44 @@ EPointAtType LLAgentCamera::getPointAtType()
 	return POINTAT_TARGET_NONE;
 }
 
+void LLAgentCamera::clearGeneralKeys()
+{
+	mAtKey 				= 0;
+	mWalkKey 			= 0;
+	mLeftKey 			= 0;
+	mUpKey 				= 0;
+	mYawKey 			= 0.f;
+	mPitchKey 			= 0.f;
+}
+
+void LLAgentCamera::clearOrbitKeys()
+{
+	mOrbitLeftKey		= 0.f;
+	mOrbitRightKey		= 0.f;
+	mOrbitUpKey			= 0.f;
+	mOrbitDownKey		= 0.f;
+	mOrbitInKey			= 0.f;
+	mOrbitOutKey		= 0.f;
+}
+
+void LLAgentCamera::clearPanKeys()
+{
+	mPanRightKey		= 0.f;
+	mPanLeftKey			= 0.f;
+	mPanUpKey			= 0.f;
+	mPanDownKey			= 0.f;
+	mPanInKey			= 0.f;
+	mPanOutKey			= 0.f;
+}
+
+// static
+S32 LLAgentCamera::directionToKey(S32 direction)
+{
+	if (direction > 0) return 1;
+	if (direction < 0) return -1;
+	return 0;
+}
+
+
 // EOF
 
diff --git a/indra/newview/llagentcamera.h b/indra/newview/llagentcamera.h
index 6fe645e7d14f0365836736e57ab660ea540e0f71..5cbb1de6f4b482e32d99597f18f751159e7f9776 100644
--- a/indra/newview/llagentcamera.h
+++ b/indra/newview/llagentcamera.h
@@ -33,32 +33,12 @@
 #ifndef LL_LLAGENTCAMERA_H
 #define LL_LLAGENTCAMERA_H
 
-#include "indra_constants.h"
-#include "llevent.h" 				// LLObservable base class
-#include "llagent.h"
-#include "llagentaccess.h"
-#include "llagentconstants.h"
-#include "llagentdata.h" 			// gAgentID, gAgentSessionID
-#include "llcharacter.h" 			// LLAnimPauseRequest
 #include "llfollowcam.h" 			// Ventrella
 #include "llhudeffectlookat.h" 		// EPointAtType
 #include "llhudeffectpointat.h" 	// ELookAtType
-#include "llpointer.h"
-#include "lluicolor.h"
-#include "llvoavatardefines.h"
 
-class LLChat;
-class LLVOAvatarSelf;
-class LLViewerRegion;
-class LLMotion;
-class LLToolset;
-class LLMessageSystem;
-class LLPermissions;
-class LLHost;
-class LLFriendObserver;
 class LLPickInfo;
-class LLViewerObject;
-class LLAgentDropGroupViewerNode;
+class LLVOAvatarSelf;
 
 //--------------------------------------------------------------------
 // Types
@@ -92,8 +72,6 @@ class LLAgentCamera
 	LOG_CLASS(LLAgentCamera);
 
 public:
-	friend class LLAgent;
-
 	//--------------------------------------------------------------------
 	// Constructors / Destructors
 	//--------------------------------------------------------------------
@@ -104,7 +82,7 @@ class LLAgentCamera
 	void			cleanup();
 	void		    setAvatarObject(LLVOAvatarSelf* avatar);
 private:
-	BOOL			mInitialized;
+	bool			mInitialized;
 
 
 	//--------------------------------------------------------------------
@@ -121,8 +99,11 @@ class LLAgentCamera
 	BOOL			cameraCustomizeAvatar() const	{ return (mCameraMode == CAMERA_MODE_CUSTOMIZE_AVATAR /*&& !mCameraAnimating*/); }
 	BOOL			cameraFollow() const			{ return (mCameraMode == CAMERA_MODE_FOLLOW && mLastCameraMode == CAMERA_MODE_FOLLOW); }
 	ECameraMode		getCameraMode() const 			{ return mCameraMode; }
+	ECameraMode		getLastCameraMode() const 		{ return mLastCameraMode; }
 	void			updateCamera();					// Call once per frame to update camera location/orientation
 	void			resetCamera(); 					// Slam camera into its default position
+	void			updateLastCamera();				// Set last camera to current camera
+
 private:
 	ECameraMode		mCameraMode;					// Target mode after transition animation is done
 	ECameraMode		mLastCameraMode;
@@ -157,6 +138,7 @@ class LLAgentCamera
 	BOOL			calcCameraMinDistance(F32 &obj_min_distance);
 	F32				calcCustomizeAvatarUIOffset(const LLVector3d& camera_pos_global);
 	F32				getCurrentCameraBuildOffset() 	{ return (F32)mCameraFocusOffset.length(); }
+	void			clearCameraLag() { mCameraLag.clearVec(); }
 private:
 	F32				mCurrentCameraDistance;	 		// Current camera offset from avatar
 	F32				mTargetCameraDistance;			// Target camera offset from avatar
@@ -169,46 +151,10 @@ class LLAgentCamera
 	LLVector3		mCameraVirtualPositionAgent;	// Camera virtual position (target) before performing FOV zoom
 	LLVector3d      mCameraSmoothingLastPositionGlobal;    
 	LLVector3d      mCameraSmoothingLastPositionAgent;
-	BOOL            mCameraSmoothingStop;
+	bool            mCameraSmoothingStop;
 	LLVector3		mCameraLag;						// Third person camera lag
 	LLVector3		mCameraUpVector;				// Camera's up direction in world coordinates (determines the 'roll' of the view)
 
-	//--------------------------------------------------------------------
-	// Orbit
-	//--------------------------------------------------------------------
-public:
-	void			setOrbitLeftKey(F32 mag)	{ mOrbitLeftKey = mag; }
-	void			setOrbitRightKey(F32 mag)	{ mOrbitRightKey = mag; }
-	void			setOrbitUpKey(F32 mag)		{ mOrbitUpKey = mag; }
-	void			setOrbitDownKey(F32 mag)	{ mOrbitDownKey = mag; }
-	void			setOrbitInKey(F32 mag)		{ mOrbitInKey = mag; }
-	void			setOrbitOutKey(F32 mag)		{ mOrbitOutKey = mag; }
-private:
-	F32				mOrbitLeftKey;
-	F32				mOrbitRightKey;
-	F32				mOrbitUpKey;
-	F32				mOrbitDownKey;
-	F32				mOrbitInKey;
-	F32				mOrbitOutKey;
-
-	//--------------------------------------------------------------------
-	// Pan
-	//--------------------------------------------------------------------
-public:
-	void			setPanLeftKey(F32 mag)		{ mPanLeftKey = mag; }
-	void			setPanRightKey(F32 mag)		{ mPanRightKey = mag; }
-	void			setPanUpKey(F32 mag)		{ mPanUpKey = mag; }
-	void			setPanDownKey(F32 mag)		{ mPanDownKey = mag; }
-	void			setPanInKey(F32 mag)		{ mPanInKey = mag; }
-	void			setPanOutKey(F32 mag)		{ mPanOutKey = mag; }
-private:
-	F32				mPanUpKey;						
-	F32				mPanDownKey;					
-	F32				mPanLeftKey;					
-	F32				mPanRightKey;					
-	F32				mPanInKey;
-	F32				mPanOutKey;	
-	
 	//--------------------------------------------------------------------
 	// Follow
 	//--------------------------------------------------------------------
@@ -356,6 +302,97 @@ class LLAgentCamera
 public:
 	F32				mHUDTargetZoom;	// Target zoom level for HUD objects (used when editing)
 	F32				mHUDCurZoom; 	// Current animated zoom level for HUD objects
+
+
+/********************************************************************************
+ **                                                                            **
+ **                    KEYS
+ **/
+
+public:
+	S32				getAtKey() const		{ return mAtKey; }
+	S32				getWalkKey() const		{ return mWalkKey; }
+	S32				getLeftKey() const		{ return mLeftKey; }
+	S32				getUpKey() const		{ return mUpKey; }
+	F32				getYawKey() const		{ return mYawKey; }
+	F32				getPitchKey() const		{ return mPitchKey; }
+
+	void			setAtKey(S32 mag)		{ mAtKey = mag; }
+	void			setWalkKey(S32 mag)		{ mWalkKey = mag; }
+	void			setLeftKey(S32 mag)		{ mLeftKey = mag; }
+	void			setUpKey(S32 mag)		{ mUpKey = mag; }
+	void			setYawKey(F32 mag)		{ mYawKey = mag; }
+	void			setPitchKey(F32 mag)	{ mPitchKey = mag; }
+
+	void			clearGeneralKeys();
+	static S32		directionToKey(S32 direction); // Changes direction to -1/0/1
+
+private:
+	S32 			mAtKey;				// Either 1, 0, or -1. Indicates that movement key is pressed
+	S32				mWalkKey; 			// Like AtKey, but causes less forward thrust
+	S32 			mLeftKey;
+	S32				mUpKey;
+	F32				mYawKey;
+	F32				mPitchKey;
+
+	//--------------------------------------------------------------------
+	// Orbit
+	//--------------------------------------------------------------------
+public:
+	F32				getOrbitLeftKey() const		{ return mOrbitLeftKey; }
+	F32				getOrbitRightKey() const	{ return mOrbitRightKey; }
+	F32				getOrbitUpKey() const		{ return mOrbitUpKey; }
+	F32				getOrbitDownKey() const		{ return mOrbitDownKey; }
+	F32				getOrbitInKey() const		{ return mOrbitInKey; }
+	F32				getOrbitOutKey() const		{ return mOrbitOutKey; }
+
+	void			setOrbitLeftKey(F32 mag)	{ mOrbitLeftKey = mag; }
+	void			setOrbitRightKey(F32 mag)	{ mOrbitRightKey = mag; }
+	void			setOrbitUpKey(F32 mag)		{ mOrbitUpKey = mag; }
+	void			setOrbitDownKey(F32 mag)	{ mOrbitDownKey = mag; }
+	void			setOrbitInKey(F32 mag)		{ mOrbitInKey = mag; }
+	void			setOrbitOutKey(F32 mag)		{ mOrbitOutKey = mag; }
+
+	void			clearOrbitKeys();
+private:
+	F32				mOrbitLeftKey;
+	F32				mOrbitRightKey;
+	F32				mOrbitUpKey;
+	F32				mOrbitDownKey;
+	F32				mOrbitInKey;
+	F32				mOrbitOutKey;
+
+	//--------------------------------------------------------------------
+	// Pan
+	//--------------------------------------------------------------------
+public:
+	F32				getPanLeftKey() const		{ return mPanLeftKey; }
+	F32				getPanRightKey() const	{ return mPanRightKey; }
+	F32				getPanUpKey() const		{ return mPanUpKey; }
+	F32				getPanDownKey() const		{ return mPanDownKey; }
+	F32				getPanInKey() const		{ return mPanInKey; }
+	F32				getPanOutKey() const		{ return mPanOutKey; }
+
+	void			setPanLeftKey(F32 mag)		{ mPanLeftKey = mag; }
+	void			setPanRightKey(F32 mag)		{ mPanRightKey = mag; }
+	void			setPanUpKey(F32 mag)		{ mPanUpKey = mag; }
+	void			setPanDownKey(F32 mag)		{ mPanDownKey = mag; }
+	void			setPanInKey(F32 mag)		{ mPanInKey = mag; }
+	void			setPanOutKey(F32 mag)		{ mPanOutKey = mag; }
+
+	void			clearPanKeys();
+private:
+	F32				mPanUpKey;						
+	F32				mPanDownKey;					
+	F32				mPanLeftKey;					
+	F32				mPanRightKey;					
+	F32				mPanInKey;
+	F32				mPanOutKey;
+
+/**                    Keys
+ **                                                                            **
+ *******************************************************************************/
+
 };
 
 extern LLAgentCamera gAgentCamera;
diff --git a/indra/newview/llagentui.cpp b/indra/newview/llagentui.cpp
index 4601e3241bccd0327e9ce262f1b010cea1a9639b..c4597ad6f8d55199e584c84be77f5a122fdc752d 100644
--- a/indra/newview/llagentui.cpp
+++ b/indra/newview/llagentui.cpp
@@ -49,12 +49,10 @@
 void LLAgentUI::buildName(std::string& name)
 {
 	name.clear();
-
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (avatarp)
+	if (isAgentAvatarValid())
 	{
-		LLNameValue *first_nv = avatarp->getNVPair("FirstName");
-		LLNameValue *last_nv = avatarp->getNVPair("LastName");
+		LLNameValue *first_nv = gAgentAvatarp->getNVPair("FirstName");
+		LLNameValue *last_nv = gAgentAvatarp->getNVPair("LastName");
 		if (first_nv && last_nv)
 		{
 			name = first_nv->printData() + " " + last_nv->printData();
@@ -73,7 +71,8 @@ void LLAgentUI::buildName(std::string& name)
 //static
 void LLAgentUI::buildFullname(std::string& name)
 {
-	if (gAgent.getAvatarObject()) name = gAgent.getAvatarObject()->getFullname();
+	if (isAgentAvatarValid())
+		name = gAgentAvatarp->getFullname();
 }
 
 //static
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 5eb943877aa580e74aa6ff268ffd0f8da9608c91..9d3b5763e8841877d589efa38fa68d6b2480c0e4 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -31,105 +31,33 @@
  */
 
 #include "llviewerprecompiledheaders.h"
+#include "llagentwearables.h"
 
+#include "llaccordionctrltab.h"
 #include "llagent.h"
 #include "llagentcamera.h"
-#include "llagentwearables.h"
-
+#include "llagentwearablesfetch.h"
+#include "llappearancemgr.h"
 #include "llcallbacklist.h"
 #include "llfloatercustomize.h"
+#include "llfolderview.h"
+#include "llgesturemgr.h"
 #include "llinventorybridge.h"
+#include "llinventoryfunctions.h"
 #include "llinventoryobserver.h"
 #include "llinventorypanel.h"
+#include "llmd5.h"
 #include "llnotificationsutil.h"
+#include "llpaneloutfitsinventory.h"
+#include "llsidetray.h"
+#include "lltexlayer.h"
 #include "llviewerregion.h"
 #include "llvoavatarself.h"
 #include "llwearable.h"
 #include "llwearablelist.h"
-#include "llgesturemgr.h"
-#include "llappearancemgr.h"
-#include "lltexlayer.h"
-#include "llsidetray.h"
-#include "llpaneloutfitsinventory.h"
-#include "llfolderview.h"
-#include "llaccordionctrltab.h"
 
 #include <boost/scoped_ptr.hpp>
 
-#define USE_CURRENT_OUTFIT_FOLDER
-
-//--------------------------------------------------------------------
-// Classes for fetching initial wearables data
-//--------------------------------------------------------------------
-// Outfit folder fetching callback structure.
-class LLInitialWearablesFetch : public LLInventoryFetchDescendentsObserver
-{
-public:
-	LLInitialWearablesFetch() {}
-	~LLInitialWearablesFetch();
-	virtual void done();
-
-	struct InitialWearableData
-	{
-		EWearableType mType;
-		LLUUID mItemID;
-		LLUUID mAssetID;
-		InitialWearableData(EWearableType type, LLUUID& itemID, LLUUID& assetID) :
-			mType(type),
-			mItemID(itemID),
-			mAssetID(assetID)
-		{}
-	};
-
-	typedef std::vector<InitialWearableData> initial_wearable_data_vec_t;
-	initial_wearable_data_vec_t mCOFInitialWearables; // Wearables from the Current Outfit Folder
-	initial_wearable_data_vec_t mAgentInitialWearables; // Wearables from the old agent wearables msg
-
-protected:
-	void processWearablesMessage();
-	void processContents();
-};
-
-class LLLibraryOutfitsFetch : public LLInventoryFetchDescendentsObserver
-{
-public:
-	enum ELibraryOutfitFetchStep {
-		LOFS_FOLDER = 0,
-		LOFS_OUTFITS,
-		LOFS_LIBRARY,
-		LOFS_IMPORTED,
-		LOFS_CONTENTS
-	};
-	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();
-	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;
-	typedef std::vector<LLUUID> clothing_folder_vec_t;
-	clothing_folder_vec_t mLibraryClothingFolders;
-	clothing_folder_vec_t mImportedClothingFolders;
-	bool mOutfitsPopulated;
-	LLUUID mClothingID;
-	LLUUID mLibraryClothingID;
-	LLUUID mImportedClothingID;
-	std::string mImportedClothingName;
-};
-
 LLAgentWearables gAgentWearables;
 
 BOOL LLAgentWearables::mInitialWearablesUpdateReceived = FALSE;
@@ -291,7 +219,7 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i
 	}
 	if (mTodo & CALL_RECOVERDONE)
 	{
-		LLAppearanceManager::instance().addCOFItemLink(inv_item,false);
+		LLAppearanceMgr::instance().addCOFItemLink(inv_item,false);
 		gAgentWearables.recoverMissingWearableDone();
 	}
 	/*
@@ -299,7 +227,7 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i
 	 */
 	if (mTodo & CALL_CREATESTANDARDDONE)
 	{
-		LLAppearanceManager::instance().addCOFItemLink(inv_item,false);
+		LLAppearanceMgr::instance().addCOFItemLink(inv_item,false);
 		gAgentWearables.createStandardWearablesDone(mType, mIndex);
 	}
 	if (mTodo & CALL_MAKENEWOUTFITDONE)
@@ -308,7 +236,7 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i
 	}
 	if (mTodo & CALL_WEARITEM)
 	{
-		LLAppearanceManager::instance().addCOFItemLink(inv_item, true);
+		LLAppearanceMgr::instance().addCOFItemLink(inv_item, true);
 	}
 }
 
@@ -485,7 +413,7 @@ void LLAgentWearables::saveWearable(const EWearableType type, const U32 index, B
 			return;
 		}
 
-		gAgent.getAvatarObject()->wearableUpdated( type, TRUE );
+		gAgentAvatarp->wearableUpdated( type, TRUE );
 
 		if (send_update)
 		{
@@ -783,8 +711,7 @@ U32 LLAgentWearables::pushWearable(const EWearableType type, LLWearable *wearabl
 
 void LLAgentWearables::wearableUpdated(LLWearable *wearable)
 {
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	avatarp->wearableUpdated(wearable->getType(), TRUE);
+	gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE);
 	wearable->refreshName();
 	wearable->setLabelUpdated();
 
@@ -825,11 +752,10 @@ void LLAgentWearables::popWearable(LLWearable *wearable)
 void LLAgentWearables::popWearable(const EWearableType type, U32 index)
 {
 	LLWearable *wearable = getWearable(type, index);
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
 	if (wearable)
 	{
 		mWearableDatas[type].erase(mWearableDatas[type].begin() + index);
-		avatarp->wearableUpdated(wearable->getType(), TRUE);
+		gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE);
 		wearable->setLabelUpdated();
 	}
 }
@@ -961,8 +887,7 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
 	LLUUID agent_id;
 	gMessageSystem->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id);
 
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (avatarp && (agent_id == avatarp->getID()))
+	if (isAgentAvatarValid() && (agent_id == gAgentAvatarp->getID()))
 	{
 		gMessageSystem->getU32Fast(_PREHASH_AgentData, _PREHASH_SerialNum, gAgentQueryManager.mUpdateSerialNum);
 		
@@ -1019,8 +944,7 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
 				
 				// Store initial wearables data until we know whether we have the current outfit folder or need to use the data.
 				LLInitialWearablesFetch::InitialWearableData wearable_data(type, item_id, asset_id); // MULTI-WEARABLE: update
-				outfit->mAgentInitialWearables.push_back(wearable_data);
-				
+				outfit->add(wearable_data);
 			}
 			
 			lldebugs << "       " << LLWearableDictionary::getTypeLabel(type) << llendl;
@@ -1028,9 +952,9 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
 		
 		// Get the complete information on the items in the inventory and set up an observer
 		// that will trigger when the complete information is fetched.
-		LLInventoryFetchDescendentsObserver::folder_ref_t folders;
+		uuid_vec_t folders;
 		folders.push_back(current_outfit_id);
-		outfit->fetchDescendents(folders);
+		outfit->fetch(folders);
 		if(outfit->isEverythingComplete())
 		{
 			// everything is already here - call done.
@@ -1046,64 +970,6 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
 	}
 }
 
-// A single wearable that the avatar was wearing on start-up has arrived from the database.
-// static
-void LLAgentWearables::onInitialWearableAssetArrived(LLWearable* wearable, void* userdata)
-{
-	boost::scoped_ptr<LLInitialWearablesFetch::InitialWearableData> wear_data((LLInitialWearablesFetch::InitialWearableData*)userdata); 
-	const EWearableType type = wear_data->mType;
-	U32 index = 0;
-
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (!avatarp)
-	{
-		return;
-	}
-		
-	if (wearable)
-	{
-		llassert(type == wearable->getType());
-		wearable->setItemID(wear_data->mItemID);
-		index = gAgentWearables.pushWearable(type, wearable);
-		gAgentWearables.mItemsAwaitingWearableUpdate.erase(wear_data->mItemID);
-
-		// disable composites if initial textures are baked
-		avatarp->setupComposites();
-
-		avatarp->setCompositeUpdatesEnabled(TRUE);
-		gInventory.addChangedMask(LLInventoryObserver::LABEL, wearable->getItemID());
-	}
-	else
-	{
-		// Somehow the asset doesn't exist in the database.
-		gAgentWearables.recoverMissingWearable(type,index);
-	}
-	
-
-	gInventory.notifyObservers();
-
-	// Have all the wearables that the avatar was wearing at log-in arrived?
-	// MULTI-WEARABLE: update when multiple wearables can arrive per type.
-
-	gAgentWearables.updateWearablesLoaded();
-	if (gAgentWearables.areWearablesLoaded())
-	{
-
-		// Can't query cache until all wearables have arrived, so calling this earlier is a no-op.
-		gAgentWearables.queryWearableCache();
-
-		// Make sure that the server's idea of the avatar's wearables actually match the wearables.
-		gAgent.sendAgentSetAppearance();
-
-		// Check to see if there are any baked textures that we hadn't uploaded before we logged off last time.
-		// If there are any, schedule them to be uploaded as soon as the layer textures they depend on arrive.
-		if (gAgentCamera.cameraCustomizeAvatar())
-		{
-			avatarp->requestLayerSetUploads();
-		}
-	}
-}
-
 // Normally, all wearables referred to "AgentWearablesUpdate" will correspond to actual assets in the
 // database.  If for some reason, we can't load one of those assets, we can try to reconstruct it so that
 // the user isn't left without a shape, for example.  (We can do that only after the inventory has loaded.)
@@ -1179,7 +1045,7 @@ class OnWearableItemCreatedCB: public LLInventoryCallback
 	{
 		llinfos << "All items created" << llendl;
 		LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy;
-		LLAppearanceManager::instance().linkAll(LLAppearanceManager::instance().getCOF(),
+		LLAppearanceMgr::instance().linkAll(LLAppearanceMgr::instance().getCOF(),
 												mItemsToLink,
 												link_waiter);
 	}
@@ -1239,13 +1105,9 @@ void LLAgentWearables::createStandardWearables(BOOL female)
 	llwarns << "Creating Standard " << (female ? "female" : "male")
 			<< " Wearables" << llendl;
 
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (!avatarp)
-	{
-		return;
-	}
+	if (!isAgentAvatarValid()) return;
 
-	avatarp->setSex(female ? SEX_FEMALE : SEX_MALE);
+	gAgentAvatarp->setSex(female ? SEX_FEMALE : SEX_MALE);
 
 	const BOOL create[WT_COUNT] = 
 		{
@@ -1293,11 +1155,8 @@ void LLAgentWearables::createStandardWearablesDone(S32 type, U32 index)
 {
 	llinfos << "type " << type << " index " << index << llendl;
 
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (avatarp)
-	{
-		avatarp->updateVisualParams();
-	}
+	if (!isAgentAvatarValid()) return;
+	gAgentAvatarp->updateVisualParams();
 }
 
 void LLAgentWearables::createStandardWearablesAllDone()
@@ -1312,8 +1171,7 @@ void LLAgentWearables::createStandardWearablesAllDone()
 	updateServer();
 
 	// Treat this as the first texture entry message, if none received yet
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	avatarp->onFirstTEMessageReceived();
+	gAgentAvatarp->onFirstTEMessageReceived();
 }
 
 // MULTI-WEARABLE: Properly handle multiwearables later.
@@ -1335,11 +1193,7 @@ void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name,
 									 const LLDynamicArray<S32>& attachments_to_include,
 									 BOOL rename_clothing)
 {
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (!avatarp)
-	{
-		return;
-	}
+	if (!isAgentAvatarValid()) return;
 
 	// First, make a folder in the Clothes directory.
 	LLUUID folder_id = gInventory.createNewCategory(
@@ -1437,7 +1291,7 @@ void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name,
 		for (S32 i = 0; i < attachments_to_include.count(); i++)
 		{
 			S32 attachment_pt = attachments_to_include[i];
-			LLViewerJointAttachment* attachment = get_if_there(avatarp->mAttachmentPoints, attachment_pt, (LLViewerJointAttachment*)NULL);
+			LLViewerJointAttachment* attachment = get_if_there(gAgentAvatarp->mAttachmentPoints, attachment_pt, (LLViewerJointAttachment*)NULL);
 			if (!attachment) continue;
 			for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin();
 				 attachment_iter != attachment->mAttachedObjects.end();
@@ -1498,8 +1352,8 @@ class LLShowCreatedOutfit: public LLInventoryCallback
 			tab_outfits->changeOpenClose(tab_outfits->getDisplayChildren());
 		}
 
-		LLAppearanceManager::instance().updateIsDirty();
-		LLAppearanceManager::instance().updatePanelOutfitName("");
+		LLAppearanceMgr::instance().updateIsDirty();
+		LLAppearanceMgr::instance().updatePanelOutfitName("");
 	}
 	
 	virtual void fire(const LLUUID&)
@@ -1512,11 +1366,7 @@ class LLShowCreatedOutfit: public LLInventoryCallback
 
 LLUUID LLAgentWearables::makeNewOutfitLinks(const std::string& new_folder_name)
 {
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (!avatarp)
-	{
-		return LLUUID::null;
-	}
+	if (!isAgentAvatarValid()) return LLUUID::null;
 
 	// First, make a folder in the My Outfits directory.
 	const LLUUID parent_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
@@ -1526,8 +1376,8 @@ LLUUID LLAgentWearables::makeNewOutfitLinks(const std::string& new_folder_name)
 		new_folder_name);
 
 	LLPointer<LLInventoryCallback> cb = new LLShowCreatedOutfit(folder_id);
-	LLAppearanceManager::instance().shallowCopyCategoryContents(LLAppearanceManager::instance().getCOF(),folder_id, cb);
-	LLAppearanceManager::instance().createBaseOutfitLink(folder_id, cb);
+	LLAppearanceMgr::instance().shallowCopyCategoryContents(LLAppearanceMgr::instance().getCOF(),folder_id, cb);
+	LLAppearanceMgr::instance().createBaseOutfitLink(folder_id, cb);
 
 	return folder_id;
 }
@@ -1594,6 +1444,7 @@ void LLAgentWearables::removeWearable(const EWearableType type, bool do_remove_a
 			{
 				LLSD payload;
 				payload["wearable_type"] = (S32)type;
+				payload["wearable_index"] = (S32)index;
 				// Bring up view-modal dialog: Save changes? Yes, No, Cancel
 				LLNotificationsUtil::add("WearableSave", LLSD(), payload, &LLAgentWearables::onRemoveWearableDialog);
 				return;
@@ -1607,22 +1458,21 @@ void LLAgentWearables::removeWearable(const EWearableType type, bool do_remove_a
 }
 
 
-// MULTI_WEARABLE: assuming one wearable per type.
-// MULTI_WEARABLE: hardwiring 0th elt for now - notification needs to change.
 // static 
 bool LLAgentWearables::onRemoveWearableDialog(const LLSD& notification, const LLSD& response)
 {
 	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
 	EWearableType type = (EWearableType)notification["payload"]["wearable_type"].asInteger();
+	S32 index = (S32)notification["payload"]["wearable_index"].asInteger();
 	switch(option)
 	{
 		case 0:  // "Save"
-			gAgentWearables.saveWearable(type, 0);
-			gAgentWearables.removeWearableFinal(type, false, 0);
+			gAgentWearables.saveWearable(type, index);
+			gAgentWearables.removeWearableFinal(type, false, index);
 			break;
 
 		case 1:  // "Don't Save"
-			gAgentWearables.removeWearableFinal(type, false, 0);
+			gAgentWearables.removeWearableFinal(type, false, index);
 			break;
 
 		case 2: // "Cancel"
@@ -1674,31 +1524,25 @@ void LLAgentWearables::removeWearableFinal(const EWearableType type, bool do_rem
 }
 
 // Assumes existing wearables are not dirty.
-// MULTI_WEARABLE: assumes one wearable per type.
 void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& items,
 										 const LLDynamicArray< LLWearable* >& wearables,
 										 BOOL remove)
 {
 	llinfos << "setWearableOutfit() start" << llendl;
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-
-	BOOL wearables_to_remove[WT_COUNT];
-	wearables_to_remove[WT_SHAPE]		= FALSE;
-	wearables_to_remove[WT_SKIN]		= FALSE;
-	wearables_to_remove[WT_HAIR]		= FALSE;
-	wearables_to_remove[WT_EYES]		= FALSE;
-	wearables_to_remove[WT_SHIRT]		= remove;
-	wearables_to_remove[WT_PANTS]		= remove;
-	wearables_to_remove[WT_SHOES]		= remove;
-	wearables_to_remove[WT_SOCKS]		= remove;
-	wearables_to_remove[WT_JACKET]		= remove;
-	wearables_to_remove[WT_GLOVES]		= remove;
-	wearables_to_remove[WT_UNDERSHIRT]	= (!gAgent.isTeen()) & remove;
-	wearables_to_remove[WT_UNDERPANTS]	= (!gAgent.isTeen()) & remove;
-	wearables_to_remove[WT_SKIRT]		= remove;
-	wearables_to_remove[WT_ALPHA]		= remove;
-	wearables_to_remove[WT_TATTOO]		= remove;
 
+	// TODO: Removed check for ensuring that teens don't remove undershirt and underwear. Handle later
+	if (remove)
+	{
+		// note: shirt is the first non-body part wearable item. Update if wearable order changes.
+		// This loop should remove all clothing, but not any body parts
+		for (S32 type = 0; type < (S32)WT_COUNT; type++)
+		{
+			if (LLWearableDictionary::getAssetType((EWearableType)type) == LLAssetType::AT_CLOTHING)
+			{
+				removeWearable((EWearableType)type, true, 0);
+			}
+		}
+	}
 
 	S32 count = wearables.count();
 	llassert(items.count() == count);
@@ -1713,82 +1557,31 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
 		if (new_wearable)
 		{
 			const EWearableType type = new_wearable->getType();
-			wearables_to_remove[type] = FALSE;
+		
+			new_wearable->setName(new_item->getName());
+			new_wearable->setItemID(new_item->getUUID());
 
-			// MULTI_WEARABLE: using 0th
-			LLWearable* old_wearable = getWearable(type, 0);
-			if (old_wearable)
+			if (LLWearableDictionary::getAssetType(type) == LLAssetType::AT_BODYPART)
 			{
-				// Special case where you're putting on a wearable that has the same assetID
-				// as the previous (e.g. wear a shirt then wear a copy of that shirt) since in this
-				// case old_wearable == new_wearable.
-				if (old_wearable == new_wearable)
-				{
-					old_wearable->setLabelUpdated();
-					new_wearable->setName(new_item->getName());
-					new_wearable->setItemID(new_item->getUUID());
-				}
-
-				const LLUUID& old_item_id = getWearableItemID(type, 0);
-				if ((old_wearable->getAssetID() == new_wearable->getAssetID()) &&
-				    (old_item_id == new_item->getUUID()))
-				{
-					lldebugs << "No change to wearable asset and item: " << LLWearableDictionary::getInstance()->getWearableEntry(type) << llendl;
-					continue;
-				}
-				
-				// Assumes existing wearables are not dirty.
-				if (old_wearable->isDirty())
-				{
-					llassert(0);
-					continue;
-				}
+				// exactly one wearable per body part
+				setWearable(type,0,new_wearable);
 			}
-			
-			new_wearable->setItemID(new_item->getUUID());
-			setWearable(type,0,new_wearable);
-		}
-	}
-
-	std::vector<LLWearable*> wearables_being_removed;
-
-	for (i = 0; i < WT_COUNT; i++)
-	{
-		if (wearables_to_remove[i])
-		{
-			// MULTI_WEARABLE: assuming 0th
-			LLWearable* wearable = getWearable((EWearableType)i, 0);
-			const LLUUID &item_id = getWearableItemID((EWearableType)i,0);
-			gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
-			if (wearable)
+			else
 			{
-				wearables_being_removed.push_back(wearable);
+				pushWearable(type,new_wearable);
 			}
-			removeWearable((EWearableType)i,true,0);
+			wearableUpdated(new_wearable);
+			checkWearableAgainstInventory(new_wearable);
 		}
 	}
 
 	gInventory.notifyObservers();
 
-
-	std::vector<LLWearable*>::iterator wearable_iter;
-
-	for (wearable_iter = wearables_being_removed.begin(); 
-		 wearable_iter != wearables_being_removed.end();
-		 ++wearable_iter)
-	{
-		LLWearable* wearablep = *wearable_iter;
-		if (wearablep)
-		{
-			wearablep->removeFromAvatar(TRUE);
-		}
-	}
-
-	if (avatarp)
+	if (isAgentAvatarValid())
 	{
-		avatarp->setCompositeUpdatesEnabled(TRUE);
-		avatarp->updateVisualParams();
-		avatarp->invalidateAll();
+		gAgentAvatarp->setCompositeUpdatesEnabled(TRUE);
+		gAgentAvatarp->updateVisualParams();
+		gAgentAvatarp->invalidateAll();
 	}
 
 	// Start rendering & update the server
@@ -1847,6 +1640,7 @@ bool LLAgentWearables::onSetWearableDialog(const LLSD& notification, const LLSD&
 {
 	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
 	LLInventoryItem* new_item = gInventory.getItem(notification["payload"]["item_id"].asUUID());
+	U32 index = gAgentWearables.getWearableIndex(wearable);
 	if (!new_item)
 	{
 		delete wearable;
@@ -1856,8 +1650,7 @@ bool LLAgentWearables::onSetWearableDialog(const LLSD& notification, const LLSD&
 	switch(option)
 	{
 		case 0:  // "Save"
-// MULTI_WEARABLE: assuming 0th
-			gAgentWearables.saveWearable(wearable->getType(),0);
+			gAgentWearables.saveWearable(wearable->getType(),index);
 			gAgentWearables.setWearableFinal(new_item, wearable);
 			break;
 
@@ -1947,30 +1740,35 @@ void LLAgentWearables::queryWearableCache()
 	for (U8 baked_index = 0; baked_index < BAKED_NUM_INDICES; baked_index++)
 	{
 		const LLVOAvatarDictionary::BakedEntry *baked_dict = LLVOAvatarDictionary::getInstance()->getBakedTexture((EBakedTextureIndex)baked_index);
-		LLUUID hash;
+		LLMD5 hash;
+		bool hash_computed = false;
 		for (U8 i=0; i < baked_dict->mWearables.size(); i++)
 		{
 			const EWearableType baked_type = baked_dict->mWearables[i];
-			// MULTI_WEARABLE: not order-dependent
 			const U32 num_wearables = getWearableCount(baked_type);
 			for (U32 index = 0; index < num_wearables; ++index)
 			{
 				const LLWearable* wearable = getWearable(baked_type,index);
 				if (wearable)
 				{
-					hash ^= wearable->getAssetID();
+					LLUUID asset_id = wearable->getAssetID();
+					hash.update((const unsigned char*)asset_id.mData, UUID_BYTES);
+					hash_computed = true;
 				}
 			}
 		}
-		if (hash.notNull())
+		hash.finalize();
+		if (hash_computed)
 		{
-			hash ^= baked_dict->mWearablesHashID;
+			LLUUID hash_id;
+			hash.raw_digest(hash_id.mData);
+			hash_id ^= baked_dict->mWearablesHashID;
 			num_queries++;
 			// *NOTE: make sure at least one request gets packed
 
 			//llinfos << "Requesting texture for hash " << hash << " in baked texture slot " << baked_index << llendl;
 			gMessageSystem->nextBlockFast(_PREHASH_WearableData);
-			gMessageSystem->addUUIDFast(_PREHASH_ID, hash);
+			gMessageSystem->addUUIDFast(_PREHASH_ID, hash_id);
 			gMessageSystem->addU8Fast(_PREHASH_TextureIndex, (U8)baked_index);
 		}
 
@@ -1983,16 +1781,24 @@ void LLAgentWearables::queryWearableCache()
 	gAgentQueryManager.mWearablesCacheQueryID++;
 }
 
-// MULTI_WEARABLE: need a way to specify by wearable rather than by type.
 // User has picked "remove from avatar" from a menu.
 // static
-void LLAgentWearables::userRemoveWearable(EWearableType& type)
+void LLAgentWearables::userRemoveWearable(const EWearableType &type, const U32 &index)
 {
-	if (!(type==WT_SHAPE || type==WT_SKIN || type==WT_HAIR)) //&&
+	if (!(type==WT_SHAPE || type==WT_SKIN || type==WT_HAIR || type==WT_EYES)) //&&
 		//!((!gAgent.isTeen()) && (type==WT_UNDERPANTS || type==WT_UNDERSHIRT)))
 	{
-		// MULTI_WEARABLE: fixed to 0th for now.
-		gAgentWearables.removeWearable(type,false,0);
+		gAgentWearables.removeWearable(type,false,index);
+	}
+}
+
+//static 
+void LLAgentWearables::userRemoveWearablesOfType(const EWearableType &type)
+{
+	if (!(type==WT_SHAPE || type==WT_SKIN || type==WT_HAIR || type==WT_EYES)) //&&
+		//!((!gAgent.isTeen()) && (type==WT_UNDERPANTS || type==WT_UNDERSHIRT)))
+	{
+		gAgentWearables.removeWearable(type,true,0);
 	}
 }
 
@@ -2038,12 +1844,7 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj
 	// already wearing and in request set -> leave alone.
 	// not wearing and in request set -> put on.
 
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (!avatarp)
-	{
-		llwarns << "No avatar found." << llendl;
-		return;
-	}
+	if (!isAgentAvatarValid()) return;
 
 	std::set<LLUUID> requested_item_ids;
 	std::set<LLUUID> current_item_ids;
@@ -2052,8 +1853,8 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj
 
 	// Build up list of objects to be removed and items currently attached.
 	llvo_vec_t objects_to_remove;
-	for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin(); 
-		 iter != avatarp->mAttachmentPoints.end();)
+	for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
+		 iter != gAgentAvatarp->mAttachmentPoints.end();)
 	{
 		LLVOAvatar::attachment_map_t::iterator curiter = iter++;
 		LLViewerJointAttachment* attachment = curiter->second;
@@ -2109,12 +1910,7 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj
 
 void LLAgentWearables::userRemoveMultipleAttachments(llvo_vec_t& objects_to_remove)
 {
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (!avatarp)
-	{
-		llwarns << "No avatar found." << llendl;
-		return;
-	}
+	if (!isAgentAvatarValid()) return;
 
 	if (objects_to_remove.empty())
 		return;
@@ -2137,17 +1933,12 @@ void LLAgentWearables::userRemoveMultipleAttachments(llvo_vec_t& objects_to_remo
 
 void LLAgentWearables::userRemoveAllAttachments()
 {
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (!avatarp)
-	{
-		llwarns << "No avatar found." << llendl;
-		return;
-	}
+	if (!isAgentAvatarValid()) return;
 
 	llvo_vec_t objects_to_remove;
 	
-	for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin(); 
-		 iter != avatarp->mAttachmentPoints.end();)
+	for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
+		 iter != gAgentAvatarp->mAttachmentPoints.end();)
 	{
 		LLVOAvatar::attachment_map_t::iterator curiter = iter++;
 		LLViewerJointAttachment* attachment = curiter->second;
@@ -2274,484 +2065,14 @@ 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;
+	uuid_vec_t folders;
 	outfits->mMyOutfitsID = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
 
 	folders.push_back(outfits->mMyOutfitsID);
 	gInventory.addObserver(outfits);
-	outfits->fetchDescendents(folders);
+	outfits->fetch(folders);
 	if (outfits->isEverythingComplete())
 	{
 		outfits->done();
 	}
 }
-
-void LLLibraryOutfitsFetch::done()
-{
-	// Delay this until idle() routine, since it's a heavy operation and
-	// we also can't have it run within notifyObservers.
-	doOnIdle(boost::bind(&LLLibraryOutfitsFetch::doneIdle,this));
-	gInventory.removeObserver(this); // Prevent doOnIdle from being added twice.
-}
-
-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();
-			break;
-		default:
-			llwarns << "Got invalid state for outfit fetch: " << mCurrFetchStep << llendl;
-			mOutfitsPopulated = TRUE;
-			break;
-	}
-
-	// We're completely done.  Cleanup.
-	if (mOutfitsPopulated)
-	{
-		gInventory.removeObserver(this);
-		delete this;
-		return;
-	}
-}
-
-void LLLibraryOutfitsFetch::folderDone(void)
-{
-	LLInventoryModel::cat_array_t cat_array;
-	LLInventoryModel::item_array_t 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;
-	}
-
-	mClothingID = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
-	mLibraryClothingID = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING, false, true);
-
-	// If Library->Clothing->Initial Outfits exists, use that.
-	LLNameCategoryCollector matchFolderFunctor("Initial Outfits");
-	gInventory.collectDescendentsIf(mLibraryClothingID,
-									cat_array, wearable_array, 
-									LLInventoryModel::EXCLUDE_TRASH,
-									matchFolderFunctor);
-	if (cat_array.count() > 0)
-	{
-		const LLViewerInventoryCategory *cat = cat_array.get(0);
-		mLibraryClothingID = cat->getUUID();
-	}
-
-	mCompleteFolders.clear();
-	
-	// Get the complete information on the items in the inventory.
-	LLInventoryFetchDescendentsObserver::folder_ref_t folders;
-	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;
-	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, skip "Ruth"
-		// because it's a low quality legacy outfit
-		if (cat->getName() != "Ruth")
-		{
-			// Get the name of every outfit in the library 
-			folders.push_back(cat->getUUID());
-			mLibraryClothingFolders.push_back(cat->getUUID());
-		}
-	}
-	cat_array.clear();
-	wearable_array.clear();
-
-	// Check if you already have an "Imported Library Clothing" folder
-	LLNameCategoryCollector matchFolderFunctor(mImportedClothingName);
-	gInventory.collectDescendentsIf(mClothingID, 
-									cat_array, wearable_array, 
-									LLInventoryModel::EXCLUDE_TRASH,
-									matchFolderFunctor);
-	if (cat_array.size() > 0)
-	{
-		const LLViewerInventoryCategory *cat = cat_array.get(0);
-		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 (!LLApp::isExiting() && mLibraryOutfitsFetcher)
-		{
-			gInventory.addObserver(mLibraryOutfitsFetcher);
-			mLibraryOutfitsFetcher->done();
-		}
-	}
-	
-	/* virtual */ void fire(const LLUUID& inv_item)
-	{
-		mFireCount++;
-	}
-private:
-	U32 mFireCount;
-	LLLibraryOutfitsFetch * mLibraryOutfitsFetcher;
-};
-
-// Copy the clothing folders from the library into the imported clothing folder
-void LLLibraryOutfitsFetch::libraryDone(void)
-{
-	if (mImportedClothingID != LLUUID::null)
-	{
-		// Skip straight to fetching the contents of the imported folder
-		importedFolderFetch();
-		return;
-	}
-
-	// Remove observer; next autopopulation step will be triggered externally by LLLibraryOutfitsCopyDone.
-	gInventory.removeObserver(this);
-	
-	LLPointer<LLInventoryCallback> copy_waiter = new LLLibraryOutfitsCopyDone(this);
-	mImportedClothingID = gInventory.createNewCategory(mClothingID,
-													   LLFolderType::FT_NONE,
-													   mImportedClothingName);
-	// Copy each folder from library into clothing unless it already exists.
-	for (clothing_folder_vec_t::const_iterator iter = mLibraryClothingFolders.begin();
-		 iter != mLibraryClothingFolders.end();
-		 ++iter)
-	{
-		const LLUUID& src_folder_id = (*iter); // Library clothing folder ID
-		const LLViewerInventoryCategory *cat = gInventory.getCategory(src_folder_id);
-		if (!cat)
-		{
-			llwarns << "Library folder import for uuid:" << src_folder_id << " failed to find folder." << llendl;
-			continue;
-		}
-		
-		if (!LLAppearanceManager::getInstance()->getCanMakeFolderIntoOutfit(src_folder_id))
-		{
-			llinfos << "Skipping non-outfit folder name:" << cat->getName() << llendl;
-			continue;
-		}
-		
-		// Don't copy the category if it already exists.
-		LLNameCategoryCollector matchFolderFunctor(cat->getName());
-		LLInventoryModel::cat_array_t cat_array;
-		LLInventoryModel::item_array_t wearable_array;
-		gInventory.collectDescendentsIf(mImportedClothingID, 
-										cat_array, wearable_array, 
-										LLInventoryModel::EXCLUDE_TRASH,
-										matchFolderFunctor);
-		if (cat_array.size() > 0)
-		{
-			continue;
-		}
-
-		LLUUID dst_folder_id = gInventory.createNewCategory(mImportedClothingID,
-															LLFolderType::FT_NONE,
-															cat->getName());
-		LLAppearanceManager::getInstance()->shallowCopyCategoryContents(src_folder_id, dst_folder_id, copy_waiter);
-	}
-}
-
-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::importedFolderDone(void)
-{
-	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(cat->getUUID());
-	}
-	
-	mCompleteFolders.clear();
-	fetchDescendents(folders);
-	if (isEverythingComplete())
-	{
-		done();
-	}
-}
-
-void LLLibraryOutfitsFetch::contentsDone(void)
-{		
-	LLInventoryModel::cat_array_t cat_array;
-	LLInventoryModel::item_array_t wearable_array;
-	
-	for (clothing_folder_vec_t::const_iterator folder_iter = mImportedClothingFolders.begin();
-		 folder_iter != mImportedClothingFolders.end();
-		 ++folder_iter)
-	{
-		const LLUUID &folder_id = (*folder_iter);
-		const LLViewerInventoryCategory *cat = gInventory.getCategory(folder_id);
-		if (!cat)
-		{
-			llwarns << "Library folder import for uuid:" << folder_id << " failed to find folder." << llendl;
-			continue;
-		}
-		
-		// First, make a folder in the My Outfits directory.
-		LLUUID new_outfit_folder_id = gInventory.createNewCategory(mMyOutfitsID, LLFolderType::FT_OUTFIT, cat->getName());
-		
-		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_id, 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;
-}
-
-//--------------------------------------------------------------------
-// InitialWearablesFetch
-// 
-// This grabs contents from the COF and processes them.
-// The processing is handled in idle(), i.e. outside of done(),
-// to avoid gInventory.notifyObservers recursion.
-//--------------------------------------------------------------------
-
-LLInitialWearablesFetch::~LLInitialWearablesFetch()
-{
-}
-
-// virtual
-void LLInitialWearablesFetch::done()
-{
-	// Delay processing the actual results of this so it's not handled within
-	// gInventory.notifyObservers.  The results will be handled in the next
-	// idle tick instead.
-	gInventory.removeObserver(this);
-	doOnIdle(boost::bind(&LLInitialWearablesFetch::processContents,this));
-}
-
-void LLInitialWearablesFetch::processContents()
-{
-	// Fetch the wearable items from the Current Outfit Folder
-	LLInventoryModel::cat_array_t cat_array;
-	LLInventoryModel::item_array_t wearable_array;
-	LLFindWearables is_wearable;
-	gInventory.collectDescendentsIf(mCompleteFolders.front(), cat_array, wearable_array, 
-									LLInventoryModel::EXCLUDE_TRASH, is_wearable);
-
-	LLAppearanceManager::instance().setAttachmentInvLinkEnable(true);
-	if (wearable_array.count() > 0)
-	{
-		LLAppearanceManager::instance().updateAppearanceFromCOF();
-	}
-	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;
-}
-
-class LLFetchAndLinkObserver: public LLInventoryFetchObserver
-{
-public:
-	LLFetchAndLinkObserver(LLInventoryFetchObserver::item_ref_t& ids):
-		m_ids(ids),
-		LLInventoryFetchObserver(true) // retry for missing items
-	{
-	}
-	~LLFetchAndLinkObserver()
-	{
-	}
-	virtual void done()
-	{
-		gInventory.removeObserver(this);
-
-		// Link to all fetched items in COF.
-		LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy;
-		for (LLInventoryFetchObserver::item_ref_t::iterator it = m_ids.begin();
-			 it != m_ids.end();
-			 ++it)
-		{
-			LLUUID id = *it;
-			LLViewerInventoryItem *item = gInventory.getItem(*it);
-			if (!item)
-			{
-				llwarns << "fetch failed!" << llendl;
-				continue;
-			}
-
-			link_inventory_item(gAgent.getID(),
-								item->getLinkedUUID(),
-								LLAppearanceManager::instance().getCOF(),
-								item->getName(),
-								LLAssetType::AT_LINK,
-								link_waiter);
-		}
-	}
-private:
-	LLInventoryFetchObserver::item_ref_t m_ids;
-};
-
-void LLInitialWearablesFetch::processWearablesMessage()
-{
-	if (!mAgentInitialWearables.empty()) // We have an empty current outfit folder, use the message data instead.
-	{
-		const LLUUID current_outfit_id = LLAppearanceManager::instance().getCOF();
-		LLInventoryFetchObserver::item_ref_t ids;
-		for (U8 i = 0; i < mAgentInitialWearables.size(); ++i)
-		{
-			// Populate the current outfit folder with links to the wearables passed in the message
-			InitialWearableData *wearable_data = new InitialWearableData(mAgentInitialWearables[i]); // This will be deleted in the callback.
-			
-			if (wearable_data->mAssetID.notNull())
-			{
-#ifdef USE_CURRENT_OUTFIT_FOLDER
-				ids.push_back(wearable_data->mItemID);
-#endif
-#if 0
-// 				// Fetch the wearables
-// 				LLWearableList::instance().getAsset(wearable_data->mAssetID,
-// 													LLStringUtil::null,
-// 													LLWearableDictionary::getAssetType(wearable_data->mType),
-// 													LLAgentWearables::onInitialWearableAssetArrived, (void*)(wearable_data));
-#endif
-			}
-			else
-			{
-				llinfos << "Invalid wearable, type " << wearable_data->mType << " itemID "
-				<< wearable_data->mItemID << " assetID " << wearable_data->mAssetID << llendl;
-				delete wearable_data;
-			}
-		}
-
-		// Add all current attachments to the requested items as well.
-		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-		if(avatarp)
-		{
-			for (LLVOAvatar::attachment_map_t::const_iterator iter = avatarp->mAttachmentPoints.begin(); 
-				 iter != avatarp->mAttachmentPoints.end(); ++iter)
-			{
-				LLViewerJointAttachment* attachment = iter->second;
-				if (!attachment) continue;
-				for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin();
-					 attachment_iter != attachment->mAttachedObjects.end();
-					 ++attachment_iter)
-				{
-					LLViewerObject* attached_object = (*attachment_iter);
-					if (!attached_object) continue;
-					const LLUUID& item_id = attached_object->getItemID();
-					if (item_id.isNull()) continue;
-					ids.push_back(item_id);
-				}
-			}
-		}
-
-		// Need to fetch the inventory items for ids, then create links to them after they arrive.
-		LLFetchAndLinkObserver *fetcher = new LLFetchAndLinkObserver(ids);
-		fetcher->fetchItems(ids);
-		// If no items to be fetched, done will never be triggered.
-		// TODO: Change LLInventoryFetchObserver::fetchItems to trigger done() on this condition.
-		if (fetcher->isEverythingComplete())
-		{
-			fetcher->done();
-		}
-		else
-		{
-			gInventory.addObserver(fetcher);
-		}
-	}
-	else
-	{
-		LL_WARNS("Wearables") << "No current outfit folder items found and no initial wearables fallback message received." << LL_ENDL;
-	}
-}
-
-
diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h
index 652ffd4587bee40591ba6fd42a82a0aa177c2c03..b76367324ce24550536f70b5bdc12dcd436d319b 100644
--- a/indra/newview/llagentwearables.h
+++ b/indra/newview/llagentwearables.h
@@ -174,7 +174,7 @@ class LLAgentWearables
 	
 	// Should only be called if we *know* we've never done so before, since users may
 	// not want the Library outfits to stay in their quick outfit selector and can delete them.
-	void			populateMyOutfitsFolder(void);
+	void			populateMyOutfitsFolder();
 
 private:
 	void			makeNewOutfitDone(S32 type, U32 index); 
@@ -193,8 +193,8 @@ class LLAgentWearables
 	// Static UI hooks
 	//--------------------------------------------------------------------
 public:
-	// MULTI-WEARABLE: assuming one wearable per type.  Need upstream changes.
-	static void		userRemoveWearable(EWearableType& type);
+	static void		userRemoveWearable(const EWearableType &type, const U32 &index);
+	static void		userRemoveWearablesOfType(const EWearableType &type);
 	static void		userRemoveAllClothes();	
 	
 	typedef std::vector<LLViewerObject*> llvo_vec_t;
diff --git a/indra/newview/llagentwearablesfetch.cpp b/indra/newview/llagentwearablesfetch.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3d6740f5a1bf6fa5563ceaf600e0e72adb667b97
--- /dev/null
+++ b/indra/newview/llagentwearablesfetch.cpp
@@ -0,0 +1,516 @@
+/** 
+ * @file llagentwearablesfetch.cpp
+ * @brief LLAgentWearblesFetch class implementation
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ * 
+ * Copyright (c) 2001-2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llagentwearablesfetch.h"
+
+#include "llagent.h"
+#include "llagentwearables.h"
+#include "llappearancemgr.h"
+#include "llinventoryfunctions.h"
+#include "llvoavatarself.h"
+
+LLInitialWearablesFetch::LLInitialWearablesFetch()
+{
+}
+
+LLInitialWearablesFetch::~LLInitialWearablesFetch()
+{
+}
+
+// virtual
+void LLInitialWearablesFetch::done()
+{
+	// Delay processing the actual results of this so it's not handled within
+	// gInventory.notifyObservers.  The results will be handled in the next
+	// idle tick instead.
+	gInventory.removeObserver(this);
+	doOnIdleOneTime(boost::bind(&LLInitialWearablesFetch::processContents,this));
+}
+
+void LLInitialWearablesFetch::add(InitialWearableData &data)
+
+{
+	mAgentInitialWearables.push_back(data);
+}
+
+void LLInitialWearablesFetch::processContents()
+{
+	// Fetch the wearable items from the Current Outfit Folder
+	LLInventoryModel::cat_array_t cat_array;
+	LLInventoryModel::item_array_t wearable_array;
+	LLFindWearables is_wearable;
+	gInventory.collectDescendentsIf(mComplete.front(), cat_array, wearable_array, 
+									LLInventoryModel::EXCLUDE_TRASH, is_wearable);
+
+	LLAppearanceMgr::instance().setAttachmentInvLinkEnable(true);
+	if (wearable_array.count() > 0)
+	{
+		LLAppearanceMgr::instance().updateAppearanceFromCOF();
+	}
+	else
+	{
+		// if we're constructing the COF from the wearables message, we don't have a proper outfit link
+		LLAppearanceMgr::instance().setOutfitDirty(true);
+		processWearablesMessage();
+	}
+	delete this;
+}
+
+class LLFetchAndLinkObserver: public LLInventoryFetchObserver
+{
+public:
+	LLFetchAndLinkObserver(uuid_vec_t& ids):
+		m_ids(ids),
+		LLInventoryFetchObserver(true) // retry for missing items
+	{
+	}
+	~LLFetchAndLinkObserver()
+	{
+	}
+	virtual void done()
+	{
+		gInventory.removeObserver(this);
+
+		// Link to all fetched items in COF.
+		LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy;
+		for (uuid_vec_t::iterator it = m_ids.begin();
+			 it != m_ids.end();
+			 ++it)
+		{
+			LLUUID id = *it;
+			LLViewerInventoryItem *item = gInventory.getItem(*it);
+			if (!item)
+			{
+				llwarns << "fetch failed!" << llendl;
+				continue;
+			}
+
+			link_inventory_item(gAgent.getID(),
+								item->getLinkedUUID(),
+								LLAppearanceMgr::instance().getCOF(),
+								item->getName(),
+								LLAssetType::AT_LINK,
+								link_waiter);
+		}
+	}
+private:
+	uuid_vec_t m_ids;
+};
+
+void LLInitialWearablesFetch::processWearablesMessage()
+{
+	if (!mAgentInitialWearables.empty()) // We have an empty current outfit folder, use the message data instead.
+	{
+		const LLUUID current_outfit_id = LLAppearanceMgr::instance().getCOF();
+		uuid_vec_t ids;
+		for (U8 i = 0; i < mAgentInitialWearables.size(); ++i)
+		{
+			// Populate the current outfit folder with links to the wearables passed in the message
+			InitialWearableData *wearable_data = new InitialWearableData(mAgentInitialWearables[i]); // This will be deleted in the callback.
+			
+			if (wearable_data->mAssetID.notNull())
+			{
+				ids.push_back(wearable_data->mItemID);
+			}
+			else
+			{
+				llinfos << "Invalid wearable, type " << wearable_data->mType << " itemID "
+				<< wearable_data->mItemID << " assetID " << wearable_data->mAssetID << llendl;
+				delete wearable_data;
+			}
+		}
+
+		// Add all current attachments to the requested items as well.
+		if (isAgentAvatarValid())
+		{
+			for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
+				 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)
+			{
+				LLViewerJointAttachment* attachment = iter->second;
+				if (!attachment) continue;
+				for (LLViewerJointAttachment::attachedobjs_vec_t::iterator attachment_iter = attachment->mAttachedObjects.begin();
+					 attachment_iter != attachment->mAttachedObjects.end();
+					 ++attachment_iter)
+				{
+					LLViewerObject* attached_object = (*attachment_iter);
+					if (!attached_object) continue;
+					const LLUUID& item_id = attached_object->getItemID();
+					if (item_id.isNull()) continue;
+					ids.push_back(item_id);
+				}
+			}
+		}
+
+		// Need to fetch the inventory items for ids, then create links to them after they arrive.
+		LLFetchAndLinkObserver *fetcher = new LLFetchAndLinkObserver(ids);
+		fetcher->fetch(ids);
+		// If no items to be fetched, done will never be triggered.
+		// TODO: Change LLInventoryFetchObserver::fetchItems to trigger done() on this condition.
+		if (fetcher->isEverythingComplete())
+		{
+			fetcher->done();
+		}
+		else
+		{
+			gInventory.addObserver(fetcher);
+		}
+	}
+	else
+	{
+		LL_WARNS("Wearables") << "No current outfit folder items found and no initial wearables fallback message received." << LL_ENDL;
+	}
+}
+
+LLLibraryOutfitsFetch::LLLibraryOutfitsFetch() : 
+	mCurrFetchStep(LOFS_FOLDER), 
+	mOutfitsPopulated(false) 
+{
+	mMyOutfitsID = LLUUID::null;
+	mClothingID = LLUUID::null;
+	mLibraryClothingID = LLUUID::null;
+	mImportedClothingID = LLUUID::null;
+	mImportedClothingName = "Imported Library Clothing";
+}
+
+LLLibraryOutfitsFetch::~LLLibraryOutfitsFetch()
+{
+}
+
+void LLLibraryOutfitsFetch::done()
+{
+	// Delay this until idle() routine, since it's a heavy operation and
+	// we also can't have it run within notifyObservers.
+	doOnIdleOneTime(boost::bind(&LLLibraryOutfitsFetch::doneIdle,this));
+	gInventory.removeObserver(this); // Prevent doOnIdleOneTime from being added twice.
+}
+
+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();
+			break;
+		default:
+			llwarns << "Got invalid state for outfit fetch: " << mCurrFetchStep << llendl;
+			mOutfitsPopulated = TRUE;
+			break;
+	}
+
+	// We're completely done.  Cleanup.
+	if (mOutfitsPopulated)
+	{
+		gInventory.removeObserver(this);
+		delete this;
+		return;
+	}
+}
+
+void LLLibraryOutfitsFetch::folderDone()
+{
+	LLInventoryModel::cat_array_t cat_array;
+	LLInventoryModel::item_array_t 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;
+	}
+
+	mClothingID = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
+	mLibraryClothingID = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING, false, true);
+
+	// If Library->Clothing->Initial Outfits exists, use that.
+	LLNameCategoryCollector matchFolderFunctor("Initial Outfits");
+	gInventory.collectDescendentsIf(mLibraryClothingID,
+									cat_array, wearable_array, 
+									LLInventoryModel::EXCLUDE_TRASH,
+									matchFolderFunctor);
+	if (cat_array.count() > 0)
+	{
+		const LLViewerInventoryCategory *cat = cat_array.get(0);
+		mLibraryClothingID = cat->getUUID();
+	}
+
+	mComplete.clear();
+	
+	// Get the complete information on the items in the inventory.
+	uuid_vec_t folders;
+	folders.push_back(mClothingID);
+	folders.push_back(mLibraryClothingID);
+	fetch(folders);
+	if (isEverythingComplete())
+	{
+		done();
+	}
+}
+
+void LLLibraryOutfitsFetch::outfitsDone()
+{
+	LLInventoryModel::cat_array_t cat_array;
+	LLInventoryModel::item_array_t wearable_array;
+	uuid_vec_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, skip "Ruth"
+		// because it's a low quality legacy outfit
+		if (cat->getName() != "Ruth")
+		{
+			// Get the name of every outfit in the library 
+			folders.push_back(cat->getUUID());
+			mLibraryClothingFolders.push_back(cat->getUUID());
+		}
+	}
+	cat_array.clear();
+	wearable_array.clear();
+
+	// Check if you already have an "Imported Library Clothing" folder
+	LLNameCategoryCollector matchFolderFunctor(mImportedClothingName);
+	gInventory.collectDescendentsIf(mClothingID, 
+									cat_array, wearable_array, 
+									LLInventoryModel::EXCLUDE_TRASH,
+									matchFolderFunctor);
+	if (cat_array.size() > 0)
+	{
+		const LLViewerInventoryCategory *cat = cat_array.get(0);
+		mImportedClothingID = cat->getUUID();
+	}
+	
+	mComplete.clear();
+	
+	fetch(folders);
+	if (isEverythingComplete())
+	{
+		done();
+	}
+}
+
+class LLLibraryOutfitsCopyDone: public LLInventoryCallback
+{
+public:
+	LLLibraryOutfitsCopyDone(LLLibraryOutfitsFetch * fetcher):
+	mFireCount(0), mLibraryOutfitsFetcher(fetcher)
+	{
+	}
+	
+	virtual ~LLLibraryOutfitsCopyDone()
+	{
+		if (!LLApp::isExiting() && mLibraryOutfitsFetcher)
+		{
+			gInventory.addObserver(mLibraryOutfitsFetcher);
+			mLibraryOutfitsFetcher->done();
+		}
+	}
+	
+	/* virtual */ void fire(const LLUUID& inv_item)
+	{
+		mFireCount++;
+	}
+private:
+	U32 mFireCount;
+	LLLibraryOutfitsFetch * mLibraryOutfitsFetcher;
+};
+
+// Copy the clothing folders from the library into the imported clothing folder
+void LLLibraryOutfitsFetch::libraryDone()
+{
+	if (mImportedClothingID != LLUUID::null)
+	{
+		// Skip straight to fetching the contents of the imported folder
+		importedFolderFetch();
+		return;
+	}
+
+	// Remove observer; next autopopulation step will be triggered externally by LLLibraryOutfitsCopyDone.
+	gInventory.removeObserver(this);
+	
+	LLPointer<LLInventoryCallback> copy_waiter = new LLLibraryOutfitsCopyDone(this);
+	mImportedClothingID = gInventory.createNewCategory(mClothingID,
+													   LLFolderType::FT_NONE,
+													   mImportedClothingName);
+	// Copy each folder from library into clothing unless it already exists.
+	for (uuid_vec_t::const_iterator iter = mLibraryClothingFolders.begin();
+		 iter != mLibraryClothingFolders.end();
+		 ++iter)
+	{
+		const LLUUID& src_folder_id = (*iter); // Library clothing folder ID
+		const LLViewerInventoryCategory *cat = gInventory.getCategory(src_folder_id);
+		if (!cat)
+		{
+			llwarns << "Library folder import for uuid:" << src_folder_id << " failed to find folder." << llendl;
+			continue;
+		}
+		
+		if (!LLAppearanceMgr::getInstance()->getCanMakeFolderIntoOutfit(src_folder_id))
+		{
+			llinfos << "Skipping non-outfit folder name:" << cat->getName() << llendl;
+			continue;
+		}
+		
+		// Don't copy the category if it already exists.
+		LLNameCategoryCollector matchFolderFunctor(cat->getName());
+		LLInventoryModel::cat_array_t cat_array;
+		LLInventoryModel::item_array_t wearable_array;
+		gInventory.collectDescendentsIf(mImportedClothingID, 
+										cat_array, wearable_array, 
+										LLInventoryModel::EXCLUDE_TRASH,
+										matchFolderFunctor);
+		if (cat_array.size() > 0)
+		{
+			continue;
+		}
+
+		LLUUID dst_folder_id = gInventory.createNewCategory(mImportedClothingID,
+															LLFolderType::FT_NONE,
+															cat->getName());
+		LLAppearanceMgr::getInstance()->shallowCopyCategoryContents(src_folder_id, dst_folder_id, copy_waiter);
+	}
+}
+
+void LLLibraryOutfitsFetch::importedFolderFetch()
+{
+	// Fetch the contents of the Imported Clothing Folder
+	uuid_vec_t folders;
+	folders.push_back(mImportedClothingID);
+	
+	mComplete.clear();
+	
+	fetch(folders);
+	if (isEverythingComplete())
+	{
+		done();
+	}
+}
+
+void LLLibraryOutfitsFetch::importedFolderDone()
+{
+	LLInventoryModel::cat_array_t cat_array;
+	LLInventoryModel::item_array_t wearable_array;
+	uuid_vec_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(cat->getUUID());
+	}
+	
+	mComplete.clear();
+	fetch(folders);
+	if (isEverythingComplete())
+	{
+		done();
+	}
+}
+
+void LLLibraryOutfitsFetch::contentsDone()
+{		
+	LLInventoryModel::cat_array_t cat_array;
+	LLInventoryModel::item_array_t wearable_array;
+	
+	for (uuid_vec_t::const_iterator folder_iter = mImportedClothingFolders.begin();
+		 folder_iter != mImportedClothingFolders.end();
+		 ++folder_iter)
+	{
+		const LLUUID &folder_id = (*folder_iter);
+		const LLViewerInventoryCategory *cat = gInventory.getCategory(folder_id);
+		if (!cat)
+		{
+			llwarns << "Library folder import for uuid:" << folder_id << " failed to find folder." << llendl;
+			continue;
+		}
+		
+		// First, make a folder in the My Outfits directory.
+		LLUUID new_outfit_folder_id = gInventory.createNewCategory(mMyOutfitsID, LLFolderType::FT_OUTFIT, cat->getName());
+		
+		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_id, 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;
+}
+
diff --git a/indra/newview/llagentwearablesfetch.h b/indra/newview/llagentwearablesfetch.h
new file mode 100644
index 0000000000000000000000000000000000000000..1d0c6739bab1861312c37bd25d62f98c5e894485
--- /dev/null
+++ b/indra/newview/llagentwearablesfetch.h
@@ -0,0 +1,118 @@
+/** 
+ * @file llagentwearablesinitialfetch.h
+ * @brief LLAgentWearablesInitialFetch class header file
+ *
+ * $LicenseInfo:firstyear=2000&license=viewergpl$
+ * 
+ * Copyright (c) 2000-2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLAGENTWEARABLESINITIALFETCH_H
+#define LL_LLAGENTWEARABLESINITIALFETCH_H
+
+#include "llinventoryobserver.h"
+#include "llwearabledictionary.h"
+#include "lluuid.h"
+
+//--------------------------------------------------------------------
+// InitialWearablesFetch
+// 
+// This grabs contents from the COF and processes them.
+// The processing is handled in idle(), i.e. outside of done(),
+// to avoid gInventory.notifyObservers recursion.
+//--------------------------------------------------------------------
+class LLInitialWearablesFetch : public LLInventoryFetchDescendentsObserver
+{
+public:
+	LLInitialWearablesFetch();
+	~LLInitialWearablesFetch();
+	virtual void done();
+
+	struct InitialWearableData
+	{
+		EWearableType mType;
+		LLUUID mItemID;
+		LLUUID mAssetID;
+		InitialWearableData(EWearableType type, LLUUID& itemID, LLUUID& assetID) :
+			mType(type),
+			mItemID(itemID),
+			mAssetID(assetID)
+		{}
+	};
+
+	void add(InitialWearableData &data);
+
+protected:
+	void processWearablesMessage();
+	void processContents();
+
+private:
+	typedef std::vector<InitialWearableData> initial_wearable_data_vec_t;
+	initial_wearable_data_vec_t mAgentInitialWearables; // Wearables from the old agent wearables msg
+};
+
+//--------------------------------------------------------------------
+// InitialWearablesFetch
+// 
+// This grabs outfits from the Library and copies those over to the user's
+// outfits folder, typically during first-ever login.
+//--------------------------------------------------------------------
+class LLLibraryOutfitsFetch : public LLInventoryFetchDescendentsObserver
+{
+public:
+	enum ELibraryOutfitFetchStep
+	{
+		LOFS_FOLDER = 0,
+		LOFS_OUTFITS,
+		LOFS_LIBRARY,
+		LOFS_IMPORTED,
+		LOFS_CONTENTS
+	};
+
+	LLLibraryOutfitsFetch();
+	~LLLibraryOutfitsFetch();
+
+	virtual void done();
+	void doneIdle();
+	LLUUID mMyOutfitsID;
+	void importedFolderFetch();
+protected:
+	void folderDone();
+	void outfitsDone();
+	void libraryDone();
+	void importedFolderDone();
+	void contentsDone();
+	enum ELibraryOutfitFetchStep mCurrFetchStep;
+	uuid_vec_t mLibraryClothingFolders;
+	uuid_vec_t mImportedClothingFolders;
+	bool mOutfitsPopulated;
+	LLUUID mClothingID;
+	LLUUID mLibraryClothingID;
+	LLUUID mImportedClothingID;
+	std::string mImportedClothingName;
+};
+
+#endif // LL_AGENTWEARABLESINITIALFETCH_H
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index b3dfb8f1415e9a45d8c17d38bd8537aa1067cf43..e0f1d5348dbf93e34dde52553a9d40d122e41ad4 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -39,6 +39,7 @@
 #include "llfloatercustomize.h"
 #include "llgesturemgr.h"
 #include "llinventorybridge.h"
+#include "llinventoryfunctions.h"
 #include "llinventoryobserver.h"
 #include "llnotificationsutil.h"
 #include "llsidepanelappearance.h"
@@ -73,23 +74,6 @@ LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id,const std::string&
 	}
 }
 
-// support for secondlife:///app/appearance SLapps
-class LLAppearanceHandler : public LLCommandHandler
-{
-public:
-	// requests will be throttled from a non-trusted browser
-	LLAppearanceHandler() : LLCommandHandler("appearance", UNTRUSTED_THROTTLE) {}
-
-	bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web)
-	{
-		// support secondlife:///app/appearance/show, but for now we just
-		// make all secondlife:///app/appearance SLapps behave this way
-		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD());
-		return true;
-	}
-};
-LLAppearanceHandler gAppearanceHandler;
-
 class LLWearInventoryCategoryCallback : public LLInventoryCallback
 {
 public:
@@ -119,7 +103,7 @@ class LLWearInventoryCategoryCallback : public LLInventoryCallback
 		// If the inventory callback manager goes away, we're shutting down, no longer want the callback.
 		if( LLInventoryCallbackManager::is_instantiated() )
 		{
-			LLAppearanceManager::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mCatID), mAppend);
+			LLAppearanceMgr::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mCatID), mAppend);
 		}
 		else
 		{
@@ -132,175 +116,6 @@ class LLWearInventoryCategoryCallback : public LLInventoryCallback
 	bool mAppend;
 };
 
-class LLOutfitObserver : public LLInventoryFetchObserver
-{
-public:
-	LLOutfitObserver(const LLUUID& cat_id, bool copy_items, bool append) :
-		mCatID(cat_id),
-		mCopyItems(copy_items),
-		mAppend(append)
-	{}
-	~LLOutfitObserver() {}
-	virtual void done();
-	void doWearCategory();
-
-protected:
-	LLUUID mCatID;
-	bool mCopyItems;
-	bool mAppend;
-};
-
-void LLOutfitObserver::done()
-{
-	llinfos << "done 2nd stage fetch" << llendl;
-	gInventory.removeObserver(this);
-	doOnIdle(boost::bind(&LLOutfitObserver::doWearCategory,this));
-}
-
-void LLOutfitObserver::doWearCategory()
-{
-	llinfos << "starting" << llendl;
-	
-	// We now have an outfit ready to be copied to agent inventory. Do
-	// it, and wear that outfit normally.
-	if(mCopyItems)
-	{
-		LLInventoryCategory* cat = gInventory.getCategory(mCatID);
-		std::string name;
-		if(!cat)
-		{
-			// should never happen.
-			name = "New Outfit";
-		}
-		else
-		{
-			name = cat->getName();
-		}
-		LLViewerInventoryItem* item = NULL;
-		item_ref_t::iterator it = mComplete.begin();
-		item_ref_t::iterator end = mComplete.end();
-		LLUUID pid;
-		for(; it < end; ++it)
-		{
-			item = (LLViewerInventoryItem*)gInventory.getItem(*it);
-			if(item)
-			{
-				if(LLInventoryType::IT_GESTURE == item->getInventoryType())
-				{
-					pid = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);
-				}
-				else
-				{
-					pid = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
-				}
-				break;
-			}
-		}
-		if(pid.isNull())
-		{
-			pid = gInventory.getRootFolderID();
-		}
-		
-		LLUUID cat_id = gInventory.createNewCategory(
-			pid,
-			LLFolderType::FT_NONE,
-			name);
-		mCatID = cat_id;
-		LLPointer<LLInventoryCallback> cb = new LLWearInventoryCategoryCallback(mCatID, mAppend);
-		it = mComplete.begin();
-		for(; it < end; ++it)
-		{
-			item = (LLViewerInventoryItem*)gInventory.getItem(*it);
-			if(item)
-			{
-				copy_inventory_item(
-					gAgent.getID(),
-					item->getPermissions().getOwner(),
-					item->getUUID(),
-					cat_id,
-					std::string(),
-					cb);
-			}
-		}
-		// BAP fixes a lag in display of created dir.
-		gInventory.notifyObservers();
-	}
-	else
-	{
-		// Wear the inventory category.
-		LLAppearanceManager::instance().wearInventoryCategoryOnAvatar(gInventory.getCategory(mCatID), mAppend);
-	}
-	delete this;
-}
-
-class LLOutfitFetch : public LLInventoryFetchDescendentsObserver
-{
-public:
-	LLOutfitFetch(bool copy_items, bool append) : mCopyItems(copy_items), mAppend(append) {}
-	~LLOutfitFetch() {}
-	virtual void done();
-protected:
-	bool mCopyItems;
-	bool mAppend;
-};
-
-void LLOutfitFetch::done()
-{
-	// What we do here is get the complete information on the items in
-	// the library, and set up an observer that will wait for that to
-	// happen.
-	llinfos << "done first stage fetch" << llendl;
-	
-	LLInventoryModel::cat_array_t cat_array;
-	LLInventoryModel::item_array_t item_array;
-	gInventory.collectDescendents(mCompleteFolders.front(),
-								  cat_array,
-								  item_array,
-								  LLInventoryModel::EXCLUDE_TRASH);
-	S32 count = item_array.count();
-	if(!count)
-	{
-		llwarns << "Nothing fetched in category " << mCompleteFolders.front()
-				<< llendl;
-		//dec_busy_count();
-		gInventory.removeObserver(this);
-		delete this;
-		return;
-	}
-
-	LLOutfitObserver* outfit_observer = new LLOutfitObserver(mCompleteFolders.front(), mCopyItems, mAppend);
-	LLInventoryFetchObserver::item_ref_t ids;
-	for(S32 i = 0; i < count; ++i)
-	{
-		ids.push_back(item_array.get(i)->getUUID());
-	}
-
-	// clean up, and remove this as an observer since the call to the
-	// outfit could notify observers and throw us into an infinite
-	// loop.
-	//dec_busy_count();
-	gInventory.removeObserver(this);
-
-	// increment busy count and either tell the inventory to check &
-	// call done, or add this object to the inventory for observation.
-	//inc_busy_count();
-
-	// do the fetch
-	outfit_observer->fetchItems(ids);
-	if(outfit_observer->isEverythingComplete())
-	{
-		// everything is already here - call done.
-		outfit_observer->done();
-	}
-	else
-	{
-		// it's all on it's way - add an observer, and the inventory
-		// will call done for us when everything is here.
-		gInventory.addObserver(outfit_observer);
-	}
-	delete this;
-}
-
 LLUpdateAppearanceOnDestroy::LLUpdateAppearanceOnDestroy():
 	mFireCount(0)
 {
@@ -312,7 +127,7 @@ LLUpdateAppearanceOnDestroy::~LLUpdateAppearanceOnDestroy()
 	
 	if (!LLApp::isExiting())
 	{
-		LLAppearanceManager::instance().updateAppearanceFromCOF();
+		LLAppearanceMgr::instance().updateAppearanceFromCOF();
 	}
 }
 
@@ -368,6 +183,7 @@ class LLWearableHoldingPattern
 	void recoverMissingWearable(EWearableType type);
 	void clearCOFLinksForMissingWearables();
 	
+	void onWearableAssetFetch(LLWearable *wearable);
 	void onAllComplete();
 	
 	typedef std::list<LLFoundData> found_list_t;
@@ -450,12 +266,12 @@ void LLWearableHoldingPattern::onAllComplete()
 	{
 		llinfos << "Activating " << mGestItems.count() << " gestures" << llendl;
 		
-		LLGestureManager::instance().activateGestures(mGestItems);
+		LLGestureMgr::instance().activateGestures(mGestItems);
 		
 		// Update the inventory item labels to reflect the fact
 		// they are active.
 		LLViewerInventoryCategory* catp =
-			gInventory.getCategory(LLAppearanceManager::instance().getCOF());
+			gInventory.getCategory(LLAppearanceMgr::instance().getCOF());
 		
 		if (catp)
 		{
@@ -466,11 +282,10 @@ void LLWearableHoldingPattern::onAllComplete()
 
 	// Update wearables.
 	llinfos << "Updating agent wearables with " << mResolved << " wearable items " << llendl;
-	LLAppearanceManager::instance().updateAgentWearables(this, false);
+	LLAppearanceMgr::instance().updateAgentWearables(this, false);
 	
 	// Update attachments to match those requested.
-	LLVOAvatar* avatar = gAgent.getAvatarObject();
-	if( avatar )
+	if (isAgentAvatarValid())
 	{
 		llinfos << "Updating " << mObjItems.count() << " attachments" << llendl;
 		LLAgentWearables::userUpdateAttachments(mObjItems);
@@ -581,7 +396,7 @@ class RecoveredItemCB: public LLInventoryCallback
 		{
 			link_inventory_item( gAgent.getID(),
 					     item_id,
-					     LLAppearanceManager::instance().getCOF(),
+					     LLAppearanceMgr::instance().getCOF(),
 					     itemp->getName(),
 					     LLAssetType::AT_LINK,
 					     cb);
@@ -632,7 +447,7 @@ void LLWearableHoldingPattern::clearCOFLinksForMissingWearables()
 		{
 			// Wearable link that was never resolved; remove links to it from COF
 			llinfos << "removing link for unresolved item " << data.mItemID.asString() << llendl;
-			LLAppearanceManager::instance().removeCOFItemLinks(data.mItemID,false);
+			LLAppearanceMgr::instance().removeCOFItemLinks(data.mItemID,false);
 		}
 	}
 }
@@ -657,11 +472,10 @@ bool LLWearableHoldingPattern::pollMissingWearables()
 	return done;
 }
 
-static void onWearableAssetFetch(LLWearable* wearable, void* data)
+void LLWearableHoldingPattern::onWearableAssetFetch(LLWearable *wearable)
 {
-	LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data;
-	holder->mResolved += 1;  // just counting callbacks, not successes.
-	llinfos << "onWearableAssetFetch, resolved count " << holder->mResolved << " of requested " << holder->mFoundList.size() << llendl;
+	mResolved += 1;  // just counting callbacks, not successes.
+	llinfos << "onWearableAssetFetch, resolved count " << mResolved << " of requested " << mFoundList.size() << llendl;
 	if (wearable)
 	{
 		llinfos << "wearable found, type " << wearable->getType() << " asset " << wearable->getAssetID() << llendl;
@@ -671,7 +485,7 @@ static void onWearableAssetFetch(LLWearable* wearable, void* data)
 		llwarns << "no wearable found" << llendl;
 	}
 
-	if (holder->mFired)
+	if (mFired)
 	{
 		llwarns << "called after holder fired" << llendl;
 		return;
@@ -682,8 +496,8 @@ static void onWearableAssetFetch(LLWearable* wearable, void* data)
 		return;
 	}
 
-	for (LLWearableHoldingPattern::found_list_t::iterator iter = holder->mFoundList.begin();
-		 iter != holder->mFoundList.end(); ++iter)
+	for (LLWearableHoldingPattern::found_list_t::iterator iter = mFoundList.begin();
+		 iter != mFoundList.end(); ++iter)
 	{
 		LLFoundData& data = *iter;
 		if(wearable->getAssetID() == data.mAssetID)
@@ -696,6 +510,12 @@ static void onWearableAssetFetch(LLWearable* wearable, void* data)
 	}
 }
 
+static void onWearableAssetFetch(LLWearable* wearable, void* data)
+{
+	LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data;
+	holder->onWearableAssetFetch(wearable);
+}
+
 
 static void removeDuplicateItems(LLInventoryModel::item_array_t& items)
 {
@@ -724,13 +544,13 @@ static void removeDuplicateItems(LLInventoryModel::item_array_t& items)
 	items = new_items;
 }
 
-const LLUUID LLAppearanceManager::getCOF() const
+const LLUUID LLAppearanceMgr::getCOF() const
 {
 	return gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
 }
 
 
-const LLViewerInventoryItem* LLAppearanceManager::getBaseOutfitLink()
+const LLViewerInventoryItem* LLAppearanceMgr::getBaseOutfitLink()
 {
 	const LLUUID& current_outfit_cat = getCOF();
 	LLInventoryModel::cat_array_t cat_array;
@@ -758,7 +578,7 @@ const LLViewerInventoryItem* LLAppearanceManager::getBaseOutfitLink()
 	return NULL;
 }
 
-bool LLAppearanceManager::getBaseOutfitName(std::string& name)
+bool LLAppearanceMgr::getBaseOutfitName(std::string& name)
 {
 	const LLViewerInventoryItem* outfit_link = getBaseOutfitLink();
 	if(outfit_link)
@@ -774,15 +594,15 @@ bool LLAppearanceManager::getBaseOutfitName(std::string& name)
 }
 
 // Update appearance from outfit folder.
-void LLAppearanceManager::changeOutfit(bool proceed, const LLUUID& category, bool append)
+void LLAppearanceMgr::changeOutfit(bool proceed, const LLUUID& category, bool append)
 {
 	if (!proceed)
 		return;
-	LLAppearanceManager::instance().updateCOF(category,append);
+	LLAppearanceMgr::instance().updateCOF(category,append);
 }
 
 // Create a copy of src_id + contents as a subfolder of dst_id.
-void LLAppearanceManager::shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id,
+void LLAppearanceMgr::shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id,
 											  LLPointer<LLInventoryCallback> cb)
 {
 	LLInventoryCategory *src_cat = gInventory.getCategory(src_id);
@@ -805,7 +625,7 @@ void LLAppearanceManager::shallowCopyCategory(const LLUUID& src_id, const LLUUID
 }
 
 // Copy contents of src_id to dst_id.
-void LLAppearanceManager::shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id,
+void LLAppearanceMgr::shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id,
 													  LLPointer<LLInventoryCallback> cb)
 {
 	LLInventoryModel::cat_array_t* cats;
@@ -861,7 +681,7 @@ void LLAppearanceManager::shallowCopyCategoryContents(const LLUUID& src_id, cons
 	}
 }
 
-BOOL LLAppearanceManager::getCanMakeFolderIntoOutfit(const LLUUID& folder_id)
+BOOL LLAppearanceMgr::getCanMakeFolderIntoOutfit(const LLUUID& folder_id)
 {
 	// These are the wearable items that are required for considering this
 	// folder as containing a complete outfit.
@@ -893,7 +713,7 @@ BOOL LLAppearanceManager::getCanMakeFolderIntoOutfit(const LLUUID& folder_id)
 }
 
 
-void LLAppearanceManager::purgeBaseOutfitLink(const LLUUID& category)
+void LLAppearanceMgr::purgeBaseOutfitLink(const LLUUID& category)
 {
 	LLInventoryModel::cat_array_t cats;
 	LLInventoryModel::item_array_t items;
@@ -915,7 +735,7 @@ void LLAppearanceManager::purgeBaseOutfitLink(const LLUUID& category)
 	}
 }
 
-void LLAppearanceManager::purgeCategory(const LLUUID& category, bool keep_outfit_links)
+void LLAppearanceMgr::purgeCategory(const LLUUID& category, bool keep_outfit_links)
 {
 	LLInventoryModel::cat_array_t cats;
 	LLInventoryModel::item_array_t items;
@@ -935,7 +755,7 @@ void LLAppearanceManager::purgeCategory(const LLUUID& category, bool keep_outfit
 
 // Keep the last N wearables of each type.  For viewer 2.0, N is 1 for
 // both body parts and clothing items.
-void LLAppearanceManager::filterWearableItems(
+void LLAppearanceMgr::filterWearableItems(
 	LLInventoryModel::item_array_t& items, S32 max_per_type)
 {
 	// Divvy items into arrays by wearable type.
@@ -971,7 +791,7 @@ void LLAppearanceManager::filterWearableItems(
 }
 
 // Create links to all listed items.
-void LLAppearanceManager::linkAll(const LLUUID& category,
+void LLAppearanceMgr::linkAll(const LLUUID& category,
 								  LLInventoryModel::item_array_t& items,
 								  LLPointer<LLInventoryCallback> cb)
 {
@@ -987,7 +807,7 @@ void LLAppearanceManager::linkAll(const LLUUID& category,
 	}
 }
 
-void LLAppearanceManager::updateCOF(const LLUUID& category, bool append)
+void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
 {
 	LLViewerInventoryCategory *pcat = gInventory.getCategory(category);
 	llinfos << "starting, cat " << (pcat ? pcat->getName() : "[UNKNOWN]") << llendl;
@@ -1002,9 +822,9 @@ void LLAppearanceManager::updateCOF(const LLUUID& category, bool append)
 		for(S32 i = 0; i  < gest_items.count(); ++i)
 		{
 			LLViewerInventoryItem *gest_item = gest_items.get(i);
-			if ( LLGestureManager::instance().isGestureActive( gest_item->getLinkedUUID()) )
+			if ( LLGestureMgr::instance().isGestureActive( gest_item->getLinkedUUID()) )
 			{
-				LLGestureManager::instance().deactivateGesture( gest_item->getLinkedUUID() );
+				LLGestureMgr::instance().deactivateGesture( gest_item->getLinkedUUID() );
 			}
 		}
 	}
@@ -1027,7 +847,7 @@ void LLAppearanceManager::updateCOF(const LLUUID& category, bool append)
 	getDescendentsOfAssetType(category, wear_items, LLAssetType::AT_CLOTHING, false);
 	// Reduce wearables to max of one per type.
 	removeDuplicateItems(wear_items);
-	filterWearableItems(wear_items, 1);
+	filterWearableItems(wear_items, 5);
 
 	// - Attachments: include COF contents only if appending.
 	LLInventoryModel::item_array_t obj_items;
@@ -1065,7 +885,7 @@ void LLAppearanceManager::updateCOF(const LLUUID& category, bool append)
 	llinfos << "waiting for LLUpdateAppearanceOnDestroy" << llendl;
 }
 
-void LLAppearanceManager::updatePanelOutfitName(const std::string& name)
+void LLAppearanceMgr::updatePanelOutfitName(const std::string& name)
 {
 	LLSidepanelAppearance* panel_appearance =
 		dynamic_cast<LLSidepanelAppearance *>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
@@ -1075,7 +895,7 @@ void LLAppearanceManager::updatePanelOutfitName(const std::string& name)
 	}
 }
 
-void LLAppearanceManager::createBaseOutfitLink(const LLUUID& category, LLPointer<LLInventoryCallback> link_waiter)
+void LLAppearanceMgr::createBaseOutfitLink(const LLUUID& category, LLPointer<LLInventoryCallback> link_waiter)
 {
 	const LLUUID cof = getCOF();
 	LLViewerInventoryCategory* catp = gInventory.getCategory(category);
@@ -1093,7 +913,7 @@ void LLAppearanceManager::createBaseOutfitLink(const LLUUID& category, LLPointer
 	updatePanelOutfitName(new_outfit_name);
 }
 
-void LLAppearanceManager::updateAgentWearables(LLWearableHoldingPattern* holder, bool append)
+void LLAppearanceMgr::updateAgentWearables(LLWearableHoldingPattern* holder, bool append)
 {
 	lldebugs << "updateAgentWearables()" << llendl;
 	LLInventoryItem::item_array_t items;
@@ -1117,7 +937,6 @@ void LLAppearanceManager::updateAgentWearables(LLWearableHoldingPattern* holder,
 					items.put(item);
 					wearables.put(wearable);
 				}
-				break;
 			}
 		}
 	}
@@ -1146,7 +965,7 @@ static void remove_non_link_items(LLInventoryModel::item_array_t &items)
 	items = pruned_items;
 }
 
-void LLAppearanceManager::updateAppearanceFromCOF()
+void LLAppearanceMgr::updateAppearanceFromCOF()
 {
 	// update dirty flag to see if the state of the COF matches
 	// the saved outfit stored as a folder link
@@ -1160,7 +979,7 @@ void LLAppearanceManager::updateAppearanceFromCOF()
 	LLUUID current_outfit_id = getCOF();
 
 	// Find all the wearables that are in the COF's subtree.
-	lldebugs << "LLAppearanceManager::updateFromCOF()" << llendl;
+	lldebugs << "LLAppearanceMgr::updateFromCOF()" << llendl;
 	LLInventoryModel::item_array_t wear_items;
 	LLInventoryModel::item_array_t obj_items;
 	LLInventoryModel::item_array_t gest_items;
@@ -1186,9 +1005,6 @@ void LLAppearanceManager::updateAppearanceFromCOF()
 	// callback will be called (and this object deleted)
 	// before the final getNextData().
 
-	// BAP future cleanup - no point having found_container when
-	// mFoundList already has all the info.
-	LLDynamicArray<LLFoundData> found_container;
 	for(S32 i = 0; i  < wear_items.count(); ++i)
 	{
 		LLViewerInventoryItem *item = wear_items.get(i);
@@ -1214,7 +1030,6 @@ void LLAppearanceManager::updateAppearanceFromCOF()
 #endif
 
 			holder->mFoundList.push_front(found);
-			found_container.put(found);
 		}
 		else
 		{
@@ -1229,9 +1044,10 @@ void LLAppearanceManager::updateAppearanceFromCOF()
 		}
 	}
 
-	for(S32 i = 0; i < found_container.count(); ++i)
+	for (LLWearableHoldingPattern::found_list_t::iterator it = holder->mFoundList.begin();
+		 it != holder->mFoundList.end(); ++it)
 	{
-		LLFoundData& found = found_container.get(i);
+		LLFoundData& found = *it;
 
 		llinfos << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl;
 
@@ -1248,10 +1064,9 @@ void LLAppearanceManager::updateAppearanceFromCOF()
 	{
 		doOnIdleRepeating(boost::bind(&LLWearableHoldingPattern::pollFetchCompletion,holder));
 	}
-
 }
 
-void LLAppearanceManager::getDescendentsOfAssetType(const LLUUID& category,
+void LLAppearanceMgr::getDescendentsOfAssetType(const LLUUID& category,
 													LLInventoryModel::item_array_t& items,
 													LLAssetType::EType type,
 													bool follow_folder_links)
@@ -1266,7 +1081,7 @@ void LLAppearanceManager::getDescendentsOfAssetType(const LLUUID& category,
 									follow_folder_links);
 }
 
-void LLAppearanceManager::getUserDescendents(const LLUUID& category, 
+void LLAppearanceMgr::getUserDescendents(const LLUUID& category, 
 											 LLInventoryModel::item_array_t& wear_items,
 											 LLInventoryModel::item_array_t& obj_items,
 											 LLInventoryModel::item_array_t& gest_items,
@@ -1301,36 +1116,97 @@ void LLAppearanceManager::getUserDescendents(const LLUUID& category,
 									follow_folder_links);
 }
 
-void LLAppearanceManager::wearInventoryCategory(LLInventoryCategory* category, bool copy, bool append)
+void LLAppearanceMgr::wearInventoryCategory(LLInventoryCategory* category, bool copy, bool append)
 {
 	if(!category) return;
 
 	llinfos << "wearInventoryCategory( " << category->getName()
 			 << " )" << llendl;
 
-	// What we do here is get the complete information on the items in
-	// the inventory, and set up an observer that will wait for that to
-	// happen.
-	LLOutfitFetch* outfit_fetcher = new LLOutfitFetch(copy, append);
-	LLInventoryFetchDescendentsObserver::folder_ref_t folders;
-	folders.push_back(category->getUUID());
-	outfit_fetcher->fetchDescendents(folders);
-	//inc_busy_count();
-	if(outfit_fetcher->isEverythingComplete())
+	callAfterCategoryFetch(category->getUUID(),boost::bind(&LLAppearanceMgr::wearCategoryFinal,
+														   &LLAppearanceMgr::instance(),
+														   category->getUUID(), copy, append));
+}
+
+void LLAppearanceMgr::wearCategoryFinal(LLUUID& cat_id, bool copy_items, bool append)
+{
+	llinfos << "starting" << llendl;
+	
+	// We now have an outfit ready to be copied to agent inventory. Do
+	// it, and wear that outfit normally.
+	LLInventoryCategory* cat = gInventory.getCategory(cat_id);
+	if(copy_items)
 	{
-		// everything is already here - call done.
-		outfit_fetcher->done();
+		LLInventoryModel::cat_array_t* cats;
+		LLInventoryModel::item_array_t* items;
+		gInventory.getDirectDescendentsOf(cat_id, cats, items);
+		std::string name;
+		if(!cat)
+		{
+			// should never happen.
+			name = "New Outfit";
+		}
+		else
+		{
+			name = cat->getName();
+		}
+		LLViewerInventoryItem* item = NULL;
+		LLInventoryModel::item_array_t::const_iterator it = items->begin();
+		LLInventoryModel::item_array_t::const_iterator end = items->end();
+		LLUUID pid;
+		for(; it < end; ++it)
+		{
+			item = *it;
+			if(item)
+			{
+				if(LLInventoryType::IT_GESTURE == item->getInventoryType())
+				{
+					pid = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);
+				}
+				else
+				{
+					pid = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING);
+				}
+				break;
+			}
+		}
+		if(pid.isNull())
+		{
+			pid = gInventory.getRootFolderID();
+		}
+		
+		LLUUID new_cat_id = gInventory.createNewCategory(
+			pid,
+			LLFolderType::FT_NONE,
+			name);
+		LLPointer<LLInventoryCallback> cb = new LLWearInventoryCategoryCallback(new_cat_id, append);
+		it = items->begin();
+		for(; it < end; ++it)
+		{
+			item = *it;
+			if(item)
+			{
+				copy_inventory_item(
+					gAgent.getID(),
+					item->getPermissions().getOwner(),
+					item->getUUID(),
+					new_cat_id,
+					std::string(),
+					cb);
+			}
+		}
+		// BAP fixes a lag in display of created dir.
+		gInventory.notifyObservers();
 	}
 	else
 	{
-		// it's all on it's way - add an observer, and the inventory
-		// will call done for us when everything is here.
-		gInventory.addObserver(outfit_fetcher);
+		// Wear the inventory category.
+		LLAppearanceMgr::instance().wearInventoryCategoryOnAvatar(cat, append);
 	}
 }
 
 // *NOTE: hack to get from avatar inventory to avatar
-void LLAppearanceManager::wearInventoryCategoryOnAvatar( LLInventoryCategory* category, bool append )
+void LLAppearanceMgr::wearInventoryCategoryOnAvatar( LLInventoryCategory* category, bool append )
 {
 	// Avoid unintentionally overwriting old wearables.  We have to do
 	// this up front to avoid having to deal with the case of multiple
@@ -1342,17 +1218,17 @@ void LLAppearanceManager::wearInventoryCategoryOnAvatar( LLInventoryCategory* ca
 			 	
 	if( gFloaterCustomize )
 	{
-		gFloaterCustomize->askToSaveIfDirty(boost::bind(&LLAppearanceManager::changeOutfit,
-														&LLAppearanceManager::instance(),
+		gFloaterCustomize->askToSaveIfDirty(boost::bind(&LLAppearanceMgr::changeOutfit,
+														&LLAppearanceMgr::instance(),
 														_1, category->getUUID(), append));
 	}
 	else
 	{
-		LLAppearanceManager::changeOutfit(TRUE, category->getUUID(), append);
+		LLAppearanceMgr::changeOutfit(TRUE, category->getUUID(), append);
 	}
 }
 
-void LLAppearanceManager::wearOutfitByName(const std::string& name)
+void LLAppearanceMgr::wearOutfitByName(const std::string& name)
 {
 	llinfos << "Wearing category " << name << llendl;
 	//inc_busy_count();
@@ -1388,7 +1264,7 @@ void LLAppearanceManager::wearOutfitByName(const std::string& name)
 
 	if(cat)
 	{
-		LLAppearanceManager::wearInventoryCategory(cat, copy_items, false);
+		LLAppearanceMgr::wearInventoryCategory(cat, copy_items, false);
 	}
 	else
 	{
@@ -1424,7 +1300,7 @@ class LLDeferredCOFLinkObserver: public LLInventoryObserver
 		if (item)
 		{
 			gInventory.removeObserver(this);
-			LLAppearanceManager::instance().addCOFItemLink(item,mDoUpdate);
+			LLAppearanceMgr::instance().addCOFItemLink(item,mDoUpdate);
 			delete this;
 		}
 	}
@@ -1435,7 +1311,9 @@ class LLDeferredCOFLinkObserver: public LLInventoryObserver
 };
 
 
-void LLAppearanceManager::addCOFItemLink(const LLUUID &item_id, bool do_update )
+// BAP - note that this runs asynchronously if the item is not already loaded from inventory.
+// Dangerous if caller assumes link will exist after calling the function.
+void LLAppearanceMgr::addCOFItemLink(const LLUUID &item_id, bool do_update )
 {
 	const LLInventoryItem *item = gInventory.getItem(item_id);
 	if (!item)
@@ -1449,7 +1327,7 @@ void LLAppearanceManager::addCOFItemLink(const LLUUID &item_id, bool do_update )
 	}
 }
 
-void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_update )
+void LLAppearanceMgr::addCOFItemLink(const LLInventoryItem *item, bool do_update )
 {		
 	const LLViewerInventoryItem *vitem = dynamic_cast<const LLViewerInventoryItem*>(item);
 	if (!vitem)
@@ -1462,7 +1340,7 @@ void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_up
 
 	LLInventoryModel::cat_array_t cat_array;
 	LLInventoryModel::item_array_t item_array;
-	gInventory.collectDescendents(LLAppearanceManager::getCOF(),
+	gInventory.collectDescendents(LLAppearanceMgr::getCOF(),
 								  cat_array,
 								  item_array,
 								  LLInventoryModel::EXCLUDE_TRASH);
@@ -1490,7 +1368,7 @@ void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_up
 	{
 		if (do_update)
 		{	
-			LLAppearanceManager::updateAppearanceFromCOF();
+			LLAppearanceMgr::updateAppearanceFromCOF();
 		}
 		return;
 	}
@@ -1507,7 +1385,8 @@ void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_up
 	return;
 }
 
-void LLAppearanceManager::addEnsembleLink( LLInventoryCategory* cat, bool do_update )
+// BAP remove ensemble code for 2.1?
+void LLAppearanceMgr::addEnsembleLink( LLInventoryCategory* cat, bool do_update )
 {
 #if SUPPORT_ENSEMBLES
 	// BAP add check for already in COF.
@@ -1521,13 +1400,13 @@ void LLAppearanceManager::addEnsembleLink( LLInventoryCategory* cat, bool do_upd
 #endif
 }
 
-void LLAppearanceManager::removeCOFItemLinks(const LLUUID& item_id, bool do_update)
+void LLAppearanceMgr::removeCOFItemLinks(const LLUUID& item_id, bool do_update)
 {
 	gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
 
 	LLInventoryModel::cat_array_t cat_array;
 	LLInventoryModel::item_array_t item_array;
-	gInventory.collectDescendents(LLAppearanceManager::getCOF(),
+	gInventory.collectDescendents(LLAppearanceMgr::getCOF(),
 								  cat_array,
 								  item_array,
 								  LLInventoryModel::EXCLUDE_TRASH);
@@ -1541,11 +1420,11 @@ void LLAppearanceManager::removeCOFItemLinks(const LLUUID& item_id, bool do_upda
 	}
 	if (do_update)
 	{
-		LLAppearanceManager::updateAppearanceFromCOF();
+		LLAppearanceMgr::updateAppearanceFromCOF();
 	}
 }
 
-void LLAppearanceManager::updateIsDirty()
+void LLAppearanceMgr::updateIsDirty()
 {
 	LLUUID cof = getCOF();
 	LLUUID base_outfit;
@@ -1614,7 +1493,7 @@ void LLAppearanceManager::updateIsDirty()
 	}
 }
 
-void LLAppearanceManager::onFirstFullyVisible()
+void LLAppearanceMgr::autopopulateOutfits()
 {
 	// 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.
@@ -1631,9 +1510,15 @@ void LLAppearanceManager::onFirstFullyVisible()
 	check_populate_my_outfits = false;
 }
 
+// Handler for anything that's deferred until avatar de-clouds.
+void LLAppearanceMgr::onFirstFullyVisible()
+{
+	autopopulateOutfits();
+}
+
 //#define DUMP_CAT_VERBOSE
 
-void LLAppearanceManager::dumpCat(const LLUUID& cat_id, const std::string& msg)
+void LLAppearanceMgr::dumpCat(const LLUUID& cat_id, const std::string& msg)
 {
 	LLInventoryModel::cat_array_t cats;
 	LLInventoryModel::item_array_t items;
@@ -1654,7 +1539,7 @@ void LLAppearanceManager::dumpCat(const LLUUID& cat_id, const std::string& msg)
 	llinfos << msg << " count " << items.count() << llendl;
 }
 
-void LLAppearanceManager::dumpItemArray(const LLInventoryModel::item_array_t& items,
+void LLAppearanceMgr::dumpItemArray(const LLInventoryModel::item_array_t& items,
 										const std::string& msg)
 {
 	llinfos << msg << llendl;
@@ -1666,22 +1551,23 @@ void LLAppearanceManager::dumpItemArray(const LLInventoryModel::item_array_t& it
 	llinfos << llendl;
 }
 
-LLAppearanceManager::LLAppearanceManager():
+LLAppearanceMgr::LLAppearanceMgr():
 	mAttachmentInvLinkEnabled(false),
 	mOutfitIsDirty(false)
 {
 }
 
-LLAppearanceManager::~LLAppearanceManager()
+LLAppearanceMgr::~LLAppearanceMgr()
 {
 }
 
-void LLAppearanceManager::setAttachmentInvLinkEnable(bool val)
+void LLAppearanceMgr::setAttachmentInvLinkEnable(bool val)
 {
 	llinfos << "setAttachmentInvLinkEnable => " << (int) val << llendl;
 	mAttachmentInvLinkEnabled = val;
 }
 
+// BAP TODO - mRegisteredAttachments is currently maintained but not used for anything.  Consider yanking.
 void dumpAttachmentSet(const std::set<LLUUID>& atts, const std::string& msg)
 {
        llinfos << msg << llendl;
@@ -1699,15 +1585,14 @@ void dumpAttachmentSet(const std::set<LLUUID>& atts, const std::string& msg)
        llinfos << llendl;
 }
 
-void LLAppearanceManager::registerAttachment(const LLUUID& item_id)
+void LLAppearanceMgr::registerAttachment(const LLUUID& item_id)
 {
        mRegisteredAttachments.insert(item_id);
 	   gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
-       //dumpAttachmentSet(mRegisteredAttachments,"after register:");
 
 	   if (mAttachmentInvLinkEnabled)
 	   {
-		   LLAppearanceManager::addCOFItemLink(item_id, false);  // Add COF link for item.
+		   LLAppearanceMgr::addCOFItemLink(item_id, false);  // Add COF link for item.
 	   }
 	   else
 	   {
@@ -1715,17 +1600,14 @@ void LLAppearanceManager::registerAttachment(const LLUUID& item_id)
 	   }
 }
 
-void LLAppearanceManager::unregisterAttachment(const LLUUID& item_id)
+void LLAppearanceMgr::unregisterAttachment(const LLUUID& item_id)
 {
        mRegisteredAttachments.erase(item_id);
 	   gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
 
-       //dumpAttachmentSet(mRegisteredAttachments,"after unregister:");
-
 	   if (mAttachmentInvLinkEnabled)
 	   {
-		   //LLAppearanceManager::dumpCat(LLAppearanceManager::getCOF(),"Removing attachment link:");
-		   LLAppearanceManager::removeCOFItemLinks(item_id, false);
+		   LLAppearanceMgr::removeCOFItemLinks(item_id, false);
 	   }
 	   else
 	   {
@@ -1733,7 +1615,7 @@ void LLAppearanceManager::unregisterAttachment(const LLUUID& item_id)
 	   }
 }
 
-void LLAppearanceManager::linkRegisteredAttachments()
+void LLAppearanceMgr::linkRegisteredAttachments()
 {
 	for (std::set<LLUUID>::iterator it = mRegisteredAttachments.begin();
 		 it != mRegisteredAttachments.end();
@@ -1745,12 +1627,12 @@ void LLAppearanceManager::linkRegisteredAttachments()
 	mRegisteredAttachments.clear();
 }
 
-BOOL LLAppearanceManager::getIsInCOF(const LLUUID& obj_id) const
+BOOL LLAppearanceMgr::getIsInCOF(const LLUUID& obj_id) const
 {
 	return gInventory.isObjectDescendentOf(obj_id, getCOF());
 }
 
-BOOL LLAppearanceManager::getIsProtectedCOFItem(const LLUUID& obj_id) const
+BOOL LLAppearanceMgr::getIsProtectedCOFItem(const LLUUID& obj_id) const
 {
 	if (!getIsInCOF(obj_id)) return FALSE;
 
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 9d6cd34ad7d4153d13a30bf5f9577c39e36f4bb1..40b8844731c4276b87d15b2510cf90d71dd22dc4 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -43,9 +43,9 @@ class LLWearable;
 class LLWearableHoldingPattern;
 class LLInventoryCallback;
 
-class LLAppearanceManager: public LLSingleton<LLAppearanceManager>
+class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 {
-	friend class LLSingleton<LLAppearanceManager>;
+	friend class LLSingleton<LLAppearanceMgr>;
 	
 public:
 	void updateAppearanceFromCOF();
@@ -53,6 +53,7 @@ class LLAppearanceManager: public LLSingleton<LLAppearanceManager>
 	void updateCOF(const LLUUID& category, bool append = false);
 	void wearInventoryCategory(LLInventoryCategory* category, bool copy, bool append);
 	void wearInventoryCategoryOnAvatar(LLInventoryCategory* category, bool append);
+	void wearCategoryFinal(LLUUID& cat_id, bool copy_items, bool append);
 	void wearOutfitByName(const std::string& name);
 	void changeOutfit(bool proceed, const LLUUID& category, bool append);
 
@@ -118,10 +119,13 @@ class LLAppearanceManager: public LLSingleton<LLAppearanceManager>
 
 	// Called when self avatar is first fully visible.
 	void onFirstFullyVisible();
+
+	// Create initial outfits from library.
+	void autopopulateOutfits();
 	
 protected:
-	LLAppearanceManager();
-	~LLAppearanceManager();
+	LLAppearanceMgr();
+	~LLAppearanceMgr();
 
 private:
 
@@ -173,17 +177,17 @@ LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id,const std::string&
 // Shim class and template function to allow arbitrary boost::bind
 // expressions to be run as one-time idle callbacks.
 template <typename T>
-class OnIdleCallback
+class OnIdleCallbackOneTime
 {
 public:
-	OnIdleCallback(T callable):
+	OnIdleCallbackOneTime(T callable):
 		mCallable(callable)
 	{
 	}
 	static void onIdle(void *data)
 	{
 		gIdleCallbacks.deleteFunction(onIdle, data);
-		OnIdleCallback<T>* self = reinterpret_cast<OnIdleCallback<T>*>(data);
+		OnIdleCallbackOneTime<T>* self = reinterpret_cast<OnIdleCallbackOneTime<T>*>(data);
 		self->call();
 		delete self;
 	}
@@ -196,14 +200,15 @@ class OnIdleCallback
 };
 
 template <typename T>
-void doOnIdle(T callable)
+void doOnIdleOneTime(T callable)
 {
-	OnIdleCallback<T>* cb_functor = new OnIdleCallback<T>(callable);
-	gIdleCallbacks.addFunction(&OnIdleCallback<T>::onIdle,cb_functor);
+	OnIdleCallbackOneTime<T>* cb_functor = new OnIdleCallbackOneTime<T>(callable);
+	gIdleCallbacks.addFunction(&OnIdleCallbackOneTime<T>::onIdle,cb_functor);
 }
 
 // Shim class and template function to allow arbitrary boost::bind
 // expressions to be run as recurring idle callbacks.
+// Callable should return true when done, false to continue getting called.
 template <typename T>
 class OnIdleCallbackRepeating
 {
@@ -212,7 +217,7 @@ class OnIdleCallbackRepeating
 		mCallable(callable)
 	{
 	}
-	// Will keep getting called until the callable returns false.
+	// Will keep getting called until the callable returns true.
 	static void onIdle(void *data)
 	{
 		OnIdleCallbackRepeating<T>* self = reinterpret_cast<OnIdleCallbackRepeating<T>*>(data);
@@ -252,7 +257,7 @@ class CallAfterCategoryFetchStage2: public LLInventoryFetchObserver
 	virtual void done()
 	{
 		gInventory.removeObserver(this);
-		doOnIdle(mCallable);
+		doOnIdleOneTime(mCallable);
 		delete this;
 	}
 protected:
@@ -277,14 +282,14 @@ class CallAfterCategoryFetchStage1: public LLInventoryFetchDescendentsObserver
 		// happen.
 		LLInventoryModel::cat_array_t cat_array;
 		LLInventoryModel::item_array_t item_array;
-		gInventory.collectDescendents(mCompleteFolders.front(),
+		gInventory.collectDescendents(mComplete.front(),
 									  cat_array,
 									  item_array,
 									  LLInventoryModel::EXCLUDE_TRASH);
 		S32 count = item_array.count();
 		if(!count)
 		{
-			llwarns << "Nothing fetched in category " << mCompleteFolders.front()
+			llwarns << "Nothing fetched in category " << mComplete.front()
 					<< llendl;
 			//dec_busy_count();
 			gInventory.removeObserver(this);
@@ -293,7 +298,7 @@ class CallAfterCategoryFetchStage1: public LLInventoryFetchDescendentsObserver
 		}
 
 		CallAfterCategoryFetchStage2<T> *stage2 = new CallAfterCategoryFetchStage2<T>(mCallable);
-		LLInventoryFetchObserver::item_ref_t ids;
+		uuid_vec_t ids;
 		for(S32 i = 0; i < count; ++i)
 		{
 			ids.push_back(item_array.get(i)->getUUID());
@@ -302,7 +307,7 @@ class CallAfterCategoryFetchStage1: public LLInventoryFetchDescendentsObserver
 		gInventory.removeObserver(this);
 		
 		// do the fetch
-		stage2->fetchItems(ids);
+		stage2->fetch(ids);
 		if(stage2->isEverythingComplete())
 		{
 			// everything is already here - call done.
@@ -324,9 +329,9 @@ template <class T>
 void callAfterCategoryFetch(const LLUUID& cat_id, T callable)
 {
 	CallAfterCategoryFetchStage1<T> *stage1 = new CallAfterCategoryFetchStage1<T>(callable);
-	LLInventoryFetchDescendentsObserver::folder_ref_t folders;
+	uuid_vec_t folders;
 	folders.push_back(cat_id);
-	stage1->fetchDescendents(folders);
+	stage1->fetch(folders);
 	if (stage1->isEverythingComplete())
 	{
 		stage1->done();
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index d30d7fd26ddbf6c6fa8715a661b9ef62dd2fd985..43c8c679c69c6ba3c2074d2198d5c5b4f931d834 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -79,6 +79,7 @@
 #include "lllocationhistory.h"
 #include "llfasttimerview.h"
 #include "llvoicechannel.h"
+#include "llvoavatarself.h"
 #include "llsidetray.h"
 
 
@@ -356,7 +357,7 @@ void request_initial_instant_messages()
 	if (!requested
 		&& gMessageSystem
 		&& LLMuteList::getInstance()->isLoaded()
-		&& gAgent.getAvatarObject())
+		&& isAgentAvatarValid())
 	{
 		// Auto-accepted inventory items may require the avatar object
 		// to build a correct name.  Likewise, inventory offers from
@@ -1526,6 +1527,8 @@ bool LLAppViewer::cleanup()
 	LLLocationHistory::getInstance()->save();
 
 	LLAvatarIconIDCache::getInstance()->save();
+	
+	LLViewerMedia::saveCookieFile();
 
 	llinfos << "Shutting down Threads" << llendflush;
 
@@ -1646,7 +1649,7 @@ bool LLAppViewer::cleanup()
 		// HACK: Attempt to wait until the screen res. switch is complete.
 		ms_sleep(1000);
 
-		LLWeb::loadURLExternal( gLaunchFileOnQuit );
+		LLWeb::loadURLExternal( gLaunchFileOnQuit, false );
 		llinfos << "File launched." << llendflush;
 	}
 
@@ -3617,7 +3620,7 @@ void LLAppViewer::idle()
 		// Handle pending gesture processing
 		static LLFastTimer::DeclareTimer ftm("Agent Position");
 		LLFastTimer t(ftm);
-		LLGestureManager::instance().update();
+		LLGestureMgr::instance().update();
 
 		gAgent.updateAgentPosition(gFrameDTClamped, yaw, current_mouse.mX, current_mouse.mY);
 	}
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index 63d9ed19ad65b801e9b8d761def14f608bc32886..60a6d2f072be002643486eb135a88033178e8155 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -469,7 +469,7 @@ bool LLAppViewerWin32::initHardwareTest()
 			if (OSBTN_NO== button)
 			{
 				LL_INFOS("AppInit") << "User quitting after failed DirectX 9 detection" << LL_ENDL;
-				LLWeb::loadURLExternal(DIRECTX_9_URL);
+				LLWeb::loadURLExternal(DIRECTX_9_URL, false);
 				return false;
 			}
 			gWarningSettings.setBOOL("AboutDirectX9", FALSE);
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
index 2bd3728ab73a7fd238e0ee4035ae63e33fd8d214..2f90d652e4938956c2c54e63497d6e9411b77fa9 100644
--- a/indra/newview/llassetuploadresponders.cpp
+++ b/indra/newview/llassetuploadresponders.cpp
@@ -39,6 +39,7 @@
 #include "llcompilequeue.h"
 #include "llfloaterbuycurrency.h"
 #include "llfilepicker.h"
+#include "llinventorydefines.h"
 #include "llinventoryobserver.h"
 #include "llinventorypanel.h"
 #include "llpermissionsflags.h"
@@ -288,7 +289,7 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
 										mPostData["name"].asString(),
 										mPostData["description"].asString(),
 										LLSaleInfo::DEFAULT,
-										LLInventoryItem::II_FLAGS_NONE,
+										LLInventoryItemFlags::II_FLAGS_NONE,
 										creation_date_now);
 		gInventory.updateItem(item);
 		gInventory.notifyObservers();
@@ -487,10 +488,10 @@ void LLUpdateAgentInventoryResponder::uploadComplete(const LLSD& content)
 	  {
 		  // If this gesture is active, then we need to update the in-memory
 		  // active map with the new pointer.				
-		  if (LLGestureManager::instance().isGestureActive(item_id))
+		  if (LLGestureMgr::instance().isGestureActive(item_id))
 		  {
 			  LLUUID asset_id = new_item->getAssetUUID();
-			  LLGestureManager::instance().replaceGesture(item_id, asset_id);
+			  LLGestureMgr::instance().replaceGesture(item_id, asset_id);
 			  gInventory.notifyObservers();
 		  }				
 
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index e6666c7f8338255906653f7eddb013888b79abb0..c85c72837c17e6b27035a712aad4da01d140df94 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -113,13 +113,13 @@ void LLAvatarActions::removeFriendDialog(const LLUUID& id)
 	if (id.isNull())
 		return;
 
-	std::vector<LLUUID> ids;
+	uuid_vec_t ids;
 	ids.push_back(id);
 	removeFriendsDialog(ids);
 }
 
 // static
-void LLAvatarActions::removeFriendsDialog(const std::vector<LLUUID>& ids)
+void LLAvatarActions::removeFriendsDialog(const uuid_vec_t& ids)
 {
 	if(ids.size() == 0)
 		return;
@@ -144,7 +144,7 @@ void LLAvatarActions::removeFriendsDialog(const std::vector<LLUUID>& ids)
 	}
 
 	LLSD payload;
-	for (std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); ++it)
+	for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)
 	{
 		payload["ids"].append(*it);
 	}
@@ -161,13 +161,21 @@ void LLAvatarActions::offerTeleport(const LLUUID& invitee)
 	if (invitee.isNull())
 		return;
 
+	//waiting until Name Cache gets updated with corresponding avatar name
+	std::string just_to_request_name;
+	if (!gCacheName->getFullName(invitee, just_to_request_name))
+	{
+		gCacheName->get(invitee, FALSE, boost::bind((void (*)(const LLUUID&)) &LLAvatarActions::offerTeleport, invitee));
+		return;
+	}
+
 	LLDynamicArray<LLUUID> ids;
 	ids.push_back(invitee);
 	offerTeleport(ids);
 }
 
 // static
-void LLAvatarActions::offerTeleport(const std::vector<LLUUID>& ids) 
+void LLAvatarActions::offerTeleport(const uuid_vec_t& ids) 
 {
 	if (ids.size() == 0)
 		return;
@@ -228,7 +236,7 @@ void LLAvatarActions::startCall(const LLUUID& id)
 }
 
 // static
-void LLAvatarActions::startAdhocCall(const std::vector<LLUUID>& ids)
+void LLAvatarActions::startAdhocCall(const uuid_vec_t& ids)
 {
 	if (ids.size() == 0)
 	{
@@ -237,7 +245,7 @@ void LLAvatarActions::startAdhocCall(const std::vector<LLUUID>& ids)
 
 	// convert vector into LLDynamicArray for addSession
 	LLDynamicArray<LLUUID> id_array;
-	for (std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); ++it)
+	for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)
 	{
 		id_array.push_back(*it);
 	}
@@ -278,11 +286,11 @@ bool LLAvatarActions::canCall()
 }
 
 // static
-void LLAvatarActions::startConference(const std::vector<LLUUID>& ids)
+void LLAvatarActions::startConference(const uuid_vec_t& ids)
 {
 	// *HACK: Copy into dynamic array
 	LLDynamicArray<LLUUID> id_array;
-	for (std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); ++it)
+	for (uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)
 	{
 		id_array.push_back(*it);
 	}
@@ -434,6 +442,20 @@ void LLAvatarActions::toggleBlock(const LLUUID& id)
 		LLMuteList::getInstance()->add(mute);
 	}
 }
+// static
+bool LLAvatarActions::canOfferTeleport(const LLUUID& id)
+{
+	// First use LLAvatarTracker::isBuddy()
+	// If LLAvatarTracker::instance().isBuddyOnline function only is used
+	// then for avatars that are online and not a friend it will return false.
+	// But we should give an ability to offer a teleport for such avatars.
+	if(LLAvatarTracker::instance().isBuddy(id))
+	{
+		return LLAvatarTracker::instance().isBuddyOnline(id);
+	}
+
+	return true;
+}
 
 void LLAvatarActions::inviteToGroup(const LLUUID& id)
 {
@@ -499,7 +521,7 @@ bool LLAvatarActions::handlePay(const LLSD& notification, const LLSD& response,
 // static
 void LLAvatarActions::callback_invite_to_group(LLUUID group_id, LLUUID id)
 {
-	std::vector<LLUUID> agent_ids;
+	uuid_vec_t agent_ids;
 	agent_ids.push_back(id);
 	
 	LLFloaterGroupInvite::showForGroup(group_id, &agent_ids);
diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h
index a7f3acad4f8761d5d800445b72f7ef586ef6f2d5..9d8b4b4e238dd315670b8f6a321f07f3d2e4dd4c 100644
--- a/indra/newview/llavataractions.h
+++ b/indra/newview/llavataractions.h
@@ -60,13 +60,13 @@ class LLAvatarActions
 	 * Show a friend removal dialog.
 	 */
 	static void removeFriendDialog(const LLUUID& id);
-	static void removeFriendsDialog(const std::vector<LLUUID>& ids);
+	static void removeFriendsDialog(const uuid_vec_t& ids);
 	
 	/**
 	 * Show teleport offer dialog.
 	 */
 	static void offerTeleport(const LLUUID& invitee);
-	static void offerTeleport(const std::vector<LLUUID>& ids);
+	static void offerTeleport(const uuid_vec_t& ids);
 
 	/**
 	 * Start instant messaging session.
@@ -86,12 +86,12 @@ class LLAvatarActions
 	/**
 	 * Start an ad-hoc conference voice call with multiple users
 	 */
-	static void startAdhocCall(const std::vector<LLUUID>& ids);
+	static void startAdhocCall(const uuid_vec_t& ids);
 
 	/**
 	 * Start conference chat with the given avatars.
 	 */
-	static void startConference(const std::vector<LLUUID>& ids);
+	static void startConference(const uuid_vec_t& ids);
 
 	/**
 	 * Show avatar profile.
@@ -171,6 +171,12 @@ class LLAvatarActions
 	 */	
 	static void csr(const LLUUID& id, std::string name);
 
+	/**
+	 * Checks whether can offer teleport to the avatar
+	 * Can't offer only for offline friends
+	 */
+	static bool canOfferTeleport(const LLUUID& id);
+
 	
 private:
 	static bool callbackAddFriend(const LLSD& notification, const LLSD& response);
diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index 45c540b3a3c585c9d7f4bf9a38ee65dfa38ad657..407c5b6153eba2bea7ab4991d27a457b608c5ba3 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -39,6 +39,7 @@
 #include "llcallingcard.h" // for LLAvatarTracker
 #include "llcachename.h"
 #include "llrecentpeople.h"
+#include "lluuid.h"
 #include "llvoiceclient.h"
 #include "llviewercontrol.h"	// for gSavedSettings
 
@@ -53,7 +54,7 @@ static const unsigned ADD_LIMIT = 50;
 
 bool LLAvatarList::contains(const LLUUID& id)
 {
-	const uuid_vector_t& ids = getIDs();
+	const uuid_vec_t& ids = getIDs();
 	return std::find(ids.begin(), ids.end(), id) != ids.end();
 }
 
@@ -204,17 +205,17 @@ void LLAvatarList::refresh()
 	bool have_filter		= !mNameFilter.empty();
 
 	// Save selection.	
-	std::vector<LLUUID> selected_ids;
+	uuid_vec_t selected_ids;
 	getSelectedUUIDs(selected_ids);
 	LLUUID current_id = getSelectedUUID();
 
 	// Determine what to add and what to remove.
-	std::vector<LLUUID> added, removed;
+	uuid_vec_t added, removed;
 	LLAvatarList::computeDifference(getIDs(), added, removed);
 
 	// Handle added items.
 	unsigned nadded = 0;
-	for (std::vector<LLUUID>::const_iterator it=added.begin(); it != added.end(); it++)
+	for (uuid_vec_t::const_iterator it=added.begin(); it != added.end(); it++)
 	{
 		std::string name;
 		const LLUUID& buddy_id = *it;
@@ -236,7 +237,7 @@ void LLAvatarList::refresh()
 	}
 
 	// Handle removed items.
-	for (std::vector<LLUUID>::const_iterator it=removed.begin(); it != removed.end(); it++)
+	for (uuid_vec_t::const_iterator it=removed.begin(); it != removed.end(); it++)
 	{
 		removeItemByUUID(*it);
 		modified = true;
@@ -303,9 +304,9 @@ void LLAvatarList::refresh()
 
 bool LLAvatarList::filterHasMatches()
 {
-	uuid_vector_t values = getIDs();
+	uuid_vec_t values = getIDs();
 
-	for (uuid_vector_t::const_iterator it=values.begin(); it != values.end(); it++)
+	for (uuid_vec_t::const_iterator it=values.begin(); it != values.end(); it++)
 	{
 		std::string name;
 		const LLUUID& buddy_id = *it;
@@ -334,6 +335,17 @@ boost::signals2::connection LLAvatarList::setItemDoubleClickCallback(const mouse
 	return mItemDoubleClickSignal.connect(cb);
 }
 
+//virtual
+S32 LLAvatarList::notifyParent(const LLSD& info)
+{
+	if (info.has("sort") && &NAME_COMPARATOR == mItemComparator)
+	{
+		sort();
+		return 1;
+	}
+	return LLFlatListView::notifyParent(info);
+}
+
 void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, BOOL is_online, EAddPosition pos)
 {
 	LLAvatarListItem* item = new LLAvatarListItem();
@@ -358,7 +370,7 @@ BOOL LLAvatarList::handleRightMouseDown(S32 x, S32 y, MASK mask)
 	BOOL handled = LLUICtrl::handleRightMouseDown(x, y, mask);
 	if ( mContextMenu )
 	{
-		std::vector<LLUUID> selected_uuids;
+		uuid_vec_t selected_uuids;
 		getSelectedUUIDs(selected_uuids);
 		mContextMenu->show(this, selected_uuids, x, y);
 	}
@@ -366,12 +378,12 @@ BOOL LLAvatarList::handleRightMouseDown(S32 x, S32 y, MASK mask)
 }
 
 void LLAvatarList::computeDifference(
-	const std::vector<LLUUID>& vnew_unsorted,
-	std::vector<LLUUID>& vadded,
-	std::vector<LLUUID>& vremoved)
+	const uuid_vec_t& vnew_unsorted,
+	uuid_vec_t& vadded,
+	uuid_vec_t& vremoved)
 {
-	std::vector<LLUUID> vcur;
-	std::vector<LLUUID> vnew = vnew_unsorted;
+	uuid_vec_t vcur;
+	uuid_vec_t vnew = vnew_unsorted;
 
 	// Convert LLSDs to LLUUIDs.
 	{
@@ -385,7 +397,7 @@ void LLAvatarList::computeDifference(
 	std::sort(vcur.begin(), vcur.end());
 	std::sort(vnew.begin(), vnew.end());
 
-	std::vector<LLUUID>::iterator it;
+	uuid_vec_t::iterator it;
 	size_t maxsize = llmax(vcur.size(), vnew.size());
 	vadded.resize(maxsize);
 	vremoved.resize(maxsize);
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index 00c72f1f9daf9e4e2ba62f5dcf52b5fe3e3b128e..0203617867ffeccebbfbbea026ecbbc071f34ea7 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -53,8 +53,6 @@ class LLAvatarList : public LLFlatListView
 {
 	LOG_CLASS(LLAvatarList);
 public:
-	typedef std::vector<LLUUID> uuid_vector_t;
-
 	struct Params : public LLInitParam::Block<Params, LLFlatListView::Params> 
 	{
 		Optional<bool>	ignore_online_status, // show all items as online
@@ -74,7 +72,7 @@ class LLAvatarList : public LLFlatListView
 
 	void setNameFilter(const std::string& filter);
 	void setDirty(bool val = true, bool force_refresh = false);
-	uuid_vector_t& getIDs() 							{ return mIDs; }
+	uuid_vec_t& getIDs() 							{ return mIDs; }
 	bool contains(const LLUUID& id);
 
 	void setContextMenu(LLAvatarListItem::ContextMenu* menu) { mContextMenu = menu; }
@@ -96,14 +94,16 @@ class LLAvatarList : public LLFlatListView
 
 	boost::signals2::connection setItemDoubleClickCallback(const mouse_signal_t::slot_type& cb);
 
+	virtual S32 notifyParent(const LLSD& info);
+
 protected:
 	void refresh();
 
 	void addNewItem(const LLUUID& id, const std::string& name, BOOL is_online, EAddPosition pos = ADD_BOTTOM);
 	void computeDifference(
-		const std::vector<LLUUID>& vnew,
-		std::vector<LLUUID>& vadded,
-		std::vector<LLUUID>& vremoved);
+		const uuid_vec_t& vnew,
+		uuid_vec_t& vadded,
+		uuid_vec_t& vremoved);
 	void updateLastInteractionTimes();
 	void onItemDoucleClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask);
 
@@ -120,7 +120,7 @@ class LLAvatarList : public LLFlatListView
 	LLTimer*				mLITUpdateTimer; // last interaction time update timer
 	std::string				mIconParamName;
 	std::string				mNameFilter;
-	uuid_vector_t			mIDs;
+	uuid_vec_t				mIDs;
 	LLUUID					mSessionID;
 
 	LLAvatarListItem::ContextMenu* mContextMenu;
diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
index 9645e75e608dee8bd2910688d41cb7f274cc2e53..44f88cce297802607a590398f419ac729572ada4 100644
--- a/indra/newview/llavatarlistitem.cpp
+++ b/indra/newview/llavatarlistitem.cpp
@@ -119,8 +119,9 @@ S32 LLAvatarListItem::notifyParent(const LLSD& info)
 	if (info.has("visibility_changed"))
 	{
 		updateChildren();
+		return 1;
 	}
-	return 0;
+	return LLPanel::notifyParent(info);
 }
 
 void LLAvatarListItem::onMouseEnter(S32 x, S32 y, MASK mask)
@@ -334,6 +335,9 @@ void LLAvatarListItem::onNameCache(const std::string& first_name, const std::str
 {
 	std::string name = first_name + " " + last_name;
 	setName(name);
+
+	//requesting the list to resort
+	notifyParent(LLSD().with("sort", LLSD()));
 }
 
 // Convert given number of seconds to a string like "23 minutes", "15 hours" or "3 years",
diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h
index cecb64add794f62a9e7dd449b1a1229581c0f9e8..2db6484a30b74042935b27c8f41145f37a632fcb 100644
--- a/indra/newview/llavatarlistitem.h
+++ b/indra/newview/llavatarlistitem.h
@@ -70,7 +70,7 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver
 	class ContextMenu
 	{
 	public:
-		virtual void show(LLView* spawning_view, const std::vector<LLUUID>& selected_uuids, S32 x, S32 y) = 0;
+		virtual void show(LLView* spawning_view, const uuid_vec_t& selected_uuids, S32 x, S32 y) = 0;
 	};
 
 	/**
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 34cb6fd2eb7a1b000b643307e843dca3afbb3854..41bee540fc62d56a72eb306cc5c1cc34ab8f27a5 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -160,10 +160,6 @@ LLBottomTray::LLBottomTray(const LLSD&)
 
 	LLUICtrlFactory::getInstance()->buildPanel(this,"panel_bottomtray.xml");
 
-	mChicletPanel = getChild<LLChicletPanel>("chiclet_list");
-
-	mChicletPanel->setChicletClickedCallback(boost::bind(&LLBottomTray::onChicletClick,this,_1));
-
 	LLUICtrl::CommitCallbackRegistry::defaultRegistrar().add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraPresets, _2));
 
 	//this is to fix a crash that occurs because LLBottomTray is a singleton
@@ -171,8 +167,6 @@ LLBottomTray::LLBottomTray(const LLSD&)
 	//destroyed LLBottomTray requires some subsystems that are long gone
 	//LLUI::getRootView()->addChild(this);
 
-	initStateProcessedObjectMap();
-
 	// Necessary for focus movement among child controls
 	setFocusRoot(TRUE);
 
@@ -371,6 +365,23 @@ void LLBottomTray::setVisible(BOOL visible)
 		gFloaterView->setSnapOffsetBottom(0);
 }
 
+S32 LLBottomTray::notifyParent(const LLSD& info)
+{
+	if(info.has("well_empty")) // implementation of EXT-3397
+	{
+		const std::string chiclet_name = info["well_name"];
+
+		// only "im_well" or "notification_well" names are expected.
+		// They are set in panel_bottomtray.xml in <chiclet_im_well> & <chiclet_notification>
+		llassert("im_well" == chiclet_name || "notification_well" == chiclet_name);
+
+		BOOL should_be_visible = !info["well_empty"];
+		showWellButton("im_well" == chiclet_name ? RS_IM_WELL : RS_NOTIFICATION_WELL, should_be_visible);
+		return 1;
+	}
+	return LLPanel::notifyParent(info);
+}
+
 void LLBottomTray::showBottomTrayContextMenu(S32 x, S32 y, MASK mask)
 {
 	// We should show BottomTrayContextMenu in last  turn
@@ -487,6 +498,15 @@ BOOL LLBottomTray::postBuild()
 
 	mNearbyChatBar->getChatBox()->setContextMenu(NULL);
 
+	mChicletPanel = getChild<LLChicletPanel>("chiclet_list");
+	mChicletPanel->setChicletClickedCallback(boost::bind(&LLBottomTray::onChicletClick,this,_1));
+
+	initStateProcessedObjectMap();
+
+	// update wells visibility:
+	showWellButton(RS_IM_WELL, !LLIMWellWindow::getInstance()->isWindowEmpty());
+	showWellButton(RS_NOTIFICATION_WELL, !LLNotificationWellWindow::getInstance()->isWindowEmpty());
+
 	return TRUE;
 }
 
@@ -855,6 +875,7 @@ void LLBottomTray::processWidthIncreased(S32 delta_width)
 bool LLBottomTray::processShowButton(EResizeState shown_object_type, S32* available_width)
 {
 	lldebugs << "Trying to show object type: " << shown_object_type << llendl;
+	llassert(mStateProcessedObjectMap[shown_object_type] != NULL);
 
 	LLPanel* panel = mStateProcessedObjectMap[shown_object_type];
 	if (NULL == panel)
@@ -886,6 +907,7 @@ bool LLBottomTray::processShowButton(EResizeState shown_object_type, S32* availa
 void LLBottomTray::processHideButton(EResizeState processed_object_type, S32* required_width, S32* buttons_freed_width)
 {
 	lldebugs << "Trying to hide object type: " << processed_object_type << llendl;
+	llassert(mStateProcessedObjectMap[processed_object_type] != NULL);
 
 	LLPanel* panel = mStateProcessedObjectMap[processed_object_type];
 	if (NULL == panel)
@@ -963,6 +985,7 @@ void LLBottomTray::processShrinkButtons(S32* required_width, S32* buttons_freed_
 
 void LLBottomTray::processShrinkButton(EResizeState processed_object_type, S32* required_width)
 {
+	llassert(mStateProcessedObjectMap[processed_object_type] != NULL);
 	LLPanel* panel = mStateProcessedObjectMap[processed_object_type];
 	if (NULL == panel)
 	{
@@ -1046,6 +1069,7 @@ void LLBottomTray::processExtendButtons(S32* available_width)
 
 void LLBottomTray::processExtendButton(EResizeState processed_object_type, S32* available_width)
 {
+	llassert(mStateProcessedObjectMap[processed_object_type] != NULL);
 	LLPanel* panel = mStateProcessedObjectMap[processed_object_type];
 	if (NULL == panel)
 	{
@@ -1126,6 +1150,7 @@ void LLBottomTray::initStateProcessedObjectMap()
 
 void LLBottomTray::setTrayButtonVisible(EResizeState shown_object_type, bool visible)
 {
+	llassert(mStateProcessedObjectMap[shown_object_type] != NULL);
 	LLPanel* panel = mStateProcessedObjectMap[shown_object_type];
 	if (NULL == panel)
 	{
@@ -1264,4 +1289,29 @@ bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible
 	return is_set;
 }
 
+void LLBottomTray::showWellButton(EResizeState object_type, bool visible)
+{
+	llassert( ((RS_NOTIFICATION_WELL | RS_IM_WELL) & object_type) == object_type );
+
+	const std::string panel_name = RS_IM_WELL == object_type ? "im_well_panel" : "notification_well_panel";
+
+	LLView * panel = getChild<LLView>(panel_name);
+
+	// if necessary visibility is set nothing to do here
+	if (panel->getVisible() == (BOOL)visible) return;
+
+	S32 panel_width = panel->getRect().getWidth();
+	panel->setVisible(visible);
+
+	if (visible)
+	{
+		// method assumes that input param is a negative value
+		processWidthDecreased(-panel_width);
+	}
+	else
+	{
+		processWidthIncreased(panel_width);
+	}
+}
+
 //EOF
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index 18c14e5e191e338ff525d87d7652cc333d067abf..3c45777645a8d6776388dbc2daf370f83e8f4a6f 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -83,6 +83,8 @@ class LLBottomTray
 
 	virtual void setVisible(BOOL visible);
 
+	/*virtual*/ S32 notifyParent(const LLSD& info);
+
 	// Implements LLVoiceClientStatusObserver::onChange() to enable the speak
 	// button when voice is available
 	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
@@ -116,6 +118,8 @@ class LLBottomTray
 		, RS_BUTTON_MOVEMENT	= 0x0010
 		, RS_BUTTON_GESTURES	= 0x0020
 		, RS_BUTTON_SPEAK		= 0x0040
+		, RS_IM_WELL			= 0x0080
+		, RS_NOTIFICATION_WELL	= 0x0100
 
 		/**
 		 * Specifies buttons which can be hidden when bottom tray is shrunk.
@@ -184,6 +188,15 @@ class LLBottomTray
 	 */
 	bool setVisibleAndFitWidths(EResizeState object_type, bool visible);
 
+	/**
+	 * Shows/hides panel with specified well button (IM or Notification)
+	 *
+	 * @param[in] object_type - type of well button to be processed.
+	 *		Must be one of RS_IM_WELL or RS_NOTIFICATION_WELL.
+	 * @param[in] visible - flag specified whether button should be shown or hidden.
+	 */
+	void showWellButton(EResizeState object_type, bool visible);
+
 	MASK mResizeState;
 
 	typedef std::map<EResizeState, LLPanel*> state_object_map_t;
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index c8552de66a415d2306e0b7e6ede58910d1b8b853..44f1cefafed6737d078d5537b451b9ba2bfe877d 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -54,7 +54,7 @@
 #include "llvoicechannel.h"
 #include "llviewerparcelmgr.h"
 
-static void get_voice_participants_uuids(std::vector<LLUUID>& speakers_uuids);
+static void get_voice_participants_uuids(uuid_vec_t& speakers_uuids);
 void reshape_floater(LLCallFloater* floater, S32 delta_height);
 
 class LLNonAvatarCaller : public LLAvatarListItem
@@ -131,9 +131,7 @@ LLCallFloater::~LLCallFloater()
 	mAvatarListRefreshConnection.disconnect();
 	mVoiceChannelStateChangeConnection.disconnect();
 
-	// Don't use LLVoiceClient::getInstance() here 
-	// singleton MAY have already been destroyed.
-	if(gVoiceClient)
+	if(LLVoiceClient::instanceExists())
 	{
 		gVoiceClient->removeObserver(this);
 	}
@@ -213,9 +211,9 @@ void LLCallFloater::onChange()
 	updateParticipantsVoiceState();
 
 	// Add newly joined participants.
-	std::vector<LLUUID> speakers_uuids;
+	uuid_vec_t speakers_uuids;
 	get_voice_participants_uuids(speakers_uuids);
-	for (std::vector<LLUUID>::const_iterator it = speakers_uuids.begin(); it != speakers_uuids.end(); it++)
+	for (uuid_vec_t::const_iterator it = speakers_uuids.begin(); it != speakers_uuids.end(); it++)
 	{
 		mParticipants->addAvatarIDExceptAgent(*it);
 	}
@@ -469,7 +467,7 @@ void LLCallFloater::updateAgentModeratorState()
 	mAgentPanel->childSetValue("user_text", name);
 }
 
-static void get_voice_participants_uuids(std::vector<LLUUID>& speakers_uuids)
+static void get_voice_participants_uuids(uuid_vec_t& speakers_uuids)
 {
 	// Get a list of participants from VoiceClient
 	LLVoiceClient::participantMap *voice_map = gVoiceClient->getParticipantList();
@@ -494,7 +492,7 @@ void LLCallFloater::initParticipantsVoiceState()
 		it_end = items.end();
 
 
-	std::vector<LLUUID> speakers_uuids;
+	uuid_vec_t speakers_uuids;
 	get_voice_participants_uuids(speakers_uuids);
 
 	for(; it != it_end; ++it)
@@ -505,7 +503,7 @@ void LLCallFloater::initParticipantsVoiceState()
 		
 		LLUUID speaker_id = item->getAvatarId();
 
-		std::vector<LLUUID>::const_iterator speaker_iter = std::find(speakers_uuids.begin(), speakers_uuids.end(), speaker_id);
+		uuid_vec_t::const_iterator speaker_iter = std::find(speakers_uuids.begin(), speakers_uuids.end(), speaker_id);
 
 		// If an avatarID assigned to a panel is found in a speakers list
 		// obtained from VoiceClient we assign the JOINED status to the owner
@@ -534,10 +532,10 @@ void LLCallFloater::initParticipantsVoiceState()
 
 void LLCallFloater::updateParticipantsVoiceState()
 {
-	std::vector<LLUUID> speakers_list;
+	uuid_vec_t speakers_list;
 
 	// Get a list of participants from VoiceClient
-	std::vector<LLUUID> speakers_uuids;
+	uuid_vec_t speakers_uuids;
 	get_voice_participants_uuids(speakers_uuids);
 
 	// Updating the status for each participant already in list.
@@ -555,7 +553,7 @@ void LLCallFloater::updateParticipantsVoiceState()
 		const LLUUID participant_id = item->getAvatarId();
 		bool found = false;
 
-		std::vector<LLUUID>::iterator speakers_iter = std::find(speakers_uuids.begin(), speakers_uuids.end(), participant_id);
+		uuid_vec_t::iterator speakers_iter = std::find(speakers_uuids.begin(), speakers_uuids.end(), participant_id);
 
 		lldebugs << "processing speaker: " << item->getAvatarName() << ", " << item->getAvatarId() << llendl;
 
@@ -665,8 +663,8 @@ void LLCallFloater::setVoiceRemoveTimer(const LLUUID& voice_speaker_id)
 
 bool LLCallFloater::removeVoiceLeftParticipant(const LLUUID& voice_speaker_id)
 {
-	LLAvatarList::uuid_vector_t& speaker_uuids = mAvatarList->getIDs();
-	LLAvatarList::uuid_vector_t::iterator pos = std::find(speaker_uuids.begin(), speaker_uuids.end(), voice_speaker_id);
+	uuid_vec_t& speaker_uuids = mAvatarList->getIDs();
+	uuid_vec_t::iterator pos = std::find(speaker_uuids.begin(), speaker_uuids.end(), voice_speaker_id);
 	if(pos != speaker_uuids.end())
 	{
 		speaker_uuids.erase(pos);
@@ -695,7 +693,7 @@ bool LLCallFloater::validateSpeaker(const LLUUID& speaker_id)
 	case  VC_LOCAL_CHAT:
 		{
 			// A nearby chat speaker is considered valid it it's known to LLVoiceClient (i.e. has enabled voice).
-			std::vector<LLUUID> speakers;
+			uuid_vec_t speakers;
 			get_voice_participants_uuids(speakers);
 			is_valid = std::find(speakers.begin(), speakers.end(), speaker_id) != speakers.end();
 		}
diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp
index b32a955038490014bd1675c1c06add49f0f5f811..67d5d21b2abe5632521da8ebed2e59bd490e2088 100644
--- a/indra/newview/llchatbar.cpp
+++ b/indra/newview/llchatbar.cpp
@@ -107,7 +107,7 @@ LLChatBar::LLChatBar()
 
 LLChatBar::~LLChatBar()
 {
-	LLGestureManager::instance().removeObserver(mObserver);
+	LLGestureMgr::instance().removeObserver(mObserver);
 	delete mObserver;
 	mObserver = NULL;
 	// LLView destructor cleans up children
@@ -209,8 +209,8 @@ void LLChatBar::refreshGestures()
 
 		// collect list of unique gestures
 		std::map <std::string, BOOL> unique;
-		LLGestureManager::item_map_t::const_iterator it;
-		const LLGestureManager::item_map_t& active_gestures = LLGestureManager::instance().getActiveGestures();
+		LLGestureMgr::item_map_t::const_iterator it;
+		const LLGestureMgr::item_map_t& active_gestures = LLGestureMgr::instance().getActiveGestures();
 		for (it = active_gestures.begin(); it != active_gestures.end(); ++it)
 		{
 			LLMultiGesture* gesture = (*it).second;
@@ -296,7 +296,7 @@ void LLChatBar::setGestureCombo(LLComboBox* combo)
 
 		// now register observer since we have a place to put the results
 		mObserver = new LLChatBarGestureObserver(this);
-		LLGestureManager::instance().addObserver(mObserver);
+		LLGestureMgr::instance().addObserver(mObserver);
 
 		// refresh list from current active gestures
 		refreshGestures();
@@ -377,7 +377,7 @@ void LLChatBar::sendChat( EChatType type )
 			if (0 == channel)
 			{
 				// discard returned "found" boolean
-				LLGestureManager::instance().triggerAndReviseString(utf8text, &utf8_revised_text);
+				LLGestureMgr::instance().triggerAndReviseString(utf8text, &utf8_revised_text);
 			}
 			else
 			{
@@ -516,7 +516,7 @@ void LLChatBar::onInputEditorKeystroke( LLLineEditor* caller, void* userdata )
 		std::string utf8_trigger = wstring_to_utf8str(raw_text);
 		std::string utf8_out_str(utf8_trigger);
 
-		if (LLGestureManager::instance().matchPrefix(utf8_trigger, &utf8_out_str))
+		if (LLGestureMgr::instance().matchPrefix(utf8_trigger, &utf8_out_str))
 		{
 			if (self->mInputEditor)
 			{
@@ -653,7 +653,7 @@ void LLChatBar::onCommitGesture(LLUICtrl* ctrl)
 		// substitution and logging.
 		std::string text(trigger);
 		std::string revised_text;
-		LLGestureManager::instance().triggerAndReviseString(text, &revised_text);
+		LLGestureMgr::instance().triggerAndReviseString(text, &revised_text);
 
 		revised_text = utf8str_trim(revised_text);
 		if (!revised_text.empty())
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index efdfbb8d20986b438c61ea4dc2d11d4474df4e99..68c31d87facb6096b2dac7333843dc6c2f2d99f7 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -93,7 +93,7 @@ class LLObjectIMHandler : public LLCommandHandler
 		payload["object_id"] = object_id;
 		payload["owner_id"] = query_map["owner"];
 		payload["name"] = query_map["name"];
-		payload["slurl"] = query_map["slurl"];
+		payload["slurl"] = LLWeb::escapeURL(query_map["slurl"]);
 		payload["group_owned"] = query_map["groupowned"];
 		LLFloaterReg::showInstance("inspect_remote_object", payload);
 		return true;
@@ -447,7 +447,6 @@ LLChatHistory::LLChatHistory(const LLChatHistory::Params& p)
 :	LLUICtrl(p),
 	mMessageHeaderFilename(p.message_header),
 	mMessageSeparatorFilename(p.message_separator),
-	mMessagePlaintextSeparatorFilename(p.message_plaintext_separator),
 	mLeftTextPad(p.left_text_pad),
 	mRightTextPad(p.right_text_pad),
 	mLeftWidgetPad(p.left_widget_pad),
@@ -535,12 +534,6 @@ LLView* LLChatHistory::getSeparator()
 	return separator;
 }
 
-LLView* LLChatHistory::getPlaintextSeparator()
-{
-	LLPanel* separator = LLUICtrlFactory::getInstance()->createFromFile<LLPanel>(mMessagePlaintextSeparatorFilename, NULL, LLPanel::child_registry_t::instance());
-	return separator;
-}
-
 LLView* LLChatHistory::getHeader(const LLChat& chat,const LLStyle::Params& style_params)
 {
 	LLChatHistoryHeader* header = LLChatHistoryHeader::createInstance(mMessageHeaderFilename);
@@ -639,16 +632,14 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
 
 	if (use_plain_text_chat_history)
 	{
-		// append plaintext separator
-		LLView* separator = getPlaintextSeparator();
-		LLInlineViewSegment::Params p;
-		p.force_newline = true;
-		p.left_pad = mLeftWidgetPad;
-		p.right_pad = mRightWidgetPad;
-		p.view = separator;
-		mEditor->appendWidget(p, "\n", false);
-
-		mEditor->appendText("[" + chat.mTimeStr + "] ", mEditor->getText().size() != 0, style_params);
+		LLStyle::Params timestamp_style(style_params);
+		if (!message_from_log)
+		{
+			LLColor4 timestamp_color = LLUIColorTable::instance().getColor("ChatTimestampColor");
+			timestamp_style.color(timestamp_color);
+			timestamp_style.readonly_color(timestamp_color);
+		}
+		mEditor->appendText("[" + chat.mTimeStr + "] ", mEditor->getText().size() != 0, timestamp_style);
 
 		if (utf8str_trim(chat.mFromName).size() != 0)
 		{
@@ -751,7 +742,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
 		if (notification != NULL)
 		{
 			LLIMToastNotifyPanel* notify_box = new LLIMToastNotifyPanel(
-					notification);
+					notification, chat.mSessionID);
 			//we can't set follows in xml since it broke toasts behavior
 			notify_box->setFollowsLeft();
 			notify_box->setFollowsRight();
diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h
index dfe5ea98e66e50ad8db1930ed50dccef3240a29a..950b32861bdd56b5e8d10c32aa84a7245816862b 100644
--- a/indra/newview/llchathistory.h
+++ b/indra/newview/llchathistory.h
@@ -47,8 +47,6 @@ class LLChatHistory : public LLUICtrl
 			Optional<std::string>	message_header;
 			//Message separator filename
 			Optional<std::string>	message_separator;
-			//Message plaintext  separator filename
-			Optional<std::string>	message_plaintext_separator;
 			//Text left padding from the scroll rect
 			Optional<S32>			left_text_pad;
 			//Text right padding from the scroll rect
@@ -71,7 +69,6 @@ class LLChatHistory : public LLUICtrl
 			Params()
 			:	message_header("message_header"),
 				message_separator("message_separator"),
-				message_plaintext_separator("message_plaintext_separator"),
 				left_text_pad("left_text_pad"),
 				right_text_pad("right_text_pad"),
 				left_widget_pad("left_widget_pad"),
@@ -99,11 +96,6 @@ class LLChatHistory : public LLUICtrl
 		 * @return pointer to LLView separator object.
 		 */
 		LLView* getSeparator();
-		/**
-		 * Builds a message plaintext  separator.
-		 * @return pointer to LLView separator object.
-		 */
-		LLView* getPlaintextSeparator();
 		/**
 		 * Builds a message header.
 		 * @return pointer to LLView header object.
@@ -141,7 +133,6 @@ class LLChatHistory : public LLUICtrl
 
 		std::string mMessageHeaderFilename;
 		std::string mMessageSeparatorFilename;
-		std::string mMessagePlaintextSeparatorFilename;
 
 		S32 mLeftTextPad;
 		S32 mRightTextPad;
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 1f92686a43606edd7f9712be798612367f493b8b..e39384b7b29e4ddbc44eb3a71ef6cc332ce82f1e 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -229,6 +229,11 @@ void LLSysWellChiclet::setNewMessagesState(bool new_messages)
 void LLSysWellChiclet::updateWidget(bool is_window_empty)
 {
 	mButton->setEnabled(!is_window_empty);
+
+	LLSD params;
+	params["well_empty"] = is_window_empty;
+	params["well_name"] = getName();
+	notifyParent(params);
 }
 // virtual
 BOOL LLSysWellChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask)
diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index a96981a1083e3544ac9d2282c67b4116e4e45548..feb8c540ef9518d57c97032ed0bc5f3013da9e84 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -114,7 +114,7 @@ BOOL LLFloaterScriptQueue::postBuild()
 // worked on.
 // NOT static, virtual!
 void LLFloaterScriptQueue::inventoryChanged(LLViewerObject* viewer_object,
-											 InventoryObjectList* inv,
+											 LLInventoryObject::object_list_t* inv,
 											 S32,
 											 void* q_id)
 {
@@ -305,7 +305,7 @@ LLFloaterCompileQueue::~LLFloaterCompileQueue()
 }
 
 void LLFloaterCompileQueue::handleInventory(LLViewerObject *viewer_object,
-											InventoryObjectList* inv)
+											LLInventoryObject::object_list_t* inv)
 {
 	// find all of the lsl, leaving off duplicates. We'll remove
 	// all matching asset uuids on compilation success.
@@ -313,8 +313,8 @@ void LLFloaterCompileQueue::handleInventory(LLViewerObject *viewer_object,
 	typedef std::multimap<LLUUID, LLPointer<LLInventoryItem> > uuid_item_map;
 	uuid_item_map asset_item_map;
 
-	InventoryObjectList::const_iterator it = inv->begin();
-	InventoryObjectList::const_iterator end = inv->end();
+	LLInventoryObject::object_list_t::const_iterator it = inv->begin();
+	LLInventoryObject::object_list_t::const_iterator end = inv->end();
 	for ( ; it != end; ++it)
 	{
 		if((*it)->getType() == LLAssetType::AT_LSL_TEXT)
@@ -625,14 +625,14 @@ LLFloaterResetQueue::~LLFloaterResetQueue()
 }
 
 void LLFloaterResetQueue::handleInventory(LLViewerObject* viewer_obj,
-										  InventoryObjectList* inv)
+										  LLInventoryObject::object_list_t* inv)
 {
 	// find all of the lsl, leaving off duplicates. We'll remove
 	// all matching asset uuids on compilation success.
 	LLDynamicArray<const char*> names;
 	
-	InventoryObjectList::const_iterator it = inv->begin();
-	InventoryObjectList::const_iterator end = inv->end();
+	LLInventoryObject::object_list_t::const_iterator it = inv->begin();
+	LLInventoryObject::object_list_t::const_iterator end = inv->end();
 	for ( ; it != end; ++it)
 	{
 		if((*it)->getType() == LLAssetType::AT_LSL_TEXT)
@@ -677,14 +677,14 @@ LLFloaterRunQueue::~LLFloaterRunQueue()
 }
 
 void LLFloaterRunQueue::handleInventory(LLViewerObject* viewer_obj,
-										  InventoryObjectList* inv)
+										  LLInventoryObject::object_list_t* inv)
 {
 	// find all of the lsl, leaving off duplicates. We'll remove
 	// all matching asset uuids on compilation success.
 	LLDynamicArray<const char*> names;
 	
-	InventoryObjectList::const_iterator it = inv->begin();
-	InventoryObjectList::const_iterator end = inv->end();
+	LLInventoryObject::object_list_t::const_iterator it = inv->begin();
+	LLInventoryObject::object_list_t::const_iterator end = inv->end();
 	for ( ; it != end; ++it)
 	{
 		if((*it)->getType() == LLAssetType::AT_LSL_TEXT)
@@ -732,14 +732,14 @@ LLFloaterNotRunQueue::~LLFloaterNotRunQueue()
 }
 
 void LLFloaterNotRunQueue::handleInventory(LLViewerObject* viewer_obj,
-										  InventoryObjectList* inv)
+										  LLInventoryObject::object_list_t* inv)
 {
 	// find all of the lsl, leaving off duplicates. We'll remove
 	// all matching asset uuids on compilation success.
 	LLDynamicArray<const char*> names;
 	
-	InventoryObjectList::const_iterator it = inv->begin();
-	InventoryObjectList::const_iterator end = inv->end();
+	LLInventoryObject::object_list_t::const_iterator it = inv->begin();
+	LLInventoryObject::object_list_t::const_iterator end = inv->end();
 	for ( ; it != end; ++it)
 	{
 		if((*it)->getType() == LLAssetType::AT_LSL_TEXT)
diff --git a/indra/newview/llcompilequeue.h b/indra/newview/llcompilequeue.h
index 2d061f5d8a2e96b66dbaf11beff65dd61d029464..4fde2572af4539efd9df892311bd9570cc933447 100644
--- a/indra/newview/llcompilequeue.h
+++ b/indra/newview/llcompilequeue.h
@@ -76,13 +76,13 @@ class LLFloaterScriptQueue : public LLFloater, public LLVOInventoryListener
 	// This is the callback method for the viewer object currently
 	// being worked on.
 	/*virtual*/ void inventoryChanged(LLViewerObject* obj,
-								 InventoryObjectList* inv,
+								 LLInventoryObject::object_list_t* inv,
 								 S32 serial_num,
 								 void* queue);
 	
 	// This is called by inventoryChanged
 	virtual void handleInventory(LLViewerObject* viewer_obj,
-								InventoryObjectList* inv) = 0;
+								LLInventoryObject::object_list_t* inv) = 0;
 
 	static void onCloseBtn(void* user_data);
 
@@ -145,7 +145,7 @@ class LLFloaterCompileQueue : public LLFloaterScriptQueue
 	
 	// This is called by inventoryChanged
 	virtual void handleInventory(LLViewerObject* viewer_obj,
-								InventoryObjectList* inv);
+								LLInventoryObject::object_list_t* inv);
 
 	// This is the callback for when each script arrives
 	static void scriptArrived(LLVFS *vfs, const LLUUID& asset_id,
@@ -192,7 +192,7 @@ class LLFloaterResetQueue : public LLFloaterScriptQueue
 	
 	// This is called by inventoryChanged
 	virtual void handleInventory(LLViewerObject* viewer_obj,
-								InventoryObjectList* inv);
+								LLInventoryObject::object_list_t* inv);
 };
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -210,7 +210,7 @@ class LLFloaterRunQueue : public LLFloaterScriptQueue
 	
 	// This is called by inventoryChanged
 	virtual void handleInventory(LLViewerObject* viewer_obj,
-								InventoryObjectList* inv);
+								LLInventoryObject::object_list_t* inv);
 };
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -228,7 +228,7 @@ class LLFloaterNotRunQueue : public LLFloaterScriptQueue
 	
 	// This is called by inventoryChanged
 	virtual void handleInventory(LLViewerObject* viewer_obj,
-								InventoryObjectList* inv);
+								LLInventoryObject::object_list_t* inv);
 };
 
 #endif // LL_LLCOMPILEQUEUE_H
diff --git a/indra/newview/lldriverparam.cpp b/indra/newview/lldriverparam.cpp
index 830e975e8abded870bde30607d96cb91daea75ea..ebd767d654a9af92fcb3c3b6357ee92eda496c0a 100644
--- a/indra/newview/lldriverparam.cpp
+++ b/indra/newview/lldriverparam.cpp
@@ -118,13 +118,12 @@ void LLDriverParamInfo::toStream(std::ostream &out)
 
 	out << std::endl;
 
-	LLVOAvatarSelf *avatar = gAgent.getAvatarObject();
-	if(avatar)
+	if(isAgentAvatarValid())
 	{
 		for (entry_info_list_t::iterator iter = mDrivenInfoList.begin(); iter != mDrivenInfoList.end(); iter++)
 		{
 			LLDrivenEntryInfo driven = *iter;
-			LLViewerVisualParam *param = (LLViewerVisualParam*)avatar->getVisualParam(driven.mDrivenID);
+			LLViewerVisualParam *param = (LLViewerVisualParam*)gAgentAvatarp->getVisualParam(driven.mDrivenID);
 			if (param)
 			{
 				param->getInfo()->toStream(out);
@@ -146,7 +145,7 @@ void LLDriverParamInfo::toStream(std::ostream &out)
 			}
 			else
 			{
-				llwarns << "could not get parameter " << driven.mDrivenID << " from avatar " << avatar << " for driver parameter " << getID() << llendl;
+				llwarns << "could not get parameter " << driven.mDrivenID << " from avatar " << gAgentAvatarp << " for driver parameter " << getID() << llendl;
 			}
 			out << std::endl;
 		}
@@ -626,13 +625,13 @@ F32 LLDriverParam::getDrivenWeight(const LLDrivenEntry* driven, F32 input_weight
 
 void LLDriverParam::setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool upload_bake)
 {
-	LLVOAvatarSelf *avatar_self = gAgent.getAvatarObject();
-	if(mWearablep && 
+	if(isAgentAvatarValid() &&
+	   mWearablep && 
 	   driven->mParam->getCrossWearable() &&
 	   mWearablep->isOnTop())
 	{
 		// call setWeight through LLVOAvatarSelf so other wearables can be updated with the correct values
-		avatar_self->setVisualParamWeight( (LLVisualParam*)driven->mParam, driven_weight, upload_bake );
+		gAgentAvatarp->setVisualParamWeight( (LLVisualParam*)driven->mParam, driven_weight, upload_bake );
 	}
 	else
 	{
diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp
index 362010d65af6157ffe61b79e4bc5f1cf96106495..149ba2478dce7f8fccd0c088819901cef0a4b29a 100644
--- a/indra/newview/llexpandabletextbox.cpp
+++ b/indra/newview/llexpandabletextbox.cpp
@@ -112,13 +112,12 @@ class LLExpanderSegment : public LLTextSegment
 };
 
 LLExpandableTextBox::LLTextBoxEx::Params::Params()
-:	more_label("more_label")
 {
 }
 
 LLExpandableTextBox::LLTextBoxEx::LLTextBoxEx(const Params& p)
 :	LLTextEditor(p),
-	mExpanderLabel(p.more_label),
+	mExpanderLabel(p.label),
 	mExpanderVisible(false)
 {
 	setIsChrome(TRUE);
diff --git a/indra/newview/llexpandabletextbox.h b/indra/newview/llexpandabletextbox.h
index 9d4a8aef7684b59d961b73c63b9642bdfcbdd5a4..5872592faed329b2b8cb488fcb46bf2bcd77f2cb 100644
--- a/indra/newview/llexpandabletextbox.h
+++ b/indra/newview/llexpandabletextbox.h
@@ -54,7 +54,6 @@ class LLExpandableTextBox : public LLUICtrl
 	public:
 		struct Params :	public LLInitParam::Block<Params, LLTextEditor::Params>
 		{
-			Mandatory<std::string> more_label;
 			Params();
 		};
 
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index bf7c73548833c360e999392861a6a858d483f363..ba92c33d5914bbf6a08d0525c36657bc935fac94 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -31,7 +31,6 @@
  */
 
 #include "llviewerprecompiledheaders.h"
-
 #include "llfavoritesbar.h"
 
 #include "llfloaterreg.h"
@@ -47,6 +46,7 @@
 #include "llclipboard.h"
 #include "llinventoryclipboard.h"
 #include "llinventorybridge.h"
+#include "llinventoryfunctions.h"
 #include "llfloaterworldmap.h"
 #include "lllandmarkactions.h"
 #include "llnotificationsutil.h"
diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp
index feb18fe39351da977d4fc4247166e5d8522c18b6..434c89e8bac429749926bcafc54a1112aec6bf03 100644
--- a/indra/newview/llfloateranimpreview.cpp
+++ b/indra/newview/llfloateranimpreview.cpp
@@ -568,7 +568,7 @@ void LLFloaterAnimPreview::onBtnPlay(void* user_data)
 	{
 		LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
 		
-		if(!avatarp->isMotionActive(previewp->mMotionID))
+		if (!avatarp->isMotionActive(previewp->mMotionID))
 		{
 			previewp->resetMotion();
 			previewp->mPauseRequest = NULL;
@@ -593,7 +593,7 @@ void LLFloaterAnimPreview::onBtnPause(void* user_data)
 	{
 		LLVOAvatar* avatarp = previewp->mAnimPreview->getDummyAvatar();
 
-		if(avatarp->isMotionActive(previewp->mMotionID))
+		if (avatarp->isMotionActive(previewp->mMotionID))
 		{
 			if (!avatarp->areAnimationsPaused())
 			{
diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp
index a0b2de85f06c4d75f1a258763845b1fbf586af2f..2cb0cdf36896ad9bb1a31eacbde5012f8ce2566c 100644
--- a/indra/newview/llfloateravatarpicker.cpp
+++ b/indra/newview/llfloateravatarpicker.cpp
@@ -157,7 +157,7 @@ void LLFloaterAvatarPicker::onBtnFind()
 	find();
 }
 
-static void getSelectedAvatarData(const LLScrollListCtrl* from, std::vector<std::string>& avatar_names, std::vector<LLUUID>& avatar_ids)
+static void getSelectedAvatarData(const LLScrollListCtrl* from, std::vector<std::string>& avatar_names, uuid_vec_t& avatar_ids)
 {
 	std::vector<LLScrollListItem*> items = from->getAllSelected();
 	for (std::vector<LLScrollListItem*>::iterator iter = items.begin(); iter != items.end(); ++iter)
@@ -203,7 +203,7 @@ void LLFloaterAvatarPicker::onBtnSelect()
 		if(list)
 		{
 			std::vector<std::string>	avatar_names;
-			std::vector<LLUUID>			avatar_ids;
+			uuid_vec_t			avatar_ids;
 			getSelectedAvatarData(list, avatar_names, avatar_ids);
 			mSelectionCallback(avatar_names, avatar_ids);
 		}
@@ -247,7 +247,7 @@ void LLFloaterAvatarPicker::populateNearMe()
 	LLScrollListCtrl* near_me_scroller = getChild<LLScrollListCtrl>("NearMe");
 	near_me_scroller->deleteAllItems();
 
-	std::vector<LLUUID> avatar_ids;
+	uuid_vec_t avatar_ids;
 	LLWorld::getInstance()->getAvatars(&avatar_ids, NULL, gAgent.getPositionGlobal(), gSavedSettings.getF32("NearMeRange"));
 	for(U32 i=0; i<avatar_ids.size(); i++)
 	{
@@ -499,7 +499,7 @@ bool LLFloaterAvatarPicker::isSelectBtnEnabled()
 
 		if(list)
 		{
-			std::vector<LLUUID> avatar_ids;
+			uuid_vec_t avatar_ids;
 			std::vector<std::string> avatar_names;
 			getSelectedAvatarData(list, avatar_names, avatar_ids);
 			return mOkButtonValidateSignal(avatar_ids);
diff --git a/indra/newview/llfloateravatarpicker.h b/indra/newview/llfloateravatarpicker.h
index e35466cec86b0bca671aac85d07b10aba064cce9..860f3930ef45fb58fa79a37b3197dad33c5d234e 100644
--- a/indra/newview/llfloateravatarpicker.h
+++ b/indra/newview/llfloateravatarpicker.h
@@ -40,11 +40,11 @@
 class LLFloaterAvatarPicker : public LLFloater
 {
 public:
-	typedef boost::signals2::signal<bool(const std::vector<LLUUID>&), boost_boolean_combiner> validate_signal_t;
+	typedef boost::signals2::signal<bool(const uuid_vec_t&), boost_boolean_combiner> validate_signal_t;
 	typedef validate_signal_t::slot_type validate_callback_t;
 
 	// The callback function will be called with an avatar name and UUID.
-	typedef boost::function<void (const std::vector<std::string>&, const std::vector<LLUUID>&)> select_callback_t;
+	typedef boost::function<void (const std::vector<std::string>&, const uuid_vec_t&)> select_callback_t;
 	// Call this to select an avatar.	
 	static LLFloaterAvatarPicker* show(select_callback_t callback, 
 									   BOOL allow_multiple = FALSE,
diff --git a/indra/newview/llfloateravatartextures.cpp b/indra/newview/llfloateravatartextures.cpp
index 8c7899af3edbf7b9d7177ec9bc52c17a9ab56584..18db60705bb1c4a39bc3655271606a4a68eff05b 100644
--- a/indra/newview/llfloateravatartextures.cpp
+++ b/indra/newview/llfloateravatartextures.cpp
@@ -31,15 +31,14 @@
  */
 
 #include "llviewerprecompiledheaders.h"
-
 #include "llfloateravatartextures.h"
 
+#include "llagent.h"
+#include "llagentwearables.h"
 #include "lltexturectrl.h"
-
 #include "lluictrlfactory.h"
 #include "llviewerobjectlist.h"
 #include "llvoavatar.h"
-#include "llagentwearables.h"
 
 using namespace LLVOAvatarDefines;
 
@@ -75,7 +74,6 @@ void LLFloaterAvatarTextures::draw()
 	LLFloater::draw();
 }
 
-#if !LL_RELEASE_FOR_DOWNLOAD
 static void update_texture_ctrl(LLVOAvatar* avatarp,
 								 LLTextureCtrl* ctrl,
 								 ETextureIndex te)
@@ -132,72 +130,68 @@ static LLVOAvatar* find_avatar(const LLUUID& id)
 
 void LLFloaterAvatarTextures::refresh()
 {
-	LLVOAvatar *avatarp = find_avatar(mID);
-	if (avatarp)
+	if (gAgent.isGodlike())
 	{
-		std::string fullname;
-		if (gCacheName->getFullName(avatarp->getID(), fullname))
+		LLVOAvatar *avatarp = find_avatar(mID);
+		if (avatarp)
 		{
-			setTitle(mTitle + ": " + fullname);
+			std::string fullname;
+			if (gCacheName->getFullName(avatarp->getID(), fullname))
+			{
+				setTitle(mTitle + ": " + fullname);
+			}
+			for (U32 i=0; i < TEX_NUM_INDICES; i++)
+			{
+				update_texture_ctrl(avatarp, mTextures[i], ETextureIndex(i));
+			}
 		}
-		for (U32 i=0; i < TEX_NUM_INDICES; i++)
+		else
 		{
-			update_texture_ctrl(avatarp, mTextures[i], ETextureIndex(i));
+			setTitle(mTitle + ": " + getString("InvalidAvatar") + " (" + mID.asString() + ")");
 		}
 	}
-	else
-	{
-		setTitle(mTitle + ": " + getString("InvalidAvatar") + " (" + mID.asString() + ")");
-	}
 }
 
-#else
-
-void LLFloaterAvatarTextures::refresh()
-{
-}
-
-#endif
-
 // static
 void LLFloaterAvatarTextures::onClickDump(void* data)
 {
-#if !LL_RELEASE_FOR_DOWNLOAD
-	LLFloaterAvatarTextures* self = (LLFloaterAvatarTextures*)data;
-	LLVOAvatar* avatarp = find_avatar(self->mID);
-	if (!avatarp) return;
-
-	for (S32 i = 0; i < avatarp->getNumTEs(); i++)
+	if (gAgent.isGodlike())
 	{
-		const LLTextureEntry* te = avatarp->getTE(i);
-		if (!te) continue;
+		LLFloaterAvatarTextures* self = (LLFloaterAvatarTextures*)data;
+		LLVOAvatar* avatarp = find_avatar(self->mID);
+		if (!avatarp) return;
 
-		if (LLVOAvatar::isIndexLocalTexture((ETextureIndex)i))
+		for (S32 i = 0; i < avatarp->getNumTEs(); i++)
 		{
-			LLUUID id = IMG_DEFAULT_AVATAR;
-			EWearableType wearable_type = LLVOAvatarDictionary::getInstance()->getTEWearableType((ETextureIndex)i);
-			LLWearable *wearable = gAgentWearables.getWearable(wearable_type, 0);
-			if (wearable)
+			const LLTextureEntry* te = avatarp->getTE(i);
+			if (!te) continue;
+
+			if (LLVOAvatar::isIndexLocalTexture((ETextureIndex)i))
 			{
-				LLLocalTextureObject *lto = wearable->getLocalTextureObject(i);
-				if (lto)
+				LLUUID id = IMG_DEFAULT_AVATAR;
+				EWearableType wearable_type = LLVOAvatarDictionary::getInstance()->getTEWearableType((ETextureIndex)i);
+				LLWearable *wearable = gAgentWearables.getWearable(wearable_type, 0);
+				if (wearable)
 				{
-					id = lto->getID();
+					LLLocalTextureObject *lto = wearable->getLocalTextureObject(i);
+					if (lto)
+					{
+						id = lto->getID();
+					}
+				}
+				if (id != IMG_DEFAULT_AVATAR)
+				{
+					llinfos << "Avatar TE " << i << " id " << id << llendl;
+				}
+				else
+				{
+					llinfos << "Avatar TE " << i << " id " << "<DEFAULT>" << llendl;
 				}
-			}
-			if (id != IMG_DEFAULT_AVATAR)
-			{
-				llinfos << "Avatar TE " << i << " id " << id << llendl;
 			}
 			else
 			{
-				llinfos << "Avatar TE " << i << " id " << "<DEFAULT>" << llendl;
+				llinfos << "Avatar TE " << i << " id " << te->getID() << llendl;
 			}
 		}
-		else
-		{
-			llinfos << "Avatar TE " << i << " id " << te->getID() << llendl;
-		}
 	}
-#endif
 }
diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp
index b2f700069f915aa8825c442ea97e0404123f7c8a..766fc0723c314489a275758d2b63c7b3872671e0 100644
--- a/indra/newview/llfloaterbulkpermission.cpp
+++ b/indra/newview/llfloaterbulkpermission.cpp
@@ -37,6 +37,7 @@
 #include "llfloaterperms.h" // for utilities
 #include "llagent.h"
 #include "llchat.h"
+#include "llinventorydefines.h"
 #include "llviewerwindow.h"
 #include "llviewerobject.h"
 #include "llviewerobjectlist.h"
@@ -116,7 +117,7 @@ void LLFloaterBulkPermission::doApply()
 // worked on.
 // NOT static, virtual!
 void LLFloaterBulkPermission::inventoryChanged(LLViewerObject* viewer_object,
-											 InventoryObjectList* inv,
+											 LLInventoryObject::object_list_t* inv,
 											 S32,
 											 void* q_id)
 {
@@ -250,12 +251,12 @@ void LLFloaterBulkPermission::doCheckUncheckAll(BOOL check)
 }
 
 
-void LLFloaterBulkPermission::handleInventory(LLViewerObject* viewer_obj, InventoryObjectList* inv)
+void LLFloaterBulkPermission::handleInventory(LLViewerObject* viewer_obj, LLInventoryObject::object_list_t* inv)
 {
 	LLScrollListCtrl* list = getChild<LLScrollListCtrl>("queue output");
 
-	InventoryObjectList::const_iterator it = inv->begin();
-	InventoryObjectList::const_iterator end = inv->end();
+	LLInventoryObject::object_list_t::const_iterator it = inv->begin();
+	LLInventoryObject::object_list_t::const_iterator end = inv->end();
 	for ( ; it != end; ++it)
 	{
 		LLAssetType::EType asstype = (*it)->getType();
diff --git a/indra/newview/llfloaterbulkpermission.h b/indra/newview/llfloaterbulkpermission.h
index bffcff7059a96e85c46e7e11e43d92c1e4fa5f2f..80dc88fbb1bd413404830a1b4fbf3ce94ca365f7 100644
--- a/indra/newview/llfloaterbulkpermission.h
+++ b/indra/newview/llfloaterbulkpermission.h
@@ -63,13 +63,13 @@ class LLFloaterBulkPermission : public LLFloater, public LLVOInventoryListener
 	// This is the callback method for the viewer object currently
 	// being worked on.
 	/*virtual*/ void inventoryChanged(LLViewerObject* obj,
-								 InventoryObjectList* inv,
+								 LLInventoryObject::object_list_t* inv,
 								 S32 serial_num,
 								 void* queue);
 	
 	// This is called by inventoryChanged
 	void handleInventory(LLViewerObject* viewer_obj,
-								InventoryObjectList* inv);
+								LLInventoryObject::object_list_t* inv);
 
 
 	void updateInventory(LLViewerObject* object,
diff --git a/indra/newview/llfloaterbuy.cpp b/indra/newview/llfloaterbuy.cpp
index 589f570d96f0416e3eefef3c812698701ade1099..44c82f1941eadf62f0a72249e97867cedf5d2192 100644
--- a/indra/newview/llfloaterbuy.cpp
+++ b/indra/newview/llfloaterbuy.cpp
@@ -44,6 +44,7 @@
 #include "llinventorymodel.h"	// for gInventory
 #include "llfloaterreg.h"
 #include "llfloaterinventory.h"	// for get_item_icon
+#include "llinventorydefines.h"
 #include "llinventoryfunctions.h"
 #include "llnotificationsutil.h"
 #include "llselectmgr.h"
@@ -195,7 +196,7 @@ void LLFloaterBuy::show(const LLSaleInfo& sale_info)
 }
 
 void LLFloaterBuy::inventoryChanged(LLViewerObject* obj,
-								 InventoryObjectList* inv,
+								 LLInventoryObject::object_list_t* inv,
 								 S32 serial_num,
 								 void* data)
 {
@@ -220,8 +221,8 @@ void LLFloaterBuy::inventoryChanged(LLViewerObject* obj,
 		return;
 	}
 
-	InventoryObjectList::const_iterator it = inv->begin();
-	InventoryObjectList::const_iterator end = inv->end();
+	LLInventoryObject::object_list_t::const_iterator it = inv->begin();
+	LLInventoryObject::object_list_t::const_iterator end = inv->end();
 	for ( ; it != end; ++it )
 	{
 		LLInventoryObject* obj = (LLInventoryObject*)(*it);
@@ -246,8 +247,8 @@ void LLFloaterBuy::inventoryChanged(LLViewerObject* obj,
 
 		// Compute icon for this item
 		BOOL item_is_multi = FALSE;
-		if ( inv_item->getFlags() & LLInventoryItem::II_FLAGS_LANDMARK_VISITED 
-			|| inv_item->getFlags() & LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS)
+		if ( inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_LANDMARK_VISITED 
+			|| inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS)
 		{
 			item_is_multi = TRUE;
 		}
diff --git a/indra/newview/llfloaterbuy.h b/indra/newview/llfloaterbuy.h
index ab38e082dc8817242abcc29cd63230a9f0d952e4..411c8fb00e0a536515887930ffdc3577655d591c 100644
--- a/indra/newview/llfloaterbuy.h
+++ b/indra/newview/llfloaterbuy.h
@@ -65,7 +65,7 @@ class LLFloaterBuy
 
 	void requestObjectInventories();
 	/*virtual*/ void inventoryChanged(LLViewerObject* obj,
-								 InventoryObjectList* inv,
+								 LLInventoryObject::object_list_t* inv,
 								 S32 serial_num,
 								 void* data);
 
diff --git a/indra/newview/llfloaterbuycontents.cpp b/indra/newview/llfloaterbuycontents.cpp
index 0daef27af297e4773006969a1b977aab06832437..1d989ad0fd5bb2ac2f41cc86040cd66a15c87eb7 100644
--- a/indra/newview/llfloaterbuycontents.cpp
+++ b/indra/newview/llfloaterbuycontents.cpp
@@ -44,6 +44,7 @@
 
 #include "llagent.h"			// for agent id
 #include "llcheckboxctrl.h"
+#include "llinventorydefines.h"
 #include "llinventoryfunctions.h"
 #include "llinventorymodel.h"	// for gInventory
 #include "llfloaterreg.h"
@@ -142,7 +143,7 @@ void LLFloaterBuyContents::show(const LLSaleInfo& sale_info)
 
 
 void LLFloaterBuyContents::inventoryChanged(LLViewerObject* obj,
-											InventoryObjectList* inv,
+											LLInventoryObject::object_list_t* inv,
 								 S32 serial_num,
 								 void* data)
 {
@@ -176,8 +177,8 @@ void LLFloaterBuyContents::inventoryChanged(LLViewerObject* obj,
 	LLInventoryType::EType inv_type;
 	S32 wearable_count = 0;
 	
-	InventoryObjectList::const_iterator it = inv->begin();
-	InventoryObjectList::const_iterator end = inv->end();
+	LLInventoryObject::object_list_t::const_iterator it = inv->begin();
+	LLInventoryObject::object_list_t::const_iterator end = inv->end();
 
 	for ( ; it != end; ++it )
 	{
@@ -215,7 +216,7 @@ void LLFloaterBuyContents::inventoryChanged(LLViewerObject* obj,
 		LLSD row;
 
 		BOOL item_is_multi = FALSE;
-		if ( inv_item->getFlags() & LLInventoryItem::II_FLAGS_LANDMARK_VISITED )
+		if ( inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_LANDMARK_VISITED )
 		{
 			item_is_multi = TRUE;
 		}
diff --git a/indra/newview/llfloaterbuycontents.h b/indra/newview/llfloaterbuycontents.h
index 8045a46c9f235f93cb0e3214c5dc524d62b00c19..ab161adfeaee504c38a0f1fb548adb6e5fce7fe0 100644
--- a/indra/newview/llfloaterbuycontents.h
+++ b/indra/newview/llfloaterbuycontents.h
@@ -59,7 +59,7 @@ class LLFloaterBuyContents
 protected:
 	void requestObjectInventories();
 	/*virtual*/ void inventoryChanged(LLViewerObject* obj,
-								 InventoryObjectList* inv,
+								 LLInventoryObject::object_list_t* inv,
 								 S32 serial_num,
 								 void* data);
 	
diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
index 9c1ac2631d490552c403aa5f1829c264f4835fbe..8ee8d13a9c09959246cb038fe856ef5808620c0e 100644
--- a/indra/newview/llfloatergesture.cpp
+++ b/indra/newview/llfloatergesture.cpp
@@ -36,6 +36,7 @@
 
 #include "llinventory.h"
 #include "llinventorybridge.h"
+#include "llinventoryfunctions.h"
 #include "llinventorymodel.h"
 #include "llinventoryclipboard.h"
 
@@ -106,7 +107,7 @@ LLFloaterGesture::LLFloaterGesture(const LLSD& key)
 	: LLFloater(key)
 {
 	mObserver = new LLFloaterGestureObserver(this);
-	LLGestureManager::instance().addObserver(mObserver);
+	LLGestureMgr::instance().addObserver(mObserver);
 
 	mCommitCallbackRegistrar.add("Gesture.Action.ToogleActiveState", boost::bind(&LLFloaterGesture::onActivateBtnClick, this));
 	mCommitCallbackRegistrar.add("Gesture.Action.ShowPreview", boost::bind(&LLFloaterGesture::onClickEdit, this));
@@ -125,7 +126,7 @@ void LLFloaterGesture::done()
 		// we load only gesture folder without childred.
 		LLInventoryModel::cat_array_t* categories;
 		LLInventoryModel::item_array_t* items;
-		LLInventoryFetchDescendentsObserver::folder_ref_t unloaded_folders;
+		uuid_vec_t unloaded_folders;
 		LL_DEBUGS("Gesture")<< "Get subdirs of Gesture Folder...." << LL_ENDL;
 		gInventory.getDirectDescendentsOf(mGestureFolderID, categories, items);
 		if (categories->empty())
@@ -147,7 +148,7 @@ void LLFloaterGesture::done()
 		if (!unloaded_folders.empty())
 		{
 			LL_DEBUGS("Gesture")<< "Fetching subdirectories....." << LL_ENDL;
-			fetchDescendents(unloaded_folders);
+			fetch(unloaded_folders);
 		}
 		else
 		{
@@ -165,7 +166,7 @@ void LLFloaterGesture::done()
 // virtual
 LLFloaterGesture::~LLFloaterGesture()
 {
-	LLGestureManager::instance().removeObserver(mObserver);
+	LLGestureMgr::instance().removeObserver(mObserver);
 	delete mObserver;
 	mObserver = NULL;
 	gInventory.removeObserver(this);
@@ -197,11 +198,11 @@ BOOL LLFloaterGesture::postBuild()
 	setDefaultBtn("play_btn");
 	mGestureFolderID = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE, false);
 
-	folder_ref_t folders;
+	uuid_vec_t folders;
 	folders.push_back(mGestureFolderID);
 	//perform loading Gesture directory anyway to make sure that all subdirectory are loaded too. See method done() for details.
 	gInventory.addObserver(this);
-	fetchDescendents(folders);
+	fetch(folders);
 
 	if (mGestureList)
 	{
@@ -246,13 +247,13 @@ void LLFloaterGesture::refreshAll()
 void LLFloaterGesture::buildGestureList()
 {
 	S32 scroll_pos = mGestureList->getScrollPos();
-	std::vector<LLUUID> selected_items;
+	uuid_vec_t selected_items;
 	getSelectedIds(selected_items);
 	LL_DEBUGS("Gesture")<< "Rebuilding gesture list "<< LL_ENDL;
 	mGestureList->deleteAllItems();
 
-	LLGestureManager::item_map_t::const_iterator it;
-	const LLGestureManager::item_map_t& active_gestures = LLGestureManager::instance().getActiveGestures();
+	LLGestureMgr::item_map_t::const_iterator it;
+	const LLGestureMgr::item_map_t& active_gestures = LLGestureMgr::instance().getActiveGestures();
 	for (it = active_gestures.begin(); it != active_gestures.end(); ++it)
 	{
 		addGesture(it->first,it->second, mGestureList);
@@ -278,7 +279,7 @@ void LLFloaterGesture::buildGestureList()
 
 	// attempt to preserve scroll position through re-builds
 	// since we do re-build whenever something gets dirty
-	for(std::vector<LLUUID>::iterator it = selected_items.begin(); it != selected_items.end(); it++)
+	for(uuid_vec_t::iterator it = selected_items.begin(); it != selected_items.end(); it++)
 	{
 		mGestureList->selectByID(*it);
 	}
@@ -354,10 +355,10 @@ void LLFloaterGesture::addGesture(const LLUUID& item_id , LLMultiGesture* gestur
 		element["columns"][0]["value"] = "";
 		element["columns"][0]["font"]["name"] = "SANSSERIF";
 		element["columns"][0]["font"]["style"] = font_style;
-		element["columns"][0]["column"] = "trigger";
-		element["columns"][0]["value"] = "---";
-		element["columns"][0]["font"]["name"] = "SANSSERIF";
-		element["columns"][0]["font"]["style"] = font_style;
+		element["columns"][1]["column"] = "shortcut";
+		element["columns"][1]["value"] = "---";
+		element["columns"][1]["font"]["name"] = "SANSSERIF";
+		element["columns"][1]["font"]["style"] = font_style;
 		element["columns"][2]["column"] = "key";
 		element["columns"][2]["value"] = "~~~";
 		element["columns"][2]["font"]["name"] = "SANSSERIF";
@@ -371,13 +372,13 @@ void LLFloaterGesture::addGesture(const LLUUID& item_id , LLMultiGesture* gestur
 	LLScrollListItem* sl_item = list->addElement(element, ADD_BOTTOM);
 	if(sl_item)
 	{
-		LLFontGL::StyleFlags style = LLGestureManager::getInstance()->isGestureActive(item_id) ? LLFontGL::BOLD : LLFontGL::NORMAL;
+		LLFontGL::StyleFlags style = LLGestureMgr::getInstance()->isGestureActive(item_id) ? LLFontGL::BOLD : LLFontGL::NORMAL;
 		// *TODO find out why ["font"]["style"] does not affect font style
 		((LLScrollListText*)sl_item->getColumn(0))->setFontStyle(style);
 	}
 }
 
-void LLFloaterGesture::getSelectedIds(std::vector<LLUUID>& ids)
+void LLFloaterGesture::getSelectedIds(uuid_vec_t& ids)
 {
 	std::vector<LLScrollListItem*> items = mGestureList->getAllSelected();
 	for(std::vector<LLScrollListItem*>::const_iterator it = items.begin(); it != items.end(); it++)
@@ -421,17 +422,17 @@ void LLFloaterGesture::onClickPlay()
 	if(item_id.isNull()) return;
 
 	LL_DEBUGS("Gesture")<<" Trying to play gesture id: "<< item_id <<LL_ENDL;
-	if(!LLGestureManager::instance().isGestureActive(item_id))
+	if(!LLGestureMgr::instance().isGestureActive(item_id))
 	{
 		// we need to inform server about gesture activating to be consistent with LLPreviewGesture and  LLGestureComboList.
 		BOOL inform_server = TRUE;
 		BOOL deactivate_similar = FALSE;
-		LLGestureManager::instance().setGestureLoadedCallback(item_id, boost::bind(&LLFloaterGesture::playGesture, this, item_id));
+		LLGestureMgr::instance().setGestureLoadedCallback(item_id, boost::bind(&LLFloaterGesture::playGesture, this, item_id));
 		LLViewerInventoryItem *item = gInventory.getItem(item_id);
 		llassert(item);
 		if (item)
 		{
-			LLGestureManager::instance().activateGestureWithAsset(item_id, item->getAssetUUID(), inform_server, deactivate_similar);
+			LLGestureMgr::instance().activateGestureWithAsset(item_id, item->getAssetUUID(), inform_server, deactivate_similar);
 			LL_DEBUGS("Gesture")<< "Activating gesture with inventory ID: " << item_id <<LL_ENDL;
 		}
 	}
@@ -451,13 +452,13 @@ void LLFloaterGesture::onClickNew()
 
 void LLFloaterGesture::onActivateBtnClick()
 {
-	std::vector<LLUUID> ids;
+	uuid_vec_t ids;
 	getSelectedIds(ids);
 	if(ids.empty())
 		return;
 
-	LLGestureManager* gm = LLGestureManager::getInstance();
-	std::vector<LLUUID>::const_iterator it = ids.begin();
+	LLGestureMgr* gm = LLGestureMgr::getInstance();
+	uuid_vec_t::const_iterator it = ids.begin();
 	BOOL first_gesture_state = gm->isGestureActive(*it);
 	BOOL is_mixed = FALSE;
 	while( ++it != ids.end() )
@@ -468,7 +469,7 @@ void LLFloaterGesture::onActivateBtnClick()
 			break;
 		}
 	}
-	for(std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); it++)
+	for(uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); it++)
 	{
 		if(is_mixed)
 		{
@@ -494,11 +495,11 @@ void LLFloaterGesture::onCopyPasteAction(const LLSD& command)
 	// since we select this comman inventory item had  already arrived .
 	if("copy_gesture" == command_name)
 	{
-		std::vector<LLUUID> ids;
+		uuid_vec_t ids;
 		getSelectedIds(ids);
 		// make sure that clopboard is empty
 		LLInventoryClipboard::instance().reset();
-		for(std::vector<LLUUID>::iterator it = ids.begin(); it != ids.end(); it++)
+		for(uuid_vec_t::iterator it = ids.begin(); it != ids.end(); it++)
 		{
 			LLInventoryItem* item = gInventory.getItem(*it);
 			if(item  && item->getInventoryType() == LLInventoryType::IT_GESTURE)
@@ -558,7 +559,7 @@ void LLFloaterGesture::onCommitList()
 	const LLUUID& item_id = mGestureList->getCurrentID();
 
 	mSelectedID = item_id;
-	if (LLGestureManager::instance().isGesturePlaying(item_id))
+	if (LLGestureMgr::instance().isGesturePlaying(item_id))
 	{
 		childSetVisible("play_btn", false);
 		childSetVisible("stop_btn", true);
@@ -572,14 +573,14 @@ void LLFloaterGesture::onCommitList()
 
 void LLFloaterGesture::onDeleteSelected()
 {
-	std::vector<LLUUID> ids;
+	uuid_vec_t ids;
 	getSelectedIds(ids);
 	if(ids.empty())
 		return;
 
 	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
-	LLGestureManager* gm = LLGestureManager::getInstance();
-	for(std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); it++)
+	LLGestureMgr* gm = LLGestureMgr::getInstance();
+	for(uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); it++)
 	{
 		const LLUUID& selected_item = *it;
 		LLInventoryItem* inv_item = gInventory.getItem(selected_item);
@@ -610,10 +611,10 @@ void LLFloaterGesture::onDeleteSelected()
 
 void LLFloaterGesture::addToCurrentOutFit()
 {
-	std::vector<LLUUID> ids;
+	uuid_vec_t ids;
 	getSelectedIds(ids);
-	LLAppearanceManager* am = LLAppearanceManager::getInstance();
-	for(std::vector<LLUUID>::const_iterator it = ids.begin(); it != ids.end(); it++)
+	LLAppearanceMgr* am = LLAppearanceMgr::getInstance();
+	for(uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); it++)
 	{
 		am->addCOFItemLink(*it);
 	}
@@ -623,12 +624,12 @@ void LLFloaterGesture::playGesture(LLUUID item_id)
 {
 	LL_DEBUGS("Gesture")<<"Playing gesture "<< item_id<<LL_ENDL;
 
-	if (LLGestureManager::instance().isGesturePlaying(item_id))
+	if (LLGestureMgr::instance().isGesturePlaying(item_id))
 	{
-		LLGestureManager::instance().stopGesture(item_id);
+		LLGestureMgr::instance().stopGesture(item_id);
 	}
 	else
 	{
-		LLGestureManager::instance().playGesture(item_id);
+		LLGestureMgr::instance().playGesture(item_id);
 	}
 }
diff --git a/indra/newview/llfloatergesture.h b/indra/newview/llfloatergesture.h
index 629d77b949dfcf64992f276b6b1af4d9484c2ca8..1676542c7703ca336809dbcb8f35a9be58525daa 100644
--- a/indra/newview/llfloatergesture.h
+++ b/indra/newview/llfloatergesture.h
@@ -85,7 +85,7 @@ class LLFloaterGesture
 	 * Therefore we have to copy these items to avoid viewer crash.
 	 * @see LLFloaterGesture::onActivateBtnClick
 	 */
-	void getSelectedIds(std::vector<LLUUID>& ids);
+	void getSelectedIds(uuid_vec_t& ids);
 	bool isActionEnabled(const LLSD& command);
 	/**
 	 * @brief Activation rules:
diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp
index eb56f387cd91d8e0ee9dc30459b6dd5b3034e41f..bd07cfdfbfe4fc48f03eb7e9fad69a1524e0fbaf 100644
--- a/indra/newview/llfloatergodtools.cpp
+++ b/indra/newview/llfloatergodtools.cpp
@@ -828,7 +828,6 @@ const F32 HOURS_TO_RADIANS = (2.f*F_PI)/24.f;
 LLPanelGridTools::LLPanelGridTools() :
 	LLPanel()
 {
-	mCommitCallbackRegistrar.add("GridTools.KickAll",		boost::bind(&LLPanelGridTools::onClickKickAll, this));	
 	mCommitCallbackRegistrar.add("GridTools.FlushMapVisibilityCaches",		boost::bind(&LLPanelGridTools::onClickFlushMapVisibilityCaches, this));	
 }
 
@@ -846,46 +845,6 @@ void LLPanelGridTools::refresh()
 {
 }
 
-void LLPanelGridTools::onClickKickAll()
-{
-	LLNotificationsUtil::add("KickAllUsers", LLSD(), LLSD(), LLPanelGridTools::confirmKick);
-}
-
-
-bool LLPanelGridTools::confirmKick(const LLSD& notification, const LLSD& response)
-{
-	if (LLNotificationsUtil::getSelectedOption(notification, response) == 0)
-	{
-		LLSD payload;
-		payload["kick_message"] = response["message"].asString();
-		LLNotificationsUtil::add("ConfirmKick", LLSD(), payload, LLPanelGridTools::finishKick);
-	}
-	return false;
-}
-
-
-// static
-bool LLPanelGridTools::finishKick(const LLSD& notification, const LLSD& response)
-{
-	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-
-
-	if (option == 0)
-	{
-		LLMessageSystem* msg = gMessageSystem;
-
-		msg->newMessageFast(_PREHASH_GodKickUser);
-		msg->nextBlockFast(_PREHASH_UserInfo);
-		msg->addUUIDFast(_PREHASH_GodID, gAgent.getID());
-		msg->addUUIDFast(_PREHASH_GodSessionID, gAgent.getSessionID());
-		msg->addUUIDFast(_PREHASH_AgentID,   LL_UUID_ALL_AGENTS );
-		msg->addU32("KickFlags", KICK_FLAGS_DEFAULT );
-		msg->addStringFast(_PREHASH_Reason,    notification["payload"]["kick_message"].asString());
-		gAgent.sendReliableMessage();
-	}
-	return false;
-}
-
 void LLPanelGridTools::onClickFlushMapVisibilityCaches()
 {
 	LLNotificationsUtil::add("FlushMapVisibilityCaches", LLSD(), LLSD(), flushMapVisibilityCachesConfirm);
@@ -963,6 +922,7 @@ LLPanelObjectTools::~LLPanelObjectTools()
 
 BOOL LLPanelObjectTools::postBuild()
 {
+	refresh();
 	return TRUE;
 }
 
@@ -1191,7 +1151,7 @@ void LLPanelObjectTools::onClickSetBySelection(void* data)
 	panelp->childSetValue("target_avatar_name", name);
 }
 
-void LLPanelObjectTools::callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids)
+void LLPanelObjectTools::callbackAvatarID(const std::vector<std::string>& names, const uuid_vec_t& ids)
 {
 	if (ids.empty() || names.empty()) return;
 	mTargetAvatar = ids[0];
diff --git a/indra/newview/llfloatergodtools.h b/indra/newview/llfloatergodtools.h
index ef5ce02749cd7d69a199f111f161f7d7ece63a7c..aee9db78a352414c75ec2d2f44bd71c5a166dec7 100644
--- a/indra/newview/llfloatergodtools.h
+++ b/indra/newview/llfloatergodtools.h
@@ -198,9 +198,6 @@ class LLPanelGridTools
 
 	void refresh();
 
-	void onClickKickAll();
-	static bool confirmKick(const LLSD& notification, const LLSD& response);
-	static bool finishKick(const LLSD& notification, const LLSD& response);
 	static void onDragSunPhase(LLUICtrl *ctrl, void *userdata);
 	void onClickFlushMapVisibilityCaches();
 	static bool flushMapVisibilityCachesConfirm(const LLSD& notification, const LLSD& response);
@@ -234,7 +231,7 @@ class LLPanelObjectTools
 	void onChangeAnything();
 	void onApplyChanges();
 	void onClickSet();
-	void callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
+	void callbackAvatarID(const std::vector<std::string>& names, const uuid_vec_t& ids);
 	void onClickDeletePublicOwnedBy();
 	void onClickDeleteAllScriptedOwnedBy();
 	void onClickDeleteAllOwnedBy();
diff --git a/indra/newview/llfloatergroupinvite.cpp b/indra/newview/llfloatergroupinvite.cpp
index bf484c63433605cfa1fdf3d4f3e58ce6141bcebf..5d1864b4c848745e65525fda80af4dacc64d9907 100644
--- a/indra/newview/llfloatergroupinvite.cpp
+++ b/indra/newview/llfloatergroupinvite.cpp
@@ -112,7 +112,7 @@ LLFloaterGroupInvite::~LLFloaterGroupInvite()
 }
 
 // static
-void LLFloaterGroupInvite::showForGroup(const LLUUID& group_id, std::vector<LLUUID> *agent_ids)
+void LLFloaterGroupInvite::showForGroup(const LLUUID& group_id, uuid_vec_t *agent_ids)
 {
 	const LLFloater::Params& floater_params = LLFloater::getDefaultParams();
 	S32 floater_header_size = floater_params.header_height;
diff --git a/indra/newview/llfloatergroupinvite.h b/indra/newview/llfloatergroupinvite.h
index b3f5d75ac1a72b9fc4c8a19bd5c57763cd808d51..68943724dfb10ff1958763fb85b473296b873f59 100644
--- a/indra/newview/llfloatergroupinvite.h
+++ b/indra/newview/llfloatergroupinvite.h
@@ -43,7 +43,7 @@ class LLFloaterGroupInvite
 public:
 	virtual ~LLFloaterGroupInvite();
 
-	static void showForGroup(const LLUUID &group_id, std::vector<LLUUID> *agent_ids = NULL);
+	static void showForGroup(const LLUUID &group_id, uuid_vec_t *agent_ids = NULL);
 
 protected:
 	LLFloaterGroupInvite(const LLUUID& group_id = LLUUID::null);
diff --git a/indra/newview/llfloaterlagmeter.cpp b/indra/newview/llfloaterlagmeter.cpp
index 85186cee6bd8a1a0a37cb399c1bb8ac7de3216ee..100cbdb217f98965a8cea4afe43f2880b7392e13 100644
--- a/indra/newview/llfloaterlagmeter.cpp
+++ b/indra/newview/llfloaterlagmeter.cpp
@@ -206,7 +206,7 @@ void LLFloaterLagMeter::determineNetwork()
 
 	// *FIXME: We can't blame a large ping time on anything in
 	// particular if the frame rate is low, because a low frame
-	// rate is a sure recipe for crappy ping times right now until
+	// rate is a sure recipe for bad ping times right now until
 	// the network handlers are de-synched from the rendering.
 	F32 client_frame_time_ms = 1000.0f * LLViewerStats::getInstance()->mFPSStat.getMeanDuration();
 	
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 65003d9b5c861ee439d2054481587e53dad6709f..2ff483cd34c805f600f84dc2117d2876a7343c92 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -91,6 +91,7 @@ static std::string MATURITY 		= "[MATURITY]";
 // constants used in callbacks below - syntactic sugar.
 static const BOOL BUY_GROUP_LAND = TRUE;
 static const BOOL BUY_PERSONAL_LAND = FALSE;
+LLPointer<LLParcelSelection> LLPanelLandGeneral::sSelectionForBuyPass = NULL;
 
 // Statics
 LLParcelSelectionObserver* LLFloaterLand::sObserver = NULL;
@@ -975,6 +976,8 @@ void LLPanelLandGeneral::onClickBuyPass(void* data)
 	args["PARCEL_NAME"] = parcel_name;
 	args["TIME"] = time;
 	
+	// creating pointer on selection to avoid deselection of parcel until we are done with buying pass (EXT-6464)
+	sSelectionForBuyPass = LLViewerParcelMgr::getInstance()->getParcelSelection();
 	LLNotificationsUtil::add("LandBuyPass", args, LLSD(), cbBuyPass);
 }
 
@@ -1006,6 +1009,8 @@ bool LLPanelLandGeneral::cbBuyPass(const LLSD& notification, const LLSD& respons
 		// User clicked OK
 		LLViewerParcelMgr::getInstance()->buyPass();
 	}
+	// we are done with buying pass, additional selection is no longer needed
+	sSelectionForBuyPass = NULL;
 	return false;
 }
 
@@ -1612,7 +1617,7 @@ void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, vo
 		item_params.columns.add().value(object_count_str).font(FONT).column("count");
 		item_params.columns.add().value(LLDate((time_t)most_recent_time)).font(FONT).column("mostrecent").type("date");
 
-		self->mOwnerList->addRow(item_params);
+		self->mOwnerList->addNameItemRow(item_params);
 
 		lldebugs << "object owner " << owner_id << " (" << (is_group_owned ? "group" : "agent")
 				<< ") owns " << object_count << " objects." << llendl;
@@ -2774,7 +2779,7 @@ void LLPanelLandAccess::onClickAddAccess()
 	gFloaterView->getParentFloater(this)->addDependentFloater(LLFloaterAvatarPicker::show(boost::bind(&LLPanelLandAccess::callbackAvatarCBAccess, this, _1,_2)) );
 }
 
-void LLPanelLandAccess::callbackAvatarCBAccess(const std::vector<std::string>& names, const std::vector<LLUUID>& ids)
+void LLPanelLandAccess::callbackAvatarCBAccess(const std::vector<std::string>& names, const uuid_vec_t& ids)
 {
 	if (!names.empty() && !ids.empty())
 	{
@@ -2819,7 +2824,7 @@ void LLPanelLandAccess::onClickAddBanned()
 }
 
 // static
-void LLPanelLandAccess::callbackAvatarCBBanned(const std::vector<std::string>& names, const std::vector<LLUUID>& ids)
+void LLPanelLandAccess::callbackAvatarCBBanned(const std::vector<std::string>& names, const uuid_vec_t& ids)
 {
 	if (!names.empty() && !ids.empty())
 	{
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index a4785e8f5b0ee2533d8b4ea66c676311217dcc90..0a743e5215c39b81904b3ae4b2170b963d106871 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -167,7 +167,7 @@ class LLPanelLandGeneral
 	static void onClickSet(void* data);
 	static void onClickClear(void* data);
 	static void onClickShow(void* data);
-	static void callbackAvatarPick(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* data);
+	static void callbackAvatarPick(const std::vector<std::string>& names, const uuid_vec_t& ids, void* data);
 	static void finalizeAvatarPick(void* data);
 	static void callbackHighlightTransferable(S32 option, void* userdata);
 	static void onClickStartAuction(void*);
@@ -234,6 +234,11 @@ class LLPanelLandGeneral
 
 	LLSafeHandle<LLParcelSelection>&	mParcel;
 
+	// This pointer is needed to avoid parcel deselection until buying pass is completed or canceled.
+	// Deselection happened because of zero references to parcel selection, which took place when 
+	// "Buy Pass" was called from popup menu(EXT-6464)
+	static LLPointer<LLParcelSelection>	sSelectionForBuyPass;
+
 	static LLHandle<LLFloater> sBuyPassDialogHandle;
 };
 
@@ -374,8 +379,8 @@ class LLPanelLandAccess
 	
 	void onClickAddAccess();
 	void onClickAddBanned();
-	void callbackAvatarCBBanned(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
-	void callbackAvatarCBAccess(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
+	void callbackAvatarCBBanned(const std::vector<std::string>& names, const uuid_vec_t& ids);
+	void callbackAvatarCBAccess(const std::vector<std::string>& names, const uuid_vec_t& ids);
 
 protected:
 	LLNameListCtrl*		mListAccess;
diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp
index 8894628788f834c5c56b003315adb04f2fc3dafa..5677899dd9515aac7bf2756b080132e8a3b4c477 100644
--- a/indra/newview/llfloatermap.cpp
+++ b/indra/newview/llfloatermap.cpp
@@ -215,6 +215,20 @@ void LLFloaterMap::draw()
 	LLFloater::draw();
 }
 
+// virtual
+void LLFloaterMap::onFocusReceived()
+{
+	setBackgroundOpaque(true);
+	LLPanel::onFocusReceived();
+}
+
+// virtual
+void LLFloaterMap::onFocusLost()
+{
+	setBackgroundOpaque(false);
+	LLPanel::onFocusLost();
+}
+
 void LLFloaterMap::reshape(S32 width, S32 height, BOOL called_from_parent)
 {
 	LLFloater::reshape(width, height, called_from_parent);
diff --git a/indra/newview/llfloatermap.h b/indra/newview/llfloatermap.h
index 6c9138c6a7ee99bb4d3c2e6e087ee0460b920833..9ff2f031803ebce13fd74c9cf64714a9082cd6a4 100644
--- a/indra/newview/llfloatermap.h
+++ b/indra/newview/llfloatermap.h
@@ -53,6 +53,8 @@ class LLFloaterMap : public LLFloater
 	/*virtual*/ BOOL	handleRightMouseDown( S32 x, S32 y, MASK mask );
 	/*virtual*/ void	reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
 	/*virtual*/ void	draw();
+	/*virtual*/ void	onFocusLost();
+	/*virtual*/ void	onFocusReceived();
 	
 private:
 	void handleZoom(const LLSD& userdata);
diff --git a/indra/newview/llfloateropenobject.cpp b/indra/newview/llfloateropenobject.cpp
index ec50ed596c7be81bc15ed63254cafe529d4a1dab..71bfae316a53ca90c80cc3580ec69d64cce70154 100644
--- a/indra/newview/llfloateropenobject.cpp
+++ b/indra/newview/llfloateropenobject.cpp
@@ -121,12 +121,12 @@ void LLFloaterOpenObject::refresh()
 		{
 			// this folder is coming from an object, as there is only one folder in an object, the root,
 			// we need to collect the entire contents and handle them as a group
-			InventoryObjectList inventory_objects;
+			LLInventoryObject::object_list_t inventory_objects;
 			object->getInventoryContents(inventory_objects);
 			
 			if (!inventory_objects.empty())
 			{
-				for (InventoryObjectList::iterator it = inventory_objects.begin(); 
+				for (LLInventoryObject::object_list_t::iterator it = inventory_objects.begin(); 
 					 it != inventory_objects.end(); 
 					 ++it)
 				{
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 3487f52f3551b2f852bc517fb304b9a3b42a5695..60ce16aafb33b91d035a01f900c6b62a62f670ae 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -107,6 +107,8 @@
 #include "llpluginclassmedia.h"
 #include "llteleporthistorystorage.h"
 
+#include "lllogininstance.h"        // to check if logged in yet
+
 const F32 MAX_USER_FAR_CLIP = 512.f;
 const F32 MIN_USER_FAR_CLIP = 64.f;
 
@@ -182,7 +184,6 @@ void LLVoiceSetKeyDialog::onCancel(void* user_data)
 // if creating/destroying these is too slow, we'll need to create
 // a static member and update all our static callbacks
 
-void handleNameTagOptionChanged(const LLSD& newvalue);	
 bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response);
 
 //bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater);
@@ -218,15 +219,6 @@ bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response
 	return false;
 }
 
-void handleNameTagOptionChanged(const LLSD& newvalue)
-{
-	S32 name_tag_option = S32(newvalue);
-	if(name_tag_option==2)
-	{
-		gSavedSettings.setBOOL("SmallAvatarNames", TRUE);
-	}
-}
-
 /*bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater)
 {
 	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
@@ -319,8 +311,6 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
 	mCommitCallbackRegistrar.add("Pref.MaturitySettings",		boost::bind(&LLFloaterPreference::onChangeMaturity, this));
 
 	sSkin = gSavedSettings.getString("SkinCurrent");
-	
-	gSavedSettings.getControl("AvatarNameTagMode")->getCommitSignal()->connect(boost::bind(&handleNameTagOptionChanged,  _2));
 }
 
 BOOL LLFloaterPreference::postBuild()
@@ -336,8 +326,6 @@ BOOL LLFloaterPreference::postBuild()
 	LLTabContainer* tabcontainer = getChild<LLTabContainer>("pref core");
 	if (!tabcontainer->selectTab(gSavedSettings.getS32("LastPrefTab")))
 		tabcontainer->selectFirstTab();
-	S32 show_avatar_nametag_options = gSavedSettings.getS32("AvatarNameTagMode");
-	handleNameTagOptionChanged(LLSD(show_avatar_nametag_options));
 
 	std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "");
 	childSetText("cache_location", cache_location);
@@ -515,13 +503,15 @@ void LLFloaterPreference::onOpen(const LLSD& key)
 		// if they're not adult or a god, they shouldn't see the adult selection, so delete it
 		if (!gAgent.isAdult() && !gAgent.isGodlike())
 		{
-			// we're going to remove the adult entry from the combo. This obviously depends
-			// on the order of items in the XML file, but there doesn't seem to be a reasonable
-			// way to depend on the field in XML called 'name'.
-			maturity_combo->remove(0);
+			// we're going to remove the adult entry from the combo
+			LLScrollListCtrl* maturity_list = maturity_combo->findChild<LLScrollListCtrl>("ComboBox");
+			if (maturity_list)
+			{
+				maturity_list->deleteItems(LLSD(SIM_ACCESS_ADULT));
+			}
 		}
 		childSetVisible("maturity_desired_combobox", true);
-		childSetVisible("maturity_desired_textbox", false);		
+		childSetVisible("maturity_desired_textbox", false);
 	}
 	else
 	{
@@ -870,6 +860,8 @@ void LLFloaterPreference::refreshEnabledState()
 	ctrl_wind_light->setEnabled(ctrl_shader_enable->getEnabled() && shaders);
 	// now turn off any features that are unavailable
 	disableUnavailableSettings();
+
+	childSetEnabled ("block_list", LLLoginInstance::getInstance()->authSuccess());
 }
 
 void LLFloaterPreference::disableUnavailableSettings()
diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp
index 5c0593ad29c3e413624c1a953af7115711064f2c..bb9d151cd261b718bb00c08e651bcaaac19b4d65 100644
--- a/indra/newview/llfloaterproperties.cpp
+++ b/indra/newview/llfloaterproperties.cpp
@@ -38,12 +38,12 @@
 #include "llcachename.h"
 #include "lldbstrings.h"
 #include "llfloaterreg.h"
-#include "llinventory.h"
 
 #include "llagent.h"
 #include "llbutton.h"
 #include "llcheckboxctrl.h"
 #include "llavataractions.h"
+#include "llinventorydefines.h"
 #include "llinventoryobserver.h"
 #include "llinventorymodel.h"
 #include "lllineeditor.h"
@@ -380,9 +380,9 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
 		if (item->getType() == LLAssetType::AT_OBJECT)
 		{
 			U32 flags = item->getFlags();
-			slam_perm 			= flags & LLInventoryItem::II_FLAGS_OBJECT_SLAM_PERM;
-			overwrite_everyone	= flags & LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
-			overwrite_group		= flags & LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
+			slam_perm 			= flags & LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_PERM;
+			overwrite_everyone	= flags & LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
+			overwrite_group		= flags & LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
 		}
 		
 		std::string perm_string;
@@ -693,7 +693,7 @@ void LLFloaterProperties::onCommitPermissions()
 		if((perm.getMaskNextOwner()!=item->getPermissions().getMaskNextOwner())
 		   && (item->getType() == LLAssetType::AT_OBJECT))
 		{
-			flags |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_PERM;
+			flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_PERM;
 		}
 		// If everyone permissions have changed (and this is an object)
 		// then set the overwrite everyone permissions flag so they
@@ -701,7 +701,7 @@ void LLFloaterProperties::onCommitPermissions()
 		if ((perm.getMaskEveryone()!=item->getPermissions().getMaskEveryone())
 			&& (item->getType() == LLAssetType::AT_OBJECT))
 		{
-			flags |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
+			flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
 		}
 		// If group permissions have changed (and this is an object)
 		// then set the overwrite group permissions flag so they
@@ -709,7 +709,7 @@ void LLFloaterProperties::onCommitPermissions()
 		if ((perm.getMaskGroup()!=item->getPermissions().getMaskGroup())
 			&& (item->getType() == LLAssetType::AT_OBJECT))
 		{
-			flags |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
+			flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
 		}
 		new_item->setFlags(flags);
 		if(mObjectID.isNull())
@@ -821,7 +821,7 @@ void LLFloaterProperties::updateSaleInfo()
 		if (item->getType() == LLAssetType::AT_OBJECT)
 		{
 			U32 flags = new_item->getFlags();
-			flags |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_SALE;
+			flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_SALE;
 			new_item->setFlags(flags);
 		}
 
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index d54736e942b35d0b4e97145718e5bdae020613dc..3758cbe74f41d90f8a2dde797c32413cb33e060d 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -610,7 +610,7 @@ void LLPanelRegionGeneralInfo::onClickKick()
 	parent_floater->addDependentFloater(child_floater);
 }
 
-void LLPanelRegionGeneralInfo::onKickCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids)
+void LLPanelRegionGeneralInfo::onKickCommit(const std::vector<std::string>& names, const uuid_vec_t& ids)
 {
 	if (names.empty() || ids.empty()) return;
 	if(ids[0].notNull())
@@ -848,7 +848,7 @@ void LLPanelRegionDebugInfo::onClickChooseAvatar()
 }
 
 
-void LLPanelRegionDebugInfo::callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids)
+void LLPanelRegionDebugInfo::callbackAvatarID(const std::vector<std::string>& names, const uuid_vec_t& ids)
 {
 	if (ids.empty() || names.empty()) return;
 	mTargetAvatar = ids[0];
@@ -1531,7 +1531,7 @@ void LLPanelEstateInfo::onClickKickUser()
 	parent_floater->addDependentFloater(child_floater);
 }
 
-void LLPanelEstateInfo::onKickUserCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids)
+void LLPanelEstateInfo::onKickUserCommit(const std::vector<std::string>& names, const uuid_vec_t& ids)
 {
 	if (names.empty() || ids.empty()) return;
 	
@@ -1616,7 +1616,6 @@ bool LLPanelEstateInfo::isLindenEstate()
 	return (estate_id <= ESTATE_LAST_LINDEN);
 }
 
-typedef std::vector<LLUUID> AgentOrGroupIDsVector;
 struct LLEstateAccessChangeInfo
 {
 	LLEstateAccessChangeInfo(const LLSD& sd)
@@ -1637,7 +1636,7 @@ struct LLEstateAccessChangeInfo
 		LLSD sd;
 		sd["name"] = mDialogName;
 		sd["operation"] = (S32)mOperationFlag;
-		for (AgentOrGroupIDsVector::const_iterator it = mAgentOrGroupIDs.begin();
+		for (uuid_vec_t::const_iterator it = mAgentOrGroupIDs.begin();
 			it != mAgentOrGroupIDs.end();
 			++it)
 		{
@@ -1648,7 +1647,7 @@ struct LLEstateAccessChangeInfo
 
 	U32 mOperationFlag;	// ESTATE_ACCESS_BANNED_AGENT_ADD, _REMOVE, etc.
 	std::string mDialogName;
-	AgentOrGroupIDsVector mAgentOrGroupIDs; // List of agent IDs to apply to this change
+	uuid_vec_t mAgentOrGroupIDs; // List of agent IDs to apply to this change
 };
 
 // Special case callback for groups, since it has different callback format than names
@@ -1716,7 +1715,7 @@ bool LLPanelEstateInfo::accessAddCore2(const LLSD& notification, const LLSD& res
 }
 
 // static
-void LLPanelEstateInfo::accessAddCore3(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* data)
+void LLPanelEstateInfo::accessAddCore3(const std::vector<std::string>& names, const uuid_vec_t& ids, void* data)
 {
 	LLEstateAccessChangeInfo* change_info = (LLEstateAccessChangeInfo*)data;
 	if (!change_info) return;
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
index 8d315bdb78b0eb7f502acd69f72b397f2d120f32..482ebb330308476f644fc4dd22c5ab4fef686247 100644
--- a/indra/newview/llfloaterregioninfo.h
+++ b/indra/newview/llfloaterregioninfo.h
@@ -168,7 +168,7 @@ class LLPanelRegionGeneralInfo : public LLPanelRegionInfo
 protected:
 	virtual BOOL sendUpdate();
 	void onClickKick();
-	void onKickCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
+	void onKickCommit(const std::vector<std::string>& names, const uuid_vec_t& ids);
 	static void onClickKickAll(void* userdata);
 	bool onKickAllCommit(const LLSD& notification, const LLSD& response);
 	static void onClickMessage(void* userdata);
@@ -193,7 +193,7 @@ class LLPanelRegionDebugInfo : public LLPanelRegionInfo
 	virtual BOOL sendUpdate();
 
 	void onClickChooseAvatar();
-	void callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
+	void callbackAvatarID(const std::vector<std::string>& names, const uuid_vec_t& ids);
 	static void onClickReturn(void *);
 	bool callbackReturn(const LLSD& notification, const LLSD& response);
 	static void onClickTopColliders(void*);
@@ -284,7 +284,7 @@ class LLPanelEstateInfo : public LLPanelRegionInfo
 	// Core methods for all above add/remove button clicks
 	static void accessAddCore(U32 operation_flag, const std::string& dialog_name);
 	static bool accessAddCore2(const LLSD& notification, const LLSD& response);
-	static void accessAddCore3(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* data);
+	static void accessAddCore3(const std::vector<std::string>& names, const uuid_vec_t& ids, void* data);
 
 	static void accessRemoveCore(U32 operation_flag, const std::string& dialog_name, const std::string& list_ctrl_name);
 	static bool accessRemoveCore2(const LLSD& notification, const LLSD& response);
@@ -296,7 +296,7 @@ class LLPanelEstateInfo : public LLPanelRegionInfo
 	// Send the actual EstateOwnerRequest "estateaccessdelta" message
 	static void sendEstateAccessDelta(U32 flags, const LLUUID& agent_id);
 
-	void onKickUserCommit(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
+	void onKickUserCommit(const std::vector<std::string>& names, const uuid_vec_t& ids);
 	static void onClickMessageEstate(void* data);
 	bool onMessageCommit(const LLSD& notification, const LLSD& response);
 	
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index 42a7eeff26c88d3c0eafe2c1fc276f1dc806b382..b42b34835d30f53cedec63594756a38b5cf86770 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -308,7 +308,7 @@ void LLFloaterReporter::onClickSelectAbuser()
 	gFloaterView->getParentFloater(this)->addDependentFloater(LLFloaterAvatarPicker::show(boost::bind(&LLFloaterReporter::callbackAvatarID, this, _1, _2), FALSE, TRUE ));
 }
 
-void LLFloaterReporter::callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids)
+void LLFloaterReporter::callbackAvatarID(const std::vector<std::string>& names, const uuid_vec_t& ids)
 {
 	if (ids.empty() || names.empty()) return;
 
diff --git a/indra/newview/llfloaterreporter.h b/indra/newview/llfloaterreporter.h
index 7c6473f975961d1f8a692f5bd46c82ae566766af..23784b765079c12f22d18862331c67da6bd5a100 100644
--- a/indra/newview/llfloaterreporter.h
+++ b/indra/newview/llfloaterreporter.h
@@ -123,7 +123,7 @@ class LLFloaterReporter
 	void setPosBox(const LLVector3d &pos);
 	void enableControls(BOOL own_avatar);
 	void getObjectInfo(const LLUUID& object_id);
-	void callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
+	void callbackAvatarID(const std::vector<std::string>& names, const uuid_vec_t& ids);
 	void setFromAvatar(const LLUUID& avatar_id, const std::string& avatar_name = LLStringUtil::null);
 
 private:
diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp
index daba3d8460605fc69c403075c1625d8ca3ca5451..4792d761d879845280627d27899d216105c3000d 100644
--- a/indra/newview/llfloaterscriptlimits.cpp
+++ b/indra/newview/llfloaterscriptlimits.cpp
@@ -644,7 +644,7 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
 	std::string msg_parcels = LLTrans::getString("ScriptLimitsParcelsOwned", args_parcels);
 	childSetValue("parcels_listed", LLSD(msg_parcels));
 
-	std::vector<LLUUID> names_requested;
+	uuid_vec_t names_requested;
 
 	// This makes the assumption that all objects will have the same set
 	// of attributes, ie they will all have, or none will have locations
diff --git a/indra/newview/llfloatersellland.cpp b/indra/newview/llfloatersellland.cpp
index eae6121e791b5bae4894fec84b8c269660a351b0..980b4564975f959f80abdfeccb312bc8f8cc7839 100644
--- a/indra/newview/llfloatersellland.cpp
+++ b/indra/newview/llfloatersellland.cpp
@@ -96,7 +96,7 @@ class LLFloaterSellLandUI
 	static void doShowObjects(void *userdata);
 	static bool callbackHighlightTransferable(const LLSD& notification, const LLSD& response);
 
-	void callbackAvatarPick(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
+	void callbackAvatarPick(const std::vector<std::string>& names, const uuid_vec_t& ids);
 
 public:
 	virtual BOOL postBuild();
@@ -391,7 +391,7 @@ void LLFloaterSellLandUI::doSelectAgent()
 	addDependentFloater(LLFloaterAvatarPicker::show(boost::bind(&LLFloaterSellLandUI::callbackAvatarPick, this, _1, _2), FALSE, TRUE));
 }
 
-void LLFloaterSellLandUI::callbackAvatarPick(const std::vector<std::string>& names, const std::vector<LLUUID>& ids)
+void LLFloaterSellLandUI::callbackAvatarPick(const std::vector<std::string>& names, const uuid_vec_t& ids)
 {	
 	LLParcel* parcel = mParcelSelection->getParcel();
 
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index adac9861d481cdb08b25e37466447560acaec746..03389e62d71084c9bc89f3a79ce92acf01e7da07 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -1319,7 +1319,27 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
 // static
 void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
 {
+	LLSnapshotLivePreview* previewp = getPreviewView(floater);
+	if (NULL == previewp)
+	{
+		return;
+	}
+
+	// Disable buttons until Snapshot is ready. EXT-6534
+	BOOL got_snap = previewp->getSnapshotUpToDate();
+
+	// process Main buttons
+	floater->childSetEnabled("share", got_snap);
+	floater->childSetEnabled("save", got_snap);
+	floater->childSetEnabled("set_profile_pic", got_snap);
+
+	// process Share actions buttons
+	floater->childSetEnabled("share_to_web", got_snap);
+	floater->childSetEnabled("share_to_email", got_snap);
 
+	// process Save actions buttons
+	floater->childSetEnabled("save_to_inventory", got_snap);
+	floater->childSetEnabled("save_to_computer", got_snap);
 }
 
 // static
diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp
index 8ab050beaa636756710a8bc0ac7fd5b928b945d0..84ea353dabe3c9eb0bbd14e9221bf0bd2be31b6c 100644
--- a/indra/newview/llfloatertopobjects.cpp
+++ b/indra/newview/llfloatertopobjects.cpp
@@ -315,7 +315,7 @@ void LLFloaterTopObjects::doToObjects(int action, bool all)
 	LLCtrlListInterface *list = childGetListInterface("objects_list");
 	if (!list || list->getItemCount() == 0) return;
 
-	std::vector<LLUUID>::iterator id_itor;
+	uuid_vec_t::iterator id_itor;
 
 	bool start_message = true;
 
diff --git a/indra/newview/llfloatertopobjects.h b/indra/newview/llfloatertopobjects.h
index ee3c5d3cceefdd080594d217ffda5050d2d3dd64..8fb89a3cc58007409eb144169d3d244b82ae69d7 100644
--- a/indra/newview/llfloatertopobjects.h
+++ b/indra/newview/llfloatertopobjects.h
@@ -89,7 +89,7 @@ class LLFloaterTopObjects : public LLFloater
 	std::string mMethod;
 
 	LLSD mObjectListData;
-	std::vector<LLUUID> mObjectListIDs;
+	uuid_vec_t mObjectListIDs;
 
 	U32 mCurrentMode;
 	U32 mFlags;
diff --git a/indra/newview/llfloatertos.cpp b/indra/newview/llfloatertos.cpp
index 69ee8cd54754e848e5231a91f2ee66a2b1ba4d83..3db9587797d590b08bb23dbaa88111b9a005b0b1 100644
--- a/indra/newview/llfloatertos.cpp
+++ b/indra/newview/llfloatertos.cpp
@@ -57,7 +57,9 @@ LLFloaterTOS::LLFloaterTOS(const LLSD& data)
 :	LLModalDialog( data["message"].asString() ),
 	mMessage(data["message"].asString()),
 	mWebBrowserWindowId( 0 ),
-	mLoadCompleteCount( 0 ),
+	mLoadingScreenLoaded(false),
+	mSiteAlive(false),
+	mRealNavigateBegun(false),
 	mReplyPumpName(data["reply_pump"].asString())
 {
 }
@@ -138,6 +140,11 @@ BOOL LLFloaterTOS::postBuild()
 	if ( web_browser )
 	{
 		web_browser->addObserver(this);
+
+		// Don't use the start_url parameter for this browser instance -- it may finish loading before we get to add our observer.
+		// Store the URL separately and navigate here instead.
+		web_browser->navigateTo( getString( "loading_url" ) );
+		
 		gResponsePtr = LLIamHere::build( this );
 		LLHTTPClient::get( getString( "real_url" ), gResponsePtr );
 	}
@@ -147,15 +154,16 @@ BOOL LLFloaterTOS::postBuild()
 
 void LLFloaterTOS::setSiteIsAlive( bool alive )
 {
+	mSiteAlive = alive;
+	
 	// only do this for TOS pages
 	if (hasChild("tos_html"))
 	{
-		LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("tos_html");
 		// if the contents of the site was retrieved
 		if ( alive )
 		{
 			// navigate to the "real" page 
-			web_browser->navigateTo( getString( "real_url" ) );
+			loadIfNeeded();
 		}
 		else
 		{
@@ -167,6 +175,19 @@ void LLFloaterTOS::setSiteIsAlive( bool alive )
 	}
 }
 
+void LLFloaterTOS::loadIfNeeded()
+{
+	if(!mRealNavigateBegun && mSiteAlive)
+	{
+		LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("tos_html");
+		if(web_browser)
+		{
+			mRealNavigateBegun = true;
+			web_browser->navigateTo( getString( "real_url" ) );
+		}
+	}
+}
+
 LLFloaterTOS::~LLFloaterTOS()
 {
 
@@ -216,8 +237,13 @@ void LLFloaterTOS::onCancel( void* userdata )
 		LLEventPumps::instance().obtain(self->mReplyPumpName).post(LLSD(false));
 	}
 
-	self->mLoadCompleteCount = 0;  // reset counter for next time we come to TOS
-	self->closeFloater(); // destroys this object
+	// reset state for next time we come to TOS
+	self->mLoadingScreenLoaded = false;
+	self->mSiteAlive = false;
+	self->mRealNavigateBegun = false;
+	
+	// destroys this object
+	self->closeFloater(); 
 }
 
 //virtual 
@@ -225,8 +251,12 @@ void LLFloaterTOS::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent ev
 {
 	if(event == MEDIA_EVENT_NAVIGATE_COMPLETE)
 	{
-		// skip past the loading screen navigate complete
-		if ( ++mLoadCompleteCount == 2 )
+		if(!mLoadingScreenLoaded)
+		{
+			mLoadingScreenLoaded = true;
+			loadIfNeeded();
+		}
+		else if(mRealNavigateBegun)
 		{
 			llinfos << "NAVIGATE COMPLETE" << llendl;
 			// enable Agree to TOS radio button now that page has loaded
diff --git a/indra/newview/llfloatertos.h b/indra/newview/llfloatertos.h
index 1d573e817051b5bb5d977aea5b365063a2d3750c..6ea56408eeaf1b0e39936a53e8587ebcd881b6cf 100644
--- a/indra/newview/llfloatertos.h
+++ b/indra/newview/llfloatertos.h
@@ -66,9 +66,14 @@ class LLFloaterTOS :
 	/*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event);
 
 private:
+
+	void			loadIfNeeded();
+	
 	std::string		mMessage;
 	int				mWebBrowserWindowId;
-	int				mLoadCompleteCount;
+	bool			mLoadingScreenLoaded;
+	bool			mSiteAlive;
+	bool			mRealNavigateBegun;
 	std::string		mReplyPumpName;
 };
 
diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp
index 391e63f73004af0a6dbb248acf760cf5aa109947..b3223ad4945fdc08e1ce8260860c1669e538834e 100644
--- a/indra/newview/llfloaterworldmap.cpp
+++ b/indra/newview/llfloaterworldmap.cpp
@@ -51,7 +51,9 @@
 //#include "llfirstuse.h"
 #include "llfloaterreg.h"		// getTypedInstance()
 #include "llfocusmgr.h"
+#include "llinventoryfunctions.h"
 #include "llinventorymodel.h"
+#include "llinventorymodelbackgroundfetch.h"
 #include "llinventoryobserver.h"
 #include "lllandmarklist.h"
 #include "lllineeditor.h"
@@ -123,7 +125,7 @@ class LLWorldMapHandler : public LLCommandHandler
 		}
 
 		// support the secondlife:///app/worldmap/{LOCATION}/{COORDS} SLapp
-		const std::string region_name = params[0].asString();
+		const std::string region_name = LLURI::unescape(params[0].asString());
 		S32 x = (params.size() > 1) ? params[1].asInteger() : 128;
 		S32 y = (params.size() > 2) ? params[2].asInteger() : 128;
 		S32 z = (params.size() > 3) ? params[3].asInteger() : 0;
@@ -322,7 +324,7 @@ void LLFloaterWorldMap::onOpen(const LLSD& key)
 
 		// Start speculative download of landmarks
 		const LLUUID landmark_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
-		gInventory.startBackgroundFetch(landmark_folder_id);
+		LLInventoryModelBackgroundFetch::instance().start(landmark_folder_id);
 
 		childSetFocus("location", TRUE);
 		gFocusMgr.triggerFocusFlash();
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index f74d912842a6ca31cd42425dc10ac0e3fc332d0c..8d4d6a178a6ca24ae8ec4ced09de83e4f1e9be3f 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -39,6 +39,7 @@
 #include "llinventoryclipboard.h" // *TODO: remove this once hack below gone.
 #include "llinventoryfilter.h"
 #include "llinventoryfunctions.h"
+#include "llinventorymodelbackgroundfetch.h"
 #include "llinventorypanel.h"
 #include "llfoldertype.h"
 #include "llfloaterinventory.h"// hacked in for the bonus context menu items.
@@ -275,11 +276,6 @@ LLFolderView::~LLFolderView( void )
 	mRenamer = NULL;
 	mStatusTextBox = NULL;
 
-	if( gEditMenuHandler == this )
-	{
-		gEditMenuHandler = NULL;
-	}
-
 	mAutoOpenItems.removeAllNodes();
 	gIdleCallbacks.deleteFunction(idle, this);
 
@@ -865,7 +861,7 @@ BOOL LLFolderView::getSelectionList(std::set<LLUUID> &selection) const
 BOOL LLFolderView::startDrag(LLToolDragAndDrop::ESource source)
 {
 	std::vector<EDragAndDropType> types;
-	std::vector<LLUUID> cargo_ids;
+	uuid_vec_t cargo_ids;
 	selected_items_t::iterator item_it;
 	BOOL can_drag = TRUE;
 	if (!mSelectedItems.empty())
@@ -943,7 +939,7 @@ void LLFolderView::draw()
 	}
 	else
 	{
-		if (gInventory.backgroundFetchActive() || mCompletedFilterGeneration < mFilter->getMinRequiredGeneration())
+		if (LLInventoryModelBackgroundFetch::instance().backgroundFetchActive() || mCompletedFilterGeneration < mFilter->getMinRequiredGeneration())
 		{
 			mStatusText = LLTrans::getString("Searching");
 			//font->renderUTF8(mStatusText, 0, 2, 1, sSearchStatusColor, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::NORMAL,  LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );
@@ -979,7 +975,6 @@ void LLFolderView::finishRenamingItem( void )
 	if( mRenameItem )
 	{
 		setSelectionFromRoot( mRenameItem, TRUE );
-		mRenameItem = NULL;
 	}
 
 	// List is re-sorted alphabeticly, so scroll to make sure the selected item is visible.
@@ -2103,8 +2098,7 @@ bool LLFolderView::doToSelected(LLInventoryModel* model, const LLSD& userdata)
 		if(!folder_item) continue;
 		LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getListener();
 		if(!bridge) continue;
-
-		bridge->performAction(this, model, action);
+		bridge->performAction(model, action);
 	}
 
 	LLFloater::setFloaterHost(NULL);
diff --git a/indra/newview/llfoldervieweventlistener.h b/indra/newview/llfoldervieweventlistener.h
index 12e100caf4fe82cc1a48d5b95257b541787afa9d..a2ef8c1d12cf7c72d410e5b7558f913e295d2da9 100644
--- a/indra/newview/llfoldervieweventlistener.h
+++ b/indra/newview/llfoldervieweventlistener.h
@@ -88,7 +88,7 @@ class LLFolderViewEventListener
 	virtual BOOL isUpToDate() const = 0;
 	virtual BOOL hasChildren() const = 0;
 	virtual LLInventoryType::EType getInventoryType() const = 0;
-	virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action) = 0;
+	virtual void performAction(LLInventoryModel* model, std::string action) = 0;
 	
 	// This method should be called when a drag begins. returns TRUE
 	// if the drag can begin, otherwise FALSE.
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index bb4c75d3ac68d2a1455d377d1c315f5f5856cfef..3208218302c3b42d49cff4d158de839f9f739145 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -38,6 +38,7 @@
 #include "llfoldervieweventlistener.h"
 #include "llinventorybridge.h"	// for LLItemBridge in LLInventorySort::operator()
 #include "llinventoryfilter.h"
+#include "llinventorymodelbackgroundfetch.h"
 #include "llpanel.h"
 #include "llviewercontrol.h"	// gSavedSettings
 #include "llviewerwindow.h"		// Argh, only for setCursor()
@@ -436,11 +437,8 @@ S32 LLFolderViewItem::arrange( S32* width, S32* height, S32 filter_generation)
 
 S32 LLFolderViewItem::getItemHeight()
 {
-	if (mHidden) return 0;
+	if (getHidden()) return 0;
 
-	//S32 icon_height = mIcon->getHeight();
-	//S32 label_height = llround(getLabelFontForStyle(mLabelStyle)->getLineHeight());
-	//return llmax( icon_height, label_height ) + ICON_PAD;
 	return mItemHeight;
 }
 
@@ -823,32 +821,38 @@ BOOL LLFolderViewItem::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 	return handled;
 }
 
-
 void LLFolderViewItem::draw()
 {
-	if (mHidden) return;
+	if (getHidden())
+	{
+		return;
+	}
 
 	static LLUIColor sFgColor = LLUIColorTable::instance().getColor("MenuItemEnabledColor", DEFAULT_WHITE);
 	static LLUIColor sHighlightBgColor = LLUIColorTable::instance().getColor("MenuItemHighlightBgColor", DEFAULT_WHITE);
 	static LLUIColor sHighlightFgColor = LLUIColorTable::instance().getColor("MenuItemHighlightFgColor", DEFAULT_WHITE);
-	static LLUIColor sFocusOutlineColor =
-		LLUIColorTable::instance().getColor("InventoryFocusOutlineColor", DEFAULT_WHITE);
+	static LLUIColor sFocusOutlineColor = LLUIColorTable::instance().getColor("InventoryFocusOutlineColor", DEFAULT_WHITE);
 	static LLUIColor sFilterBGColor = LLUIColorTable::instance().getColor("FilterBackgroundColor", DEFAULT_WHITE);
 	static LLUIColor sFilterTextColor = LLUIColorTable::instance().getColor("FilterTextColor", DEFAULT_WHITE);
-	static LLUIColor sSuffixColor = LLUIColorTable::instance().getColor("InventoryItemSuffixColor", DEFAULT_WHITE);
+	static LLUIColor sSuffixColor = LLUIColorTable::instance().getColor("InventoryItemColor", DEFAULT_WHITE);
+	static LLUIColor sLibraryColor = LLUIColorTable::instance().getColor("InventoryItemLibraryColor", DEFAULT_WHITE);
 	static LLUIColor sSearchStatusColor = LLUIColorTable::instance().getColor("InventorySearchStatusColor", DEFAULT_WHITE);
 
 	const Params& default_params = LLUICtrlFactory::getDefaultParams<LLFolderViewItem>();
 	const S32 TOP_PAD = default_params.item_top_pad;
+	const S32 FOCUS_LEFT = 1;
+	const LLFontGL* font = getLabelFontForStyle(mLabelStyle);
 
-	bool possibly_has_children = false;
-	bool up_to_date = mListener && mListener->isUpToDate();
-	if((up_to_date && hasVisibleChildren() ) || // we fetched our children and some of them have passed the filter...
-		(!up_to_date && mListener && mListener->hasChildren())) // ...or we know we have children but haven't fetched them (doesn't obey filter)
-	{
-		possibly_has_children = true;
-	}
-	if(/*mControlLabel[0] != '\0' && */possibly_has_children)
+	const BOOL in_inventory = getListener() && gInventory.isObjectDescendentOf(getListener()->getUUID(), gInventory.getRootFolderID());
+	const BOOL in_library = getListener() && gInventory.isObjectDescendentOf(getListener()->getUUID(), gInventory.getLibraryRootFolderID());
+
+	//--------------------------------------------------------------------------------//
+	// Draw open folder arrow
+	//
+	const bool up_to_date = mListener && mListener->isUpToDate();
+	const bool possibly_has_children = ((up_to_date && hasVisibleChildren()) || // we fetched our children and some of them have passed the filter...
+										(!up_to_date && mListener && mListener->hasChildren())); // ...or we know we have children but haven't fetched them (doesn't obey filter)
+	if (possibly_has_children)
 	{
 		LLUIImage* arrow_image = default_params.folder_arrow_image;
 		gl_draw_scaled_rotated_image(
@@ -856,22 +860,16 @@ void LLFolderViewItem::draw()
 			ARROW_SIZE, ARROW_SIZE, mControlLabelRotation, arrow_image->getImage(), sFgColor);
 	}
 
-	// See also LLFolderView::updateRenamerPosition()
-	F32 text_left = (F32)(ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + mIndentation);
-
-	LLFontGL* font = getLabelFontForStyle(mLabelStyle);
 
-	// If we have keyboard focus, draw selection filled
-	BOOL show_context = getRoot()->getShowSelectionContext();
-	BOOL filled = show_context || (getRoot()->getParentPanel()->hasFocus());
-	const S32 FOCUS_LEFT = 1;
-	S32 focus_top = getRect().getHeight();
-	S32 focus_bottom = getRect().getHeight() - mItemHeight;
-	bool folder_open = (getRect().getHeight() > mItemHeight + 4);
-
-	// always render "current" item, only render other selected items if
-	// mShowSingleSelection is FALSE
-	if( mIsSelected )
+	//--------------------------------------------------------------------------------//
+	// Draw highlight for selected items
+	//
+	const BOOL show_context = getRoot()->getShowSelectionContext();
+	const BOOL filled = show_context || (getRoot()->getParentPanel()->hasFocus()); // If we have keyboard focus, draw selection filled
+	const S32 focus_top = getRect().getHeight();
+	const S32 focus_bottom = getRect().getHeight() - mItemHeight;
+	const bool folder_open = (getRect().getHeight() > mItemHeight + 4);
+	if (mIsSelected) // always render "current" item.  Only render other selected items if mShowSingleSelection is FALSE
 	{
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		LLColor4 bg_color = sHighlightBgColor;
@@ -890,152 +888,167 @@ void LLFolderViewItem::draw()
 				bg_color.mV[VALPHA] = clamp_rescale(fade_time, 0.f, 0.4f, 0.f, bg_color.mV[VALPHA]);
 			}
 		}
-
-		gl_rect_2d(
-			FOCUS_LEFT,
-			focus_top, 
-			getRect().getWidth() - 2,
-			focus_bottom,
-			bg_color, filled);
+		gl_rect_2d(FOCUS_LEFT,
+				   focus_top, 
+				   getRect().getWidth() - 2,
+				   focus_bottom,
+				   bg_color, filled);
 		if (mIsCurSelection)
 		{
-			gl_rect_2d(
-				FOCUS_LEFT, 
-				focus_top, 
-				getRect().getWidth() - 2,
-				focus_bottom,
-				sFocusOutlineColor, FALSE);
+			gl_rect_2d(FOCUS_LEFT, 
+					   focus_top, 
+					   getRect().getWidth() - 2,
+					   focus_bottom,
+					   sFocusOutlineColor, FALSE);
 		}
 		if (folder_open)
 		{
-			gl_rect_2d(
-				FOCUS_LEFT,
-				focus_bottom + 1, // overlap with bottom edge of above rect
-				getRect().getWidth() - 2,
-				0,
-				sFocusOutlineColor, FALSE);
+			gl_rect_2d(FOCUS_LEFT,
+					   focus_bottom + 1, // overlap with bottom edge of above rect
+					   getRect().getWidth() - 2,
+					   0,
+					   sFocusOutlineColor, FALSE);
 			if (show_context)
 			{
-				gl_rect_2d(
-					FOCUS_LEFT,
-					focus_bottom + 1,
-					getRect().getWidth() - 2,
-					0,
-					sHighlightBgColor, TRUE);
+				gl_rect_2d(FOCUS_LEFT,
+						   focus_bottom + 1,
+						   getRect().getWidth() - 2,
+						   0,
+						   sHighlightBgColor, TRUE);
 			}
 		}
 	}
+
+	//--------------------------------------------------------------------------------//
+	// Draw DragNDrop highlight
+	//
 	if (mDragAndDropTarget)
 	{
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-		gl_rect_2d(
-			FOCUS_LEFT, 
-			focus_top, 
-			getRect().getWidth() - 2,
-			focus_bottom,
-			sHighlightBgColor, FALSE);
+		gl_rect_2d(FOCUS_LEFT, 
+				   focus_top, 
+				   getRect().getWidth() - 2,
+				   focus_bottom,
+				   sHighlightBgColor, FALSE);
 		if (folder_open)
 		{
-			gl_rect_2d(
-				FOCUS_LEFT,
-				focus_bottom + 1, // overlap with bottom edge of above rect
-				getRect().getWidth() - 2,
-				0,
-				sHighlightBgColor, FALSE);
+			gl_rect_2d(FOCUS_LEFT,
+					   focus_bottom + 1, // overlap with bottom edge of above rect
+					   getRect().getWidth() - 2,
+					   0,
+					   sHighlightBgColor, FALSE);
 		}
 		mDragAndDropTarget = FALSE;
 	}
 
-	S32 icon_x = mIndentation + ARROW_SIZE + TEXT_PAD;
-	// First case is used for open folders
-	if (!mIconOpen.isNull() && (llabs(mControlLabelRotation) > 80))
+	
+	//--------------------------------------------------------------------------------//
+	// Draw open icon
+	//
+	const S32 icon_x = mIndentation + ARROW_SIZE + TEXT_PAD;
+	if (!mIconOpen.isNull() && (llabs(mControlLabelRotation) > 80)) // For open folders
  	{
 		mIconOpen->draw(icon_x, getRect().getHeight() - mIconOpen->getHeight() - TOP_PAD + 1);
 	}
-	else if(mIcon)
+	else if (mIcon)
 	{
  		mIcon->draw(icon_x, getRect().getHeight() - mIcon->getHeight() - TOP_PAD + 1);
  	}
 
-	if (!mLabel.empty())
-	{
-		// highlight filtered text
-		BOOL debug_filters = getRoot()->getDebugFilters();
-		LLColor4 color = ( (mIsSelected && filled) ? sHighlightFgColor : sFgColor );
-		F32 right_x;
-		F32 y = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD - (F32)TOP_PAD;
 
-		if (debug_filters)
-		{
-			if (!getFiltered() && !possibly_has_children)
-			{
-				color.mV[VALPHA] *= 0.5f;
-			}
-
-			LLColor4 filter_color = mLastFilterGeneration >= getRoot()->getFilter()->getCurrentGeneration() ? LLColor4(0.5f, 0.8f, 0.5f, 1.f) : LLColor4(0.8f, 0.5f, 0.5f, 1.f);
-			LLFontGL::getFontMonospace()->renderUTF8(
-				mStatusText, 0, text_left, y, filter_color,
-				LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
-				S32_MAX, S32_MAX, &right_x, FALSE );
-			text_left = right_x;
-		}
+	//--------------------------------------------------------------------------------//
+	// Exit if no label to draw
+	//
+	if (mLabel.empty())
+	{
+		return;
+	}
 
+	LLColor4 color = (mIsSelected && filled) ? sHighlightFgColor : sFgColor;
+	if (in_library) color = sLibraryColor;
 
-		font->renderUTF8( mLabel, 0, text_left, y, color,
-						  LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
-						  S32_MAX, getRect().getWidth() - (S32) text_left, &right_x, TRUE);
+	F32 right_x  = 0;
+	F32 y = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD - (F32)TOP_PAD;
+	F32 text_left = (F32)(ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + mIndentation);
 
-//		LLViewerInventoryCategory *item = 0;
-//		if (getListener())
-//			item = gInventory.getCategory(getListener()->getUUID());
-		bool root_is_loading = false;
-		if (getListener() && gInventory.isObjectDescendentOf(getListener()->getUUID(),gInventory.getRootFolderID()))
-		{
-			// Descendent of my inventory.
-			root_is_loading = gInventory.myInventoryFetchInProgress();
-		}
-		if (getListener() && gInventory.isObjectDescendentOf(getListener()->getUUID(),gInventory.getLibraryRootFolderID()))
-		{
-			// Descendent of library
-			root_is_loading = gInventory.libraryFetchInProgress();
-		}
-			
-		if ( (mIsLoading && mTimeSinceRequestStart.getElapsedTimeF32() >= gSavedSettings.getF32("FolderLoadingMessageWaitTime"))
-			|| (LLInventoryModel::backgroundFetchActive() && root_is_loading && mShowLoadStatus) )
+	//--------------------------------------------------------------------------------//
+	// Highlight filtered text
+	//
+	if (getRoot()->getDebugFilters())
+	{
+		if (!getFiltered() && !possibly_has_children)
 		{
-			std::string load_string = " ( " + LLTrans::getString("LoadingData") + " ) ";
-			font->renderUTF8(load_string, 0, right_x, y, sSearchStatusColor,
-					  LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, &right_x, FALSE);
+			color.mV[VALPHA] *= 0.5f;
 		}
+		LLColor4 filter_color = mLastFilterGeneration >= getRoot()->getFilter()->getCurrentGeneration() ? 
+			LLColor4(0.5f, 0.8f, 0.5f, 1.f) : 
+			LLColor4(0.8f, 0.5f, 0.5f, 1.f);
+		LLFontGL::getFontMonospace()->renderUTF8(mStatusText, 0, text_left, y, filter_color,
+												 LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
+												 S32_MAX, S32_MAX, &right_x, FALSE );
+		text_left = right_x;
+	}
+	//--------------------------------------------------------------------------------//
+	// Draw the actual label text
+	//
+	font->renderUTF8(mLabel, 0, text_left, y, color,
+					 LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
+					 S32_MAX, getRect().getWidth() - (S32) text_left, &right_x, TRUE);
 
-		if (!mLabelSuffix.empty())
-		{
-			font->renderUTF8( mLabelSuffix, 0, right_x, y, sSuffixColor,
-					   LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
-				S32_MAX, S32_MAX, &right_x, FALSE );
-		}
+	//--------------------------------------------------------------------------------//
+	// Draw "Loading..." text
+	//
+	bool root_is_loading = false;
+	if (in_inventory)
+	{
+		root_is_loading = LLInventoryModelBackgroundFetch::instance().inventoryFetchInProgress(); 
+	}
+	if (in_library)
+	{
+		root_is_loading = LLInventoryModelBackgroundFetch::instance().libraryFetchInProgress();
+	}
+	if ((mIsLoading && mTimeSinceRequestStart.getElapsedTimeF32() >= gSavedSettings.getF32("FolderLoadingMessageWaitTime")) ||
+		(LLInventoryModelBackgroundFetch::instance().backgroundFetchActive() && root_is_loading && (mShowLoadStatus || mHidden)))
+	{
+		std::string load_string = " ( " + LLTrans::getString("LoadingData") + " ) ";
+		font->renderUTF8(load_string, 0, right_x, y, sSearchStatusColor,
+						 LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, 
+						 S32_MAX, S32_MAX, &right_x, FALSE);
+	}
 
-		if (mStringMatchOffset != std::string::npos)
+	//--------------------------------------------------------------------------------//
+	// Draw label suffix
+	//
+	if (!mLabelSuffix.empty())
+	{
+		font->renderUTF8( mLabelSuffix, 0, right_x, y, sSuffixColor,
+						  LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
+						  S32_MAX, S32_MAX, &right_x, FALSE );
+	}
+
+	//--------------------------------------------------------------------------------//
+	// Highlight string match
+	//
+	if (mStringMatchOffset != std::string::npos)
+	{
+		// don't draw backgrounds for zero-length strings
+		S32 filter_string_length = getRoot()->getFilterSubString().size();
+		if (filter_string_length > 0)
 		{
-			// don't draw backgrounds for zero-length strings
-			S32 filter_string_length = getRoot()->getFilterSubString().size();
-			if (filter_string_length > 0)
-			{
-				std::string combined_string = mLabel + mLabelSuffix;
-				S32 left = llround(text_left) + font->getWidth(combined_string, 0, mStringMatchOffset) - 1;
-				S32 right = left + font->getWidth(combined_string, mStringMatchOffset, filter_string_length) + 2;
-				S32 bottom = llfloor(getRect().getHeight() - font->getLineHeight() - 3 - TOP_PAD);
-				S32 top = getRect().getHeight() - TOP_PAD;
+			std::string combined_string = mLabel + mLabelSuffix;
+			S32 left = llround(text_left) + font->getWidth(combined_string, 0, mStringMatchOffset) - 1;
+			S32 right = left + font->getWidth(combined_string, mStringMatchOffset, filter_string_length) + 2;
+			S32 bottom = llfloor(getRect().getHeight() - font->getLineHeight() - 3 - TOP_PAD);
+			S32 top = getRect().getHeight() - TOP_PAD;
 		
-				LLUIImage* box_image = default_params.selection_image;
-				LLRect box_rect(left, top, right, bottom);
-				box_image->draw(box_rect, sFilterBGColor);
-				F32 match_string_left = text_left + font->getWidthF32(combined_string, 0, mStringMatchOffset);
-				F32 yy = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD - (F32)TOP_PAD;
-				font->renderUTF8( combined_string, mStringMatchOffset, match_string_left, yy,
-								  sFilterTextColor, LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
-								  filter_string_length, S32_MAX, &right_x, FALSE );
-			}
+			LLUIImage* box_image = default_params.selection_image;
+			LLRect box_rect(left, top, right, bottom);
+			box_image->draw(box_rect, sFilterBGColor);
+			F32 match_string_left = text_left + font->getWidthF32(combined_string, 0, mStringMatchOffset);
+			F32 yy = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD - (F32)TOP_PAD;
+			font->renderUTF8( combined_string, mStringMatchOffset, match_string_left, yy,
+							  sFilterTextColor, LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
+							  filter_string_length, S32_MAX, &right_x, FALSE );
 		}
 	}
 }
@@ -1046,20 +1059,21 @@ void LLFolderViewItem::draw()
 ///----------------------------------------------------------------------------
 
 LLFolderViewFolder::LLFolderViewFolder( const LLFolderViewItem::Params& p ): 
-LLFolderViewItem( p ),	// 0 = no create time
-mIsOpen(FALSE),
-mExpanderHighlighted(FALSE),
-mCurHeight(0.f),
-mTargetHeight(0.f),
-mAutoOpenCountdown(0.f),
-mSubtreeCreationDate(0),
-mAmTrash(LLFolderViewFolder::UNKNOWN),
-mLastArrangeGeneration( -1 ),
-mLastCalculatedWidth(0),
-mCompletedFilterGeneration(-1),
-mMostFilteredDescendantGeneration(-1),
-mNeedsSort(false)
-{}
+	LLFolderViewItem( p ),	// 0 = no create time
+	mIsOpen(FALSE),
+	mExpanderHighlighted(FALSE),
+	mCurHeight(0.f),
+	mTargetHeight(0.f),
+	mAutoOpenCountdown(0.f),
+	mSubtreeCreationDate(0),
+	mAmTrash(LLFolderViewFolder::UNKNOWN),
+	mLastArrangeGeneration( -1 ),
+	mLastCalculatedWidth(0),
+	mCompletedFilterGeneration(-1),
+	mMostFilteredDescendantGeneration(-1),
+	mNeedsSort(false)
+{
+}
 
 // Destroys the object
 LLFolderViewFolder::~LLFolderViewFolder( void )
@@ -1317,7 +1331,7 @@ void LLFolderViewFolder::filter( LLInventoryFilter& filter)
 	// when applying a filter, matching folders get their contents downloaded first
 	if (filter.isNotDefault() && getFiltered(filter.getMinRequiredGeneration()) && (mListener && !gInventory.isCategoryComplete(mListener->getUUID())))
 	{
-		gInventory.startBackgroundFetch(mListener->getUUID());
+		LLInventoryModelBackgroundFetch::instance().start(mListener->getUUID());
 	}
 
 	// now query children
diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp
index 18f81fe506bd94add9a3b405a5fbfed4d6653c20..6f069cca17b731bdd166750876857eb9a353d612 100644
--- a/indra/newview/llfriendcard.cpp
+++ b/indra/newview/llfriendcard.cpp
@@ -33,6 +33,7 @@
 #include "llviewerprecompiledheaders.h"
 
 #include "llinventory.h"
+#include "llinventoryfunctions.h"
 #include "llinventoryobserver.h"
 #include "lltrans.h"
 
@@ -322,7 +323,7 @@ void LLFriendCardsManager::collectFriendsLists(folderid_buddies_map_t& folderBud
 		if (NULL == items)
 			continue;
 
-		std::vector<LLUUID> buddyUUIDs;
+		uuid_vec_t buddyUUIDs;
 		for (itBuddy = items->begin(); itBuddy != items->end(); ++itBuddy)
 		{
 			buddyUUIDs.push_back((*itBuddy)->getCreatorUUID());
@@ -409,10 +410,10 @@ void LLFriendCardsManager::fetchAndCheckFolderDescendents(const LLUUID& folder_i
 	// This instance will be deleted in LLInitialFriendCardsFetch::done().
 	LLInitialFriendCardsFetch* fetch = new LLInitialFriendCardsFetch(cb);
 
-	LLInventoryFetchDescendentsObserver::folder_ref_t folders;
+	uuid_vec_t folders;
 	folders.push_back(folder_id);
 
-	fetch->fetchDescendents(folders);
+	fetch->fetch(folders);
 	if(fetch->isEverythingComplete())
 	{
 		// everything is already here - call done.
diff --git a/indra/newview/llfriendcard.h b/indra/newview/llfriendcard.h
index 1cda52c1d7dae9655b6f85af250f22d004d9c797..638a1eca84ce436b95b811025a2d885a37fb6a74 100644
--- a/indra/newview/llfriendcard.h
+++ b/indra/newview/llfriendcard.h
@@ -49,7 +49,7 @@ class LLFriendCardsManager
 	friend class CreateFriendCardCallback;
 
 public:
-	typedef std::map<LLUUID, std::vector<LLUUID> > folderid_buddies_map_t;
+	typedef std::map<LLUUID, uuid_vec_t > folderid_buddies_map_t;
 
 	// LLFriendObserver implementation
 	void changed(U32 mask)
diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp
index 0ba7bdf61314cedb1d55d823c977f4a1467e80ad..a4342a4bc9a00ada5a3443cecea1abd606698d07 100644
--- a/indra/newview/llgesturemgr.cpp
+++ b/indra/newview/llgesturemgr.cpp
@@ -67,7 +67,7 @@ static const LLUUID& get_linked_uuid(const LLUUID& item_id);
 
 // Lightweight constructor.
 // init() does the heavy lifting.
-LLGestureManager::LLGestureManager()
+LLGestureMgr::LLGestureMgr()
 :	mValid(FALSE),
 	mPlaying(),
 	mActive(),
@@ -79,7 +79,7 @@ LLGestureManager::LLGestureManager()
 
 
 // We own the data for gestures, so clean them up.
-LLGestureManager::~LLGestureManager()
+LLGestureMgr::~LLGestureMgr()
 {
 	item_map_t::iterator it;
 	for (it = mActive.begin(); it != mActive.end(); ++it)
@@ -93,12 +93,12 @@ LLGestureManager::~LLGestureManager()
 }
 
 
-void LLGestureManager::init()
+void LLGestureMgr::init()
 {
 	// TODO
 }
 
-void LLGestureManager::changed(U32 mask) 
+void LLGestureMgr::changed(U32 mask) 
 { 
 	LLInventoryFetchObserver::changed(mask);
 
@@ -136,7 +136,7 @@ void LLGestureManager::changed(U32 mask)
 
 // Use this version when you have the item_id but not the asset_id,
 // and you KNOW the inventory is loaded.
-void LLGestureManager::activateGesture(const LLUUID& item_id)
+void LLGestureMgr::activateGesture(const LLUUID& item_id)
 {
 	LLViewerInventoryItem* item = gInventory.getItem(item_id);
 	if (!item) return;
@@ -152,7 +152,7 @@ void LLGestureManager::activateGesture(const LLUUID& item_id)
 }
 
 
-void LLGestureManager::activateGestures(LLViewerInventoryItem::item_array_t& items)
+void LLGestureMgr::activateGestures(LLViewerInventoryItem::item_array_t& items)
 {
 	// Load up the assets
 	S32 count = 0;
@@ -248,7 +248,7 @@ struct LLLoadInfo
 /**
  * It will load a gesture from remote storage
  */
-void LLGestureManager::activateGestureWithAsset(const LLUUID& item_id,
+void LLGestureMgr::activateGestureWithAsset(const LLUUID& item_id,
 												const LLUUID& asset_id,
 												BOOL inform_server,
 												BOOL deactivate_similar)
@@ -257,7 +257,7 @@ void LLGestureManager::activateGestureWithAsset(const LLUUID& item_id,
 
 	if( !gAssetStorage )
 	{
-		llwarns << "LLGestureManager::activateGestureWithAsset without valid gAssetStorage" << llendl;
+		llwarns << "LLGestureMgr::activateGestureWithAsset without valid gAssetStorage" << llendl;
 		return;
 	}
 	// If gesture is already active, nothing to do.
@@ -299,7 +299,7 @@ void LLGestureManager::activateGestureWithAsset(const LLUUID& item_id,
 }
 
 
-void LLGestureManager::deactivateGesture(const LLUUID& item_id)
+void LLGestureMgr::deactivateGesture(const LLUUID& item_id)
 {
 	const LLUUID& base_item_id = get_linked_uuid(item_id);
 	item_map_t::iterator it = mActive.find(base_item_id);
@@ -338,16 +338,16 @@ void LLGestureManager::deactivateGesture(const LLUUID& item_id)
 
 	gAgent.sendReliableMessage();
 
-	LLAppearanceManager::instance().removeCOFItemLinks(base_item_id, false);
+	LLAppearanceMgr::instance().removeCOFItemLinks(base_item_id, false);
 
 	notifyObservers();
 }
 
 
-void LLGestureManager::deactivateSimilarGestures(LLMultiGesture* in, const LLUUID& in_item_id)
+void LLGestureMgr::deactivateSimilarGestures(LLMultiGesture* in, const LLUUID& in_item_id)
 {
 	const LLUUID& base_in_item_id = get_linked_uuid(in_item_id);
-	std::vector<LLUUID> gest_item_ids;
+	uuid_vec_t gest_item_ids;
 
 	// Deactivate all gestures that match
 	item_map_t::iterator it;
@@ -386,7 +386,7 @@ void LLGestureManager::deactivateSimilarGestures(LLMultiGesture* in, const LLUUI
 	// Inform database of the change
 	LLMessageSystem* msg = gMessageSystem;
 	BOOL start_message = TRUE;
-	std::vector<LLUUID>::const_iterator vit = gest_item_ids.begin();
+	uuid_vec_t::const_iterator vit = gest_item_ids.begin();
 	while (vit != gest_item_ids.end())
 	{
 		if (start_message)
@@ -431,7 +431,7 @@ void LLGestureManager::deactivateSimilarGestures(LLMultiGesture* in, const LLUUI
 }
 
 
-BOOL LLGestureManager::isGestureActive(const LLUUID& item_id)
+BOOL LLGestureMgr::isGestureActive(const LLUUID& item_id)
 {
 	const LLUUID& base_item_id = get_linked_uuid(item_id);
 	item_map_t::iterator it = mActive.find(base_item_id);
@@ -439,7 +439,7 @@ BOOL LLGestureManager::isGestureActive(const LLUUID& item_id)
 }
 
 
-BOOL LLGestureManager::isGesturePlaying(const LLUUID& item_id)
+BOOL LLGestureMgr::isGesturePlaying(const LLUUID& item_id)
 {
 	const LLUUID& base_item_id = get_linked_uuid(item_id);
 
@@ -452,7 +452,7 @@ BOOL LLGestureManager::isGesturePlaying(const LLUUID& item_id)
 	return gesture->mPlaying;
 }
 
-BOOL LLGestureManager::isGesturePlaying(LLMultiGesture* gesture)
+BOOL LLGestureMgr::isGesturePlaying(LLMultiGesture* gesture)
 {
 	if(!gesture)
 	{
@@ -462,7 +462,7 @@ BOOL LLGestureManager::isGesturePlaying(LLMultiGesture* gesture)
 	return gesture->mPlaying;
 }
 
-void LLGestureManager::replaceGesture(const LLUUID& item_id, LLMultiGesture* new_gesture, const LLUUID& asset_id)
+void LLGestureMgr::replaceGesture(const LLUUID& item_id, LLMultiGesture* new_gesture, const LLUUID& asset_id)
 {
 	const LLUUID& base_item_id = get_linked_uuid(item_id);
 
@@ -504,11 +504,11 @@ void LLGestureManager::replaceGesture(const LLUUID& item_id, LLMultiGesture* new
 	notifyObservers();
 }
 
-void LLGestureManager::replaceGesture(const LLUUID& item_id, const LLUUID& new_asset_id)
+void LLGestureMgr::replaceGesture(const LLUUID& item_id, const LLUUID& new_asset_id)
 {
 	const LLUUID& base_item_id = get_linked_uuid(item_id);
 
-	item_map_t::iterator it = LLGestureManager::instance().mActive.find(base_item_id);
+	item_map_t::iterator it = LLGestureMgr::instance().mActive.find(base_item_id);
 	if (it == mActive.end())
 	{
 		llwarns << "replaceGesture for inactive gesture " << base_item_id << llendl;
@@ -517,10 +517,10 @@ void LLGestureManager::replaceGesture(const LLUUID& item_id, const LLUUID& new_a
 
 	// mActive owns this gesture pointer, so clean up memory.
 	LLMultiGesture* gesture = (*it).second;
-	LLGestureManager::instance().replaceGesture(base_item_id, gesture, new_asset_id);
+	LLGestureMgr::instance().replaceGesture(base_item_id, gesture, new_asset_id);
 }
 
-void LLGestureManager::playGesture(LLMultiGesture* gesture)
+void LLGestureMgr::playGesture(LLMultiGesture* gesture)
 {
 	if (!gesture) return;
 
@@ -539,7 +539,7 @@ void LLGestureManager::playGesture(LLMultiGesture* gesture)
 
 
 // Convenience function that looks up the item_id for you.
-void LLGestureManager::playGesture(const LLUUID& item_id)
+void LLGestureMgr::playGesture(const LLUUID& item_id)
 {
 	const LLUUID& base_item_id = get_linked_uuid(item_id);
 
@@ -556,7 +556,7 @@ void LLGestureManager::playGesture(const LLUUID& item_id)
 // Iterates through space delimited tokens in string, triggering any gestures found.
 // Generates a revised string that has the found tokens replaced by their replacement strings
 // and (as a minor side effect) has multiple spaces in a row replaced by single spaces.
-BOOL LLGestureManager::triggerAndReviseString(const std::string &utf8str, std::string* revised_string)
+BOOL LLGestureMgr::triggerAndReviseString(const std::string &utf8str, std::string* revised_string)
 {
 	std::string tokenized = utf8str;
 
@@ -649,7 +649,7 @@ BOOL LLGestureManager::triggerAndReviseString(const std::string &utf8str, std::s
 }
 
 
-BOOL LLGestureManager::triggerGesture(KEY key, MASK mask)
+BOOL LLGestureMgr::triggerGesture(KEY key, MASK mask)
 {
 	std::vector <LLMultiGesture *> matching;
 	item_map_t::iterator it;
@@ -683,7 +683,7 @@ BOOL LLGestureManager::triggerGesture(KEY key, MASK mask)
 }
 
 
-S32 LLGestureManager::getPlayingCount() const
+S32 LLGestureMgr::getPlayingCount() const
 {
 	return mPlaying.size();
 }
@@ -697,7 +697,7 @@ struct IsGesturePlaying : public std::unary_function<LLMultiGesture*, bool>
 	}
 };
 
-void LLGestureManager::update()
+void LLGestureMgr::update()
 {
 	S32 i;
 	for (i = 0; i < (S32)mPlaying.size(); ++i)
@@ -740,14 +740,13 @@ void LLGestureManager::update()
 
 
 // Run all steps until you're either done or hit a wait.
-void LLGestureManager::stepGesture(LLMultiGesture* gesture)
+void LLGestureMgr::stepGesture(LLMultiGesture* gesture)
 {
 	if (!gesture)
 	{
 		return;
 	}
-	LLVOAvatar* avatar = gAgent.getAvatarObject();
-	if (!avatar) return;
+	if (!isAgentAvatarValid()) return;
 
 	// Of the ones that started playing, have any stopped?
 
@@ -758,8 +757,8 @@ void LLGestureManager::stepGesture(LLMultiGesture* gesture)
 	{
 		// look in signaled animations (simulator's view of what is
 		// currently playing.
-		LLVOAvatar::AnimIterator play_it = avatar->mSignaledAnimations.find(*gest_it);
-		if (play_it != avatar->mSignaledAnimations.end())
+		LLVOAvatar::AnimIterator play_it = gAgentAvatarp->mSignaledAnimations.find(*gest_it);
+		if (play_it != gAgentAvatarp->mSignaledAnimations.end())
 		{
 			++gest_it;
 		}
@@ -777,8 +776,8 @@ void LLGestureManager::stepGesture(LLMultiGesture* gesture)
 		 gest_it != gesture->mRequestedAnimIDs.end();
 		 )
 	{
-	 LLVOAvatar::AnimIterator play_it = avatar->mSignaledAnimations.find(*gest_it);
-		if (play_it != avatar->mSignaledAnimations.end())
+	 LLVOAvatar::AnimIterator play_it = gAgentAvatarp->mSignaledAnimations.find(*gest_it);
+		if (play_it != gAgentAvatarp->mSignaledAnimations.end())
 		{
 			// Hooray, this animation has started playing!
 			// Copy into playing.
@@ -888,7 +887,7 @@ void LLGestureManager::stepGesture(LLMultiGesture* gesture)
 }
 
 
-void LLGestureManager::runStep(LLMultiGesture* gesture, LLGestureStep* step)
+void LLGestureMgr::runStep(LLMultiGesture* gesture, LLGestureStep* step)
 {
 	switch(step->getType())
 	{
@@ -975,7 +974,7 @@ void LLGestureManager::runStep(LLMultiGesture* gesture, LLGestureStep* step)
 
 
 // static
-void LLGestureManager::onLoadComplete(LLVFS *vfs,
+void LLGestureMgr::onLoadComplete(LLVFS *vfs,
 									   const LLUUID& asset_uuid,
 									   LLAssetType::EType type,
 									   void* user_data, S32 status, LLExtStat ext_status)
@@ -988,7 +987,7 @@ void LLGestureManager::onLoadComplete(LLVFS *vfs,
 
 	delete info;
 	info = NULL;
-	LLGestureManager& self = LLGestureManager::instance();
+	LLGestureMgr& self = LLGestureMgr::instance();
 	self.mLoadingCount--;
 
 	if (0 == status)
@@ -1032,9 +1031,9 @@ void LLGestureManager::onLoadComplete(LLVFS *vfs,
 			else
 			{
 				// Watch this item and set gesture name when item exists in inventory
-				item_ref_t ids;
+				uuid_vec_t ids;
 				ids.push_back(item_id);
-				self.fetchItems(ids);
+				self.fetch(ids);
 			}
 			self.mActive[item_id] = gesture;
 
@@ -1094,12 +1093,12 @@ void LLGestureManager::onLoadComplete(LLVFS *vfs,
 
 		llwarns << "Problem loading gesture: " << status << llendl;
 		
-		LLGestureManager::instance().mActive.erase(item_id);			
+		LLGestureMgr::instance().mActive.erase(item_id);			
 	}
 }
 
 
-void LLGestureManager::stopGesture(LLMultiGesture* gesture)
+void LLGestureMgr::stopGesture(LLMultiGesture* gesture)
 {
 	if (!gesture) return;
 
@@ -1139,7 +1138,7 @@ void LLGestureManager::stopGesture(LLMultiGesture* gesture)
 }
 
 
-void LLGestureManager::stopGesture(const LLUUID& item_id)
+void LLGestureMgr::stopGesture(const LLUUID& item_id)
 {
 	const LLUUID& base_item_id = get_linked_uuid(item_id);
 
@@ -1153,12 +1152,12 @@ void LLGestureManager::stopGesture(const LLUUID& item_id)
 }
 
 
-void LLGestureManager::addObserver(LLGestureManagerObserver* observer)
+void LLGestureMgr::addObserver(LLGestureManagerObserver* observer)
 {
 	mObservers.push_back(observer);
 }
 
-void LLGestureManager::removeObserver(LLGestureManagerObserver* observer)
+void LLGestureMgr::removeObserver(LLGestureManagerObserver* observer)
 {
 	std::vector<LLGestureManagerObserver*>::iterator it;
 	it = std::find(mObservers.begin(), mObservers.end(), observer);
@@ -1171,9 +1170,9 @@ void LLGestureManager::removeObserver(LLGestureManagerObserver* observer)
 // Call this method when it's time to update everyone on a new state.
 // Copy the list because an observer could respond by removing itself
 // from the list.
-void LLGestureManager::notifyObservers()
+void LLGestureMgr::notifyObservers()
 {
-	lldebugs << "LLGestureManager::notifyObservers" << llendl;
+	lldebugs << "LLGestureMgr::notifyObservers" << llendl;
 
 	std::vector<LLGestureManagerObserver*> observers = mObservers;
 
@@ -1185,7 +1184,7 @@ void LLGestureManager::notifyObservers()
 	}
 }
 
-BOOL LLGestureManager::matchPrefix(const std::string& in_str, std::string* out_str)
+BOOL LLGestureMgr::matchPrefix(const std::string& in_str, std::string* out_str)
 {
 	S32 in_len = in_str.length();
 
@@ -1216,7 +1215,7 @@ BOOL LLGestureManager::matchPrefix(const std::string& in_str, std::string* out_s
 }
 
 
-void LLGestureManager::getItemIDs(std::vector<LLUUID>* ids)
+void LLGestureMgr::getItemIDs(uuid_vec_t* ids)
 {
 	item_map_t::const_iterator it;
 	for (it = mActive.begin(); it != mActive.end(); ++it)
@@ -1225,7 +1224,7 @@ void LLGestureManager::getItemIDs(std::vector<LLUUID>* ids)
 	}
 }
 
-void LLGestureManager::done()
+void LLGestureMgr::done()
 {
 	bool notify = false;
 	for(item_map_t::iterator it = mActive.begin(); it != mActive.end(); ++it)
diff --git a/indra/newview/llgesturemgr.h b/indra/newview/llgesturemgr.h
index 3dd184ddc7d1815f43a5fb6a63f5cfec02c0db5b..081ca983a92d0cb87367e41fb8a701e354aef507 100644
--- a/indra/newview/llgesturemgr.h
+++ b/indra/newview/llgesturemgr.h
@@ -54,7 +54,7 @@ class LLGestureManagerObserver
 	virtual void changed() = 0;
 };
 
-class LLGestureManager : public LLSingleton<LLGestureManager>, public LLInventoryFetchObserver
+class LLGestureMgr : public LLSingleton<LLGestureMgr>, public LLInventoryFetchObserver
 {
 public:
 
@@ -63,8 +63,8 @@ class LLGestureManager : public LLSingleton<LLGestureManager>, public LLInventor
 	typedef std::map<LLUUID, LLMultiGesture*> item_map_t;
 	typedef std::map<LLUUID, gesture_loaded_callback_t> callback_map_t;
 
-	LLGestureManager();
-	~LLGestureManager();
+	LLGestureMgr();
+	~LLGestureMgr();
 
 	void init();
 
@@ -146,7 +146,7 @@ class LLGestureManager : public LLSingleton<LLGestureManager>, public LLInventor
 	BOOL matchPrefix(const std::string& in_str, std::string* out_str);
 
 	// Copy item ids into the vector
-	void getItemIDs(std::vector<LLUUID>* ids);
+	void getItemIDs(uuid_vec_t* ids);
 
 protected:
 	// Handle the processing of a single gesture
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index 00e2365ffde5e5d0a31a182aa7ac6f07cdccfc1d..d4eecc8c48c2a61456e2095fb8e4c0e5c630e496 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -105,7 +105,7 @@ class LLGroupHandler : public LLCommandHandler
 		{
 			if (group_id.isNull())
 				return true;
-			LLGroupActions::show(group_id);
+			LLGroupActions::inspect(group_id);
 			return true;
 		}
 		return false;
@@ -246,6 +246,12 @@ static bool isGroupUIVisible()
 	return panel->isInVisibleChain();
 }
 
+// static 
+void LLGroupActions::inspect(const LLUUID& group_id)
+{
+	LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", group_id));
+}
+
 // static
 void LLGroupActions::show(const LLUUID& group_id)
 {
diff --git a/indra/newview/llgroupactions.h b/indra/newview/llgroupactions.h
index e99df86cd9b69cfeff41f2872d176ced81f17471..55cae4db0b242760380f692d369a4ed168039abb 100644
--- a/indra/newview/llgroupactions.h
+++ b/indra/newview/llgroupactions.h
@@ -65,6 +65,11 @@ class LLGroupActions
 	 */
 	static void show(const LLUUID& group_id);
 
+	/**
+	 * Show group inspector floater.
+	 */
+	static void inspect(const LLUUID& group_id);
+
 	/**
 	 * Refresh group information panel.
 	 */
diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index 7f93a357decc0de926629e6cdbc2a303c70451d0..996553ccf7a4b68ad2ff4068440d2751b10d038f 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -160,7 +160,7 @@ LLGroupRoleData::~LLGroupRoleData()
 {	
 }
 
-S32 LLGroupRoleData::getMembersInRole(std::vector<LLUUID> members,
+S32 LLGroupRoleData::getMembersInRole(uuid_vec_t members,
 									  BOOL needs_sort)
 {
 	if (mRoleID.isNull())
@@ -184,8 +184,8 @@ S32 LLGroupRoleData::getMembersInRole(std::vector<LLUUID> members,
 
 	// Return the number of members in the intersection.
 	S32 max_size = llmin( members.size(), mMemberIDs.size() );
-	std::vector<LLUUID> in_role( max_size );
-	std::vector<LLUUID>::iterator in_role_end;
+	uuid_vec_t in_role( max_size );
+	uuid_vec_t::iterator in_role_end;
 	in_role_end = std::set_intersection(mMemberIDs.begin(), mMemberIDs.end(),
 									members.begin(), members.end(),
 									in_role.begin());
@@ -200,7 +200,7 @@ void LLGroupRoleData::addMember(const LLUUID& member)
 
 bool LLGroupRoleData::removeMember(const LLUUID& member)
 {
-	std::vector<LLUUID>::iterator it = std::find(mMemberIDs.begin(),mMemberIDs.end(),member);
+	uuid_vec_t::iterator it = std::find(mMemberIDs.begin(),mMemberIDs.end(),member);
 
 	if (it != mMemberIDs.end())
 	{
@@ -1736,7 +1736,7 @@ void LLGroupMgr::sendGroupMemberInvites(const LLUUID& group_id, std::map<LLUUID,
 
 //static
 void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
-									   std::vector<LLUUID>& member_ids)
+									   uuid_vec_t& member_ids)
 {
 	bool start_message = true;
 	LLMessageSystem* msg = gMessageSystem;
@@ -1746,7 +1746,7 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
 	LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id);
 	if (!group_datap) return;
 
-	for (std::vector<LLUUID>::iterator it = member_ids.begin();
+	for (uuid_vec_t::iterator it = member_ids.begin();
 		 it != member_ids.end(); ++it)
 	{
 		LLUUID& ejected_member_id = (*it);
diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h
index 2c86de8b9706c5a8fd940f6605fcf39a13ad1ad2..82df631b8c4b05a2401ea2d6bcf0ba3f74eeb5ec 100644
--- a/indra/newview/llgroupmgr.h
+++ b/indra/newview/llgroupmgr.h
@@ -139,8 +139,8 @@ friend class LLGroupMgrGroupData;
 
 	const LLUUID& getID() const { return mRoleID; }
 
-	const std::vector<LLUUID>& getRoleMembers() const { return mMemberIDs; }
-	S32 getMembersInRole(std::vector<LLUUID> members, BOOL needs_sort = TRUE);
+	const uuid_vec_t& getRoleMembers() const { return mMemberIDs; }
+	S32 getMembersInRole(uuid_vec_t members, BOOL needs_sort = TRUE);
 	S32 getTotalMembersInRole() { return mMemberIDs.size(); }
 
 	LLRoleData getRoleData() const { return mRoleData; }
@@ -150,10 +150,10 @@ friend class LLGroupMgrGroupData;
 	bool removeMember(const LLUUID& member);
 	void clearMembers();
 
-	const std::vector<LLUUID>::const_iterator getMembersBegin() const
+	const uuid_vec_t::const_iterator getMembersBegin() const
 	{ return mMemberIDs.begin(); }
 
-	const std::vector<LLUUID>::const_iterator getMembersEnd() const
+	const uuid_vec_t::const_iterator getMembersEnd() const
 	{ return mMemberIDs.end(); }
 
 
@@ -164,7 +164,7 @@ friend class LLGroupMgrGroupData;
 	LLUUID mRoleID;
 	LLRoleData	mRoleData;
 
-	std::vector<LLUUID> mMemberIDs;
+	uuid_vec_t mMemberIDs;
 	S32	mMemberCount;
 
 private:
@@ -340,7 +340,7 @@ class LLGroupMgr : public LLSingleton<LLGroupMgr>
 	static void sendGroupMemberJoin(const LLUUID& group_id);
 	static void sendGroupMemberInvites(const LLUUID& group_id, std::map<LLUUID,LLUUID>& role_member_pairs);
 	static void sendGroupMemberEjects(const LLUUID& group_id,
-									  std::vector<LLUUID>& member_ids);
+									  uuid_vec_t& member_ids);
 
 	void cancelGroupRoleChanges(const LLUUID& group_id);
 
diff --git a/indra/newview/llhudobject.cpp b/indra/newview/llhudobject.cpp
index dc55aba0dbf6db94b34dd3a39bdb47c4d89ea794..2b73ed1dcde567aa8c9b1ace66e715307b2f4227 100644
--- a/indra/newview/llhudobject.cpp
+++ b/indra/newview/llhudobject.cpp
@@ -43,6 +43,7 @@
 #include "llhudeffectbeam.h"
 #include "llhudeffecttrail.h"
 #include "llhudeffectlookat.h"
+#include "llhudeffectpointat.h"
 
 #include "llvoicevisualizer.h"
 
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 91f4f57e54458b55e673b3b743bc21a4af6d2a51..3ec8d11fb0cd7c72b5bb092085f2f359494e7276 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -44,6 +44,7 @@
 #include "llchiclet.h"
 #include "llfloaterreg.h"
 #include "llimfloatercontainer.h" // to replace separate IM Floaters with multifloater container
+#include "llinventoryfunctions.h"
 #include "lllayoutstack.h"
 #include "lllineeditor.h"
 #include "lllogchat.h"
@@ -922,7 +923,7 @@ BOOL LLIMFloater::dropCallingCard(LLInventoryItem* item, BOOL drop)
 	{
 		if(drop)
 		{
-			std::vector<LLUUID> ids;
+			uuid_vec_t ids;
 			ids.push_back(item->getCreatorUUID());
 			inviteToSession(ids);
 		}
@@ -955,7 +956,7 @@ BOOL LLIMFloater::dropCategory(LLInventoryCategory* category, BOOL drop)
 		}
 		else if(drop)
 		{
-			std::vector<LLUUID> ids;
+			uuid_vec_t ids;
 			ids.reserve(count);
 			for(S32 i = 0; i < count; ++i)
 			{
@@ -992,7 +993,7 @@ class LLSessionInviteResponder : public LLHTTPClient::Responder
 	LLUUID mSessionID;
 };
 
-BOOL LLIMFloater::inviteToSession(const std::vector<LLUUID>& ids)
+BOOL LLIMFloater::inviteToSession(const uuid_vec_t& ids)
 {
 	LLViewerRegion* region = gAgent.getRegion();
 	if (!region)
diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h
index 2f034d02b88a9f693590452a9764d7c3b7d8db89..763dd5655ba9c85e122651ece71327a42de9e687 100644
--- a/indra/newview/llimfloater.h
+++ b/indra/newview/llimfloater.h
@@ -129,7 +129,7 @@ class LLIMFloater : public LLTransientDockableFloater
 	BOOL dropCategory(LLInventoryCategory* category, BOOL drop);
 
 	BOOL isInviteAllowed() const;
-	BOOL inviteToSession(const std::vector<LLUUID>& agent_ids);
+	BOOL inviteToSession(const uuid_vec_t& agent_ids);
 	
 	static void		onInputEditorFocusReceived( LLFocusableElement* caller, void* userdata );
 	static void		onInputEditorFocusLost(LLFocusableElement* caller, void* userdata);
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 7a4febec20069d2bda6c74db2dc07fda6e527f00..e0f155a6a9a9b51fa0458af61a36fabb3e323a42 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -36,6 +36,7 @@
 
 #include "llfloaterreg.h"
 #include "llfontgl.h"
+#include "llgl.h"
 #include "llrect.h"
 #include "llerror.h"
 #include "llbutton.h"
@@ -80,6 +81,9 @@ const static std::string ADHOC_NAME_SUFFIX(" Conference");
 const static std::string NEARBY_P2P_BY_OTHER("nearby_P2P_by_other");
 const static std::string NEARBY_P2P_BY_AGENT("nearby_P2P_by_agent");
 
+/** Timeout of outgoing session initialization (in seconds) */
+const static U32 SESSION_INITIALIZATION_TIMEOUT = 30;
+
 std::string LLCallDialogManager::sPreviousSessionlName = "";
 LLIMModel::LLIMSession::SType LLCallDialogManager::sPreviousSessionType = LLIMModel::LLIMSession::P2P_SESSION;
 std::string LLCallDialogManager::sCurrentSessionlName = "";
@@ -91,6 +95,19 @@ const LLUUID LLOutgoingCallDialog::OCD_KEY = LLUUID("7CF78E11-0CFE-498D-ADB9-141
 //
 LLIMMgr* gIMMgr = NULL;
 
+
+BOOL LLSessionTimeoutTimer::tick()
+{
+	if (mSessionId.isNull()) return TRUE;
+
+	LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionId);
+	if (session && !session->mSessionInitialized)
+	{
+		gIMMgr->showSessionStartError("session_initialization_timed_out_error", mSessionId);
+	}
+	return TRUE;
+}
+
 void toast_callback(const LLSD& msg){
 	// do not show toast in busy mode or it goes from agent
 	if (gAgent.getBusy() || gAgent.getID() == msg["from_id"])
@@ -146,7 +163,7 @@ LLIMModel::LLIMModel()
 	addNewMsgCallback(toast_callback);
 }
 
-LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, const std::vector<LLUUID>& ids, bool voice)
+LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, const uuid_vec_t& ids, bool voice)
 :	mSessionID(session_id),
 	mName(name),
 	mType(type),
@@ -214,6 +231,11 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string&
 		//so we're already initialized
 		mSessionInitialized = true;
 	}
+	else
+	{
+		//tick returns TRUE - timer will be deleted after the tick
+		new LLSessionTimeoutTimer(mSessionID, SESSION_INITIALIZATION_TIMEOUT);
+	}
 
 	if (IM_NOTHING_SPECIAL == type)
 	{
@@ -423,7 +445,7 @@ LLIMModel::LLIMSession* LLIMModel::findIMSession(const LLUUID& session_id) const
 }
 
 //*TODO consider switching to using std::set instead of std::list for holding LLUUIDs across the whole code
-LLIMModel::LLIMSession* LLIMModel::findAdHocIMSession(const std::vector<LLUUID>& ids)
+LLIMModel::LLIMSession* LLIMModel::findAdHocIMSession(const uuid_vec_t& ids)
 {
 	S32 num = ids.size();
 	if (!num) return NULL;
@@ -440,7 +462,7 @@ LLIMModel::LLIMSession* LLIMModel::findAdHocIMSession(const std::vector<LLUUID>&
 
 		std::list<LLUUID> tmp_list(session->mInitialTargetIDs.begin(), session->mInitialTargetIDs.end());
 
-		std::vector<LLUUID>::const_iterator iter = ids.begin();
+		uuid_vec_t::const_iterator iter = ids.begin();
 		while (iter != ids.end())
 		{
 			tmp_list.remove(*iter);
@@ -571,7 +593,7 @@ void LLIMModel::testMessages()
 
 //session name should not be empty
 bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, 
-						   const LLUUID& other_participant_id, const std::vector<LLUUID>& ids, bool voice)
+						   const LLUUID& other_participant_id, const uuid_vec_t& ids, bool voice)
 {
 	if (name.empty())
 	{
@@ -596,7 +618,7 @@ bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, co
 
 bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, bool voice)
 {
-	std::vector<LLUUID> no_ids;
+	uuid_vec_t no_ids;
 	return newSession(session_id, name, type, other_participant_id, no_ids, voice);
 }
 
@@ -1002,7 +1024,7 @@ void LLIMModel::sendMessage(const std::string& utf8_text,
 		}
 		else
 		{
-			for(std::vector<LLUUID>::iterator it = session->mInitialTargetIDs.begin();
+			for(uuid_vec_t::iterator it = session->mInitialTargetIDs.begin();
 				it!=session->mInitialTargetIDs.end();++it)
 			{
 				const LLUUID id = *it;
@@ -1134,7 +1156,7 @@ class LLStartConferenceChatResponder : public LLHTTPClient::Responder
 bool LLIMModel::sendStartSession(
 	const LLUUID& temp_session_id,
 	const LLUUID& other_participant_id,
-	const std::vector<LLUUID>& ids,
+	const uuid_vec_t& ids,
 	EInstantMessage dialog)
 {
 	if ( dialog == IM_SESSION_GROUP_START )
@@ -1538,6 +1560,11 @@ LLCallDialog::LLCallDialog(const LLSD& payload)
 	setDocked(true);
 }
 
+LLCallDialog::~LLCallDialog()
+{
+	LLUI::removePopup(this);
+}
+
 void LLCallDialog::getAllowedRect(LLRect& rect)
 {
 	rect = gViewerWindow->getWorldViewRectScaled();
@@ -1591,7 +1618,7 @@ void LLCallDialog::onOpen(const LLSD& key)
 	LLDockableFloater::onOpen(key);
 
 	// it should be over the all floaters. EXT-5116
-	gFloaterView->bringToFront(this, FALSE);
+	LLUI::addPopup(this);
 }
 
 void LLCallDialog::setIcon(const LLSD& session_id, const LLSD& participant_id)
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index f1693d0e17564b64843e5bc6a1d2b3183a76eac3..ffa8a167974dd38c2dbd7805fa74855d13451caa 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -34,6 +34,7 @@
 #define LL_LLIMVIEW_H
 
 #include "lldockablefloater.h"
+#include "lleventtimer.h"
 #include "llinstantmessage.h"
 
 #include "lllogchat.h"
@@ -45,7 +46,24 @@ class LLFriendObserver;
 class LLCallDialogManager;	
 class LLIMSpeakerMgr;
 
+/**
+ * Timeout Timer for outgoing Ad-Hoc/Group IM sessions which being initialized by the server
+ */
+class LLSessionTimeoutTimer : public LLEventTimer
+{
+public:
+	LLSessionTimeoutTimer(const LLUUID& session_id, F32 period) : LLEventTimer(period), mSessionId(session_id) {}
+	virtual ~LLSessionTimeoutTimer() {};
+	/* virtual */ BOOL tick();
+
+private:
+	LLUUID mSessionId;
+};
 
+
+/**
+ * Model (MVC) for IM Sessions
+ */
 class LLIMModel :  public LLSingleton<LLIMModel>
 {
 public:
@@ -61,7 +79,7 @@ class LLIMModel :  public LLSingleton<LLIMModel>
 		} SType;
 
 		LLIMSession(const LLUUID& session_id, const std::string& name, 
-			const EInstantMessage& type, const LLUUID& other_participant_id, const std::vector<LLUUID>& ids, bool voice);
+			const EInstantMessage& type, const LLUUID& other_participant_id, const uuid_vec_t& ids, bool voice);
 		virtual ~LLIMSession();
 
 		void sessionInitReplyReceived(const LLUUID& new_session_id);
@@ -93,7 +111,7 @@ class LLIMModel :  public LLSingleton<LLIMModel>
 		EInstantMessage mType;
 		SType mSessionType;
 		LLUUID mOtherParticipantID;
-		std::vector<LLUUID> mInitialTargetIDs;
+		uuid_vec_t mInitialTargetIDs;
 		std::string mHistoryFileName;
 
 		// connection to voice channel state change signal
@@ -152,7 +170,7 @@ class LLIMModel :  public LLSingleton<LLIMModel>
 	 * Find an Ad-Hoc IM Session with specified participants
 	 * @return first found Ad-Hoc session or NULL if the session does not exist
 	 */
-	LLIMSession* findAdHocIMSession(const std::vector<LLUUID>& ids);
+	LLIMSession* findAdHocIMSession(const uuid_vec_t& ids);
 
 	/**
 	 * Rebind session data to a new session id.
@@ -167,7 +185,7 @@ class LLIMModel :  public LLSingleton<LLIMModel>
 	 * @param name session name should not be empty, will return false if empty
 	 */
 	bool newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, 
-		const std::vector<LLUUID>& ids, bool voice = false);
+		const uuid_vec_t& ids, bool voice = false);
 
 	bool newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type,
 		const LLUUID& other_participant_id, bool voice = false);
@@ -255,7 +273,7 @@ class LLIMModel :  public LLSingleton<LLIMModel>
 
 	static void sendLeaveSession(const LLUUID& session_id, const LLUUID& other_participant_id);
 	static bool sendStartSession(const LLUUID& temp_session_id, const LLUUID& other_participant_id,
-						  const std::vector<LLUUID>& ids, EInstantMessage dialog);
+						  const uuid_vec_t& ids, EInstantMessage dialog);
 	static void sendTypingState(LLUUID session_id, LLUUID other_participant_id, BOOL typing);
 	static void sendMessage(const std::string& utf8_text, const LLUUID& im_session_id,
 								const LLUUID& other_participant_id, EInstantMessage dialog);
@@ -477,7 +495,7 @@ class LLCallDialog : public LLDockableFloater
 {
 public:
 	LLCallDialog(const LLSD& payload);
-	~LLCallDialog() {}
+	~LLCallDialog();
 
 	virtual BOOL postBuild();
 
diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
index 35cb9b3468ca89527feff770055f1e19421b47d6..94ea236757281f92285425b032e5e53c0c44b82b 100644
--- a/indra/newview/llinspectavatar.cpp
+++ b/indra/newview/llinspectavatar.cpp
@@ -137,6 +137,7 @@ class LLInspectAvatar : public LLInspect, LLTransientFloater
 	void onVolumeChange(const LLSD& data);
 	bool enableMute();
 	bool enableUnmute();
+	bool enableTeleportOffer();
 
 	// Is used to determine if "Add friend" option should be enabled in gear menu
 	bool isNotFriend();
@@ -235,6 +236,7 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd)
 		boost::bind(&LLInspectAvatar::onVisibleZoomIn, this));
 	mEnableCallbackRegistrar.add("InspectAvatar.Gear.Enable", boost::bind(&LLInspectAvatar::isNotFriend, this));
 	mEnableCallbackRegistrar.add("InspectAvatar.Gear.EnableCall", boost::bind(&LLAvatarActions::canCall));
+	mEnableCallbackRegistrar.add("InspectAvatar.Gear.EnableTeleportOffer", boost::bind(&LLInspectAvatar::enableTeleportOffer, this));
 	mEnableCallbackRegistrar.add("InspectAvatar.EnableMute", boost::bind(&LLInspectAvatar::enableMute, this));
 	mEnableCallbackRegistrar.add("InspectAvatar.EnableUnmute", boost::bind(&LLInspectAvatar::enableUnmute, this));
 
@@ -764,6 +766,11 @@ bool LLInspectAvatar::enableUnmute()
 		}
 }
 
+bool LLInspectAvatar::enableTeleportOffer()
+{
+	return LLAvatarActions::canOfferTeleport(mAvatarID);
+}
+
 //////////////////////////////////////////////////////////////////////////////
 // LLInspectAvatarUtil
 //////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index da21939a617a4cbac083b144864e2ce9d5847ac7..b552b5ac0735e949bdce973a8968852880c016f2 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -31,11 +31,11 @@
  */
 
 #include "llviewerprecompiledheaders.h"
+#include "llinventorybridge.h"
+
 // external projects
 #include "lltransfersourceasset.h"
 
-#include "llinventorybridge.h"
-
 #include "llagent.h"
 #include "llagentcamera.h"
 #include "llagentwearables.h"
@@ -50,8 +50,10 @@
 #include "llimfloater.h"
 #include "llimview.h"
 #include "llinventoryclipboard.h"
+#include "llinventorydefines.h"
 #include "llinventoryfunctions.h"
 #include "llinventorymodel.h"
+#include "llinventorymodelbackgroundfetch.h"
 #include "llinventorypanel.h"
 #include "llnotifications.h"
 #include "llnotificationsutil.h"
@@ -69,6 +71,18 @@
 #include "llwearablelist.h"
 #include "llpaneloutfitsinventory.h"
 
+typedef std::pair<LLUUID, LLUUID> two_uuids_t;
+typedef std::list<two_uuids_t> two_uuids_list_t;
+
+struct LLMoveInv
+{
+	LLUUID mObjectID;
+	LLUUID mCategoryID;
+	two_uuids_list_t mMoveList;
+	void (*mCallback)(S32, void*);
+	void* mUserData;
+};
+
 using namespace LLOldEvents;
 
 // Helpers
@@ -92,6 +106,7 @@ void remove_inventory_category_from_avatar(LLInventoryCategory* category);
 void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_id);
 bool move_task_inventory_callback(const LLSD& notification, const LLSD& response, LLMoveInv*);
 bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& response);
+void teleport_via_landmark(const LLUUID& asset_id);
 
 std::string ICON_NAME[ICON_NAME_COUNT] =
 {
@@ -136,8 +151,12 @@ std::string ICON_NAME[ICON_NAME_COUNT] =
 // |        LLInvFVBridge                            |
 // +=================================================+
 
-LLInvFVBridge::LLInvFVBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
-mUUID(uuid), mInvType(LLInventoryType::IT_NONE)
+LLInvFVBridge::LLInvFVBridge(LLInventoryPanel* inventory, 
+							 LLFolderView* root,
+							 const LLUUID& uuid) :
+	mUUID(uuid), 
+	mRoot(root),
+	mInvType(LLInventoryType::IT_NONE)
 {
 	mInventoryPanel = inventory->getHandle();
 }
@@ -193,7 +212,7 @@ BOOL LLInvFVBridge::isItemRemovable() const
 	}
 
 	// Disable delete from COF folder; have users explicitly choose "detach/take off".
-	if (LLAppearanceManager::instance().getIsProtectedCOFItem(mUUID))
+	if (LLAppearanceMgr::instance().getIsProtectedCOFItem(mUUID))
 	{
 		return FALSE;
 	}
@@ -236,7 +255,7 @@ void LLInvFVBridge::showProperties()
 
 	// Disable old properties floater; this is replaced by the sidepanel.
 	/*
-	LLFloaterReg::showInstance("properties", mUUID);
+	  LLFloaterReg::showInstance("properties", mUUID);
 	*/
 }
 
@@ -260,7 +279,7 @@ void LLInvFVBridge::removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batc
 		{
 			if(LLAssetType::AT_GESTURE == item->getType())
 			{
-				LLGestureManager::instance().deactivateGesture(item->getUUID());
+				LLGestureMgr::instance().deactivateGesture(item->getUUID());
 			}
 		}
 	}
@@ -276,7 +295,7 @@ void LLInvFVBridge::removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batc
 			{
 				if(LLAssetType::AT_GESTURE == descendent_items[j]->getType())
 				{
-					LLGestureManager::instance().deactivateGesture(descendent_items[j]->getUUID());
+					LLGestureMgr::instance().deactivateGesture(descendent_items[j]->getUUID());
 				}
 			}
 		}
@@ -297,7 +316,7 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*
 	LLMessageSystem* msg = gMessageSystem;
 	const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
 	LLViewerInventoryItem* item = NULL;
-	std::vector<LLUUID> move_ids;
+	uuid_vec_t move_ids;
 	LLInventoryModel::update_map_t update;
 	bool start_new_message = true;
 	S32 count = batch.count();
@@ -398,8 +417,8 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*
 	}
 
 	// move everything.
-	std::vector<LLUUID>::iterator it = move_ids.begin();
-	std::vector<LLUUID>::iterator end = move_ids.end();
+	uuid_vec_t::iterator it = move_ids.begin();
+	uuid_vec_t::iterator end = move_ids.end();
 	for(; it != end; ++it)
 	{
 		gInventory.moveObject((*it), trash_id);
@@ -484,8 +503,8 @@ BOOL LLInvFVBridge::isClipboardPasteableAsLink() const
 }
 
 void hide_context_entries(LLMenuGL& menu, 
-						const menuentry_vec_t &entries_to_show,
-						const menuentry_vec_t &disabled_entries)
+						  const menuentry_vec_t &entries_to_show,
+						  const menuentry_vec_t &disabled_entries)
 {
 	const LLView::child_list_t *list = menu.getChildList();
 
@@ -593,7 +612,7 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
 				LLViewerInventoryItem* inv_item = gInventory.getItem(mUUID);
 				if (inv_item)
 				{
-					is_asset_knowable = is_asset_id_knowable(inv_item->getType());
+					is_asset_knowable = LLAssetType::lookupIsAssetIDKnowable(inv_item->getType());
 				}
 				if ( !is_asset_knowable // disable menu item for Inventory items with unknown asset. EXT-5308
 					 || (! ( isItemPermissive() || gAgent.isGodlike() ) )
@@ -729,7 +748,7 @@ BOOL LLInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const
 
 		if (*type == DAD_CATEGORY)
 		{
-			gInventory.startBackgroundFetch(obj->getUUID());
+			LLInventoryModelBackgroundFetch::instance().start(obj->getUUID());
 		}
 
 		rv = TRUE;
@@ -802,7 +821,7 @@ BOOL LLInvFVBridge::isAgentInventory() const
 
 BOOL LLInvFVBridge::isCOFFolder() const
 {
-	return LLAppearanceManager::instance().getIsInCOF(mUUID);
+	return LLAppearanceMgr::instance().getIsInCOF(mUUID);
 }
 
 BOOL LLInvFVBridge::isItemPermissive() const
@@ -859,21 +878,11 @@ void LLInvFVBridge::changeCategoryParent(LLInventoryModel* model,
 	model->notifyObservers();
 }
 
-
-const std::string safe_inv_type_lookup(LLInventoryType::EType inv_type)
-{
-	const std::string rv= LLInventoryType::lookup(inv_type);
-	if(rv.empty())
-	{
-		return std::string("<invalid>");
-	}
-	return rv;
-}
-
 LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
 										   LLAssetType::EType actual_asset_type,
 										   LLInventoryType::EType inv_type,
 										   LLInventoryPanel* inventory,
+										   LLFolderView* root,
 										   const LLUUID& uuid,
 										   U32 flags)
 {
@@ -883,104 +892,104 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type,
 		case LLAssetType::AT_TEXTURE:
 			if(!(inv_type == LLInventoryType::IT_TEXTURE || inv_type == LLInventoryType::IT_SNAPSHOT))
 			{
-				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
 			}
-			new_listener = new LLTextureBridge(inventory, uuid, inv_type);
+			new_listener = new LLTextureBridge(inventory, root, uuid, inv_type);
 			break;
 
 		case LLAssetType::AT_SOUND:
 			if(!(inv_type == LLInventoryType::IT_SOUND))
 			{
-				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
 			}
-			new_listener = new LLSoundBridge(inventory, uuid);
+			new_listener = new LLSoundBridge(inventory, root, uuid);
 			break;
 
 		case LLAssetType::AT_LANDMARK:
 			if(!(inv_type == LLInventoryType::IT_LANDMARK))
 			{
-				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
 			}
-			new_listener = new LLLandmarkBridge(inventory, uuid, flags);
+			new_listener = new LLLandmarkBridge(inventory, root, uuid, flags);
 			break;
 
 		case LLAssetType::AT_CALLINGCARD:
 			if(!(inv_type == LLInventoryType::IT_CALLINGCARD))
 			{
-				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
 			}
-			new_listener = new LLCallingCardBridge(inventory, uuid);
+			new_listener = new LLCallingCardBridge(inventory, root, uuid);
 			break;
 
 		case LLAssetType::AT_SCRIPT:
 			if(!(inv_type == LLInventoryType::IT_LSL))
 			{
-				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
 			}
-			new_listener = new LLScriptBridge(inventory, uuid);
+			new_listener = new LLScriptBridge(inventory, root, uuid);
 			break;
 
 		case LLAssetType::AT_OBJECT:
 			if(!(inv_type == LLInventoryType::IT_OBJECT || inv_type == LLInventoryType::IT_ATTACHMENT))
 			{
-				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
 			}
-			new_listener = new LLObjectBridge(inventory, uuid, inv_type, flags);
+			new_listener = new LLObjectBridge(inventory, root, uuid, inv_type, flags);
 			break;
 
 		case LLAssetType::AT_NOTECARD:
 			if(!(inv_type == LLInventoryType::IT_NOTECARD))
 			{
-				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
 			}
-			new_listener = new LLNotecardBridge(inventory, uuid);
+			new_listener = new LLNotecardBridge(inventory, root, uuid);
 			break;
 
 		case LLAssetType::AT_ANIMATION:
 			if(!(inv_type == LLInventoryType::IT_ANIMATION))
 			{
-				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
 			}
-			new_listener = new LLAnimationBridge(inventory, uuid);
+			new_listener = new LLAnimationBridge(inventory, root, uuid);
 			break;
 
 		case LLAssetType::AT_GESTURE:
 			if(!(inv_type == LLInventoryType::IT_GESTURE))
 			{
-				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
 			}
-			new_listener = new LLGestureBridge(inventory, uuid);
+			new_listener = new LLGestureBridge(inventory, root, uuid);
 			break;
 
 		case LLAssetType::AT_LSL_TEXT:
 			if(!(inv_type == LLInventoryType::IT_LSL))
 			{
-				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
 			}
-			new_listener = new LLLSLTextBridge(inventory, uuid);
+			new_listener = new LLLSLTextBridge(inventory, root, uuid);
 			break;
 
 		case LLAssetType::AT_CLOTHING:
 		case LLAssetType::AT_BODYPART:
 			if(!(inv_type == LLInventoryType::IT_WEARABLE))
 			{
-				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+				llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
 			}
-			new_listener = new LLWearableBridge(inventory, uuid, asset_type, inv_type, (EWearableType)flags);
+			new_listener = new LLWearableBridge(inventory, root, uuid, asset_type, inv_type, (EWearableType)flags);
 			break;
 		case LLAssetType::AT_CATEGORY:
 			if (actual_asset_type == LLAssetType::AT_LINK_FOLDER)
 			{
 				// Create a link folder handler instead.
-				new_listener = new LLLinkFolderBridge(inventory, uuid);
+				new_listener = new LLLinkFolderBridge(inventory, root, uuid);
 				break;
 			}
-			new_listener = new LLFolderBridge(inventory, uuid);
+			new_listener = new LLFolderBridge(inventory, root, uuid);
 			break;
 		case LLAssetType::AT_LINK:
 		case LLAssetType::AT_LINK_FOLDER:
 			// Only should happen for broken links.
-			new_listener = new LLLinkItemBridge(inventory, uuid);
+			new_listener = new LLLinkItemBridge(inventory, root, uuid);
 			break;
 		default:
 			llinfos << "Unhandled asset type (llassetstorage.h): "
@@ -1029,26 +1038,28 @@ LLInvFVBridge* LLInventoryFVBridgeBuilder::createBridge(LLAssetType::EType asset
 														LLAssetType::EType actual_asset_type,
 														LLInventoryType::EType inv_type,
 														LLInventoryPanel* inventory,
+														LLFolderView* root,
 														const LLUUID& uuid,
 														U32 flags /* = 0x00 */) const
 {
 	return LLInvFVBridge::createBridge(asset_type,
-		actual_asset_type,
-		inv_type,
-		inventory,
-		uuid,
-		flags);
+									   actual_asset_type,
+									   inv_type,
+									   inventory,
+									   root,
+									   uuid,
+									   flags);
 }
 
 // +=================================================+
 // |        LLItemBridge                             |
 // +=================================================+
 
-void LLItemBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLItemBridge::performAction(LLInventoryModel* model, std::string action)
 {
 	if ("goto" == action)
 	{
-		gotoItem(folder);
+		gotoItem();
 	}
 
 	if ("open" == action)
@@ -1099,7 +1110,7 @@ void LLItemBridge::performAction(LLFolderView* folder, LLInventoryModel* model,
 		LLInventoryItem* itemp = model->getItem(mUUID);
 		if (!itemp) return;
 
-		LLFolderViewItem* folder_view_itemp = folder->getItemByID(itemp->getParentUUID());
+		LLFolderViewItem* folder_view_itemp = mRoot->getItemByID(itemp->getParentUUID());
 		if (!folder_view_itemp) return;
 
 		folder_view_itemp->getListener()->pasteFromClipboard();
@@ -1111,7 +1122,7 @@ void LLItemBridge::performAction(LLFolderView* folder, LLInventoryModel* model,
 		LLInventoryItem* itemp = model->getItem(mUUID);
 		if (!itemp) return;
 
-		LLFolderViewItem* folder_view_itemp = folder->getItemByID(itemp->getParentUUID());
+		LLFolderViewItem* folder_view_itemp = mRoot->getItemByID(itemp->getParentUUID());
 		if (!folder_view_itemp) return;
 
 		folder_view_itemp->getListener()->pasteLinkFromClipboard();
@@ -1180,7 +1191,7 @@ void LLItemBridge::restoreToWorld()
 	}
 }
 
-void LLItemBridge::gotoItem(LLFolderView *folder)
+void LLItemBridge::gotoItem()
 {
 	LLInventoryObject *obj = getInventoryObject();
 	if (obj && obj->getIsLinkType())
@@ -1506,11 +1517,7 @@ BOOL LLFolderBridge::isItemRemovable() const
 		return FALSE;
 	}
 
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if(!avatarp)
-	{
-		return FALSE;
-	}
+	if (!isAgentAvatarValid()) return FALSE;
 
 	LLInventoryCategory* category = model->getCategory(mUUID);
 	if(!category)
@@ -1661,8 +1668,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
 	LLInventoryModel* model = getInventoryModel();
 	if(!model) return FALSE;
 
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if(!avatarp) return FALSE;
+	if (!isAgentAvatarValid()) return FALSE;
 
 	// cannot drag categories into library
 	if(!isAgentInventory())
@@ -1686,7 +1692,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
 		// Is the destination the trash?
 		const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
 		BOOL move_is_into_trash = (mUUID == trash_id)
-				|| model->isObjectDescendentOf(mUUID, trash_id);
+			|| model->isObjectDescendentOf(mUUID, trash_id);
 		BOOL is_movable = (!LLFolderType::lookupIsProtectedType(inv_cat->getPreferredType()));
 		const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
 		BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
@@ -1734,12 +1740,11 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
 			}
 		}
 
-
-		accept =	is_movable
-					&& (mUUID != cat_id)								// Can't move a folder into itself
-					&& (mUUID != inv_cat->getParentUUID())				// Avoid moves that would change nothing
-					&& !(model->isObjectDescendentOf(mUUID, cat_id));	// Avoid circularity
-		if(accept && drop)
+		accept = is_movable
+			&& (mUUID != cat_id)								// Can't move a folder into itself
+			&& (mUUID != inv_cat->getParentUUID())				// Avoid moves that would change nothing
+			&& !(model->isObjectDescendentOf(mUUID, cat_id));	// Avoid circularity
+		if (accept && drop)
 		{
 			// Look for any gestures and deactivate them
 			if (move_is_into_trash)
@@ -1748,9 +1753,9 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
 				{
 					LLInventoryItem* item = descendent_items[i];
 					if (item->getType() == LLAssetType::AT_GESTURE
-						&& LLGestureManager::instance().isGestureActive(item->getUUID()))
+						&& LLGestureMgr::instance().isGestureActive(item->getUUID()))
 					{
-						LLGestureManager::instance().deactivateGesture(item->getUUID());
+						LLGestureMgr::instance().deactivateGesture(item->getUUID());
 					}
 				}
 			}
@@ -1763,7 +1768,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
 					{
 						// traverse category and add all contents to currently worn.
 						BOOL append = true;
-						LLAppearanceManager::instance().wearInventoryCategory(inv_cat, false, append);
+						LLAppearanceMgr::instance().wearInventoryCategory(inv_cat, false, append);
 					}
 					else
 					{
@@ -1771,28 +1776,28 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
 						LLInventoryModel::cat_array_t cats;
 						LLInventoryModel::item_array_t items;
 						gInventory.collectDescendents(inv_cat->getUUID(), cats, items, LLInventoryModel::EXCLUDE_TRASH);
-						LLAppearanceManager::instance().linkAll(mUUID,items,NULL);
+						LLAppearanceMgr::instance().linkAll(mUUID,items,NULL);
 					}
 				}
 				else
 				{
 #if SUPPORT_ENSEMBLES
-				// BAP - should skip if dup.
-				if (move_is_into_current_outfit)
-				{
-					LLAppearanceManager::instance().addEnsembleLink(inv_cat);
-				}
-				else
-				{
-					LLPointer<LLInventoryCallback> cb = NULL;
-					link_inventory_item(
-						gAgent.getID(),
-						inv_cat->getUUID(),
-						mUUID,
-						inv_cat->getName(),
-						LLAssetType::AT_LINK_FOLDER,
-						cb);
-				}
+					// BAP - should skip if dup.
+					if (move_is_into_current_outfit)
+					{
+						LLAppearanceMgr::instance().addEnsembleLink(inv_cat);
+					}
+					else
+					{
+						LLPointer<LLInventoryCallback> cb = NULL;
+						link_inventory_item(
+							gAgent.getID(),
+							inv_cat->getUUID(),
+							mUUID,
+							inv_cat->getName(),
+							LLAssetType::AT_LINK_FOLDER,
+							cb);
+					}
 #endif
 				}
 			}
@@ -1809,7 +1814,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
 			}
 		}
 	}
-	else if(LLToolDragAndDrop::SOURCE_WORLD == source)
+	else if (LLToolDragAndDrop::SOURCE_WORLD == source)
 	{
 		// content category has same ID as object itself
 		LLUUID object_id = inv_cat->getUUID();
@@ -1854,7 +1859,7 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
 
 	// this folder is coming from an object, as there is only one folder in an object, the root,
 	// we need to collect the entire contents and handle them as a group
-	InventoryObjectList inventory_objects;
+	LLInventoryObject::object_list_t inventory_objects;
 	object->getInventoryContents(inventory_objects);
 
 	if (inventory_objects.empty())
@@ -1868,8 +1873,8 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
 
 	// coming from a task. Need to figure out if the person can
 	// move/copy this item.
-	InventoryObjectList::iterator it = inventory_objects.begin();
-	InventoryObjectList::iterator end = inventory_objects.end();
+	LLInventoryObject::object_list_t::iterator it = inventory_objects.begin();
+	LLInventoryObject::object_list_t::iterator end = inventory_objects.end();
 	for ( ; it != end; ++it)
 	{
 		// coming from a task. Need to figure out if the person can
@@ -1899,7 +1904,7 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
 	if(drop && accept)
 	{
 		it = inventory_objects.begin();
-		InventoryObjectList::iterator first_it = inventory_objects.begin();
+		LLInventoryObject::object_list_t::iterator first_it = inventory_objects.begin();
 		LLMoveInv* move_inv = new LLMoveInv;
 		move_inv->mObjectID = object_id;
 		move_inv->mCategoryID = category_id;
@@ -1927,50 +1932,6 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
 	return accept;
 }
 
-bool LLFindCOFValidItems::operator()(LLInventoryCategory* cat,
-									 LLInventoryItem* item)
-{
-	// Valid COF items are:
-	// - links to wearables (body parts or clothing)
-	// - links to attachments
-	// - links to gestures
-	// - links to ensemble folders
-	LLViewerInventoryItem *linked_item = ((LLViewerInventoryItem*)item)->getLinkedItem();
-	if (linked_item)
-	{
-		LLAssetType::EType type = linked_item->getType();
-		return (type == LLAssetType::AT_CLOTHING ||
-				type == LLAssetType::AT_BODYPART ||
-				type == LLAssetType::AT_GESTURE ||
-				type == LLAssetType::AT_OBJECT);
-	}
-	else
-	{
-		LLViewerInventoryCategory *linked_category = ((LLViewerInventoryItem*)item)->getLinkedCategory();
-		// BAP remove AT_NONE support after ensembles are fully working?
-		return (linked_category &&
-				((linked_category->getPreferredType() == LLFolderType::FT_NONE) ||
-				 (LLFolderType::lookupIsEnsembleType(linked_category->getPreferredType()))));
-	}
-}
-
-
-bool LLFindWearables::operator()(LLInventoryCategory* cat,
-								 LLInventoryItem* item)
-{
-	if(item)
-	{
-		if((item->getType() == LLAssetType::AT_CLOTHING)
-		   || (item->getType() == LLAssetType::AT_BODYPART))
-		{
-			return TRUE;
-		}
-	}
-	return FALSE;
-}
-
-
-
 //Used by LLFolderBridge as callback for directory recursion.
 class LLRightClickInventoryFetchObserver : public LLInventoryFetchObserver
 {
@@ -1981,7 +1942,7 @@ class LLRightClickInventoryFetchObserver : public LLInventoryFetchObserver
 	LLRightClickInventoryFetchObserver(const LLUUID& cat_id, bool copy_items) :
 		mCatID(cat_id),
 		mCopyItems(copy_items)
-		{ };
+	{ };
 	virtual void done()
 	{
 		// we've downloaded all the items, so repaint the dialog
@@ -2013,7 +1974,7 @@ void LLRightClickInventoryFetchDescendentsObserver::done()
 {
 	// Avoid passing a NULL-ref as mCompleteFolders.front() down to
 	// gInventory.collectDescendents()
-	if( mCompleteFolders.empty() )
+	if( mComplete.empty() )
 	{
 		llwarns << "LLRightClickInventoryFetchDescendentsObserver::done with empty mCompleteFolders" << llendl;
 		dec_busy_count();
@@ -2027,7 +1988,7 @@ void LLRightClickInventoryFetchDescendentsObserver::done()
 	// happen.
 	LLInventoryModel::cat_array_t cat_array;
 	LLInventoryModel::item_array_t item_array;
-	gInventory.collectDescendents(mCompleteFolders.front(),
+	gInventory.collectDescendents(mComplete.front(),
 								  cat_array,
 								  item_array,
 								  LLInventoryModel::EXCLUDE_TRASH);
@@ -2046,8 +2007,8 @@ void LLRightClickInventoryFetchDescendentsObserver::done()
 #endif
 
 	LLRightClickInventoryFetchObserver* outfit;
-	outfit = new LLRightClickInventoryFetchObserver(mCompleteFolders.front(), mCopyItems);
-	LLInventoryFetchObserver::item_ref_t ids;
+	outfit = new LLRightClickInventoryFetchObserver(mComplete.front(), mCopyItems);
+	uuid_vec_t ids;
 	for(S32 i = 0; i < count; ++i)
 	{
 		ids.push_back(item_array.get(i)->getUUID());
@@ -2065,19 +2026,19 @@ void LLRightClickInventoryFetchDescendentsObserver::done()
 	inc_busy_count();
 
 	// do the fetch
-	outfit->fetchItems(ids);
+	outfit->fetch(ids);
 	outfit->done();				//Not interested in waiting and this will be right 99% of the time.
 //Uncomment the following code for laggy Inventory UI.
 /*	if(outfit->isEverythingComplete())
 	{
-		// everything is already here - call done.
-		outfit->done();
+	// everything is already here - call done.
+	outfit->done();
 	}
 	else
 	{
-		// it's all on it's way - add an observer, and the inventory
-		// will call done for us when everything is here.
-		gInventory.addObserver(outfit);
+	// it's all on it's way - add an observer, and the inventory
+	// will call done for us when everything is here.
+	gInventory.addObserver(outfit);
 	}*/
 }
 
@@ -2091,7 +2052,8 @@ void LLRightClickInventoryFetchDescendentsObserver::done()
 class LLInventoryCopyAndWearObserver : public LLInventoryObserver
 {
 public:
-	LLInventoryCopyAndWearObserver(const LLUUID& cat_id, int count) :mCatID(cat_id), mContentsCount(count), mFolderAdded(FALSE) {}
+	LLInventoryCopyAndWearObserver(const LLUUID& cat_id, int count) :
+		mCatID(cat_id), mContentsCount(count), mFolderAdded(FALSE) {}
 	virtual ~LLInventoryCopyAndWearObserver() {}
 	virtual void changed(U32 mask);
 
@@ -2130,7 +2092,7 @@ void LLInventoryCopyAndWearObserver::changed(U32 mask)
 			if (NULL == category)
 			{
 				llwarns << "gInventory.getCategory(" << mCatID
-					<< ") was NULL" << llendl;
+						<< ") was NULL" << llendl;
 			}
 			else
 			{
@@ -2138,7 +2100,7 @@ void LLInventoryCopyAndWearObserver::changed(U32 mask)
 				    mContentsCount)
 				{
 					gInventory.removeObserver(this);
-					LLAppearanceManager::instance().wearInventoryCategory(category, FALSE, TRUE);
+					LLAppearanceMgr::instance().wearInventoryCategory(category, FALSE, TRUE);
 					delete this;
 				}
 			}
@@ -2149,11 +2111,11 @@ void LLInventoryCopyAndWearObserver::changed(U32 mask)
 
 
 
-void LLFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLFolderBridge::performAction(LLInventoryModel* model, std::string action)
 {
 	if ("open" == action)
 	{
-		LLFolderViewFolder *f = dynamic_cast<LLFolderViewFolder *>(folder->getItemByID(mUUID));
+		LLFolderViewFolder *f = dynamic_cast<LLFolderViewFolder *>(mRoot->getItemByID(mUUID));
 		if (f)
 		{
 			f->setOpen(TRUE);
@@ -2188,7 +2150,7 @@ void LLFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model
 		if(!model) return;
 		LLViewerInventoryCategory* cat = getCategory();
 		if(!cat) return;
-		LLAppearanceManager::instance().addEnsembleLink(cat,true);
+		LLAppearanceMgr::instance().addEnsembleLink(cat,true);
 		return;
 	}
 #endif
@@ -2418,9 +2380,9 @@ bool LLFolderBridge::removeItemResponse(const LLSD& notification, const LLSD& re
 			const LLViewerInventoryItem* item = (*iter);
 			const LLUUID& item_id = item->getUUID();
 			if (item->getType() == LLAssetType::AT_GESTURE
-				&& LLGestureManager::instance().isGestureActive(item_id))
+				&& LLGestureMgr::instance().isGestureActive(item_id))
 			{
-				LLGestureManager::instance().deactivateGesture(item_id);
+				LLGestureMgr::instance().deactivateGesture(item_id);
 			}
 		}
 		
@@ -2506,16 +2468,16 @@ void LLFolderBridge::pasteLinkFromClipboard()
 			}
 			else
 #endif
-			if (LLInventoryItem *item = model->getItem(object_id))
-			{
-				link_inventory_item(
-					gAgent.getID(),
-					item->getLinkedUUID(),
-					parent_id,
-					item->getName(),
-					LLAssetType::AT_LINK,
-					LLPointer<LLInventoryCallback>(NULL));
-			}
+				if (LLInventoryItem *item = model->getItem(object_id))
+				{
+					link_inventory_item(
+						gAgent.getID(),
+						item->getLinkedUUID(),
+						parent_id,
+						item->getName(),
+						LLAssetType::AT_LINK,
+						LLPointer<LLInventoryCallback>(NULL));
+				}
 		}
 	}
 }
@@ -2540,7 +2502,7 @@ void LLFolderBridge::folderOptionsMenu()
 	const bool is_system_folder = LLFolderType::lookupIsProtectedType(type);
 	// BAP change once we're no longer treating regular categories as ensembles.
 	const bool is_ensemble = (type == LLFolderType::FT_NONE ||
-				  LLFolderType::lookupIsEnsembleType(type));
+							  LLFolderType::lookupIsEnsembleType(type));
 
 	// calling card related functionality for folders.
 
@@ -2670,10 +2632,10 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 	const LLUUID lost_and_found_id = model->findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
 
 	if (lost_and_found_id == mUUID)
-	  {
+	{
 		// This is the lost+found folder.
-		  mItems.push_back(std::string("Empty Lost And Found"));
-	  }
+		mItems.push_back(std::string("Empty Lost And Found"));
+	}
 
 	if(trash_id == mUUID)
 	{
@@ -2723,7 +2685,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 
 				addDeleteContextMenuOptions(mItems, mDisabledItems);
 				// EXT-4030: disallow deletion of currently worn outfit
-				const LLViewerInventoryItem *base_outfit_link = LLAppearanceManager::instance().getBaseOutfitLink();
+				const LLViewerInventoryItem *base_outfit_link = LLAppearanceMgr::instance().getBaseOutfitLink();
 				if (base_outfit_link && (cat == base_outfit_link->getLinkedCategory()))
 				{
 					mDisabledItems.push_back(std::string("Delete"));
@@ -2755,13 +2717,13 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 		sSelf = this;
 		LLRightClickInventoryFetchDescendentsObserver* fetch = new LLRightClickInventoryFetchDescendentsObserver(FALSE);
 
-		LLInventoryFetchDescendentsObserver::folder_ref_t folders;
+		uuid_vec_t folders;
 		LLViewerInventoryCategory* category = (LLViewerInventoryCategory*)model->getCategory(mUUID);
 		if (category)
 		{
 			folders.push_back(category->getUUID());
 		}
-		fetch->fetchDescendents(folders);
+		fetch->fetch(folders);
 		inc_busy_count();
 		if(fetch->isEverythingComplete())
 		{
@@ -2958,10 +2920,10 @@ void LLFolderBridge::createWearable(const LLUUID &parent_id, EWearableType type)
 	LLAssetType::EType asset_type = wearable->getAssetType();
 	LLInventoryType::EType inv_type = LLInventoryType::IT_WEARABLE;
 	create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
-		parent_id, wearable->getTransactionID(), wearable->getName(),
-		wearable->getDescription(), asset_type, inv_type, wearable->getType(),
-		wearable->getPermissions().getMaskNextOwner(),
-		LLPointer<LLInventoryCallback>(NULL));
+						  parent_id, wearable->getTransactionID(), wearable->getName(),
+						  wearable->getDescription(), asset_type, inv_type, wearable->getType(),
+						  wearable->getPermissions().getMaskNextOwner(),
+						  LLPointer<LLInventoryCallback>(NULL));
 }
 
 void LLFolderBridge::modifyOutfit(BOOL append)
@@ -2971,7 +2933,7 @@ void LLFolderBridge::modifyOutfit(BOOL append)
 	LLViewerInventoryCategory* cat = getCategory();
 	if(!cat) return;
 
-	LLAppearanceManager::instance().wearInventoryCategory( cat, FALSE, append );
+	LLAppearanceMgr::instance().wearInventoryCategory( cat, FALSE, append );
 }
 
 // helper stuff
@@ -2985,7 +2947,7 @@ bool move_task_inventory_callback(const LLSD& notification, const LLSD& response
 	{
 		if (cat_and_wear && cat_and_wear->mWear)
 		{
-			InventoryObjectList inventory_objects;
+			LLInventoryObject::object_list_t inventory_objects;
 			object->getInventoryContents(inventory_objects);
 			int contents_count = inventory_objects.size()-1; //subtract one for containing folder
 
@@ -2995,8 +2957,8 @@ bool move_task_inventory_callback(const LLSD& notification, const LLSD& response
 
 		two_uuids_list_t::iterator move_it;
 		for (move_it = move_inv->mMoveList.begin();
-			move_it != move_inv->mMoveList.end();
-			++move_it)
+			 move_it != move_inv->mMoveList.end();
+			 ++move_it)
 		{
 			object->moveInventory(move_it->first, move_it->second);
 		}
@@ -3026,8 +2988,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 		return FALSE;
 	}
 
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if(!avatarp) return FALSE;
+	if (!isAgentAvatarValid()) return FALSE;
 
 	LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource();
 	BOOL accept = FALSE;
@@ -3037,11 +2998,11 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 		BOOL is_movable = TRUE;
 		switch( inv_item->getActualType() )
 		{
-		case LLAssetType::AT_CATEGORY:
-			is_movable = !LLFolderType::lookupIsProtectedType(((LLInventoryCategory*)inv_item)->getPreferredType());
-			break;
-		default:
-			break;
+			case LLAssetType::AT_CATEGORY:
+				is_movable = !LLFolderType::lookupIsProtectedType(((LLInventoryCategory*)inv_item)->getPreferredType());
+				break;
+			default:
+				break;
 		}
 
 		const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
@@ -3049,7 +3010,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 		const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
 		const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
 		const BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT);
-		const BOOL move_is_outof_current_outfit = LLAppearanceManager::instance().getIsInCOF(inv_item->getUUID());
+		const BOOL move_is_outof_current_outfit = LLAppearanceMgr::instance().getIsInCOF(inv_item->getUUID());
 
 		// Can't explicitly drag things out of the COF.
 		if (move_is_outof_current_outfit)
@@ -3081,9 +3042,9 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 		if(accept && drop)
 		{
 			if (inv_item->getType() == LLAssetType::AT_GESTURE
-				&& LLGestureManager::instance().isGestureActive(inv_item->getUUID()) && move_is_into_trash)
+				&& LLGestureMgr::instance().isGestureActive(inv_item->getUUID()) && move_is_into_trash)
 			{
-				LLGestureManager::instance().deactivateGesture(inv_item->getUUID());
+				LLGestureMgr::instance().deactivateGesture(inv_item->getUUID());
 			}
 			// If an item is being dragged between windows, unselect
 			// everything in the active window so that we don't follow
@@ -3136,7 +3097,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 				// BAP - should skip if dup.
 				if (move_is_into_current_outfit)
 				{
-					LLAppearanceManager::instance().addCOFItemLink(inv_item);
+					LLAppearanceMgr::instance().addCOFItemLink(inv_item);
 				}
 				else
 				{
@@ -3219,7 +3180,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 		if(drop)
 		{
 			copy_inventory_from_notecard(LLToolDragAndDrop::getInstance()->getObjectID(),
-				LLToolDragAndDrop::getInstance()->getSourceID(), inv_item);
+										 LLToolDragAndDrop::getInstance()->getSourceID(), inv_item);
 		}
 	}
 	else if(LLToolDragAndDrop::SOURCE_LIBRARY == source)
@@ -3318,7 +3279,7 @@ void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 }
 
 // virtual
-void LLTextureBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLTextureBridge::performAction(LLInventoryModel* model, std::string action)
 {
 	if ("save_as" == action)
 	{
@@ -3329,7 +3290,7 @@ void LLTextureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode
 			preview_texture->openToSave();
 		}
 	}
-	else LLItemBridge::performAction(folder, model, action);
+	else LLItemBridge::performAction(model, action);
 }
 
 // +=================================================+
@@ -3354,14 +3315,14 @@ void LLSoundBridge::openItem()
 // only open the preview dialog through the contextual right-click menu
 // double-click just plays the sound
 
-	LLViewerInventoryItem* item = getItem();
-	if(item)
-	{
-		openSoundPreview((void*)this);
-		//send_uuid_sound_trigger(item->getAssetUUID(), 1.0);
-	}
-*/
+LLViewerInventoryItem* item = getItem();
+if(item)
+{
+openSoundPreview((void*)this);
+//send_uuid_sound_trigger(item->getAssetUUID(), 1.0);
 }
+*/
+		}
 
 void LLSoundBridge::previewItem()
 {
@@ -3406,11 +3367,14 @@ void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 // |        LLLandmarkBridge                         |
 // +=================================================+
 
-LLLandmarkBridge::LLLandmarkBridge(LLInventoryPanel* inventory, const LLUUID& uuid, U32 flags/* = 0x00*/) :
-LLItemBridge(inventory, uuid)
+LLLandmarkBridge::LLLandmarkBridge(LLInventoryPanel* inventory, 
+								   LLFolderView* root,
+								   const LLUUID& uuid, 
+								   U32 flags/* = 0x00*/) :
+	LLItemBridge(inventory, root, uuid)
 {
 	mVisited = FALSE;
-	if (flags & LLInventoryItem::II_FLAGS_LANDMARK_VISITED)
+	if (flags & LLInventoryItemFlags::II_FLAGS_LANDMARK_VISITED)
 	{
 		mVisited = TRUE;
 	}
@@ -3468,7 +3432,7 @@ void teleport_via_landmark(const LLUUID& asset_id)
 }
 
 // virtual
-void LLLandmarkBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLLandmarkBridge::performAction(LLInventoryModel* model, std::string action)
 {
 	if ("teleport" == action)
 	{
@@ -3492,7 +3456,7 @@ void LLLandmarkBridge::performAction(LLFolderView* folder, LLInventoryModel* mod
 	}
 	else
 	{
-		LLItemBridge::performAction(folder, model, action);
+		LLItemBridge::performAction(model, action);
 	}
 }
 
@@ -3519,35 +3483,33 @@ void LLLandmarkBridge::openItem()
 	{
 		LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
 	}
-/*
-	LLViewerInventoryItem* item = getItem();
-	if( item )
-	{
-		// Opening (double-clicking) a landmark immediately teleports,
-		// but warns you the first time.
-		// open_landmark(item);
-		LLSD payload;
-		payload["asset_id"] = item->getAssetUUID();
-		LLNotificationsUtil::add("TeleportFromLandmark", LLSD(), payload);
-	}
-*/
 }
 
 
 // +=================================================+
 // |        LLCallingCardObserver                    |
 // +=================================================+
-void LLCallingCardObserver::changed(U32 mask)
+class LLCallingCardObserver : public LLFriendObserver
 {
-	mBridgep->refreshFolderViewItem();
-}
+public:
+	LLCallingCardObserver(LLCallingCardBridge* bridge) : mBridgep(bridge) {}
+	virtual ~LLCallingCardObserver() { mBridgep = NULL; }
+	virtual void changed(U32 mask)
+	{
+		mBridgep->refreshFolderViewItem();
+	}
+protected:
+	LLCallingCardBridge* mBridgep;
+};
 
 // +=================================================+
 // |        LLCallingCardBridge                      |
 // +=================================================+
 
-LLCallingCardBridge::LLCallingCardBridge( LLInventoryPanel* inventory, const LLUUID& uuid ) :
-	LLItemBridge(inventory, uuid)
+LLCallingCardBridge::LLCallingCardBridge(LLInventoryPanel* inventory, 
+										 LLFolderView* root,
+										 const LLUUID& uuid ) :
+	LLItemBridge(inventory, root, uuid)
 {
 	mObserver = new LLCallingCardObserver(this);
 	LLAvatarTracker::instance().addObserver(mObserver);
@@ -3570,7 +3532,7 @@ void LLCallingCardBridge::refreshFolderViewItem()
 }
 
 // virtual
-void LLCallingCardBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLCallingCardBridge::performAction(LLInventoryModel* model, std::string action)
 {
 	if ("begin_im" == action)
 	{
@@ -3596,7 +3558,7 @@ void LLCallingCardBridge::performAction(LLFolderView* folder, LLInventoryModel*
 			LLAvatarActions::offerTeleport(item->getCreatorUUID());
 		}
 	}
-	else LLItemBridge::performAction(folder, model, action);
+	else LLItemBridge::performAction(model, action);
 }
 
 LLUIImagePtr LLCallingCardBridge::getIcon() const
@@ -3632,11 +3594,11 @@ void LLCallingCardBridge::openItem()
 		LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
 	}
 /*
-	LLViewerInventoryItem* item = getItem();
-	if(item && !item->getCreatorUUID().isNull())
-	{
-		LLAvatarActions::showProfile(item->getCreatorUUID());
-	}
+  LLViewerInventoryItem* item = getItem();
+  if(item && !item->getCreatorUUID().isNull())
+  {
+  LLAvatarActions::showProfile(item->getCreatorUUID());
+  }
 */
 }
 
@@ -3659,8 +3621,8 @@ void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 
 		LLInventoryItem* item = getItem();
 		BOOL good_card = (item
-				  && (LLUUID::null != item->getCreatorUUID())
-				  && (item->getCreatorUUID() != gAgent.getID()));
+						  && (LLUUID::null != item->getCreatorUUID())
+						  && (item->getCreatorUUID() != gAgent.getID()));
 		BOOL user_online = FALSE;
 		if (item)
 		{
@@ -3695,16 +3657,16 @@ BOOL LLCallingCardBridge::dragOrDrop(MASK mask, BOOL drop,
 		// check the type
 		switch(cargo_type)
 		{
-		case DAD_TEXTURE:
-		case DAD_SOUND:
-		case DAD_LANDMARK:
-		case DAD_SCRIPT:
-		case DAD_CLOTHING:
-		case DAD_OBJECT:
-		case DAD_NOTECARD:
-		case DAD_BODYPART:
-		case DAD_ANIMATION:
-		case DAD_GESTURE:
+			case DAD_TEXTURE:
+			case DAD_SOUND:
+			case DAD_LANDMARK:
+			case DAD_SCRIPT:
+			case DAD_CLOTHING:
+			case DAD_OBJECT:
+			case DAD_NOTECARD:
+			case DAD_BODYPART:
+			case DAD_ANIMATION:
+			case DAD_GESTURE:
 			{
 				LLInventoryItem* inv_item = (LLInventoryItem*)cargo_data;
 				const LLPermissions& perm = inv_item->getPermissions();
@@ -3727,7 +3689,7 @@ BOOL LLCallingCardBridge::dragOrDrop(MASK mask, BOOL drop,
 				}
 				break;
 			}
-		case DAD_CATEGORY:
+			case DAD_CATEGORY:
 			{
 				LLInventoryCategory* inv_cat = (LLInventoryCategory*)cargo_data;
 				if( gInventory.getCategory( inv_cat->getUUID() ) )
@@ -3749,8 +3711,8 @@ BOOL LLCallingCardBridge::dragOrDrop(MASK mask, BOOL drop,
 				}
 				break;
 			}
-		default:
-			break;
+			default:
+				break;
 		}
 	}
 	return rv;
@@ -3775,11 +3737,11 @@ void LLNotecardBridge::openItem()
 	}
 
 /*
-	LLViewerInventoryItem* item = getItem();
-	if (item)
-	{
-		LLFloaterReg::showInstance("preview_notecard", LLSD(item->getUUID()), TAKE_FOCUS_YES);
-	}
+  LLViewerInventoryItem* item = getItem();
+  if (item)
+  {
+  LLFloaterReg::showInstance("preview_notecard", LLSD(item->getUUID()), TAKE_FOCUS_YES);
+  }
 */
 }
 
@@ -3795,7 +3757,7 @@ LLUIImagePtr LLGestureBridge::getIcon() const
 
 LLFontGL::StyleFlags LLGestureBridge::getLabelStyle() const
 {
-	if( LLGestureManager::instance().isGestureActive(mUUID) )
+	if( LLGestureMgr::instance().isGestureActive(mUUID) )
 	{
 		return LLFontGL::BOLD;
 	}
@@ -3807,7 +3769,7 @@ LLFontGL::StyleFlags LLGestureBridge::getLabelStyle() const
 
 std::string LLGestureBridge::getLabelSuffix() const
 {
-	if( LLGestureManager::instance().isGestureActive(mUUID) )
+	if( LLGestureMgr::instance().isGestureActive(mUUID) )
 	{
 		LLStringUtil::format_map_t args;
 		args["[GESLABEL]"] =  LLItemBridge::getLabelSuffix();
@@ -3820,11 +3782,11 @@ std::string LLGestureBridge::getLabelSuffix() const
 }
 
 // virtual
-void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLGestureBridge::performAction(LLInventoryModel* model, std::string action)
 {
 	if (isAddAction(action))
 	{
-		LLGestureManager::instance().activateGesture(mUUID);
+		LLGestureMgr::instance().activateGesture(mUUID);
 
 		LLViewerInventoryItem* item = gInventory.getItem(mUUID);
 		if (!item) return;
@@ -3836,7 +3798,7 @@ void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode
 	}
 	else if (isRemoveAction(action))
 	{
-		LLGestureManager::instance().deactivateGesture(mUUID);
+		LLGestureMgr::instance().deactivateGesture(mUUID);
 
 		LLViewerInventoryItem* item = gInventory.getItem(mUUID);
 		if (!item) return;
@@ -3848,17 +3810,17 @@ void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode
 	}
 	else if("play" == action)
 	{
-		if(!LLGestureManager::instance().isGestureActive(mUUID))
+		if(!LLGestureMgr::instance().isGestureActive(mUUID))
 		{
 			// we need to inform server about gesture activating to be consistent with LLPreviewGesture and  LLGestureComboList.
 			BOOL inform_server = TRUE;
 			BOOL deactivate_similar = FALSE;
-			LLGestureManager::instance().setGestureLoadedCallback(mUUID, boost::bind(&LLGestureBridge::playGesture, mUUID));
+			LLGestureMgr::instance().setGestureLoadedCallback(mUUID, boost::bind(&LLGestureBridge::playGesture, mUUID));
 			LLViewerInventoryItem* item = gInventory.getItem(mUUID);
 			llassert(item);
 			if (item)
 			{
-				LLGestureManager::instance().activateGestureWithAsset(mUUID, item->getAssetUUID(), inform_server, deactivate_similar);
+				LLGestureMgr::instance().activateGestureWithAsset(mUUID, item->getAssetUUID(), inform_server, deactivate_similar);
 			}
 		}
 		else
@@ -3866,7 +3828,7 @@ void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode
 			playGesture(mUUID);
 		}
 	}
-	else LLItemBridge::performAction(folder, model, action);
+	else LLItemBridge::performAction(model, action);
 }
 
 void LLGestureBridge::openItem()
@@ -3878,12 +3840,12 @@ void LLGestureBridge::openItem()
 		LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
 	}
 /*
-	LLViewerInventoryItem* item = getItem();
-	if (item)
-	{
-		LLPreviewGesture* preview = LLPreviewGesture::show(mUUID, LLUUID::null);
-		preview->setFocus(TRUE);
-	}
+  LLViewerInventoryItem* item = getItem();
+  if (item)
+  {
+  LLPreviewGesture* preview = LLPreviewGesture::show(mUUID, LLUUID::null);
+  preview->setFocus(TRUE);
+  }
 */
 }
 
@@ -3900,7 +3862,7 @@ BOOL LLGestureBridge::removeItem()
 	
 	// This will also force close the preview window, if it exists.
 	// This may actually delete *this, if mUUID is in the COF.
-	LLGestureManager::instance().deactivateGesture(item_id);
+	LLGestureMgr::instance().deactivateGesture(item_id);
 	
 	// If deactivateGesture deleted *this, then return out immediately.
 	if (!model->getObject(item_id))
@@ -3933,7 +3895,7 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 		getClipboardEntries(true, items, disabled_items, flags);
 
 		items.push_back(std::string("Gesture Separator"));
-		if (LLGestureManager::instance().isGestureActive(getUUID()))
+		if (LLGestureMgr::instance().isGestureActive(getUUID()))
 		{
 			items.push_back(std::string("Deactivate"));
 		}
@@ -3948,13 +3910,13 @@ void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 // static
 void LLGestureBridge::playGesture(const LLUUID& item_id)
 {
-	if (LLGestureManager::instance().isGesturePlaying(item_id))
+	if (LLGestureMgr::instance().isGesturePlaying(item_id))
 	{
-		LLGestureManager::instance().stopGesture(item_id);
+		LLGestureMgr::instance().stopGesture(item_id);
 	}
 	else
 	{
-		LLGestureManager::instance().playGesture(item_id);
+		LLGestureMgr::instance().playGesture(item_id);
 	}
 }
 
@@ -3995,7 +3957,7 @@ void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 }
 
 // virtual
-void LLAnimationBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLAnimationBridge::performAction(LLInventoryModel* model, std::string action)
 {
 	if ((action == "playworld") || (action == "playlocal"))
 	{
@@ -4014,7 +3976,7 @@ void LLAnimationBridge::performAction(LLFolderView* folder, LLInventoryModel* mo
 	}
 	else
 	{
-		LLItemBridge::performAction(folder, model, action);
+		LLItemBridge::performAction(model, action);
 	}
 }
 
@@ -4027,11 +3989,11 @@ void LLAnimationBridge::openItem()
 		LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
 	}
 /*
-	LLViewerInventoryItem* item = getItem();
-	if (item)
-	{
-		LLFloaterReg::showInstance("preview_anim", LLSD(mUUID), TAKE_FOCUS_YES);
-	}
+  LLViewerInventoryItem* item = getItem();
+  if (item)
+  {
+  LLFloaterReg::showInstance("preview_anim", LLSD(mUUID), TAKE_FOCUS_YES);
+  }
 */
 }
 
@@ -4042,12 +4004,17 @@ void LLAnimationBridge::openItem()
 // static
 LLUUID LLObjectBridge::sContextMenuItemID;
 
-LLObjectBridge::LLObjectBridge(LLInventoryPanel* inventory, const LLUUID& uuid, LLInventoryType::EType type, U32 flags) :
-LLItemBridge(inventory, uuid), mInvType(type)
+LLObjectBridge::LLObjectBridge(LLInventoryPanel* inventory, 
+							   LLFolderView* root,
+							   const LLUUID& uuid, 
+							   LLInventoryType::EType type, 
+							   U32 flags) :
+	LLItemBridge(inventory, root, uuid), 
+	mInvType(type)
 {
 	mAttachPt = (flags & 0xff); // low bye of inventory flags
 
-	mIsMultiObject = ( flags & LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS ) ?  TRUE: FALSE;
+	mIsMultiObject = ( flags & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS ) ?  TRUE: FALSE;
 }
 
 LLUIImagePtr LLObjectBridge::getIcon() const
@@ -4067,7 +4034,7 @@ LLInventoryObject* LLObjectBridge::getObject() const
 }
 
 // virtual
-void LLObjectBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
 {
 	if (isAddAction(action))
 	{
@@ -4111,7 +4078,7 @@ void LLObjectBridge::performAction(LLFolderView* folder, LLInventoryModel* model
 			}
 		}
 	}
-	else LLItemBridge::performAction(folder, model, action);
+	else LLItemBridge::performAction(model, action);
 }
 
 void LLObjectBridge::openItem()
@@ -4129,7 +4096,7 @@ void LLObjectBridge::openItem()
 
 	// Disable old properties floater; this is replaced by the sidepanel.
 	/*
-	LLFloaterReg::showInstance("properties", mUUID);
+	  LLFloaterReg::showInstance("properties", mUUID);
 	*/
 }
 
@@ -4155,8 +4122,7 @@ std::string LLObjectBridge::getLabelSuffix() const
 {
 	if (get_is_item_worn(mUUID))
 	{
-		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-		std::string attachment_point_name = avatarp->getAttachedPointName(mUUID);
+		std::string attachment_point_name = gAgentAvatarp->getAttachedPointName(mUUID);
 
 		// e.g. "(worn on ...)" / "(attached to ...)"
 		LLStringUtil::format_map_t args;
@@ -4175,10 +4141,10 @@ void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attach
 	payload["item_id"] = item->getLinkedUUID(); // Wear the base object in case this is a link.
 
 	S32 attach_pt = 0;
-	if (gAgent.getAvatarObject() && attachment)
+	if (isAgentAvatarValid() && attachment)
 	{
-		for (LLVOAvatar::attachment_map_t::iterator iter = gAgent.getAvatarObject()->mAttachmentPoints.begin();
-			 iter != gAgent.getAvatarObject()->mAttachmentPoints.end(); ++iter)
+		for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();
+			 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)
 		{
 			if (iter->second == attachment)
 			{
@@ -4204,9 +4170,7 @@ void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attach
 
 bool confirm_replace_attachment_rez(const LLSD& notification, const LLSD& response)
 {
-	LLVOAvatar *avatarp = gAgent.getAvatarObject();
-
-	if (!avatarp->canAttachMoreObjects())
+	if (!gAgentAvatarp->canAttachMoreObjects())
 	{
 		LLSD args;
 		args["MAX_ATTACHMENTS"] = llformat("%d", MAX_AGENT_ATTACHMENTS);
@@ -4268,11 +4232,7 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 		LLInventoryItem *item = getItem();
 		if(item)
 		{
-			LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-			if( !avatarp )
-			{
-				return;
-			}
+			if (!isAgentAvatarValid()) return;
 
 			if( get_is_item_worn( mUUID ) )
 			{
@@ -4288,7 +4248,7 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 				// commented out for DEV-32347
 				//items.push_back(std::string("Restore to Last Position"));
 
-				if (!avatarp->canAttachMoreObjects())
+				if (!gAgentAvatarp->canAttachMoreObjects())
 				{
 					disabled_items.push_back(std::string("Object Wear"));
 					disabled_items.push_back(std::string("Attach To"));
@@ -4296,15 +4256,14 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 				}
 				LLMenuGL* attach_menu = menu.findChildMenuByName("Attach To", TRUE);
 				LLMenuGL* attach_hud_menu = menu.findChildMenuByName("Attach To HUD", TRUE);
-				LLVOAvatar *avatarp = gAgent.getAvatarObject();
 				if (attach_menu
 					&& (attach_menu->getChildCount() == 0)
 					&& attach_hud_menu
 					&& (attach_hud_menu->getChildCount() == 0)
-					&& avatarp)
+					&& isAgentAvatarValid())
 				{
-					for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin();
-						 iter != avatarp->mAttachmentPoints.end(); )
+					for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin();
+						 iter != gAgentAvatarp->mAttachmentPoints.end(); )
 					{
 						LLVOAvatar::attachment_map_t::iterator curiter = iter++;
 						LLViewerJointAttachment* attachment = curiter->second;
@@ -4354,10 +4313,9 @@ BOOL LLObjectBridge::renameItem(const std::string& new_name)
 
 		model->notifyObservers();
 
-		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-		if(avatarp)
+		if (isAgentAvatarValid())
 		{
-			LLViewerObject* obj = avatarp->getWornAttachment( item->getUUID() );
+			LLViewerObject* obj = gAgentAvatarp->getWornAttachment( item->getUUID() );
 			if(obj)
 			{
 				LLSelectMgr::getInstance()->deselectAll();
@@ -4389,19 +4347,25 @@ void LLLSLTextBridge::openItem()
 	{
 		LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
 	}
-	/*
-	LLViewerInventoryItem* item = getItem();
-	if (item)
-	{
-		LLFloaterReg::showInstance("preview_script", LLSD(mUUID), TAKE_FOCUS_YES);
-	}
-	*/
 }
 
 // +=================================================+
 // |        LLWearableBridge                         |
 // +=================================================+
 
+LLWearableBridge::LLWearableBridge(LLInventoryPanel* inventory, 
+								   LLFolderView* root, 
+								   const LLUUID& uuid, 
+								   LLAssetType::EType asset_type, 
+								   LLInventoryType::EType inv_type, 
+								   EWearableType  wearable_type) :
+	LLItemBridge(inventory, root, uuid),
+	mAssetType( asset_type ),
+	mInvType(inv_type),
+	mWearableType(wearable_type)
+{
+}
+
 // *NOTE: hack to get from avatar inventory to avatar
 void wear_inventory_item_on_avatar( LLInventoryItem* item )
 {
@@ -4410,7 +4374,7 @@ void wear_inventory_item_on_avatar( LLInventoryItem* item )
 		lldebugs << "wear_inventory_item_on_avatar( " << item->getName()
 				 << " )" << llendl;
 
-		LLAppearanceManager::instance().addCOFItemLink(item);
+		LLAppearanceMgr::instance().addCOFItemLink(item);
 	}
 }
 
@@ -4422,10 +4386,10 @@ void wear_add_inventory_item_on_avatar( LLInventoryItem* item )
 				 << " )" << llendl;
 
 		LLWearableList::instance().getAsset(item->getAssetUUID(),
-							   item->getName(),
-							   item->getType(),
-							   LLWearableBridge::onWearAddOnAvatarArrived,
-							   new LLUUID(item->getUUID()));
+											item->getName(),
+											item->getType(),
+											LLWearableBridge::onWearAddOnAvatarArrived,
+											new LLUUID(item->getUUID()));
 	}
 }
 
@@ -4547,7 +4511,7 @@ void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_
 				LLViewerInventoryItem *gest_item = gest_item_array.get(i);
 				if (get_is_item_worn(gest_item->getUUID()))
 				{
-					LLGestureManager::instance().deactivateGesture( gest_item->getLinkedUUID() );
+					LLGestureMgr::instance().deactivateGesture( gest_item->getLinkedUUID() );
 					gInventory.updateItem( gest_item );
 					gInventory.notifyObservers();
 				}
@@ -4585,7 +4549,7 @@ LLUIImagePtr LLWearableBridge::getIcon() const
 }
 
 // virtual
-void LLWearableBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLWearableBridge::performAction(LLInventoryModel* model, std::string action)
 {
 	if (isAddAction(action))
 	{
@@ -4605,7 +4569,7 @@ void LLWearableBridge::performAction(LLFolderView* folder, LLInventoryModel* mod
 		removeFromAvatar();
 		return;
 	}
-	else LLItemBridge::performAction(folder, model, action);
+	else LLItemBridge::performAction(model, action);
 }
 
 void LLWearableBridge::openItem()
@@ -4616,42 +4580,6 @@ void LLWearableBridge::openItem()
 	{
 		LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
 	}
-	/*
-	if( isItemInTrash() )
-	{
-		LLNotificationsUtil::add("CannotWearTrash");
-	}
-	else if(isAgentInventory())
-	{
-		if( !get_is_item_worn( mUUID ) )
-		{
-			wearOnAvatar();
-		}
-	}
-	else
-	{
-		// must be in the inventory library. copy it to our inventory
-		// and put it on right away.
-		LLViewerInventoryItem* item = getItem();
-		if(item && item->isComplete())
-		{
-			LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
-			copy_inventory_item(
-				gAgent.getID(),
-				item->getPermissions().getOwner(),
-				item->getUUID(),
-				LLUUID::null,
-				std::string(),
-				cb);
-		}
-		else if(item)
-		{
-			// *TODO: We should fetch the item details, and then do
-			// the operation above.
-			LLNotificationsUtil::add("CannotWearInfoNotComplete");
-		}
-	}
-	*/
 }
 
 void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
@@ -4961,34 +4889,21 @@ void LLWearableBridge::onRemoveFromAvatarArrived(LLWearable* wearable,
 			if( !(type==WT_SHAPE || type==WT_SKIN || type==WT_HAIR || type==WT_EYES ) ) //&&
 				//!((!gAgent.isTeen()) && ( type==WT_UNDERPANTS || type==WT_UNDERSHIRT )) )
 			{
-				// MULTI_WEARABLE: FIXME HACK - always remove all
 				bool do_remove_all = false;
-				gAgentWearables.removeWearable( type, do_remove_all, 0 );
+				U32 index = gAgentWearables.getWearableIndex(wearable);
+				gAgentWearables.removeWearable( type, do_remove_all, index );
 			}
 		}
 	}
 
 	// Find and remove this item from the COF.
-	// FIXME 2.1 - call removeCOFItemLinks in llappearancemgr instead.
-	LLInventoryModel::item_array_t items = gInventory.collectLinkedItems(item_id, LLAppearanceManager::instance().getCOF());
-	if (items.size() != 1)
-	{
-		llwarns << "Found " << items.size() << " COF links to " << item_id.asString() << ", expected 1" << llendl;
-	}
-	for (LLInventoryModel::item_array_t::const_iterator iter = items.begin();
-		 iter != items.end();
-		 ++iter)
-	{
-		const LLViewerInventoryItem *linked_item = (*iter);
-		const LLUUID &item_id = linked_item->getUUID();
-		gInventory.purgeObject(item_id);
-	}
+	LLAppearanceMgr::instance().removeCOFItemLinks(item_id,false);
 	gInventory.notifyObservers();
 
 	delete on_remove_struct;
 }
 
-/* static */
+// static
 void LLWearableBridge::removeAllClothesFromAvatar()
 {
 	// Remove COF links.
@@ -5008,20 +4923,7 @@ void LLWearableBridge::removeAllClothesFromAvatar()
 			continue;
 
 		// Find and remove this item from the COF.
-		LLInventoryModel::item_array_t items = gInventory.collectLinkedItems(
-			item_id, LLAppearanceManager::instance().getCOF());
-		if (items.size() != 1)
-		{
-			llwarns << "Found " << items.size() << " COF links to " << item_id.asString() << ", expected 1" << llendl;
-		}
-		for (LLInventoryModel::item_array_t::const_iterator iter = items.begin();
-			 iter != items.end();
-			 ++iter)
-		{
-			const LLViewerInventoryItem *linked_item = (*iter);
-			const LLUUID &item_id = linked_item->getUUID();
-			gInventory.purgeObject(item_id);
-		}
+		LLAppearanceMgr::instance().removeCOFItemLinks(item_id,false);
 	}
 	gInventory.notifyObservers();
 
@@ -5029,7 +4931,7 @@ void LLWearableBridge::removeAllClothesFromAvatar()
 	LLAgentWearables::userRemoveAllClothes();
 }
 
-/* static */
+// static
 void LLWearableBridge::removeItemFromAvatar(LLViewerInventoryItem *item)
 {
 	if (item)
@@ -5051,215 +4953,380 @@ void LLWearableBridge::removeFromAvatar()
 	}
 }
 
-LLInvFVBridgeAction* LLInvFVBridgeAction::createAction(LLAssetType::EType asset_type,
-													   const LLUUID& uuid,LLInventoryModel* model)
+// +=================================================+
+// |        LLLinkItemBridge                         |
+// +=================================================+
+// For broken item links
+std::string LLLinkItemBridge::sPrefix("Link: ");
+LLUIImagePtr LLLinkItemBridge::getIcon() const
 {
-	LLInvFVBridgeAction* action = NULL;
-	switch(asset_type)
+	if (LLViewerInventoryItem *item = getItem())
 	{
-	case LLAssetType::AT_TEXTURE:
-		action = new LLTextureBridgeAction(uuid,model);
-		break;
-
-	case LLAssetType::AT_SOUND:
-		action = new LLSoundBridgeAction(uuid,model);
-		break;
-
-	case LLAssetType::AT_LANDMARK:
-		action = new LLLandmarkBridgeAction(uuid,model);
-		break;
-
-	case LLAssetType::AT_CALLINGCARD:
-		action = new LLCallingCardBridgeAction(uuid,model);
-		break;
-
-	case LLAssetType::AT_OBJECT:
-		action = new LLObjectBridgeAction(uuid,model);
-		break;
-
-	case LLAssetType::AT_NOTECARD:
-		action = new LLNotecardBridgeAction(uuid,model);
-		break;
-
-	case LLAssetType::AT_ANIMATION:
-		action = new LLAnimationBridgeAction(uuid,model);
-		break;
-
-	case LLAssetType::AT_GESTURE:
-		action = new LLGestureBridgeAction(uuid,model);
-		break;
-
-	case LLAssetType::AT_LSL_TEXT:
-		action = new LLLSLTextBridgeAction(uuid,model);
-		break;
-
-	case LLAssetType::AT_CLOTHING:
-	case LLAssetType::AT_BODYPART:
-		action = new LLWearableBridgeAction(uuid,model);
-
-		break;
+		U32 attachment_point = (item->getFlags() & 0xff); // low byte of inventory flags
+		bool is_multi =  LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS & item->getFlags();
 
-	default:
-		break;
+		return get_item_icon(item->getActualType(), item->getInventoryType(), attachment_point, is_multi);
 	}
-	return action;
+	return get_item_icon(LLAssetType::AT_LINK, LLInventoryType::IT_NONE, 0, FALSE);
 }
-
-//static
-void LLInvFVBridgeAction::doAction(LLAssetType::EType asset_type,
-								   const LLUUID& uuid,LLInventoryModel* model)
+void LLLinkItemBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 {
-	LLInvFVBridgeAction* action = createAction(asset_type,uuid,model);
-	if(action)
+	// *TODO: Translate
+	lldebugs << "LLLink::buildContextMenu()" << llendl;
+	menuentry_vec_t items;
+	menuentry_vec_t disabled_items;
+
+	items.push_back(std::string("Find Original"));
+	disabled_items.push_back(std::string("Find Original"));
+	
+	if(isItemInTrash())
 	{
-		action->doIt();
-		delete action;
+		addTrashContextMenuOptions(items, disabled_items);
+	}
+	else
+	{
+		items.push_back(std::string("Properties"));
+		addDeleteContextMenuOptions(items, disabled_items);
 	}
+	hide_context_entries(menu, items, disabled_items);
 }
 
-//static
-void LLInvFVBridgeAction::doAction(const LLUUID& uuid, LLInventoryModel* model)
+// +=================================================+
+// |        LLLinkBridge                             |
+// +=================================================+
+// For broken folder links.
+std::string LLLinkFolderBridge::sPrefix("Link: ");
+LLUIImagePtr LLLinkFolderBridge::getIcon() const
 {
-	llassert(model);
-	LLViewerInventoryItem* item = model->getItem(uuid);
-	llassert(item);
-	if (item)
+	LLFolderType::EType preferred_type = LLFolderType::FT_NONE;
+	if (LLViewerInventoryItem *item = getItem())
 	{
-		LLAssetType::EType asset_type = item->getType();
-		LLInvFVBridgeAction* action = createAction(asset_type,uuid,model);
-		if(action)
+		if (const LLViewerInventoryCategory* cat = item->getLinkedCategory())
 		{
-			action->doIt();
-			delete action;
+			preferred_type = cat->getPreferredType();
 		}
 	}
+	return LLFolderBridge::getIcon(preferred_type);
 }
-
-LLViewerInventoryItem* LLInvFVBridgeAction::getItem() const
-{
-	if(mModel)
-		return (LLViewerInventoryItem*)mModel->getItem(mUUID);
-	return NULL;
-}
-
-//virtual
-void	LLTextureBridgeAction::doIt()
+void LLLinkFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 {
-	if (getItem())
-	{
-		LLFloaterReg::showInstance("preview_texture", LLSD(mUUID), TAKE_FOCUS_YES);
-	}
+	// *TODO: Translate
+	lldebugs << "LLLink::buildContextMenu()" << llendl;
+	menuentry_vec_t items;
+	menuentry_vec_t disabled_items;
 
-	LLInvFVBridgeAction::doIt();
+	if (isItemInTrash())
+	{
+		addTrashContextMenuOptions(items, disabled_items);
+	}
+	else
+	{
+		items.push_back(std::string("Find Original"));
+		addDeleteContextMenuOptions(items, disabled_items);
+	}
+	hide_context_entries(menu, items, disabled_items);
 }
-
-//virtual
-void	LLSoundBridgeAction::doIt()
+void LLLinkFolderBridge::performAction(LLInventoryModel* model, std::string action)
 {
-	LLViewerInventoryItem* item = getItem();
-	if(item)
+	if ("goto" == action)
 	{
-		LLFloaterReg::showInstance("preview_sound", LLSD(mUUID), TAKE_FOCUS_YES);
+		gotoItem();
+		return;
 	}
-
-	LLInvFVBridgeAction::doIt();
+	LLItemBridge::performAction(model,action);
 }
-
-
-//virtual
-void	LLLandmarkBridgeAction::doIt()
+void LLLinkFolderBridge::gotoItem()
 {
-	LLViewerInventoryItem* item = getItem();
-	if( item )
+	const LLUUID &cat_uuid = getFolderID();
+	if (!cat_uuid.isNull())
 	{
-		// Opening (double-clicking) a landmark immediately teleports,
-		// but warns you the first time.
-		LLSD payload;
-		payload["asset_id"] = item->getAssetUUID();		
-		
-		LLSD args; 
-		args["LOCATION"] = item->getName(); 
-		
-		LLNotificationsUtil::add("TeleportFromLandmark", args, payload);
+		if (LLFolderViewItem *base_folder = mRoot->getItemByID(cat_uuid))
+		{
+			if (LLInventoryModel* model = getInventoryModel())
+			{
+				model->fetchDescendentsOf(cat_uuid);
+			}
+			base_folder->setOpen(TRUE);
+			mRoot->setSelectionFromRoot(base_folder,TRUE);
+			mRoot->scrollToShowSelection();
+		}
 	}
-
-	LLInvFVBridgeAction::doIt();
+}
+const LLUUID &LLLinkFolderBridge::getFolderID() const
+{
+	if (LLViewerInventoryItem *link_item = getItem())
+	{
+		if (const LLViewerInventoryCategory *cat = link_item->getLinkedCategory())
+		{
+			const LLUUID& cat_uuid = cat->getUUID();
+			return cat_uuid;
+		}
+	}
+	return LLUUID::null;
 }
 
+/********************************************************************************
+ **
+ **                    BRIDGE ACTIONS
+ **/
 
-//virtual
-void	LLCallingCardBridgeAction::doIt()
+// static
+void LLInvFVBridgeAction::doAction(LLAssetType::EType asset_type,
+								   const LLUUID& uuid,LLInventoryModel* model)
 {
-	LLViewerInventoryItem* item = getItem();
-	if(item && item->getCreatorUUID().notNull())
+	LLInvFVBridgeAction* action = createAction(asset_type,uuid,model);
+	if(action)
 	{
-		LLAvatarActions::showProfile(item->getCreatorUUID());
+		action->doIt();
+		delete action;
 	}
-
-	LLInvFVBridgeAction::doIt();
 }
 
-//virtual
-void
-LLNotecardBridgeAction::doIt()
+// static
+void LLInvFVBridgeAction::doAction(const LLUUID& uuid, LLInventoryModel* model)
 {
-	LLViewerInventoryItem* item = getItem();
+	llassert(model);
+	LLViewerInventoryItem* item = model->getItem(uuid);
+	llassert(item);
 	if (item)
 	{
-		LLFloaterReg::showInstance("preview_notecard", LLSD(item->getUUID()), TAKE_FOCUS_YES);
+		LLAssetType::EType asset_type = item->getType();
+		LLInvFVBridgeAction* action = createAction(asset_type,uuid,model);
+		if(action)
+		{
+			action->doIt();
+			delete action;
+		}
 	}
+}
 
-	LLInvFVBridgeAction::doIt();
+LLViewerInventoryItem* LLInvFVBridgeAction::getItem() const
+{
+	if (mModel)
+		return (LLViewerInventoryItem*)mModel->getItem(mUUID);
+	return NULL;
 }
 
-//virtual
-void	LLGestureBridgeAction::doIt()
+class LLTextureBridgeAction: public LLInvFVBridgeAction
 {
-	LLViewerInventoryItem* item = getItem();
-	if (item)
+	friend class LLInvFVBridgeAction;
+public:
+	virtual void doIt()
 	{
-		LLPreviewGesture* preview = LLPreviewGesture::show(mUUID, LLUUID::null);
-		preview->setFocus(TRUE);
+		if (getItem())
+		{
+			LLFloaterReg::showInstance("preview_texture", LLSD(mUUID), TAKE_FOCUS_YES);
+		}
+		LLInvFVBridgeAction::doIt();
 	}
+	virtual ~LLTextureBridgeAction(){}
+protected:
+	LLTextureBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
 
-	LLInvFVBridgeAction::doIt();
-}
+class LLSoundBridgeAction: public LLInvFVBridgeAction
+{
+	friend class LLInvFVBridgeAction;
+public:
+	virtual void doIt()
+	{
+		LLViewerInventoryItem* item = getItem();
+		if (item)
+		{
+			LLFloaterReg::showInstance("preview_sound", LLSD(mUUID), TAKE_FOCUS_YES);
+		}
+		LLInvFVBridgeAction::doIt();
+	}
+	virtual ~LLSoundBridgeAction(){}
+protected:
+	LLSoundBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
 
-//virtual
-void	LLAnimationBridgeAction::doIt()
+class LLLandmarkBridgeAction: public LLInvFVBridgeAction
 {
-	LLViewerInventoryItem* item = getItem();
-	if (item)
+	friend class LLInvFVBridgeAction;
+public:
+	virtual void doIt()
 	{
-		LLFloaterReg::showInstance("preview_anim", LLSD(mUUID), TAKE_FOCUS_YES);
+		LLViewerInventoryItem* item = getItem();
+		if (item)
+		{
+			// Opening (double-clicking) a landmark immediately teleports,
+			// but warns you the first time.
+			LLSD payload;
+			payload["asset_id"] = item->getAssetUUID();		
+			
+			LLSD args; 
+			args["LOCATION"] = item->getName(); 
+			
+			LLNotificationsUtil::add("TeleportFromLandmark", args, payload);
+		}
+		LLInvFVBridgeAction::doIt();
 	}
+	virtual ~LLLandmarkBridgeAction(){}
+protected:
+	LLLandmarkBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
 
-	LLInvFVBridgeAction::doIt();
-}
+class LLCallingCardBridgeAction: public LLInvFVBridgeAction
+{
+	friend class LLInvFVBridgeAction;
+public:
+	virtual void doIt()
+	{
+		LLViewerInventoryItem* item = getItem();
+		if (item && item->getCreatorUUID().notNull())
+		{
+			LLAvatarActions::showProfile(item->getCreatorUUID());
+		}
+		LLInvFVBridgeAction::doIt();
+	}
+	virtual ~LLCallingCardBridgeAction(){}
+protected:
+	LLCallingCardBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
 
+};
 
-//virtual
-void	LLObjectBridgeAction::doIt()
+class LLNotecardBridgeAction: public LLInvFVBridgeAction
 {
-	/*
-	LLFloaterReg::showInstance("properties", mUUID);
-	*/
-	LLInvFVBridgeAction::doIt();
-}
+	friend class LLInvFVBridgeAction;
+public:
+	virtual void doIt()
+	{
+		LLViewerInventoryItem* item = getItem();
+		if (item)
+		{
+			LLFloaterReg::showInstance("preview_notecard", LLSD(item->getUUID()), TAKE_FOCUS_YES);
+		}
+		LLInvFVBridgeAction::doIt();
+	}
+	virtual ~LLNotecardBridgeAction(){}
+protected:
+	LLNotecardBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
 
+class LLGestureBridgeAction: public LLInvFVBridgeAction
+{
+	friend class LLInvFVBridgeAction;
+public:
+	virtual void doIt()
+	{
+		LLViewerInventoryItem* item = getItem();
+		if (item)
+		{
+			LLPreviewGesture* preview = LLPreviewGesture::show(mUUID, LLUUID::null);
+			preview->setFocus(TRUE);
+		}
+		LLInvFVBridgeAction::doIt();		
+	}
+	virtual ~LLGestureBridgeAction(){}
+protected:
+	LLGestureBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
 
-//virtual
-void	LLLSLTextBridgeAction::doIt()
+class LLAnimationBridgeAction: public LLInvFVBridgeAction
 {
-	LLViewerInventoryItem* item = getItem();
-	if (item)
+	friend class LLInvFVBridgeAction;
+public:
+	virtual void doIt()
 	{
-		LLFloaterReg::showInstance("preview_script", LLSD(mUUID), TAKE_FOCUS_YES);
+		LLViewerInventoryItem* item = getItem();
+		if (item)
+		{
+			LLFloaterReg::showInstance("preview_anim", LLSD(mUUID), TAKE_FOCUS_YES);
+		}
+		LLInvFVBridgeAction::doIt();
 	}
+	virtual ~LLAnimationBridgeAction(){}
+protected:
+	LLAnimationBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
 
-	LLInvFVBridgeAction::doIt();
-}
+class LLObjectBridgeAction: public LLInvFVBridgeAction
+{
+	friend class LLInvFVBridgeAction;
+public:
+	virtual void doIt()
+	{
+		/*
+		  LLFloaterReg::showInstance("properties", mUUID);
+		*/
+		LLInvFVBridgeAction::doIt();
+	}
+	virtual ~LLObjectBridgeAction(){}
+protected:
+	LLObjectBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
 
+class LLLSLTextBridgeAction: public LLInvFVBridgeAction
+{
+	friend class LLInvFVBridgeAction;
+public:
+	virtual void doIt()
+	{
+		LLViewerInventoryItem* item = getItem();
+		if (item)
+		{
+			LLFloaterReg::showInstance("preview_script", LLSD(mUUID), TAKE_FOCUS_YES);
+		}
+		LLInvFVBridgeAction::doIt();
+	}
+	virtual ~LLLSLTextBridgeAction(){}
+protected:
+	LLLSLTextBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+};
+
+class LLWearableBridgeAction: public LLInvFVBridgeAction
+{
+	friend class LLInvFVBridgeAction;
+public:
+	virtual void doIt()
+	{
+		if(isItemInTrash())
+		{
+			LLNotificationsUtil::add("CannotWearTrash");
+		}
+		else if(isAgentInventory())
+		{
+			if(!get_is_item_worn(mUUID))
+			{
+				wearOnAvatar();
+			}
+		}
+		else
+		{
+			// must be in the inventory library. copy it to our inventory
+			// and put it on right away.
+			LLViewerInventoryItem* item = getItem();
+			if(item && item->isComplete())
+			{
+				LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
+				copy_inventory_item(
+					gAgent.getID(),
+					item->getPermissions().getOwner(),
+					item->getUUID(),
+					LLUUID::null,
+					std::string(),
+					cb);
+			}
+			else if(item)
+			{
+				// *TODO: We should fetch the item details, and then do
+				// the operation above.
+				LLNotificationsUtil::add("CannotWearInfoNotComplete");
+			}
+		}
+		LLInvFVBridgeAction::doIt();
+	}
+	virtual ~LLWearableBridgeAction(){}
+protected:
+	LLWearableBridgeAction(const LLUUID& id,LLInventoryModel* model) : LLInvFVBridgeAction(id,model) {}
+	BOOL isItemInTrash() const;
+	// return true if the item is in agent inventory. if false, it
+	// must be lost or in the inventory library.
+	BOOL isAgentInventory() const;
+	void wearOnAvatar();
+};
 
 BOOL LLWearableBridgeAction::isItemInTrash() const
 {
@@ -5306,167 +5373,50 @@ void LLWearableBridgeAction::wearOnAvatar()
 	}
 }
 
-//virtual
-void LLWearableBridgeAction::doIt()
-{
-	if(isItemInTrash())
-	{
-		LLNotificationsUtil::add("CannotWearTrash");
-	}
-	else if(isAgentInventory())
-	{
-		if(!get_is_item_worn(mUUID))
-		{
-			wearOnAvatar();
-		}
-	}
-	else
-	{
-		// must be in the inventory library. copy it to our inventory
-		// and put it on right away.
-		LLViewerInventoryItem* item = getItem();
-		if(item && item->isComplete())
-		{
-			LLPointer<LLInventoryCallback> cb = new WearOnAvatarCallback();
-			copy_inventory_item(
-				gAgent.getID(),
-				item->getPermissions().getOwner(),
-				item->getUUID(),
-				LLUUID::null,
-				std::string(),
-				cb);
-		}
-		else if(item)
-		{
-			// *TODO: We should fetch the item details, and then do
-			// the operation above.
-			LLNotificationsUtil::add("CannotWearInfoNotComplete");
-		}
-	}
-
-	LLInvFVBridgeAction::doIt();
-}
-
-// +=================================================+
-// |        LLLinkItemBridge                         |
-// +=================================================+
-// For broken links
-
-std::string LLLinkItemBridge::sPrefix("Link: ");
-
-
-LLUIImagePtr LLLinkItemBridge::getIcon() const
-{
-	if (LLViewerInventoryItem *item = getItem())
-	{
-		U32 attachment_point = (item->getFlags() & 0xff); // low byte of inventory flags
-		bool is_multi =  LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS & item->getFlags();
-
-		return get_item_icon(item->getActualType(), item->getInventoryType(), attachment_point, is_multi);
-	}
-	return get_item_icon(LLAssetType::AT_LINK, LLInventoryType::IT_NONE, 0, FALSE);
-}
-
-void LLLinkItemBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
-	// *TODO: Translate
-	lldebugs << "LLLink::buildContextMenu()" << llendl;
-	menuentry_vec_t items;
-	menuentry_vec_t disabled_items;
-
-	items.push_back(std::string("Find Original"));
-	disabled_items.push_back(std::string("Find Original"));
-	
-	if(isItemInTrash())
-	{
-		addTrashContextMenuOptions(items, disabled_items);
-	}
-	else
-	{
-		items.push_back(std::string("Properties"));
-		addDeleteContextMenuOptions(items, disabled_items);
-	}
-	hide_context_entries(menu, items, disabled_items);
-}
-
-
-// +=================================================+
-// |        LLLinkBridge                             |
-// +=================================================+
-// For broken links.
-
-std::string LLLinkFolderBridge::sPrefix("Link: ");
-
-
-LLUIImagePtr LLLinkFolderBridge::getIcon() const
-{
-	LLFolderType::EType preferred_type = LLFolderType::FT_NONE;
-	if (LLViewerInventoryItem *item = getItem())
-	{
-		if (const LLViewerInventoryCategory* cat = item->getLinkedCategory())
-		{
-			preferred_type = cat->getPreferredType();
-		}
-	}
-	return LLFolderBridge::getIcon(preferred_type);
-}
-
-void LLLinkFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
-	// *TODO: Translate
-	lldebugs << "LLLink::buildContextMenu()" << llendl;
-	menuentry_vec_t items;
-	menuentry_vec_t disabled_items;
-
-	if (isItemInTrash())
-	{
-		addTrashContextMenuOptions(items, disabled_items);
-	}
-	else
-	{
-		items.push_back(std::string("Find Original"));
-		addDeleteContextMenuOptions(items, disabled_items);
-	}
-	hide_context_entries(menu, items, disabled_items);
-}
-
-void LLLinkFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
-{
-	if ("goto" == action)
-	{
-		gotoItem(folder);
-		return;
-	}
-	LLItemBridge::performAction(folder,model,action);
-}
-
-void LLLinkFolderBridge::gotoItem(LLFolderView *folder)
+LLInvFVBridgeAction* LLInvFVBridgeAction::createAction(LLAssetType::EType asset_type,
+													   const LLUUID& uuid,
+													   LLInventoryModel* model)
 {
-	const LLUUID &cat_uuid = getFolderID();
-	if (!cat_uuid.isNull())
+	LLInvFVBridgeAction* action = NULL;
+	switch(asset_type)
 	{
-		if (LLFolderViewItem *base_folder = folder->getItemByID(cat_uuid))
-		{
-			if (LLInventoryModel* model = getInventoryModel())
-			{
-				model->fetchDescendentsOf(cat_uuid);
-			}
-			base_folder->setOpen(TRUE);
-			folder->setSelectionFromRoot(base_folder,TRUE);
-			folder->scrollToShowSelection();
-		}
+		case LLAssetType::AT_TEXTURE:
+			action = new LLTextureBridgeAction(uuid,model);
+			break;
+		case LLAssetType::AT_SOUND:
+			action = new LLSoundBridgeAction(uuid,model);
+			break;
+		case LLAssetType::AT_LANDMARK:
+			action = new LLLandmarkBridgeAction(uuid,model);
+			break;
+		case LLAssetType::AT_CALLINGCARD:
+			action = new LLCallingCardBridgeAction(uuid,model);
+			break;
+		case LLAssetType::AT_OBJECT:
+			action = new LLObjectBridgeAction(uuid,model);
+			break;
+		case LLAssetType::AT_NOTECARD:
+			action = new LLNotecardBridgeAction(uuid,model);
+			break;
+		case LLAssetType::AT_ANIMATION:
+			action = new LLAnimationBridgeAction(uuid,model);
+			break;
+		case LLAssetType::AT_GESTURE:
+			action = new LLGestureBridgeAction(uuid,model);
+			break;
+		case LLAssetType::AT_LSL_TEXT:
+			action = new LLLSLTextBridgeAction(uuid,model);
+			break;
+		case LLAssetType::AT_CLOTHING:
+		case LLAssetType::AT_BODYPART:
+			action = new LLWearableBridgeAction(uuid,model);
+			break;
+		default:
+			break;
 	}
+	return action;
 }
 
-const LLUUID &LLLinkFolderBridge::getFolderID() const
-{
-	if (LLViewerInventoryItem *link_item = getItem())
-	{
-		if (const LLViewerInventoryCategory *cat = link_item->getLinkedCategory())
-		{
-			const LLUUID& cat_uuid = cat->getUUID();
-			return cat_uuid;
-		}
-	}
-	return LLUUID::null;
-}
+/**                    Bridge Actions
+ **
+ ********************************************************************************/
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index 32504091cb9ca273288efc565421b7b7c8f011bf..e7b3785a48b8e2019d5b79c9d1fbc4c7497276c7 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -44,78 +44,13 @@
 class LLInventoryPanel;
 class LLInventoryModel;
 class LLMenuGL;
-
-enum EInventoryIcon
-{
-	TEXTURE_ICON_NAME,
-	SOUND_ICON_NAME,
-	CALLINGCARD_ONLINE_ICON_NAME,
-	CALLINGCARD_OFFLINE_ICON_NAME,
-	LANDMARK_ICON_NAME,
-	LANDMARK_VISITED_ICON_NAME,
-	SCRIPT_ICON_NAME,
-	CLOTHING_ICON_NAME,
-	OBJECT_ICON_NAME,
-	OBJECT_MULTI_ICON_NAME,
-	NOTECARD_ICON_NAME,
-	BODYPART_ICON_NAME,
-	SNAPSHOT_ICON_NAME,
-
-	BODYPART_SHAPE_ICON_NAME,
-	BODYPART_SKIN_ICON_NAME,
-	BODYPART_HAIR_ICON_NAME,
-	BODYPART_EYES_ICON_NAME,
-	CLOTHING_SHIRT_ICON_NAME,
-	CLOTHING_PANTS_ICON_NAME,
-	CLOTHING_SHOES_ICON_NAME,
-	CLOTHING_SOCKS_ICON_NAME,
-	CLOTHING_JACKET_ICON_NAME,
-	CLOTHING_GLOVES_ICON_NAME,
-	CLOTHING_UNDERSHIRT_ICON_NAME,
-	CLOTHING_UNDERPANTS_ICON_NAME,
-	CLOTHING_SKIRT_ICON_NAME,
-	CLOTHING_ALPHA_ICON_NAME,
-	CLOTHING_TATTOO_ICON_NAME,
-	
-	ANIMATION_ICON_NAME,
-	GESTURE_ICON_NAME,
-
-	LINKITEM_ICON_NAME,
-	LINKFOLDER_ICON_NAME,
-
-	ICON_NAME_COUNT
-};
-
-extern std::string ICON_NAME[ICON_NAME_COUNT];
-
-typedef std::pair<LLUUID, LLUUID> two_uuids_t;
-typedef std::list<two_uuids_t> two_uuids_list_t;
-typedef std::pair<LLUUID, two_uuids_list_t> uuid_move_list_t;
-
-struct LLMoveInv
-{
-	LLUUID mObjectID;
-	LLUUID mCategoryID;
-	two_uuids_list_t mMoveList;
-	void (*mCallback)(S32, void*);
-	void* mUserData;
-};
-
-struct LLAttachmentRezAction
-{
-	LLUUID	mItemID;
-	S32		mAttachPt;
-};
+class LLCallingCardObserver;
+class LLViewerJointAttachment;
 
 typedef std::vector<std::string> menuentry_vec_t;
 
-const std::string safe_inv_type_lookup(LLInventoryType::EType inv_type);
-void hide_context_entries(LLMenuGL& menu, 
-						  const menuentry_vec_t &entries_to_show,
-						  const menuentry_vec_t &disabled_entries);
-
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLInvFVBridge (& its derived classes)
+// Class LLInvFVBridge
 //
 // Short for Inventory-Folder-View-Bridge. This is an
 // implementation class to be able to view inventory items.
@@ -134,6 +69,7 @@ class LLInvFVBridge : public LLFolderViewEventListener
 									   LLAssetType::EType actual_asset_type,
 									   LLInventoryType::EType inv_type,
 									   LLInventoryPanel* inventory,
+									   LLFolderView* root,
 									   const LLUUID& uuid,
 									   U32 flags = 0x00);
 	virtual ~LLInvFVBridge() {}
@@ -175,7 +111,7 @@ class LLInvFVBridge : public LLFolderViewEventListener
 	virtual void pasteFromClipboard() {}
 	virtual void pasteLinkFromClipboard() {}
 	void getClipboardEntries(bool show_asset_id, menuentry_vec_t &items, 
-		menuentry_vec_t &disabled_items, U32 flags);
+							 menuentry_vec_t &disabled_items, U32 flags);
 	virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
 	virtual BOOL startDrag(EDragAndDropType* type, LLUUID* id) const;
 	virtual BOOL dragOrDrop(MASK mask, BOOL drop,
@@ -199,7 +135,7 @@ class LLInvFVBridge : public LLFolderViewEventListener
 											 menuentry_vec_t &disabled_items);
 
 protected:
-	LLInvFVBridge(LLInventoryPanel* inventory, const LLUUID& uuid);
+	LLInvFVBridge(LLInventoryPanel* inventory, LLFolderView* root, const LLUUID& uuid);
 
 	LLInventoryObject* getInventoryObject() const;
 	LLInventoryModel* getInventoryModel() const;
@@ -221,40 +157,88 @@ class LLInvFVBridge : public LLFolderViewEventListener
 	void removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener*>& batch);
 protected:
 	LLHandle<LLPanel> mInventoryPanel;
+	LLFolderView* mRoot;
 	const LLUUID mUUID;	// item id
 	LLInventoryType::EType mInvType;
 	void purgeItem(LLInventoryModel *model, const LLUUID &uuid);
 };
 
-/**
- * This class intended to build Folder View Bridge via LLInvFVBridge::createBridge.
- * It can be overridden with another way of creation necessary Inventory-Folder-View-Bridge.
- */
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLInvFVBridge
+//
+// This class intended to build Folder View Bridge via LLInvFVBridge::createBridge.
+// It can be overridden with another way of creation necessary Inventory-Folder-View-Bridge.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 class LLInventoryFVBridgeBuilder
 {
 public:
- 	virtual ~LLInventoryFVBridgeBuilder(){}
+ 	virtual ~LLInventoryFVBridgeBuilder() {}
 	virtual LLInvFVBridge* createBridge(LLAssetType::EType asset_type,
 										LLAssetType::EType actual_asset_type,
 										LLInventoryType::EType inv_type,
 										LLInventoryPanel* inventory,
+										LLFolderView* root,
 										const LLUUID& uuid,
 										U32 flags = 0x00) const;
 };
 
+// Used by LLItemBridge::getIcon
+enum EInventoryIcon
+{
+	TEXTURE_ICON_NAME,
+	SOUND_ICON_NAME,
+	CALLINGCARD_ONLINE_ICON_NAME,
+	CALLINGCARD_OFFLINE_ICON_NAME,
+	LANDMARK_ICON_NAME,
+	LANDMARK_VISITED_ICON_NAME,
+	SCRIPT_ICON_NAME,
+	CLOTHING_ICON_NAME,
+	OBJECT_ICON_NAME,
+	OBJECT_MULTI_ICON_NAME,
+	NOTECARD_ICON_NAME,
+	BODYPART_ICON_NAME,
+	SNAPSHOT_ICON_NAME,
+
+	BODYPART_SHAPE_ICON_NAME,
+	BODYPART_SKIN_ICON_NAME,
+	BODYPART_HAIR_ICON_NAME,
+	BODYPART_EYES_ICON_NAME,
+	CLOTHING_SHIRT_ICON_NAME,
+	CLOTHING_PANTS_ICON_NAME,
+	CLOTHING_SHOES_ICON_NAME,
+	CLOTHING_SOCKS_ICON_NAME,
+	CLOTHING_JACKET_ICON_NAME,
+	CLOTHING_GLOVES_ICON_NAME,
+	CLOTHING_UNDERSHIRT_ICON_NAME,
+	CLOTHING_UNDERPANTS_ICON_NAME,
+	CLOTHING_SKIRT_ICON_NAME,
+	CLOTHING_ALPHA_ICON_NAME,
+	CLOTHING_TATTOO_ICON_NAME,
+	
+	ANIMATION_ICON_NAME,
+	GESTURE_ICON_NAME,
+
+	LINKITEM_ICON_NAME,
+	LINKFOLDER_ICON_NAME,
+
+	ICON_NAME_COUNT
+};
+extern std::string ICON_NAME[ICON_NAME_COUNT];
 
 class LLItemBridge : public LLInvFVBridge
 {
 public:
-	LLItemBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
-		LLInvFVBridge(inventory, uuid) {}
+	LLItemBridge(LLInventoryPanel* inventory, 
+				 LLFolderView* root,
+				 const LLUUID& uuid) :
+		LLInvFVBridge(inventory, root, uuid) {}
 
-	virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+	virtual void performAction(LLInventoryModel* model, std::string action);
 
 	virtual void selectItem();
 	virtual void restoreItem();
 	virtual void restoreToWorld();
-	virtual void gotoItem(LLFolderView *folder);
+	virtual void gotoItem();
 	virtual LLUIImagePtr getIcon() const;
 	virtual const std::string& getDisplayName() const;
 	virtual std::string getLabelSuffix() const;
@@ -283,7 +267,6 @@ class LLItemBridge : public LLInvFVBridge
 	mutable std::string mDisplayName;
 };
 
-
 class LLFolderBridge : public LLInvFVBridge
 {
 	friend class LLInvFVBridge;
@@ -292,7 +275,7 @@ class LLFolderBridge : public LLInvFVBridge
 							BOOL drop);
 	BOOL dragCategoryIntoFolder(LLInventoryCategory* inv_category,
 								BOOL drop);
-	virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+	virtual void performAction(LLInventoryModel* model, std::string action);
 	virtual void openItem();
 	virtual void closeItem();
 	virtual BOOL isItemRenameable() const;
@@ -332,9 +315,10 @@ class LLFolderBridge : public LLInvFVBridge
 	LLViewerInventoryCategory* getCategory() const;
 
 protected:
-	LLFolderBridge(LLInventoryPanel* inventory, const LLUUID& uuid)
-		: LLInvFVBridge(inventory, uuid),
-
+	LLFolderBridge(LLInventoryPanel* inventory, 
+				   LLFolderView* root,
+				   const LLUUID& uuid) :
+		LLInvFVBridge(inventory, root, uuid),
 		mCallingCards(FALSE),
 		mWearables(FALSE),
 		mMenu(NULL) {}
@@ -383,11 +367,12 @@ class LLScriptBridge : public LLItemBridge
 	LLUIImagePtr getIcon() const;
 
 protected:
-	LLScriptBridge( LLInventoryPanel* inventory, const LLUUID& uuid ) :
-		LLItemBridge(inventory, uuid) {}
+	LLScriptBridge(LLInventoryPanel* inventory, 
+				   LLFolderView* root,
+				   const LLUUID& uuid ) :
+		LLItemBridge(inventory, root, uuid) {}
 };
 
-
 class LLTextureBridge : public LLItemBridge
 {
 	friend class LLInvFVBridge;
@@ -395,11 +380,16 @@ class LLTextureBridge : public LLItemBridge
 	virtual LLUIImagePtr getIcon() const;
 	virtual void openItem();
 	virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
-	virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+	virtual void performAction(LLInventoryModel* model, std::string action);
 
 protected:
-	LLTextureBridge(LLInventoryPanel* inventory, const LLUUID& uuid, LLInventoryType::EType type) :
-		LLItemBridge(inventory, uuid), mInvType(type) {}
+	LLTextureBridge(LLInventoryPanel* inventory, 
+					LLFolderView* root,
+					const LLUUID& uuid, 
+					LLInventoryType::EType type) :
+		LLItemBridge(inventory, root, uuid),
+		mInvType(type) 
+	{}
 	bool canSaveTexture(void);
 	LLInventoryType::EType mInvType;
 };
@@ -415,39 +405,30 @@ class LLSoundBridge : public LLItemBridge
 	static void openSoundPreview(void*);
 
 protected:
-	LLSoundBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
-		LLItemBridge(inventory, uuid) {}
+	LLSoundBridge(LLInventoryPanel* inventory, 
+				  LLFolderView* root,
+				  const LLUUID& uuid) :
+		LLItemBridge(inventory, root, uuid) {}
 };
 
 class LLLandmarkBridge : public LLItemBridge
 {
 	friend class LLInvFVBridge;
 public:
-	virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+	virtual void performAction(LLInventoryModel* model, std::string action);
 	virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
 	virtual LLUIImagePtr getIcon() const;
 	virtual void openItem();
 
 protected:
-	LLLandmarkBridge(LLInventoryPanel* inventory, const LLUUID& uuid, U32 flags = 0x00);
-
+	LLLandmarkBridge(LLInventoryPanel* inventory, 
+					 LLFolderView* root,
+					 const LLUUID& uuid, 
+					 U32 flags = 0x00);
 protected:
 	BOOL mVisited;
 };
 
-class LLCallingCardBridge;
-
-class LLCallingCardObserver : public LLFriendObserver
-{
-public:
-	LLCallingCardObserver(LLCallingCardBridge* bridge) : mBridgep(bridge) {}
-	virtual ~LLCallingCardObserver() { mBridgep = NULL; }
-	virtual void changed(U32 mask);
-
-protected:
-	LLCallingCardBridge* mBridgep;
-};
-
 class LLCallingCardBridge : public LLItemBridge
 {
 	friend class LLInvFVBridge;
@@ -455,20 +436,18 @@ class LLCallingCardBridge : public LLItemBridge
 	virtual std::string getLabelSuffix() const;
 	//virtual const std::string& getDisplayName() const;
 	virtual LLUIImagePtr getIcon() const;
-	virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+	virtual void performAction(LLInventoryModel* model, std::string action);
 	virtual void openItem();
 	virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
-	//virtual void renameItem(const std::string& new_name);
-	//virtual BOOL removeItem();
 	virtual BOOL dragOrDrop(MASK mask, BOOL drop,
 							EDragAndDropType cargo_type,
 							void* cargo_data);
 	void refreshFolderViewItem();
-
 protected:
-	LLCallingCardBridge( LLInventoryPanel* inventory, const LLUUID& uuid );
+	LLCallingCardBridge(LLInventoryPanel* inventory, 
+						LLFolderView* folder,
+						const LLUUID& uuid );
 	~LLCallingCardBridge();
-	
 protected:
 	LLCallingCardObserver* mObserver;
 };
@@ -480,10 +459,11 @@ class LLNotecardBridge : public LLItemBridge
 public:
 	virtual LLUIImagePtr getIcon() const;
 	virtual void openItem();
-
 protected:
-	LLNotecardBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
-		LLItemBridge(inventory, uuid) {}
+	LLNotecardBridge(LLInventoryPanel* inventory, 
+					 LLFolderView* root,
+					 const LLUUID& uuid) :
+		LLItemBridge(inventory, root, uuid) {}
 };
 
 class LLGestureBridge : public LLItemBridge
@@ -497,7 +477,7 @@ class LLGestureBridge : public LLItemBridge
 	virtual LLFontGL::StyleFlags getLabelStyle() const;
 	virtual std::string getLabelSuffix() const;
 
-	virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+	virtual void performAction(LLInventoryModel* model, std::string action);
 	virtual void openItem();
 	virtual BOOL removeItem();
 
@@ -506,33 +486,35 @@ class LLGestureBridge : public LLItemBridge
 	static void playGesture(const LLUUID& item_id);
 
 protected:
-	LLGestureBridge(LLInventoryPanel* inventory, const LLUUID& uuid)
-	:	LLItemBridge(inventory, uuid) {}
+	LLGestureBridge(LLInventoryPanel* inventory, 
+					LLFolderView* root,
+					const LLUUID& uuid)
+	:	LLItemBridge(inventory, root, uuid) {}
 };
 
-
 class LLAnimationBridge : public LLItemBridge
 {
 	friend class LLInvFVBridge;
 public:
-	virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+	virtual void performAction(LLInventoryModel* model, std::string action);
 	virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
 
 	virtual LLUIImagePtr getIcon() const;
 	virtual void openItem();
 
 protected:
-	LLAnimationBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
-		LLItemBridge(inventory, uuid) {}
+	LLAnimationBridge(LLInventoryPanel* inventory, 
+					  LLFolderView* root, 
+					  const LLUUID& uuid) :
+		LLItemBridge(inventory, root, uuid) {}
 };
 
-
 class LLObjectBridge : public LLItemBridge
 {
 	friend class LLInvFVBridge;
 public:
 	virtual LLUIImagePtr	getIcon() const;
-	virtual void			performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+	virtual void			performAction(LLInventoryModel* model, std::string action);
 	virtual void			openItem();
 	virtual LLFontGL::StyleFlags getLabelStyle() const;
 	virtual std::string getLabelSuffix() const;
@@ -540,10 +522,12 @@ class LLObjectBridge : public LLItemBridge
 	virtual BOOL renameItem(const std::string& new_name);
 
 	LLInventoryObject* getObject() const;
-
 protected:
-	LLObjectBridge(LLInventoryPanel* inventory, const LLUUID& uuid, LLInventoryType::EType type, U32 flags);
-
+	LLObjectBridge(LLInventoryPanel* inventory, 
+				   LLFolderView* root, 
+				   const LLUUID& uuid, 
+				   LLInventoryType::EType type, 
+				   U32 flags);
 protected:
 	static LLUUID	sContextMenuItemID;  // Only valid while the context menu is open.
 	LLInventoryType::EType mInvType;
@@ -551,26 +535,25 @@ class LLObjectBridge : public LLItemBridge
 	BOOL mIsMultiObject;
 };
 
-
 class LLLSLTextBridge : public LLItemBridge
 {
 	friend class LLInvFVBridge;
 public:
 	virtual LLUIImagePtr getIcon() const;
 	virtual void openItem();
-
 protected:
-	LLLSLTextBridge( LLInventoryPanel* inventory, const LLUUID& uuid ) :
-		LLItemBridge(inventory, uuid) {}
+	LLLSLTextBridge(LLInventoryPanel* inventory, 
+					LLFolderView* root, 
+					const LLUUID& uuid ) :
+		LLItemBridge(inventory, root, uuid) {}
 };
 
-
 class LLWearableBridge : public LLItemBridge
 {
 	friend class LLInvFVBridge;
 public:
 	virtual LLUIImagePtr getIcon() const;
-	virtual void	performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+	virtual void	performAction(LLInventoryModel* model, std::string action);
 	virtual void	openItem();
 	virtual void	buildContextMenu(LLMenuGL& menu, U32 flags);
 	virtual std::string getLabelSuffix() const;
@@ -596,13 +579,12 @@ class LLWearableBridge : public LLItemBridge
 	void			removeFromAvatar();
 
 protected:
-	LLWearableBridge(LLInventoryPanel* inventory, const LLUUID& uuid, LLAssetType::EType asset_type, LLInventoryType::EType inv_type, EWearableType  wearable_type) :
-		LLItemBridge(inventory, uuid),
-		mAssetType( asset_type ),
-		mInvType(inv_type),
-		mWearableType(wearable_type)
-		{}
-
+	LLWearableBridge(LLInventoryPanel* inventory, 
+					 LLFolderView* root, 
+					 const LLUUID& uuid, 
+					 LLAssetType::EType asset_type, 
+					 LLInventoryType::EType inv_type, 
+					 EWearableType wearable_type);
 protected:
 	LLAssetType::EType mAssetType;
 	LLInventoryType::EType mInvType;
@@ -614,41 +596,38 @@ class LLLinkItemBridge : public LLItemBridge
 	friend class LLInvFVBridge;
 public:
 	virtual const std::string& getPrefix() { return sPrefix; }
-
 	virtual LLUIImagePtr getIcon() const;
 	virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
-
 protected:
-	LLLinkItemBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
-		LLItemBridge(inventory, uuid) {}
-
+	LLLinkItemBridge(LLInventoryPanel* inventory, 
+					 LLFolderView* root,
+					 const LLUUID& uuid) :
+		LLItemBridge(inventory, root, uuid) {}
 protected:
 	static std::string sPrefix;
 };
 
-
 class LLLinkFolderBridge : public LLItemBridge
 {
 	friend class LLInvFVBridge;
 public:
 	virtual const std::string& getPrefix() { return sPrefix; }
-
 	virtual LLUIImagePtr getIcon() const;
 	virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
-	virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
-	virtual void gotoItem(LLFolderView *folder);
-
+	virtual void performAction(LLInventoryModel* model, std::string action);
+	virtual void gotoItem();
 protected:
-	LLLinkFolderBridge(LLInventoryPanel* inventory, const LLUUID& uuid) :
-		LLItemBridge(inventory, uuid) {}
+	LLLinkFolderBridge(LLInventoryPanel* inventory, 
+					   LLFolderView* root,
+					   const LLUUID& uuid) :
+		LLItemBridge(inventory, root, uuid) {}
 	const LLUUID &getFolderID() const;
-
 protected:
 	static std::string sPrefix;
 };
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLInvFVBridgeAction (& its derived classes)
+// Class LLInvFVBridgeAction
 //
 // This is an implementation class to be able to 
 // perform action to view inventory items.
@@ -658,159 +637,30 @@ class LLInvFVBridgeAction
 {
 public:
 	// This method is a convenience function which creates the correct
-	// type of bridge action based on some basic information
+	// type of bridge action based on some basic information.
 	static LLInvFVBridgeAction* createAction(LLAssetType::EType asset_type,
-											 const LLUUID& uuid,LLInventoryModel* model);
-
+											 const LLUUID& uuid,
+											 LLInventoryModel* model);
 	static void doAction(LLAssetType::EType asset_type,
 						 const LLUUID& uuid, LLInventoryModel* model);
 	static void doAction(const LLUUID& uuid, LLInventoryModel* model);
 
-	virtual void doIt() {  };
-	virtual ~LLInvFVBridgeAction(){}//need this because of warning on OSX
+	virtual void doIt() {};
+	virtual ~LLInvFVBridgeAction() {} // need this because of warning on OSX
 protected:
-	LLInvFVBridgeAction(const LLUUID& id,LLInventoryModel* model):mUUID(id),mModel(model){}
-
+	LLInvFVBridgeAction(const LLUUID& id, LLInventoryModel* model) :
+		mUUID(id), mModel(model) {}
 	LLViewerInventoryItem* getItem() const;
 protected:
-	const LLUUID& mUUID;	// item id
+	const LLUUID& mUUID; // item id
 	LLInventoryModel* mModel;
-
-};
-
-
-
-class LLTextureBridgeAction: public LLInvFVBridgeAction
-{
-	friend class LLInvFVBridgeAction;
-public:
-	virtual void	doIt() ;
-	virtual ~LLTextureBridgeAction(){}
-protected:
-	LLTextureBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLSoundBridgeAction: public LLInvFVBridgeAction
-{
-	friend class LLInvFVBridgeAction;
-public:
-	virtual void	doIt() ;
-	virtual ~LLSoundBridgeAction(){}
-protected:
-	LLSoundBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLLandmarkBridgeAction: public LLInvFVBridgeAction
-{
-	friend class LLInvFVBridgeAction;
-public:
-	virtual void	doIt() ;
-	virtual ~LLLandmarkBridgeAction(){}
-protected:
-	LLLandmarkBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLCallingCardBridgeAction: public LLInvFVBridgeAction
-{
-	friend class LLInvFVBridgeAction;
-public:
-	virtual void	doIt() ;
-	virtual ~LLCallingCardBridgeAction(){}
-protected:
-	LLCallingCardBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLNotecardBridgeAction: public LLInvFVBridgeAction
-{
-	friend class LLInvFVBridgeAction;
-public:
-	virtual void	doIt() ;
-	virtual ~LLNotecardBridgeAction(){}
-protected:
-	LLNotecardBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLGestureBridgeAction: public LLInvFVBridgeAction
-{
-	friend class LLInvFVBridgeAction;
-public:
-	virtual void	doIt() ;
-	virtual ~LLGestureBridgeAction(){}
-protected:
-	LLGestureBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLAnimationBridgeAction: public LLInvFVBridgeAction
-{
-	friend class LLInvFVBridgeAction;
-public:
-	virtual void	doIt() ;
-	virtual ~LLAnimationBridgeAction(){}
-protected:
-	LLAnimationBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLObjectBridgeAction: public LLInvFVBridgeAction
-{
-	friend class LLInvFVBridgeAction;
-public:
-	virtual void	doIt() ;
-	virtual ~LLObjectBridgeAction(){}
-protected:
-	LLObjectBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
 };
 
 
-class LLLSLTextBridgeAction: public LLInvFVBridgeAction
-{
-	friend class LLInvFVBridgeAction;
-public:
-	virtual void	doIt() ;
-	virtual ~LLLSLTextBridgeAction(){}
-protected:
-	LLLSLTextBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-};
-
-
-class LLWearableBridgeAction: public LLInvFVBridgeAction
-{
-	friend class LLInvFVBridgeAction;
-public:
-	virtual void	doIt();
-	virtual ~LLWearableBridgeAction(){}
-protected:
-	LLWearableBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
-
-
-	BOOL isItemInTrash() const;
-	// return true if the item is in agent inventory. if false, it
-	// must be lost or in the inventory library.
-	BOOL isAgentInventory() const;
-
-	void wearOnAvatar();
-
-};
-
 void wear_inventory_item_on_avatar(LLInventoryItem* item);
 
-class LLViewerJointAttachment;
-void rez_attachment(LLViewerInventoryItem* item, LLViewerJointAttachment* attachment);
+void rez_attachment(LLViewerInventoryItem* item, 
+					LLViewerJointAttachment* attachment);
 
 // Move items from an in-world object's "Contents" folder to a specified
 // folder in agent inventory.
@@ -820,13 +670,9 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
 									  void (*callback)(S32, void*) = NULL,
 									  void* user_data = NULL);
 
-
-
-void teleport_via_landmark(const LLUUID& asset_id);
-
 // Utility function to hide all entries except those in the list
 void hide_context_entries(LLMenuGL& menu, 
-		const menuentry_vec_t &entries_to_show, 
-		const menuentry_vec_t &disabled_entries);
+						  const menuentry_vec_t &entries_to_show, 
+						  const menuentry_vec_t &disabled_entries);
 
 #endif // LL_LLINVENTORYBRIDGE_H
diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp
index cd20d64ca8ef9384f0c1785b7821a9654fd68510..1a488175ac93ef1c3c5d0f0a0a6bd0b3c2cdd83d 100644
--- a/indra/newview/llinventoryfilter.cpp
+++ b/indra/newview/llinventoryfilter.cpp
@@ -37,7 +37,8 @@
 // viewer includes
 #include "llfoldervieweventlistener.h"
 #include "llfolderviewitem.h"
-#include "llinventorymodel.h"	// gInventory.backgroundFetchActive()
+#include "llinventorymodel.h"
+#include "llinventorymodelbackgroundfetch.h"
 #include "llviewercontrol.h"
 #include "llfolderview.h"
 
@@ -713,7 +714,7 @@ const std::string& LLInventoryFilter::getFilterText()
 		filtered_by_all_types = FALSE;
 	}
 
-	if (!gInventory.backgroundFetchActive()
+	if (!LLInventoryModelBackgroundFetch::instance().backgroundFetchActive()
 		&& filtered_by_type
 		&& !filtered_by_all_types)
 	{
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 3553137f5360ec26db9ae613f8efa422c25eabc8..8487588404c4d5dbe8af6b20c212f5b829b9d164 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -41,6 +41,7 @@
 #include "llagentwearables.h"
 #include "llcallingcard.h"
 #include "llfloaterreg.h"
+#include "llinventorydefines.h"
 #include "llsdserialize.h"
 #include "llfiltereditor.h"
 #include "llspinctrl.h"
@@ -86,6 +87,217 @@
 BOOL LLInventoryState::sWearNewClothing = FALSE;
 LLUUID LLInventoryState::sWearNewClothingTransactionID;
 
+
+///----------------------------------------------------------------------------
+/// LLInventoryCollectFunctor implementations
+///----------------------------------------------------------------------------
+
+// static
+bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(LLInventoryItem* item)
+{
+	if (!item)
+		return false;
+
+	bool allowed = false;
+
+	switch(item->getType())
+	{
+		case LLAssetType::AT_CALLINGCARD:
+			// not allowed
+			break;
+			
+		case LLAssetType::AT_OBJECT:
+			if (isAgentAvatarValid() && !gAgentAvatarp->isWearingAttachment(item->getUUID()))
+			{
+				allowed = true;
+			}
+			break;
+			
+		case LLAssetType::AT_BODYPART:
+		case LLAssetType::AT_CLOTHING:
+			if(!gAgentWearables.isWearingItem(item->getUUID()))
+			{
+				allowed = true;
+			}
+			break;
+		default:
+			allowed = true;
+			break;
+	}
+	
+	return allowed;
+}
+
+bool LLIsType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
+{
+	if(mType == LLAssetType::AT_CATEGORY)
+	{
+		if(cat) return TRUE;
+	}
+	if(item)
+	{
+		if(item->getType() == mType) return TRUE;
+	}
+	return FALSE;
+}
+
+bool LLIsNotType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
+{
+	if(mType == LLAssetType::AT_CATEGORY)
+	{
+		if(cat) return FALSE;
+	}
+	if(item)
+	{
+		if(item->getType() == mType) return FALSE;
+		else return TRUE;
+	}
+	return TRUE;
+}
+
+bool LLIsTypeWithPermissions::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
+{
+	if(mType == LLAssetType::AT_CATEGORY)
+	{
+		if(cat) 
+		{
+			return TRUE;
+		}
+	}
+	if(item)
+	{
+		if(item->getType() == mType)
+		{
+			LLPermissions perm = item->getPermissions();
+			if ((perm.getMaskBase() & mPerm) == mPerm)
+			{
+				return TRUE;
+			}
+		}
+	}
+	return FALSE;
+}
+
+bool LLBuddyCollector::operator()(LLInventoryCategory* cat,
+								  LLInventoryItem* item)
+{
+	if(item)
+	{
+		if((LLAssetType::AT_CALLINGCARD == item->getType())
+		   && (!item->getCreatorUUID().isNull())
+		   && (item->getCreatorUUID() != gAgent.getID()))
+		{
+			return true;
+		}
+	}
+	return false;
+}
+
+
+bool LLUniqueBuddyCollector::operator()(LLInventoryCategory* cat,
+										LLInventoryItem* item)
+{
+	if(item)
+	{
+		if((LLAssetType::AT_CALLINGCARD == item->getType())
+ 		   && (item->getCreatorUUID().notNull())
+ 		   && (item->getCreatorUUID() != gAgent.getID()))
+		{
+			mSeen.insert(item->getCreatorUUID());
+			return true;
+		}
+	}
+	return false;
+}
+
+
+bool LLParticularBuddyCollector::operator()(LLInventoryCategory* cat,
+											LLInventoryItem* item)
+{
+	if(item)
+	{
+		if((LLAssetType::AT_CALLINGCARD == item->getType())
+		   && (item->getCreatorUUID() == mBuddyID))
+		{
+			return TRUE;
+		}
+	}
+	return FALSE;
+}
+
+
+bool LLNameCategoryCollector::operator()(
+	LLInventoryCategory* cat, LLInventoryItem* item)
+{
+	if(cat)
+	{
+		if (!LLStringUtil::compareInsensitive(mName, cat->getName()))
+		{
+			return true;
+		}
+	}
+	return false;
+}
+
+bool LLFindCOFValidItems::operator()(LLInventoryCategory* cat,
+									 LLInventoryItem* item)
+{
+	// Valid COF items are:
+	// - links to wearables (body parts or clothing)
+	// - links to attachments
+	// - links to gestures
+	// - links to ensemble folders
+	LLViewerInventoryItem *linked_item = ((LLViewerInventoryItem*)item)->getLinkedItem();
+	if (linked_item)
+	{
+		LLAssetType::EType type = linked_item->getType();
+		return (type == LLAssetType::AT_CLOTHING ||
+				type == LLAssetType::AT_BODYPART ||
+				type == LLAssetType::AT_GESTURE ||
+				type == LLAssetType::AT_OBJECT);
+	}
+	else
+	{
+		LLViewerInventoryCategory *linked_category = ((LLViewerInventoryItem*)item)->getLinkedCategory();
+		// BAP remove AT_NONE support after ensembles are fully working?
+		return (linked_category &&
+				((linked_category->getPreferredType() == LLFolderType::FT_NONE) ||
+				 (LLFolderType::lookupIsEnsembleType(linked_category->getPreferredType()))));
+	}
+}
+
+bool LLFindWearables::operator()(LLInventoryCategory* cat,
+								 LLInventoryItem* item)
+{
+	if(item)
+	{
+		if((item->getType() == LLAssetType::AT_CLOTHING)
+		   || (item->getType() == LLAssetType::AT_BODYPART))
+		{
+			return TRUE;
+		}
+	}
+	return FALSE;
+}
+
+///----------------------------------------------------------------------------
+/// LLAssetIDMatches 
+///----------------------------------------------------------------------------
+bool LLAssetIDMatches::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
+{
+	return (item && item->getAssetUUID() == mAssetID);
+}
+
+///----------------------------------------------------------------------------
+/// LLLinkedItemIDMatches 
+///----------------------------------------------------------------------------
+bool LLLinkedItemIDMatches::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
+{
+	return (item && 
+			(item->getIsLinkType()) &&
+			(item->getLinkedUUID() == mBaseItemID)); // A linked item's assetID will be the compared-to item's itemID.
+}
+
 void LLSaveFolderState::setApply(BOOL apply)
 {
 	mApply = apply; 
@@ -197,7 +409,7 @@ void LLOpenFoldersWithSelection::doFolder(LLFolderViewFolder* folder)
 
 static void assign_clothing_bodypart_icon(EInventoryIcon &idx, U32 attachment_point)
 {
-	const EWearableType wearable_type = EWearableType(LLInventoryItem::II_FLAGS_WEARABLES_MASK & attachment_point);
+	const EWearableType wearable_type = EWearableType(LLInventoryItemFlags::II_FLAGS_WEARABLES_MASK & attachment_point);
 	switch(wearable_type)
 	{
 		case WT_SHAPE:
@@ -352,8 +564,7 @@ BOOL get_is_item_worn(const LLUUID& id)
 	{
 		case LLAssetType::AT_OBJECT:
 		{
-			const LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject();
-			if(my_avatar && my_avatar->isWearingAttachment(item->getLinkedUUID()))
+			if (isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item->getLinkedUUID()))
 				return TRUE;
 			break;
 		}
@@ -363,7 +574,7 @@ BOOL get_is_item_worn(const LLUUID& id)
 				return TRUE;
 			break;
 		case LLAssetType::AT_GESTURE:
-			if (LLGestureManager::instance().isGestureActive(item->getLinkedUUID()))
+			if (LLGestureMgr::instance().isGestureActive(item->getLinkedUUID()))
 				return TRUE;
 			break;
 		default:
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index 968db84819bcb797615139b5c5ce1ec6880fbe3f..e3cd988e39c07ff35723f8d538830d499a8880b6 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -38,14 +38,212 @@
 #include "llfolderview.h"
 #include "llfolderviewitem.h"
 
+/********************************************************************************
+ **                                                                            **
+ **                    INVENTORY COLLECTOR FUNCTIONS
+ **/
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLInventoryCollectFunctor
+//
+// Base class for LLInventoryModel::collectDescendentsIf() method
+// which accepts an instance of one of these objects to use as the
+// function to determine if it should be added. Derive from this class
+// and override the () operator to return TRUE if you want to collect
+// the category or item passed in.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLInventoryCollectFunctor
+{
+public:
+	virtual ~LLInventoryCollectFunctor(){};
+	virtual bool operator()(LLInventoryCategory* cat, LLInventoryItem* item) = 0;
+
+	static bool itemTransferCommonlyAllowed(LLInventoryItem* item);
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLAssetIDMatches
+//
+// This functor finds inventory items pointing to the specified asset
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLViewerInventoryItem;
+
+class LLAssetIDMatches : public LLInventoryCollectFunctor
+{
+public:
+	LLAssetIDMatches(const LLUUID& asset_id) : mAssetID(asset_id) {}
+	virtual ~LLAssetIDMatches() {}
+	bool operator()(LLInventoryCategory* cat, LLInventoryItem* item);
+	
+protected:
+	LLUUID mAssetID;
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLLinkedItemIDMatches
+//
+// This functor finds inventory items linked to the specific inventory id.
+// Assumes the inventory id is itself not a linked item.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLLinkedItemIDMatches : public LLInventoryCollectFunctor
+{
+public:
+	LLLinkedItemIDMatches(const LLUUID& item_id) : mBaseItemID(item_id) {}
+	virtual ~LLLinkedItemIDMatches() {}
+	bool operator()(LLInventoryCategory* cat, LLInventoryItem* item);
+	
+protected:
+	LLUUID mBaseItemID;
+};
+
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLIsType
 //
-// This is a collection of miscellaneous functions and classes
-// that don't fit cleanly into any other class header.  Eventually,
-// we should figure out where to put these functions so that we can
-// get rid of this generic file.
+// Implementation of a LLInventoryCollectFunctor which returns TRUE if
+// the type is the type passed in during construction.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+class LLIsType : public LLInventoryCollectFunctor
+{
+public:
+	LLIsType(LLAssetType::EType type) : mType(type) {}
+	virtual ~LLIsType() {}
+	virtual bool operator()(LLInventoryCategory* cat,
+							LLInventoryItem* item);
+protected:
+	LLAssetType::EType mType;
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLIsNotType
 //
+// Implementation of a LLInventoryCollectFunctor which returns FALSE if the
+// type is the type passed in during construction, otherwise false.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLIsNotType : public LLInventoryCollectFunctor
+{
+public:
+	LLIsNotType(LLAssetType::EType type) : mType(type) {}
+	virtual ~LLIsNotType() {}
+	virtual bool operator()(LLInventoryCategory* cat,
+							LLInventoryItem* item);
+protected:
+	LLAssetType::EType mType;
+};
+
+class LLIsTypeWithPermissions : public LLInventoryCollectFunctor
+{
+public:
+	LLIsTypeWithPermissions(LLAssetType::EType type, const PermissionBit perms, const LLUUID &agent_id, const LLUUID &group_id) 
+		: mType(type), mPerm(perms), mAgentID(agent_id), mGroupID(group_id) {}
+	virtual ~LLIsTypeWithPermissions() {}
+	virtual bool operator()(LLInventoryCategory* cat,
+							LLInventoryItem* item);
+protected:
+	LLAssetType::EType mType;
+	PermissionBit mPerm;
+	LLUUID			mAgentID;
+	LLUUID			mGroupID;
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLBuddyCollector
+//
+// Simple class that collects calling cards that are not null, and not
+// the agent. Duplicates are possible.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLBuddyCollector : public LLInventoryCollectFunctor
+{
+public:
+	LLBuddyCollector() {}
+	virtual ~LLBuddyCollector() {}
+	virtual bool operator()(LLInventoryCategory* cat,
+							LLInventoryItem* item);
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLUniqueBuddyCollector
+//
+// Simple class that collects calling cards that are not null, and not
+// the agent. Duplicates are discarded.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLUniqueBuddyCollector : public LLInventoryCollectFunctor
+{
+public:
+	LLUniqueBuddyCollector() {}
+	virtual ~LLUniqueBuddyCollector() {}
+	virtual bool operator()(LLInventoryCategory* cat,
+							LLInventoryItem* item);
+
+protected:
+	std::set<LLUUID> mSeen;
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLParticularBuddyCollector
+//
+// Simple class that collects calling cards that match a particular uuid
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+class LLParticularBuddyCollector : public LLInventoryCollectFunctor
+{
+public:
+	LLParticularBuddyCollector(const LLUUID& id) : mBuddyID(id) {}
+	virtual ~LLParticularBuddyCollector() {}
+	virtual bool operator()(LLInventoryCategory* cat,
+							LLInventoryItem* item);
+protected:
+	LLUUID mBuddyID;
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLNameCategoryCollector
+//
+// Collects categories based on case-insensitive match of prefix
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLNameCategoryCollector : public LLInventoryCollectFunctor
+{
+public:
+	LLNameCategoryCollector(const std::string& name) : mName(name) {}
+	virtual ~LLNameCategoryCollector() {}
+	virtual bool operator()(LLInventoryCategory* cat,
+							LLInventoryItem* item);
+protected:
+	std::string mName;
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLFindCOFValidItems
+//
+// Collects items that can be legitimately linked to in the COF.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLFindCOFValidItems : public LLInventoryCollectFunctor
+{
+public:
+	LLFindCOFValidItems() {}
+	virtual ~LLFindCOFValidItems() {}
+	virtual bool operator()(LLInventoryCategory* cat,
+							LLInventoryItem* item);
+	
+};
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLFindWearables
+//
+// Collects wearables based on item type.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLFindWearables : public LLInventoryCollectFunctor
+{
+public:
+	LLFindWearables() {}
+	virtual ~LLFindWearables() {}
+	virtual bool operator()(LLInventoryCategory* cat,
+							LLInventoryItem* item);
+};
+
+/**                    Inventory Collector Functions
+ **                                                                            **
+ *******************************************************************************/
 
 class LLInventoryState
 {
@@ -64,7 +262,7 @@ class LLSelectFirstFilteredItem : public LLFolderViewFunctor
 	virtual void doItem(LLFolderViewItem* item);
 	BOOL wasItemSelected() { return mItemSelected; }
 protected:
-	BOOL	mItemSelected;
+	BOOL mItemSelected;
 };
 
 class LLOpenFilteredFolders : public LLFolderViewFunctor
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 83a466a243c2e2408ce27c5bfb2711edc01cf1ae..6452ae82f8d4ef18bedba1298d837d58e56575dd 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -57,32 +57,16 @@
 #include "process.h"
 #endif
 
-BOOL LLInventoryModel::sBackgroundFetchActive = FALSE;
-BOOL LLInventoryModel::sAllFoldersFetched = FALSE;
-BOOL LLInventoryModel::sMyInventoryFetchStarted = FALSE;
-BOOL LLInventoryModel::sLibraryFetchStarted = FALSE;
-S32  LLInventoryModel::sNumFetchRetries = 0;
-F32  LLInventoryModel::sMinTimeBetweenFetches = 0.3f;
-F32  LLInventoryModel::sMaxTimeBetweenFetches = 10.f;
-BOOL LLInventoryModel::sTimelyFetchPending = FALSE;
-LLFrameTimer LLInventoryModel::sFetchTimer;
-S16 LLInventoryModel::sBulkFetchCount = 0;
-BOOL LLInventoryModel::sFirstTimeInViewer2 = TRUE;
-
 // Increment this if the inventory contents change in a non-backwards-compatible way.
 // For viewer 2, the addition of link items makes a pre-viewer-2 cache incorrect.
 const S32 LLInventoryModel::sCurrentInvCacheVersion = 2;
-
-// RN: for some reason, using std::queue in the header file confuses the compiler which things it's an xmlrpc_queue
-static std::deque<LLUUID> sFetchQueue;
+BOOL LLInventoryModel::sFirstTimeInViewer2 = TRUE;
 
 ///----------------------------------------------------------------------------
 /// Local function declarations, constants, enums, and typedefs
 ///----------------------------------------------------------------------------
 
 //BOOL decompress_file(const char* src_filename, const char* dst_filename);
-const F32 MAX_TIME_FOR_SINGLE_FETCH = 10.f;
-const S32 MAX_FETCH_RETRIES = 10;
 const char CACHE_FORMAT_STRING[] = "%s.inv"; 
 
 struct InventoryIDPtrLess
@@ -1342,545 +1326,9 @@ bool LLInventoryModel::fetchDescendentsOf(const LLUUID& folder_id)
 	//{
 	//	known_descendents += items->count();
 	//}
-	return cat->fetchDescendents();
-}
-
-//Initialize statics.
-bool LLInventoryModel::isBulkFetchProcessingComplete()
-{
-	return sFetchQueue.empty() && sBulkFetchCount<=0;
-}
-
-class LLInventoryModelFetchDescendentsResponder: public LLHTTPClient::Responder
-{
-	public:
-		LLInventoryModelFetchDescendentsResponder(const LLSD& request_sd) : mRequestSD(request_sd) {};
-		//LLInventoryModelFetchDescendentsResponder() {};
-		void result(const LLSD& content);
-		void error(U32 status, const std::string& reason);
-	public:
-		typedef std::vector<LLViewerInventoryCategory*> folder_ref_t;
-	protected:
-		LLSD mRequestSD;
-};
-
-//If we get back a normal response, handle it here
-void  LLInventoryModelFetchDescendentsResponder::result(const LLSD& content)
-{
-	if (content.has("folders"))	
-	{
-
-		for(LLSD::array_const_iterator folder_it = content["folders"].beginArray();
-			folder_it != content["folders"].endArray();
-			++folder_it)
-		{	
-			LLSD folder_sd = *folder_it;
-			
-
-			//LLUUID agent_id = folder_sd["agent_id"];
-
-			//if(agent_id != gAgent.getID())	//This should never happen.
-			//{
-			//	llwarns << "Got a UpdateInventoryItem for the wrong agent."
-			//			<< llendl;
-			//	break;
-			//}
-
-			LLUUID parent_id = folder_sd["folder_id"];
-			LLUUID owner_id = folder_sd["owner_id"];
-			S32    version  = (S32)folder_sd["version"].asInteger();
-			S32    descendents = (S32)folder_sd["descendents"].asInteger();
-			LLPointer<LLViewerInventoryCategory> tcategory = new LLViewerInventoryCategory(owner_id);
-
-            if (parent_id.isNull())
-            {
-			    LLPointer<LLViewerInventoryItem> titem = new LLViewerInventoryItem;
-			    for(LLSD::array_const_iterator item_it = folder_sd["items"].beginArray();
-				    item_it != folder_sd["items"].endArray();
-				    ++item_it)
-			    {	
-                    const LLUUID lost_uuid = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
-                    if (lost_uuid.notNull())
-                    {
-				        LLSD item = *item_it;
-				        titem->unpackMessage(item);
-				
-                        LLInventoryModel::update_list_t update;
-                        LLInventoryModel::LLCategoryUpdate new_folder(lost_uuid, 1);
-                        update.push_back(new_folder);
-                        gInventory.accountForUpdate(update);
-
-                        titem->setParent(lost_uuid);
-                        titem->updateParentOnServer(FALSE);
-                        gInventory.updateItem(titem);
-                        gInventory.notifyObservers("fetchDescendents");
-                        
-                    }
-                }
-            }
-
-	        LLViewerInventoryCategory* pcat = gInventory.getCategory(parent_id);
-			if (!pcat)
-			{
-				continue;
-			}
-
-			for(LLSD::array_const_iterator category_it = folder_sd["categories"].beginArray();
-				category_it != folder_sd["categories"].endArray();
-				++category_it)
-			{	
-				LLSD category = *category_it;
-				tcategory->fromLLSD(category); 
-							
-				if (LLInventoryModel::sMyInventoryFetchStarted ||
-					LLInventoryModel::sLibraryFetchStarted)
-				{
-					sFetchQueue.push_back(tcategory->getUUID());
-				}
-				else if ( !gInventory.isCategoryComplete(tcategory->getUUID()) )
-				{
-					gInventory.updateCategory(tcategory);
-				}
-
-			}
-			LLPointer<LLViewerInventoryItem> titem = new LLViewerInventoryItem;
-			for(LLSD::array_const_iterator item_it = folder_sd["items"].beginArray();
-				item_it != folder_sd["items"].endArray();
-				++item_it)
-			{	
-				LLSD item = *item_it;
-				titem->unpackMessage(item);
-				
-				gInventory.updateItem(titem);
-			}
-
-			// set version and descendentcount according to message.
-			LLViewerInventoryCategory* cat = gInventory.getCategory(parent_id);
-			if(cat)
-			{
-				cat->setVersion(version);
-				cat->setDescendentCount(descendents);
-				cat->determineFolderType();
-			}
-
-		}
-	}
-		
-	if (content.has("bad_folders"))
-	{
-		for(LLSD::array_const_iterator folder_it = content["bad_folders"].beginArray();
-			folder_it != content["bad_folders"].endArray();
-			++folder_it)
-		{	
-			LLSD folder_sd = *folder_it;
-			
-			//These folders failed on the dataserver.  We probably don't want to retry them.
-			llinfos << "Folder " << folder_sd["folder_id"].asString() 
-					<< "Error: " << folder_sd["error"].asString() << llendl;
-		}
-	}
-
-	LLInventoryModel::incrBulkFetch(-1);
-	
-	if (LLInventoryModel::isBulkFetchProcessingComplete())
-	{
-		llinfos << "Inventory fetch completed" << llendl;
-		LLInventoryModel::setAllFoldersFetched();
-	}
-	
-	gInventory.notifyObservers("fetchDescendents");
-}
-
-//If we get back an error (not found, etc...), handle it here
-void LLInventoryModelFetchDescendentsResponder::error(U32 status, const std::string& reason)
-{
-	llinfos << "LLInventoryModelFetchDescendentsResponder::error "
-		<< status << ": " << reason << llendl;
-						
-	LLInventoryModel::incrBulkFetch(-1);
-
-	if (status==499)		//timed out.  Let's be awesome!
-	{
-		for(LLSD::array_const_iterator folder_it = mRequestSD["folders"].beginArray();
-			folder_it != mRequestSD["folders"].endArray();
-			++folder_it)
-		{	
-			LLSD folder_sd = *folder_it;
-			LLUUID folder_id = folder_sd["folder_id"];
-			sFetchQueue.push_front(folder_id);
-		}
-	}
-	else
-	{
-		if (LLInventoryModel::isBulkFetchProcessingComplete())
-		{
-			LLInventoryModel::setAllFoldersFetched();
-		}
-	}
-	gInventory.notifyObservers("fetchDescendents");
-}
-
-//static   Bundle up a bunch of requests to send all at once.
-void LLInventoryModel::bulkFetch(std::string url)
-{
-	//Background fetch is called from gIdleCallbacks in a loop until background fetch is stopped.
-	//If there are items in sFetchQueue, we want to check the time since the last bulkFetch was 
-	//sent.  If it exceeds our retry time, go ahead and fire off another batch.  
-	//Stopbackgroundfetch will be run from the Responder instead of here.  
-
-	S16 max_concurrent_fetches=8;
-	F32 new_min_time = 0.5f;			//HACK!  Clean this up when old code goes away entirely.
-	if (sMinTimeBetweenFetches < new_min_time) sMinTimeBetweenFetches=new_min_time;  //HACK!  See above.
-	
-	if(gDisconnected 
-	|| sBulkFetchCount > max_concurrent_fetches
-	|| sFetchTimer.getElapsedTimeF32() < sMinTimeBetweenFetches)
-	{
-		return; // just bail if we are disconnected.
-	}	
-
-	U32 folder_count=0;
-	U32 max_batch_size=5;
-
-	U32 sort_order = gSavedSettings.getU32(LLInventoryPanel::DEFAULT_SORT_ORDER) & 0x1;
-
-	LLSD body;
-	LLSD body_lib;
-	while( !(sFetchQueue.empty() ) && (folder_count < max_batch_size) )
-	{
-        if (sFetchQueue.front().isNull()) //DEV-17797
-        {
-			LLSD folder_sd;
-			folder_sd["folder_id"]		= LLUUID::null.asString();
-			folder_sd["owner_id"]		= gAgent.getID();
-			folder_sd["sort_order"]		= (LLSD::Integer)sort_order;
-			folder_sd["fetch_folders"]	= (LLSD::Boolean)FALSE;
-			folder_sd["fetch_items"]	= (LLSD::Boolean)TRUE;
-			body["folders"].append(folder_sd);
-            folder_count++;
-        }
-        else
-        {
-				
-
-		    LLViewerInventoryCategory* cat = gInventory.getCategory(sFetchQueue.front());
-		
-		    if (cat)
-		    {
-			    if ( LLViewerInventoryCategory::VERSION_UNKNOWN == cat->getVersion())
-			    {
-				    LLSD folder_sd;
-				    folder_sd["folder_id"]		= cat->getUUID();
-				    folder_sd["owner_id"]		= cat->getOwnerID();
-				    folder_sd["sort_order"]		= (LLSD::Integer)sort_order;
-				    folder_sd["fetch_folders"]	= TRUE; //(LLSD::Boolean)sFullFetchStarted;
-				    folder_sd["fetch_items"]	= (LLSD::Boolean)TRUE;
-				    
-				    if (ALEXANDRIA_LINDEN_ID == cat->getOwnerID())
-					    body_lib["folders"].append(folder_sd);
-				    else
-					    body["folders"].append(folder_sd);
-				    folder_count++;
-			    }
-			    if (sMyInventoryFetchStarted ||
-					sLibraryFetchStarted)
-			    {	//Already have this folder but append child folders to list.
-				    // add all children to queue
-				    parent_cat_map_t::iterator cat_it = gInventory.mParentChildCategoryTree.find(cat->getUUID());
-				    if (cat_it != gInventory.mParentChildCategoryTree.end())
-				    {
-					    cat_array_t* child_categories = cat_it->second;
-    
-					    for (S32 child_num = 0; child_num < child_categories->count(); child_num++)
-					    {
-						    sFetchQueue.push_back(child_categories->get(child_num)->getUUID());
-					    }
-				    }
-    
-			    }
-		    }
-        }
-		sFetchQueue.pop_front();
-	}
-		
-		if (folder_count > 0)
-		{
-			sBulkFetchCount++;
-			if (body["folders"].size())
-			{
-				LLHTTPClient::post(url, body, new LLInventoryModelFetchDescendentsResponder(body),300.0);
-			}
-			if (body_lib["folders"].size())
-			{
-				std::string url_lib = gAgent.getRegion()->getCapability("FetchLibDescendents");
-				LLHTTPClient::post(url_lib, body_lib, new LLInventoryModelFetchDescendentsResponder(body_lib),300.0);
-			}
-			sFetchTimer.reset();
-		}
-	else if (isBulkFetchProcessingComplete())
-	{
-		setAllFoldersFetched();
-	}	
-}
-
-bool fetchQueueContainsNoDescendentsOf(const LLUUID& cat_id)
-{
-	for (std::deque<LLUUID>::iterator it = sFetchQueue.begin();
-		 it != sFetchQueue.end(); ++it)
-	{
-		const LLUUID& fetch_id = *it;
-		if (gInventory.isObjectDescendentOf(fetch_id, cat_id))
-			return false;
-	}
-	return true;
-}
-
-/* static */
-bool LLInventoryModel::libraryFetchStarted()
-{
-	return sLibraryFetchStarted;
-}
-
-/* static */
-bool LLInventoryModel::libraryFetchCompleted()
-{
-	return libraryFetchStarted() && fetchQueueContainsNoDescendentsOf(gInventory.getLibraryRootFolderID());
-}
-
-/* static */
-bool LLInventoryModel::libraryFetchInProgress()
-{
-	return libraryFetchStarted() && !libraryFetchCompleted();
-}
-	
-/* static */
-bool LLInventoryModel::myInventoryFetchStarted()
-{
-	return sMyInventoryFetchStarted;
+	return cat->fetch();
 }
 
-/* static */
-bool LLInventoryModel::myInventoryFetchCompleted()
-{
-	return myInventoryFetchStarted() && fetchQueueContainsNoDescendentsOf(gInventory.getRootFolderID());
-}
-
-/* static */
-bool LLInventoryModel::myInventoryFetchInProgress()
-{
-	return myInventoryFetchStarted() && !myInventoryFetchCompleted();
-}
-
-// static
-bool LLInventoryModel::isEverythingFetched()
-{
-	return sAllFoldersFetched;
-}
-
-//static
-BOOL LLInventoryModel::backgroundFetchActive()
-{
-	return sBackgroundFetchActive;
-}
-
-void LLInventoryModel::startBackgroundFetch(const LLUUID& cat_id)
-{
-	if (!sAllFoldersFetched)
-	{
-		sBackgroundFetchActive = TRUE;
-		if (cat_id.isNull())
-		{
-			if (!sMyInventoryFetchStarted)
-			{
-				sMyInventoryFetchStarted = TRUE;
-				sFetchQueue.push_back(gInventory.getRootFolderID());
-				gIdleCallbacks.addFunction(&LLInventoryModel::backgroundFetch, NULL);
-			}
-			if (!sLibraryFetchStarted)
-			{
-				sLibraryFetchStarted = TRUE;
-				sFetchQueue.push_back(gInventory.getLibraryRootFolderID());
-				gIdleCallbacks.addFunction(&LLInventoryModel::backgroundFetch, NULL);
-			}
-		}
-		else
-		{
-			// specific folder requests go to front of queue
-			if (sFetchQueue.empty() || sFetchQueue.front() != cat_id)
-			{
-				sFetchQueue.push_front(cat_id);
-				gIdleCallbacks.addFunction(&LLInventoryModel::backgroundFetch, NULL);
-			}
-			if (cat_id == gInventory.getLibraryRootFolderID())
-			{
-				sLibraryFetchStarted = TRUE;
-			}
-			if (cat_id == gInventory.getRootFolderID())
-			{
-				sMyInventoryFetchStarted = TRUE;
-			}
-		}
-	}
-}
-
-//static
-void LLInventoryModel::findLostItems()
-{
-	sBackgroundFetchActive = TRUE;
-    sFetchQueue.push_back(LLUUID::null);
-    gIdleCallbacks.addFunction(&LLInventoryModel::backgroundFetch, NULL);
-}
-
-//static
-void LLInventoryModel::stopBackgroundFetch()
-{
-	if (sBackgroundFetchActive)
-	{
-		sBackgroundFetchActive = FALSE;
-		gIdleCallbacks.deleteFunction(&LLInventoryModel::backgroundFetch, NULL);
-		sBulkFetchCount=0;
-		sMinTimeBetweenFetches=0.0f;
-	}
-}
-
-// static
-void LLInventoryModel::setAllFoldersFetched()
-{
-	if (sMyInventoryFetchStarted &&
-		sLibraryFetchStarted)
-	{
-		sAllFoldersFetched = TRUE;
-	}
-	stopBackgroundFetch();
-}
-
-//static 
-void LLInventoryModel::backgroundFetch(void*)
-{
-	if (sBackgroundFetchActive && gAgent.getRegion())
-	{
-		//If we'll be using the capability, we'll be sending batches and the background thing isn't as important.
-		std::string url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents");   
-		if (!url.empty()) 
-		{
-			bulkFetch(url);
-			return;
-		}
-		
-		//DEPRECATED OLD CODE FOLLOWS.
-		// no more categories to fetch, stop fetch process
-		if (sFetchQueue.empty())
-		{
-			llinfos << "Inventory fetch completed" << llendl;
-
-			setAllFoldersFetched();
-			return;
-		}
-
-		F32 fast_fetch_time = lerp(sMinTimeBetweenFetches, sMaxTimeBetweenFetches, 0.1f);
-		F32 slow_fetch_time = lerp(sMinTimeBetweenFetches, sMaxTimeBetweenFetches, 0.5f);
-		if (sTimelyFetchPending && sFetchTimer.getElapsedTimeF32() > slow_fetch_time)
-		{
-			// double timeouts on failure
-			sMinTimeBetweenFetches = llmin(sMinTimeBetweenFetches * 2.f, 10.f);
-			sMaxTimeBetweenFetches = llmin(sMaxTimeBetweenFetches * 2.f, 120.f);
-			llinfos << "Inventory fetch times grown to (" << sMinTimeBetweenFetches << ", " << sMaxTimeBetweenFetches << ")" << llendl;
-			// fetch is no longer considered "timely" although we will wait for full time-out
-			sTimelyFetchPending = FALSE;
-		}
-
-		while(1)
-		{
-			if (sFetchQueue.empty())
-			{
-				break;
-			}
-
-			if(gDisconnected)
-			{
-				// just bail if we are disconnected.
-				break;
-			}
-
-			LLViewerInventoryCategory* cat = gInventory.getCategory(sFetchQueue.front());
-
-			// category has been deleted, remove from queue.
-			if (!cat)
-			{
-				sFetchQueue.pop_front();
-				continue;
-			}
-			
-			if (sFetchTimer.getElapsedTimeF32() > sMinTimeBetweenFetches && 
-				LLViewerInventoryCategory::VERSION_UNKNOWN == cat->getVersion())
-			{
-				// category exists but has no children yet, fetch the descendants
-				// for now, just request every time and rely on retry timer to throttle
-				if (cat->fetchDescendents())
-				{
-					sFetchTimer.reset();
-					sTimelyFetchPending = TRUE;
-				}
-				else
-				{
-					//  The catagory also tracks if it has expired and here it says it hasn't
-					//  yet.  Get out of here because nothing is going to happen until we
-					//  update the timers.
-					break;
-				}
-			}
-			// do I have all my children?
-			else if (gInventory.isCategoryComplete(sFetchQueue.front()))
-			{
-				// finished with this category, remove from queue
-				sFetchQueue.pop_front();
-
-				// add all children to queue
-				parent_cat_map_t::iterator cat_it = gInventory.mParentChildCategoryTree.find(cat->getUUID());
-				if (cat_it != gInventory.mParentChildCategoryTree.end())
-				{
-					cat_array_t* child_categories = cat_it->second;
-
-					for (S32 child_num = 0; child_num < child_categories->count(); child_num++)
-					{
-						sFetchQueue.push_back(child_categories->get(child_num)->getUUID());
-					}
-				}
-
-				// we received a response in less than the fast time
-				if (sTimelyFetchPending && sFetchTimer.getElapsedTimeF32() < fast_fetch_time)
-				{
-					// shrink timeouts based on success
-					sMinTimeBetweenFetches = llmax(sMinTimeBetweenFetches * 0.8f, 0.3f);
-					sMaxTimeBetweenFetches = llmax(sMaxTimeBetweenFetches * 0.8f, 10.f);
-					//llinfos << "Inventory fetch times shrunk to (" << sMinTimeBetweenFetches << ", " << sMaxTimeBetweenFetches << ")" << llendl;
-				}
-
-				sTimelyFetchPending = FALSE;
-				continue;
-			}
-			else if (sFetchTimer.getElapsedTimeF32() > sMaxTimeBetweenFetches)
-			{
-				// received first packet, but our num descendants does not match db's num descendants
-				// so try again later
-				LLUUID fetch_id = sFetchQueue.front();
-				sFetchQueue.pop_front();
-
-				if (sNumFetchRetries++ < MAX_FETCH_RETRIES)
-				{
-					// push on back of queue
-					sFetchQueue.push_back(fetch_id);
-				}
-				sTimelyFetchPending = FALSE;
-				sFetchTimer.reset();
-				break;
-			}
-
-			// not enough time has elapsed to do a new fetch
-			break;
-		}
-	}
-}
 
 void LLInventoryModel::cache(
 	const LLUUID& parent_folder_id,
@@ -2595,7 +2043,7 @@ void LLInventoryModel::buildParentChildMap()
 	}
 	count = items.count();
 	lost = 0;
-	std::vector<LLUUID> lost_item_ids;
+	uuid_vec_t lost_item_ids;
 	for(i = 0; i < count; ++i)
 	{
 		LLPointer<LLViewerInventoryItem> item;
@@ -2634,7 +2082,7 @@ void LLInventoryModel::buildParentChildMap()
 		LLMessageSystem* msg = gMessageSystem;
 		BOOL start_new_message = TRUE;
 		const LLUUID lnf = findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
-		for(std::vector<LLUUID>::iterator it = lost_item_ids.begin() ; it < lost_item_ids.end(); ++it)
+		for(uuid_vec_t::iterator it = lost_item_ids.begin() ; it < lost_item_ids.end(); ++it)
 		{
 			if(start_new_message)
 			{
@@ -3094,7 +2542,7 @@ void LLInventoryModel::processRemoveInventoryItem(LLMessageSystem* msg, void**)
 		return;
 	}
 	S32 count = msg->getNumberOfBlocksFast(_PREHASH_InventoryData);
-	std::vector<LLUUID> item_ids;
+	uuid_vec_t item_ids;
 	update_map_t update;
 	for(S32 i = 0; i < count; ++i)
 	{
@@ -3110,7 +2558,7 @@ void LLInventoryModel::processRemoveInventoryItem(LLMessageSystem* msg, void**)
 		}
 	}
 	gInventory.accountForUpdate(update);
-	for(std::vector<LLUUID>::iterator it = item_ids.begin(); it != item_ids.end(); ++it)
+	for(uuid_vec_t::iterator it = item_ids.begin(); it != item_ids.end(); ++it)
 	{
 		gInventory.deleteObject(*it);
 	}
@@ -3190,7 +2638,7 @@ void LLInventoryModel::processRemoveInventoryFolder(LLMessageSystem* msg,
 				<< llendl;
 		return;
 	}
-	std::vector<LLUUID> folder_ids;
+	uuid_vec_t folder_ids;
 	update_map_t update;
 	S32 count = msg->getNumberOfBlocksFast(_PREHASH_FolderData);
 	for(S32 i = 0; i < count; ++i)
@@ -3204,7 +2652,7 @@ void LLInventoryModel::processRemoveInventoryFolder(LLMessageSystem* msg,
 		}
 	}
 	gInventory.accountForUpdate(update);
-	for(std::vector<LLUUID>::iterator it = folder_ids.begin(); it != folder_ids.end(); ++it)
+	for(uuid_vec_t::iterator it = folder_ids.begin(); it != folder_ids.end(); ++it)
 	{
 		gInventory.deleteObject(*it);
 	}
@@ -3317,7 +2765,7 @@ void LLInventoryModel::processBulkUpdateInventory(LLMessageSystem* msg, void**)
 
 
 	count = msg->getNumberOfBlocksFast(_PREHASH_ItemData);
-	std::vector<LLUUID> wearable_ids;
+	uuid_vec_t wearable_ids;
 	item_array_t items;
 	std::list<InventoryCallbackInfo> cblist;
 	for(i = 0; i < count; ++i)
@@ -3763,207 +3211,6 @@ void LLInventoryModel::dumpInventory() const
 	llinfos << "\n**********************\nEnd Inventory Dump" << llendl;
 }
 
-///----------------------------------------------------------------------------
-/// LLInventoryCollectFunctor implementations
-///----------------------------------------------------------------------------
-
-// static
-bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(LLInventoryItem* item)
-{
-	if (!item)
-		return false;
-
-	bool allowed = false;
-	LLVOAvatarSelf* my_avatar = NULL;
-
-	switch(item->getType())
-	{
-	case LLAssetType::AT_CALLINGCARD:
-		// not allowed
-		break;
-		
-	case LLAssetType::AT_OBJECT:
-		my_avatar = gAgent.getAvatarObject();
-		if(my_avatar && !my_avatar->isWearingAttachment(item->getUUID()))
-		{
-			allowed = true;
-		}
-		break;
-		
-	case LLAssetType::AT_BODYPART:
-	case LLAssetType::AT_CLOTHING:
-		if(!gAgentWearables.isWearingItem(item->getUUID()))
-		{
-			allowed = true;
-		}
-		break;
-		
-	default:
-		allowed = true;
-		break;
-	}
-
-	return allowed;
-}
-
-bool LLIsType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
-{
-	if(mType == LLAssetType::AT_CATEGORY)
-	{
-		if(cat) return TRUE;
-	}
-	if(item)
-	{
-		if(item->getType() == mType) return TRUE;
-	}
-	return FALSE;
-}
-
-bool LLIsNotType::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
-{
-	if(mType == LLAssetType::AT_CATEGORY)
-	{
-		if(cat) return FALSE;
-	}
-	if(item)
-	{
-		if(item->getType() == mType) return FALSE;
-		else return TRUE;
-	}
-	return TRUE;
-}
-
-bool LLIsTypeWithPermissions::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
-{
-	if(mType == LLAssetType::AT_CATEGORY)
-	{
-		if(cat) 
-		{
-			return TRUE;
-		}
-	}
-	if(item)
-	{
-		if(item->getType() == mType)
-		{
-			LLPermissions perm = item->getPermissions();
-			if ((perm.getMaskBase() & mPerm) == mPerm)
-			{
-				return TRUE;
-			}
-		}
-	}
-	return FALSE;
-}
-
-
-//bool LLIsClone::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
-//{
-//	if(cat) return FALSE;
-//	if(item)
-//	{
-//		if(mItemMap->getType() == LLAssetType::AT_CALLINGCARD)
-//		{
-//			if((item->getType() == LLAssetType::AT_CALLINGCARD)
-//			   && !(item->getCreatorUUID().isNull())
-//			   && (item->getCreatorUUID() == mItemMap->getCreatorUUID()))
-//			{
-//				return TRUE;
-//			}
-//		}
-//		else
-//		{
-//			if((item->getType() == mItemMap->getType())
-//			   && !(item->getAssetUUID().isNull())
-//			   && (item->getAssetUUID() == mItemMap->getAssetUUID())
-//			   && (item->getName() == mItemMap->getName()))
-//			{
-//				return TRUE;
-//			}
-//		}
-//	}
-//	return FALSE;
-//}
-
-bool LLBuddyCollector::operator()(LLInventoryCategory* cat,
-								  LLInventoryItem* item)
-{
-	if(item)
-	{
-		if((LLAssetType::AT_CALLINGCARD == item->getType())
-		   && (!item->getCreatorUUID().isNull())
-		   && (item->getCreatorUUID() != gAgent.getID()))
-		{
-			return true;
-		}
-	}
-	return false;
-}
-
-
-bool LLUniqueBuddyCollector::operator()(LLInventoryCategory* cat,
-										LLInventoryItem* item)
-{
-	if(item)
-	{
-		if((LLAssetType::AT_CALLINGCARD == item->getType())
- 		   && (item->getCreatorUUID().notNull())
- 		   && (item->getCreatorUUID() != gAgent.getID()))
-		{
-			mSeen.insert(item->getCreatorUUID());
-			return true;
-		}
-	}
-	return false;
-}
-
-
-bool LLParticularBuddyCollector::operator()(LLInventoryCategory* cat,
-											LLInventoryItem* item)
-{
-	if(item)
-	{
-		if((LLAssetType::AT_CALLINGCARD == item->getType())
-		   && (item->getCreatorUUID() == mBuddyID))
-		{
-			return TRUE;
-		}
-	}
-	return FALSE;
-}
-
-
-bool LLNameCategoryCollector::operator()(
-	LLInventoryCategory* cat, LLInventoryItem* item)
-{
-	if(cat)
-	{
-		if (!LLStringUtil::compareInsensitive(mName, cat->getName()))
-		{
-			return true;
-		}
-	}
-	return false;
-}
-
-///----------------------------------------------------------------------------
-/// LLAssetIDMatches 
-///----------------------------------------------------------------------------
-bool LLAssetIDMatches::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
-{
-	return (item && item->getAssetUUID() == mAssetID);
-}
-
-///----------------------------------------------------------------------------
-/// LLLinkedItemIDMatches 
-///----------------------------------------------------------------------------
-bool LLLinkedItemIDMatches::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
-{
-	return (item && 
-			(item->getIsLinkType()) &&
-			(item->getLinkedUUID() == mBaseItemID)); // A linked item's assetID will be the compared-to item's itemID.
-}
-
 ///----------------------------------------------------------------------------
 /// Local function definitions
 ///----------------------------------------------------------------------------
diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h
index 2a2b48ce3c620d736dffee7b837b9cbe4b9f5b06..b7c1b573970269a4a073d1264dd37caf44a97fa2 100644
--- a/indra/newview/llinventorymodel.h
+++ b/indra/newview/llinventorymodel.h
@@ -81,7 +81,6 @@ class LLInventoryModel
 		CHILDREN_MAYBE
 	};
 
-	// These are used a lot...
 	typedef LLDynamicArray<LLPointer<LLViewerInventoryCategory> > cat_array_t;
 	typedef LLDynamicArray<LLPointer<LLViewerInventoryItem> > item_array_t;
 	typedef std::set<LLUUID> changed_items_t;
@@ -368,8 +367,6 @@ class LLInventoryModel
 	// Utility Functions
 	void removeItem(const LLUUID& item_id);
 	
-    static void findLostItems();
-
 	// Data about the agent's root folder and root library folder
 	// are stored here, rather than in LLAgent where it used to be, because
 	// gInventory is a singleton and represents the agent's inventory.
@@ -501,12 +498,6 @@ class LLInventoryModel
 	LLUUID mLibraryRootFolderID;
 	LLUUID mLibraryOwnerID;
 
-	static BOOL sTimelyFetchPending;
-	static S32  sNumFetchRetries;
-	static LLFrameTimer sFetchTimer;
-	static F32 sMinTimeBetweenFetches;
-	static F32 sMaxTimeBetweenFetches;
-
 	// Expected inventory cache version
 	const static S32 sCurrentInvCacheVersion;
 	
@@ -532,41 +523,6 @@ class LLInventoryModel
 	// *NOTE: DEBUG functionality
 	void dumpInventory() const;
 
-
-	////////////////////////////////////////////////////////////////////////////////
-	// Bulk fetch
-public:
-	// Start and stop background breadth-first fetching of inventory contents.
-	// This gets triggered when performing a filter-search
-	void startBackgroundFetch(const LLUUID& cat_id = LLUUID::null);
-	static BOOL backgroundFetchActive();
-	static bool isEverythingFetched();
-	static void backgroundFetch(void*); // background fetch idle function
-	static void incrBulkFetch(S16 fetching) {  sBulkFetchCount+=fetching; if (sBulkFetchCount<0) sBulkFetchCount=0; }
-	static void stopBackgroundFetch(); // stop fetch process
-	static bool isBulkFetchProcessingComplete();
-
-	// Add categories to a list to be fetched in bulk.
-	static void bulkFetch(std::string url);
-
-	static bool libraryFetchStarted();
-	static bool libraryFetchCompleted();
-	static bool libraryFetchInProgress();
-	
-	static bool myInventoryFetchStarted();
-	static bool myInventoryFetchCompleted();
-	static bool myInventoryFetchInProgress();
-	
-private:
- 	static BOOL sMyInventoryFetchStarted;
-	static BOOL sLibraryFetchStarted;
-	static BOOL sAllFoldersFetched; 
-	static void setAllFoldersFetched();
-
-	// completing the fetch once per session should be sufficient
-	static BOOL sBackgroundFetchActive;
-	static S16 sBulkFetchCount;
-
 	////////////////////////////////////////////////////////////////////////////////
 	// Login status
 public:
@@ -578,234 +534,5 @@ class LLInventoryModel
 // a special inventory model for the agent
 extern LLInventoryModel gInventory;
 
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLInventoryCollectFunctor
-//
-// Base class for LLInventoryModel::collectDescendentsIf() method
-// which accepts an instance of one of these objects to use as the
-// function to determine if it should be added. Derive from this class
-// and override the () operator to return TRUE if you want to collect
-// the category or item passed in.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-class LLInventoryCollectFunctor
-{
-public:
-	virtual ~LLInventoryCollectFunctor(){};
-	virtual bool operator()(LLInventoryCategory* cat, LLInventoryItem* item) = 0;
-
-	static bool itemTransferCommonlyAllowed(LLInventoryItem* item);
-};
-
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLAssetIDMatches
-//
-// This functor finds inventory items pointing to the specified asset
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLViewerInventoryItem;
-
-class LLAssetIDMatches : public LLInventoryCollectFunctor
-{
-public:
-	LLAssetIDMatches(const LLUUID& asset_id) : mAssetID(asset_id) {}
-	virtual ~LLAssetIDMatches() {}
-	bool operator()(LLInventoryCategory* cat, LLInventoryItem* item);
-	
-protected:
-	LLUUID mAssetID;
-};
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLLinkedItemIDMatches
-//
-// This functor finds inventory items linked to the specific inventory id.
-// Assumes the inventory id is itself not a linked item.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLLinkedItemIDMatches : public LLInventoryCollectFunctor
-{
-public:
-	LLLinkedItemIDMatches(const LLUUID& item_id) : mBaseItemID(item_id) {}
-	virtual ~LLLinkedItemIDMatches() {}
-	bool operator()(LLInventoryCategory* cat, LLInventoryItem* item);
-	
-protected:
-	LLUUID mBaseItemID;
-};
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLIsType
-//
-// Implementation of a LLInventoryCollectFunctor which returns TRUE if
-// the type is the type passed in during construction.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-class LLIsType : public LLInventoryCollectFunctor
-{
-public:
-	LLIsType(LLAssetType::EType type) : mType(type) {}
-	virtual ~LLIsType() {}
-	virtual bool operator()(LLInventoryCategory* cat,
-							LLInventoryItem* item);
-protected:
-	LLAssetType::EType mType;
-};
-
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLIsNotType
-//
-// Implementation of a LLInventoryCollectFunctor which returns FALSE if the
-// type is the type passed in during construction, otherwise false.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-class LLIsNotType : public LLInventoryCollectFunctor
-{
-public:
-	LLIsNotType(LLAssetType::EType type) : mType(type) {}
-	virtual ~LLIsNotType() {}
-	virtual bool operator()(LLInventoryCategory* cat,
-							LLInventoryItem* item);
-protected:
-	LLAssetType::EType mType;
-};
-
-class LLIsTypeWithPermissions : public LLInventoryCollectFunctor
-{
-public:
-	LLIsTypeWithPermissions(LLAssetType::EType type, const PermissionBit perms, const LLUUID &agent_id, const LLUUID &group_id) 
-		: mType(type), mPerm(perms), mAgentID(agent_id), mGroupID(group_id) {}
-	virtual ~LLIsTypeWithPermissions() {}
-	virtual bool operator()(LLInventoryCategory* cat,
-							LLInventoryItem* item);
-protected:
-	LLAssetType::EType mType;
-	PermissionBit mPerm;
-	LLUUID			mAgentID;
-	LLUUID			mGroupID;
-};
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLIsClone
-//
-// Implementation of a LLInventoryCollectFunctor which returns TRUE if
-// the object is a clone of the item passed in during
-// construction.
-//
-// *NOTE: Since clone information is determined based off of asset id
-// (or creator with calling cards), if the id is NULL, it has no
-// clones - even itself.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-//class LLIsClone : public LLInventoryCollectFunctor
-//{
-//public:
-//	LLIsClone(LLViewerInventoryItem* item) : mItem(item) {}
-//	virtual ~LLIsClone() {}
-//	virtual bool operator()(LLViewerInventoryCategory* cat,
-//							LLViewerInventoryItem* item);
-//protected:
-//	LLPointer<LLViewerInventoryItem> mItem;
-//};
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLBuddyCollector
-//
-// Simple class that collects calling cards that are not null, and not
-// the agent. Duplicates are possible.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-class LLBuddyCollector : public LLInventoryCollectFunctor
-{
-public:
-	LLBuddyCollector() {}
-	virtual ~LLBuddyCollector() {}
-	virtual bool operator()(LLInventoryCategory* cat,
-							LLInventoryItem* item);
-};
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLUniqueBuddyCollector
-//
-// Simple class that collects calling cards that are not null, and not
-// the agent. Duplicates are discarded.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-class LLUniqueBuddyCollector : public LLInventoryCollectFunctor
-{
-public:
-	LLUniqueBuddyCollector() {}
-	virtual ~LLUniqueBuddyCollector() {}
-	virtual bool operator()(LLInventoryCategory* cat,
-							LLInventoryItem* item);
-
-protected:
-	std::set<LLUUID> mSeen;
-};
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLParticularBuddyCollector
-//
-// Simple class that collects calling cards that match a particular uuid
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-class LLParticularBuddyCollector : public LLInventoryCollectFunctor
-{
-public:
-	LLParticularBuddyCollector(const LLUUID& id) : mBuddyID(id) {}
-	virtual ~LLParticularBuddyCollector() {}
-	virtual bool operator()(LLInventoryCategory* cat,
-							LLInventoryItem* item);
-protected:
-	LLUUID mBuddyID;
-};
-
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLNameCategoryCollector
-//
-// Collects categories based on case-insensitive match of prefix
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-class LLNameCategoryCollector : public LLInventoryCollectFunctor
-{
-public:
-	LLNameCategoryCollector(const std::string& name) : mName(name) {}
-	virtual ~LLNameCategoryCollector() {}
-	virtual bool operator()(LLInventoryCategory* cat,
-							LLInventoryItem* item);
-protected:
-	std::string mName;
-};
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLFindCOFValidItems
-//
-// Collects items that can be legitimately linked to in the COF.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLFindCOFValidItems : public LLInventoryCollectFunctor
-{
-public:
-	LLFindCOFValidItems() {}
-	virtual ~LLFindCOFValidItems() {}
-	virtual bool operator()(LLInventoryCategory* cat,
-							LLInventoryItem* item);
-	
-};
-
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLFindWearables
-//
-// Collects wearables based on item type.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLFindWearables : public LLInventoryCollectFunctor
-{
-public:
-	LLFindWearables() {}
-	virtual ~LLFindWearables() {}
-	virtual bool operator()(LLInventoryCategory* cat,
-							LLInventoryItem* item);
-};
-
 #endif // LL_LLINVENTORYMODEL_H
 
diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..cfbc2c3e058a5e6affbf576125f85985b47f7cd1
--- /dev/null
+++ b/indra/newview/llinventorymodelbackgroundfetch.cpp
@@ -0,0 +1,603 @@
+/** 
+ * @file llinventorymodel.cpp
+ * @brief Implementation of the inventory model used to track agent inventory.
+ *
+ * $LicenseInfo:firstyear=2002&license=viewergpl$
+ * 
+ * Copyright (c) 2002-2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llinventorymodelbackgroundfetch.h"
+
+// Seraph clean this up
+#include "llagent.h"
+#include "llinventorypanel.h"
+#include "llviewercontrol.h"
+#include "llviewermessage.h"
+#include "llviewerwindow.h"
+#include "llappviewer.h"
+#include "llviewerregion.h"
+#include "llcallbacklist.h"
+
+const F32 MAX_TIME_FOR_SINGLE_FETCH = 10.f;
+const S32 MAX_FETCH_RETRIES = 10;
+
+// RN: for some reason, using std::queue in the header file confuses the compiler which thinks it's an xmlrpc_queue
+static std::deque<LLUUID> sFetchQueue;
+bool fetchQueueContainsNoDescendentsOf(const LLUUID& cat_id)
+{
+	for (std::deque<LLUUID>::iterator it = sFetchQueue.begin();
+		 it != sFetchQueue.end(); ++it)
+	{
+		const LLUUID& fetch_id = *it;
+		if (gInventory.isObjectDescendentOf(fetch_id, cat_id))
+			return false;
+	}
+	return true;
+}
+
+
+LLInventoryModelBackgroundFetch::LLInventoryModelBackgroundFetch() :
+	mBackgroundFetchActive(FALSE),
+	mAllFoldersFetched(FALSE),
+	mInventoryFetchStarted(FALSE),
+	mLibraryFetchStarted(FALSE),
+	mNumFetchRetries(0),
+	mMinTimeBetweenFetches(0.3f),
+	mMaxTimeBetweenFetches(10.f),
+	mTimelyFetchPending(FALSE),
+	mBulkFetchCount(0)
+{
+}
+
+LLInventoryModelBackgroundFetch::~LLInventoryModelBackgroundFetch()
+{
+}
+
+bool LLInventoryModelBackgroundFetch::isBulkFetchProcessingComplete()
+{
+	return sFetchQueue.empty() && mBulkFetchCount<=0;
+}
+
+bool LLInventoryModelBackgroundFetch::libraryFetchStarted()
+{
+	return mLibraryFetchStarted;
+}
+
+bool LLInventoryModelBackgroundFetch::libraryFetchCompleted()
+{
+	return libraryFetchStarted() && fetchQueueContainsNoDescendentsOf(gInventory.getLibraryRootFolderID());
+}
+
+bool LLInventoryModelBackgroundFetch::libraryFetchInProgress()
+{
+	return libraryFetchStarted() && !libraryFetchCompleted();
+}
+	
+bool LLInventoryModelBackgroundFetch::inventoryFetchStarted()
+{
+	return mInventoryFetchStarted;
+}
+
+bool LLInventoryModelBackgroundFetch::inventoryFetchCompleted()
+{
+	return inventoryFetchStarted() && fetchQueueContainsNoDescendentsOf(gInventory.getRootFolderID());
+}
+
+bool LLInventoryModelBackgroundFetch::inventoryFetchInProgress()
+{
+	return inventoryFetchStarted() && !inventoryFetchCompleted();
+}
+
+bool LLInventoryModelBackgroundFetch::isEverythingFetched()
+{
+	return mAllFoldersFetched;
+}
+
+BOOL LLInventoryModelBackgroundFetch::backgroundFetchActive()
+{
+	return mBackgroundFetchActive;
+}
+
+void LLInventoryModelBackgroundFetch::start(const LLUUID& cat_id)
+{
+	if (!mAllFoldersFetched)
+	{
+		mBackgroundFetchActive = TRUE;
+		if (cat_id.isNull())
+		{
+			if (!mInventoryFetchStarted)
+			{
+				mInventoryFetchStarted = TRUE;
+				sFetchQueue.push_back(gInventory.getRootFolderID());
+				gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL);
+			}
+			if (!mLibraryFetchStarted)
+			{
+				mLibraryFetchStarted = TRUE;
+				sFetchQueue.push_back(gInventory.getLibraryRootFolderID());
+				gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL);
+			}
+		}
+		else
+		{
+			// specific folder requests go to front of queue
+			if (sFetchQueue.empty() || sFetchQueue.front() != cat_id)
+			{
+				sFetchQueue.push_front(cat_id);
+				gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL);
+			}
+			if (cat_id == gInventory.getLibraryRootFolderID())
+			{
+				mLibraryFetchStarted = TRUE;
+			}
+			if (cat_id == gInventory.getRootFolderID())
+			{
+				mInventoryFetchStarted = TRUE;
+			}
+		}
+	}
+}
+
+void LLInventoryModelBackgroundFetch::findLostItems()
+{
+	mBackgroundFetchActive = TRUE;
+    sFetchQueue.push_back(LLUUID::null);
+    gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL);
+}
+
+void LLInventoryModelBackgroundFetch::stopBackgroundFetch()
+{
+	if (mBackgroundFetchActive)
+	{
+		mBackgroundFetchActive = FALSE;
+		gIdleCallbacks.deleteFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL);
+		mBulkFetchCount=0;
+		mMinTimeBetweenFetches=0.0f;
+	}
+}
+
+void LLInventoryModelBackgroundFetch::setAllFoldersFetched()
+{
+	if (mInventoryFetchStarted &&
+		mLibraryFetchStarted)
+	{
+		mAllFoldersFetched = TRUE;
+	}
+	stopBackgroundFetch();
+}
+
+void LLInventoryModelBackgroundFetch::backgroundFetchCB(void *)
+{
+	LLInventoryModelBackgroundFetch::instance().backgroundFetch();
+}
+
+void LLInventoryModelBackgroundFetch::backgroundFetch()
+{
+	if (mBackgroundFetchActive && gAgent.getRegion())
+	{
+		//If we'll be using the capability, we'll be sending batches and the background thing isn't as important.
+		std::string url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents");   
+		if (!url.empty()) 
+		{
+			bulkFetch(url);
+			return;
+		}
+		
+		//DEPRECATED OLD CODE FOLLOWS.
+		// no more categories to fetch, stop fetch process
+		if (sFetchQueue.empty())
+		{
+			llinfos << "Inventory fetch completed" << llendl;
+
+			setAllFoldersFetched();
+			return;
+		}
+
+		F32 fast_fetch_time = lerp(mMinTimeBetweenFetches, mMaxTimeBetweenFetches, 0.1f);
+		F32 slow_fetch_time = lerp(mMinTimeBetweenFetches, mMaxTimeBetweenFetches, 0.5f);
+		if (mTimelyFetchPending && mFetchTimer.getElapsedTimeF32() > slow_fetch_time)
+		{
+			// double timeouts on failure
+			mMinTimeBetweenFetches = llmin(mMinTimeBetweenFetches * 2.f, 10.f);
+			mMaxTimeBetweenFetches = llmin(mMaxTimeBetweenFetches * 2.f, 120.f);
+			llinfos << "Inventory fetch times grown to (" << mMinTimeBetweenFetches << ", " << mMaxTimeBetweenFetches << ")" << llendl;
+			// fetch is no longer considered "timely" although we will wait for full time-out
+			mTimelyFetchPending = FALSE;
+		}
+
+		while(1)
+		{
+			if (sFetchQueue.empty())
+			{
+				break;
+			}
+
+			if(gDisconnected)
+			{
+				// just bail if we are disconnected.
+				break;
+			}
+
+			LLViewerInventoryCategory* cat = gInventory.getCategory(sFetchQueue.front());
+
+			// category has been deleted, remove from queue.
+			if (!cat)
+			{
+				sFetchQueue.pop_front();
+				continue;
+			}
+			
+			if (mFetchTimer.getElapsedTimeF32() > mMinTimeBetweenFetches && 
+				LLViewerInventoryCategory::VERSION_UNKNOWN == cat->getVersion())
+			{
+				// category exists but has no children yet, fetch the descendants
+				// for now, just request every time and rely on retry timer to throttle
+				if (cat->fetch())
+				{
+					mFetchTimer.reset();
+					mTimelyFetchPending = TRUE;
+				}
+				else
+				{
+					//  The catagory also tracks if it has expired and here it says it hasn't
+					//  yet.  Get out of here because nothing is going to happen until we
+					//  update the timers.
+					break;
+				}
+			}
+			// do I have all my children?
+			else if (gInventory.isCategoryComplete(sFetchQueue.front()))
+			{
+				// finished with this category, remove from queue
+				sFetchQueue.pop_front();
+
+				// add all children to queue
+				LLInventoryModel::cat_array_t* categories;
+				LLInventoryModel::item_array_t* items;
+				gInventory.getDirectDescendentsOf(cat->getUUID(), categories, items);
+				for (LLInventoryModel::cat_array_t::const_iterator it = categories->begin();
+					 it != categories->end();
+					 ++it)
+				{
+					sFetchQueue.push_back((*it)->getUUID());
+				}
+
+				// we received a response in less than the fast time
+				if (mTimelyFetchPending && mFetchTimer.getElapsedTimeF32() < fast_fetch_time)
+				{
+					// shrink timeouts based on success
+					mMinTimeBetweenFetches = llmax(mMinTimeBetweenFetches * 0.8f, 0.3f);
+					mMaxTimeBetweenFetches = llmax(mMaxTimeBetweenFetches * 0.8f, 10.f);
+					//llinfos << "Inventory fetch times shrunk to (" << mMinTimeBetweenFetches << ", " << mMaxTimeBetweenFetches << ")" << llendl;
+				}
+
+				mTimelyFetchPending = FALSE;
+				continue;
+			}
+			else if (mFetchTimer.getElapsedTimeF32() > mMaxTimeBetweenFetches)
+			{
+				// received first packet, but our num descendants does not match db's num descendants
+				// so try again later
+				LLUUID fetch_id = sFetchQueue.front();
+				sFetchQueue.pop_front();
+
+				if (mNumFetchRetries++ < MAX_FETCH_RETRIES)
+				{
+					// push on back of queue
+					sFetchQueue.push_back(fetch_id);
+				}
+				mTimelyFetchPending = FALSE;
+				mFetchTimer.reset();
+				break;
+			}
+
+			// not enough time has elapsed to do a new fetch
+			break;
+		}
+	}
+}
+
+void LLInventoryModelBackgroundFetch::incrBulkFetch(S16 fetching) 
+{  
+	mBulkFetchCount += fetching; 
+	if (mBulkFetchCount < 0)
+	{
+		mBulkFetchCount = 0; 
+	}
+}
+
+
+class LLInventoryModelFetchDescendentsResponder: public LLHTTPClient::Responder
+{
+	public:
+		LLInventoryModelFetchDescendentsResponder(const LLSD& request_sd) : mRequestSD(request_sd) {};
+		//LLInventoryModelFetchDescendentsResponder() {};
+		void result(const LLSD& content);
+		void error(U32 status, const std::string& reason);
+	public:
+		typedef std::vector<LLViewerInventoryCategory*> folder_ref_t;
+	protected:
+		LLSD mRequestSD;
+};
+
+//If we get back a normal response, handle it here
+void  LLInventoryModelFetchDescendentsResponder::result(const LLSD& content)
+{
+	if (content.has("folders"))	
+	{
+
+		for(LLSD::array_const_iterator folder_it = content["folders"].beginArray();
+			folder_it != content["folders"].endArray();
+			++folder_it)
+		{	
+			LLSD folder_sd = *folder_it;
+			
+
+			//LLUUID agent_id = folder_sd["agent_id"];
+
+			//if(agent_id != gAgent.getID())	//This should never happen.
+			//{
+			//	llwarns << "Got a UpdateInventoryItem for the wrong agent."
+			//			<< llendl;
+			//	break;
+			//}
+
+			LLUUID parent_id = folder_sd["folder_id"];
+			LLUUID owner_id = folder_sd["owner_id"];
+			S32    version  = (S32)folder_sd["version"].asInteger();
+			S32    descendents = (S32)folder_sd["descendents"].asInteger();
+			LLPointer<LLViewerInventoryCategory> tcategory = new LLViewerInventoryCategory(owner_id);
+
+            if (parent_id.isNull())
+            {
+			    LLPointer<LLViewerInventoryItem> titem = new LLViewerInventoryItem;
+			    for(LLSD::array_const_iterator item_it = folder_sd["items"].beginArray();
+				    item_it != folder_sd["items"].endArray();
+				    ++item_it)
+			    {	
+                    const LLUUID lost_uuid = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
+                    if (lost_uuid.notNull())
+                    {
+				        LLSD item = *item_it;
+				        titem->unpackMessage(item);
+				
+                        LLInventoryModel::update_list_t update;
+                        LLInventoryModel::LLCategoryUpdate new_folder(lost_uuid, 1);
+                        update.push_back(new_folder);
+                        gInventory.accountForUpdate(update);
+
+                        titem->setParent(lost_uuid);
+                        titem->updateParentOnServer(FALSE);
+                        gInventory.updateItem(titem);
+                        gInventory.notifyObservers("fetchDescendents");
+                        
+                    }
+                }
+            }
+
+	        LLViewerInventoryCategory* pcat = gInventory.getCategory(parent_id);
+			if (!pcat)
+			{
+				continue;
+			}
+
+			for(LLSD::array_const_iterator category_it = folder_sd["categories"].beginArray();
+				category_it != folder_sd["categories"].endArray();
+				++category_it)
+			{	
+				LLSD category = *category_it;
+				tcategory->fromLLSD(category); 
+							
+				if (LLInventoryModelBackgroundFetch::instance().inventoryFetchStarted() ||
+					LLInventoryModelBackgroundFetch::instance().libraryFetchStarted())
+				{
+					sFetchQueue.push_back(tcategory->getUUID());
+				}
+				else if ( !gInventory.isCategoryComplete(tcategory->getUUID()) )
+				{
+					gInventory.updateCategory(tcategory);
+				}
+
+			}
+			LLPointer<LLViewerInventoryItem> titem = new LLViewerInventoryItem;
+			for(LLSD::array_const_iterator item_it = folder_sd["items"].beginArray();
+				item_it != folder_sd["items"].endArray();
+				++item_it)
+			{	
+				LLSD item = *item_it;
+				titem->unpackMessage(item);
+				
+				gInventory.updateItem(titem);
+			}
+
+			// set version and descendentcount according to message.
+			LLViewerInventoryCategory* cat = gInventory.getCategory(parent_id);
+			if(cat)
+			{
+				cat->setVersion(version);
+				cat->setDescendentCount(descendents);
+				cat->determineFolderType();
+			}
+
+		}
+	}
+		
+	if (content.has("bad_folders"))
+	{
+		for(LLSD::array_const_iterator folder_it = content["bad_folders"].beginArray();
+			folder_it != content["bad_folders"].endArray();
+			++folder_it)
+		{	
+			LLSD folder_sd = *folder_it;
+			
+			//These folders failed on the dataserver.  We probably don't want to retry them.
+			llinfos << "Folder " << folder_sd["folder_id"].asString() 
+					<< "Error: " << folder_sd["error"].asString() << llendl;
+		}
+	}
+
+	LLInventoryModelBackgroundFetch::instance().incrBulkFetch(-1);
+	
+	if (LLInventoryModelBackgroundFetch::instance().isBulkFetchProcessingComplete())
+	{
+		llinfos << "Inventory fetch completed" << llendl;
+		LLInventoryModelBackgroundFetch::instance().setAllFoldersFetched();
+	}
+	
+	gInventory.notifyObservers("fetchDescendents");
+}
+
+//If we get back an error (not found, etc...), handle it here
+void LLInventoryModelFetchDescendentsResponder::error(U32 status, const std::string& reason)
+{
+	llinfos << "LLInventoryModelFetchDescendentsResponder::error "
+		<< status << ": " << reason << llendl;
+						
+	LLInventoryModelBackgroundFetch::instance().incrBulkFetch(-1);
+
+	if (status==499)		//timed out.  Let's be awesome!
+	{
+		for(LLSD::array_const_iterator folder_it = mRequestSD["folders"].beginArray();
+			folder_it != mRequestSD["folders"].endArray();
+			++folder_it)
+		{	
+			LLSD folder_sd = *folder_it;
+			LLUUID folder_id = folder_sd["folder_id"];
+			sFetchQueue.push_front(folder_id);
+		}
+	}
+	else
+	{
+		if (LLInventoryModelBackgroundFetch::instance().isBulkFetchProcessingComplete())
+		{
+			LLInventoryModelBackgroundFetch::instance().setAllFoldersFetched();
+		}
+	}
+	gInventory.notifyObservers("fetchDescendents");
+}
+
+//static   Bundle up a bunch of requests to send all at once.
+void LLInventoryModelBackgroundFetch::bulkFetch(std::string url)
+{
+	//Background fetch is called from gIdleCallbacks in a loop until background fetch is stopped.
+	//If there are items in sFetchQueue, we want to check the time since the last bulkFetch was 
+	//sent.  If it exceeds our retry time, go ahead and fire off another batch.  
+	//Stopbackgroundfetch will be run from the Responder instead of here.  
+
+	S16 max_concurrent_fetches=8;
+	F32 new_min_time = 0.5f;			//HACK!  Clean this up when old code goes away entirely.
+	if (mMinTimeBetweenFetches < new_min_time) 
+	{
+		mMinTimeBetweenFetches=new_min_time;  //HACK!  See above.
+	}
+	
+	if (gDisconnected ||
+		(mBulkFetchCount > max_concurrent_fetches) ||
+		(mFetchTimer.getElapsedTimeF32() < mMinTimeBetweenFetches))
+	{
+		return; // just bail if we are disconnected.
+	}	
+
+	U32 folder_count=0;
+	U32 max_batch_size=5;
+
+	U32 sort_order = gSavedSettings.getU32(LLInventoryPanel::DEFAULT_SORT_ORDER) & 0x1;
+
+	LLSD body;
+	LLSD body_lib;
+	while (!(sFetchQueue.empty()) && (folder_count < max_batch_size))
+	{
+        if (sFetchQueue.front().isNull()) //DEV-17797
+        {
+			LLSD folder_sd;
+			folder_sd["folder_id"]		= LLUUID::null.asString();
+			folder_sd["owner_id"]		= gAgent.getID();
+			folder_sd["sort_order"]		= (LLSD::Integer)sort_order;
+			folder_sd["fetch_folders"]	= (LLSD::Boolean)FALSE;
+			folder_sd["fetch_items"]	= (LLSD::Boolean)TRUE;
+			body["folders"].append(folder_sd);
+            folder_count++;
+        }
+        else
+        {
+		    LLViewerInventoryCategory* cat = gInventory.getCategory(sFetchQueue.front());
+		
+		    if (cat)
+		    {
+			    if (LLViewerInventoryCategory::VERSION_UNKNOWN == cat->getVersion())
+			    {
+				    LLSD folder_sd;
+				    folder_sd["folder_id"]		= cat->getUUID();
+				    folder_sd["owner_id"]		= cat->getOwnerID();
+				    folder_sd["sort_order"]		= (LLSD::Integer)sort_order;
+				    folder_sd["fetch_folders"]	= TRUE; //(LLSD::Boolean)sFullFetchStarted;
+				    folder_sd["fetch_items"]	= (LLSD::Boolean)TRUE;
+				    
+				    if (ALEXANDRIA_LINDEN_ID == cat->getOwnerID())
+					    body_lib["folders"].append(folder_sd);
+				    else
+					    body["folders"].append(folder_sd);
+				    folder_count++;
+			    }
+			    if (mInventoryFetchStarted || mLibraryFetchStarted)
+			    {	//Already have this folder but append child folders to list.
+				    // add all children to queue
+					LLInventoryModel::cat_array_t* categories;
+					LLInventoryModel::item_array_t* items;
+					gInventory.getDirectDescendentsOf(cat->getUUID(), categories, items);
+					for (LLInventoryModel::cat_array_t::const_iterator it = categories->begin();
+						 it != categories->end();
+						 ++it)
+					{
+						sFetchQueue.push_back((*it)->getUUID());
+				    }
+			    }
+		    }
+        }
+		sFetchQueue.pop_front();
+	}
+		
+	if (folder_count > 0)
+	{
+		mBulkFetchCount++;
+		if (body["folders"].size())
+		{
+			LLHTTPClient::post(url, body, new LLInventoryModelFetchDescendentsResponder(body),300.0);
+		}
+		if (body_lib["folders"].size())
+		{
+			std::string url_lib = gAgent.getRegion()->getCapability("FetchLibDescendents");
+			LLHTTPClient::post(url_lib, body_lib, new LLInventoryModelFetchDescendentsResponder(body_lib),300.0);
+		}
+		mFetchTimer.reset();
+	}
+	else if (isBulkFetchProcessingComplete())
+	{
+		setAllFoldersFetched();
+	}
+}
diff --git a/indra/newview/llinventorymodelbackgroundfetch.h b/indra/newview/llinventorymodelbackgroundfetch.h
new file mode 100644
index 0000000000000000000000000000000000000000..94606fae236100b8656109a3fa224fc865b932e5
--- /dev/null
+++ b/indra/newview/llinventorymodelbackgroundfetch.h
@@ -0,0 +1,119 @@
+/** 
+ * @file llinventorymodelbackgroundfetch.h
+ * @brief LLInventoryModelBackgroundFetch class header file
+ *
+ * $LicenseInfo:firstyear=2002&license=viewergpl$
+ * 
+ * Copyright (c) 2002-2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLINVENTORYMODELBACKGROUNDFETCH_H
+#define LL_LLINVENTORYMODELBACKGROUNDFETCH_H
+
+// Seraph clean this up
+#include "llassettype.h"
+#include "llfoldertype.h"
+#include "lldarray.h"
+#include "llframetimer.h"
+#include "llhttpclient.h"
+#include "lluuid.h"
+#include "llpermissionsflags.h"
+#include "llstring.h"
+#include <map>
+#include <set>
+#include <string>
+#include <vector>
+
+// Seraph clean this up
+class LLInventoryObserver;
+class LLInventoryObject;
+class LLInventoryItem;
+class LLInventoryCategory;
+class LLViewerInventoryItem;
+class LLViewerInventoryCategory;
+class LLViewerInventoryItem;
+class LLViewerInventoryCategory;
+class LLMessageSystem;
+class LLInventoryCollectFunctor;
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLInventoryModelBackgroundFetch
+//
+// This class handles background fetch.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+class LLInventoryModelBackgroundFetch : public LLSingleton<LLInventoryModelBackgroundFetch>
+{
+public:
+	LLInventoryModelBackgroundFetch();
+	~LLInventoryModelBackgroundFetch();
+
+	// Start and stop background breadth-first fetching of inventory contents.
+	// This gets triggered when performing a filter-search
+	void start(const LLUUID& cat_id = LLUUID::null);
+	BOOL backgroundFetchActive();
+	bool isEverythingFetched();
+	void incrBulkFetch(S16 fetching);
+	void stopBackgroundFetch(); // stop fetch process
+	bool isBulkFetchProcessingComplete();
+
+	// Add categories to a list to be fetched in bulk.
+	void bulkFetch(std::string url);
+
+	bool libraryFetchStarted();
+	bool libraryFetchCompleted();
+	bool libraryFetchInProgress();
+	
+	bool inventoryFetchStarted();
+	bool inventoryFetchCompleted();
+	bool inventoryFetchInProgress();
+    void findLostItems();
+
+	void setAllFoldersFetched();
+
+	static void backgroundFetchCB(void*); // background fetch idle function
+	void backgroundFetch();
+	
+private:
+ 	BOOL mInventoryFetchStarted;
+	BOOL mLibraryFetchStarted;
+	BOOL mAllFoldersFetched;
+
+	// completing the fetch once per session should be sufficient
+	BOOL mBackgroundFetchActive;
+	S16 mBulkFetchCount;
+	BOOL mTimelyFetchPending;
+	S32 mNumFetchRetries;
+
+	LLFrameTimer mFetchTimer;
+	F32 mMinTimeBetweenFetches;
+	F32 mMaxTimeBetweenFetches;
+
+};
+
+#endif // LL_LLINVENTORYMODELBACKGROUNDFETCH_H
+
diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp
index 62c2d8060943a1e127353e01a41a415f78de0a4a..83e1bbd5a09b1cd2949e6834018def5b3091dee6 100644
--- a/indra/newview/llinventoryobserver.cpp
+++ b/indra/newview/llinventoryobserver.cpp
@@ -77,7 +77,7 @@ void LLInventoryCompletionObserver::changed(U32 mask)
 	// appropriate.
 	if(!mIncomplete.empty())
 	{
-		for(item_ref_t::iterator it = mIncomplete.begin(); it < mIncomplete.end(); )
+		for(uuid_vec_t::iterator it = mIncomplete.begin(); it < mIncomplete.end(); )
 		{
 			LLViewerInventoryItem* item = gInventory.getItem(*it);
 			if(!item)
@@ -108,6 +108,10 @@ void LLInventoryCompletionObserver::watchItem(const LLUUID& id)
 	}
 }
 
+LLInventoryFetchObserver::LLInventoryFetchObserver(bool retry_if_missing) :
+	mRetryIfMissing(retry_if_missing)
+{
+}
 
 void LLInventoryFetchObserver::changed(U32 mask)
 {
@@ -115,7 +119,7 @@ void LLInventoryFetchObserver::changed(U32 mask)
 	// appropriate.
 	if(!mIncomplete.empty())
 	{
-		for(item_ref_t::iterator it = mIncomplete.begin(); it < mIncomplete.end(); )
+		for(uuid_vec_t::iterator it = mIncomplete.begin(); it < mIncomplete.end(); )
 		{
 			LLViewerInventoryItem* item = gInventory.getItem(*it);
 			if(!item)
@@ -219,12 +223,11 @@ void fetch_items_from_llsd(const LLSD& items_llsd)
 	}
 }
 
-void LLInventoryFetchObserver::fetchItems(
-	const LLInventoryFetchObserver::item_ref_t& ids)
+void LLInventoryFetchObserver::fetch(const uuid_vec_t& ids)
 {
 	LLUUID owner_id;
 	LLSD items_llsd;
-	for(item_ref_t::const_iterator it = ids.begin(); it < ids.end(); ++it)
+	for(uuid_vec_t::const_iterator it = ids.begin(); it < ids.end(); ++it)
 	{
 		LLViewerInventoryItem* item = gInventory.getItem(*it);
 		if(item)
@@ -262,50 +265,49 @@ void LLInventoryFetchObserver::fetchItems(
 // virtual
 void LLInventoryFetchDescendentsObserver::changed(U32 mask)
 {
-	for(folder_ref_t::iterator it = mIncompleteFolders.begin(); it < mIncompleteFolders.end();)
+	for(uuid_vec_t::iterator it = mIncomplete.begin(); it < mIncomplete.end();)
 	{
 		LLViewerInventoryCategory* cat = gInventory.getCategory(*it);
 		if(!cat)
 		{
-			it = mIncompleteFolders.erase(it);
+			it = mIncomplete.erase(it);
 			continue;
 		}
 		if(isComplete(cat))
 		{
-			mCompleteFolders.push_back(*it);
-			it = mIncompleteFolders.erase(it);
+			mComplete.push_back(*it);
+			it = mIncomplete.erase(it);
 			continue;
 		}
 		++it;
 	}
-	if(mIncompleteFolders.empty())
+	if(mIncomplete.empty())
 	{
 		done();
 	}
 }
 
-void LLInventoryFetchDescendentsObserver::fetchDescendents(
-	const folder_ref_t& ids)
+void LLInventoryFetchDescendentsObserver::fetch(const uuid_vec_t& ids)
 {
-	for(folder_ref_t::const_iterator it = ids.begin(); it != ids.end(); ++it)
+	for(uuid_vec_t::const_iterator it = ids.begin(); it != ids.end(); ++it)
 	{
 		LLViewerInventoryCategory* cat = gInventory.getCategory(*it);
 		if(!cat) continue;
 		if(!isComplete(cat))
 		{
-			cat->fetchDescendents();		//blindly fetch it without seeing if anything else is fetching it.
-			mIncompleteFolders.push_back(*it);	//Add to list of things being downloaded for this observer.
+			cat->fetch();		//blindly fetch it without seeing if anything else is fetching it.
+			mIncomplete.push_back(*it);	//Add to list of things being downloaded for this observer.
 		}
 		else
 		{
-			mCompleteFolders.push_back(*it);
+			mComplete.push_back(*it);
 		}
 	}
 }
 
 bool LLInventoryFetchDescendentsObserver::isEverythingComplete() const
 {
-	return mIncompleteFolders.empty();
+	return mIncomplete.empty();
 }
 
 bool LLInventoryFetchDescendentsObserver::isComplete(LLViewerInventoryCategory* cat)
@@ -355,7 +357,7 @@ void LLInventoryFetchComboObserver::changed(U32 mask)
 {
 	if(!mIncompleteItems.empty())
 	{
-		for(item_ref_t::iterator it = mIncompleteItems.begin(); it < mIncompleteItems.end(); )
+		for(uuid_vec_t::iterator it = mIncompleteItems.begin(); it < mIncompleteItems.end(); )
 		{
 			LLViewerInventoryItem* item = gInventory.getItem(*it);
 			if(!item)
@@ -364,7 +366,7 @@ void LLInventoryFetchComboObserver::changed(U32 mask)
 				continue;
 			}
 			if(item->isComplete())
-		{	
+			{	
 				mCompleteItems.push_back(*it);
 				it = mIncompleteItems.erase(it);
 				continue;
@@ -374,7 +376,7 @@ void LLInventoryFetchComboObserver::changed(U32 mask)
 	}
 	if(!mIncompleteFolders.empty())
 	{
-		for(folder_ref_t::iterator it = mIncompleteFolders.begin(); it < mIncompleteFolders.end();)
+		for(uuid_vec_t::iterator it = mIncompleteFolders.begin(); it < mIncompleteFolders.end();)
 		{
 			LLViewerInventoryCategory* cat = gInventory.getCategory(*it);
 			if(!cat)
@@ -399,17 +401,17 @@ void LLInventoryFetchComboObserver::changed(U32 mask)
 }
 
 void LLInventoryFetchComboObserver::fetch(
-	const folder_ref_t& folder_ids,
-	const item_ref_t& item_ids)
+	const uuid_vec_t& folder_ids,
+	const uuid_vec_t& item_ids)
 {
 	lldebugs << "LLInventoryFetchComboObserver::fetch()" << llendl;
-	for(folder_ref_t::const_iterator fit = folder_ids.begin(); fit != folder_ids.end(); ++fit)
+	for(uuid_vec_t::const_iterator fit = folder_ids.begin(); fit != folder_ids.end(); ++fit)
 	{
 		LLViewerInventoryCategory* cat = gInventory.getCategory(*fit);
 		if(!cat) continue;
 		if(!gInventory.isCategoryComplete(*fit))
 		{
-			cat->fetchDescendents();
+			cat->fetch();
 			lldebugs << "fetching folder " << *fit <<llendl;
 			mIncompleteFolders.push_back(*fit);
 		}
@@ -426,7 +428,7 @@ void LLInventoryFetchComboObserver::fetch(
 	// have to fetch it individually.
 	LLSD items_llsd;
 	LLUUID owner_id;
-	for(item_ref_t::const_iterator iit = item_ids.begin(); iit != item_ids.end(); ++iit)
+	for(uuid_vec_t::const_iterator iit = item_ids.begin(); iit != item_ids.end(); ++iit)
 	{
 		LLViewerInventoryItem* item = gInventory.getItem(*iit);
 		if(!item)
@@ -475,7 +477,7 @@ void LLInventoryExistenceObserver::changed(U32 mask)
 	// appropriate.
 	if(!mMIA.empty())
 	{
-		for(item_ref_t::iterator it = mMIA.begin(); it < mMIA.end(); )
+		for(uuid_vec_t::iterator it = mMIA.begin(); it < mMIA.end(); )
 		{
 			LLViewerInventoryItem* item = gInventory.getItem(*it);
 			if(!item)
@@ -564,8 +566,8 @@ void LLInventoryTransactionObserver::changed(U32 mask)
 			if(id == mTransactionID)
 			{
 				// woo hoo, we found it
-				folder_ref_t folders;
-				item_ref_t items;
+				uuid_vec_t folders;
+				uuid_vec_t items;
 				S32 count;
 				count = msg->getNumberOfBlocksFast(_PREHASH_FolderData);
 				S32 i;
diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h
index d6dded52d481ea72103b5693ab6d1ff441e7a71d..ba70552ebcf307bd19842601a99f328e226cf2a0 100644
--- a/indra/newview/llinventoryobserver.h
+++ b/indra/newview/llinventoryobserver.h
@@ -42,8 +42,8 @@ class LLViewerInventoryCategory;
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // Class LLInventoryObserver
 //
-// This class is designed to be a simple abstract base class which can
-// relay messages when the inventory changes.
+//   A simple abstract base class that can relay messages when the inventory 
+//   changes.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 class LLInventoryObserver
@@ -54,17 +54,17 @@ class LLInventoryObserver
 	// chaged() to see if the observer is interested in the change.
 	enum 
 	{
-		NONE = 0,
-		LABEL = 1,			// name changed
-		INTERNAL = 2,		// internal change (e.g. asset uuid different)
-		ADD = 4,			// something added
-		REMOVE = 8,			// something deleted
-		STRUCTURE = 16,		// structural change (eg item or folder moved)
-		CALLING_CARD = 32,	// (eg online, grant status, cancel)
-		GESTURE = 64,
-		REBUILD = 128, 		// item UI changed (eg item type different)
-		SORT = 256, 		// folder needs to be resorted.
-		ALL = 0xffffffff
+		NONE 			= 0,
+		LABEL 			= 1,	// Name changed
+		INTERNAL 		= 2,	// Internal change (e.g. asset uuid different)
+		ADD 			= 4,	// Something added
+		REMOVE 			= 8,	// Something deleted
+		STRUCTURE 		= 16,	// Structural change (e.g. item or folder moved)
+		CALLING_CARD 	= 32,	// Calling card change (e.g. online, grant status, cancel)
+		GESTURE 		= 64,
+		REBUILD 		= 128, 	// Item UI changed (e.g. item type different)
+		SORT 			= 256, 	// Folder needs to be resorted.
+		ALL 			= 0xffffffff
 	};
 	LLInventoryObserver();
 	virtual ~LLInventoryObserver();
@@ -75,11 +75,10 @@ class LLInventoryObserver
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // Class LLInventoryCompletionObserver
 //
-// Class which can be used as a base class for doing something when
-// when all observed items are locally complete. This class implements
-// the changed() method of LLInventoryObserver and declares a new
-// method named done() which is called when all watched items have
-// complete information in the inventory model.
+//   Base class for doing something when when all observed items are locally 
+//   complete.  Implements the changed() method of LLInventoryObserver 
+//   and declares a new method named done() which is called when all watched items 
+//   have complete information in the inventory model.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 class LLInventoryCompletionObserver : public LLInventoryObserver
@@ -93,9 +92,8 @@ class LLInventoryCompletionObserver : public LLInventoryObserver
 protected:
 	virtual void done() = 0;
 
-	typedef std::vector<LLUUID> item_ref_t;
-	item_ref_t mComplete;
-	item_ref_t mIncomplete;
+	uuid_vec_t mComplete;
+	uuid_vec_t mIncomplete;
 };
 
 
@@ -110,19 +108,17 @@ class LLInventoryCompletionObserver : public LLInventoryObserver
 class LLInventoryFetchObserver : public LLInventoryObserver
 {
 public:
-	LLInventoryFetchObserver(bool retry_if_missing = false): mRetryIfMissing(retry_if_missing) {}
+	LLInventoryFetchObserver(bool retry_if_missing = false);
 	virtual void changed(U32 mask);
 
-	typedef std::vector<LLUUID> item_ref_t;
-
 	bool isEverythingComplete() const;
-	void fetchItems(const item_ref_t& ids);
+	void fetch(const uuid_vec_t& ids);
 	virtual void done() {};
 
 protected:
 	bool mRetryIfMissing;
-	item_ref_t mComplete;
-	item_ref_t mIncomplete;
+	uuid_vec_t mComplete;
+	uuid_vec_t mIncomplete;
 };
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -138,15 +134,14 @@ class LLInventoryFetchDescendentsObserver : public LLInventoryObserver
 	LLInventoryFetchDescendentsObserver() {}
 	virtual void changed(U32 mask);
 
-	typedef std::vector<LLUUID> folder_ref_t;
-	void fetchDescendents(const folder_ref_t& ids);
+	void fetch(const uuid_vec_t& ids);
 	bool isEverythingComplete() const;
 	virtual void done() = 0;
 
 protected:
 	bool isComplete(LLViewerInventoryCategory* cat);
-	folder_ref_t mIncompleteFolders;
-	folder_ref_t mCompleteFolders;
+	uuid_vec_t mIncomplete;
+	uuid_vec_t mComplete;
 };
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -163,18 +158,16 @@ class LLInventoryFetchComboObserver : public LLInventoryObserver
 	LLInventoryFetchComboObserver() : mDone(false) {}
 	virtual void changed(U32 mask);
 
-	typedef std::vector<LLUUID> folder_ref_t;
-	typedef std::vector<LLUUID> item_ref_t;
-	void fetch(const folder_ref_t& folder_ids, const item_ref_t& item_ids);
+	void fetch(const uuid_vec_t& folder_ids, const uuid_vec_t& item_ids);
 
 	virtual void done() = 0;
 
 protected:
 	bool mDone;
-	folder_ref_t mCompleteFolders;
-	folder_ref_t mIncompleteFolders;
-	item_ref_t mCompleteItems;
-	item_ref_t mIncompleteItems;
+	uuid_vec_t mCompleteFolders;
+	uuid_vec_t mIncompleteFolders;
+	uuid_vec_t mCompleteItems;
+	uuid_vec_t mIncompleteItems;
 };
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -196,10 +189,8 @@ class LLInventoryExistenceObserver : public LLInventoryObserver
 
 protected:
 	virtual void done() = 0;
-
-	typedef std::vector<LLUUID> item_ref_t;
-	item_ref_t mExist;
-	item_ref_t mMIA;
+	uuid_vec_t mExist;
+	uuid_vec_t mMIA;
 };
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -221,8 +212,7 @@ class LLInventoryAddedObserver : public LLInventoryObserver
 protected:
 	virtual void done() = 0;
 
-	typedef std::vector<LLUUID> item_ref_t;
-	item_ref_t mAdded;
+	uuid_vec_t mAdded;
 };
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -242,9 +232,7 @@ class LLInventoryTransactionObserver : public LLInventoryObserver
 	virtual void changed(U32 mask);
 
 protected:
-	typedef std::vector<LLUUID> folder_ref_t;
-	typedef std::vector<LLUUID> item_ref_t;
-	virtual void done(const folder_ref_t& folders, const item_ref_t& items) = 0;
+	virtual void done(const uuid_vec_t& folders, const uuid_vec_t& items) = 0;
 
 	LLTransactionID mTransactionID;
 };
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index d7720b735c6f6484178f9f9a32dee2e5ab3b4eb1..c6c2d23a4b499b8e596ab22770d8ab58f342593b 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -43,6 +43,8 @@
 #include "llimfloater.h"
 #include "llimview.h"
 #include "llinventorybridge.h"
+#include "llinventoryfunctions.h"
+#include "llinventorymodelbackgroundfetch.h"
 #include "llsidepanelinventory.h"
 #include "llsidetray.h"
 #include "llscrollcontainer.h"
@@ -78,7 +80,7 @@ class LLInventoryPanelObserver : public LLInventoryObserver
 LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :	
 	LLPanel(p),
 	mInventoryObserver(NULL),
-	mFolders(NULL),
+	mFolderRoot(NULL),
 	mScroller(NULL),
 	mSortOrderSetting(p.sort_order_setting),
 	mInventory(p.inventory),
@@ -122,13 +124,13 @@ BOOL LLInventoryPanel::postBuild()
 		p.rect = folder_rect;
 		p.parent_panel = this;
 		p.tool_tip = p.name;
-		mFolders = LLUICtrlFactory::create<LLFolderView>(p);
-		mFolders->setAllowMultiSelect(mAllowMultiSelect);
+		mFolderRoot = LLUICtrlFactory::create<LLFolderView>(p);
+		mFolderRoot->setAllowMultiSelect(mAllowMultiSelect);
 	}
 
 	mCommitCallbackRegistrar.popScope();
 	
-	mFolders->setCallbackRegistrar(&mCommitCallbackRegistrar);
+	mFolderRoot->setCallbackRegistrar(&mCommitCallbackRegistrar);
 	
 	// Scroller
 	{
@@ -142,9 +144,9 @@ BOOL LLInventoryPanel::postBuild()
 		p.tab_stop(true);
 		mScroller = LLUICtrlFactory::create<LLScrollContainer>(p);
 		addChild(mScroller);
-		mScroller->addChild(mFolders);
-		mFolders->setScrollContainer(mScroller);
-		mFolders->addChild(mFolders->mStatusTextBox);
+		mScroller->addChild(mFolderRoot);
+		mFolderRoot->setScrollContainer(mScroller);
+		mFolderRoot->addChild(mFolderRoot->mStatusTextBox);
 	}
 
 	// Set up the callbacks from the inventory we're viewing, and then build everything.
@@ -167,16 +169,16 @@ BOOL LLInventoryPanel::postBuild()
 	{
 		setSortOrder(gSavedSettings.getU32(DEFAULT_SORT_ORDER));
 	}
-	mFolders->setSortOrder(getFilter()->getSortOrder());
+	mFolderRoot->setSortOrder(getFilter()->getSortOrder());
 
 	return TRUE;
 }
 
 LLInventoryPanel::~LLInventoryPanel()
 {
-	if (mFolders)
+	if (mFolderRoot)
 	{
-		U32 sort_order = mFolders->getSortOrder();
+		U32 sort_order = mFolderRoot->getSortOrder();
 		if (mSortOrderSetting != INHERIT_SORT_ORDER)
 		{
 			gSavedSettings.setU32(mSortOrderSetting, sort_order);
@@ -192,15 +194,15 @@ LLInventoryPanel::~LLInventoryPanel()
 void LLInventoryPanel::draw()
 {
 	// Select the desired item (in case it wasn't loaded when the selection was requested)
-	mFolders->updateSelection();
+	mFolderRoot->updateSelection();
 	LLPanel::draw();
 }
 
 LLInventoryFilter* LLInventoryPanel::getFilter()
 {
-	if (mFolders) 
+	if (mFolderRoot) 
 	{
-		return mFolders->getFilter();
+		return mFolderRoot->getFilter();
 	}
 	return NULL;
 }
@@ -228,9 +230,9 @@ void LLInventoryPanel::setSortOrder(U32 order)
 	getFilter()->setSortOrder(order);
 	if (getFilter()->isModified())
 	{
-		mFolders->setSortOrder(order);
+		mFolderRoot->setSortOrder(order);
 		// try to keep selection onscreen, even if it wasn't to start with
-		mFolders->scrollToShowSelection();
+		mFolderRoot->scrollToShowSelection();
 	}
 }
 
@@ -275,8 +277,8 @@ void LLInventoryPanel::modelChanged(U32 mask)
 	{
 		const LLUUID& item_id = (*items_iter);
 		const LLInventoryObject* model_item = model->getObject(item_id);
-		LLFolderViewItem* view_item = mFolders->getItemByID(item_id);
-		LLFolderViewFolder* view_folder = mFolders->getFolderByID(item_id);
+		LLFolderViewItem* view_item = mFolderRoot->getItemByID(item_id);
+		LLFolderViewFolder* view_folder = mFolderRoot->getFolderByID(item_id);
 
 		//////////////////////////////
 		// LABEL Operation
@@ -351,7 +353,7 @@ void LLInventoryPanel::modelChanged(U32 mask)
 				// Add the UI element for this item.
 				buildNewViews(item_id);
 				// Select any newly created object that has the auto rename at top of folder root set.
-				if(mFolders->getRoot()->needsAutoRename())
+				if(mFolderRoot->getRoot()->needsAutoRename())
 				{
 					setSelection(item_id, FALSE);
 				}
@@ -366,7 +368,7 @@ void LLInventoryPanel::modelChanged(U32 mask)
 				// model_item's parent will be NULL.
 				if (view_item->getRoot() != view_item->getParent())
 				{
-					LLFolderViewFolder* new_parent = (LLFolderViewFolder*)mFolders->getItemByID(model_item->getParentUUID());
+					LLFolderViewFolder* new_parent = (LLFolderViewFolder*)mFolderRoot->getItemByID(model_item->getParentUUID());
 					// Item has been moved.
 					if (view_item->getParentFolder() != new_parent)
 					{
@@ -374,7 +376,7 @@ void LLInventoryPanel::modelChanged(U32 mask)
 						{
 							// Item is to be moved and we found its new parent in the panel's directory, so move the item's UI.
 							view_item->getParentFolder()->extractItem(view_item);
-							view_item->addToFolder(new_parent, mFolders);
+							view_item->addToFolder(new_parent, mFolderRoot);
 						}
 						else 
 						{
@@ -442,14 +444,14 @@ void LLInventoryPanel::initializeViews()
 	if (gAgent.isFirstLogin())
 	{
 		// Auto open the user's library
-		LLFolderViewFolder* lib_folder = mFolders->getFolderByID(gInventory.getLibraryRootFolderID());
+		LLFolderViewFolder* lib_folder = mFolderRoot->getFolderByID(gInventory.getLibraryRootFolderID());
 		if (lib_folder)
 		{
 			lib_folder->setOpen(TRUE);
 		}
 		
 		// Auto close the user's my inventory folder
-		LLFolderViewFolder* my_inv_folder = mFolders->getFolderByID(gInventory.getRootFolderID());
+		LLFolderViewFolder* my_inv_folder = mFolderRoot->getFolderByID(gInventory.getRootFolderID());
 		if (my_inv_folder)
 		{
 			my_inv_folder->setOpenArrangeRecursively(FALSE, LLFolderViewFolder::RECURSE_DOWN);
@@ -460,7 +462,7 @@ void LLInventoryPanel::initializeViews()
 void LLInventoryPanel::rebuildViewsFor(const LLUUID& id)
 {
 	// Destroy the old view for this ID so we can rebuild it.
-	LLFolderViewItem* old_view = mFolders->getItemByID(id);
+	LLFolderViewItem* old_view = mFolderRoot->getItemByID(id);
 	if (old_view && id.notNull())
 	{
 		old_view->destroyView();
@@ -477,10 +479,10 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
 	if (objectp)
 	{
 		const LLUUID &parent_id = objectp->getParentUUID();
-		LLFolderViewFolder* parent_folder = (LLFolderViewFolder*)mFolders->getItemByID(parent_id);
+		LLFolderViewFolder* parent_folder = (LLFolderViewFolder*)mFolderRoot->getItemByID(parent_id);
 		if (id == mStartFolderID)
 		{
-			parent_folder = mFolders;
+			parent_folder = mFolderRoot;
 		}
 		else if ((mStartFolderID != LLUUID::null) && (!gInventory.isObjectDescendentOf(id, mStartFolderID)))
 		{
@@ -504,19 +506,19 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
 																			objectp->getType(),
 																			LLInventoryType::IT_CATEGORY,
 																			this,
+																			mFolderRoot,
 																			objectp->getUUID());
-			
 			if (new_listener)
 			{
 				LLFolderViewFolder::Params params;
 				params.name = new_listener->getDisplayName();
 				params.icon = new_listener->getIcon();
 				params.icon_open = new_listener->getOpenIcon();
-				params.root = mFolders;
+				params.root = mFolderRoot;
 				params.listener = new_listener;
 				params.tool_tip = params.name;
 				LLFolderViewFolder* folderp = LLUICtrlFactory::create<LLFolderViewFolder>(params);
-				folderp->setItemSortOrder(mFolders->getSortOrder());
+				folderp->setItemSortOrder(mFolderRoot->getSortOrder());
 				itemp = folderp;
 
 				// Hide the root folder, so we can show the contents of a folder flat
@@ -540,6 +542,7 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
 																			item->getActualType(),
 																			item->getInventoryType(),
 																			this,
+																			mFolderRoot,
 																			item->getUUID(),
 																			item->getFlags());
 
@@ -550,7 +553,7 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
 				params.icon = new_listener->getIcon();
 				params.icon_open = new_listener->getOpenIcon();
 				params.creation_date = new_listener->getCreationDate();
-				params.root = mFolders;
+				params.root = mFolderRoot;
 				params.listener = new_listener;
 				params.rect = LLRect (0, 0, 0, 0);
 				params.tool_tip = params.name;
@@ -560,7 +563,7 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
 
 		if (itemp)
 		{
-			itemp->addToFolder(parent_folder, mFolders);
+			itemp->addToFolder(parent_folder, mFolderRoot);
 
 			// Don't add children of hidden folders unless this is the panel's root folder.
 			if (itemp->getHidden() && (id != mStartFolderID))
@@ -609,19 +612,19 @@ void LLInventoryPanel::openStartFolderOrMyInventory()
 {
 	if (mStartFolderString != "")
 	{
-		mFolders->openFolder(mStartFolderString);
+		mFolderRoot->openFolder(mStartFolderString);
 	}
 	else
 	{
 		// Find My Inventory folder and open it up by name
-		for (LLView *child = mFolders->getFirstChild(); child; child = mFolders->findNextSibling(child))
+		for (LLView *child = mFolderRoot->getFirstChild(); child; child = mFolderRoot->findNextSibling(child))
 		{
 			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);
+				mFolderRoot->openFolder(child_name);
 				break;
 			}
 		}
@@ -630,7 +633,7 @@ void LLInventoryPanel::openStartFolderOrMyInventory()
 
 void LLInventoryPanel::openSelected()
 {
-	LLFolderViewItem* folder_item = mFolders->getCurSelectedItem();
+	LLFolderViewItem* folder_item = mFolderRoot->getCurSelectedItem();
 	if(!folder_item) return;
 	LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getListener();
 	if(!bridge) return;
@@ -643,7 +646,7 @@ BOOL LLInventoryPanel::handleHover(S32 x, S32 y, MASK mask)
 	if(handled)
 	{
 		ECursorType cursor = getWindow()->getCursor();
-		if (LLInventoryModel::backgroundFetchActive() && cursor == UI_CURSOR_ARROW)
+		if (LLInventoryModelBackgroundFetch::instance().backgroundFetchActive() && cursor == UI_CURSOR_ARROW)
 		{
 			// replace arrow cursor with arrow and hourglass cursor
 			getWindow()->setCursor(UI_CURSOR_WORKING);
@@ -666,14 +669,14 @@ BOOL LLInventoryPanel::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 
 	// If folder view is empty the (x, y) point won't be in its rect
 	// so the handler must be called explicitly.
-	if (!mFolders->hasVisibleChildren())
+	if (!mFolderRoot->hasVisibleChildren())
 	{
-		handled = mFolders->handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
+		handled = mFolderRoot->handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
 	}
 
 	if (handled)
 	{
-		mFolders->setDragAndDropThisFrame();
+		mFolderRoot->setDragAndDropThisFrame();
 	}
 
 	return handled;
@@ -684,20 +687,20 @@ void LLInventoryPanel::onMouseEnter(S32 x, S32 y, MASK mask)
 {
 	LLPanel::onMouseEnter(x, y, mask);
 	// don't auto-scroll a list when cursor is over Inventory. See EXT-3981.
-	mFolders->setEnableScroll(false);
+	mFolderRoot->setEnableScroll(false);
 }
 
 // virtual
 void LLInventoryPanel::onMouseLeave(S32 x, S32 y, MASK mask)
 {
 	LLPanel::onMouseLeave(x, y, mask);
-	mFolders->setEnableScroll(true);
+	mFolderRoot->setEnableScroll(true);
 }
 
 void LLInventoryPanel::onFocusLost()
 {
 	// inventory no longer handles cut/copy/paste/delete
-	if (LLEditMenuHandler::gEditMenuHandler == mFolders)
+	if (LLEditMenuHandler::gEditMenuHandler == mFolderRoot)
 	{
 		LLEditMenuHandler::gEditMenuHandler = NULL;
 	}
@@ -708,39 +711,39 @@ void LLInventoryPanel::onFocusLost()
 void LLInventoryPanel::onFocusReceived()
 {
 	// inventory now handles cut/copy/paste/delete
-	LLEditMenuHandler::gEditMenuHandler = mFolders;
+	LLEditMenuHandler::gEditMenuHandler = mFolderRoot;
 
 	LLPanel::onFocusReceived();
 }
 
 void LLInventoryPanel::openAllFolders()
 {
-	mFolders->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN);
-	mFolders->arrangeAll();
+	mFolderRoot->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN);
+	mFolderRoot->arrangeAll();
 }
 
 void LLInventoryPanel::setSelection(const LLUUID& obj_id, BOOL take_keyboard_focus)
 {
 	// Don't select objects in COF (e.g. to prevent refocus when items are worn).
 	const LLInventoryObject *obj = gInventory.getObject(obj_id);
-	if (obj && obj->getParentUUID() == LLAppearanceManager::instance().getCOF())
+	if (obj && obj->getParentUUID() == LLAppearanceMgr::instance().getCOF())
 	{
 		return;
 	}
-	mFolders->setSelectionByID(obj_id, take_keyboard_focus);
+	mFolderRoot->setSelectionByID(obj_id, take_keyboard_focus);
 }
 
 void LLInventoryPanel::setSelectCallback(const LLFolderView::signal_t::slot_type& cb) 
 { 
-	if (mFolders) 
+	if (mFolderRoot) 
 	{
-		mFolders->setSelectCallback(cb);
+		mFolderRoot->setSelectCallback(cb);
 	}
 }
 
 void LLInventoryPanel::clearSelection()
 {
-	mFolders->clearSelection();
+	mFolderRoot->clearSelection();
 }
 
 void LLInventoryPanel::onSelectionChange(const std::deque<LLFolderViewItem*>& items, BOOL user_action)
@@ -759,18 +762,18 @@ void LLInventoryPanel::onSelectionChange(const std::deque<LLFolderViewItem*>& it
 
 void LLInventoryPanel::doToSelected(const LLSD& userdata)
 {
-	mFolders->doToSelected(&gInventory, userdata);
+	mFolderRoot->doToSelected(&gInventory, userdata);
 }
 
 void LLInventoryPanel::doCreate(const LLSD& userdata)
 {
-	menu_create_inventory_item(mFolders, LLFolderBridge::sSelf, userdata);
+	menu_create_inventory_item(mFolderRoot, LLFolderBridge::sSelf, userdata);
 }
 
 bool LLInventoryPanel::beginIMSession()
 {
 	std::set<LLUUID> selected_items;
-	mFolders->getSelectionList(selected_items);
+	mFolderRoot->getSelectionList(selected_items);
 
 	std::string name;
 	static int session_num = 1;
@@ -783,7 +786,7 @@ bool LLInventoryPanel::beginIMSession()
 	{
 
 		LLUUID item = *iter;
-		LLFolderViewItem* folder_item = mFolders->getItemByID(item);
+		LLFolderViewItem* folder_item = mFolderRoot->getItemByID(item);
 			
 		if(folder_item) 
 		{
@@ -825,7 +828,7 @@ bool LLInventoryPanel::beginIMSession()
 			}
 			else
 			{
-				LLFolderViewItem* folder_item = mFolders->getItemByID(item);
+				LLFolderViewItem* folder_item = mFolderRoot->getItemByID(item);
 				if(!folder_item) return true;
 				LLInvFVBridge* listenerp = (LLInvFVBridge*)folder_item->getListener();
 
@@ -868,13 +871,12 @@ bool LLInventoryPanel::beginIMSession()
 bool LLInventoryPanel::attachObject(const LLSD& userdata)
 {
 	std::set<LLUUID> selected_items;
-	mFolders->getSelectionList(selected_items);
+	mFolderRoot->getSelectionList(selected_items);
 
 	std::string joint_name = userdata.asString();
-	LLVOAvatar *avatarp = static_cast<LLVOAvatar*>(gAgent.getAvatarObject());
 	LLViewerJointAttachment* attachmentp = NULL;
-	for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin(); 
-		 iter != avatarp->mAttachmentPoints.end(); )
+	for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
+		 iter != gAgentAvatarp->mAttachmentPoints.end(); )
 	{
 		LLVOAvatar::attachment_map_t::iterator curiter = iter++;
 		LLViewerJointAttachment* attachment = curiter->second;
@@ -926,7 +928,7 @@ BOOL LLInventoryPanel::getSinceLogoff()
 void LLInventoryPanel::dumpSelectionInformation(void* user_data)
 {
 	LLInventoryPanel* iv = (LLInventoryPanel*)user_data;
-	iv->mFolders->dumpSelectionInformation();
+	iv->mFolderRoot->dumpSelectionInformation();
 }
 
 BOOL is_inventorysp_active()
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 928a458b84296281fa1e5619616398651084fe3b..160a3d6f23b9e676dd007d50cd0f6043da35f76d 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -133,21 +133,21 @@ class LLInventoryPanel : public LLPanel
 	void clearSelection();
 	LLInventoryFilter* getFilter();
 	void setFilterTypes(U64 filter, LLInventoryFilter::EFilterType = LLInventoryFilter::FILTERTYPE_OBJECT);
-	U32 getFilterObjectTypes() const { return mFolders->getFilterObjectTypes(); }
+	U32 getFilterObjectTypes() const { return mFolderRoot->getFilterObjectTypes(); }
 	void setFilterPermMask(PermissionMask filter_perm_mask);
-	U32 getFilterPermMask() const { return mFolders->getFilterPermissions(); }
+	U32 getFilterPermMask() const { return mFolderRoot->getFilterPermissions(); }
 	void setFilterSubString(const std::string& string);
-	const std::string getFilterSubString() { return mFolders->getFilterSubString(); }
+	const std::string getFilterSubString() { return mFolderRoot->getFilterSubString(); }
 	void setSinceLogoff(BOOL sl);
 	void setHoursAgo(U32 hours);
 	BOOL getSinceLogoff();
 	
 	void setShowFolderState(LLInventoryFilter::EFolderShow show);
 	LLInventoryFilter::EFolderShow getShowFolderState();
-	void setAllowMultiSelect(BOOL allow) { mFolders->setAllowMultiSelect(allow); }
+	void setAllowMultiSelect(BOOL allow) { mFolderRoot->setAllowMultiSelect(allow); }
 	// This method is called when something has changed about the inventory.
 	void modelChanged(U32 mask);
-	LLFolderView* getRootFolder() { return mFolders; }
+	LLFolderView* getRootFolder() { return mFolderRoot; }
 	LLScrollContainer* getScrollableContainer() { return mScroller; }
 	
 	void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
@@ -162,7 +162,7 @@ class LLInventoryPanel : public LLPanel
 	static void dumpSelectionInformation(void* user_data);
 
 	void openSelected();
-	void unSelectAll()	{ mFolders->setSelection(NULL, FALSE, FALSE); }
+	void unSelectAll()	{ mFolderRoot->setSelection(NULL, FALSE, FALSE); }
 	
 	static void onIdle(void* user_data);
 
@@ -177,7 +177,7 @@ class LLInventoryPanel : public LLPanel
 	LLInventoryObserver*		mInventoryObserver;
 	BOOL 						mAllowMultiSelect;
 
-	LLFolderView*				mFolders;
+	LLFolderView*				mFolderRoot;
 	LLScrollContainer*			mScroller;
 
 	/**
@@ -199,7 +199,7 @@ class LLInventoryPanel : public LLPanel
 	static const std::string INHERIT_SORT_ORDER;
 	
 	void setSortOrder(U32 order);
-	U32 getSortOrder() const { return mFolders->getSortOrder(); }
+	U32 getSortOrder() const { return mFolderRoot->getSortOrder(); }
 private:
 	std::string					mSortOrderSetting;
 
diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp
index f25d2ef5743fb8e05b2828318dbc1853ab7789af..7336efb62a25c5e3fbb7f8c38bf3636b2203a529 100644
--- a/indra/newview/lllandmarkactions.cpp
+++ b/indra/newview/lllandmarkactions.cpp
@@ -36,6 +36,7 @@
 #include "roles_constants.h"
 
 #include "llinventory.h"
+#include "llinventoryfunctions.h"
 #include "lllandmark.h"
 #include "llparcel.h"
 #include "llregionhandle.h"
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 4100e2fc6161177b7d7f6de3a166674bf8c49a70..4e0be81f622bc445d8cc429e9151dd6572bbf724 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -108,7 +108,7 @@ class LLAddLandmarkObserver : public LLInventoryAddedObserver
 private:
 	/*virtual*/ void done()
 	{
-		std::vector<LLUUID>::const_iterator it = mAdded.begin(), end = mAdded.end();
+		uuid_vec_t::const_iterator it = mAdded.begin(), end = mAdded.end();
 		for(; it != end; ++it)
 		{
 			LLInventoryItem* item = gInventory.getItem(*it);
@@ -227,7 +227,6 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
 	params.default_text(LLStringUtil::null);
 	params.max_length_bytes(p.max_chars);
 	params.keystroke_callback(boost::bind(&LLComboBox::onTextEntry, this, _1));
-	params.handle_edit_keys_directly(true);
 	params.commit_on_focus_lost(false);
 	params.follows.flags(FOLLOWS_ALL);
 	mTextEntry = LLUICtrlFactory::create<LLURLLineEditor>(params);
@@ -391,8 +390,8 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
 
 	mAddLandmarkTooltip = LLTrans::getString("LocationCtrlAddLandmarkTooltip");
 	mEditLandmarkTooltip = LLTrans::getString("LocationCtrlEditLandmarkTooltip");
-	getChild<LLView>("Location History")->setToolTip(LLTrans::getString("LocationCtrlComboBtnTooltip"));
-	getChild<LLView>("Place Information")->setToolTip(LLTrans::getString("LocationCtrlInfoBtnTooltip"));
+	mButton->setToolTip(LLTrans::getString("LocationCtrlComboBtnTooltip"));
+	mInfoBtn->setToolTip(LLTrans::getString("LocationCtrlInfoBtnTooltip"));
 }
 
 LLLocationInputCtrl::~LLLocationInputCtrl()
diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp
index 6dc0a929c835e6385af42bb9cc10fc7ba8cc67d2..6747bcb9c91b66f6214c66a3731e50e3615e99f7 100644
--- a/indra/newview/llmaniprotate.cpp
+++ b/indra/newview/llmaniprotate.cpp
@@ -65,6 +65,7 @@
 #include "lldrawable.h"
 #include "llglheaders.h"
 #include "lltrans.h"
+#include "llvoavatarself.h"
 
 const F32 RADIUS_PIXELS = 100.f;		// size in screen space
 const F32 SQ_RADIUS = RADIUS_PIXELS * RADIUS_PIXELS;
@@ -739,7 +740,7 @@ void LLManipRotate::renderSnapGuides()
 	LLVector3 test_axis = constraint_axis;
 
 	BOOL constrain_to_ref_object = FALSE;
-	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject())
+	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())
 	{
 		test_axis = test_axis * ~grid_rotation;
 	}
@@ -766,7 +767,7 @@ void LLManipRotate::renderSnapGuides()
 	}
 
 	LLVector3 projected_snap_axis = world_snap_axis;
-	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject())
+	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())
 	{
 		projected_snap_axis = projected_snap_axis * grid_rotation;
 	}
@@ -1282,7 +1283,7 @@ LLQuaternion LLManipRotate::dragConstrained( S32 x, S32 y )
 	LLVector3 axis2;
 
 	LLVector3 test_axis = constraint_axis;
-	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject())
+	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())
 	{
 		test_axis = test_axis * ~grid_rotation;
 	}
@@ -1306,7 +1307,7 @@ LLQuaternion LLManipRotate::dragConstrained( S32 x, S32 y )
 		axis1 = LLVector3::x_axis;
 	}
 
-	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject())
+	if (mObjectSelection->getSelectType() == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())
 	{
 		axis1 = axis1 * grid_rotation;
 	}
diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp
index 35c4f7f787cc1ef4b127354131ef22eac585beac..5f0c5e1795186f233f83a02d2381fe2b94bf4928 100644
--- a/indra/newview/llmaniptranslate.cpp
+++ b/indra/newview/llmaniptranslate.cpp
@@ -714,7 +714,7 @@ BOOL LLManipTranslate::handleHover(S32 x, S32 y, MASK mask)
 				// in position changes even when the mouse moves
 				object->setPosition(new_position_local);
 				rebuild(object);
-				gAgent.getAvatarObject()->clampAttachmentPositions();
+				gAgentAvatarp->clampAttachmentPositions();
 				new_position_local = object->getPosition();
 
 				if (selectNode->mIndividualSelection)
diff --git a/indra/newview/llmorphview.cpp b/indra/newview/llmorphview.cpp
index 47234eb77383973524f4ca23e2c62e5b6080e68b..d670eb6ffd61b6bba2111e7dac74381453caecfe 100644
--- a/indra/newview/llmorphview.cpp
+++ b/indra/newview/llmorphview.cpp
@@ -89,15 +89,14 @@ void	LLMorphView::initialize()
 	mCameraYaw = 0.f;
 	mCameraDist = -1.f;
 
-	LLVOAvatar *avatarp = gAgent.getAvatarObject();
-	if (!avatarp || avatarp->isDead())
+	if (!isAgentAvatarValid() || gAgentAvatarp->isDead())
 	{
 		gAgentCamera.changeCameraToDefault();
 		return;
 	}
 
-	avatarp->stopMotion( ANIM_AGENT_BODY_NOISE );
-	avatarp->mSpecialRenderMode = 3;
+	gAgentAvatarp->stopMotion( ANIM_AGENT_BODY_NOISE );
+	gAgentAvatarp->mSpecialRenderMode = 3;
 	
 	// set up camera for close look at avatar
 	mOldCameraNearClip = LLViewerCamera::getInstance()->getNear();
@@ -111,11 +110,10 @@ void	LLMorphView::shutdown()
 {
 	LLVOAvatarSelf::onCustomizeEnd();
 
-	LLVOAvatar *avatarp = gAgent.getAvatarObject();
-	if(avatarp && !avatarp->isDead())
+	if (isAgentAvatarValid())
 	{
-		avatarp->startMotion( ANIM_AGENT_BODY_NOISE );
-		avatarp->mSpecialRenderMode = 0;
+		gAgentAvatarp->startMotion( ANIM_AGENT_BODY_NOISE );
+		gAgentAvatarp->mSpecialRenderMode = 0;
 		// reset camera
 		LLViewerCamera::getInstance()->setNear(mOldCameraNearClip);
 	}
@@ -164,15 +162,11 @@ void LLMorphView::updateCamera()
 {
 	if (!mCameraTargetJoint)
 	{
-		setCameraTargetJoint(gAgent.getAvatarObject()->getJoint("mHead"));
-	}
-	
-	LLVOAvatar* avatar = gAgent.getAvatarObject();
-	if( !avatar )
-	{
-		return;
-	}
-	LLJoint* root_joint = avatar->getRootJoint();
+		setCameraTargetJoint(gAgentAvatarp->getJoint("mHead"));
+	}	
+	if (!isAgentAvatarValid()) return;
+
+	LLJoint* root_joint = gAgentAvatarp->getRootJoint();
 	if( !root_joint )
 	{
 		return;
diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index 58fac143491824e4412802943e23cd99052fca86..0f22a500937828a934dd8d1b5f3566d9e3bba558 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -42,7 +42,7 @@
 
 #include "llagent.h"
 #include "llagentcamera.h"
-#include "llvoavatarself.h" // to check gAgent.getAvatarObject()->isSitting()
+#include "llvoavatarself.h" // to check gAgentAvatarp->isSitting()
 #include "llbottomtray.h"
 #include "llbutton.h"
 #include "llfloaterreg.h"
@@ -332,7 +332,7 @@ void LLFloaterMove::setMovementMode(const EMovementMode mode)
 	updateButtonsWithMovementMode(mode);
 
 	bool bHideModeButtons = MM_FLY == mode
-		|| (gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting());
+		|| (isAgentAvatarValid() && gAgentAvatarp->isSitting());
 
 	showModeButtons(!bHideModeButtons);
 
@@ -388,9 +388,9 @@ void LLFloaterMove::initMovementMode()
 	}
 	setMovementMode(initMovementMode);
 
-	if (gAgent.getAvatarObject())
+	if (isAgentAvatarValid())
 	{
-		setEnabled(!gAgent.getAvatarObject()->isSitting());
+		setEnabled(!gAgentAvatarp->isSitting());
 	}
 }
 
@@ -491,7 +491,7 @@ void LLFloaterMove::onOpen(const LLSD& key)
 		showModeButtons(FALSE);
 	}
 
-	if (gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting())
+	if (isAgentAvatarValid() && gAgentAvatarp->isSitting())
 	{
 		setSittingMode(TRUE);
 		showModeButtons(FALSE);
diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp
index 7a538e372b960165f9cff9c839c5ec71187e8242..9611c286eb20f29d166861a6d223c52e5e5942e3 100644
--- a/indra/newview/llnamelistctrl.cpp
+++ b/indra/newview/llnamelistctrl.cpp
@@ -148,16 +148,30 @@ void	LLNameListCtrl::mouseOverHighlightNthItem( S32 target_index )
 		if(0 <= cur_index && cur_index < (S32)getItemList().size())
 		{
 			LLScrollListItem* item = getItemList()[cur_index];
-			LLScrollListText* cell = dynamic_cast<LLScrollListText*>(item->getColumn(mNameColumnIndex));
-			if(cell)
-				cell->setTextWidth(cell->getTextWidth() + info_icon_size);
+			if (item)
+			{
+				LLScrollListText* cell = dynamic_cast<LLScrollListText*>(item->getColumn(mNameColumnIndex));
+				if (cell)
+					cell->setTextWidth(cell->getTextWidth() + info_icon_size);
+			}
+			else
+			{
+				llwarns << "highlighted name list item is NULL" << llendl;
+			}
 		}
 		if(target_index != -1)
 		{
 			LLScrollListItem* item = getItemList()[target_index];
 			LLScrollListText* cell = dynamic_cast<LLScrollListText*>(item->getColumn(mNameColumnIndex));
-			if(cell)
-				cell->setTextWidth(cell->getTextWidth() - info_icon_size);
+			if (item)
+			{
+				if (cell)
+					cell->setTextWidth(cell->getTextWidth() - info_icon_size);
+			}
+			else
+			{
+				llwarns << "target name item is NULL" << llendl;
+			}
 		}
 	}
 
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index af711b6943aecaa2ac1e9d89c50047bf7cf959f4..1507b7d324bc86a455889bd7e4d67d7f9e1a86da 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -103,7 +103,7 @@ LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p)
 	setCommitCallback(boost::bind(&LLGestureComboList::onCommitGesture, this));
 
 	// now register us as observer since we have a place to put the results
-	LLGestureManager::instance().addObserver(this);
+	LLGestureMgr::instance().addObserver(this);
 
 	// refresh list from current active gestures
 	refreshGestures();
@@ -244,8 +244,8 @@ void LLGestureComboList::refreshGestures()
 	mList->clearRows();
 	mGestures.clear();
 
-	LLGestureManager::item_map_t::const_iterator it;
-	const LLGestureManager::item_map_t& active_gestures = LLGestureManager::instance().getActiveGestures();
+	LLGestureMgr::item_map_t::const_iterator it;
+	const LLGestureMgr::item_map_t& active_gestures = LLGestureMgr::instance().getActiveGestures();
 	LLSD::Integer idx(0);
 	for (it = active_gestures.begin(); it != active_gestures.end(); ++it)
 	{
@@ -289,7 +289,7 @@ void LLGestureComboList::refreshGestures()
 			gesture = mGestures.at(index);
 	}
 	
-	if(gesture && LLGestureManager::instance().isGesturePlaying(gesture))
+	if(gesture && LLGestureMgr::instance().isGesturePlaying(gesture))
 	{
 		return;
 	}
@@ -321,7 +321,7 @@ void LLGestureComboList::onCommitGesture()
 		LLMultiGesture* gesture = mGestures.at(index);
 		if(gesture)
 		{
-			LLGestureManager::instance().playGesture(gesture);
+			LLGestureMgr::instance().playGesture(gesture);
 			if(!gesture->mReplaceText.empty())
 			{
 				LLNearbyChatBar::sendChatFromViewer(gesture->mReplaceText, CHAT_TYPE_NORMAL, FALSE);
@@ -332,7 +332,7 @@ void LLGestureComboList::onCommitGesture()
 
 LLGestureComboList::~LLGestureComboList()
 {
-	LLGestureManager::instance().removeObserver(this);
+	LLGestureMgr::instance().removeObserver(this);
 }
 
 LLNearbyChatBar::LLNearbyChatBar() 
@@ -476,7 +476,7 @@ void LLNearbyChatBar::onChatBoxKeystroke(LLLineEditor* caller, void* userdata)
 		std::string utf8_trigger = wstring_to_utf8str(raw_text);
 		std::string utf8_out_str(utf8_trigger);
 
-		if (LLGestureManager::instance().matchPrefix(utf8_trigger, &utf8_out_str))
+		if (LLGestureMgr::instance().matchPrefix(utf8_trigger, &utf8_out_str))
 		{
 			std::string rest_of_match = utf8_out_str.substr(utf8_trigger.size());
 			self->mChatBox->setText(utf8_trigger + rest_of_match); // keep original capitalization for user-entered part
@@ -558,7 +558,7 @@ void LLNearbyChatBar::sendChat( EChatType type )
 			if (0 == channel)
 			{
 				// discard returned "found" boolean
-				LLGestureManager::instance().triggerAndReviseString(utf8text, &utf8_revised_text);
+				LLGestureMgr::instance().triggerAndReviseString(utf8text, &utf8_revised_text);
 			}
 			else
 			{
@@ -807,8 +807,11 @@ class LLChatHandler : public LLCommandHandler
 	{
 		if (tokens.size() < 2) return false;
 		S32 channel = tokens[0].asInteger();
-		std::string mesg = tokens[1].asString();
-		send_chat_from_viewer(mesg, CHAT_TYPE_NORMAL, channel);
+
+		// Send unescaped message, see EXT-6353.
+		std::string unescaped_mesg (LLURI::unescape(tokens[1].asString()));
+
+		send_chat_from_viewer(unescaped_mesg, CHAT_TYPE_NORMAL, channel);
 		return true;
 	}
 };
diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h
index 1dc0e414a26698108afc73d8ed53476f6e18b107..99a1fedcf3a7784c52081eb44c258e029892629c 100644
--- a/indra/newview/llnotificationhandler.h
+++ b/indra/newview/llnotificationhandler.h
@@ -42,6 +42,8 @@
 #include "llinstantmessage.h"
 #include "llnotificationptr.h"
 
+class LLIMFloater;
+
 namespace LLNotificationsUI
 {
 // ENotificationType enumerates all possible types of notifications that could be met
@@ -304,8 +306,6 @@ class LLHandlerUtil
 
 	/**
 	 * Checks if passed notification can create toast.
-	 *
-	 * It returns false only for inventory accepted/declined notifications if respective IM window is open (EXT-5909)
 	 */
 	static bool canSpawnToast(const LLNotificationPtr& notification);
 
@@ -314,6 +314,11 @@ class LLHandlerUtil
 	 */
 	static bool isIMFloaterOpened(const LLNotificationPtr& notification);
 
+	/**
+	* Determines whether IM floater is focused.
+	*/
+	static bool isIMFloaterFocused(const LLNotificationPtr& notification);
+
 	/**
 	 * Writes notification message to IM session.
 	 */
@@ -375,6 +380,14 @@ class LLHandlerUtil
 	 * Decrements counter of IM messages.
 	 */
 	static void decIMMesageCounter(const LLNotificationPtr& notification);
+
+private:
+
+	/**
+	 * Find IM floater based on "from_id"
+	 */
+	static LLIMFloater* findIMFloater(const LLNotificationPtr& notification);
+
 };
 
 }
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index d3ad61128dbf8e5bb369da209ee6e97348bca1ec..3f551f6b325c4daede359022627b91459a196593 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -128,7 +128,8 @@ const static std::string GRANTED_MODIFY_RIGHTS("GrantedModifyRights"),
 						FRIEND_ONLINE("FriendOnline"), FRIEND_OFFLINE("FriendOffline"),
 						SERVER_OBJECT_MESSAGE("ServerObjectMessage"),
 						TELEPORT_OFFERED("TeleportOffered"),
-						TELEPORT_OFFER_SENT("TeleportOfferSent");
+						TELEPORT_OFFER_SENT("TeleportOfferSent"),
+						IM_SYSTEM_MESSAGE_TIP("IMSystemMessageTip");
 
 
 // static
@@ -147,7 +148,8 @@ bool LLHandlerUtil::canLogToIM(const LLNotificationPtr& notification)
 			|| INVENTORY_DECLINED == notification->getName()
 			|| USER_GIVE_ITEM == notification->getName()
 			|| TELEPORT_OFFERED == notification->getName()
-			|| TELEPORT_OFFER_SENT == notification->getName();
+			|| TELEPORT_OFFER_SENT == notification->getName()
+			|| IM_SYSTEM_MESSAGE_TIP == notification->getName();
 }
 
 // static
@@ -157,7 +159,8 @@ bool LLHandlerUtil::canLogToNearbyChat(const LLNotificationPtr& notification)
 			&&  FRIEND_ONLINE != notification->getName()
 			&& FRIEND_OFFLINE != notification->getName()
 			&& INVENTORY_ACCEPTED != notification->getName()
-			&& INVENTORY_DECLINED != notification->getName();
+			&& INVENTORY_DECLINED != notification->getName()
+			&& IM_SYSTEM_MESSAGE_TIP != notification->getName();
 }
 
 // static
@@ -193,10 +196,36 @@ bool LLHandlerUtil::canSpawnSessionAndLogToIM(const LLNotificationPtr& notificat
 // static
 bool LLHandlerUtil::canSpawnToast(const LLNotificationPtr& notification)
 {
-	bool cannot_spawn = isIMFloaterOpened(notification) && (INVENTORY_DECLINED == notification->getName()
-			|| INVENTORY_ACCEPTED == notification->getName());
-	
-	return !cannot_spawn;
+	if(INVENTORY_DECLINED == notification->getName() 
+		|| INVENTORY_ACCEPTED == notification->getName())
+	{
+		// return false for inventory accepted/declined notifications if respective IM window is open (EXT-5909)
+		return ! isIMFloaterOpened(notification);
+	}
+
+	if(FRIENDSHIP_ACCEPTED == notification->getName())
+	{
+		// don't show FRIENDSHIP_ACCEPTED if IM window is opened and focused - EXT-6441
+		return ! isIMFloaterFocused(notification);
+	}
+
+	if(OFFER_FRIENDSHIP == notification->getName()
+		|| USER_GIVE_ITEM == notification->getName()
+		|| TELEPORT_OFFERED == notification->getName())
+	{
+		// When ANY offer arrives, show toast, unless IM window is already open - EXT-5904
+		return ! isIMFloaterOpened(notification);
+	}
+
+	return true;
+}
+
+// static
+LLIMFloater* LLHandlerUtil::findIMFloater(const LLNotificationPtr& notification)
+{
+	LLUUID from_id = notification->getPayload()["from_id"];
+	LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, from_id);
+	return LLFloaterReg::findTypedInstance<LLIMFloater>("impanel", session_id);
 }
 
 // static
@@ -204,12 +233,7 @@ bool LLHandlerUtil::isIMFloaterOpened(const LLNotificationPtr& notification)
 {
 	bool res = false;
 
-	LLUUID from_id = notification->getPayload()["from_id"];
-	LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL,
-			from_id);
-
-	LLIMFloater* im_floater = LLFloaterReg::findTypedInstance<LLIMFloater>(
-					"impanel", session_id);
+	LLIMFloater* im_floater = findIMFloater(notification);
 	if (im_floater != NULL)
 	{
 		res = im_floater->getVisible() == TRUE;
@@ -218,6 +242,19 @@ bool LLHandlerUtil::isIMFloaterOpened(const LLNotificationPtr& notification)
 	return res;
 }
 
+bool LLHandlerUtil::isIMFloaterFocused(const LLNotificationPtr& notification)
+{
+	bool res = false;
+
+	LLIMFloater* im_floater = findIMFloater(notification);
+	if (im_floater != NULL)
+	{
+		res = im_floater->hasFocus() == TRUE;
+	}
+
+	return res;
+}
+
 // static
 void LLHandlerUtil::logToIM(const EInstantMessage& session_type,
 		const std::string& session_name, const std::string& from_name,
@@ -286,7 +323,7 @@ void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification, bool to_fi
 {
 	const std::string name = LLHandlerUtil::getSubstitutionName(notification);
 
-	std::string session_name = notification->getPayload().has(
+	const std::string& session_name = notification->getPayload().has(
 			"SESSION_NAME") ? notification->getPayload()["SESSION_NAME"].asString() : name;
 
 	// don't create IM p2p session with objects, it's necessary condition to log
@@ -295,12 +332,6 @@ void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification, bool to_fi
 	{
 		LLUUID from_id = notification->getPayload()["from_id"];
 
-		//*HACK for ServerObjectMessage the sesson name is really weird, see EXT-4779
-		if (SERVER_OBJECT_MESSAGE == notification->getName())
-		{
-			session_name = "chat";
-		}
-
 		//there still appears a log history file with weird name " .txt"
 		if (" " == session_name || "{waiting}" == session_name || "{nobody}" == session_name)
 		{
@@ -355,6 +386,7 @@ void LLHandlerUtil::logToNearbyChat(const LLNotificationPtr& notification, EChat
 		LLChat chat_msg(notification->getMessage());
 		chat_msg.mSourceType = type;
 		chat_msg.mFromName = SYSTEM_FROM;
+		chat_msg.mFromID = LLUUID::null;
 		nearby_chat->addMessage(chat_msg);
 	}
 }
diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp
index e93aec9d018ee93c93a45e11250cbc4d5ecb7ffc..c5960a904071d4c84522ac0ad3f11bda02920492 100644
--- a/indra/newview/llnotificationofferhandler.cpp
+++ b/indra/newview/llnotificationofferhandler.cpp
@@ -115,15 +115,11 @@ bool LLOfferHandler::processNotification(const LLSD& notify)
 				session_id = LLHandlerUtil::spawnIMSession(name, from_id);
 			}
 
-			bool show_toast = true;
+			bool show_toast = LLHandlerUtil::canSpawnToast(notification);
 			bool add_notid_to_im = LLHandlerUtil::canAddNotifPanelToIM(notification);
 			if (add_notid_to_im)
 			{
 				LLHandlerUtil::addNotifPanelToIM(notification);
-				if (LLHandlerUtil::isIMFloaterOpened(notification))
-				{
-					show_toast = false;
-				}
 			}
 
 			if (notification->getPayload().has("SUPPRESS_TOAST")
diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp
index 1f1afe293aa45d0d32c5c78db9f5288795764427..afc00bf7ef3176cb89f04da015e2d9d5c65a31f1 100644
--- a/indra/newview/llnotificationtiphandler.cpp
+++ b/indra/newview/llnotificationtiphandler.cpp
@@ -71,8 +71,8 @@ class LLOnlineStatusToast : public LLToastPanel
 				p.notification->getResponseTemplate()));
 		}
 
-		// set line max count to 2 in case of a very long name
-		snapToMessageHeight(getChild<LLTextBox>("message"), 2);
+		// set line max count to 3 in case of a very long name
+		snapToMessageHeight(getChild<LLTextBox>("message"), 3);
 	}
 };
 
diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp
index a186bc926c878eb39ad0c8bac41b9c52cc19fe54..c72f0f8012cfef7cdca1371619490089eb335a0b 100644
--- a/indra/newview/llpanelblockedlist.cpp
+++ b/indra/newview/llpanelblockedlist.cpp
@@ -186,7 +186,7 @@ void LLPanelBlockedList::onBlockByNameClick()
 	LLFloaterGetBlockedObjectName::show(&LLPanelBlockedList::callbackBlockByName);
 }
 
-void LLPanelBlockedList::callbackBlockPicked(const std::vector<std::string>& names, const std::vector<LLUUID>& ids)
+void LLPanelBlockedList::callbackBlockPicked(const std::vector<std::string>& names, const uuid_vec_t& ids)
 {
 	if (names.empty() || ids.empty()) return;
 	LLMute mute(ids[0], names[0], LLMute::AGENT);
diff --git a/indra/newview/llpanelblockedlist.h b/indra/newview/llpanelblockedlist.h
index 1ef16a02f423ee7ecf312b38d48c91b72516ce05..a100577e438b925e8c37985f92d46bf8b6bd84ba 100644
--- a/indra/newview/llpanelblockedlist.h
+++ b/indra/newview/llpanelblockedlist.h
@@ -78,7 +78,7 @@ class LLPanelBlockedList
 	void onPickBtnClick();
 	void onBlockByNameClick();
 
-	void callbackBlockPicked(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
+	void callbackBlockPicked(const std::vector<std::string>& names, const uuid_vec_t& ids);
 	static void callbackBlockByName(const std::string& text);
 
 private:
diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp
index 2a7d097f9429328b0f2bb77f024bfaf763a27d88..f4c0a842e7968eeff8313ead2e4d42e911ac8412 100644
--- a/indra/newview/llpanelcontents.cpp
+++ b/indra/newview/llpanelcontents.cpp
@@ -40,6 +40,7 @@
 #include "llerror.h"
 #include "llfloaterreg.h"
 #include "llfontgl.h"
+#include "llinventorydefines.h"
 #include "llmaterialtable.h"
 #include "llpermissionsflags.h"
 #include "llrect.h"
@@ -180,7 +181,7 @@ void LLPanelContents::onClickNewScript(void *userdata)
 				LLTrans::getString("PanelContentsNewScript"),
 				desc,
 				LLSaleInfo::DEFAULT,
-				LLViewerInventoryItem::II_FLAGS_NONE,
+				LLInventoryItemFlags::II_FLAGS_NONE,
 				time_corrected());
 		object->saveScript(new_item, TRUE, true);
 
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index e7acc68b93fe12032e0cfcd06dcb4fe5fbb0ca04..da74295f9e6371770e3f152d47b2a7af38d95fee 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -270,6 +270,8 @@ LLEditWearableDictionary::SubpartEntry::SubpartEntry(ESubpart part,
 
 LLPanelEditWearable::LLPanelEditWearable()
 	: LLPanel()
+	, mWearablePtr(NULL)
+	, mWearableItem(NULL)
 {
 }
 
@@ -338,8 +340,7 @@ BOOL LLPanelEditWearable::isDirty() const
 //virtual
 void LLPanelEditWearable::draw()
 {
-	BOOL is_dirty = isDirty();
-	mBtnRevert->setEnabled(is_dirty);
+	updateVerbs();
 
 	LLPanel::draw();
 }
@@ -401,6 +402,9 @@ void LLPanelEditWearable::showWearable(LLWearable* wearable, BOOL show)
 		return;
 	}
 
+	mWearableItem = gInventory.getItem(mWearablePtr->getItemID());
+	llassert(mWearableItem);
+
 	EWearableType type = wearable->getType();
 	LLPanel *targetPanel = NULL;
 	std::string title;
@@ -489,7 +493,7 @@ void LLPanelEditWearable::initializePanel()
 
 		updateScrollingPanelUI();
 	}
-	
+	updateVerbs();
 }
 
 void LLPanelEditWearable::updateScrollingPanelUI()
@@ -602,7 +606,7 @@ LLPanel* LLPanelEditWearable::getPanel(EWearableType type)
 void LLPanelEditWearable::getSortedParams(value_map_t &sorted_params, const std::string &edit_group)
 {
 	LLWearable::visual_param_vec_t param_list;
-	ESex avatar_sex = gAgent.getAvatarObject()->getSex();
+	ESex avatar_sex = gAgentAvatarp->getSex();
 
 	mWearablePtr->getVisualParams(param_list);
 
@@ -640,18 +644,25 @@ void LLPanelEditWearable::buildParamList(LLScrollingPanelList *panel_list, value
 		{
 			LLPanel::Params p;
 			p.name("LLScrollingPanelParam");
-			p.rect(LLRect(0, LLScrollingPanelParam::PARAM_PANEL_HEIGHT, LLScrollingPanelParam::PARAM_PANEL_WIDTH, 0 ));
 			LLScrollingPanelParam* panel_param = new LLScrollingPanelParam( p, NULL, (*it).second, TRUE, this->getWearable());
 			height = panel_list->addPanel( panel_param );
 		}
-	
-		S32 width = tab->getRect().getWidth();
-	
-		tab->reshape(width,height + tab->getHeaderHeight()+10,FALSE);
 	}
 }
 
+void LLPanelEditWearable::updateVerbs()
+{
+	bool can_copy = false;
 
+	if(mWearableItem)
+	{
+		can_copy = mWearableItem->getPermissions().allowCopyBy(gAgentID);
+	}
 
+	BOOL is_dirty = isDirty();
 
+	mBtnRevert->setEnabled(is_dirty);
+	childSetEnabled("save_as_button", is_dirty && can_copy);
+}
 
+// EOF
diff --git a/indra/newview/llpaneleditwearable.h b/indra/newview/llpaneleditwearable.h
index 417865961767534783b3d6b0a73fd7972f364623..8b63685177bd8e2d050b5154fb4b2477b220b259 100644
--- a/indra/newview/llpaneleditwearable.h
+++ b/indra/newview/llpaneleditwearable.h
@@ -41,6 +41,7 @@
 class LLWearable;
 class LLTextEditor;
 class LLTextBox;
+class LLViewerInventoryItem;
 class LLViewerVisualParam;
 class LLVisualParamHint;
 class LLViewerJointMesh;
@@ -73,9 +74,12 @@ class LLPanelEditWearable : public LLPanel
 	LLPanel*			getPanel(EWearableType type);
 	void				getSortedParams(value_map_t &sorted_params, const std::string &edit_group);
 	void				buildParamList(LLScrollingPanelList *panel_list, value_map_t &sorted_params, LLAccordionCtrlTab *tab);
+	// update bottom bar buttons ("Save", "Revert", etc)
+	void				updateVerbs();
 
 	// the pointer to the wearable we're editing. NULL means we're not editing a wearable.
 	LLWearable *mWearablePtr;
+	LLViewerInventoryItem* mWearableItem;
 
 	// these are constant no matter what wearable we're editing
 	LLButton *mBtnRevert;
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 706787e824b5df9c40105e4c676bbaec2b996046..c00b6a41473e187e2b3368645cab0ef1263a72bd 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -59,6 +59,8 @@
 #include "llaccordionctrltab.h"
 #include "llaccordionctrl.h"
 
+#include "lltrans.h"
+
 static LLRegisterPanelClassWrapper<LLPanelGroup> t_panel_group("panel_group_info_sidetray");
 
 
@@ -333,8 +335,9 @@ void LLPanelGroup::update(LLGroupChange gc)
 	LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mID);
 	if(gdatap)
 	{
-		childSetValue("group_name", gdatap->mName);
-		childSetToolTip("group_name",gdatap->mName);
+		std::string group_name =  gdatap->mName.empty() ? LLTrans::getString("LoadingData") : gdatap->mName;
+		childSetValue("group_name", group_name);
+		childSetToolTip("group_name",group_name);
 		
 		LLGroupData agent_gdatap;
 		bool is_member = gAgent.getGroupData(mID,agent_gdatap) || gAgent.isGodlike();
@@ -379,8 +382,9 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
 	LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mID);
 	if(gdatap)
 	{
-		childSetValue("group_name", gdatap->mName);
-		childSetToolTip("group_name",gdatap->mName);
+		std::string group_name =  gdatap->mName.empty() ? LLTrans::getString("LoadingData") : gdatap->mName;
+		childSetValue("group_name", group_name);
+		childSetToolTip("group_name",group_name);
 	}
 
 	LLButton* button_apply = findChild<LLButton>("btn_apply");
diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp
index 517204b232a251b4da923007547c941b50839d6f..0a83ba8212f1979b0ac8d81f0323919a34518056 100644
--- a/indra/newview/llpanelgroupgeneral.cpp
+++ b/indra/newview/llpanelgroupgeneral.cpp
@@ -820,15 +820,15 @@ void LLPanelGroupGeneral::reset()
 	
 	mCtrlListGroup->set(true);
 	
-	mCtrlReceiveNotices->setEnabled(true);
+	mCtrlReceiveNotices->setEnabled(false);
 	mCtrlReceiveNotices->setVisible(true);
 
-	mCtrlListGroup->setEnabled(true);
+	mCtrlListGroup->setEnabled(false);
 
 	mGroupNameEditor->setEnabled(TRUE);
 	mEditCharter->setEnabled(TRUE);
 
-	mCtrlShowInGroupList->setEnabled(TRUE);
+	mCtrlShowInGroupList->setEnabled(false);
 	mComboMature->setEnabled(TRUE);
 	
 	mCtrlOpenEnrollment->setEnabled(TRUE);
@@ -934,6 +934,8 @@ void LLPanelGroupGeneral::setGroupID(const LLUUID& id)
 		mCtrlListGroup->setEnabled(data.mID.notNull());
 	}
 
+	mCtrlShowInGroupList->setEnabled(data.mID.notNull());
+
 	mActiveTitleLabel = getChild<LLTextBox>("active_title_label");
 	
 	mComboActiveTitle = getChild<LLComboBox>("active_title");
diff --git a/indra/newview/llpanelgroupinvite.cpp b/indra/newview/llpanelgroupinvite.cpp
index 05261a65dec7f75e9b50227327f66b5eb9cc44fe..11d3768a3dd56f21dcea83fd180da3260ff946e1 100644
--- a/indra/newview/llpanelgroupinvite.cpp
+++ b/indra/newview/llpanelgroupinvite.cpp
@@ -57,7 +57,7 @@ class LLPanelGroupInvite::impl
 	~impl();
 
 	void addUsers(const std::vector<std::string>& names,
-				  const std::vector<LLUUID>& agent_ids);
+				  const uuid_vec_t& agent_ids);
 	void submitInvitations();
 	void addRoleNames(LLGroupMgrGroupData* gdatap);
 	void handleRemove();
@@ -69,7 +69,7 @@ class LLPanelGroupInvite::impl
 	static void callbackClickRemove(void* userdata);
 	static void callbackSelect(LLUICtrl* ctrl, void* userdata);
 	static void callbackAddUsers(const std::vector<std::string>& names,
-								 const std::vector<LLUUID>& agent_ids,
+								 const uuid_vec_t& agent_ids,
 								 void* user_data);
 	bool inviteOwnerCallback(const LLSD& notification, const LLSD& response);
 
@@ -111,7 +111,7 @@ LLPanelGroupInvite::impl::~impl()
 }
 
 void LLPanelGroupInvite::impl::addUsers(const std::vector<std::string>& names,
-										const std::vector<LLUUID>& agent_ids)
+										const uuid_vec_t& agent_ids)
 {
 	std::string name;
 	LLUUID id;
@@ -361,7 +361,7 @@ void LLPanelGroupInvite::impl::callbackClickOK(void* userdata)
 
 //static
 void LLPanelGroupInvite::impl::callbackAddUsers(const std::vector<std::string>& names,
-												const std::vector<LLUUID>& ids,
+												const uuid_vec_t& ids,
 												void* user_data)
 {
 	impl* selfp = (impl*) user_data;
@@ -399,7 +399,7 @@ void LLPanelGroupInvite::clear()
 	mImplementation->mOKButton->setEnabled(FALSE);
 }
 
-void LLPanelGroupInvite::addUsers(std::vector<LLUUID>& agent_ids)
+void LLPanelGroupInvite::addUsers(uuid_vec_t& agent_ids)
 {
 	std::vector<std::string> names;
 	for (S32 i = 0; i < (S32)agent_ids.size(); i++)
@@ -456,7 +456,7 @@ void LLPanelGroupInvite::addUsers(std::vector<LLUUID>& agent_ids)
 void LLPanelGroupInvite::addUserCallback(const LLUUID& id, const std::string& first_name, const std::string& last_name)
 {
 	std::vector<std::string> names;
-	std::vector<LLUUID> agent_ids;
+	uuid_vec_t agent_ids;
 	std::string full_name = first_name + " " + last_name;
 	agent_ids.push_back(id);
 	names.push_back(first_name + " " + last_name);
diff --git a/indra/newview/llpanelgroupinvite.h b/indra/newview/llpanelgroupinvite.h
index b095dd23950cba235f7d184de598aed95b39bd6a..2ed443ed46987b31e91a2706dfeabae567cc7503 100644
--- a/indra/newview/llpanelgroupinvite.h
+++ b/indra/newview/llpanelgroupinvite.h
@@ -42,7 +42,7 @@ class LLPanelGroupInvite
 	LLPanelGroupInvite(const LLUUID& group_id);
 	~LLPanelGroupInvite();
 	
-	void addUsers(std::vector<LLUUID>& agent_ids);
+	void addUsers(uuid_vec_t& agent_ids);
 	/**
 	 * this callback is being used to add a user whose fullname isn't been loaded before invoking of addUsers().
 	 */  
diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp
index 9023afc602509ebfc8900b950205f333821d2dab..9ac3a0704175819642b95ad49d3b730333386c19 100644
--- a/indra/newview/llpanelgrouplandmoney.cpp
+++ b/indra/newview/llpanelgrouplandmoney.cpp
@@ -1600,6 +1600,8 @@ void LLPanelGroupLandMoney::setGroupID(const LLUUID& id)
 		mImplementationp->mMoneySalesTabEHp->setGroupID(mGroupID);
 	}
 
+	mImplementationp->mBeenActivated = false;
+
 	activate();
 }
 
diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp
index 5f913d5469fc9ab53e88c412195f0d1d1e52d12a..8da19d15743d429ab766a0b338237fb08901a49e 100644
--- a/indra/newview/llpanelgroupnotices.cpp
+++ b/indra/newview/llpanelgroupnotices.cpp
@@ -38,6 +38,7 @@
 
 #include "llinventory.h"
 #include "llviewerinventory.h"
+#include "llinventorydefines.h"
 #include "llinventoryfunctions.h"
 #include "llinventorymodel.h"
 #include "llfloaterinventory.h"
@@ -329,7 +330,7 @@ void LLPanelGroupNotices::setItem(LLPointer<LLInventoryItem> inv_item)
 	mInventoryItem = inv_item;
 
 	BOOL item_is_multi = FALSE;
-	if ( inv_item->getFlags() & LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS )
+	if ( inv_item->getFlags() & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS )
 	{
 		item_is_multi = TRUE;
 	};
diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp
index c6287472fed9d80a56235d276695c250207c657e..0c24e6ad22646d6f5c5cbfe6c6d4eaddc72cc61d 100644
--- a/indra/newview/llpanelgrouproles.cpp
+++ b/indra/newview/llpanelgrouproles.cpp
@@ -859,7 +859,7 @@ void LLPanelGroupMembersSubTab::handleMemberSelect()
 	if (selection.empty()) return;
 
 	// Build a vector of all selected members, and gather allowed actions.
-	std::vector<LLUUID> selected_members;
+	uuid_vec_t selected_members;
 	U64 allowed_by_all = 0xffffffffffffLL;
 	U64 allowed_by_some = 0;
 
@@ -925,8 +925,8 @@ void LLPanelGroupMembersSubTab::handleMemberSelect()
 			if (cb_enable && (count > 0) && role_id == gdatap->mOwnerRole)
 			{
 				// Check if any owners besides this agent are selected.
-				std::vector<LLUUID>::const_iterator member_iter;
-				std::vector<LLUUID>::const_iterator member_end =
+				uuid_vec_t::const_iterator member_iter;
+				uuid_vec_t::const_iterator member_end =
 												selected_members.end();
 				for (member_iter = selected_members.begin();
 					 member_iter != member_end;	
@@ -952,7 +952,7 @@ void LLPanelGroupMembersSubTab::handleMemberSelect()
 
 			//now see if there are any role changes for the selected
 			//members and remember to include them
-			std::vector<LLUUID>::iterator sel_mem_iter = selected_members.begin();
+			uuid_vec_t::iterator sel_mem_iter = selected_members.begin();
 			for (; sel_mem_iter != selected_members.end(); sel_mem_iter++)
 			{
 				LLRoleMemberChangeType type;
@@ -1009,7 +1009,7 @@ void LLPanelGroupMembersSubTab::handleMemberSelect()
 				check->setTentative(
 					(0 != count)
 					&& (selected_members.size() !=
-						(std::vector<LLUUID>::size_type)count));
+						(uuid_vec_t::size_type)count));
 
 				//NOTE: as of right now a user can break the group
 				//by removing himself from a role if he is the
@@ -1084,7 +1084,7 @@ void LLPanelGroupMembersSubTab::onEjectMembers(void *userdata)
 void LLPanelGroupMembersSubTab::handleEjectMembers()
 {
 	//send down an eject message
-	std::vector<LLUUID> selected_members;
+	uuid_vec_t selected_members;
 
 	std::vector<LLScrollListItem*> selection = mMembersList->getAllSelected();
 	if (selection.empty()) return;
@@ -1105,13 +1105,13 @@ void LLPanelGroupMembersSubTab::handleEjectMembers()
 									 selected_members);
 }
 
-void LLPanelGroupMembersSubTab::sendEjectNotifications(const LLUUID& group_id, const std::vector<LLUUID>& selected_members)
+void LLPanelGroupMembersSubTab::sendEjectNotifications(const LLUUID& group_id, const uuid_vec_t& selected_members)
 {
 	LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(group_id);
 
 	if (group_data)
 	{
-		for (std::vector<LLUUID>::const_iterator i = selected_members.begin(); i != selected_members.end(); ++i)
+		for (uuid_vec_t::const_iterator i = selected_members.begin(); i != selected_members.end(); ++i)
 		{
 			LLSD args;
 			std::string name;
@@ -1437,7 +1437,7 @@ U64 LLPanelGroupMembersSubTab::getAgentPowersBasedOnRoleChanges(const LLUUID& ag
 
 	if ( role_change_datap )
 	{
-		std::vector<LLUUID> roles_to_be_removed;
+		uuid_vec_t roles_to_be_removed;
 
 		for (role_change_data_map_t::iterator role = role_change_datap->begin();
 			 role != role_change_datap->end(); ++ role)
@@ -2086,8 +2086,8 @@ void LLPanelGroupRolesSubTab::buildMembersList()
 			LLGroupRoleData* rdatap = (*rit).second;
 			if (rdatap)
 			{
-				std::vector<LLUUID>::const_iterator mit = rdatap->getMembersBegin();
-				std::vector<LLUUID>::const_iterator end = rdatap->getMembersEnd();
+				uuid_vec_t::const_iterator mit = rdatap->getMembersBegin();
+				uuid_vec_t::const_iterator end = rdatap->getMembersEnd();
 				for ( ; mit != end; ++mit)
 				{
 					mAssignedMembersList->addNameItem((*mit));
diff --git a/indra/newview/llpanelgrouproles.h b/indra/newview/llpanelgrouproles.h
index eac22a63383b85d643ca94e2456ca778925dd40f..98cebe9882bd801d539ec2f6668eb8da27a55df4 100644
--- a/indra/newview/llpanelgrouproles.h
+++ b/indra/newview/llpanelgrouproles.h
@@ -173,7 +173,7 @@ class LLPanelGroupMembersSubTab : public LLPanelGroupSubTab
 
 	static void onEjectMembers(void*);
 	void handleEjectMembers();
-	void sendEjectNotifications(const LLUUID& group_id, const std::vector<LLUUID>& selected_members);
+	void sendEjectNotifications(const LLUUID& group_id, const uuid_vec_t& selected_members);
 
 	static void onRoleCheck(LLUICtrl* check, void* user_data);
 	void handleRoleCheck(const LLUUID& role_id,
diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp
index 143a64d08b1f1b4d678a7c5e0f66f625a02cc17c..4ffd43cb0febe3b2cb59feee775ff370b3a71c85 100644
--- a/indra/newview/llpanellandmarkinfo.cpp
+++ b/indra/newview/llpanellandmarkinfo.cpp
@@ -36,6 +36,7 @@
 
 #include "llcombobox.h"
 #include "lliconctrl.h"
+#include "llinventoryfunctions.h"
 #include "lllineeditor.h"
 #include "lltextbox.h"
 #include "lltexteditor.h"
@@ -396,17 +397,20 @@ std::string LLPanelLandmarkInfo::getFullFolderName(const LLViewerInventoryCatego
 				if (is_under_root_category || cat->getParentUUID() == gInventory.getRootFolderID())
 				{
 					std::string localized_name;
+
+					// Looking for translation only for protected type categories
+					// to avoid warnings about non existent string in strings.xml.
+					bool is_protected_type = LLFolderType::lookupIsProtectedType(cat->getPreferredType());
+
 					if (is_under_root_category)
 					{
 						// translate category name, if it's right below the root
-						// FIXME: it can throw notification about non existent string in strings.xml
-						bool is_found = LLTrans::findString(localized_name, "InvFolder " + name);
+						bool is_found = is_protected_type && LLTrans::findString(localized_name, "InvFolder " + name);
 						name = is_found ? localized_name : name;
 					}
 					else
 					{
-						// FIXME: it can throw notification about non existent string in strings.xml
-						bool is_found = LLTrans::findString(localized_name, "InvFolder " + cat->getName());
+						bool is_found = is_protected_type && LLTrans::findString(localized_name, "InvFolder " + cat->getName());
 
 						// add translated category name to folder's full name
 						name = (is_found ? localized_name : cat->getName()) + "/" + name;
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index e3b8581acaa154b9b5ce152e46bba3828cc0dbf0..8d8c996374e91259672f346d6ee0d12e2dfa5186 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -49,6 +49,7 @@
 #include "lldndbutton.h"
 #include "llfloaterworldmap.h"
 #include "llfolderviewitem.h"
+#include "llinventorymodelbackgroundfetch.h"
 #include "llinventorypanel.h"
 #include "lllandmarkactions.h"
 #include "llplacesinventorybridge.h"
@@ -434,9 +435,9 @@ LLFolderViewItem* LLLandmarksPanel::selectItemInAccordionTab(LLPlacesInventoryPa
 	if (!inventory_list)
 		return NULL;
 
-	LLFolderView* folder_view = inventory_list->getRootFolder();
+	LLFolderView* root = inventory_list->getRootFolder();
 
-	LLFolderViewItem* item = folder_view->getItemByID(obj_id);
+	LLFolderViewItem* item = root->getItemByID(obj_id);
 	if (!item)
 		return NULL;
 
@@ -446,7 +447,7 @@ LLFolderViewItem* LLLandmarksPanel::selectItemInAccordionTab(LLPlacesInventoryPa
 		tab->changeOpenClose(false);
 	}
 
-	folder_view->setSelection(item, FALSE, take_keyboard_focus);
+	root->setSelection(item, FALSE, take_keyboard_focus);
 
 	LLAccordionCtrl* accordion = getChild<LLAccordionCtrl>("landmarks_accordion");
 	LLRect screen_rc;
@@ -556,7 +557,7 @@ void LLLandmarksPanel::initLibraryInventoryPanel()
 	const LLUUID &landmarks_cat = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK, false, true);
 	if (landmarks_cat.notNull())
 	{
-		gInventory.startBackgroundFetch(landmarks_cat);
+		LLInventoryModelBackgroundFetch::instance().start(landmarks_cat);
 	}
 
 	// Expanding "Library" tab for new users who have no landmarks in "My Inventory".
@@ -620,7 +621,7 @@ void LLLandmarksPanel::onAccordionExpandedCollapsed(const LLSD& param, LLPlacesI
 		  if (!gInventory.isCategoryComplete(cat_id))
 		*/
 		{
-			gInventory.startBackgroundFetch(cat_id);
+			LLInventoryModelBackgroundFetch::instance().start(cat_id);
 		}
 
 		// Apply filter substring because it might have been changed
@@ -923,12 +924,7 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const
 			return false;
 		}
 	}
-	else if (!root_folder_view && "category" != command_name)
-	{
-		return false;
-	}
 	else if (  "paste"		== command_name
-			|| "rename"		== command_name
 			|| "cut"		== command_name
 			|| "copy"		== command_name
 			|| "delete"		== command_name
@@ -940,17 +936,16 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const
 	}
 	else if (  "teleport"		== command_name
 			|| "more_info"		== command_name
-			|| "rename"			== command_name
 			|| "show_on_map"	== command_name
 			|| "copy_slurl"		== command_name
 			)
 	{
 		// disable some commands for multi-selection. EXT-1757
-		if (root_folder_view &&
-		    root_folder_view->getSelectedCount() > 1)
-		{
-			return false;
-		}
+		return root_folder_view && root_folder_view->getSelectedCount() == 1;
+	}
+	else if ("rename" == command_name)
+	{
+		return root_folder_view && root_folder_view->getSelectedCount() == 1 && canSelectedBeModified(command_name);
 	}
 	else if("category" == command_name)
 	{
@@ -988,7 +983,7 @@ void LLLandmarksPanel::onCustomAction(const LLSD& userdata)
 	std::string command_name = userdata.asString();
 	if("more_info" == command_name)
 	{
-		cur_item->getListener()->performAction(mCurrentSelectedList->getRootFolder(),mCurrentSelectedList->getModel(),"about");
+		cur_item->getListener()->performAction(mCurrentSelectedList->getModel(),"about");
 	}
 	else if ("teleport" == command_name)
 	{
@@ -1079,7 +1074,7 @@ bool LLLandmarksPanel::canSelectedBeModified(const std::string& command_name) co
 		}
 		else if ("delete" == command_name)
 		{
-			can_be_modified = listenerp ? listenerp->isItemRemovable() : false;
+			can_be_modified = listenerp ? listenerp->isItemRemovable() && !listenerp->isItemInTrash() : false;
 		}
 		else if("paste" == command_name)
 		{
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index 7bd03167fd5ddd12794705ec77543f880ddfe960..ee4dcc44fe14bf447fa8458acb59173e05a5a3f3 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -679,6 +679,9 @@ void LLPanelLogin::refreshLocation( bool force_visible )
 		show_start = gSavedSettings.getBOOL("ShowStartLocation");
 	}
 
+	// Update the value of the location combo.
+	updateLocationUI();
+	
 	sInstance->childSetVisible("start_location_combo", show_start);
 	sInstance->childSetVisible("start_location_text", show_start);
 
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index d40141c91d3a6de090085d7a66fa419a62667eca..8be4c8402c632b3f9e9f8c618aa0a060117751c0 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -40,6 +40,7 @@
 #include "llfloaterinventory.h"
 #include "llinventorybridge.h"
 #include "llinventoryfunctions.h"
+#include "llinventorymodelbackgroundfetch.h"
 #include "llinventorypanel.h"
 #include "llfiltereditor.h"
 #include "llfloaterreg.h"
@@ -419,7 +420,7 @@ void LLPanelMainInventory::onFilterEdit(const std::string& search_string )
 		return;
 	}
 
-	gInventory.startBackgroundFetch();
+	LLInventoryModelBackgroundFetch::instance().start();
 
 	mFilterSubString = search_string;
 	if (mActivePanel->getFilterSubString().empty() && mFilterSubString.empty())
@@ -499,7 +500,7 @@ void LLPanelMainInventory::onFilterSelected()
 	if (filter->isActive())
 	{
 		// If our filter is active we may be the first thing requiring a fetch so we better start it here.
-		gInventory.startBackgroundFetch();
+		LLInventoryModelBackgroundFetch::instance().start();
 	}
 	setFilterTextFromFilter();
 }
@@ -566,11 +567,11 @@ void LLPanelMainInventory::updateItemcountText()
 
 	std::string text = "";
 
-	if (LLInventoryModel::backgroundFetchActive())
+	if (LLInventoryModelBackgroundFetch::instance().backgroundFetchActive())
 	{
 		text = getString("ItemcountFetching", string_args);
 	}
-	else if (LLInventoryModel::isEverythingFetched())
+	else if (LLInventoryModelBackgroundFetch::instance().isEverythingFetched())
 	{
 		text = getString("ItemcountCompleted", string_args);
 	}
@@ -600,7 +601,7 @@ void LLPanelMainInventory::toggleFindOptions()
 		if (parent_floater) // Seraph: Fix this, shouldn't be null even for sidepanel
 			parent_floater->addDependentFloater(mFinderHandle);
 		// start background fetch of folders
-		gInventory.startBackgroundFetch();
+		LLInventoryModelBackgroundFetch::instance().start();
 	}
 	else
 	{
@@ -1043,7 +1044,7 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
 		{
 			return;
 		}
-		current_item->getListener()->performAction(getActivePanel()->getRootFolder(), getActivePanel()->getModel(), "goto");
+		current_item->getListener()->performAction(getActivePanel()->getModel(), "goto");
 	}
 
 	if (command_name == "find_links")
@@ -1088,19 +1089,19 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)
 	if (command_name == "delete")
 	{
 		BOOL can_delete = FALSE;
-		LLFolderView *folder = getActivePanel()->getRootFolder();
-		if (folder)
+		LLFolderView* root = getActivePanel()->getRootFolder();
+		if (root)
 		{
 			can_delete = TRUE;
 			std::set<LLUUID> selection_set;
-			folder->getSelectionList(selection_set);
+			root->getSelectionList(selection_set);
 			if (selection_set.empty()) return FALSE;
 			for (std::set<LLUUID>::iterator iter = selection_set.begin();
 				 iter != selection_set.end();
 				 ++iter)
 			{
 				const LLUUID &item_id = (*iter);
-				LLFolderViewItem *item = folder->getItemByID(item_id);
+				LLFolderViewItem *item = root->getItemByID(item_id);
 				const LLFolderViewEventListener *listener = item->getListener();
 				llassert(listener);
 				if (!listener) return FALSE;
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index c43cbf5819ae4574c1bd3b0e7586c4b9805d5de0..df74c5dd470b574d1212140bcdff12a3a3d6e40c 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -50,6 +50,7 @@
 #include "llfloaterbuycurrency.h"
 #include "llfloaterreg.h"
 #include "llinventorybridge.h"
+#include "llinventorydefines.h"
 #include "llinventoryfilter.h"
 #include "llinventoryfunctions.h"
 #include "llpreviewanim.h"
@@ -128,7 +129,7 @@ class LLTaskInvFVBridge : public LLFolderViewEventListener
 	virtual void pasteFromClipboard();
 	virtual void pasteLinkFromClipboard();
 	virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
-	virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+	virtual void performAction(LLInventoryModel* model, std::string action);
 	virtual BOOL isUpToDate() const { return TRUE; }
 	virtual BOOL hasChildren() const { return FALSE; }
 	virtual LLInventoryType::EType getInventoryType() const { return LLInventoryType::IT_NONE; }
@@ -344,7 +345,7 @@ time_t LLTaskInvFVBridge::getCreationDate() const
 LLUIImagePtr LLTaskInvFVBridge::getIcon() const
 {
 	BOOL item_is_multi = FALSE;
-	if ( mFlags & LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS )
+	if ( mFlags & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS )
 	{
 		item_is_multi = TRUE;
 	}
@@ -595,7 +596,7 @@ BOOL LLTaskInvFVBridge::dragOrDrop(MASK mask, BOOL drop,
 }
 
 // virtual
-void LLTaskInvFVBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLTaskInvFVBridge::performAction(LLInventoryModel* model, std::string action)
 {
 	if (action == "task_buy")
 	{
@@ -917,7 +918,7 @@ class LLTaskSoundBridge : public LLTaskInvFVBridge
 
 	virtual LLUIImagePtr getIcon() const;
 	virtual void openItem();
-	virtual void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+	virtual void performAction(LLInventoryModel* model, std::string action);
 	virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
 	static void openSoundPreview(void* data);
 };
@@ -954,7 +955,7 @@ void LLTaskSoundBridge::openSoundPreview(void* data)
 }
 
 // virtual
-void LLTaskSoundBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLTaskSoundBridge::performAction(LLInventoryModel* model, std::string action)
 {
 	if (action == "task_play")
 	{
@@ -964,7 +965,7 @@ void LLTaskSoundBridge::performAction(LLFolderView* folder, LLInventoryModel* mo
 			send_sound_trigger(item->getAssetUUID(), 1.0);
 		}
 	}
-	LLTaskInvFVBridge::performAction(folder, model, action);
+	LLTaskInvFVBridge::performAction(model, action);
 }
 
 void LLTaskSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
@@ -1208,7 +1209,7 @@ LLTaskObjectBridge::LLTaskObjectBridge(
 LLUIImagePtr LLTaskObjectBridge::getIcon() const
 {
 	BOOL item_is_multi = FALSE;
-	if ( mFlags & LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS )
+	if ( mFlags & LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS )
 	{
 		item_is_multi = TRUE;
 	}
@@ -1615,7 +1616,7 @@ void LLPanelObjectInventory::reset()
 }
 
 void LLPanelObjectInventory::inventoryChanged(LLViewerObject* object,
-										InventoryObjectList* inventory,
+										LLInventoryObject::object_list_t* inventory,
 										S32 serial_num,
 										void* data)
 {
@@ -1632,7 +1633,7 @@ void LLPanelObjectInventory::inventoryChanged(LLViewerObject* object,
 	// refresh any properties floaters that are hanging around.
 	if(inventory)
 	{
-		for (InventoryObjectList::const_iterator iter = inventory->begin();
+		for (LLInventoryObject::object_list_t::const_iterator iter = inventory->begin();
 			 iter != inventory->end(); )
 		{
 			LLInventoryObject* item = *iter++;
@@ -1665,7 +1666,7 @@ void LLPanelObjectInventory::updateInventory()
 	if (objectp)
 	{
 		LLInventoryObject* inventory_root = objectp->getInventoryRoot();
-		InventoryObjectList contents;
+		LLInventoryObject::object_list_t contents;
 		objectp->getInventoryContents(contents);
 		if (inventory_root)
 		{
@@ -1719,7 +1720,7 @@ void LLPanelObjectInventory::updateInventory()
 // leads to an N^2 based on the category count. This could be greatly
 // speeded with an efficient multimap implementation, but we don't
 // have that in our current arsenal.
-void LLPanelObjectInventory::createFolderViews(LLInventoryObject* inventory_root, InventoryObjectList& contents)
+void LLPanelObjectInventory::createFolderViews(LLInventoryObject* inventory_root, LLInventoryObject::object_list_t& contents)
 {
 	if (!inventory_root)
 	{
@@ -1748,7 +1749,7 @@ void LLPanelObjectInventory::createFolderViews(LLInventoryObject* inventory_root
 
 typedef std::pair<LLInventoryObject*, LLFolderViewFolder*> obj_folder_pair;
 
-void LLPanelObjectInventory::createViewsForCategory(InventoryObjectList* inventory, 
+void LLPanelObjectInventory::createViewsForCategory(LLInventoryObject::object_list_t* inventory, 
 											  LLInventoryObject* parent,
 											  LLFolderViewFolder* folder)
 {
@@ -1757,8 +1758,8 @@ void LLPanelObjectInventory::createViewsForCategory(InventoryObjectList* invento
 	LLTaskInvFVBridge* bridge;
 	LLFolderViewItem* view;
 
-	InventoryObjectList::iterator it = inventory->begin();
-	InventoryObjectList::iterator end = inventory->end();
+	LLInventoryObject::object_list_t::iterator it = inventory->begin();
+	LLInventoryObject::object_list_t::iterator end = inventory->end();
 	for( ; it != end; ++it)
 	{
 		LLInventoryObject* obj = *it;
diff --git a/indra/newview/llpanelobjectinventory.h b/indra/newview/llpanelobjectinventory.h
index bc339ece3593424d907d21d456ad29ce0896bea6..d015929841ac2baf9fa047457e50930e1b9f7fcd 100644
--- a/indra/newview/llpanelobjectinventory.h
+++ b/indra/newview/llpanelobjectinventory.h
@@ -82,12 +82,12 @@ class LLPanelObjectInventory : public LLPanel, public LLVOInventoryListener
 protected:
 	void reset();
 	/*virtual*/ void inventoryChanged(LLViewerObject* object,
-								 InventoryObjectList* inventory,
+								 LLInventoryObject::object_list_t* inventory,
 								 S32 serial_num,
 								 void* user_data);
 	void updateInventory();
-	void createFolderViews(LLInventoryObject* inventory_root, InventoryObjectList& contents);
-	void createViewsForCategory(InventoryObjectList* inventory,
+	void createFolderViews(LLInventoryObject* inventory_root, LLInventoryObject::object_list_t& contents);
+	void createViewsForCategory(LLInventoryObject::object_list_t* inventory,
 								LLInventoryObject* parent,
 								LLFolderViewFolder* folder);
 	void clearContents();
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..cf04ab378fadacb97fc85a7b8d1979e6214311ab
--- /dev/null
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -0,0 +1,528 @@
+/**
+ * @file llpaneloutfitedit.cpp
+ * @brief Displays outfit edit information in Side Tray.
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * 
+ * Copyright (c) 2004-2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llpaneloutfitedit.h"
+
+// *TODO: reorder includes to match the coding standard
+#include "llagent.h"
+#include "llagentwearables.h"
+#include "llappearancemgr.h"
+#include "llinventory.h"
+#include "llviewercontrol.h"
+#include "llui.h"
+#include "llfloater.h"
+#include "llfloaterreg.h"
+#include "llinventoryfunctions.h"
+#include "llinventorypanel.h"
+#include "llviewerwindow.h"
+#include "llviewerinventory.h"
+#include "llbutton.h"
+#include "llcombobox.h"
+#include "llfiltereditor.h"
+#include "llfloaterinventory.h"
+#include "llinventorybridge.h"
+#include "llinventorymodel.h"
+#include "llinventorymodelbackgroundfetch.h"
+#include "lluiconstants.h"
+#include "llscrolllistctrl.h"
+#include "lltextbox.h"
+#include "lluictrlfactory.h"
+#include "llsdutil.h"
+#include "llsidepanelappearance.h"
+#include "llwearablelist.h"
+
+static LLRegisterPanelClassWrapper<LLPanelOutfitEdit> t_outfit_edit("panel_outfit_edit");
+
+const U64 WEARABLE_MASK = (1LL << LLInventoryType::IT_WEARABLE);
+const U64 ATTACHMENT_MASK = (1LL << LLInventoryType::IT_ATTACHMENT) | (1LL << LLInventoryType::IT_OBJECT);
+const U64 ALL_ITEMS_MASK = WEARABLE_MASK | ATTACHMENT_MASK;
+
+class LLInventoryLookObserver : public LLInventoryObserver
+{
+public:
+	LLInventoryLookObserver(LLPanelOutfitEdit *panel) : mPanel(panel) {}
+	virtual ~LLInventoryLookObserver() 
+	{
+		if (gInventory.containsObserver(this))
+		{
+			gInventory.removeObserver(this);
+		}
+	}
+	
+	virtual void changed(U32 mask)
+	{
+		if (mask & (LLInventoryObserver::ADD | LLInventoryObserver::REMOVE))
+		{
+			mPanel->updateLookInfo();
+		}
+	}
+protected:
+	LLPanelOutfitEdit *mPanel;
+};
+
+class LLLookFetchObserver : public LLInventoryFetchDescendentsObserver
+{
+public:
+	LLLookFetchObserver(LLPanelOutfitEdit *panel) :
+	mPanel(panel)
+	{}
+	LLLookFetchObserver() {}
+	virtual void done()
+	{
+		mPanel->lookFetched();
+		if(gInventory.containsObserver(this))
+		{
+			gInventory.removeObserver(this);
+		}
+	}
+private:
+	LLPanelOutfitEdit *mPanel;
+};
+
+
+
+LLPanelOutfitEdit::LLPanelOutfitEdit()
+:	LLPanel(), mCurrentOutfitID(), mFetchLook(NULL), mSearchFilter(NULL),
+mLookContents(NULL), mInventoryItemsPanel(NULL), mAddToLookBtn(NULL),
+mRemoveFromLookBtn(NULL), mLookObserver(NULL)
+{
+	mSavedFolderState = new LLSaveFolderState();
+	mSavedFolderState->setApply(FALSE);
+	
+	mFetchLook = new LLLookFetchObserver(this);
+	mLookObserver = new LLInventoryLookObserver(this);
+	gInventory.addObserver(mLookObserver);
+	
+	mLookItemTypes.reserve(NUM_LOOK_ITEM_TYPES);
+	for (U32 i = 0; i < NUM_LOOK_ITEM_TYPES; i++)
+	{
+		mLookItemTypes.push_back(LLLookItemType());
+	}
+	
+	// TODO: make these strings translatable
+	mLookItemTypes[LIT_ALL] = LLLookItemType("All Items", ALL_ITEMS_MASK);
+	mLookItemTypes[LIT_WEARABLE] = LLLookItemType("Shape & Clothing", WEARABLE_MASK);
+	mLookItemTypes[LIT_ATTACHMENT] = LLLookItemType("Attachments", ATTACHMENT_MASK);
+
+}
+
+LLPanelOutfitEdit::~LLPanelOutfitEdit()
+{
+	delete mSavedFolderState;
+	if (gInventory.containsObserver(mFetchLook))
+	{
+		gInventory.removeObserver(mFetchLook);
+	}
+	delete mFetchLook;
+	
+	if (gInventory.containsObserver(mLookObserver))
+	{
+		gInventory.removeObserver(mLookObserver);
+	}
+	delete mLookObserver;
+}
+
+BOOL LLPanelOutfitEdit::postBuild()
+{
+	// gInventory.isInventoryUsable() no longer needs to be tested per Richard's fix for race conditions between inventory and panels
+		
+	mCurrentOutfitName = getChild<LLTextBox>("curr_outfit_name"); 
+
+	childSetCommitCallback("add_btn", boost::bind(&LLPanelOutfitEdit::showAddWearablesPanel, this), NULL);
+
+	/*
+	mLookContents->setDoubleClickCallback(onDoubleClickSpeaker, this);
+	mLookContents->setCommitOnSelectionChange(TRUE);
+	mLookContents->setCommitCallback(boost::bind(&LLPanelActiveSpeakers::handleSpeakerSelect, this, _2));
+	mLookContents->setSortChangedCallback(boost::bind(&LLPanelActiveSpeakers::onSortChanged, this));
+	mLookContents->setContextMenu(LLScrollListCtrl::MENU_AVATAR);
+	*/
+	
+	mInventoryItemsPanel = getChild<LLInventoryPanel>("inventory_items");
+	mInventoryItemsPanel->setFilterTypes(ALL_ITEMS_MASK);
+	mInventoryItemsPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
+	// mInventoryItemsPanel->setSelectCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this, _1, _2));
+	// mInventoryItemsPanel->getRootFolder()->setReshapeCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this, _1, _2));
+	
+	LLComboBox* type_filter = getChild<LLComboBox>("inventory_filter");
+	type_filter->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onTypeFilterChanged, this, _1));
+	type_filter->removeall();
+	for (U32 i = 0; i < mLookItemTypes.size(); ++i)
+	{
+		type_filter->add(mLookItemTypes[i].displayName);
+	}
+	type_filter->setCurrentByIndex(LIT_ALL);
+	
+	mSearchFilter = getChild<LLFilterEditor>("look_item_filter");
+	mSearchFilter->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onSearchEdit, this, _2));
+	
+	/* Removing add to look inline button (not part of mvp for viewer 2)
+	LLButton::Params add_params;
+	add_params.name("add_to_look");
+	add_params.click_callback.function(boost::bind(&LLPanelOutfitEdit::onAddToLookClicked, this));
+	add_params.label("+");
+	
+	mAddToLookBtn = LLUICtrlFactory::create<LLButton>(add_params);
+	mAddToLookBtn->setEnabled(FALSE);
+	mAddToLookBtn->setVisible(FALSE); */
+	
+	childSetAction("add_item_btn", boost::bind(&LLPanelOutfitEdit::onAddToLookClicked, this), this);
+
+	mUpBtn = getChild<LLButton>("up_btn");
+	mUpBtn->setEnabled(TRUE);
+	mUpBtn->setClickedCallback(boost::bind(&LLPanelOutfitEdit::onUpClicked, this));
+	
+	mLookContents = getChild<LLScrollListCtrl>("look_items_list");
+	mLookContents->sortByColumn("look_item_sort", TRUE);
+	mLookContents->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onLookItemSelectionChange, this));
+
+	/*
+	LLButton::Params remove_params;
+	remove_params.name("remove_from_look");
+	remove_params.click_callback.function(boost::bind(&LLPanelOutfitEdit::onRemoveFromLookClicked, this));
+	remove_params.label("-"); */
+	
+	//mRemoveFromLookBtn = LLUICtrlFactory::create<LLButton>(remove_params);
+	mRemoveFromLookBtn = getChild<LLButton>("remove_from_look_btn");
+	mRemoveFromLookBtn->setEnabled(FALSE);
+	mRemoveFromLookBtn->setVisible(FALSE);
+	//childSetAction("remove_from_look_btn", boost::bind(&LLPanelOutfitEdit::onRemoveFromLookClicked, this), this);
+	mRemoveFromLookBtn->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onRemoveFromLookClicked, this));
+	//getChild<LLPanel>("look_info_group_bar")->addChild(mRemoveFromLookBtn); remove_item_btn
+	
+	mEditWearableBtn = getChild<LLButton>("edit_wearable_btn");
+	mEditWearableBtn->setEnabled(FALSE);
+	mEditWearableBtn->setVisible(FALSE);
+	mEditWearableBtn->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onEditWearableClicked, this));
+
+	childSetAction("remove_item_btn", boost::bind(&LLPanelOutfitEdit::onRemoveFromLookClicked, this), this);
+	
+	return TRUE;
+}
+
+void LLPanelOutfitEdit::showAddWearablesPanel()
+{
+	childSetVisible("add_wearables_panel", childGetValue("add_btn"));
+}
+
+void LLPanelOutfitEdit::onTypeFilterChanged(LLUICtrl* ctrl)
+{
+	LLComboBox* type_filter = dynamic_cast<LLComboBox*>(ctrl);
+	llassert(type_filter);
+	if (type_filter)
+	{
+		U32 curr_filter_type = type_filter->getCurrentIndex();
+		mInventoryItemsPanel->setFilterTypes(mLookItemTypes[curr_filter_type].inventoryMask);
+	}
+	
+	mSavedFolderState->setApply(TRUE);
+	mInventoryItemsPanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
+	
+	LLOpenFoldersWithSelection opener;
+	mInventoryItemsPanel->getRootFolder()->applyFunctorRecursively(opener);
+	mInventoryItemsPanel->getRootFolder()->scrollToShowSelection();
+	
+	LLInventoryModelBackgroundFetch::instance().start();
+}
+
+void LLPanelOutfitEdit::onSearchEdit(const std::string& string)
+{
+	if (mSearchString != string)
+	{
+		mSearchString = string;
+		
+		// Searches are case-insensitive
+		LLStringUtil::toUpper(mSearchString);
+		LLStringUtil::trimHead(mSearchString);
+	}
+	
+	if (mSearchString == "")
+	{
+		mInventoryItemsPanel->setFilterSubString(LLStringUtil::null);
+		
+		// re-open folders that were initially open
+		mSavedFolderState->setApply(TRUE);
+		mInventoryItemsPanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
+		LLOpenFoldersWithSelection opener;
+		mInventoryItemsPanel->getRootFolder()->applyFunctorRecursively(opener);
+		mInventoryItemsPanel->getRootFolder()->scrollToShowSelection();
+	}
+	
+	LLInventoryModelBackgroundFetch::instance().start();
+	
+	if (mInventoryItemsPanel->getFilterSubString().empty() && mSearchString.empty())
+	{
+		// current filter and new filter empty, do nothing
+		return;
+	}
+	
+	// save current folder open state if no filter currently applied
+	if (mInventoryItemsPanel->getRootFolder()->getFilterSubString().empty())
+	{
+		mSavedFolderState->setApply(FALSE);
+		mInventoryItemsPanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
+	}
+	
+	// set new filter string
+	mInventoryItemsPanel->setFilterSubString(mSearchString);
+}
+
+void LLPanelOutfitEdit::onAddToLookClicked(void)
+{
+	LLFolderViewItem* curr_item = mInventoryItemsPanel->getRootFolder()->getCurSelectedItem();
+	LLFolderViewEventListener* listenerp  = curr_item->getListener();
+	link_inventory_item(gAgent.getID(), listenerp->getUUID(), mCurrentOutfitID, listenerp->getName(),
+						LLAssetType::AT_LINK, LLPointer<LLInventoryCallback>(NULL));
+	updateLookInfo();
+}
+
+
+void LLPanelOutfitEdit::onRemoveFromLookClicked(void)
+{
+	LLUUID id_to_remove = mLookContents->getSelectionInterface()->getCurrentID();
+	
+	LLViewerInventoryItem * item_to_remove = gInventory.getItem(id_to_remove);
+	
+	if (item_to_remove)
+	{
+		// returns null if not a wearable (attachment, etc).
+		const LLWearable* wearable_to_remove = gAgentWearables.getWearableFromAssetID(item_to_remove->getAssetUUID());
+		if (!wearable_to_remove || gAgentWearables.canWearableBeRemoved( wearable_to_remove ))
+		{											 
+			gInventory.purgeObject( id_to_remove );
+			updateLookInfo();
+			mRemoveFromLookBtn->setEnabled(FALSE);
+			if (mRemoveFromLookBtn->getVisible())
+			{
+				mRemoveFromLookBtn->setVisible(FALSE);
+			}
+		}
+	}
+}
+
+
+void LLPanelOutfitEdit::onUpClicked(void)
+{
+	LLUUID inv_id = mLookContents->getSelectionInterface()->getCurrentID();
+	if (inv_id.isNull())
+	{
+		//nothing selected, do nothing
+		return;
+	}
+
+	LLViewerInventoryItem *link_item = gInventory.getItem(inv_id);
+	if (!link_item)
+	{
+		llwarns << "could not find inventory item based on currently worn link." << llendl;
+		return;
+	}
+
+
+	LLUUID asset_id = link_item->getAssetUUID();
+	if (asset_id.isNull())
+	{
+		llwarns << "inventory link has null Asset ID. could not get object reference" << llendl;
+	}
+
+	static const std::string empty = "";
+	LLWearableList::instance().getAsset(asset_id,
+										empty,	// don't care about wearable name
+										link_item->getActualType(),
+										LLSidepanelAppearance::editWearable,
+										(void*)getParentUICtrl());
+}
+
+
+void LLPanelOutfitEdit::onEditWearableClicked(void)
+{
+	LLUUID id_to_edit = mLookContents->getSelectionInterface()->getCurrentID();
+	LLViewerInventoryItem * item_to_edit = gInventory.getItem(id_to_edit);
+
+	if (item_to_edit)
+	{
+		// returns null if not a wearable (attachment, etc).
+		LLWearable* wearable_to_edit = gAgentWearables.getWearableFromAssetID(item_to_edit->getAssetUUID());
+		if(wearable_to_edit)
+		{
+			bool can_modify = false;
+			bool is_complete = item_to_edit->isComplete();
+			// if item_to_edit is a link, its properties are not appropriate, 
+			// lets get original item with actual properties
+			LLViewerInventoryItem* original_item = gInventory.getItem(wearable_to_edit->getItemID());
+			if(original_item)
+			{
+				can_modify = original_item->getPermissions().allowModifyBy(gAgentID);
+				is_complete = original_item->isComplete();
+			}
+
+			if (can_modify && is_complete)
+			{											 
+				LLSidepanelAppearance::editWearable(wearable_to_edit, getParent());
+				if (mEditWearableBtn->getVisible())
+				{
+					mEditWearableBtn->setVisible(FALSE);
+				}
+			}
+		}
+	}
+}
+
+void LLPanelOutfitEdit::onInventorySelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action)
+{
+	LLFolderViewItem* current_item = mInventoryItemsPanel->getRootFolder()->getCurSelectedItem();
+	if (!current_item)
+	{
+		return;
+	}
+	
+	/* Removing add to look inline button (not part of mvp for viewer 2)
+	LLRect btn_rect(current_item->getLocalRect().mRight - 50,
+					current_item->getLocalRect().mTop,
+					current_item->getLocalRect().mRight - 30,
+					current_item->getLocalRect().mBottom);
+	
+	mAddToLookBtn->setRect(btn_rect);
+	mAddToLookBtn->setEnabled(TRUE);
+	if (!mAddToLookBtn->getVisible())
+	{
+		mAddToLookBtn->setVisible(TRUE);
+	}
+	
+	current_item->addChild(mAddToLookBtn); */
+}
+
+void LLPanelOutfitEdit::onLookItemSelectionChange(void)
+{	
+	S32 left_offset = -4;
+	S32 top_offset = -10;
+	LLScrollListItem* item = mLookContents->getLastSelectedItem();
+	if (!item)
+		return;
+
+	LLRect rect = item->getRect();
+	LLRect btn_rect(
+					left_offset + rect.mRight - 50,
+					top_offset  + rect.mTop,
+					left_offset + rect.mRight - 30,
+					top_offset  + rect.mBottom);
+	
+	mEditWearableBtn->setRect(btn_rect);
+	
+	mEditWearableBtn->setEnabled(TRUE);
+	if (!mEditWearableBtn->getVisible())
+	{
+		mEditWearableBtn->setVisible(TRUE);
+	}
+	//mLookContents->addChild(mRemoveFromLookBtn);
+}
+
+void LLPanelOutfitEdit::changed(U32 mask)
+{
+}
+
+void LLPanelOutfitEdit::lookFetched(void)
+{
+	LLInventoryModel::cat_array_t cat_array;
+	LLInventoryModel::item_array_t item_array;
+
+	// collectDescendentsIf takes non-const reference:
+	LLFindCOFValidItems is_cof_valid;
+	gInventory.collectDescendentsIf(mCurrentOutfitID,
+									cat_array,
+									item_array,
+									LLInventoryModel::EXCLUDE_TRASH,
+									is_cof_valid);
+	for (LLInventoryModel::item_array_t::const_iterator iter = item_array.begin();
+		 iter != item_array.end();
+		 iter++)
+	{
+		const LLViewerInventoryItem *item = (*iter);
+		
+		LLSD row;
+		row["id"] = item->getUUID();
+		LLSD& columns = row["columns"];
+		columns[0]["column"] = "look_item";
+		columns[0]["type"] = "text";
+		columns[0]["value"] = item->getName();
+		columns[1]["column"] = "look_item_sort";
+		columns[1]["type"] = "text"; // TODO: multi-wearable sort "type" should go here.
+		columns[1]["value"] = "BAR"; // TODO: Multi-wearable sort index should go here
+		
+		mLookContents->addElement(row);
+	}
+}
+
+void LLPanelOutfitEdit::updateLookInfo()
+{	
+	if (getVisible())
+	{
+		mLookContents->clearRows();
+		
+		uuid_vec_t folders;
+		folders.push_back(mCurrentOutfitID);
+		mFetchLook->fetch(folders);
+		if (mFetchLook->isEverythingComplete())
+		{
+			mFetchLook->done();
+		}
+		else
+		{
+			gInventory.addObserver(mFetchLook);
+		}
+	}
+}
+
+void LLPanelOutfitEdit::displayCurrentOutfit()
+{
+	if (!getVisible())
+	{
+		setVisible(TRUE);
+	}
+
+	mCurrentOutfitID = LLAppearanceMgr::getInstance()->getCOF();
+
+	std::string current_outfit_name;
+	if (LLAppearanceMgr::getInstance()->getBaseOutfitName(current_outfit_name))
+	{
+		mCurrentOutfitName->setText(current_outfit_name);
+	}
+	else
+	{
+		mCurrentOutfitName->setText(getString("No Outfit"));
+	}
+
+	updateLookInfo();
+}
+
+
diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h
new file mode 100644
index 0000000000000000000000000000000000000000..ba382d73200abd3a080235d168dc67657314ccc0
--- /dev/null
+++ b/indra/newview/llpaneloutfitedit.h
@@ -0,0 +1,126 @@
+/** 
+ * @file llpaneloutfitedit.h
+ * @brief Displays outfit edit information in Side Tray.
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * 
+ * Copyright (c) 2004-2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLPANELOUTFITEDIT_H
+#define LL_LLPANELOUTFITEDIT_H
+
+#include "llpanel.h"
+
+#include "v3dmath.h"
+#include "lluuid.h"
+
+#include "lliconctrl.h"
+
+#include "llremoteparcelrequest.h"
+#include "llinventory.h"
+#include "llinventorymodel.h"
+
+class LLButton;
+class LLTextBox;
+class LLInventoryCategory;
+class LLInventoryLookObserver;
+class LLInventoryPanel;
+class LLSaveFolderState;
+class LLFolderViewItem;
+class LLScrollListCtrl;
+class LLLookFetchObserver;
+class LLFilterEditor;
+
+class LLPanelOutfitEdit : public LLPanel
+{
+public:
+	
+	// NOTE: initialize mLookItemTypes at the index of any new enum you add in the LLPanelOutfitEdit() constructor
+	typedef enum e_look_item_type
+	{
+		LIT_ALL = 0,
+		LIT_WEARABLE, // clothing or shape
+		LIT_ATTACHMENT,
+		NUM_LOOK_ITEM_TYPES
+	} ELookItemType; 
+	
+	struct LLLookItemType {
+		std::string displayName;
+		U64 inventoryMask;
+		LLLookItemType() : displayName("NONE"), inventoryMask(0) {}
+		LLLookItemType(std::string name, U64 mask) : displayName(name), inventoryMask(mask) {}
+	};
+	
+	LLPanelOutfitEdit();
+	/*virtual*/ ~LLPanelOutfitEdit();
+
+	/*virtual*/ BOOL postBuild();
+	/*virtual*/ void changed(U32 mask);
+
+	/*virtual*/ void setParcelID(const LLUUID& parcel_id);
+		// Sends a request for data about the given parcel, which will
+		// only update the location if there is none already available.
+
+	void showAddWearablesPanel();
+
+	void onTypeFilterChanged(LLUICtrl* ctrl);
+	void onSearchEdit(const std::string& string);
+	void onInventorySelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
+	void onAddToLookClicked(void);
+	void onLookItemSelectionChange(void);
+	void onRemoveFromLookClicked(void);
+	void onEditWearableClicked(void);
+	void onUpClicked(void);
+
+	void displayCurrentOutfit();
+	
+	void lookFetched(void);
+	
+	void updateLookInfo(void);
+
+private:
+
+	//*TODO got rid of mCurrentOutfitID
+	LLUUID				mCurrentOutfitID;
+
+	LLTextBox*			mCurrentOutfitName;
+	LLScrollListCtrl*	mLookContents;
+	LLInventoryPanel*	mInventoryItemsPanel;
+	LLFilterEditor*		mSearchFilter;
+	LLSaveFolderState*	mSavedFolderState;
+	std::string			mSearchString;
+	LLButton*			mAddToLookBtn;
+	LLButton*			mRemoveFromLookBtn;
+	LLButton*			mUpBtn;
+	LLButton*			mEditWearableBtn;
+	
+	LLLookFetchObserver*		mFetchLook;
+	LLInventoryLookObserver*	mLookObserver;
+	std::vector<LLLookItemType> mLookItemTypes;
+};
+
+#endif // LL_LLPANELOUTFITEDIT_H
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index c2f2d32142d18b33016c27f8b50e0daad562016e..7d8b1dea0e2d1c1cb91b78e6ce0bb9d31627cafe 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -43,10 +43,12 @@
 #include "llfloaterinventory.h"
 #include "llfoldervieweventlistener.h"
 #include "llinventoryfunctions.h"
+#include "llinventorymodelbackgroundfetch.h"
 #include "llinventorypanel.h"
 #include "lllandmark.h"
 #include "lllineeditor.h"
 #include "llmodaldialog.h"
+#include "llnotificationsutil.h"
 #include "llsidepanelappearance.h"
 #include "llsidetray.h"
 #include "lltabcontainer.h"
@@ -67,75 +69,13 @@ static const std::string COF_TAB_NAME = "cof_tab";
 static LLRegisterPanelClassWrapper<LLPanelOutfitsInventory> t_inventory("panel_outfits_inventory");
 bool LLPanelOutfitsInventory::sShowDebugEditor = false;
 
-class LLOutfitSaveAsDialog : public LLModalDialog
-{
-private:
-	std::string	mItemName;
-	std::string mTempItemName;
-	
-	boost::signals2::signal<void (const std::string&)> mSaveAsSignal;
-
-public:
-	LLOutfitSaveAsDialog( const LLSD& key )
-		: LLModalDialog( key ),
-		  mTempItemName(key.asString())
-	{
-	}
-		
-	BOOL postBuild()
-	{
-		getChild<LLUICtrl>("Save")->setCommitCallback(boost::bind(&LLOutfitSaveAsDialog::onSave, this ));
-		getChild<LLUICtrl>("Cancel")->setCommitCallback(boost::bind(&LLOutfitSaveAsDialog::onCancel, this ));
-		
-		childSetTextArg("name ed", "[DESC]", mTempItemName);
-		return TRUE;
-	}
-
-	void setSaveAsCommit( const boost::signals2::signal<void (const std::string&)>::slot_type& cb )
-	{
-		mSaveAsSignal.connect(cb);
-	}
-
-	virtual void onOpen(const LLSD& key)
-	{
-		LLLineEditor* edit = getChild<LLLineEditor>("name ed");
-		if (edit)
-		{
-			edit->setFocus(TRUE);
-			edit->selectAll();
-		}
-	}
-
-	void onSave()
-	{
-		mItemName = childGetValue("name ed").asString();
-		LLStringUtil::trim(mItemName);
-		if( !mItemName.empty() )
-		{
-			mSaveAsSignal(mItemName);
-			closeFloater(); // destroys this object
-		}
-	}
 
-	void onCancel()
-	{
-		closeFloater(); // destroys this object
-	}
-};
-	
 LLPanelOutfitsInventory::LLPanelOutfitsInventory() :
 	mActivePanel(NULL),
 	mParent(NULL)
 {
 	mSavedFolderState = new LLSaveFolderState();
 	mSavedFolderState->setApply(FALSE);
-
-	static bool registered_dialog = false;
-	if (!registered_dialog)
-	{
-		LLFloaterReg::add("outfit_save_as", "floater_outfit_save_as.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutfitSaveAsDialog>);
-		registered_dialog = true;
-	}
 }
 
 LLPanelOutfitsInventory::~LLPanelOutfitsInventory()
@@ -191,7 +131,7 @@ void LLPanelOutfitsInventory::updateVerbs()
 
 	if (mListCommands)
 	{
-		mListCommands->childSetVisible("look_edit_btn",sShowDebugEditor);
+		mListCommands->childSetVisible("edit_current_outfit_btn",sShowDebugEditor);
 		updateListCommands();
 	}
 }
@@ -217,7 +157,7 @@ void LLPanelOutfitsInventory::onSearchEdit(const std::string& string)
 		getRootFolder()->scrollToShowSelection();
 	}
 
-	gInventory.startBackgroundFetch();
+	LLInventoryModelBackgroundFetch::instance().start();
 
 	if (mActivePanel->getFilterSubString().empty() && string.empty())
 	{
@@ -241,7 +181,7 @@ void LLPanelOutfitsInventory::onWearButtonClick()
 	LLFolderViewEventListener* listenerp = getCorrectListenerForAction();
 	if (listenerp)
 	{
-		listenerp->performAction(NULL, NULL,"replaceoutfit");
+		listenerp->performAction(NULL, "replaceoutfit");
 	}
 }
 
@@ -250,7 +190,7 @@ void LLPanelOutfitsInventory::onAdd()
 	LLFolderViewEventListener* listenerp = getCorrectListenerForAction();
 	if (listenerp)
 	{
-		listenerp->performAction(NULL, NULL,"addtooutfit");
+		listenerp->performAction(NULL, "addtooutfit");
 	}
 }
 
@@ -259,7 +199,7 @@ void LLPanelOutfitsInventory::onRemove()
 	LLFolderViewEventListener* listenerp = getCorrectListenerForAction();
 	if (listenerp)
 	{
-		listenerp->performAction(NULL, NULL,"removefromoutfit");
+		listenerp->performAction(NULL, "removefromoutfit");
 	}
 }
 
@@ -267,32 +207,56 @@ void LLPanelOutfitsInventory::onEdit()
 {
 }
 
+bool LLPanelOutfitsInventory::onSaveCommit(const LLSD& notification, const LLSD& response)
+{
+	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+	if (0 == option)
+	{
+		std::string outfit_name = response["message"].asString();
+		LLStringUtil::trim(outfit_name);
+		if( !outfit_name.empty() )
+		{
+			LLUUID outfit_folder = gAgentWearables.makeNewOutfitLinks(outfit_name);
+			LLSD key;
+			LLSideTray::getInstance()->showPanel("panel_outfits_inventory", key);
+
+			if (mAppearanceTabs)
+			{
+				mAppearanceTabs->selectTabByName(OUTFITS_TAB_NAME);
+			}	
+		}
+	}
+
+	return false;
+}
+
+
+
 void LLPanelOutfitsInventory::onSave()
 {
 	std::string outfit_name;
 
-	if (!LLAppearanceManager::getInstance()->getBaseOutfitName(outfit_name))
+	if (!LLAppearanceMgr::getInstance()->getBaseOutfitName(outfit_name))
 	{
 		outfit_name = LLViewerFolderType::lookupNewCategoryName(LLFolderType::FT_OUTFIT);
 	}
 
+	LLSD args;
+	args["DESC"] = outfit_name;
+
+	LLSD payload;
+	//payload["ids"].append(*it);
+	
+	LLNotificationsUtil::add("SaveOutfitAs", args, payload, boost::bind(&LLPanelOutfitsInventory::onSaveCommit, this, _1, _2));
+
+	//)
+	
+/*
 	LLOutfitSaveAsDialog* save_as_dialog = LLFloaterReg::showTypedInstance<LLOutfitSaveAsDialog>("outfit_save_as", LLSD(outfit_name), TRUE);
 	if (save_as_dialog)
 	{
 		save_as_dialog->setSaveAsCommit(boost::bind(&LLPanelOutfitsInventory::onSaveCommit, this, _1 ));
-	}
-}
-
-void LLPanelOutfitsInventory::onSaveCommit(const std::string& outfit_name)
-{
-	LLUUID outfit_folder = gAgentWearables.makeNewOutfitLinks(outfit_name);
-	LLSD key;
-	LLSideTray::getInstance()->showPanel("panel_outfits_inventory", key);
-
-	if (mAppearanceTabs)
-	{
-		mAppearanceTabs->selectTabByName(OUTFITS_TAB_NAME);
-	}
+	}*/
 }
 
 void LLPanelOutfitsInventory::onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action)
@@ -305,19 +269,12 @@ void LLPanelOutfitsInventory::onSelectionChange(const std::deque<LLFolderViewIte
 	}
 }
 
-void LLPanelOutfitsInventory::onSelectorButtonClicked()
+void LLPanelOutfitsInventory::showEditOutfitPanel()
 {
-	  LLFolderViewItem* cur_item = getRootFolder()->getCurSelectedItem();
-
-	  LLFolderViewEventListener* listenerp = cur_item->getListener();
-	  if (getIsCorrectType(listenerp))
-	  {
-	  LLSD key;
-	  key["type"] = "look";
-	  key["id"] = listenerp->getUUID();
-
-	  LLSideTray::getInstance()->showPanel("sidepanel_appearance", key);
-	  } 
+	LLSD key;
+	key["type"] = "edit_outfit";
+	
+	LLSideTray::getInstance()->showPanel("sidepanel_appearance", key);
 }
 
 LLFolderViewEventListener *LLPanelOutfitsInventory::getCorrectListenerForAction()
@@ -364,7 +321,7 @@ void LLPanelOutfitsInventory::initListCommandsHandlers()
 	mListCommands->childSetAction("make_outfit_btn", boost::bind(&LLPanelOutfitsInventory::onAddButtonClick, this));
 	mListCommands->childSetAction("wear_btn", boost::bind(&LLPanelOutfitsInventory::onWearButtonClick, this));
 
-	mListCommands->childSetAction("look_edit_btn", boost::bind(&LLPanelOutfitsInventory::onSelectorButtonClicked, this));
+	mListCommands->childSetAction("edit_current_outfit_btn", boost::bind(&LLPanelOutfitsInventory::showEditOutfitPanel, this));
 
 	LLDragAndDropButton* trash_btn = mListCommands->getChild<LLDragAndDropButton>("trash_btn");
 	trash_btn->setDragAndDropHandler(boost::bind(&LLPanelOutfitsInventory::handleDragAndDropToTrash, this
@@ -479,18 +436,18 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata)
 	if (command_name == "delete" || command_name == "remove")
 	{
 		BOOL can_delete = FALSE;
-		LLFolderView *folder = getActivePanel()->getRootFolder();
-		if (folder)
+		LLFolderView* root = getActivePanel()->getRootFolder();
+		if (root)
 		{
 			std::set<LLUUID> selection_set;
-			folder->getSelectionList(selection_set);
+			root->getSelectionList(selection_set);
 			can_delete = (selection_set.size() > 0);
 			for (std::set<LLUUID>::iterator iter = selection_set.begin();
 				 iter != selection_set.end();
 				 ++iter)
 			{
 				const LLUUID &item_id = (*iter);
-				LLFolderViewItem *item = folder->getItemByID(item_id);
+				LLFolderViewItem *item = root->getItemByID(item_id);
 				can_delete &= item->getListener()->isItemRemovable();
 			}
 			return can_delete;
@@ -500,11 +457,11 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata)
 	if (command_name == "remove_link")
 	{
 		BOOL can_delete = FALSE;
-		LLFolderView *folder = getActivePanel()->getRootFolder();
-		if (folder)
+		LLFolderView* root = getActivePanel()->getRootFolder();
+		if (root)
 		{
 			std::set<LLUUID> selection_set;
-			folder->getSelectionList(selection_set);
+			root->getSelectionList(selection_set);
 			can_delete = (selection_set.size() > 0);
 			for (std::set<LLUUID>::iterator iter = selection_set.begin();
 				 iter != selection_set.end();
@@ -549,11 +506,11 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata)
 bool LLPanelOutfitsInventory::hasItemsSelected()
 {
 	bool has_items_selected = false;
-	LLFolderView *folder = getActivePanel()->getRootFolder();
-	if (folder)
+	LLFolderView* root = getActivePanel()->getRootFolder();
+	if (root)
 	{
 		std::set<LLUUID> selection_set;
-		folder->getSelectionList(selection_set);
+		root->getSelectionList(selection_set);
 		has_items_selected = (selection_set.size() > 0);
 	}
 	return has_items_selected;
diff --git a/indra/newview/llpaneloutfitsinventory.h b/indra/newview/llpaneloutfitsinventory.h
index ab25ef0a49254cc83971123d68d89dc01a0fedf7..41afc2f37260d4f356bd0de61e47f5b6ba3c14c9 100644
--- a/indra/newview/llpaneloutfitsinventory.h
+++ b/indra/newview/llpaneloutfitsinventory.h
@@ -61,10 +61,10 @@ class LLPanelOutfitsInventory : public LLPanel
 	void onEdit();
 	void onSave();
 	
-	void onSaveCommit(const std::string& item_name);
+	bool onSaveCommit(const LLSD& notification, const LLSD& response);
 
 	void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
-	void onSelectorButtonClicked();
+	void showEditOutfitPanel();
 
 	// If a compatible listener type is selected, then return a pointer to that.
 	// Otherwise, return NULL.
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 03e8ab644e77015d3b3e69d21656ced49d846abe..5802d53cd181d9e5ee04432646733b7857149ad0 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -134,13 +134,13 @@ class LLAvatarItemDistanceComparator : public LLAvatarItemComparator
 	typedef std::map < LLUUID, LLVector3d > id_to_pos_map_t;
 	LLAvatarItemDistanceComparator() {};
 
-	void updateAvatarsPositions(std::vector<LLVector3d>& positions, std::vector<LLUUID>& uuids)
+	void updateAvatarsPositions(std::vector<LLVector3d>& positions, uuid_vec_t& uuids)
 	{
 		std::vector<LLVector3d>::const_iterator
 			pos_it = positions.begin(),
 			pos_end = positions.end();
 
-		std::vector<LLUUID>::const_iterator
+		uuid_vec_t::const_iterator
 			id_it = uuids.begin(),
 			id_end = uuids.end();
 
@@ -178,8 +178,8 @@ class LLAvatarItemRecentSpeakerComparator : public  LLAvatarItemNameComparator
 protected:
 	virtual bool doCompare(const LLAvatarListItem* item1, const LLAvatarListItem* item2) const
 	{
-		LLPointer<LLSpeaker> lhs = LLLocalSpeakerMgr::instance().findSpeaker(item1->getAvatarId());
-		LLPointer<LLSpeaker> rhs = LLLocalSpeakerMgr::instance().findSpeaker(item2->getAvatarId());
+		LLPointer<LLSpeaker> lhs = LLActiveSpeakerMgr::instance().findSpeaker(item1->getAvatarId());
+		LLPointer<LLSpeaker> rhs = LLActiveSpeakerMgr::instance().findSpeaker(item2->getAvatarId());
 		if ( lhs.notNull() && rhs.notNull() )
 		{
 			// Compare by last speaking time
@@ -652,8 +652,8 @@ void LLPanelPeople::updateFriendList()
 	av_tracker.copyBuddyList(all_buddies);
 
 	// save them to the online and all friends vectors
-	LLAvatarList::uuid_vector_t& online_friendsp = mOnlineFriendList->getIDs();
-	LLAvatarList::uuid_vector_t& all_friendsp = mAllFriendList->getIDs();
+	uuid_vec_t& online_friendsp = mOnlineFriendList->getIDs();
+	uuid_vec_t& all_friendsp = mAllFriendList->getIDs();
 
 	all_friendsp.clear();
 	online_friendsp.clear();
@@ -672,11 +672,6 @@ void LLPanelPeople::updateFriendList()
 		lldebugs << "Friends Cards were not found" << llendl;
 	}
 
-	// show special help text for just created account to help found friends. EXT-4836
-	static LLTextBox* no_friends_text = getChild<LLTextBox>("no_friends_msg");
-	no_friends_text->setVisible(all_friendsp.size() == 0);
-
-
 	LLAvatarTracker::buddy_map_t::const_iterator buddy_it = all_buddies.begin();
 	for (; buddy_it != all_buddies.end(); ++buddy_it)
 	{
@@ -685,6 +680,14 @@ void LLPanelPeople::updateFriendList()
 			online_friendsp.push_back(buddy_id);
 	}
 
+	// show special help text for just created account to help found friends. EXT-4836
+	static LLTextBox* no_friends_text = getChild<LLTextBox>("no_friends_msg");
+
+	// Seems sometimes all_friends can be empty because of issue with Inventory loading (clear cache, slow connection...)
+	// So, lets check all lists to avoid overlapping the text with online list. See EXT-6448.
+	bool any_friend_exists = (all_friendsp.size() > 0) || (online_friendsp.size() > 0);
+	no_friends_text->setVisible(!any_friend_exists);
+
 	/*
 	 * Avatarlists  will be hidden by showFriendsAccordionsIfNeeded(), if they do not have items.
 	 * But avatarlist can be updated only if it is visible @see LLAvatarList::draw();   
@@ -708,7 +711,7 @@ void LLPanelPeople::updateNearbyList()
 	mNearbyList->setDirty();
 
 	DISTANCE_COMPARATOR.updateAvatarsPositions(positions, mNearbyList->getIDs());
-	LLLocalSpeakerMgr::instance().update(TRUE);
+	LLActiveSpeakerMgr::instance().update(TRUE);
 }
 
 void LLPanelPeople::updateRecentList()
@@ -743,7 +746,7 @@ void LLPanelPeople::buttonSetAction(const std::string& btn_name, const commit_si
 
 bool LLPanelPeople::isFriendOnline(const LLUUID& id)
 {
-	LLAvatarList::uuid_vector_t ids = mOnlineFriendList->getIDs();
+	uuid_vec_t ids = mOnlineFriendList->getIDs();
 	return std::find(ids.begin(), ids.end(), id) != ids.end();
 }
 
@@ -756,7 +759,7 @@ void LLPanelPeople::updateButtons()
 	//bool recent_tab_active	= (cur_tab == RECENT_TAB_NAME);
 	LLUUID selected_id;
 
-	std::vector<LLUUID> selected_uuids;
+	uuid_vec_t selected_uuids;
 	getCurrentItemIDs(selected_uuids);
 	bool item_selected = (selected_uuids.size() == 1);
 	bool multiple_selected = (selected_uuids.size() >= 1);
@@ -852,7 +855,7 @@ LLUUID LLPanelPeople::getCurrentItemID() const
 	return LLUUID::null;
 }
 
-void LLPanelPeople::getCurrentItemIDs(std::vector<LLUUID>& selected_uuids) const
+void LLPanelPeople::getCurrentItemIDs(uuid_vec_t& selected_uuids) const
 {
 	std::string cur_tab = getActiveTabName();
 
@@ -1063,10 +1066,10 @@ void LLPanelPeople::onAddFriendButtonClicked()
 	}
 }
 
-bool LLPanelPeople::isItemsFreeOfFriends(const std::vector<LLUUID>& uuids)
+bool LLPanelPeople::isItemsFreeOfFriends(const uuid_vec_t& uuids)
 {
 	const LLAvatarTracker& av_tracker = LLAvatarTracker::instance();
-	for ( std::vector<LLUUID>::const_iterator
+	for ( uuid_vec_t::const_iterator
 			  id = uuids.begin(),
 			  id_end = uuids.end();
 		  id != id_end; ++id )
@@ -1094,7 +1097,7 @@ void LLPanelPeople::onAddFriendWizButtonClicked()
 
 void LLPanelPeople::onDeleteFriendButtonClicked()
 {
-	std::vector<LLUUID> selected_uuids;
+	uuid_vec_t selected_uuids;
 	getCurrentItemIDs(selected_uuids);
 
 	if (selected_uuids.size() == 1)
@@ -1121,7 +1124,7 @@ void LLPanelPeople::onChatButtonClicked()
 
 void LLPanelPeople::onImButtonClicked()
 {
-	std::vector<LLUUID> selected_uuids;
+	uuid_vec_t selected_uuids;
 	getCurrentItemIDs(selected_uuids);
 	if ( selected_uuids.size() == 1 )
 	{
@@ -1143,7 +1146,7 @@ void LLPanelPeople::onActivateButtonClicked()
 // static
 void LLPanelPeople::onAvatarPicked(
 		const std::vector<std::string>& names,
-		const std::vector<LLUUID>& ids)
+		const uuid_vec_t& ids)
 {
 	if (!names.empty() && !ids.empty())
 		LLAvatarActions::requestFriendshipDialog(ids[0], names[0]);
@@ -1293,7 +1296,7 @@ bool LLPanelPeople::onRecentViewSortMenuItemCheck(const LLSD& userdata)
 
 void LLPanelPeople::onCallButtonClicked()
 {
-	std::vector<LLUUID> selected_uuids;
+	uuid_vec_t selected_uuids;
 	getCurrentItemIDs(selected_uuids);
 
 	if (selected_uuids.size() == 1)
diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h
index 6d3d43615683373faee3b2c1a04b245d441de475..891381e2dee80b0063735709eddedd66aabf6445 100644
--- a/indra/newview/llpanelpeople.h
+++ b/indra/newview/llpanelpeople.h
@@ -78,12 +78,12 @@ class LLPanelPeople
 	void					updateRecentList();
 
 	bool					isFriendOnline(const LLUUID& id);
-	bool					isItemsFreeOfFriends(const std::vector<LLUUID>& uuids);
+	bool					isItemsFreeOfFriends(const uuid_vec_t& uuids);
 
 	void					updateButtons();
 	std::string				getActiveTabName() const;
 	LLUUID					getCurrentItemID() const;
-	void					getCurrentItemIDs(std::vector<LLUUID>& selected_uuids) const;
+	void					getCurrentItemIDs(uuid_vec_t& selected_uuids) const;
 	void					buttonSetVisible(std::string btn_name, BOOL visible);
 	void					buttonSetEnabled(const std::string& btn_name, bool enabled);
 	void					buttonSetAction(const std::string& btn_name, const commit_signal_t::slot_type& cb);
@@ -134,7 +134,7 @@ class LLPanelPeople
 	// misc callbacks
 	static void				onAvatarPicked(
 								const std::vector<std::string>& names,
-								const std::vector<LLUUID>& ids);
+								const uuid_vec_t& ids);
 
 	void					onFriendsAccordionExpandedCollapsed(LLUICtrl* ctrl, const LLSD& param, LLAvatarList* avatar_list);
 
diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp
index 854651cd019669af7252424af47c28f06836321c..862e32cca86b1c6f210e19ccb98ba5d690f786c9 100644
--- a/indra/newview/llpanelpeoplemenus.cpp
+++ b/indra/newview/llpanelpeoplemenus.cpp
@@ -72,7 +72,7 @@ ContextMenu::~ContextMenu()
 	}
 }
 
-void ContextMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y)
+void ContextMenu::show(LLView* spawning_view, const uuid_vec_t& uuids, S32 x, S32 y)
 {
 	if (mMenu)
 	{
@@ -177,7 +177,7 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata)
 
 		bool result = (mUUIDs.size() > 0);
 
-		std::vector<LLUUID>::const_iterator
+		uuid_vec_t::const_iterator
 			id = mUUIDs.begin(),
 			uuids_end = mUUIDs.end();
 
@@ -200,7 +200,7 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata)
 
 		bool result = (mUUIDs.size() > 0);
 
-		std::vector<LLUUID>::const_iterator
+		uuid_vec_t::const_iterator
 			id = mUUIDs.begin(),
 			uuids_end = mUUIDs.end();
 
@@ -226,6 +226,11 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata)
 		return (LLAvatarTracker::instance().isBuddyOnline(id) && is_agent_mappable(id))
 					|| gAgent.isGodlike();
 	}
+	else if(item == std::string("can_offer_teleport"))
+	{
+		const LLUUID& id = mUUIDs.front();
+		return LLAvatarActions::canOfferTeleport(id);
+	}
 	return false;
 }
 
diff --git a/indra/newview/llpanelpeoplemenus.h b/indra/newview/llpanelpeoplemenus.h
index 913638d8c8670ed890ccbe3a73b8ea9629889139..8e12710afc47efb98db7576c7a4413c1d4a3ebe7 100644
--- a/indra/newview/llpanelpeoplemenus.h
+++ b/indra/newview/llpanelpeoplemenus.h
@@ -52,7 +52,7 @@ class ContextMenu : public LLAvatarListItem::ContextMenu
 	 *
 	 * @param  uuids - an array of avatar or group ids
 	 */
-	/*virtual*/ void show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y);
+	/*virtual*/ void show(LLView* spawning_view, const uuid_vec_t& uuids, S32 x, S32 y);
 
 	virtual void hide();
 
@@ -60,7 +60,7 @@ class ContextMenu : public LLAvatarListItem::ContextMenu
 
 	virtual LLContextMenu* createMenu() = 0;
 
-	std::vector<LLUUID>	mUUIDs;
+	uuid_vec_t	mUUIDs;
 	LLContextMenu*		mMenu;
 	LLHandle<LLView>	mMenuHandle;
 };
diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp
index 01b6e8ffada8eda09b159b7c5fbcafe683dd36a8..71d16a08b4894ad0c73664da13e5f010f7c1d63f 100644
--- a/indra/newview/llpanelpermissions.cpp
+++ b/indra/newview/llpanelpermissions.cpp
@@ -195,8 +195,8 @@ void LLPanelPermissions::disableAll()
 	childSetEnabled("Owner Name",						FALSE);
 
 	childSetEnabled("Group:",							FALSE);
-	childSetText("Group Name",							LLStringUtil::null);
-	childSetEnabled("Group Name",						FALSE);
+	childSetText("Group Name Proxy",					LLStringUtil::null);
+	childSetEnabled("Group Name Proxy",					FALSE);
 	childSetEnabled("button set group",					FALSE);
 
 	childSetText("Object Name",							LLStringUtil::null);
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index 6f920cf4b915e7bdbe9ad4f4c7c7c2e2d2cc17c5..bde8d0288552e6f16b4b322a22437c70293f9816 100644
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -288,7 +288,8 @@ void LLPanelPicks::processProperties(void* data, EAvatarProcessorType type)
 		LLAvatarClassifieds* c_info = static_cast<LLAvatarClassifieds*>(data);
 		if(c_info && getAvatarId() == c_info->target_id)
 		{
-			mClassifiedsList->clear();
+			// do not clear classified list in case we will receive two or more data packets.
+			// list has been cleared in updateData(). (fix for EXT-6436)
 
 			LLAvatarClassifieds::classifieds_list_t::const_iterator it = c_info->classifieds_list.begin();
 			for(; c_info->classifieds_list.end() != it; ++it)
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index f9ba6f625d2aa7039a1b2306cbbf9836e62bd72b..54455afa4f3a45aa78fa472500dbc88467540bc4 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -551,7 +551,9 @@ void LLPanelPlaces::onTeleportButtonClicked()
 		{
 			LLSD payload;
 			payload["asset_id"] = mItem->getAssetUUID();
-			LLNotificationsUtil::add("TeleportFromLandmark", LLSD(), payload);
+			LLSD args; 
+			args["LOCATION"] = mItem->getName(); 
+			LLNotificationsUtil::add("TeleportFromLandmark", args, payload);
 		}
 		else if (mPlaceInfoType == AGENT_INFO_TYPE ||
 				 mPlaceInfoType == REMOTE_PLACE_INFO_TYPE ||
@@ -1006,9 +1008,9 @@ void LLPanelPlaces::changedGlobalPos(const LLVector3d &global_pos)
 	updateVerbs();
 }
 
-void LLPanelPlaces::showAddedLandmarkInfo(const std::vector<LLUUID>& items)
+void LLPanelPlaces::showAddedLandmarkInfo(const uuid_vec_t& items)
 {
-	for (std::vector<LLUUID>::const_iterator item_iter = items.begin();
+	for (uuid_vec_t::const_iterator item_iter = items.begin();
 		 item_iter != items.end();
 		 ++item_iter)
 	{
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index 78fcbbb11d60e578da4298b7b61ec8dadf209162..97cf43d222dd3b9b0dbce11edb83a4e655fd788e 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -73,7 +73,7 @@ class LLPanelPlaces : public LLPanel
 	void changedGlobalPos(const LLVector3d &global_pos);
 
 	// Opens landmark info panel when agent creates or receives landmark.
-	void showAddedLandmarkInfo(const std::vector<LLUUID>& items);
+	void showAddedLandmarkInfo(const uuid_vec_t& items);
 
 	void setItem(LLInventoryItem* item);
 
diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp
index a9ec01f33acd7f546cdeabd551fb6ec67e663cb6..ab2f9284f71ac0ce595b111204e01fed92409ca9 100644
--- a/indra/newview/llpanelprimmediacontrols.cpp
+++ b/indra/newview/llpanelprimmediacontrols.cpp
@@ -32,6 +32,7 @@
 #include "llviewerprecompiledheaders.h"
 
 //LLPanelPrimMediaControls
+#include "llagent.h"
 #include "llagentcamera.h"
 #include "llparcel.h"
 #include "llpanel.h"
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 90c8f2551f1f04fdcf28588bff2b12e567ecf64b..0a34531eeecb8814286113ea27b9d8d4e20ed52f 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -348,7 +348,7 @@ LLContextMenu* LLTeleportHistoryPanel::ContextMenu::createMenu()
 
 void LLTeleportHistoryPanel::ContextMenu::onTeleport()
 {
-	LLTeleportHistoryStorage::getInstance()->goToItem(mIndex);
+	confirmTeleport(mIndex);
 }
 
 void LLTeleportHistoryPanel::ContextMenu::onInfo()
@@ -507,7 +507,7 @@ void LLTeleportHistoryPanel::onTeleport()
 		return;
 
 	// teleport to existing item in history, so we don't add it again
-	mTeleportHistory->goToItem(itemp->getIndex());
+	confirmTeleport(itemp->getIndex());
 }
 
 /*
@@ -1058,3 +1058,27 @@ void LLTeleportHistoryPanel::onAccordionExpand(LLUICtrl* ctrl, const LLSD& param
 		mLastSelectedFlatlList->resetSelection();
 	}
 }
+
+// static
+void LLTeleportHistoryPanel::confirmTeleport(S32 hist_idx)
+{
+	LLSD args;
+	args["HISTORY_ENTRY"] = LLTeleportHistoryStorage::getInstance()->getItems()[hist_idx].mTitle;
+	LLNotificationsUtil::add("TeleportToHistoryEntry", args, LLSD(),
+		boost::bind(&LLTeleportHistoryPanel::onTeleportConfirmation, _1, _2, hist_idx));
+}
+
+// Called when user reacts upon teleport confirmation dialog.
+// static
+bool LLTeleportHistoryPanel::onTeleportConfirmation(const LLSD& notification, const LLSD& response, S32 hist_idx)
+{
+	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+
+	if (0 == option)
+	{
+		// Teleport to given history item.
+		LLTeleportHistoryStorage::getInstance()->goToItem(hist_idx);
+	}
+
+	return false;
+}
diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h
index 4eeaec77056a0dc6fef81bd69fa703841f68a409..5e2ccc0c934c5c3c64197845015a6d8547a7a3d0 100644
--- a/indra/newview/llpanelteleporthistory.h
+++ b/indra/newview/llpanelteleporthistory.h
@@ -103,6 +103,9 @@ class LLTeleportHistoryPanel : public LLPanelPlacesTab
 	bool isAccordionCollapsedByUser(LLUICtrl* acc_tab);
 	void onAccordionExpand(LLUICtrl* ctrl, const LLSD& param);
 
+	static void confirmTeleport(S32 hist_idx);
+	static bool onTeleportConfirmation(const LLSD& notification, const LLSD& response, S32 hist_idx);
+
 	LLTeleportHistoryStorage*	mTeleportHistory;
 	LLAccordionCtrl*		mHistoryAccordion;
 
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index 2748daaffa4f103dba60dc86096d9793977e7026..eb245453db62068d6cfcf9dded03b6e0121b57ea 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -248,8 +248,8 @@ bool LLParticipantList::onAddItemEvent(LLPointer<LLOldEvents::LLEvent> event, co
 
 bool LLParticipantList::onRemoveItemEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
 {
-	LLAvatarList::uuid_vector_t& group_members = mAvatarList->getIDs();
-	LLAvatarList::uuid_vector_t::iterator pos = std::find(group_members.begin(), group_members.end(), event->getValue().asUUID());
+	uuid_vec_t& group_members = mAvatarList->getIDs();
+	uuid_vec_t::iterator pos = std::find(group_members.begin(), group_members.end(), event->getValue().asUUID());
 	if(pos != group_members.end())
 	{
 		group_members.erase(pos);
@@ -260,7 +260,7 @@ bool LLParticipantList::onRemoveItemEvent(LLPointer<LLOldEvents::LLEvent> event,
 
 bool LLParticipantList::onClearListEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
 {
-	LLAvatarList::uuid_vector_t& group_members = mAvatarList->getIDs();
+	uuid_vec_t& group_members = mAvatarList->getIDs();
 	group_members.clear();
 	mAvatarList->setDirty();
 	return true;
@@ -445,7 +445,7 @@ LLContextMenu* LLParticipantList::LLParticipantListMenu::createMenu()
 	return main_menu;
 }
 
-void LLParticipantList::LLParticipantListMenu::show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y)
+void LLParticipantList::LLParticipantListMenu::show(LLView* spawning_view, const uuid_vec_t& uuids, S32 x, S32 y)
 {
 	LLPanelPeopleMenus::ContextMenu::show(spawning_view, uuids, x, y);
 
@@ -615,7 +615,7 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD&
 
 		bool result = (mUUIDs.size() > 0);
 
-		std::vector<LLUUID>::const_iterator
+		uuid_vec_t::const_iterator
 			id = mUUIDs.begin(),
 			uuids_end = mUUIDs.end();
 
diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h
index e1b1b5af00292301bab0e01b68d0a2f2da0564db..d9ca4230a99af0cba299e0b8a87472e6dd9f9128 100644
--- a/indra/newview/llparticipantlist.h
+++ b/indra/newview/llparticipantlist.h
@@ -152,7 +152,7 @@ class LLParticipantList
 		public:
 			LLParticipantListMenu(LLParticipantList& parent):mParent(parent){};
 			/*virtual*/ LLContextMenu* createMenu();
-			/*virtual*/ void show(LLView* spawning_view, const std::vector<LLUUID>& uuids, S32 x, S32 y);
+			/*virtual*/ void show(LLView* spawning_view, const uuid_vec_t& uuids, S32 x, S32 y);
 		protected:
 			LLParticipantList& mParent;
 		private:
diff --git a/indra/newview/llplacesinventorybridge.cpp b/indra/newview/llplacesinventorybridge.cpp
index 4fe69f295c172c8a3f8b1a523974a736acd8f8f7..f59a55cb8b74325a3d1696fa84a32d5753ba78eb 100644
--- a/indra/newview/llplacesinventorybridge.cpp
+++ b/indra/newview/llplacesinventorybridge.cpp
@@ -122,7 +122,7 @@ void LLPlacesFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 }
 
 //virtual
-void LLPlacesFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model, std::string action)
+void LLPlacesFolderBridge::performAction(LLInventoryModel* model, std::string action)
 {
 	if ("expand" == action)
 	{
@@ -136,7 +136,7 @@ void LLPlacesFolderBridge::performAction(LLFolderView* folder, LLInventoryModel*
 	}
 	else
 	{
-		LLFolderBridge::performAction(folder, model, action);
+		LLFolderBridge::performAction(model, action);
 	}
 }
 
@@ -158,6 +158,7 @@ LLInvFVBridge* LLPlacesInventoryBridgeBuilder::createBridge(
 	LLAssetType::EType actual_asset_type,
 	LLInventoryType::EType inv_type,
 	LLInventoryPanel* inventory,
+	LLFolderView* root,
 	const LLUUID& uuid,
 	U32 flags/* = 0x00*/) const
 {
@@ -167,9 +168,9 @@ LLInvFVBridge* LLPlacesInventoryBridgeBuilder::createBridge(
 	case LLAssetType::AT_LANDMARK:
 		if(!(inv_type == LLInventoryType::IT_LANDMARK))
 		{
-			llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << safe_inv_type_lookup(inv_type) << " on uuid " << uuid << llendl;
+			llwarns << LLAssetType::lookup(asset_type) << " asset has inventory type " << LLInventoryType::lookupHumanReadable(inv_type) << " on uuid " << uuid << llendl;
 		}
-		new_listener = new LLPlacesLandmarkBridge(inv_type, inventory, uuid, flags);
+		new_listener = new LLPlacesLandmarkBridge(inv_type, inventory, root, uuid, flags);
 		break;
 	case LLAssetType::AT_CATEGORY:
 		if (actual_asset_type == LLAssetType::AT_LINK_FOLDER)
@@ -180,11 +181,12 @@ LLInvFVBridge* LLPlacesInventoryBridgeBuilder::createBridge(
 				actual_asset_type,
 				inv_type,
 				inventory,
+				root,
 				uuid,
 				flags);
 			break;
 		}
-		new_listener = new LLPlacesFolderBridge(inv_type, inventory, uuid);
+		new_listener = new LLPlacesFolderBridge(inv_type, inventory, root, uuid);
 		break;
 	default:
 		new_listener = LLInventoryFVBridgeBuilder::createBridge(
@@ -192,6 +194,7 @@ LLInvFVBridge* LLPlacesInventoryBridgeBuilder::createBridge(
 			actual_asset_type,
 			inv_type,
 			inventory,
+			root,
 			uuid,
 			flags);
 	}
diff --git a/indra/newview/llplacesinventorybridge.h b/indra/newview/llplacesinventorybridge.h
index 66a8e8e54d824550162dc8686d11a6283dbcc232..7e5170cc33180b96c7fd97a7092883c5e3f2fa36 100644
--- a/indra/newview/llplacesinventorybridge.h
+++ b/indra/newview/llplacesinventorybridge.h
@@ -48,8 +48,15 @@ class LLPlacesLandmarkBridge : public LLLandmarkBridge
 	/*virtual*/ void buildContextMenu(LLMenuGL& menu, U32 flags);
 
 protected:
-	LLPlacesLandmarkBridge(LLInventoryType::EType type, LLInventoryPanel* inventory, const LLUUID& uuid, U32 flags = 0x00)
-		: LLLandmarkBridge(inventory, uuid, flags) {mInvType = type;}
+	LLPlacesLandmarkBridge(LLInventoryType::EType type, 
+						   LLInventoryPanel* inventory,
+						   LLFolderView* root,
+						   const LLUUID& uuid, 
+						   U32 flags = 0x00) :
+		LLLandmarkBridge(inventory, root, uuid, flags)
+	{
+		mInvType = type;
+	}
 };
 
 /**
@@ -61,12 +68,17 @@ class LLPlacesFolderBridge : public LLFolderBridge
 
 public:
 	/*virtual*/ void buildContextMenu(LLMenuGL& menu, U32 flags);
-	/*virtual*/ void performAction(LLFolderView* folder, LLInventoryModel* model, std::string action);
+	/*virtual*/ void performAction(LLInventoryModel* model, std::string action);
 
 protected:
-	LLPlacesFolderBridge(LLInventoryType::EType type, LLInventoryPanel* inventory, const LLUUID& uuid)
-		: LLFolderBridge(inventory, uuid) {mInvType = type;}
-
+	LLPlacesFolderBridge(LLInventoryType::EType type, 
+						 LLInventoryPanel* inventory,
+						 LLFolderView* root,						 
+						 const LLUUID& uuid) :
+		LLFolderBridge(inventory, root, uuid)
+	{
+		mInvType = type;
+	}
 	LLFolderViewFolder* getFolder();
 };
 
@@ -79,13 +91,13 @@ class LLPlacesFolderBridge : public LLFolderBridge
 class LLPlacesInventoryBridgeBuilder : public LLInventoryFVBridgeBuilder
 {
 public:
-	/*virtual*/ LLInvFVBridge* createBridge(
-		LLAssetType::EType asset_type,
-		LLAssetType::EType actual_asset_type,
-		LLInventoryType::EType inv_type,
-		LLInventoryPanel* inventory,
-		const LLUUID& uuid,
-		U32 flags = 0x00) const;
+	/*virtual*/ LLInvFVBridge* createBridge(LLAssetType::EType asset_type,
+											LLAssetType::EType actual_asset_type,
+											LLInventoryType::EType inv_type,
+											LLInventoryPanel* inventory,
+											LLFolderView* root,
+											const LLUUID& uuid,
+											U32 flags = 0x00) const;
 };
 
 #endif // LL_LLPLACESINVENTORYBRIDGE_H
diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp
index ed0fb54051f12d2266d2218a95a3dba094523732..0930a7be7f6aaa387472511ad256bad89c1ce995 100644
--- a/indra/newview/llplacesinventorypanel.cpp
+++ b/indra/newview/llplacesinventorypanel.cpp
@@ -68,9 +68,9 @@ BOOL LLPlacesInventoryPanel::postBuild()
 
 	// clear Contents();
 	{
-		mFolders->destroyView();
-		mFolders->getParent()->removeChild(mFolders);
-		mFolders->die();
+		mFolderRoot->destroyView();
+		mFolderRoot->getParent()->removeChild(mFolderRoot);
+		mFolderRoot->die();
 
 		if( mScroller )
 		{
@@ -78,7 +78,7 @@ BOOL LLPlacesInventoryPanel::postBuild()
 			mScroller->die();
 			mScroller = NULL;
 		}
-		mFolders = NULL;
+		mFolderRoot = NULL;
 	}
 
 
@@ -95,13 +95,13 @@ BOOL LLPlacesInventoryPanel::postBuild()
 		p.title = getLabel();
 		p.rect = folder_rect;
 		p.parent_panel = this;
-		mFolders = (LLFolderView*)LLUICtrlFactory::create<LLPlacesFolderView>(p);
-		mFolders->setAllowMultiSelect(mAllowMultiSelect);
+		mFolderRoot = (LLFolderView*)LLUICtrlFactory::create<LLPlacesFolderView>(p);
+		mFolderRoot->setAllowMultiSelect(mAllowMultiSelect);
 	}
 
 	mCommitCallbackRegistrar.popScope();
 
-	mFolders->setCallbackRegistrar(&mCommitCallbackRegistrar);
+	mFolderRoot->setCallbackRegistrar(&mCommitCallbackRegistrar);
 
 	// scroller
 	{
@@ -116,14 +116,14 @@ BOOL LLPlacesInventoryPanel::postBuild()
 		mScroller = LLUICtrlFactory::create<LLScrollContainer>(p);
 	}
 	addChild(mScroller);
-	mScroller->addChild(mFolders);
+	mScroller->addChild(mFolderRoot);
 
-	mFolders->setScrollContainer(mScroller);
-	mFolders->addChild(mFolders->mStatusTextBox);
+	mFolderRoot->setScrollContainer(mScroller);
+	mFolderRoot->addChild(mFolderRoot->mStatusTextBox);
 
 
 	// cut subitems
-	mFolders->setUseEllipses(true);
+	mFolderRoot->setUseEllipses(true);
 
 	return TRUE;
 }
@@ -132,17 +132,17 @@ BOOL LLPlacesInventoryPanel::postBuild()
 void LLPlacesInventoryPanel::saveFolderState()
 {
 	mSavedFolderState->setApply(FALSE);
-	getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
+	mFolderRoot->applyFunctorRecursively(*mSavedFolderState);
 }
 
 // re-open folders which state was saved
 void LLPlacesInventoryPanel::restoreFolderState()
 {
 	mSavedFolderState->setApply(TRUE);
-	getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
+	mFolderRoot->applyFunctorRecursively(*mSavedFolderState);
 	LLOpenFoldersWithSelection opener;
-	getRootFolder()->applyFunctorRecursively(opener);
-	getRootFolder()->scrollToShowSelection();
+	mFolderRoot->applyFunctorRecursively(opener);
+	mFolderRoot->scrollToShowSelection();
 }
 
 S32	LLPlacesInventoryPanel::notify(const LLSD& info) 
@@ -152,11 +152,11 @@ S32	LLPlacesInventoryPanel::notify(const LLSD& info)
 		std::string str_action = info["action"];
 		if(str_action == "select_first")
 		{
-			return getRootFolder()->notify(info);
+			return mFolderRoot->notify(info);
 		}
 		else if(str_action == "select_last")
 		{
-			return getRootFolder()->notify(info);
+			return mFolderRoot->notify(info);
 		}
 	}
 	return 0;
diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp
index 99e0b82b8fbf85353ad51a56a2449f68e2470242..d0db77dcbe43100b810fa3f094bf7520e20fcee4 100644
--- a/indra/newview/llpreview.cpp
+++ b/indra/newview/llpreview.cpp
@@ -36,7 +36,7 @@
 #include "llpreview.h"
 
 #include "lllineeditor.h"
-#include "llinventory.h"
+#include "llinventorydefines.h"
 #include "llinventorymodel.h"
 #include "llresmgr.h"
 #include "lltextbox.h"
@@ -179,10 +179,9 @@ void LLPreview::onCommit()
 			// update the object itself.
 			if( item->getType() == LLAssetType::AT_OBJECT )
 			{
-				LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-				if(avatarp)
+				if (isAgentAvatarValid())
 				{
-					LLViewerObject* obj = avatarp->getWornAttachment( item->getUUID() );
+					LLViewerObject* obj = gAgentAvatarp->getWornAttachment( item->getUUID() );
 					if( obj )
 					{
 						LLSelectMgr::getInstance()->deselectAll();
diff --git a/indra/newview/llpreviewanim.cpp b/indra/newview/llpreviewanim.cpp
index 0cc747f789f06af87302ef44f716ae4d72e7061f..262961b73b2f2ccb462c7a741398f3a52fcdae25 100644
--- a/indra/newview/llpreviewanim.cpp
+++ b/indra/newview/llpreviewanim.cpp
@@ -71,7 +71,7 @@ BOOL LLPreviewAnim::postBuild()
 	const LLInventoryItem* item = getItem();
 	if(item)
 	{
-		gAgent.getAvatarObject()->createMotion(item->getAssetUUID()); // preload the animation
+		gAgentAvatarp->createMotion(item->getAssetUUID()); // preload the animation
 		childSetText("desc", item->getDescription());
 	}
 
@@ -125,10 +125,7 @@ void LLPreviewAnim::playAnim( void *userdata )
 		{
 			self->mPauseRequest = NULL;
 			gAgent.sendAnimationRequest(itemID, ANIM_REQUEST_START);
-			
-			LLVOAvatar* avatar = gAgent.getAvatarObject();
-			LLMotion*   motion = avatar->findMotion(itemID);
-			
+			LLMotion* motion = gAgentAvatarp->findMotion(itemID);
 			if (motion)
 			{
 				motion->setDeactivateCallback(&endAnimCallback, (void *)(new LLHandle<LLFloater>(self->getHandle())));
@@ -136,7 +133,7 @@ void LLPreviewAnim::playAnim( void *userdata )
 		}
 		else
 		{
-			gAgent.getAvatarObject()->stopMotion(itemID);
+			gAgentAvatarp->stopMotion(itemID);
 			gAgent.sendAnimationRequest(itemID, ANIM_REQUEST_STOP);
 		}
 	}
@@ -161,10 +158,8 @@ void LLPreviewAnim::auditionAnim( void *userdata )
 		if (self->childGetValue("Anim audition btn").asBoolean() ) 
 		{
 			self->mPauseRequest = NULL;
-			gAgent.getAvatarObject()->startMotion(item->getAssetUUID());
-			
-			LLVOAvatar* avatar = gAgent.getAvatarObject();
-			LLMotion*   motion = avatar->findMotion(itemID);
+			gAgentAvatarp->startMotion(item->getAssetUUID());
+			LLMotion* motion = gAgentAvatarp->findMotion(itemID);
 			
 			if (motion)
 			{
@@ -173,7 +168,7 @@ void LLPreviewAnim::auditionAnim( void *userdata )
 		}
 		else
 		{
-			gAgent.getAvatarObject()->stopMotion(itemID);
+			gAgentAvatarp->stopMotion(itemID);
 			gAgent.sendAnimationRequest(itemID, ANIM_REQUEST_STOP);
 		}
 	}
@@ -186,11 +181,9 @@ void LLPreviewAnim::onClose(bool app_quitting)
 
 	if(item)
 	{
-		gAgent.getAvatarObject()->stopMotion(item->getAssetUUID());
+		gAgentAvatarp->stopMotion(item->getAssetUUID());
 		gAgent.sendAnimationRequest(item->getAssetUUID(), ANIM_REQUEST_STOP);
-					
-		LLVOAvatar* avatar = gAgent.getAvatarObject();
-		LLMotion*   motion = avatar->findMotion(item->getAssetUUID());
+		LLMotion* motion = gAgentAvatarp->findMotion(item->getAssetUUID());
 		
 		if (motion)
 		{
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 57a8ca3d122ca6621b280cfbaa7729bd42bba534..fce90e4c44cf54b181e599fc27840b4b64fb799f 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -42,6 +42,10 @@
 #include "llstring.h"
 #include "lldir.h"
 #include "llfloaterreg.h"
+#include "llinventorydefines.h"
+#include "llinventoryfunctions.h"
+#include "llinventorymodel.h"
+#include "llinventorymodelbackgroundfetch.h"
 #include "llmultigesture.h"
 #include "llnotificationsutil.h"
 #include "llvfile.h"
@@ -56,7 +60,6 @@
 #include "lldelayedgestureerror.h"
 #include "llfloatergesture.h" // for some label constants
 #include "llgesturemgr.h"
-#include "llinventorymodel.h"
 #include "llkeyboard.h"
 #include "lllineeditor.h"
 #include "llradiogroup.h"
@@ -97,7 +100,7 @@ class LLInventoryGestureAvailable : public LLInventoryCompletionObserver
 
 void LLInventoryGestureAvailable::done()
 {
-	for(item_ref_t::iterator it = mComplete.begin(); it != mComplete.end(); ++it)
+	for(uuid_vec_t::iterator it = mComplete.begin(); it != mComplete.end(); ++it)
 	{
 		LLPreviewGesture* preview = LLFloaterReg::findTypedInstance<LLPreviewGesture>("preview_gesture", *it);
 		if(preview)
@@ -131,10 +134,10 @@ LLPreviewGesture* LLPreviewGesture::show(const LLUUID& item_id, const LLUUID& ob
 	
 	// Start speculative download of sounds and animations
 	const LLUUID animation_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_ANIMATION);
-	gInventory.startBackgroundFetch(animation_folder_id);
+	LLInventoryModelBackgroundFetch::instance().start(animation_folder_id);
 
 	const LLUUID sound_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_SOUND);
-	gInventory.startBackgroundFetch(sound_folder_id);
+	LLInventoryModelBackgroundFetch::instance().start(sound_folder_id);
 
 	// this will call refresh when we have everything.
 	LLViewerInventoryItem* item = (LLViewerInventoryItem*)preview->getItem();
@@ -269,7 +272,7 @@ BOOL LLPreviewGesture::canClose()
 // virtual
 void LLPreviewGesture::onClose(bool app_quitting)
 {
-	LLGestureManager::instance().stopGesture(mPreviewGesture);
+	LLGestureMgr::instance().stopGesture(mPreviewGesture);
 }
 
 // virtual
@@ -293,13 +296,13 @@ bool LLPreviewGesture::handleSaveChangesDialog(const LLSD& notification, const L
 	switch(option)
 	{
 	case 0:  // "Yes"
-		LLGestureManager::instance().stopGesture(mPreviewGesture);
+		LLGestureMgr::instance().stopGesture(mPreviewGesture);
 		mCloseAfterSave = TRUE;
 		onClickSave(this);
 		break;
 
 	case 1:  // "No"
-		LLGestureManager::instance().stopGesture(mPreviewGesture);
+		LLGestureMgr::instance().stopGesture(mPreviewGesture);
 		mDirty = FALSE; // Force the dirty flag because user has clicked NO on confirm save dialog...
 		closeFloater();
 		break;
@@ -784,7 +787,7 @@ void LLPreviewGesture::refresh()
 	
 	mOptionsText->setText(optionstext);
 
-	BOOL active = LLGestureManager::instance().isGestureActive(mItemUUID);
+	BOOL active = LLGestureMgr::instance().isGestureActive(mItemUUID);
 	mActiveCheck->set(active);
 
 	// Can only preview if there are steps
@@ -1138,10 +1141,10 @@ void LLPreviewGesture::saveIfNeeded()
 
 		// If this gesture is active, then we need to update the in-memory
 		// active map with the new pointer.
-		if (!delayedUpload && LLGestureManager::instance().isGestureActive(mItemUUID))
+		if (!delayedUpload && LLGestureMgr::instance().isGestureActive(mItemUUID))
 		{
 			// gesture manager now owns the pointer
-			LLGestureManager::instance().replaceGesture(mItemUUID, gesture, asset_id);
+			LLGestureMgr::instance().replaceGesture(mItemUUID, gesture, asset_id);
 
 			// replaceGesture may deactivate other gestures so let the
 			// inventory know.
@@ -1702,13 +1705,13 @@ void LLPreviewGesture::onClickDelete(void* data)
 void LLPreviewGesture::onCommitActive(LLUICtrl* ctrl, void* data)
 {
 	LLPreviewGesture* self = (LLPreviewGesture*)data;
-	if (!LLGestureManager::instance().isGestureActive(self->mItemUUID))
+	if (!LLGestureMgr::instance().isGestureActive(self->mItemUUID))
 	{
-		LLGestureManager::instance().activateGesture(self->mItemUUID);
+		LLGestureMgr::instance().activateGesture(self->mItemUUID);
 	}
 	else
 	{
-		LLGestureManager::instance().deactivateGesture(self->mItemUUID);
+		LLGestureMgr::instance().deactivateGesture(self->mItemUUID);
 	}
 
 	// Make sure the (active) label in the inventory gets updated.
@@ -1747,14 +1750,14 @@ void LLPreviewGesture::onClickPreview(void* data)
 		self->mPreviewBtn->setLabel(self->getString("stop_txt"));
 
 		// play it, and delete when done
-		LLGestureManager::instance().playGesture(self->mPreviewGesture);
+		LLGestureMgr::instance().playGesture(self->mPreviewGesture);
 
 		self->refresh();
 	}
 	else
 	{
 		// Will call onDonePreview() below
-		LLGestureManager::instance().stopGesture(self->mPreviewGesture);
+		LLGestureMgr::instance().stopGesture(self->mPreviewGesture);
 
 		self->refresh();
 	}
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp
index ee8e3f1db6a49d731bed3fbf199da11f95f81a1b..75702dc8e52c1bf454e41729739316b55d8d41d5 100644
--- a/indra/newview/llpreviewnotecard.cpp
+++ b/indra/newview/llpreviewnotecard.cpp
@@ -38,9 +38,11 @@
 
 #include "llagent.h"
 #include "llassetuploadresponders.h"
+#include "lldraghandle.h"
 #include "llviewerwindow.h"
 #include "llbutton.h"
 #include "llfloaterreg.h"
+#include "llinventorydefines.h"
 #include "llinventorymodel.h"
 #include "lllineeditor.h"
 #include "llnotificationsutil.h"
@@ -188,6 +190,20 @@ void LLPreviewNotecard::refreshFromInventory(const LLUUID& new_item_id)
 	loadAsset();
 }
 
+void LLPreviewNotecard::updateTitleButtons()
+{
+	LLPreview::updateTitleButtons();
+
+	LLUICtrl* lock_btn = getChild<LLUICtrl>("lock");
+	if(lock_btn->getVisible() && !isMinimized()) // lock button stays visible if floater is minimized.
+	{
+		LLRect lock_rc = lock_btn->getRect();
+		LLRect buttons_rect = getDragHandle()->getButtonsRect();
+		buttons_rect.mLeft = lock_rc.mLeft;
+		getDragHandle()->setButtonsRect(buttons_rect);
+	}
+}
+
 void LLPreviewNotecard::loadAsset()
 {
 	// request the asset.
diff --git a/indra/newview/llpreviewnotecard.h b/indra/newview/llpreviewnotecard.h
index 5b8cf1c2f6708c876d053fec55ed1757555eb24d..e0363eef548f8f9c79070744282dadaa75776f7b 100644
--- a/indra/newview/llpreviewnotecard.h
+++ b/indra/newview/llpreviewnotecard.h
@@ -79,6 +79,7 @@ class LLPreviewNotecard : public LLPreview
 
 protected:
 
+	void updateTitleButtons();
 	virtual void loadAsset();
 	bool saveIfNeeded(LLInventoryItem* copyitem = NULL);
 
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index f5a9f82d50f18ee8934a4cdbe639127d76b40843..6b0e524f8cbf05223a224be4971a88d2eef7cc0f 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -41,6 +41,7 @@
 #include "llcombobox.h"
 #include "lldir.h"
 #include "llfloaterreg.h"
+#include "llinventorydefines.h"
 #include "llinventorymodel.h"
 #include "llkeyboard.h"
 #include "lllineeditor.h"
@@ -1090,8 +1091,7 @@ void LLPreviewLSL::onSave(void* userdata, BOOL close_after_save)
 
 // Save needs to compile the text in the buffer. If the compile
 // succeeds, then save both assets out to the database. If the compile
-// fails, go ahead and save the text anyway so that the user doesn't
-// get too fucked.
+// fails, go ahead and save the text anyway.
 void LLPreviewLSL::saveIfNeeded()
 {
 	// llinfos << "LLPreviewLSL::saveIfNeeded()" << llendl;
@@ -1579,7 +1579,7 @@ void LLLiveLSLEditor::loadAsset()
 										  DEFAULT_SCRIPT_NAME,
 										  DEFAULT_SCRIPT_DESC,
 										  LLSaleInfo::DEFAULT,
-										  LLInventoryItem::II_FLAGS_NONE,
+										  LLInventoryItemFlags::II_FLAGS_NONE,
 										  time_corrected());
 		mAssetStatus = PREVIEW_ASSET_LOADED;
 	}
diff --git a/indra/newview/llrecentpeople.cpp b/indra/newview/llrecentpeople.cpp
index bd46b5b56aa58a14ea3018bec4a0a8249403707e..62c2ddfd9f77a76c60211ea8895f859e28970573 100644
--- a/indra/newview/llrecentpeople.cpp
+++ b/indra/newview/llrecentpeople.cpp
@@ -63,7 +63,7 @@ bool LLRecentPeople::contains(const LLUUID& id) const
 	return mPeople.find(id) != mPeople.end();
 }
 
-void LLRecentPeople::get(std::vector<LLUUID>& result) const
+void LLRecentPeople::get(uuid_vec_t& result) const
 {
 	result.clear();
 	for (recent_people_t::const_iterator pos = mPeople.begin(); pos != mPeople.end(); ++pos)
diff --git a/indra/newview/llrecentpeople.h b/indra/newview/llrecentpeople.h
index e0f2faaec51a38d707b1754a618d6c4a3182cd4e..c718997f7ef1714168a9a6de71d803b041956aa0 100644
--- a/indra/newview/llrecentpeople.h
+++ b/indra/newview/llrecentpeople.h
@@ -79,7 +79,7 @@ class LLRecentPeople: public LLSingleton<LLRecentPeople>, public LLOldEvents::LL
 	 * 
 	 * @param result where to put the result.
 	 */
-	void get(std::vector<LLUUID>& result) const;
+	void get(uuid_vec_t& result) const;
 
 	const LLDate& getDate(const LLUUID& id) const;
 
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index dffb5e5e123ad97eb721319b3fd266042670eaef..e9a80907b766bad2b8c656bb6e81f3418668422c 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -480,7 +480,9 @@ void LLScreenChannel::showToastsBottom()
 		}
 
 		toast_rect = (*it).toast->getRect();
-		toast_rect.setOriginAndSize(getRect().mLeft, bottom + toast_margin, toast_rect.getWidth() ,toast_rect.getHeight());
+		toast_rect.setOriginAndSize(getRect().mRight - toast_rect.getWidth(),
+				bottom + toast_margin, toast_rect.getWidth(),
+				toast_rect.getHeight());
 		(*it).toast->setRect(toast_rect);
 
 		if(floater && floater->overlapsScreenChannel())
diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp
index 95e12bf46fc8383fdaa5d622ed65bcb8bfe4acb8..7980fe19459a132566f508ed5a3a40e33db19dc0 100644
--- a/indra/newview/llscrollingpanelparam.cpp
+++ b/indra/newview/llscrollingpanelparam.cpp
@@ -209,7 +209,7 @@ void LLScrollingPanelParam::onSliderMoved(LLUICtrl* ctrl, void* userdata)
 	if (current_weight != new_weight )
 	{
 		self->mWearable->setVisualParamWeight( param->getID(), new_weight, FALSE );
-		gAgent.getAvatarObject()->updateVisualParams();
+		gAgentAvatarp->updateVisualParams();
 	}
 }
 
@@ -298,7 +298,7 @@ void LLScrollingPanelParam::onHintHeldDown( LLVisualParamHint* hint )
 				&& new_percent < slider->getMaxValue())
 			{
 				mWearable->setVisualParamWeight( hint->getVisualParam()->getID(), new_weight, FALSE);
-				gAgent.getAvatarObject()->updateVisualParams();
+				gAgentAvatarp->updateVisualParams();
 
 				slider->setValue( weightToPercent( new_weight ) );
 			}
@@ -344,8 +344,7 @@ void LLScrollingPanelParam::onHintMaxMouseUp( void* userdata )
 
 	F32 elapsed_time = self->mMouseDownTimer.getElapsedTimeF32();
 
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (avatarp)
+	if (isAgentAvatarValid())
 	{
 		LLVisualParamHint* hint = self->mHintMax;
 
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index d744f097d5cd15bf1e678b92091bff90306585c9..d03a492cd1002146da0a6ecc2b074f254bf95836 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -1475,7 +1475,7 @@ void LLSelectMgr::selectionSetImage(const LLUUID& imageid)
 				object->sendTEUpdate();
 				// 1 particle effect per object				
 				LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE);
-				effectp->setSourceObject(gAgent.getAvatarObject());
+				effectp->setSourceObject(gAgentAvatarp);
 				effectp->setTargetObject(object);
 				effectp->setDuration(LL_HUD_DUR_SHORT);
 				effectp->setColor(LLColor4U(gAgent.getEffectColor()));
@@ -3619,7 +3619,7 @@ void LLSelectMgr::sendAttach(U8 attachment_point)
 {
 	LLViewerObject* attach_object = mSelectedObjects->getFirstRootObject();
 
-	if (!attach_object || !gAgent.getAvatarObject() || mSelectedObjects->mSelectType != SELECT_TYPE_WORLD)
+	if (!attach_object || !isAgentAvatarValid() || mSelectedObjects->mSelectType != SELECT_TYPE_WORLD)
 	{
 		return;
 	}
@@ -3630,7 +3630,7 @@ void LLSelectMgr::sendAttach(U8 attachment_point)
 	BOOL build_mode = LLToolMgr::getInstance()->inEdit();
 	// Special case: Attach to default location for this object.
 	if (0 == attachment_point ||
-		get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, (S32)attachment_point, (LLViewerJointAttachment*)NULL))
+		get_if_there(gAgentAvatarp->mAttachmentPoints, (S32)attachment_point, (LLViewerJointAttachment*)NULL))
 	{
 		sendListToRegions(
 			"ObjectAttach",
@@ -4392,7 +4392,7 @@ void LLSelectMgr::processObjectProperties(LLMessageSystem* msg, void** user_data
 		msg->getStringFast(_PREHASH_ObjectData, _PREHASH_SitName, sit_name, i);
 
 		//unpack TE IDs
-		std::vector<LLUUID> texture_ids;
+		uuid_vec_t texture_ids;
 		S32 size = msg->getSizeFast(_PREHASH_ObjectData, i, _PREHASH_TextureID);
 		if (size > 0)
 		{
@@ -4911,10 +4911,9 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)
 	LLGLEnable blend(GL_BLEND);
 	LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
 
-	LLVOAvatar* avatar = gAgent.getAvatarObject();
-	if (for_hud && avatar)
+	if (isAgentAvatarValid() && for_hud)
 	{
-		LLBBox hud_bbox = avatar->getHUDBBox();
+		LLBBox hud_bbox = gAgentAvatarp->getHUDBBox();
 
 		F32 cur_zoom = gAgentCamera.mHUDCurZoom;
 
@@ -5023,7 +5022,7 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)
 		}
 	}
 
-	if (for_hud && avatar)
+	if (isAgentAvatarValid() && for_hud)
 	{
 		glMatrixMode(GL_PROJECTION);
 		gGL.popMatrix();
@@ -5208,13 +5207,13 @@ void LLSelectNode::saveColors()
 	}
 }
 
-void LLSelectNode::saveTextures(const std::vector<LLUUID>& textures)
+void LLSelectNode::saveTextures(const uuid_vec_t& textures)
 {
 	if (mObject.notNull())
 	{
 		mSavedTextures.clear();
 
-		for (std::vector<LLUUID>::const_iterator texture_it = textures.begin();
+		for (uuid_vec_t::const_iterator texture_it = textures.begin();
 			 texture_it != textures.end(); ++texture_it)
 		{
 			mSavedTextures.push_back(*texture_it);
@@ -5399,7 +5398,7 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)
 	if (volume)
 	{
 		F32 silhouette_thickness;
-		if (is_hud_object && gAgent.getAvatarObject())
+		if (isAgentAvatarValid() && is_hud_object)
 		{
 			silhouette_thickness = LLSelectMgr::sHighlightThickness / gAgentCamera.mHUDCurZoom;
 		}
@@ -5609,16 +5608,16 @@ void LLSelectMgr::updateSelectionCenter()
 	{
 		mSelectedObjects->mSelectType = getSelectTypeForObject(object);
 
-		if (mSelectedObjects->mSelectType == SELECT_TYPE_ATTACHMENT && gAgent.getAvatarObject())
+		if (mSelectedObjects->mSelectType == SELECT_TYPE_ATTACHMENT && isAgentAvatarValid())
 		{
-			mPauseRequest = gAgent.getAvatarObject()->requestPause();
+			mPauseRequest = gAgentAvatarp->requestPause();
 		}
 		else
 		{
 			mPauseRequest = NULL;
 		}
 
-		if (mSelectedObjects->mSelectType != SELECT_TYPE_HUD && gAgent.getAvatarObject())
+		if (mSelectedObjects->mSelectType != SELECT_TYPE_HUD && isAgentAvatarValid())
 		{
 			// reset hud ZOOM
 			gAgentCamera.mHUDTargetZoom = 1.f;
@@ -5641,10 +5640,10 @@ void LLSelectMgr::updateSelectionCenter()
 			LLViewerObject* object = node->getObject();
 			if (!object)
 				continue;
-			LLViewerObject *myAvatar = gAgent.getAvatarObject();
+			
 			LLViewerObject *root = object->getRootEdit();
 			if (mSelectedObjects->mSelectType == SELECT_TYPE_WORLD && // not an attachment
-				!root->isChild(myAvatar) && // not the object you're sitting on
+				!root->isChild(gAgentAvatarp) && // not the object you're sitting on
 				!object->isAvatar()) // not another avatar
 			{
 				mShowSelection = TRUE;
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index 00474827ca19c2682709c2b0c8f54916b89caef8..d315f40ff3ba07da0865f523837bee111447674e 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -147,7 +147,7 @@ class LLSelectNode
 	void setObject(LLViewerObject* object);
 	// *NOTE: invalidate stored textures and colors when # faces change
 	void saveColors();
-	void saveTextures(const std::vector<LLUUID>& textures);
+	void saveTextures(const uuid_vec_t& textures);
 	void saveTextureScaleRatios();
 
 	BOOL allowOperationOnNode(PermissionBit op, U64 group_proxy_power) const;
@@ -183,7 +183,7 @@ class LLSelectNode
 	std::string		mSitName;
 	U64				mCreationDate;
 	std::vector<LLColor4>	mSavedColors;
-	std::vector<LLUUID>		mSavedTextures;
+	uuid_vec_t		mSavedTextures;
 	std::vector<LLVector3>  mTextureScaleRatios;
 	std::vector<LLVector3>	mSilhouetteVertices;	// array of vertices to render silhouette of object
 	std::vector<LLVector3>	mSilhouetteNormals;	// array of normals to render silhouette of object
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 9a37af491606c7b16dc2752cec456ac9cbd73fdc..a084c93786336b27aa03f235172a5579f6b8259c 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -93,7 +93,7 @@ LLSidepanelAppearance::LLSidepanelAppearance() :
 	LLPanel(),
 	mFilterSubString(LLStringUtil::null),
 	mFilterEditor(NULL),
-	mLookInfo(NULL),
+	mOutfitEdit(NULL),
 	mCurrOutfitPanel(NULL)
 {
 }
@@ -129,10 +129,10 @@ BOOL LLSidepanelAppearance::postBuild()
 	mPanelOutfitsInventory = dynamic_cast<LLPanelOutfitsInventory *>(getChild<LLPanel>("panel_outfits_inventory"));
 	mPanelOutfitsInventory->setParent(this);
 
-	mLookInfo = dynamic_cast<LLPanelLookInfo*>(getChild<LLPanel>("panel_look_info"));
-	if (mLookInfo)
+	mOutfitEdit = dynamic_cast<LLPanelOutfitEdit*>(getChild<LLPanel>("panel_outfit_edit"));
+	if (mOutfitEdit)
 	{
-		LLButton* back_btn = mLookInfo->getChild<LLButton>("back_btn");
+		LLButton* back_btn = mOutfitEdit->getChild<LLButton>("back_btn");
 		if (back_btn)
 		{
 			back_btn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onBackButtonClicked, this));
@@ -177,16 +177,14 @@ void LLSidepanelAppearance::onOpen(const LLSD& key)
 	if(key.size() == 0)
 		return;
 
-	toggleLookInfoPanel(TRUE);
+	toggleOutfitEditPanel(TRUE);
 	updateVerbs();
 	
 	mLookInfoType = key["type"].asString();
 
-	if (mLookInfoType == "look")
+	if (mLookInfoType == "edit_outfit")
 	{
-		LLInventoryCategory *pLook = gInventory.getCategory(key["id"].asUUID());
-		if (pLook)
-			mLookInfo->displayLookInfo(pLook);
+		mOutfitEdit->displayCurrentOutfit();
 	}
 }
 
@@ -206,7 +204,7 @@ void LLSidepanelAppearance::onFilterEdit(const std::string& search_string)
 
 void LLSidepanelAppearance::onOpenOutfitButtonClicked()
 {
-	const LLViewerInventoryItem *outfit_link = LLAppearanceManager::getInstance()->getBaseOutfitLink();
+	const LLViewerInventoryItem *outfit_link = LLAppearanceMgr::getInstance()->getBaseOutfitLink();
 	if (!outfit_link)
 		return;
 	if (!outfit_link->getIsLinkType())
@@ -219,13 +217,13 @@ void LLSidepanelAppearance::onOpenOutfitButtonClicked()
 		LLInventoryPanel *inventory_panel = tab_outfits->findChild<LLInventoryPanel>("outfitslist_tab");
 		if (inventory_panel)
 		{
-			LLFolderView *folder = inventory_panel->getRootFolder();
-			LLFolderViewItem *outfit_folder = folder->getItemByID(outfit_link->getLinkedUUID());
+			LLFolderView* root = inventory_panel->getRootFolder();
+			LLFolderViewItem *outfit_folder = root->getItemByID(outfit_link->getLinkedUUID());
 			if (outfit_folder)
 			{
 				outfit_folder->setOpen(!outfit_folder->isOpen());
-				folder->setSelectionFromRoot(outfit_folder,TRUE);
-				folder->scrollToShowSelection();
+				root->setSelectionFromRoot(outfit_folder,TRUE);
+				root->scrollToShowSelection();
 			}
 		}
 	}
@@ -241,9 +239,9 @@ void LLSidepanelAppearance::onEditAppearanceButtonClicked()
 
 void LLSidepanelAppearance::onEditButtonClicked()
 {
-	toggleLookInfoPanel(FALSE);
+	toggleOutfitEditPanel(FALSE);
 	toggleWearableEditPanel(TRUE, NULL);
-	/*if (mLookInfo->getVisible())
+	/*if (mOutfitEdit->getVisible())
 	  {
 	  }
 	  else
@@ -254,7 +252,7 @@ void LLSidepanelAppearance::onEditButtonClicked()
 
 void LLSidepanelAppearance::onNewOutfitButtonClicked()
 {
-	if (!mLookInfo->getVisible())
+	if (!mOutfitEdit->getVisible())
 	{
 		mPanelOutfitsInventory->onSave();
 	}
@@ -263,22 +261,22 @@ void LLSidepanelAppearance::onNewOutfitButtonClicked()
 
 void LLSidepanelAppearance::onBackButtonClicked()
 {
-	toggleLookInfoPanel(FALSE);
+	toggleOutfitEditPanel(FALSE);
 }
 
 void LLSidepanelAppearance::onEditWearBackClicked()
 {
 	mEditWearable->saveChanges();
 	toggleWearableEditPanel(FALSE, NULL);
-	toggleLookInfoPanel(TRUE);
+	toggleOutfitEditPanel(TRUE);
 }
 
-void LLSidepanelAppearance::toggleLookInfoPanel(BOOL visible)
+void LLSidepanelAppearance::toggleOutfitEditPanel(BOOL visible)
 {
-	if (!mLookInfo)
+	if (!mOutfitEdit)
 		return;
 
-	mLookInfo->setVisible(visible);
+	mOutfitEdit->setVisible(visible);
 	if (mPanelOutfitsInventory) mPanelOutfitsInventory->setVisible(!visible);
 	mFilterEditor->setVisible(!visible);
 	mEditBtn->setVisible(!visible);
@@ -297,6 +295,8 @@ void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLWearable *we
 		return;
 	}
 
+	mCurrOutfitPanel->setVisible(!visible);
+
 	mEditWearable->setVisible(visible);
 	mEditWearable->setWearable(wearable);
 	mFilterEditor->setVisible(!visible);
@@ -305,7 +305,7 @@ void LLSidepanelAppearance::toggleWearableEditPanel(BOOL visible, LLWearable *we
 
 void LLSidepanelAppearance::updateVerbs()
 {
-	bool is_look_info_visible = mLookInfo->getVisible();
+	bool is_look_info_visible = mOutfitEdit->getVisible();
 
 	if (mPanelOutfitsInventory && !is_look_info_visible)
 	{
@@ -320,11 +320,11 @@ void LLSidepanelAppearance::updateVerbs()
 
 void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
 {
-	mOutfitDirtyTag->setVisible(LLAppearanceManager::getInstance()->isOutfitDirty());
+	mOutfitDirtyTag->setVisible(LLAppearanceMgr::getInstance()->isOutfitDirty());
 	if (name == "")
 	{
 		std::string outfit_name;
-		if (LLAppearanceManager::getInstance()->getBaseOutfitName(outfit_name))
+		if (LLAppearanceMgr::getInstance()->getBaseOutfitName(outfit_name))
 		{
 				mCurrentLookName->setText(outfit_name);
 				return;
@@ -344,7 +344,7 @@ void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
 void LLSidepanelAppearance::editWearable(LLWearable *wearable, void *data)
 {
 	LLSidepanelAppearance *panel = (LLSidepanelAppearance*) data;
-	panel->toggleLookInfoPanel(FALSE);
+	panel->toggleOutfitEditPanel(FALSE);
 	panel->toggleWearableEditPanel(TRUE, wearable);
 }
 
@@ -354,23 +354,24 @@ void LLSidepanelAppearance::fetchInventory()
 {
 
 	mNewOutfitBtn->setEnabled(false);
-	LLInventoryFetchObserver::item_ref_t ids;
+	uuid_vec_t ids;
 	LLUUID item_id;
 	for(S32 type = (S32)WT_SHAPE; type < (S32)WT_COUNT; ++type)
 	{
-		// MULTI_WEARABLE:
-		item_id = gAgentWearables.getWearableItemID((EWearableType)type,0);
-		if(item_id.notNull())
+		for (U32 index = 0; index < gAgentWearables.getWearableCount((EWearableType)type); ++index)
 		{
-			ids.push_back(item_id);
+			item_id = gAgentWearables.getWearableItemID((EWearableType)type, index);
+			if(item_id.notNull())
+			{
+				ids.push_back(item_id);
+			}
 		}
 	}
 
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if(avatarp)
+	if (isAgentAvatarValid())
 	{
-		for (LLVOAvatar::attachment_map_t::const_iterator iter = avatarp->mAttachmentPoints.begin(); 
-			 iter != avatarp->mAttachmentPoints.end(); ++iter)
+		for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
+			 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)
 		{
 			LLViewerJointAttachment* attachment = iter->second;
 			if (!attachment) continue;
@@ -388,7 +389,7 @@ void LLSidepanelAppearance::fetchInventory()
 	}
 
 	LLCurrentlyWornFetchObserver *fetch_worn = new LLCurrentlyWornFetchObserver(this);
-	fetch_worn->fetchItems(ids);
+	fetch_worn->fetch(ids);
 	// If no items to be fetched, done will never be triggered.
 	// TODO: Change LLInventoryFetchObserver::fetchItems to trigger done() on this condition.
 	if (fetch_worn->isEverythingComplete())
diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h
index aa2e67fd16f3e299b77dbd471842a46d1d2919f1..1d78e92a84e755f2d2dc34aaf3f2cd8e5762e053 100644
--- a/indra/newview/llsidepanelappearance.h
+++ b/indra/newview/llsidepanelappearance.h
@@ -36,7 +36,7 @@
 #include "llinventoryobserver.h"
 
 #include "llinventory.h"
-#include "llpanellookinfo.h"
+#include "llpaneloutfitedit.h"
 
 class LLFilterEditor;
 class LLCurrentlyWornFetchObserver;
@@ -71,12 +71,12 @@ class LLSidepanelAppearance : public LLPanel
 	void onEditButtonClicked();
 	void onBackButtonClicked();
 	void onEditWearBackClicked();
-	void toggleLookInfoPanel(BOOL visible);
+	void toggleOutfitEditPanel(BOOL visible);
 	void toggleWearableEditPanel(BOOL visible, LLWearable* wearable);
 
 	LLFilterEditor*			mFilterEditor;
 	LLPanelOutfitsInventory* mPanelOutfitsInventory;
-	LLPanelLookInfo*		mLookInfo;
+	LLPanelOutfitEdit*		mOutfitEdit;
 	LLPanelEditWearable*	mEditWearable;
 
 	LLButton*					mOpenOutfitBtn;
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 73880563d7d286e5e8e8595da6bca18965bac0b9..18e56a9c017b7ae5071d5427a3de155cc35010b2 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -161,7 +161,7 @@ void LLSidepanelInventory::performActionOnSelection(const std::string &action)
 	{
 		return;
 	}
-	current_item->getListener()->performAction(panel_main_inventory->getActivePanel()->getRootFolder(), panel_main_inventory->getActivePanel()->getModel(), action);
+	current_item->getListener()->performAction(panel_main_inventory->getActivePanel()->getModel(), action);
 }
 
 void LLSidepanelInventory::onWearButtonClicked()
diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp
index 0275736f6dc9ca1150e53abf1493e271279b302f..9b073943b434fc83cb1a4a1ac2c1c5e887daf843 100644
--- a/indra/newview/llsidepaneliteminfo.cpp
+++ b/indra/newview/llsidepaneliteminfo.cpp
@@ -40,6 +40,7 @@
 #include "llbutton.h"
 #include "llfloaterreg.h"
 #include "llgroupactions.h"
+#include "llinventorydefines.h"
 #include "llinventorymodel.h"
 #include "llinventoryobserver.h"
 #include "lllineeditor.h"
@@ -439,9 +440,9 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
 		if (item->getType() == LLAssetType::AT_OBJECT)
 		{
 			U32 flags = item->getFlags();
-			slam_perm 			= flags & LLInventoryItem::II_FLAGS_OBJECT_SLAM_PERM;
-			overwrite_everyone	= flags & LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
-			overwrite_group		= flags & LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
+			slam_perm 			= flags & LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_PERM;
+			overwrite_everyone	= flags & LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
+			overwrite_group		= flags & LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
 		}
 		
 		std::string perm_string;
@@ -752,7 +753,7 @@ void LLSidepanelItemInfo::onCommitPermissions()
 		if((perm.getMaskNextOwner()!=item->getPermissions().getMaskNextOwner())
 		   && (item->getType() == LLAssetType::AT_OBJECT))
 		{
-			flags |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_PERM;
+			flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_PERM;
 		}
 		// If everyone permissions have changed (and this is an object)
 		// then set the overwrite everyone permissions flag so they
@@ -760,7 +761,7 @@ void LLSidepanelItemInfo::onCommitPermissions()
 		if ((perm.getMaskEveryone()!=item->getPermissions().getMaskEveryone())
 			&& (item->getType() == LLAssetType::AT_OBJECT))
 		{
-			flags |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
+			flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_EVERYONE;
 		}
 		// If group permissions have changed (and this is an object)
 		// then set the overwrite group permissions flag so they
@@ -768,7 +769,7 @@ void LLSidepanelItemInfo::onCommitPermissions()
 		if ((perm.getMaskGroup()!=item->getPermissions().getMaskGroup())
 			&& (item->getType() == LLAssetType::AT_OBJECT))
 		{
-			flags |= LLInventoryItem::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
+			flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_PERM_OVERWRITE_GROUP;
 		}
 		new_item->setFlags(flags);
 		if(mObjectID.isNull())
@@ -880,7 +881,7 @@ void LLSidepanelItemInfo::updateSaleInfo()
 		if (item->getType() == LLAssetType::AT_OBJECT)
 		{
 			U32 flags = new_item->getFlags();
-			flags |= LLInventoryItem::II_FLAGS_OBJECT_SLAM_SALE;
+			flags |= LLInventoryItemFlags::II_FLAGS_OBJECT_SLAM_SALE;
 			new_item->setFlags(flags);
 		}
 
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp
index 6cf9c6b95d8d4dfc56d87860813a101a0e8b400e..4573520647b390b06c8c97f3f3de9dde2a00cf50 100644
--- a/indra/newview/llspeakers.cpp
+++ b/indra/newview/llspeakers.cpp
@@ -879,7 +879,7 @@ void LLLocalSpeakerMgr::updateSpeakerList()
 	}
 
 	// pick up non-voice speakers in chat range
-	std::vector<LLUUID> avatar_ids;
+	uuid_vec_t avatar_ids;
 	std::vector<LLVector3d> positions;
 	LLWorld::getInstance()->getAvatars(&avatar_ids, &positions, gAgent.getPositionGlobal(), CHAT_NORMAL_RADIUS);
 	for(U32 i=0; i<avatar_ids.size(); i++)
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index edd03dc83674afdb488d65319c7e77744e23370d..94a32873ecfb9165169d5e6ab5eaa76ddcfe1223 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -62,6 +62,7 @@
 #include "llimfloater.h"
 #include "lllocationhistory.h"
 #include "llimageworker.h"
+
 #include "llloginflags.h"
 #include "llmd5.h"
 #include "llmemorystream.h"
@@ -116,6 +117,7 @@
 #include "llimagebmp.h"
 #include "llinventorybridge.h"
 #include "llinventorymodel.h"
+#include "llinventorymodelbackgroundfetch.h"
 #include "llfriendcard.h"
 #include "llkeyboard.h"
 #include "llloginhandler.h"			// gLoginHandler, SLURL support
@@ -938,6 +940,9 @@ bool idle_startup()
 
 		// Load Avatars icons cache
 		LLAvatarIconIDCache::getInstance()->load();
+		
+		// Load media plugin cookies
+		LLViewerMedia::loadCookieFile();
 
 		//-------------------------------------------------
 		// Handle startup progress screen
@@ -1743,7 +1748,7 @@ bool idle_startup()
 			{
 				LL_DEBUGS("AppInit") << "Gesture Manager loading " << gesture_options.size()
 					<< LL_ENDL;
-				std::vector<LLUUID> item_ids;
+				uuid_vec_t item_ids;
 				for(LLSD::array_const_iterator resp_it = gesture_options.beginArray(),
 					end = gesture_options.endArray(); resp_it != end; ++resp_it)
 				{
@@ -1757,7 +1762,7 @@ bool idle_startup()
 						// Could schedule and delay these for later.
 						const BOOL no_inform_server = FALSE;
 						const BOOL no_deactivate_similar = FALSE;
-						LLGestureManager::instance().activateGestureWithAsset(item_id, asset_id,
+						LLGestureMgr::instance().activateGestureWithAsset(item_id, asset_id,
 											 no_inform_server,
 											 no_deactivate_similar);
 						// We need to fetch the inventory items for these gestures
@@ -1766,7 +1771,7 @@ bool idle_startup()
 					}
 				}
 				// no need to add gesture to inventory observer, it's already made in constructor 
-				LLGestureManager::instance().fetchItems(item_ids);
+				LLGestureMgr::instance().fetch(item_ids);
 			}
 		}
 		gDisplaySwapBuffers = TRUE;
@@ -1843,7 +1848,7 @@ bool idle_startup()
 		}
 
         //DEV-17797.  get null folder.  Any items found here moved to Lost and Found
-        LLInventoryModel::findLostItems();
+        LLInventoryModelBackgroundFetch::instance().findLostItems();
 
 		LLStartUp::setStartupState( STATE_PRECACHE );
 		timeout.reset();
@@ -1861,7 +1866,7 @@ bool idle_startup()
 		if (gAgent.isFirstLogin()
 			&& !sInitialOutfit.empty()    // registration set up an outfit
 			&& !sInitialOutfitGender.empty() // and a gender
-			&& gAgent.getAvatarObject()	  // can't wear clothes without object
+			&& isAgentAvatarValid()	  // can't wear clothes without object
 			&& !gAgent.isGenderChosen() ) // nothing already loading
 		{
 			// Start loading the wearables, textures, gestures
@@ -1869,7 +1874,7 @@ bool idle_startup()
 		}
 
 		// wait precache-delay and for agent's avatar or a lot longer.
-		if(((timeout_frac > 1.f) && gAgent.getAvatarObject())
+		if(((timeout_frac > 1.f) && isAgentAvatarValid())
 		   || (timeout_frac > 3.f))
 		{
 			LLStartUp::setStartupState( STATE_WEARABLES_WAIT );
@@ -1925,8 +1930,8 @@ bool idle_startup()
 		if (gAgent.isFirstLogin())
 		{
 			// wait for avatar to be completely loaded
-			if (gAgent.getAvatarObject()
-				&& gAgent.getAvatarObject()->isFullyLoaded())
+			if (isAgentAvatarValid()
+				&& gAgentAvatarp->isFullyLoaded())
 			{
 				//llinfos << "avatar fully loaded" << llendl;
 				LLStartUp::setStartupState( STATE_CLEANUP );
@@ -2533,7 +2538,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 	llinfos << "starting" << llendl;
 
 	// Not going through the processAgentInitialWearables path, so need to set this here.
-	LLAppearanceManager::instance().setAttachmentInvLinkEnable(true);
+	LLAppearanceMgr::instance().setAttachmentInvLinkEnable(true);
 	// Initiate creation of COF, since we're also bypassing that.
 	gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
 	
@@ -2564,13 +2569,13 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 		bool do_copy = true;
 		bool do_append = false;
 		LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id);
-		LLAppearanceManager::instance().wearInventoryCategory(cat, do_copy, do_append);
+		LLAppearanceMgr::instance().wearInventoryCategory(cat, do_copy, do_append);
 	}
 
 	// Copy gestures
 	LLUUID dst_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);
 	LLPointer<LLInventoryCallback> cb(NULL);
-	LLAppearanceManager *app_mgr = &(LLAppearanceManager::instance());
+	LLAppearanceMgr *app_mgr = &(LLAppearanceMgr::instance());
 
 	// - Copy gender-specific gestures.
 	LLUUID gestures_cat_id = findDescendentCategoryIDByName( 
@@ -2579,7 +2584,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 	if (gestures_cat_id.notNull())
 	{
 		callAfterCategoryFetch(gestures_cat_id,
-							   boost::bind(&LLAppearanceManager::shallowCopyCategory,
+							   boost::bind(&LLAppearanceMgr::shallowCopyCategory,
 										   app_mgr,
 										   gestures_cat_id,
 										   dst_id,
@@ -2593,7 +2598,7 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 	if (common_gestures_cat_id.notNull())
 	{
 		callAfterCategoryFetch(common_gestures_cat_id,
-							   boost::bind(&LLAppearanceManager::shallowCopyCategory,
+							   boost::bind(&LLAppearanceMgr::shallowCopyCategory,
 										   app_mgr,
 										   common_gestures_cat_id,
 										   dst_id,
@@ -3082,6 +3087,13 @@ bool process_login_success_response()
 		}
 	}
 
+	// Start the process of fetching the OpenID session cookie for this user login
+	std::string openid_url = response["openid_url"];
+	if(!openid_url.empty())
+	{
+		std::string openid_token = response["openid_token"];
+		LLViewerMedia::openIDSetup(openid_url, openid_token);
+	}
 
 	bool success = false;
 	// JC: gesture loading done below, when we have an asset system
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 3052134d4f673fb018d166a56e598df771fdd1b9..b660a2b8eaaac611d77e6d86d4233a006f735378 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -372,6 +372,8 @@ void LLStatusBar::setVisibleForMouselook(bool visible)
 	mTextTime->setVisible(visible);
 	getChild<LLUICtrl>("buycurrency")->setVisible(visible);
 	getChild<LLUICtrl>("buyL")->setVisible(visible);
+	mBtnVolume->setVisible(visible);
+	mMediaToggle->setVisible(visible);
 	mSGBandwidth->setVisible(visible);
 	mSGPacketLoss->setVisible(visible);
 	setBackgroundVisible(visible);
@@ -445,11 +447,9 @@ void LLStatusBar::setHealth(S32 health)
 	{
 		if (mHealth > (health + gSavedSettings.getF32("UISndHealthReductionThreshold")))
 		{
-			LLVOAvatar *me;
-
-			if ((me = gAgent.getAvatarObject()))
+			if (isAgentAvatarValid())
 			{
-				if (me->getSex() == SEX_FEMALE)
+				if (gAgentAvatarp->getSex() == SEX_FEMALE)
 				{
 					make_ui_sound("UISndHealthReductionF");
 				}
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index 66373feb938b0dbbfc71143bf0f622b2a03c4e6f..cbb030836e900057921971a6def51333fa3a4d0e 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -58,7 +58,8 @@ LLSysWellWindow::LLSysWellWindow(const LLSD& key) : LLTransientDockableFloater(N
 													mSysWellChiclet(NULL),
 													mSeparator(NULL),
 													NOTIFICATION_WELL_ANCHOR_NAME("notification_well_panel"),
-													IM_WELL_ANCHOR_NAME("im_well_panel")
+													IM_WELL_ANCHOR_NAME("im_well_panel"),
+													mIsReshapedByUser(false)
 
 {
 	mTypedItemsCount[IT_NOTIFICATION] = 0;
@@ -99,6 +100,13 @@ void LLSysWellWindow::setMinimized(BOOL minimize)
 	LLTransientDockableFloater::setMinimized(minimize);
 }
 
+//---------------------------------------------------------------------------------
+void LLSysWellWindow::handleReshape(const LLRect& rect, bool by_user)
+{
+	mIsReshapedByUser |= by_user; // mark floater that it is reshaped by user
+	LLTransientDockableFloater::handleReshape(rect, by_user);
+}
+
 //---------------------------------------------------------------------------------
 void LLSysWellWindow::onStartUpToastClick(S32 x, S32 y, MASK mask)
 {
@@ -211,7 +219,7 @@ void LLSysWellWindow::reshapeWindow()
 	// it includes height from floater top to list top and from floater bottom and list bottom
 	static S32 parent_list_delta_height = getRect().getHeight() - mMessageList->getRect().getHeight();
 
-	if (isDocked()) // Don't reshape undocked Well window. See EXT-5715.
+	if (!mIsReshapedByUser) // Don't reshape Well window, if it ever was reshaped by user. See EXT-5715.
 	{
 		S32 notif_list_height = mMessageList->getItemsRect().getHeight() + 2 * mMessageList->getBorderWidth();
 
diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h
index 3790aa3ea9d8f978e262680c31dde63e55a8efea..296bdf7482dd5d2796068ee94e75267020183638 100644
--- a/indra/newview/llsyswellwindow.h
+++ b/indra/newview/llsyswellwindow.h
@@ -70,6 +70,7 @@ class LLSysWellWindow : public LLTransientDockableFloater
 	/*virtual*/ void	setDocked(bool docked, bool pop_on_undock = true);
 	// override LLFloater's minimization according to EXT-1216
 	/*virtual*/ void	setMinimized(BOOL minimize);
+	/*virtual*/ void	handleReshape(const LLRect& rect, bool by_user);
 
 	void onStartUpToastClick(S32 x, S32 y, MASK mask);
 
@@ -121,7 +122,7 @@ class LLSysWellWindow : public LLTransientDockableFloater
 
 	typedef std::map<EItemType, S32> typed_items_count_t;
 	typed_items_count_t mTypedItemsCount;
-
+	bool mIsReshapedByUser;
 };
 
 /**
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index 21c928282a295c313684bb0c71f7f6d27874da1f..3f4dab4feac46f93a98025f7d2c261f95cb01484 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -284,8 +284,6 @@ void LLTexLayerSetBuffer::readBackAndUpload()
 	llinfos << "Baked " << mTexLayerSet->getBodyRegion() << llendl;
 	LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_BAKES);
 
-	llassert( gAgent.getAvatarObject() == mTexLayerSet->getAvatar() );
-
 	// We won't need our caches since we're baked now.  (Techically, we won't 
 	// really be baked until this image is sent to the server and the Avatar
 	// Appearance message is received.)
@@ -352,7 +350,7 @@ void LLTexLayerSetBuffer::readBackAndUpload()
 			{
 				// baked_upload_data is owned by the responder and deleted after the request completes
 				LLBakedUploadData* baked_upload_data =
-					new LLBakedUploadData(gAgent.getAvatarObject(), this->mTexLayerSet, asset_id);
+					new LLBakedUploadData(gAgentAvatarp, this->mTexLayerSet, asset_id);
 				mUploadID = asset_id;
 				
 				// upload the image
@@ -409,12 +407,10 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
 {
 	LLBakedUploadData* baked_upload_data = (LLBakedUploadData*)userdata;
 
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-
 	if (0 == result &&
-		avatarp &&
-		!avatarp->isDead() &&
-		baked_upload_data->mAvatar == avatarp && // Sanity check: only the user's avatar should be uploading textures.
+		isAgentAvatarValid() &&
+		!gAgentAvatarp->isDead() &&
+		baked_upload_data->mAvatar == gAgentAvatarp && // Sanity check: only the user's avatar should be uploading textures.
 		baked_upload_data->mTexLayerSet->hasComposite()
 		)
 	{
@@ -439,11 +435,11 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
 
 			if (result >= 0)
 			{
-				LLVOAvatarDefines::ETextureIndex baked_te = avatarp->getBakedTE(layerset_buffer->mTexLayerSet);
+				LLVOAvatarDefines::ETextureIndex baked_te = gAgentAvatarp->getBakedTE(layerset_buffer->mTexLayerSet);
 				// Update baked texture info with the new UUID
 				U64 now = LLFrameTimer::getTotalTime();		// Record starting time
 				llinfos << "Baked texture upload took " << (S32)((now - baked_upload_data->mStartTime) / 1000) << " ms" << llendl;
-				avatarp->setNewBakedTexture(baked_te, uuid);
+				gAgentAvatarp->setNewBakedTexture(baked_te, uuid);
 			}
 			else
 			{	
@@ -457,7 +453,7 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
 			llinfos << "Received baked texture out of date, ignored." << llendl;
 		}
 
-		avatarp->dirtyMesh();
+		gAgentAvatarp->dirtyMesh();
 	}
 	else
 	{
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 7a0712f8aaf14c90e058d0ca97b128ba26c309de..651070a2eab9d32b62b28052aff6da2e90edce50 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -852,8 +852,8 @@ bool LLTextureCache::updateTextureEntryList(const LLUUID& id, S32 bodysize)
 			}			
 			else if (oldbodysize != entry.mBodySize)
 			{
-				// TODO: change to llwarns
-				llerrs << "Entry mismatch in mTextureSizeMap / mHeaderIDMap"
+				// only happens to 64 bits systems, do not know why.
+				llwarns << "Entry mismatch in mTextureSizeMap / mHeaderIDMap"
 					   << " idx=" << idx << " oldsize=" << oldbodysize << " entrysize=" << entry.mBodySize << llendl;
 			}
 			updateEntry(idx, entry, entry.mImageSize, bodysize);			
@@ -1108,7 +1108,16 @@ S32 LLTextureCache::openAndReadEntry(const LLUUID& id, Entry& entry, bool create
 		{
 			readEntryFromHeaderImmediately(idx, entry) ;
 		}
-		llassert_always(entry.mImageSize > entry.mBodySize);
+		if(entry.mImageSize <= entry.mBodySize)//it happens on 64-bit systems, do not know why
+		{
+			llwarns << "corrupted entry: " << id << " entry image size: " << entry.mImageSize << " entry body size: " << entry.mBodySize << llendl ;
+
+			//erase this entry and the cached texture from the cache.
+			std::string tex_filename = getTextureFileName(id);
+			removeEntry(idx, entry, tex_filename) ;
+			mUpdatedEntryMap.erase(idx) ;
+			idx = -1 ;
+		}
 	}
 	return idx;
 }
@@ -1221,9 +1230,17 @@ U32 LLTextureCache::openAndReadEntries(std::vector<Entry>& entries)
 	mFreeList.clear();
 	mTexturesSizeTotal = 0;
 
-	LLAPRFile* aprfile = openHeaderEntriesFile(true, 0);
-	updatedHeaderEntriesFile() ;
-	aprfile->seek(APR_SET, (S32)sizeof(EntriesInfo));
+	LLAPRFile* aprfile = NULL; 
+	if(mUpdatedEntryMap.empty())
+	{
+		aprfile = openHeaderEntriesFile(true, (S32)sizeof(EntriesInfo));
+	}
+	else //update the header file first.
+	{
+		aprfile = openHeaderEntriesFile(false, 0);
+		updatedHeaderEntriesFile() ;
+		aprfile->seek(APR_SET, (S32)sizeof(EntriesInfo));
+	}
 	for (U32 idx=0; idx<num_entries; idx++)
 	{
 		Entry entry;
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index 2b846d33fcdf408b322616c101363246506ab363..a1b3c8dabd5e52c50a1093e87564206e08c5d611 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -48,6 +48,7 @@
 #include "llfoldervieweventlistener.h"
 #include "llinventory.h"
 #include "llinventoryfunctions.h"
+#include "llinventorymodelbackgroundfetch.h"
 #include "llinventoryobserver.h"
 #include "llinventorypanel.h"
 #include "llfloaterinventory.h"
@@ -1053,7 +1054,7 @@ class LLTextureFetchDescendentsObserver : public LLInventoryFetchDescendentsObse
 	{
 		// We need to find textures in all folders, so get the main
 		// background download going.
-		gInventory.startBackgroundFetch();
+		LLInventoryModelBackgroundFetch::instance().start();
 		gInventory.removeObserver(this);
 		delete this;
 	}
@@ -1074,9 +1075,9 @@ BOOL LLTextureCtrl::handleMouseDown(S32 x, S32 y, MASK mask)
 	{
 		showPicker(FALSE);
 		//grab textures first...
-		gInventory.startBackgroundFetch(gInventory.findCategoryUUIDForType(LLFolderType::FT_TEXTURE));
+		LLInventoryModelBackgroundFetch::instance().start(gInventory.findCategoryUUIDForType(LLFolderType::FT_TEXTURE));
 		//...then start full inventory fetch.
-		gInventory.startBackgroundFetch();
+		LLInventoryModelBackgroundFetch::instance().start();
 		handled = TRUE;
 	}
 
diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp
index 60a89c02e4c71c97f5b7e3e8c84cfa0d8148c294..60657d3fa7ee1eed2716da2882db8841594dcc52 100644
--- a/indra/newview/lltoast.cpp
+++ b/indra/newview/lltoast.cpp
@@ -41,6 +41,16 @@
 
 using namespace LLNotificationsUI;
 
+/*virtual*/
+BOOL LLToastLifeTimer::tick()
+{
+	if (mEventTimer.hasExpired())
+	{
+		mToast->expire();
+	}
+	return FALSE;
+}
+
 //--------------------------------------------------------------------------
 LLToast::Params::Params() 
 :	can_fade("can_fade", true),
@@ -57,7 +67,6 @@ LLToast::Params::Params()
 LLToast::LLToast(const LLToast::Params& p) 
 :	LLModalDialog(LLSD(), p.is_modal),
 	mPanel(p.panel), 
-	mToastLifetime(p.lifetime_secs),
 	mToastFadingTime(p.fading_time_secs),
 	mNotificationID(p.notif_id),  
 	mSessionID(p.session_id),
@@ -71,6 +80,8 @@ LLToast::LLToast(const LLToast::Params& p)
 	mIsTip(p.is_tip),
 	mWrapperPanel(NULL)
 {
+	mTimer.reset(new LLToastLifeTimer(this, p.lifetime_secs));
+
 	LLUICtrlFactory::getInstance()->buildFloater(this, "panel_toast.xml", NULL);
 
 	setCanDrag(FALSE);
@@ -105,7 +116,7 @@ BOOL LLToast::postBuild()
 {
 	if(!mCanFade)
 	{
-		mTimer.stop();
+		mTimer->stop();
 	}
 
 	if (mIsTip)
@@ -144,39 +155,11 @@ LLToast::~LLToast()
 	mOnToastDestroyedSignal(this);
 }
 
-//--------------------------------------------------------------------------
-void LLToast::setAndStartTimer(F32 period)
-{
-	if(mCanFade)
-	{
-		mToastLifetime = period;
-		mTimer.start();
-	}
-}
-
-//--------------------------------------------------------------------------
-bool LLToast::lifetimeHasExpired()
-{
-	if (mTimer.getStarted())
-	{
-		F32 elapsed_time = mTimer.getElapsedTimeF32();
-		if ((mToastLifetime - elapsed_time) <= mToastFadingTime) 
-		{
-			setBackgroundOpaque(FALSE);
-		}
-		if (elapsed_time > mToastLifetime) 
-		{
-			return true;
-		}
-	}
-	return false;
-}
-
 //--------------------------------------------------------------------------
 void LLToast::hide()
 {
 	setVisible(FALSE);
-	mTimer.stop();
+	mTimer->stop();
 	mIsHidden = true;
 	mOnFadeSignal(this); 
 }
@@ -222,12 +205,13 @@ void LLToast::setCanFade(bool can_fade)
 { 
 	mCanFade = can_fade; 
 	if(!mCanFade)
-		mTimer.stop();
+		mTimer->stop();
 }
 
 //--------------------------------------------------------------------------
-void LLToast::tick()
+void LLToast::expire()
 {
+	// if toast has fade property - hide it
 	if(mCanFade)
 	{
 		hide();
@@ -263,11 +247,6 @@ void LLToast::insertPanel(LLPanel* panel)
 //--------------------------------------------------------------------------
 void LLToast::draw()
 {
-	if(lifetimeHasExpired())
-	{
-		tick();
-	}
-
 	LLFloater::draw();
 
 	if(!isBackgroundVisible())
@@ -300,9 +279,9 @@ void LLToast::setVisible(BOOL show)
 	if(show)
 	{
 		setBackgroundOpaque(TRUE);
-		if(!mTimer.getStarted() && mCanFade)
+		if(!mTimer->getStarted() && mCanFade)
 		{
-			mTimer.start();
+			mTimer->start();
 		}
 		LLModalDialog::setFrontmost(FALSE);
 	}
diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h
index 64855020a98143cdd18874e2c29652fd42003526..20198a9398461a69ae41e2a68dedcb60cbb018f4 100644
--- a/indra/newview/lltoast.h
+++ b/indra/newview/lltoast.h
@@ -36,7 +36,7 @@
 
 #include "llpanel.h"
 #include "llmodaldialog.h"
-#include "lltimer.h"
+#include "lleventtimer.h"
 #include "llnotificationptr.h"
 
 #include "llviewercontrol.h"
@@ -48,12 +48,32 @@
 namespace LLNotificationsUI
 {
 
+class LLToast;
+/**
+ * Timer for toasts.
+ */
+class LLToastLifeTimer: public LLEventTimer
+{
+public:
+	LLToastLifeTimer(LLToast* toast, F32 period) : mToast(toast), LLEventTimer(period){}
+
+	/*virtual*/
+	BOOL tick();
+	void stop() { mEventTimer.stop(); }
+	void start() { mEventTimer.start(); }
+	void restart() {mEventTimer.reset(); }
+	BOOL getStarted() { return mEventTimer.getStarted(); }
+private :
+	LLToast* mToast;
+};
+
 /**
  * Represents toast pop-up.
  * This is a parent view for all toast panels.
  */
 class LLToast : public LLModalDialog
 {
+	friend class LLToastLifeTimer;
 public:
 	typedef boost::function<void (LLToast* toast)> toast_callback_t;
 	typedef boost::signals2::signal<void (LLToast* toast)> toast_signal_t;
@@ -107,12 +127,10 @@ class LLToast : public LLModalDialog
 	LLPanel* getPanel() { return mPanel; }
 	// enable/disable Toast's Hide button
 	void setHideButtonEnabled(bool enabled);
-	// initialize and start Toast's timer
-	void setAndStartTimer(F32 period);
 	// 
-	void resetTimer() { mTimer.start(); }
+	void resetTimer() { mTimer->start(); }
 	//
-	void stopTimer() { mTimer.stop(); }
+	void stopTimer() { mTimer->stop(); }
 	//
 	virtual void draw();
 	//
@@ -176,10 +194,7 @@ class LLToast : public LLModalDialog
 
 	void handleTipToastClick(S32 x, S32 y, MASK mask);
 
-	// check timer
-	bool	lifetimeHasExpired();
-	// on timer finished function
-	void	tick();
+	void	expire();
 
 	LLUUID				mNotificationID;
 	LLUUID				mSessionID;
@@ -188,8 +203,8 @@ class LLToast : public LLModalDialog
 	LLPanel* mWrapperPanel;
 
 	// timer counts a lifetime of a toast
-	LLTimer		mTimer;
-	F32			mToastLifetime; // in seconds
+	std::auto_ptr<LLToastLifeTimer> mTimer;
+
 	F32			mToastFadingTime; // in seconds
 
 	LLPanel*		mPanel;
diff --git a/indra/newview/lltoastalertpanel.cpp b/indra/newview/lltoastalertpanel.cpp
index c3ccb9380b0b9b9af158313f699bf147e87209a6..986ccdf19bd113815e96b590dbba100c430639d1 100644
--- a/indra/newview/lltoastalertpanel.cpp
+++ b/indra/newview/lltoastalertpanel.cpp
@@ -281,9 +281,6 @@ LLToastAlertPanel::LLToastAlertPanel( LLNotificationPtr notification, bool modal
 			mLineEditor->setText(edit_text_contents);
 			mLineEditor->setMaxTextLength(STD_STRING_STR_LEN - 1);
 
-			// make sure all edit keys get handled properly (DEV-22396)
-			mLineEditor->setHandleEditKeysDirectly(TRUE);
-
 			LLToastPanel::addChild(mLineEditor);
 
 			mLineEditor->setDrawAsterixes(is_password);
diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp
index 907740a88e27f46ec826b79df6b498a08c234029..c9d2d404c0504edc4a9dedb650c89c79b7182970 100644
--- a/indra/newview/lltoastnotifypanel.cpp
+++ b/indra/newview/lltoastnotifypanel.cpp
@@ -45,6 +45,7 @@
 #include "lltrans.h"
 #include "llnotificationsutil.h"
 #include "llviewermessage.h"
+#include "llimfloater.h"
 
 const S32 BOTTOM_PAD = VPAD * 3;
 const S32 IGNORE_BTN_TOP_DELTA = 3*VPAD;//additional ignore_btn padding
@@ -531,12 +532,26 @@ void LLToastNotifyPanel::disableRespondedOptions(LLNotificationPtr& notification
 
 //////////////////////////////////////////////////////////////////////////
 
-LLIMToastNotifyPanel::LLIMToastNotifyPanel(LLNotificationPtr& pNotification, const LLRect& rect /* = LLRect::null */)
- : LLToastNotifyPanel(pNotification, rect)
+LLIMToastNotifyPanel::LLIMToastNotifyPanel(LLNotificationPtr& pNotification, const LLUUID& session_id, const LLRect& rect /* = LLRect::null */)
+ : mSessionID(session_id), LLToastNotifyPanel(pNotification, rect)
 {
 	mTextBox->setFollowsAll();
 }
 
+LLIMToastNotifyPanel::~LLIMToastNotifyPanel()
+{
+	// We shouldn't delete notification when IM floater exists
+	// since that notification will be reused by IM floater.
+	// This may happened when IM floater reloads messages, exactly when user
+	// changes layout of IM chat log(disable/enable plaintext mode).
+	// See EXT-6500
+	LLIMFloater* im_floater = LLIMFloater::findInstance(mSessionID);
+	if (im_floater != NULL && !im_floater->isDead())
+	{
+		mCloseNotificationOnDestroy = false;
+	}
+}
+
 void LLIMToastNotifyPanel::reshape(S32 width, S32 height, BOOL called_from_parent /* = TRUE */)
 {
 	S32 text_height = mTextBox->getTextBoundingRect().getHeight();
diff --git a/indra/newview/lltoastnotifypanel.h b/indra/newview/lltoastnotifypanel.h
index a8d2d0323614ee041737951316a700004403ee94..1c68e4c6b3dd61758b3ad013ab216ef3601731f1 100644
--- a/indra/newview/lltoastnotifypanel.h
+++ b/indra/newview/lltoastnotifypanel.h
@@ -138,9 +138,14 @@ class LLIMToastNotifyPanel : public LLToastNotifyPanel
 {
 public:
 
-	LLIMToastNotifyPanel(LLNotificationPtr& pNotification, const LLRect& rect = LLRect::null);
+	LLIMToastNotifyPanel(LLNotificationPtr& pNotification, const LLUUID& session_id, const LLRect& rect = LLRect::null);
+
+	~LLIMToastNotifyPanel();
 
 	/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
+
+protected:
+	LLUUID	mSessionID;
 };
 
 #endif /* LLTOASTNOTIFYPANEL_H_ */
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index 813b3bd22f216250d2ba2e7dd825947cd7a3faea..1e81e675e601130c5ffe6ebdce55e1b082dab90a 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -50,6 +50,8 @@
 #include "llhudeffecttrail.h"
 #include "llimview.h"
 #include "llinventorybridge.h"
+#include "llinventorydefines.h"
+#include "llinventoryfunctions.h"
 #include "llmutelist.h"
 #include "llpreviewnotecard.h"
 #include "llrecentpeople.h"
@@ -80,7 +82,7 @@ class LLNoPreferredType : public LLInventoryCollectFunctor
 	virtual bool operator()(LLInventoryCategory* cat,
 							LLInventoryItem* item)
 	{
-		if(cat && (cat->getPreferredType() == LLFolderType::FT_NONE))
+		if (cat && (cat->getPreferredType() == LLFolderType::FT_NONE))
 		{
 			return true;
 		}
@@ -96,8 +98,8 @@ class LLNoPreferredTypeOrItem : public LLInventoryCollectFunctor
 	virtual bool operator()(LLInventoryCategory* cat,
 							LLInventoryItem* item)
 	{
-		if(item) return true;
-		if(cat && (cat->getPreferredType() == LLFolderType::FT_NONE))
+		if (item) return true;
+		if (cat && (cat->getPreferredType() == LLFolderType::FT_NONE))
 		{
 			return true;
 		}
@@ -124,18 +126,18 @@ bool LLDroppableItem::operator()(LLInventoryCategory* cat,
 				 LLInventoryItem* item)
 {
 	bool allowed = false;
-	if(item)
+	if (item)
 	{
 		allowed = itemTransferCommonlyAllowed(item);
 
-		if(allowed
+		if (allowed
 		   && mIsTransfer
 		   && !item->getPermissions().allowOperationBy(PERM_TRANSFER,
 							       gAgent.getID()))
 		{
 			allowed = false;
 		}
-		if(allowed && !item->getPermissions().allowCopyBy(gAgent.getID()))
+		if (allowed && !item->getPermissions().allowCopyBy(gAgent.getID()))
 		{
 			++mCountLosing;
 		}
@@ -155,7 +157,7 @@ bool LLUncopyableItems::operator()(LLInventoryCategory* cat,
 				   LLInventoryItem* item)
 {
 	bool uncopyable = false;
-	if(item)
+	if (item)
 	{
 		if (itemTransferCommonlyAllowed(item) &&
 		   !item->getPermissions().allowCopyBy(gAgent.getID()))
@@ -180,10 +182,10 @@ bool LLDropCopyableItems::operator()(
 	LLInventoryItem* item)
 {
 	bool allowed = false;
-	if(item)
+	if (item)
 	{
 		allowed = itemTransferCommonlyAllowed(item);
-		if(allowed &&
+		if (allowed &&
 		   !item->getPermissions().allowCopyBy(gAgent.getID()))
 		{
 			// whoops, can't copy it - don't allow it.
@@ -212,16 +214,16 @@ bool LLGiveable::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
 		return true;
 
 	bool allowed = false;
-	if(item)
+	if (item)
 	{
 		allowed = itemTransferCommonlyAllowed(item);
-		if(allowed &&
+		if (allowed &&
 		   !item->getPermissions().allowOperationBy(PERM_TRANSFER,
 							    gAgent.getID()))
 		{
 			allowed = FALSE;
 		}
-		if(allowed &&
+		if (allowed &&
 		   !item->getPermissions().allowCopyBy(gAgent.getID()))
 		{
 			++mCountLosing;
@@ -262,16 +264,16 @@ void LLCategoryDropObserver::done()
 {
 	gInventory.removeObserver(this);
 	LLViewerObject* dst_obj = gObjectList.findObject(mObjectID);
-	if(dst_obj)
+	if (dst_obj)
 	{
 		// *FIX: coalesce these...
  		LLInventoryItem* item = NULL;
-  		item_ref_t::iterator it = mComplete.begin();
-  		item_ref_t::iterator end = mComplete.end();
+  		uuid_vec_t::iterator it = mComplete.begin();
+  		uuid_vec_t::iterator end = mComplete.end();
   		for(; it < end; ++it)
   		{
  			item = gInventory.getItem(*it);
- 			if(item)
+ 			if (item)
  			{
  				LLToolDragAndDrop::dropInventory(
  					dst_obj,
@@ -304,8 +306,8 @@ void LLCategoryDropDescendentsObserver::done()
 {
 
 	gInventory.removeObserver(this);
-	folder_ref_t::iterator it = mCompleteFolders.begin();
-	folder_ref_t::iterator end = mCompleteFolders.end();
+	uuid_vec_t::iterator it = mComplete.begin();
+	uuid_vec_t::iterator end = mComplete.end();
 	LLViewerInventoryCategory::cat_array_t cats;
 	LLViewerInventoryItem::item_array_t items;
 	for(; it != end; ++it)
@@ -318,20 +320,20 @@ void LLCategoryDropDescendentsObserver::done()
 	}
 
 	S32 count = items.count();
-	if(count)
+	if (count)
 	{
 		std::set<LLUUID> unique_ids;
 		for(S32 i = 0; i < count; ++i)
 		{
 			unique_ids.insert(items.get(i)->getUUID());
 		}
-		LLInventoryFetchObserver::item_ref_t ids;
-		std::back_insert_iterator<LLInventoryFetchObserver::item_ref_t> copier(ids);
+		uuid_vec_t ids;
+		std::back_insert_iterator<uuid_vec_t> copier(ids);
 		std::copy(unique_ids.begin(), unique_ids.end(), copier);
 		LLCategoryDropObserver* dropper;
 		dropper = new LLCategoryDropObserver(mObjectID, mSource);
-		dropper->fetchItems(ids);
-		if(dropper->isEverythingComplete())
+		dropper->fetch(ids);
+		if (dropper->isEverythingComplete())
 		{
 			dropper->done();
 		}
@@ -411,9 +413,12 @@ void LLToolDragAndDrop::setDragStart(S32 x, S32 y)
 
 BOOL LLToolDragAndDrop::isOverThreshold(S32 x,S32 y)
 {
-	const S32 MIN_MANHATTAN_DIST = 3;
-	S32 manhattan_dist = llabs( x - mDragStartX ) + llabs( y - mDragStartY );
-	return manhattan_dist >= MIN_MANHATTAN_DIST;
+	static LLCachedControl<S32> drag_and_drop_threshold(gSavedSettings,"DragAndDropDistanceThreshold");
+	
+	S32 mouse_delta_x = x - mDragStartX;
+	S32 mouse_delta_y = y - mDragStartY;
+	
+	return (mouse_delta_x * mouse_delta_x) + (mouse_delta_y * mouse_delta_y) > drag_and_drop_threshold * drag_and_drop_threshold;
 }
 
 void LLToolDragAndDrop::beginDrag(EDragAndDropType type,
@@ -422,7 +427,7 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,
 								  const LLUUID& source_id,
 								  const LLUUID& object_id)
 {
-	if(type == DAD_NONE)
+	if (type == DAD_NONE)
 	{
 		llwarns << "Attempted to start drag without a cargo type" << llendl;
 		return;
@@ -438,24 +443,24 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,
 	setMouseCapture( TRUE );
 	LLToolMgr::getInstance()->setTransientTool( this );
 	mCursor = UI_CURSOR_NO;
-	if((mCargoTypes[0] == DAD_CATEGORY)
+	if ((mCargoTypes[0] == DAD_CATEGORY)
 	   && ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY)))
 	{
 		LLInventoryCategory* cat = gInventory.getCategory(cargo_id);
 		// go ahead and fire & forget the descendents if we are not
 		// dragging a protected folder.
-		if(cat)
+		if (cat)
 		{
 			LLViewerInventoryCategory::cat_array_t cats;
 			LLViewerInventoryItem::item_array_t items;
 			LLNoPreferredTypeOrItem is_not_preferred;
-			LLInventoryFetchComboObserver::folder_ref_t folder_ids;
-			LLInventoryFetchComboObserver::item_ref_t item_ids;
-			if(is_not_preferred(cat, NULL))
+			uuid_vec_t folder_ids;
+			uuid_vec_t item_ids;
+			if (is_not_preferred(cat, NULL))
 			{
 				folder_ids.push_back(cargo_id);
 			}
-			gInventory.collectDescendentsIf(
+			gInventory.collectDescendentsIf (
 				cargo_id,
 				cats,
 				items,
@@ -472,7 +477,7 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,
 			{
 				item_ids.push_back(items.get(i)->getUUID());
 			}
-			if(!folder_ids.empty() || !item_ids.empty())
+			if (!folder_ids.empty() || !item_ids.empty())
 			{
 				LLCategoryFireAndForget fetcher;
 				fetcher.fetch(folder_ids, item_ids);
@@ -483,7 +488,7 @@ void LLToolDragAndDrop::beginDrag(EDragAndDropType type,
 
 void LLToolDragAndDrop::beginMultiDrag(
 	const std::vector<EDragAndDropType> types,
-	const std::vector<LLUUID>& cargo_ids,
+	const uuid_vec_t& cargo_ids,
 	ESource source,
 	const LLUUID& source_id)
 {
@@ -493,7 +498,7 @@ void LLToolDragAndDrop::beginMultiDrag(
 	std::vector<EDragAndDropType>::const_iterator types_it;
 	for (types_it = types.begin(); types_it != types.end(); ++types_it)
 	{
-		if(DAD_NONE == *types_it)
+		if (DAD_NONE == *types_it)
 		{
 			llwarns << "Attempted to start drag without a cargo type" << llendl;
 			return;
@@ -507,7 +512,7 @@ void LLToolDragAndDrop::beginMultiDrag(
 	setMouseCapture( TRUE );
 	LLToolMgr::getInstance()->setTransientTool( this );
 	mCursor = UI_CURSOR_NO;
-	if((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))
+	if ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))
 	{
 		// find categories (i.e. inventory folders) in the cargo.
 		LLInventoryCategory* cat = NULL;
@@ -516,16 +521,16 @@ void LLToolDragAndDrop::beginMultiDrag(
 		for(S32 i = 0; i < count; ++i)
 		{
 			cat = gInventory.getCategory(cargo_ids[i]);
-			if(cat)
+			if (cat)
 			{
 				LLViewerInventoryCategory::cat_array_t cats;
 				LLViewerInventoryItem::item_array_t items;
 				LLNoPreferredType is_not_preferred;
-				if(is_not_preferred(cat, NULL))
+				if (is_not_preferred(cat, NULL))
 				{
 					cat_ids.insert(cat->getUUID());
 				}
-				gInventory.collectDescendentsIf(
+				gInventory.collectDescendentsIf (
 					cat->getUUID(),
 					cats,
 					items,
@@ -538,11 +543,11 @@ void LLToolDragAndDrop::beginMultiDrag(
 				}
 			}
 		}
-		if(!cat_ids.empty())
+		if (!cat_ids.empty())
 		{
-			LLInventoryFetchComboObserver::folder_ref_t folder_ids;
-			LLInventoryFetchComboObserver::item_ref_t item_ids;
-			std::back_insert_iterator<LLInventoryFetchDescendentsObserver::folder_ref_t> copier(folder_ids);
+			uuid_vec_t folder_ids;
+			uuid_vec_t item_ids;
+			std::back_insert_iterator<uuid_vec_t> copier(folder_ids);
 			std::copy(cat_ids.begin(), cat_ids.end(), copier);
 			LLCategoryFireAndForget fetcher;
 			fetcher.fetch(folder_ids, item_ids);
@@ -570,7 +575,7 @@ void LLToolDragAndDrop::onMouseCaptureLost()
 
 BOOL LLToolDragAndDrop::handleMouseUp( S32 x, S32 y, MASK mask )
 {
-	if( hasMouseCapture() )
+	if (hasMouseCapture())
 	{
 		EAcceptance acceptance = ACCEPT_NO;
 		dragOrDrop( x, y, mask, TRUE, &acceptance );
@@ -581,7 +586,7 @@ BOOL LLToolDragAndDrop::handleMouseUp( S32 x, S32 y, MASK mask )
 
 ECursorType LLToolDragAndDrop::acceptanceToCursor( EAcceptance acceptance )
 {
-	switch( acceptance )
+	switch (acceptance)
 	{
 	case ACCEPT_YES_MULTI:
 		if (mCargoIDs.size() > 1)
@@ -698,7 +703,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,
 
 	mToolTipMsg.clear();
 
-	if(top_view)
+	if (top_view)
 	{
 		handled = TRUE;
 
@@ -763,7 +768,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,
 		}
 	}
 
-	if(!handled)
+	if (!handled)
 	{
 		handled = TRUE;
 
@@ -821,7 +826,7 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,
 		}
 	}
 
-	if ( !handled )
+	if (!handled)
 	{
 		dragOrDrop3D( x, y, mask, drop, acceptance );
 	}
@@ -874,7 +879,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
 		if (hit_obj->isAttachment() && !hit_obj->isHUDAttachment())
 		{
 			LLVOAvatar* avatar = LLVOAvatar::findAvatarFromAttachment( hit_obj );
-			if( !avatar )
+			if (!avatar)
 			{
 				mLastAccept = ACCEPT_NO;
 				mCursor = UI_CURSOR_NO;
@@ -886,7 +891,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
 
 		if (hit_obj->isAvatar())
 		{
-			if(((LLVOAvatar*) hit_obj)->isSelf())
+			if (((LLVOAvatar*) hit_obj)->isSelf())
 			{
 				target = DT_SELF;
 				hit_face = -1;
@@ -972,7 +977,7 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,
 	// Always succeed if....
 	// texture is from the library 
 	// or already in the contents of the object
-	if(SOURCE_LIBRARY == source)
+	if (SOURCE_LIBRARY == source)
 	{
 		// dropping a texture from the library always just works.
 		return TRUE;
@@ -1000,7 +1005,7 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,
 	if (!item) return FALSE;
 	
 	LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
-	if(!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID()))
+	if (!item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID()))
 	{
 		// Check that we can add the texture as inventory to the object
 		if (willObjectAcceptInventory(hit_obj,item) < ACCEPT_YES_COPY_SINGLE )
@@ -1008,20 +1013,20 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,
 			return FALSE;
 		}
 		// make sure the object has the texture in it's inventory.
-		if(SOURCE_AGENT == source)
+		if (SOURCE_AGENT == source)
 		{
 			// Remove the texture from local inventory. The server
 			// will actually remove the item from agent inventory.
 			gInventory.deleteObject(item->getUUID());
 			gInventory.notifyObservers();
 		}
-		else if(SOURCE_WORLD == source)
+		else if (SOURCE_WORLD == source)
 		{
 			// *FIX: if the objects are in different regions, and the
 			// source region has crashed, you can bypass these
 			// permissions.
 			LLViewerObject* src_obj = gObjectList.findObject(src_id);
-			if(src_obj)
+			if (src_obj)
 			{
 				src_obj->removeInventory(item->getUUID());
 			}
@@ -1036,7 +1041,7 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,
  		// TODO: Check to see if adding the item was successful; if not, then
 		// we should return false here.
 	}
-	else if(!item->getPermissions().allowOperationBy(PERM_TRANSFER,
+	else if (!item->getPermissions().allowOperationBy(PERM_TRANSFER,
 													 gAgent.getID()))
 	{
 		// Check that we can add the texture as inventory to the object
@@ -1068,7 +1073,7 @@ void LLToolDragAndDrop::dropTextureAllFaces(LLViewerObject* hit_obj,
 	}
 	LLUUID asset_id = item->getAssetUUID();
 	BOOL success = handleDropTextureProtections(hit_obj, item, source, src_id);
-	if(!success)
+	if (!success)
 	{
 		return;
 	}
@@ -1110,7 +1115,7 @@ void LLToolDragAndDrop::dropTextureOneFace(LLViewerObject* hit_obj,
 	}
 	LLUUID asset_id = item->getAssetUUID();
 	BOOL success = handleDropTextureProtections(hit_obj, item, source, src_id);
-	if(!success)
+	if (!success)
 	{
 		return;
 	}
@@ -1133,32 +1138,32 @@ void LLToolDragAndDrop::dropScript(LLViewerObject* hit_obj,
 {
 	// *HACK: In order to resolve SL-22177, we need to block drags
 	// from notecards and objects onto other objects.
-	if((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource)
+	if ((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource)
 	   || (SOURCE_NOTECARD == LLToolDragAndDrop::getInstance()->mSource))
 	{
 		llwarns << "Call to LLToolDragAndDrop::dropScript() from world"
 			<< " or notecard." << llendl;
 		return;
 	}
-	if(hit_obj && item)
+	if (hit_obj && item)
 	{
 		LLPointer<LLViewerInventoryItem> new_script = new LLViewerInventoryItem(item);
-		if(!item->getPermissions().allowCopyBy(gAgent.getID()))
+		if (!item->getPermissions().allowCopyBy(gAgent.getID()))
 		{
-			if(SOURCE_AGENT == source)
+			if (SOURCE_AGENT == source)
 			{
 				// Remove the script from local inventory. The server
 				// will actually remove the item from agent inventory.
 				gInventory.deleteObject(item->getUUID());
 				gInventory.notifyObservers();
 			}
-			else if(SOURCE_WORLD == source)
+			else if (SOURCE_WORLD == source)
 			{
 				// *FIX: if the objects are in different regions, and
 				// the source region has crashed, you can bypass
 				// these permissions.
 				LLViewerObject* src_obj = gObjectList.findObject(src_id);
-				if(src_obj)
+				if (src_obj)
 				{
 					src_obj->removeInventory(item->getUUID());
 				}
@@ -1174,7 +1179,7 @@ void LLToolDragAndDrop::dropScript(LLViewerObject* hit_obj,
 
 		// VEFFECT: SetScript
 		LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE);
-		effectp->setSourceObject(gAgent.getAvatarObject());
+		effectp->setSourceObject(gAgentAvatarp);
 		effectp->setTargetObject(hit_obj);
 		effectp->setDuration(LL_HUD_DUR_SHORT);
 		effectp->setColor(LLColor4U(gAgent.getEffectColor()));
@@ -1198,7 +1203,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
 	LLViewerInventoryItem* item;
 	LLViewerInventoryCategory* cat;
 	locateInventory(item, cat);
-	if(!item || !item->isComplete()) return;
+	if (!item || !item->isComplete()) return;
 	
 	//if (regionp
 	//	&& (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX))
@@ -1209,7 +1214,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
 	// this will remove the object from inventory after rez. Only
 	// bother with this check if we would not normally remove from
 	// inventory.
-	if(!remove_from_inventory
+	if (!remove_from_inventory
 		&& !item->getPermissions().allowCopyBy(gAgent.getID()))
 	{
 		remove_from_inventory = TRUE;
@@ -1220,7 +1225,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
 	// hitting objects that were clipped by the near plane or culled
 	// on the viewer.
 	LLUUID ray_target_id;
-	if( raycast_target )
+	if (raycast_target)
 	{
 		ray_target_id = raycast_target->getID();
 	}
@@ -1232,7 +1237,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
 	// Check if it's in the trash.
 	bool is_in_trash = false;
 	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
-	if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
+	if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
 	{
 		is_in_trash = true;
 		remove_from_inventory = TRUE;
@@ -1290,7 +1295,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
 	pack_permissions_slam(msg, item->getFlags(), item->getPermissions());
 
 	LLUUID folder_id = item->getParentUUID();
-	if((SOURCE_LIBRARY == mSource) || (is_in_trash))
+	if ((SOURCE_LIBRARY == mSource) || (is_in_trash))
 	{
 		// since it's coming from the library or trash, we want to not
 		// 'take' it back to the same place.
@@ -1324,7 +1329,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
 		gViewerWindow->getWindow()->incBusyCount();
 	}
 
-	if(remove_from_inventory)
+	if (remove_from_inventory)
 	{
 		// Delete it from inventory immediately so that users cannot
 		// easily bypass copy protection in laggy situations. If the
@@ -1335,7 +1340,7 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target,
 
 	// VEFFECT: DropObject
 	LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE);
-	effectp->setSourceObject(gAgent.getAvatarObject());
+	effectp->setSourceObject(gAgentAvatarp);
 	effectp->setPositionGlobal(mLastHitPos);
 	effectp->setDuration(LL_HUD_DUR_SHORT);
 	effectp->setColor(LLColor4U(gAgent.getEffectColor()));
@@ -1350,7 +1355,7 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,
 {
 	// *HACK: In order to resolve SL-22177, we need to block drags
 	// from notecards and objects onto other objects.
-	if((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource)
+	if ((SOURCE_WORLD == LLToolDragAndDrop::getInstance()->mSource)
 	   || (SOURCE_NOTECARD == LLToolDragAndDrop::getInstance()->mSource))
 	{
 		llwarns << "Call to LLToolDragAndDrop::dropInventory() from world"
@@ -1362,9 +1367,9 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,
 	time_t creation_date = time_corrected();
 	new_item->setCreationDate(creation_date);
 
-	if(!item->getPermissions().allowCopyBy(gAgent.getID()))
+	if (!item->getPermissions().allowCopyBy(gAgent.getID()))
 	{
-		if(SOURCE_AGENT == source)
+		if (SOURCE_AGENT == source)
 		{
 			// Remove the inventory item from local inventory. The
 			// server will actually remove the item from agent
@@ -1372,13 +1377,13 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,
 			gInventory.deleteObject(item->getUUID());
 			gInventory.notifyObservers();
 		}
-		else if(SOURCE_WORLD == source)
+		else if (SOURCE_WORLD == source)
 		{
 			// *FIX: if the objects are in different regions, and the
 			// source region has crashed, you can bypass these
 			// permissions.
 			LLViewerObject* src_obj = gObjectList.findObject(src_id);
-			if(src_obj)
+			if (src_obj)
 			{
 				src_obj->removeInventory(item->getUUID());
 			}
@@ -1398,7 +1403,7 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj,
 
 	// VEFFECT: AddToInventory
 	LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE);
-	effectp->setSourceObject(gAgent.getAvatarObject());
+	effectp->setSourceObject(gAgentAvatarp);
 	effectp->setTargetObject(hit_obj);
 	effectp->setDuration(LL_HUD_DUR_SHORT);
 	effectp->setColor(LLColor4U(gAgent.getEffectColor()));
@@ -1411,11 +1416,11 @@ void LLToolDragAndDrop::giveInventory(const LLUUID& to_agent,
 									  
 {
 	llinfos << "LLToolDragAndDrop::giveInventory()" << llendl;
-	if(!isInventoryGiveAcceptable(item))
+	if (!isInventoryGiveAcceptable(item))
 	{
 		return;
 	}
-	if(item->getPermissions().allowCopyBy(gAgent.getID()))
+	if (item->getPermissions().allowCopyBy(gAgent.getID()))
 	{
 		// just give it away.
 		LLToolDragAndDrop::commitGiveInventoryItem(to_agent, item, im_session_id);
@@ -1439,7 +1444,7 @@ bool LLToolDragAndDrop::handleCopyProtectedItem(const LLSD& notification, const
 	{
 	case 0:  // "Yes"
 		item = gInventory.getItem(notification["payload"]["item_id"].asUUID());
-		if(item)
+		if (item)
 		{
 			LLToolDragAndDrop::commitGiveInventoryItem(notification["payload"]["agent_id"].asUUID(),
 													   item);
@@ -1466,7 +1471,7 @@ void LLToolDragAndDrop::commitGiveInventoryItem(const LLUUID& to_agent,
 												LLInventoryItem* item,
 												const LLUUID& im_session_id)
 {
-	if(!item) return;
+	if (!item) return;
 	std::string name;
 	LLAgentUI::buildFullname(name);
 	LLUUID transaction_id;
@@ -1496,7 +1501,7 @@ void LLToolDragAndDrop::commitGiveInventoryItem(const LLUUID& to_agent,
 
 	// VEFFECT: giveInventory
 	LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE);
-	effectp->setSourceObject(gAgent.getAvatarObject());
+	effectp->setSourceObject(gAgentAvatarp);
 	effectp->setTargetObject(gObjectList.findObject(to_agent));
 	effectp->setDuration(LL_HUD_DUR_SHORT);
 	effectp->setColor(LLColor4U(gAgent.getEffectColor()));
@@ -1543,21 +1548,17 @@ void LLToolDragAndDrop::giveInventoryCategory(const LLUUID& to_agent,
 											  const LLUUID& im_session_id)
 
 {
-	if(!cat) return;
+	if (!cat) return;
 	llinfos << "LLToolDragAndDrop::giveInventoryCategory() - "
 			<< cat->getUUID() << llendl;
 
-	LLVOAvatar* my_avatar = gAgent.getAvatarObject();
-	if( !my_avatar )
-	{
-		return;
-	}
+	if (!isAgentAvatarValid()) return;
 
 	// Test out how many items are being given.
 	LLViewerInventoryCategory::cat_array_t cats;
 	LLViewerInventoryItem::item_array_t items;
 	LLGiveable giveable;
-	gInventory.collectDescendentsIf(cat->getUUID(),
+	gInventory.collectDescendentsIf (cat->getUUID(),
 									cats,
 									items,
 									LLInventoryModel::EXCLUDE_TRASH,
@@ -1566,31 +1567,31 @@ void LLToolDragAndDrop::giveInventoryCategory(const LLUUID& to_agent,
 	bool complete = true;
 	for(S32 i = 0; i < count; ++i)
 	{
-		if(!gInventory.isCategoryComplete(cats.get(i)->getUUID()))
+		if (!gInventory.isCategoryComplete(cats.get(i)->getUUID()))
 		{
 			complete = false;
 			break;
 		}
 	}
-	if(!complete)
+	if (!complete)
 	{
 		LLNotificationsUtil::add("IncompleteInventory");
 		return;
 	}
  	count = items.count() + cats.count();
- 	if(count > MAX_ITEMS)
+ 	if (count > MAX_ITEMS)
   	{
 		LLNotificationsUtil::add("TooManyItems");
   		return;
   	}
- 	else if(count == 0)
+ 	else if (count == 0)
   	{
 		LLNotificationsUtil::add("NoItems");
   		return;
   	}
 	else
 	{
-		if(0 == giveable.countNoCopy())
+		if (0 == giveable.countNoCopy())
 		{
 			LLToolDragAndDrop::commitGiveInventoryCategory(to_agent, cat, im_session_id);
 		}
@@ -1616,14 +1617,14 @@ bool LLToolDragAndDrop::handleCopyProtectedCategory(const LLSD& notification, co
 	{
 	case 0:  // "Yes"
 		cat = gInventory.getCategory(notification["payload"]["folder_id"].asUUID());
-		if(cat)
+		if (cat)
 		{
 			LLToolDragAndDrop::commitGiveInventoryCategory(notification["payload"]["agent_id"].asUUID(),
 														   cat);
 			LLViewerInventoryCategory::cat_array_t cats;
 			LLViewerInventoryItem::item_array_t items;
 			LLUncopyableItems remove;
-			gInventory.collectDescendentsIf(cat->getUUID(),
+			gInventory.collectDescendentsIf (cat->getUUID(),
 											cats,
 											items,
 											LLInventoryModel::EXCLUDE_TRASH,
@@ -1654,7 +1655,7 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,
 													const LLUUID& im_session_id)
 
 {
-	if(!cat) return;
+	if (!cat) return;
 	llinfos << "LLToolDragAndDrop::commitGiveInventoryCategory() - "
 			<< cat->getUUID() << llendl;
 
@@ -1665,7 +1666,7 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,
 	LLViewerInventoryCategory::cat_array_t cats;
 	LLViewerInventoryItem::item_array_t items;
 	LLGiveable giveable;
-	gInventory.collectDescendentsIf(cat->getUUID(),
+	gInventory.collectDescendentsIf (cat->getUUID(),
 									cats,
 									items,
 									LLInventoryModel::EXCLUDE_TRASH,
@@ -1675,12 +1676,12 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,
 	// MTUBYTES or 18 * count < 1200 => count < 1200/18 =>
 	// 66. I've cut it down a bit from there to give some pad.
  	S32 count = items.count() + cats.count();
- 	if(count > MAX_ITEMS)
+ 	if (count > MAX_ITEMS)
   	{
 		LLNotificationsUtil::add("TooManyItems");
   		return;
   	}
- 	else if(count == 0)
+ 	else if (count == 0)
   	{
 		LLNotificationsUtil::add("NoItems");
   		return;
@@ -1739,7 +1740,7 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,
 
 		// VEFFECT: giveInventoryCategory
 		LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE);
-		effectp->setSourceObject(gAgent.getAvatarObject());
+		effectp->setSourceObject(gAgentAvatarp);
 		effectp->setTargetObject(gObjectList.findObject(to_agent));
 		effectp->setDuration(LL_HUD_DUR_SHORT);
 		effectp->setColor(LLColor4U(gAgent.getEffectColor()));
@@ -1754,35 +1755,31 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,
 // static
 BOOL LLToolDragAndDrop::isInventoryGiveAcceptable(LLInventoryItem* item)
 {
-	if(!item)
+	if (!item)
 	{
 		return FALSE;
 	}
-	if(!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
+	if (!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
 	{
 		return FALSE;
 	}
 	BOOL copyable = FALSE;
-	if(item->getPermissions().allowCopyBy(gAgent.getID())) copyable = TRUE;
+	if (item->getPermissions().allowCopyBy(gAgent.getID())) copyable = TRUE;
 
-	LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject();
-	if(!my_avatar)
-	{
-		return FALSE;
-	}
+	if (!isAgentAvatarValid()) return FALSE;
 
 	BOOL acceptable = TRUE;
 	switch(item->getType())
 	{
 	case LLAssetType::AT_OBJECT:
-		if(my_avatar->isWearingAttachment(item->getUUID()))
+		if (gAgentAvatarp->isWearingAttachment(item->getUUID()))
 		{
 			acceptable = FALSE;
 		}
 		break;
 	case LLAssetType::AT_BODYPART:
 	case LLAssetType::AT_CLOTHING:
-		if(!copyable && gAgentWearables.isWearingItem(item->getUUID()))
+		if (!copyable && gAgentWearables.isWearingItem(item->getUUID()))
 		{
 			acceptable = FALSE;
 		}
@@ -1796,33 +1793,29 @@ BOOL LLToolDragAndDrop::isInventoryGiveAcceptable(LLInventoryItem* item)
 // Static
 BOOL LLToolDragAndDrop::isInventoryGroupGiveAcceptable(LLInventoryItem* item)
 {
-	if(!item)
+	if (!item)
 	{
 		return FALSE;
 	}
 
 	// These permissions are double checked in the simulator in
 	// LLGroupNoticeInventoryItemFetch::result().
-	if(!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
+	if (!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
 	{
 		return FALSE;
 	}
-	if(!item->getPermissions().allowCopyBy(gAgent.getID()))
+	if (!item->getPermissions().allowCopyBy(gAgent.getID()))
 	{
 		return FALSE;
 	}
 
-	LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject();
-	if(!my_avatar)
-	{
-		return FALSE;
-	}
+	if (!isAgentAvatarValid()) return FALSE;
 
 	BOOL acceptable = TRUE;
 	switch(item->getType())
 	{
 	case LLAssetType::AT_OBJECT:
-		if(my_avatar->isWearingAttachment(item->getUUID()))
+		if (gAgentAvatarp->isWearingAttachment(item->getUUID()))
 		{
 			acceptable = FALSE;
 		}
@@ -1848,7 +1841,7 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL
 	// help make sure that drops that are from an object to an object
 	// don't have to worry about order of evaluation. Think of this
 	// like check for self in assignment.
-	if(obj->getID() == item->getParentUUID())
+	if (obj->getID() == item->getParentUUID())
 	{
 		return ACCEPT_NO;
 	}
@@ -1857,19 +1850,17 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL
 	//							  gAgent.getGroupID())
 	//			 && (obj->mPermModify || obj->mFlagAllowInventoryAdd));
 	BOOL worn = FALSE;
-	LLVOAvatarSelf* my_avatar = NULL;
 	switch(item->getType())
 	{
 	case LLAssetType::AT_OBJECT:
-		my_avatar = gAgent.getAvatarObject();
-		if(my_avatar && my_avatar->isWearingAttachment(item->getUUID()))
+		if (isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item->getUUID()))
 		{
 				worn = TRUE;
 		}
 		break;
 	case LLAssetType::AT_BODYPART:
 	case LLAssetType::AT_CLOTHING:
-		if(gAgentWearables.isWearingItem(item->getUUID()))
+		if (gAgentWearables.isWearingItem(item->getUUID()))
 		{
 			worn = TRUE;
 		}
@@ -1880,7 +1871,7 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL
 	const LLPermissions& perm = item->getPermissions();
 	BOOL modify = (obj->permModify() || obj->flagAllowInventoryAdd());
 	BOOL transfer = FALSE;
-	if((obj->permYouOwner() && (perm.getOwner() == gAgent.getID()))
+	if ((obj->permYouOwner() && (perm.getOwner() == gAgent.getID()))
 	   || perm.allowOperationBy(PERM_TRANSFER, gAgent.getID()))
 	{
 		transfer = TRUE;
@@ -1888,15 +1879,15 @@ EAcceptance LLToolDragAndDrop::willObjectAcceptInventory(LLViewerObject* obj, LL
 	BOOL volume = (LL_PCODE_VOLUME == obj->getPCode());
 	BOOL attached = obj->isAttachment();
 	BOOL unrestricted = ((perm.getMaskBase() & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED) ? TRUE : FALSE;
-	if(attached && !unrestricted)
+	if (attached && !unrestricted)
 	{
 		return ACCEPT_NO_LOCKED;
 	}
-	else if(modify && transfer && volume && !worn)
+	else if (modify && transfer && volume && !worn)
 	{
 		return ACCEPT_YES_MULTI;
 	}
-	else if(!modify)
+	else if (!modify)
 	{
 		return ACCEPT_NO_LOCKED;
 	}
@@ -1927,12 +1918,12 @@ bool LLToolDragAndDrop::handleGiveDragAndDrop(LLUUID dest_agent, LLUUID session_
 	case DAD_CALLINGCARD:
 	{
 		LLViewerInventoryItem* inv_item = (LLViewerInventoryItem*)cargo_data;
-		if(gInventory.getItem(inv_item->getUUID())
+		if (gInventory.getItem(inv_item->getUUID())
 		   && LLToolDragAndDrop::isInventoryGiveAcceptable(inv_item))
 		{
 			// *TODO: get multiple object transfers working
 			*accept = ACCEPT_YES_COPY_SINGLE;
-			if(drop)
+			if (drop)
 			{
 				LLToolDragAndDrop::giveInventory(dest_agent, inv_item, session_id);
 			}
@@ -1950,11 +1941,11 @@ bool LLToolDragAndDrop::handleGiveDragAndDrop(LLUUID dest_agent, LLUUID session_
 	case DAD_CATEGORY:
 	{
 		LLViewerInventoryCategory* inv_cat = (LLViewerInventoryCategory*)cargo_data;
-		if( gInventory.getCategory( inv_cat->getUUID() ) )
+		if (gInventory.getCategory(inv_cat->getUUID()))
 		{
 			// *TODO: get multiple object transfers working
 			*accept = ACCEPT_YES_COPY_SINGLE;
-			if(drop)
+			if (drop)
 			{
 				LLToolDragAndDrop::giveInventoryCategory(dest_agent, inv_cat, session_id);
 			}
@@ -1995,7 +1986,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezAttachmentFromInv(
 {
 	lldebugs << "LLToolDragAndDrop::dad3dRezAttachmentFromInv()" << llendl;
 	// must be in the user's inventory
-	if(mSource != SOURCE_AGENT && mSource != SOURCE_LIBRARY)
+	if (mSource != SOURCE_AGENT && mSource != SOURCE_LIBRARY)
 	{
 		return ACCEPT_NO;
 	}
@@ -2003,25 +1994,24 @@ EAcceptance LLToolDragAndDrop::dad3dRezAttachmentFromInv(
 	LLViewerInventoryItem* item;
 	LLViewerInventoryCategory* cat;
 	locateInventory(item, cat);
-	if(!item || !item->isComplete()) return ACCEPT_NO;
+	if (!item || !item->isComplete()) return ACCEPT_NO;
 
 	// must not be in the trash
 	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
-	if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) )
+	if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
 	{
 		return ACCEPT_NO;
 	}
 
 	// must not be already wearing it
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if(!avatarp || avatarp->isWearingAttachment(item->getUUID()) )
+	if (!isAgentAvatarValid() || gAgentAvatarp->isWearingAttachment(item->getUUID()))
 	{
 		return ACCEPT_NO;
 	}
 
-	if( drop )
+	if (drop)
 	{
-		if(mSource == SOURCE_LIBRARY)
+		if (mSource == SOURCE_LIBRARY)
 		{
 			LLPointer<LLInventoryCallback> cb = new RezAttachmentCallback(0);
 			copy_inventory_item(
@@ -2053,10 +2043,9 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand(
 	LLViewerInventoryItem* item;
 	LLViewerInventoryCategory* cat;
 	locateInventory(item, cat);
-	if(!item || !item->isComplete()) return ACCEPT_NO;
+	if (!item || !item->isComplete()) return ACCEPT_NO;
 
-	LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject();
-	if( !my_avatar || my_avatar->isWearingAttachment( item->getUUID() ) )
+	if (!isAgentAvatarValid() || gAgentAvatarp->isWearingAttachment(item->getUUID()))
 	{
 		return ACCEPT_NO;
 	}
@@ -2081,7 +2070,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand(
 
 	// check if the item can be copied. If not, send that to the sim
 	// which will remove the inventory item.
-	if(!item->getPermissions().allowCopyBy(gAgent.getID()))
+	if (!item->getPermissions().allowCopyBy(gAgent.getID()))
 	{
 		accept = ACCEPT_YES_SINGLE;
 		remove_inventory = TRUE;
@@ -2089,13 +2078,13 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnLand(
 
 	// Check if it's in the trash.
 	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
-	if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
+	if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
 	{
 		accept = ACCEPT_YES_SINGLE;
 		remove_inventory = TRUE;
 	}
 
-	if(drop)
+	if (drop)
 	{
 		dropObject(obj, TRUE, FALSE, remove_inventory);
 	}
@@ -2116,24 +2105,23 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject(
 	LLViewerInventoryItem* item;
 	LLViewerInventoryCategory* cat;
 	locateInventory(item, cat);
-	if(!item || !item->isComplete()) return ACCEPT_NO;
-	LLVOAvatarSelf* my_avatar = gAgent.getAvatarObject();
-	if( !my_avatar || my_avatar->isWearingAttachment( item->getUUID() ) )
+	if (!item || !item->isComplete()) return ACCEPT_NO;
+	if (!isAgentAvatarValid() || gAgentAvatarp->isWearingAttachment(item->getUUID()))
 	{
 		return ACCEPT_NO;
 	}
 
-	if((mask & MASK_CONTROL))
+	if ((mask & MASK_CONTROL))
 	{
 		// *HACK: In order to resolve SL-22177, we need to block drags
 		// from notecards and objects onto other objects.
-		if(mSource == SOURCE_NOTECARD)
+		if (mSource == SOURCE_NOTECARD)
 		{
 			return ACCEPT_NO;
 		}
 
 		EAcceptance rv = willObjectAcceptInventory(obj, item);
-		if(drop && (ACCEPT_YES_SINGLE <= rv))
+		if (drop && (ACCEPT_YES_SINGLE <= rv))
 		{
 			dropInventory(obj, item, mSource, mSourceID);
 		}
@@ -2159,7 +2147,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject(
 	
 	// check if the item can be copied. If not, send that to the sim
 	// which will remove the inventory item.
-	if(!item->getPermissions().allowCopyBy(gAgent.getID()))
+	if (!item->getPermissions().allowCopyBy(gAgent.getID()))
 	{
 		accept = ACCEPT_YES_SINGLE;
 		remove_inventory = TRUE;
@@ -2167,13 +2155,13 @@ EAcceptance LLToolDragAndDrop::dad3dRezObjectOnObject(
 
 	// Check if it's in the trash.
 	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
-	if(gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
+	if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
 	{
 		accept = ACCEPT_YES_SINGLE;
 		remove_inventory = TRUE;
 	}
 
-	if(drop)
+	if (drop)
 	{
 		dropObject(obj, FALSE, FALSE, remove_inventory);
 	}
@@ -2188,7 +2176,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezScript(
 
 	// *HACK: In order to resolve SL-22177, we need to block drags
 	// from notecards and objects onto other objects.
-	if((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))
+	if ((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))
 	{
 		return ACCEPT_NO;
 	}
@@ -2196,9 +2184,9 @@ EAcceptance LLToolDragAndDrop::dad3dRezScript(
 	LLViewerInventoryItem* item;
 	LLViewerInventoryCategory* cat;
 	locateInventory(item, cat);
-	if(!item || !item->isComplete()) return ACCEPT_NO;
+	if (!item || !item->isComplete()) return ACCEPT_NO;
 	EAcceptance rv = willObjectAcceptInventory(obj, item);
-	if(drop && (ACCEPT_YES_SINGLE <= rv))
+	if (drop && (ACCEPT_YES_SINGLE <= rv))
 	{
 		// rez in the script active by default, rez in inactive if the
 		// control key is being held down.
@@ -2226,7 +2214,7 @@ EAcceptance LLToolDragAndDrop::dad3dTextureObject(
 
 	// *HACK: In order to resolve SL-22177, we need to block drags
 	// from notecards and objects onto other objects.
-	if((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))
+	if ((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))
 	{
 		return ACCEPT_NO;
 	}
@@ -2234,29 +2222,29 @@ EAcceptance LLToolDragAndDrop::dad3dTextureObject(
 	LLViewerInventoryItem* item;
 	LLViewerInventoryCategory* cat;
 	locateInventory(item, cat);
-	if(!item || !item->isComplete()) return ACCEPT_NO;
+	if (!item || !item->isComplete()) return ACCEPT_NO;
 	EAcceptance rv = willObjectAcceptInventory(obj, item);
-	if((mask & MASK_CONTROL))
+	if ((mask & MASK_CONTROL))
 	{
-		if((ACCEPT_YES_SINGLE <= rv) && drop)
+		if ((ACCEPT_YES_SINGLE <= rv) && drop)
 		{
 			dropInventory(obj, item, mSource, mSourceID);
 		}
 		return rv;
 	}
-	if(!obj->permModify())
+	if (!obj->permModify())
 	{
 		return ACCEPT_NO_LOCKED;
 	}
 	//If texture !copyable don't texture or you'll never get it back.
-	if(!item->getPermissions().allowCopyBy(gAgent.getID()))
+	if (!item->getPermissions().allowCopyBy(gAgent.getID()))
 	{
 		return ACCEPT_NO;
 	}
 
-	if(drop && (ACCEPT_YES_SINGLE <= rv))
+	if (drop && (ACCEPT_YES_SINGLE <= rv))
 	{
-		if((mask & MASK_SHIFT))
+		if ((mask & MASK_SHIFT))
 		{
 			dropTextureAllFaces(obj, item, mSource, mSourceID);
 		}
@@ -2267,7 +2255,7 @@ EAcceptance LLToolDragAndDrop::dad3dTextureObject(
 		
 		// VEFFECT: SetTexture
 		LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE);
-		effectp->setSourceObject(gAgent.getAvatarObject());
+		effectp->setSourceObject(gAgentAvatarp);
 		effectp->setTargetObject(obj);
 		effectp->setDuration(LL_HUD_DUR_SHORT);
 		effectp->setColor(LLColor4U(gAgent.getEffectColor()));
@@ -2281,9 +2269,9 @@ EAcceptance LLToolDragAndDrop::dad3dTextureSelf(
 	LLViewerObject* obj, S32 face, MASK mask, BOOL drop)
 {
 	lldebugs << "LLToolDragAndDrop::dad3dTextureAvatar()" << llendl;
-	if(drop)
+	if (drop)
 	{
-		if( !(mask & MASK_SHIFT) )
+		if (!(mask & MASK_SHIFT))
 		{
 			dropTextureOneFaceAvatar( (LLVOAvatar*)obj, face, (LLInventoryItem*)mCargoData);
 		}
@@ -2299,18 +2287,18 @@ EAcceptance LLToolDragAndDrop::dad3dWearItem(
 	LLViewerInventoryItem* item;
 	LLViewerInventoryCategory* cat;
 	locateInventory(item, cat);
-	if(!item || !item->isComplete()) return ACCEPT_NO;
+	if (!item || !item->isComplete()) return ACCEPT_NO;
 
-	if(mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)
+	if (mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)
 	{
 		// it's in the agent inventory
 		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
-		if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) )
+		if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
 		{
 			return ACCEPT_NO;
 		}
 
-		if( drop )
+		if (drop)
 		{
 			// Don't wear anything until initial wearables are loaded, can
 			// destroy clothing items.
@@ -2320,7 +2308,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearItem(
 				return ACCEPT_NO;
 			}
 
-			if(mSource == SOURCE_LIBRARY)
+			if (mSource == SOURCE_LIBRARY)
 			{
 				// create item based on that one, and put it on if that
 				// was a success.
@@ -2354,21 +2342,21 @@ EAcceptance LLToolDragAndDrop::dad3dActivateGesture(
 	LLViewerInventoryItem* item;
 	LLViewerInventoryCategory* cat;
 	locateInventory(item, cat);
-	if(!item || !item->isComplete()) return ACCEPT_NO;
+	if (!item || !item->isComplete()) return ACCEPT_NO;
 
-	if(mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)
+	if (mSource == SOURCE_AGENT || mSource == SOURCE_LIBRARY)
 	{
 		// it's in the agent inventory
 		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
-		if( gInventory.isObjectDescendentOf( item->getUUID(), trash_id ) )
+		if (gInventory.isObjectDescendentOf(item->getUUID(), trash_id))
 		{
 			return ACCEPT_NO;
 		}
 
-		if( drop )
+		if (drop)
 		{
 			LLUUID item_id;
-			if(mSource == SOURCE_LIBRARY)
+			if (mSource == SOURCE_LIBRARY)
 			{
 				// create item based on that one, and put it on if that
 				// was a success.
@@ -2383,7 +2371,7 @@ EAcceptance LLToolDragAndDrop::dad3dActivateGesture(
 			}
 			else
 			{
-				LLGestureManager::instance().activateGesture(item->getUUID());
+				LLGestureMgr::instance().activateGesture(item->getUUID());
 				gInventory.updateItem(item);
 				gInventory.notifyObservers();
 			}
@@ -2403,7 +2391,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearCategory(
 	LLViewerInventoryItem* item;
 	LLViewerInventoryCategory* category;
 	locateInventory(item, category);
-	if(!category) return ACCEPT_NO;
+	if (!category) return ACCEPT_NO;
 
 	if (drop)
 	{
@@ -2416,26 +2404,26 @@ EAcceptance LLToolDragAndDrop::dad3dWearCategory(
 		}
 	}
 
-	if(mSource == SOURCE_AGENT)
+	if (mSource == SOURCE_AGENT)
 	{
 		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
-		if( gInventory.isObjectDescendentOf( category->getUUID(), trash_id ) )
+		if (gInventory.isObjectDescendentOf(category->getUUID(), trash_id))
 		{
 			return ACCEPT_NO;
 		}
 
-		if(drop)
+		if (drop)
 		{
 		    BOOL append = ( (mask & MASK_SHIFT) ? TRUE : FALSE );
-			LLAppearanceManager::instance().wearInventoryCategory(category, false, append);
+			LLAppearanceMgr::instance().wearInventoryCategory(category, false, append);
 		}
 		return ACCEPT_YES_MULTI;
 	}
-	else if(mSource == SOURCE_LIBRARY)
+	else if (mSource == SOURCE_LIBRARY)
 	{
-		if(drop)
+		if (drop)
 		{
-			LLAppearanceManager::instance().wearInventoryCategory(category, true, false);
+			LLAppearanceMgr::instance().wearInventoryCategory(category, true, false);
 		}
 		return ACCEPT_YES_MULTI;
 	}
@@ -2454,7 +2442,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventory(
 
 	// *HACK: In order to resolve SL-22177, we need to block drags
 	// from notecards and objects onto other objects.
-	if((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))
+	if ((SOURCE_WORLD == mSource) || (SOURCE_NOTECARD == mSource))
 	{
 		return ACCEPT_NO;
 	}
@@ -2462,7 +2450,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventory(
 	LLViewerInventoryItem* item;
 	LLViewerInventoryCategory* cat;
 	locateInventory(item, cat);
-	if(!item || !item->isComplete()) return ACCEPT_NO;
+	if (!item || !item->isComplete()) return ACCEPT_NO;
 	LLViewerObject* root_object = obj;
 	if (obj && obj->getParent())
 	{
@@ -2474,7 +2462,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventory(
 	}
 
 	EAcceptance rv = willObjectAcceptInventory(root_object, item);
-	if(root_object && drop && (ACCEPT_YES_COPY_SINGLE <= rv))
+	if (root_object && drop && (ACCEPT_YES_COPY_SINGLE <= rv))
 	{
 		dropInventory(root_object, item, mSource, mSourceID);
 	}
@@ -2518,7 +2506,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(
 	LLDroppableItem droppable(!obj->permYouOwner());
 	LLInventoryModel::cat_array_t cats;
 	LLInventoryModel::item_array_t items;
-	gInventory.collectDescendentsIf(cat->getUUID(),
+	gInventory.collectDescendentsIf (cat->getUUID(),
 					cats,
 					items,
 					LLInventoryModel::EXCLUDE_TRASH,
@@ -2547,7 +2535,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(
 	{
 		const LLViewerInventoryCategory *cat = (*cat_iter);
 		rv = gInventory.isCategoryComplete(cat->getUUID()) ? ACCEPT_YES_MULTI : ACCEPT_NO;
-		if(rv < ACCEPT_YES_SINGLE)
+		if (rv < ACCEPT_YES_SINGLE)
 		{
 			lldebugs << "Category " << cat->getUUID() << "is not complete." << llendl;
 			break;
@@ -2580,7 +2568,7 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(
 	// If every item is accepted, send it on
 	if (drop && (ACCEPT_YES_COPY_SINGLE <= rv))
 	{
-		LLInventoryFetchObserver::item_ref_t ids;
+		uuid_vec_t ids;
 		for (LLInventoryModel::item_array_t::const_iterator item_iter = items.begin();
 			 item_iter != items.end();
 			 ++item_iter)
@@ -2589,8 +2577,8 @@ EAcceptance LLToolDragAndDrop::dad3dUpdateInventoryCategory(
 			ids.push_back(item->getUUID());
 		}
 		LLCategoryDropObserver* dropper = new LLCategoryDropObserver(obj->getID(), mSource);
-		dropper->fetchItems(ids);
-		if(dropper->isEverythingComplete())
+		dropper->fetch(ids);
+		if (dropper->isEverythingComplete())
 		{
 			dropper->done();
 		}
@@ -2615,27 +2603,26 @@ EAcceptance LLToolDragAndDrop::dad3dGiveInventoryObject(
 	lldebugs << "LLToolDragAndDrop::dad3dGiveInventoryObject()" << llendl;
 
 	// item has to be in agent inventory.
-	if(mSource != SOURCE_AGENT) return ACCEPT_NO;
+	if (mSource != SOURCE_AGENT) return ACCEPT_NO;
 
 	// find the item now.
 	LLViewerInventoryItem* item;
 	LLViewerInventoryCategory* cat;
 	locateInventory(item, cat);
-	if(!item || !item->isComplete()) return ACCEPT_NO;
-	if(!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
+	if (!item || !item->isComplete()) return ACCEPT_NO;
+	if (!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
 	{
 		// cannot give away no-transfer objects
 		return ACCEPT_NO;
 	}
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if(avatarp && avatarp->isWearingAttachment( item->getUUID() ) )
+	if (isAgentAvatarValid() && gAgentAvatarp->isWearingAttachment(item->getUUID()))
 	{
 		// You can't give objects that are attached to you
 		return ACCEPT_NO;
 	}
-	if(obj && avatarp)
+	if (obj && isAgentAvatarValid())
 	{
-		if(drop)
+		if (drop)
 		{
 			giveInventory(obj->getID(), item );
 		}
@@ -2652,16 +2639,16 @@ EAcceptance LLToolDragAndDrop::dad3dGiveInventory(
 {
 	lldebugs << "LLToolDragAndDrop::dad3dGiveInventory()" << llendl;
 	// item has to be in agent inventory.
-	if(mSource != SOURCE_AGENT) return ACCEPT_NO;
+	if (mSource != SOURCE_AGENT) return ACCEPT_NO;
 	LLViewerInventoryItem* item;
 	LLViewerInventoryCategory* cat;
 	locateInventory(item, cat);
-	if(!item || !item->isComplete()) return ACCEPT_NO;
-	if(!isInventoryGiveAcceptable(item))
+	if (!item || !item->isComplete()) return ACCEPT_NO;
+	if (!isInventoryGiveAcceptable(item))
 	{
 		return ACCEPT_NO;
 	}
-	if(drop && obj)
+	if (drop && obj)
 	{
 		giveInventory(obj->getID(), item);
 	}
@@ -2674,12 +2661,12 @@ EAcceptance LLToolDragAndDrop::dad3dGiveInventoryCategory(
 	LLViewerObject* obj, S32 face, MASK mask, BOOL drop)
 {
 	lldebugs << "LLToolDragAndDrop::dad3dGiveInventoryCategory()" << llendl;
-	if(drop && obj)
+	if (drop && obj)
 	{
 		LLViewerInventoryItem* item;
 		LLViewerInventoryCategory* cat;
 		locateInventory(item, cat);
-		if(!cat) return ACCEPT_NO;
+		if (!cat) return ACCEPT_NO;
 		giveInventoryCategory(obj->getID(), cat);
 	}
 	// *TODO: deal with all the issues surrounding multi-object
@@ -2695,14 +2682,14 @@ EAcceptance LLToolDragAndDrop::dad3dRezFromObjectOnLand(
 	LLViewerInventoryItem* item = NULL;
 	LLViewerInventoryCategory* cat = NULL;
 	locateInventory(item, cat);
-	if(!item || !item->isComplete()) return ACCEPT_NO;
+	if (!item || !item->isComplete()) return ACCEPT_NO;
 
-	if(!gAgent.allowOperation(PERM_COPY, item->getPermissions())
+	if (!gAgent.allowOperation(PERM_COPY, item->getPermissions())
 		|| !item->getPermissions().allowTransferTo(LLUUID::null))
 	{
 		return ACCEPT_NO_LOCKED;
 	}
-	if(drop)
+	if (drop)
 	{
 		dropObject(obj, TRUE, TRUE, FALSE);
 	}
@@ -2716,8 +2703,8 @@ EAcceptance LLToolDragAndDrop::dad3dRezFromObjectOnObject(
 	LLViewerInventoryItem* item;
 	LLViewerInventoryCategory* cat;
 	locateInventory(item, cat);
-	if(!item || !item->isComplete()) return ACCEPT_NO;
-	if((mask & MASK_CONTROL))
+	if (!item || !item->isComplete()) return ACCEPT_NO;
+	if ((mask & MASK_CONTROL))
 	{
 		// *HACK: In order to resolve SL-22177, we need to block drags
 		// from notecards and objects onto other objects.
@@ -2725,19 +2712,19 @@ EAcceptance LLToolDragAndDrop::dad3dRezFromObjectOnObject(
 
 		// *HACK: uncomment this when appropriate
 		//EAcceptance rv = willObjectAcceptInventory(obj, item);
-		//if(drop && (ACCEPT_YES_SINGLE <= rv))
+		//if (drop && (ACCEPT_YES_SINGLE <= rv))
 		//{
 		//	dropInventory(obj, item, mSource, mSourceID);
 		//}
 		//return rv;
 	}
-	if(!item->getPermissions().allowCopyBy(gAgent.getID(),
+	if (!item->getPermissions().allowCopyBy(gAgent.getID(),
 										   gAgent.getGroupID())
 	   || !item->getPermissions().allowTransferTo(LLUUID::null))
 	{
 		return ACCEPT_NO_LOCKED;
 	}
-	if(drop)
+	if (drop)
 	{
 		dropObject(obj, FALSE, TRUE, FALSE);
 	}
@@ -2753,23 +2740,23 @@ EAcceptance LLToolDragAndDrop::dad3dCategoryOnLand(
 	LLInventoryItem* item;
 	LLInventoryCategory* cat;
 	locateInventory(item, cat);
-	if(!cat) return ACCEPT_NO;
+	if (!cat) return ACCEPT_NO;
 	EAcceptance rv = ACCEPT_NO;
 
 	// find all the items in the category
 	LLViewerInventoryCategory::cat_array_t cats;
 	LLViewerInventoryItem::item_array_t items;
 	LLDropCopyableItems droppable;
-	gInventory.collectDescendentsIf(cat->getUUID(),
+	gInventory.collectDescendentsIf (cat->getUUID(),
 									cats,
 									items,
 									LLInventoryModel::EXCLUDE_TRASH,
 									droppable);
-	if(items.count() > 0)
+	if (items.count() > 0)
 	{
 		rv = ACCEPT_YES_SINGLE;
 	}
-	if((rv >= ACCEPT_YES_COPY_SINGLE) && drop)
+	if ((rv >= ACCEPT_YES_COPY_SINGLE) && drop)
 	{
 		createContainer(items, cat->getName());
 		return ACCEPT_NO;
@@ -2792,19 +2779,19 @@ EAcceptance LLToolDragAndDrop::dad3dAssetOnLand(
 	LLViewerInventoryItem::item_array_t items;
 	LLViewerInventoryItem::item_array_t copyable_items;
 	locateMultipleInventory(items, cats);
-	if(!items.count()) return ACCEPT_NO;
+	if (!items.count()) return ACCEPT_NO;
 	EAcceptance rv = ACCEPT_NO;
 	for (S32 i = 0; i < items.count(); i++)
 	{
 		LLInventoryItem* item = items[i];
-		if(item->getPermissions().allowCopyBy(gAgent.getID()))
+		if (item->getPermissions().allowCopyBy(gAgent.getID()))
 		{
 			copyable_items.put(item);
 			rv = ACCEPT_YES_SINGLE;
 		}
 	}
 
-	if((rv >= ACCEPT_YES_COPY_SINGLE) && drop)
+	if ((rv >= ACCEPT_YES_COPY_SINGLE) && drop)
 	{
 		createContainer(copyable_items, NULL);
 	}
@@ -2819,20 +2806,20 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(
 {
 	item = NULL;
 	cat = NULL;
-	if(mCargoIDs.empty()) return NULL;
-	if((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))
+	if (mCargoIDs.empty()) return NULL;
+	if ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))
 	{
 		// The object should be in user inventory.
 		item = (LLViewerInventoryItem*)gInventory.getItem(mCargoIDs[mCurItemIndex]);
 		cat = (LLViewerInventoryCategory*)gInventory.getCategory(mCargoIDs[mCurItemIndex]);
 	}
-	else if(mSource == SOURCE_WORLD)
+	else if (mSource == SOURCE_WORLD)
 	{
 		// This object is in some task inventory somewhere.
 		LLViewerObject* obj = gObjectList.findObject(mSourceID);
-		if(obj)
+		if (obj)
 		{
-			if((mCargoTypes[mCurItemIndex] == DAD_CATEGORY)
+			if ((mCargoTypes[mCurItemIndex] == DAD_CATEGORY)
 			   || (mCargoTypes[mCurItemIndex] == DAD_ROOT_CATEGORY))
 			{
 				cat = (LLViewerInventoryCategory*)obj->getInventoryObject(mCargoIDs[mCurItemIndex]);
@@ -2843,16 +2830,16 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(
 			}
 		}
 	}
-	else if(mSource == SOURCE_NOTECARD)
+	else if (mSource == SOURCE_NOTECARD)
 	{
 		LLPreviewNotecard* preview = LLFloaterReg::findTypedInstance<LLPreviewNotecard>("preview_notecard", mSourceID);
-		if(preview)
+		if (preview)
 		{
 			item = (LLViewerInventoryItem*)preview->getDragItem();
 		}
 	}
-	if(item) return item;
-	if(cat) return cat;
+	if (item) return item;
+	if (cat) return cat;
 	return NULL;
 }
 
@@ -2860,8 +2847,8 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(
 LLInventoryObject* LLToolDragAndDrop::locateMultipleInventory(LLViewerInventoryCategory::cat_array_t& cats,
 															  LLViewerInventoryItem::item_array_t& items)
 {
-	if(mCargoIDs.count() == 0) return NULL;
-	if((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))
+	if (mCargoIDs.count() == 0) return NULL;
+	if ((mSource == SOURCE_AGENT) || (mSource == SOURCE_LIBRARY))
 	{
 		// The object should be in user inventory.
 		for (S32 i = 0; i < mCargoIDs.count(); i++)
@@ -2878,13 +2865,13 @@ LLInventoryObject* LLToolDragAndDrop::locateMultipleInventory(LLViewerInventoryC
 			}
 		}
 	}
-	else if(mSource == SOURCE_WORLD)
+	else if (mSource == SOURCE_WORLD)
 	{
 		// This object is in some task inventory somewhere.
 		LLViewerObject* obj = gObjectList.findObject(mSourceID);
-		if(obj)
+		if (obj)
 		{
-			if((mCargoType == DAD_CATEGORY)
+			if ((mCargoType == DAD_CATEGORY)
 			   || (mCargoType == DAD_ROOT_CATEGORY))
 			{
 				// The object should be in user inventory.
@@ -2910,17 +2897,17 @@ LLInventoryObject* LLToolDragAndDrop::locateMultipleInventory(LLViewerInventoryC
 			}
 		}
 	}
-	else if(mSource == SOURCE_NOTECARD)
+	else if (mSource == SOURCE_NOTECARD)
 	{
 		LLPreviewNotecard* card;
 		card = (LLPreviewNotecard*)LLPreview::find(mSourceID);
-		if(card)
+		if (card)
 		{
 			items.put((LLInventoryItem*)card->getDragItem());
 		}
 	}
-	if(items.count()) return items[0];
-	if(cats.count()) return cats[0];
+	if (items.count()) return items[0];
+	if (cats.count()) return cats[0];
 	return NULL;
 }
 */
diff --git a/indra/newview/lltooldraganddrop.h b/indra/newview/lltooldraganddrop.h
index 0da13dac8bf4fbf8ccda821bec8da65c4b48f232..85d003e5fccb94094eba1533a89d997e9df44e0a 100644
--- a/indra/newview/lltooldraganddrop.h
+++ b/indra/newview/lltooldraganddrop.h
@@ -81,7 +81,7 @@ class LLToolDragAndDrop : public LLTool, public LLSingleton<LLToolDragAndDrop>
 				   const LLUUID& source_id = LLUUID::null,
 				   const LLUUID& object_id = LLUUID::null);
 	void beginMultiDrag(const std::vector<EDragAndDropType> types,
-						const std::vector<LLUUID>& cargo_ids,
+						const uuid_vec_t& cargo_ids,
 						ESource source,
 						const LLUUID& source_id = LLUUID::null);
 	void endDrag();
@@ -125,7 +125,7 @@ class LLToolDragAndDrop : public LLTool, public LLSingleton<LLToolDragAndDrop>
 	
 	std::vector<EDragAndDropType> mCargoTypes;
 	//void*			mCargoData;
-	std::vector<LLUUID> mCargoIDs;
+	uuid_vec_t mCargoIDs;
 	ESource mSource;
 	LLUUID mSourceID;
 	LLUUID mObjectID;
diff --git a/indra/newview/lltoolfocus.cpp b/indra/newview/lltoolfocus.cpp
index 1e2e7095d89eed83c7e11acc2fcbc1c5dd336f4b..032714cabfdde8bbd35098434d65d0140f5cdf0f 100644
--- a/indra/newview/lltoolfocus.cpp
+++ b/indra/newview/lltoolfocus.cpp
@@ -173,14 +173,12 @@ void LLToolCamera::pickCallback(const LLPickInfo& pick_info)
 		BOOL good_customize_avatar_hit = FALSE;
 		if( hit_obj )
 		{
-			LLVOAvatar* avatar = gAgent.getAvatarObject();
-			if( hit_obj == avatar) 
+			if (isAgentAvatarValid() && (hit_obj == gAgentAvatarp))
 			{
 				// It's you
 				good_customize_avatar_hit = TRUE;
 			}
-			else
-			if( hit_obj->isAttachment() && hit_obj->permYouOwner() )
+			else if (hit_obj->isAttachment() && hit_obj->permYouOwner())
 			{
 				// It's an attachment that you're wearing
 				good_customize_avatar_hit = TRUE;
@@ -223,8 +221,8 @@ void LLToolCamera::pickCallback(const LLPickInfo& pick_info)
 			gAgentCamera.cameraThirdPerson() &&
 			gViewerWindow->getLeftMouseDown() && 
 			!gSavedSettings.getBOOL("FreezeTime") &&
-			(hit_obj == gAgent.getAvatarObject() || 
-				(hit_obj && hit_obj->isAttachment() && LLVOAvatar::findAvatarFromAttachment(hit_obj)->isSelf())))
+			(hit_obj == gAgentAvatarp || 
+			 (hit_obj && hit_obj->isAttachment() && LLVOAvatar::findAvatarFromAttachment(hit_obj)->isSelf())))
 		{
 			LLToolCamera::getInstance()->mMouseSteering = TRUE;
 		}
diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp
index 008cf16f2e4fb005e4aee1c649d56b7d29139a52..04d873f91bd5bfcb6366c1ba5aa0cc98a54f943d 100644
--- a/indra/newview/lltoolgrab.cpp
+++ b/indra/newview/lltoolgrab.cpp
@@ -708,7 +708,7 @@ void LLToolGrab::handleHoverActive(S32 x, S32 y, MASK mask)
 	{
 		if (!gAgentCamera.cameraMouselook() && 
 			!objectp->isHUDAttachment() && 
-			objectp->getRoot() == gAgent.getAvatarObject()->getRoot())
+			objectp->getRoot() == gAgentAvatarp->getRoot())
 		{
 			// force focus to point in space where we were looking previously
 			gAgentCamera.setFocusGlobal(gAgentCamera.calcFocusPositionTargetGlobal(), LLUUID::null);
diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp
index c42c47c486d3404dbfeafa878bea98b4019ff418..969049ee657c3403e72afa2d66109a02c9733669 100644
--- a/indra/newview/lltoolmorph.cpp
+++ b/indra/newview/lltoolmorph.cpp
@@ -139,22 +139,20 @@ void LLVisualParamHint::requestHintUpdates( LLVisualParamHint* exception1, LLVis
 
 BOOL LLVisualParamHint::needsRender()
 {
-	return mNeedsUpdate && mDelayFrames-- <= 0 && !gAgent.getAvatarObject()->mAppearanceAnimating && mAllowsUpdates;
+	return mNeedsUpdate && mDelayFrames-- <= 0 && !gAgentAvatarp->mAppearanceAnimating && mAllowsUpdates;
 }
 
 void LLVisualParamHint::preRender(BOOL clear_depth)
 {
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-
 	mLastParamWeight = mVisualParam->getWeight();
 	mVisualParam->setWeight(mVisualParamWeight, FALSE);
-	avatarp->setVisualParamWeight(mVisualParam->getID(), mVisualParamWeight, FALSE);
-	avatarp->setVisualParamWeight("Blink_Left", 0.f);
-	avatarp->setVisualParamWeight("Blink_Right", 0.f);
-	avatarp->updateComposites();
-	avatarp->updateVisualParams();
-	avatarp->updateGeometry(avatarp->mDrawable);
-	avatarp->updateLOD();
+	gAgentAvatarp->setVisualParamWeight(mVisualParam->getID(), mVisualParamWeight, FALSE);
+	gAgentAvatarp->setVisualParamWeight("Blink_Left", 0.f);
+	gAgentAvatarp->setVisualParamWeight("Blink_Right", 0.f);
+	gAgentAvatarp->updateComposites();
+	gAgentAvatarp->updateVisualParams();
+	gAgentAvatarp->updateGeometry(gAgentAvatarp->mDrawable);
+	gAgentAvatarp->updateLOD();
 
 	LLViewerDynamicTexture::preRender(clear_depth);
 }
@@ -165,7 +163,6 @@ void LLVisualParamHint::preRender(BOOL clear_depth)
 BOOL LLVisualParamHint::render()
 {
 	LLVisualParamReset::sDirty = TRUE;
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
 
 	gGL.pushUIMatrix();
 	gGL.loadUIIdentity();
@@ -196,7 +193,7 @@ BOOL LLVisualParamHint::render()
 	const std::string& cam_target_mesh_name = mVisualParam->getCameraTargetName();
 	if( !cam_target_mesh_name.empty() )
 	{
-		cam_target_joint = (LLViewerJointMesh*)avatarp->getJoint( cam_target_mesh_name );
+		cam_target_joint = (LLViewerJointMesh*)gAgentAvatarp->getJoint( cam_target_mesh_name );
 	}
 	if( !cam_target_joint )
 	{
@@ -204,11 +201,11 @@ BOOL LLVisualParamHint::render()
 	}
 	if( !cam_target_joint )
 	{
-		cam_target_joint = (LLViewerJointMesh*)avatarp->getJoint("mHead");
+		cam_target_joint = (LLViewerJointMesh*)gAgentAvatarp->getJoint("mHead");
 	}
 
 	LLQuaternion avatar_rotation;
-	LLJoint* root_joint = avatarp->getRootJoint();
+	LLJoint* root_joint = gAgentAvatarp->getRootJoint();
 	if( root_joint )
 	{
 		avatar_rotation = root_joint->getWorldRotation();
@@ -236,17 +233,17 @@ BOOL LLVisualParamHint::render()
 
 	LLViewerCamera::getInstance()->setPerspective(FALSE, mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight, FALSE);
 
-	if (avatarp->mDrawable.notNull())
+	if (gAgentAvatarp->mDrawable.notNull())
 	{
-		LLDrawPoolAvatar *avatarPoolp = (LLDrawPoolAvatar *)avatarp->mDrawable->getFace(0)->getPool();
+		LLDrawPoolAvatar *avatarPoolp = (LLDrawPoolAvatar *)gAgentAvatarp->mDrawable->getFace(0)->getPool();
 		LLGLDepthTest gls_depth(GL_TRUE, GL_TRUE);
 		gGL.setAlphaRejectSettings(LLRender::CF_ALWAYS);
 		gGL.setSceneBlendType(LLRender::BT_REPLACE);
-		avatarPoolp->renderAvatars(avatarp);  // renders only one avatar
+		avatarPoolp->renderAvatars(gAgentAvatarp);  // renders only one avatar
 		gGL.setSceneBlendType(LLRender::BT_ALPHA);
 		gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
 	}
-	avatarp->setVisualParamWeight(mVisualParam->getID(), mLastParamWeight);
+	gAgentAvatarp->setVisualParamWeight(mVisualParam->getID(), mLastParamWeight);
 	mVisualParam->setWeight(mLastParamWeight, FALSE);
 	gGL.color4f(1,1,1,1);
 	mGLTexturep->setGLTextureCreated(true);
@@ -297,10 +294,9 @@ BOOL LLVisualParamReset::render()
 {
 	if (sDirty)
 	{
-		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-		avatarp->updateComposites();
-		avatarp->updateVisualParams();
-		avatarp->updateGeometry(avatarp->mDrawable);
+		gAgentAvatarp->updateComposites();
+		gAgentAvatarp->updateVisualParams();
+		gAgentAvatarp->updateGeometry(gAgentAvatarp->mDrawable);
 		sDirty = FALSE;
 	}
 
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 8d4f0f9116f7d94dbfec78a6278009a404da7282..84c463495bddf31d557a36e97ca627502099d00f 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -205,15 +205,15 @@ BOOL LLToolPie::pickLeftMouseDownCallback()
 			// touch behavior down below...
 			break;
 		case CLICK_ACTION_SIT:
-
-			if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->isSitting())) // agent not already sitting
 			{
-				handle_object_sit_or_stand();
-				// put focus in world when sitting on an object
-				gFocusMgr.setKeyboardFocus(NULL);
-				return TRUE;
-			} // else nothing (fall through to touch)
-			
+				if (isAgentAvatarValid() && !gAgentAvatarp->isSitting()) // agent not already sitting
+				{
+					handle_object_sit_or_stand();
+					// put focus in world when sitting on an object
+					gFocusMgr.setKeyboardFocus(NULL);
+					return TRUE;
+				} // else nothing (fall through to touch)
+			}
 		case CLICK_ACTION_PAY:
 			if ((object && object->flagTakesMoney())
 				|| (parent && parent->flagTakesMoney()))
@@ -330,7 +330,7 @@ BOOL LLToolPie::pickLeftMouseDownCallback()
 			}
 			object = (LLViewerObject*)object->getParent();
 		}
-		if (object && object == gAgent.getAvatarObject())
+		if (object && object == gAgentAvatarp)
 		{
 			// we left clicked on avatar, switch to focus mode
 			LLToolMgr::getInstance()->setTransientTool(LLToolCamera::getInstance());
@@ -411,9 +411,11 @@ ECursorType cursor_from_object(LLViewerObject* object)
 	switch(click_action)
 	{
 	case CLICK_ACTION_SIT:
-		if ((gAgent.getAvatarObject() != NULL) && (!gAgent.getAvatarObject()->isSitting())) // not already sitting?
 		{
-			cursor = UI_CURSOR_TOOLSIT;
+			if (isAgentAvatarValid() && !gAgentAvatarp->isSitting()) // not already sitting?
+			{
+				cursor = UI_CURSOR_TOOLSIT;
+			}
 		}
 		break;
 	case CLICK_ACTION_BUY:
@@ -497,6 +499,8 @@ void LLToolPie::selectionPropertiesReceived()
 BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
 {
 	mHoverPick = gViewerWindow->pickImmediate(x, y, FALSE);
+	// perform a separate pick that detects transparent objects since they respond to 1-click actions
+	LLPickInfo click_action_pick = gViewerWindow->pickImmediate(x, y, TRUE);
 
 	// Show screen-space highlight glow effect
 	bool show_highlight = false;
@@ -508,10 +512,11 @@ BOOL LLToolPie::handleHover(S32 x, S32 y, MASK mask)
 		parent = object->getRootEdit();
 	}
 
-	if (object && useClickAction(mask, object, parent))
+	LLViewerObject* click_action_object = click_action_pick.getObject();
+	if (click_action_object && useClickAction(mask, click_action_object, click_action_object->getRootEdit()))
 	{
 		show_highlight = true;
-		ECursorType cursor = cursor_from_object(object);
+		ECursorType cursor = cursor_from_object(click_action_object);
 		gViewerWindow->setCursor(cursor);
 		lldebugst(LLERR_USER_INPUT) << "hover handled by LLToolPie (inactive)" << llendl;
 	}
diff --git a/indra/newview/lltoolplacer.cpp b/indra/newview/lltoolplacer.cpp
index b10ee590e089372c38cbeaa95d106abf1b9f6963..91f01f0b362a89f403b679f6a4cc0ae5527703ec 100644
--- a/indra/newview/lltoolplacer.cpp
+++ b/indra/newview/lltoolplacer.cpp
@@ -62,6 +62,7 @@
 #include "llviewerobjectlist.h"
 #include "llviewercamera.h"
 #include "llviewerstats.h"
+#include "llvoavatarself.h"
 
 // linden library headers
 #include "llprimitive.h"
@@ -433,7 +434,7 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics )
 
 	// VEFFECT: AddObject
 	LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE);
-	effectp->setSourceObject((LLViewerObject*)gAgent.getAvatarObject());
+	effectp->setSourceObject((LLViewerObject*)gAgentAvatarp);
 	effectp->setPositionGlobal(regionp->getPosGlobalFromRegion(ray_end_region));
 	effectp->setDuration(LL_HUD_DUR_SHORT);
 	effectp->setColor(LLColor4U(gAgent.getEffectColor()));
diff --git a/indra/newview/lltoolselect.cpp b/indra/newview/lltoolselect.cpp
index 6e0c6663e92f9f1511eff7b40ec8c6acf6eafe4d..2065ba17912d78710c9846186d6719301d65c3cc 100644
--- a/indra/newview/lltoolselect.cpp
+++ b/indra/newview/lltoolselect.cpp
@@ -169,8 +169,8 @@ LLObjectSelectionHandle LLToolSelect::handleObjectSelection(const LLPickInfo& pi
 		}
 
 		if (!gAgentCamera.getFocusOnAvatar() &&										// if camera not glued to avatar
-			LLVOAvatar::findAvatarFromAttachment(object) != gAgent.getAvatarObject() &&	// and it's not one of your attachments
-			object != gAgent.getAvatarObject())									// and it's not you
+			LLVOAvatar::findAvatarFromAttachment(object) != gAgentAvatarp &&	// and it's not one of your attachments
+			object != gAgentAvatarp)									// and it's not you
 		{
 			// have avatar turn to face the selected object(s)
 			LLVector3d selection_center = LLSelectMgr::getInstance()->getSelectionCenterGlobal();
diff --git a/indra/newview/lltracker.cpp b/indra/newview/lltracker.cpp
index 9a69adae31da9600cad040330d1f1e001b2a86d3..cc074287c43aea129abc72e4077bee9ec62a9ff5 100644
--- a/indra/newview/lltracker.cpp
+++ b/indra/newview/lltracker.cpp
@@ -39,6 +39,7 @@
 #include "llgl.h"
 #include "llrender.h"
 #include "llinventory.h"
+#include "llinventorydefines.h"
 #include "llpointer.h"
 #include "llstring.h"
 #include "lluuid.h"
@@ -742,10 +743,10 @@ void LLTracker::setLandmarkVisited()
 		LLInventoryItem* i = gInventory.getItem( mTrackedLandmarkItemID );
 		LLViewerInventoryItem* item = (LLViewerInventoryItem*)i;
 		if (   item 
-			&& !(item->getFlags()&LLInventoryItem::II_FLAGS_LANDMARK_VISITED))
+			&& !(item->getFlags()&LLInventoryItemFlags::II_FLAGS_LANDMARK_VISITED))
 		{
 			U32 flags = item->getFlags();
-			flags |= LLInventoryItem::II_FLAGS_LANDMARK_VISITED;
+			flags |= LLInventoryItemFlags::II_FLAGS_LANDMARK_VISITED;
 			item->setFlags(flags);
 			LLMessageSystem* msg = gMessageSystem;
 			msg->newMessage("ChangeInventoryItemFlags");
@@ -798,7 +799,7 @@ void LLTracker::cacheLandmarkPosition()
 			mLandmarkHasBeenVisited = FALSE;
 			LLInventoryItem* item = gInventory.getItem(mTrackedLandmarkItemID);
 			if (   item 
-				&& item->getFlags()&LLInventoryItem::II_FLAGS_LANDMARK_VISITED)
+				&& item->getFlags()&LLInventoryItemFlags::II_FLAGS_LANDMARK_VISITED)
 			{
 				mLandmarkHasBeenVisited = TRUE;
 			}
diff --git a/indra/newview/llurllineeditorctrl.cpp b/indra/newview/llurllineeditorctrl.cpp
index 258c3ddd758b16c9f981635fff78028d2b00c94c..1d2687a8c269073c9893b2777ea99f3ea6922605 100644
--- a/indra/newview/llurllineeditorctrl.cpp
+++ b/indra/newview/llurllineeditorctrl.cpp
@@ -72,7 +72,7 @@ void LLURLLineEditor::cut()
 		if( need_to_rollback )
 		{
 			rollback.doRollback( this );
-			reportBadKeystroke();
+			LLUI::reportBadKeystroke();
 		}
 		else
 		if( mKeystrokeCallback )
@@ -96,8 +96,3 @@ void LLURLLineEditor::copyEscapedURLToClipboard()
 		
 	gClipboard.copyFromString( text_to_copy );
 }
-// Makes UISndBadKeystroke sound
-void LLURLLineEditor::reportBadKeystroke()
-{
-	make_ui_sound("UISndBadKeystroke");
-}
diff --git a/indra/newview/llurllineeditorctrl.h b/indra/newview/llurllineeditorctrl.h
index 618f29dfbf2896af57dcf200ff216e751fd99f9f..ebe417e85549e916cb6307ff251a3e9bcb828c5f 100644
--- a/indra/newview/llurllineeditorctrl.h
+++ b/indra/newview/llurllineeditorctrl.h
@@ -55,8 +55,6 @@ class LLURLLineEditor: public LLLineEditor {
 private:
 	// util function to escape selected text and copy it to clipboard
 	void 			copyEscapedURLToClipboard();
-	// send a beep signal if keystroke is bad. As it is private at LLLineEditor we need own function
-	void			reportBadKeystroke();
 
 	// Helper class to do rollback if needed
 	class LLURLLineEditorRollback
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 23349ab9161bc11c37948fda68c91b01d87e330f..6f037177fabccf8f5c8aa2249540237b2b89c4e3 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -74,6 +74,7 @@
 #include "llnavigationbar.h"
 #include "llfloatertools.h"
 #include "llpaneloutfitsinventory.h"
+#include "llpanellogin.h"
 
 #ifdef TOGGLE_HACKED_GODLIKE_VIEWER
 BOOL 				gHackGodmode = FALSE;
@@ -412,10 +413,8 @@ bool handleHighResSnapshotChanged(const LLSD& newvalue)
 
 bool handleVoiceClientPrefsChanged(const LLSD& newvalue)
 {
-	if(gVoiceClient)
-	{
-		gVoiceClient->updateSettings();
-	}
+	if(LLVoiceClient::getInstance())
+	LLVoiceClient::getInstance()->updateSettings();
 	return true;
 }
 
@@ -443,6 +442,12 @@ bool handleVelocityInterpolate(const LLSD& newvalue)
 	return true;
 }
 
+bool handleForceShowGrid(const LLSD& newvalue)
+{
+	LLPanelLogin::refreshLocation( false );
+	return true;
+}
+
 bool toggle_agent_pause(const LLSD& newvalue)
 {
 	if ( newvalue.asBoolean() )
@@ -648,6 +653,7 @@ void settings_setup_listeners()
 	gSavedSettings.getControl("ShowNavbarFavoritesPanel")->getSignal()->connect(boost::bind(&toggle_show_favorites_panel, _2));
 	gSavedSettings.getControl("ShowDebugAppearanceEditor")->getSignal()->connect(boost::bind(&toggle_show_appearance_editor, _2));
 	gSavedSettings.getControl("ShowObjectRenderingCost")->getSignal()->connect(boost::bind(&toggle_show_object_render_cost, _2));
+	gSavedSettings.getControl("ForceShowGrid")->getSignal()->connect(boost::bind(&handleForceShowGrid, _2));
 }
 
 #if TEST_CACHED_CONTROL
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index f796fb545120fbdfc78b9953988e851c0c1f016b..8e2e2283bf1f5b89e3434f38412c7b93cf1dbd02 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -345,9 +345,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 		const F32 TELEPORT_ARRIVAL_DELAY = 2.f; // Time to preload the world before raising the curtain after we've actually already arrived.
 
 		S32 attach_count = 0;
-		if (gAgent.getAvatarObject())
+		if (isAgentAvatarValid())
 		{
-			attach_count = gAgent.getAvatarObject()->getAttachmentCount();
+			attach_count = gAgentAvatarp->getAttachmentCount();
 		}
 		F32 teleport_save_time = TELEPORT_EXPIRY + TELEPORT_EXPIRY_PER_ATTACHMENT * attach_count;
 		F32 teleport_elapsed = gTeleportDisplayTimer.getElapsedTimeF32();
@@ -1026,11 +1026,10 @@ LLRect get_whole_screen_region()
 
 bool get_hud_matrices(const LLRect& screen_region, glh::matrix4f &proj, glh::matrix4f &model)
 {
-	LLVOAvatar* my_avatarp = gAgent.getAvatarObject();
-	if (my_avatarp && my_avatarp->hasHUDAttachment())
+	if (isAgentAvatarValid() && gAgentAvatarp->hasHUDAttachment())
 	{
 		F32 zoom_level = gAgentCamera.mHUDCurZoom;
-		LLBBox hud_bbox = my_avatarp->getHUDBBox();
+		LLBBox hud_bbox = gAgentAvatarp->getHUDBBox();
 		
 		F32 hud_depth = llmax(1.f, hud_bbox.getExtentLocal().mV[VX] * 1.1f);
 		proj = gl_ortho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, hud_depth);
@@ -1294,7 +1293,7 @@ void render_ui_2d()
 	gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
 
 	// render outline for HUD
-	if (gAgent.getAvatarObject() && gAgentCamera.mHUDCurZoom < 0.98f)
+	if (isAgentAvatarValid() && gAgentCamera.mHUDCurZoom < 0.98f)
 	{
 		glPushMatrix();
 		S32 half_width = (gViewerWindow->getWorldViewWidthScaled() / 2);
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index 7bf7bf5e2fd0171c5548d1c35addbe5265b503d9..8a891b1462906165ae41e95d121c70bbc2b7ffcc 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -44,7 +44,10 @@
 #include "llfolderview.h"
 #include "llviewercontrol.h"
 #include "llconsole.h"
+#include "llinventorydefines.h"
+#include "llinventoryfunctions.h"
 #include "llinventorymodel.h"
+#include "llinventorymodelbackgroundfetch.h"
 #include "llgesturemgr.h"
 #include "llsidetray.h"
 
@@ -102,7 +105,7 @@ class LLInventoryHandler : public LLCommandHandler
 		const std::string verb = params[1].asString();
 		if (verb == "select")
 		{
-			std::vector<LLUUID> items_to_open;
+			uuid_vec_t items_to_open;
 			items_to_open.push_back(inventory_id);
 			//inventory_handler is just a stub, because we don't know from who this offer
 			open_inventory_offer(items_to_open, "inventory_handler");
@@ -513,7 +516,7 @@ void LLViewerInventoryCategory::removeFromServer( void )
 	gAgent.sendReliableMessage();
 }
 
-bool LLViewerInventoryCategory::fetchDescendents()
+bool LLViewerInventoryCategory::fetch()
 {
 	if((VERSION_UNKNOWN == mVersion)
 	   && mDescendentsRequested.hasExpired())	//Expired check prevents multiple downloads.
@@ -538,7 +541,7 @@ bool LLViewerInventoryCategory::fetchDescendents()
 		std::string url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents");
 		if (!url.empty()) //Capability found.  Build up LLSD and use it.
 		{
-			gInventory.startBackgroundFetch(mUUID);			
+			LLInventoryModelBackgroundFetch::instance().start(mUUID);			
 		}
 		else
 		{	//Deprecated, but if we don't have a capability, use the old system.
@@ -791,7 +794,7 @@ void WearOnAvatarCallback::fire(const LLUUID& inv_item)
 
 void ModifiedCOFCallback::fire(const LLUUID& inv_item)
 {
-	LLAppearanceManager::instance().updateAppearanceFromCOF();
+	LLAppearanceMgr::instance().updateAppearanceFromCOF();
 	if( CAMERA_MODE_CUSTOMIZE_AVATAR == gAgentCamera.getCameraMode() )
 	{
 		// If we're in appearance editing mode, the current tab may need to be refreshed
@@ -827,7 +830,7 @@ void ActivateGestureCallback::fire(const LLUUID& inv_item)
 	if (inv_item.isNull())
 		return;
 
-	LLGestureManager::instance().activateGesture(inv_item);
+	LLGestureMgr::instance().activateGesture(inv_item);
 }
 
 void CreateGestureCallback::fire(const LLUUID& inv_item)
@@ -835,7 +838,7 @@ void CreateGestureCallback::fire(const LLUUID& inv_item)
 	if (inv_item.isNull())
 		return;
 
-	LLGestureManager::instance().activateGesture(inv_item);
+	LLGestureMgr::instance().activateGesture(inv_item);
 	
 	LLViewerInventoryItem* item = gInventory.getItem(inv_item);
 	if (!item) return;
@@ -1072,7 +1075,7 @@ const std::string NEW_NOTECARD_NAME = "New Note"; // *TODO:Translate? (probably
 const std::string NEW_GESTURE_NAME = "New Gesture"; // *TODO:Translate? (probably not)
 
 // ! REFACTOR ! Really need to refactor this so that it's not a bunch of if-then statements...
-void menu_create_inventory_item(LLFolderView* folder, LLFolderBridge *bridge, const LLSD& userdata, const LLUUID& default_parent_uuid)
+void menu_create_inventory_item(LLFolderView* root, LLFolderBridge *bridge, const LLSD& userdata, const LLUUID& default_parent_uuid)
 {
 	std::string type_name = userdata.asString();
 	
@@ -1096,7 +1099,7 @@ void menu_create_inventory_item(LLFolderView* folder, LLFolderBridge *bridge, co
 
 		LLUUID category = gInventory.createNewCategory(parent_id, preferred_type, LLStringUtil::null);
 		gInventory.notifyObservers();
-		folder->setSelectionByID(category, TRUE);
+		root->setSelectionByID(category, TRUE);
 	}
 	else if ("lsl" == type_name)
 	{
@@ -1141,7 +1144,7 @@ void menu_create_inventory_item(LLFolderView* folder, LLFolderBridge *bridge, co
 			llwarns << "Can't create unrecognized type " << type_name << llendl;
 		}
 	}
-	folder->setNeedsAutoRename(TRUE);	
+	root->setNeedsAutoRename(TRUE);	
 }
 
 LLAssetType::EType LLViewerInventoryItem::getType() const
@@ -1476,7 +1479,7 @@ EWearableType LLViewerInventoryItem::getWearableType() const
 		llwarns << "item is not a wearable" << llendl;
 		return WT_INVALID;
 	}
-	return EWearableType(getFlags() & LLInventoryItem::II_FLAGS_WEARABLES_MASK);
+	return EWearableType(getFlags() & LLInventoryItemFlags::II_FLAGS_WEARABLES_MASK);
 }
 
 
diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
index 3d3f80b9b5752fe3d2ecf9cf3eca0b9c5acdef1c..2db88c2ff88f6b996300ea196ba2b629cc7e63f6 100644
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -212,7 +212,7 @@ class LLViewerInventoryCategory  : public LLInventoryCategory
 	void setVersion(S32 version) { mVersion = version; }
 
 	// Returns true if a fetch was issued.
-	bool fetchDescendents();
+	bool fetch();
 
 	// used to help make cacheing more robust - for example, if
 	// someone is getting 4 packets but logs out after 3. the viewer
@@ -356,7 +356,7 @@ void copy_inventory_from_notecard(const LLUUID& object_id,
 								  U32 callback_id = 0);
 
 
-void menu_create_inventory_item(LLFolderView* folder,
+void menu_create_inventory_item(LLFolderView* root,
 								LLFolderBridge* bridge,
 								const LLSD& userdata,
 								const LLUUID& default_parent_uuid = LLUUID::null);
diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp
index cbec2c890f6075e5e488f9236329dc9a20029966..dd7390a907b9d0bdcb26b7eacab06c0dbe43937e 100644
--- a/indra/newview/llviewerkeyboard.cpp
+++ b/indra/newview/llviewerkeyboard.cpp
@@ -877,7 +877,7 @@ EKeyboardMode LLViewerKeyboard::getMode()
 	{
 		return MODE_EDIT_AVATAR;
 	}
-	else if (gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting())
+	else if (isAgentAvatarValid() && gAgentAvatarp->isSitting())
 	{
 		return MODE_SITTING;
 	}
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 2fcd3f11140c369fcc25bdecc136cb5247d83467..170eb7ae860b95b7abd81bc0643220e221125b29 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -45,6 +45,7 @@
 #include "llviewertexturelist.h"
 #include "llvovolume.h"
 #include "llpluginclassmedia.h"
+#include "llplugincookiestore.h"
 #include "llviewerwindow.h"
 #include "llfocusmgr.h"
 #include "llcallbacklist.h"
@@ -256,6 +257,43 @@ LOG_CLASS(LLMimeDiscoveryResponder);
 		LLViewerMediaImpl *mMediaImpl;
 		bool mInitialized;
 };
+
+class LLViewerMediaOpenIDResponder : public LLHTTPClient::Responder
+{
+LOG_CLASS(LLViewerMediaOpenIDResponder);
+public:
+	LLViewerMediaOpenIDResponder( )
+	{
+	}
+
+	~LLViewerMediaOpenIDResponder()
+	{
+	}
+
+	/* virtual */ void completedHeader(U32 status, const std::string& reason, const LLSD& content)
+	{
+		LL_DEBUGS("MediaAuth") << "status = " << status << ", reason = " << reason << LL_ENDL;
+		LL_DEBUGS("MediaAuth") << content << LL_ENDL;
+		std::string cookie = content["set-cookie"].asString();
+		
+		LLViewerMedia::openIDCookieResponse(cookie);
+	}
+
+	/* virtual */ void completedRaw(
+		U32 status,
+		const std::string& reason,
+		const LLChannelDescriptors& channels,
+		const LLIOPipe::buffer_ptr_t& buffer)
+	{
+		// This is just here to disable the default behavior (attempting to parse the response as llsd).
+		// We don't care about the content of the response, only the set-cookie header.
+	}
+
+};
+
+LLPluginCookieStore *LLViewerMedia::sCookieStore = NULL;
+LLURL LLViewerMedia::sOpenIDURL;
+std::string LLViewerMedia::sOpenIDCookie;
 static LLViewerMedia::impl_list sViewerMediaImplList;
 static LLViewerMedia::impl_id_map sViewerMediaTextureIDMap;
 static LLTimer sMediaCreateTimer;
@@ -264,6 +302,8 @@ static F32 sGlobalVolume = 1.0f;
 static F64 sLowestLoadableImplInterest = 0.0f;
 static bool sAnyMediaShowing = false;
 static boost::signals2::connection sTeleportFinishConnection;
+static std::string sUpdatedCookies;
+static const char *PLUGIN_COOKIE_FILE_NAME = "plugin_cookies.txt";
 
 //////////////////////////////////////////////////////////////////////////////////////////
 static void add_media_impl(LLViewerMediaImpl* media)
@@ -399,7 +439,6 @@ viewer_media_t LLViewerMedia::updateMediaImpl(LLMediaEntry* media_entry, const s
 		media_impl->setHomeURL(media_entry->getHomeURL());
 		media_impl->mMediaAutoPlay = media_entry->getAutoPlay();
 		media_impl->mMediaEntryURL = media_entry->getCurrentURL();
-		
 		if(media_impl->isAutoPlayable())
 		{
 			needs_navigate = true;
@@ -698,6 +737,13 @@ static bool proximity_comparitor(const LLViewerMediaImpl* i1, const LLViewerMedi
 void LLViewerMedia::updateMedia(void *dummy_arg)
 {
 	sAnyMediaShowing = false;
+	sUpdatedCookies = getCookieStore()->getChangedCookies();
+	if(!sUpdatedCookies.empty())
+	{
+		lldebugs << "updated cookies will be sent to all loaded plugins: " << llendl;
+		lldebugs << sUpdatedCookies << llendl;
+	}
+	
 	impl_list::iterator iter = sViewerMediaImplList.begin();
 	impl_list::iterator end = sViewerMediaImplList.end();
 
@@ -998,6 +1044,9 @@ void LLViewerMedia::clearAllCookies()
 		}
 	}
 	
+	// Clear all cookies from the cookie store
+	getCookieStore()->setAllCookies("");
+
 	// FIXME: this may not be sufficient, since the on-disk cookie file won't get written until some browser instance exits cleanly.
 	// It also won't clear cookies for other accounts, or for any account if we're not logged in, and won't do anything at all if there are no webkit plugins loaded.
 	// Until such time as we can centralize cookie storage, the following hack should cover these cases:
@@ -1008,6 +1057,7 @@ void LLViewerMedia::clearAllCookies()
 	// Places that cookie files can be:
 	// <getOSUserAppDir>/browser_profile/cookies
 	// <getOSUserAppDir>/first_last/browser_profile/cookies  (note that there may be any number of these!)
+	// <getOSUserAppDir>/first_last/plugin_cookies.txt  (note that there may be any number of these!)
 	
 	std::string base_dir = gDirUtilp->getOSUserAppDir() + gDirUtilp->getDirDelimiter();
 	std::string target;
@@ -1040,9 +1090,21 @@ void LLViewerMedia::clearAllCookies()
 		{	
 			LLFile::remove(target);
 		}
+		
+		// Other accounts may have new-style cookie files too -- delete them as well
+		target = base_dir;
+		target += filename;
+		target += gDirUtilp->getDirDelimiter();
+		target += PLUGIN_COOKIE_FILE_NAME;
+		lldebugs << "target = " << target << llendl;
+		if(LLFile::isfile(target))
+		{	
+			LLFile::remove(target);
+		}
 	}
 	
-	
+	// If we have an OpenID cookie, re-add it to the cookie store.
+	setOpenIDCookie();
 }
 	
 /////////////////////////////////////////////////////////////////////////////////////////
@@ -1095,6 +1157,185 @@ void LLViewerMedia::setProxyConfig(bool enable, const std::string &host, int por
 
 /////////////////////////////////////////////////////////////////////////////////////////
 // static 
+/////////////////////////////////////////////////////////////////////////////////////////
+// static
+LLPluginCookieStore *LLViewerMedia::getCookieStore()
+{
+	if(sCookieStore == NULL)
+	{
+		sCookieStore = new LLPluginCookieStore;
+	}
+	
+	return sCookieStore;
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// static
+void LLViewerMedia::loadCookieFile()
+{
+	// build filename for each user
+	std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PLUGIN_COOKIE_FILE_NAME);
+
+	if (resolved_filename.empty())
+	{
+		llinfos << "can't get path to plugin cookie file - probably not logged in yet." << llendl;
+		return;
+	}
+	
+	// open the file for reading
+	llifstream file(resolved_filename);
+	if (!file.is_open())
+	{
+		llwarns << "can't load plugin cookies from file \"" << PLUGIN_COOKIE_FILE_NAME << "\"" << llendl;
+		return;
+	}
+	
+	getCookieStore()->readAllCookies(file, true);
+
+	file.close();
+	
+	// send the clear_cookies message to all loaded plugins
+	impl_list::iterator iter = sViewerMediaImplList.begin();
+	impl_list::iterator end = sViewerMediaImplList.end();
+	for (; iter != end; iter++)
+	{
+		LLViewerMediaImpl* pimpl = *iter;
+		if(pimpl->mMediaSource)
+		{
+			pimpl->mMediaSource->clear_cookies();
+		}
+	}
+	
+	// If we have an OpenID cookie, re-add it to the cookie store.
+	setOpenIDCookie();
+}
+
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// static
+void LLViewerMedia::saveCookieFile()
+{
+	// build filename for each user
+	std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PLUGIN_COOKIE_FILE_NAME);
+
+	if (resolved_filename.empty())
+	{
+		llinfos << "can't get path to plugin cookie file - probably not logged in yet." << llendl;
+		return;
+	}
+
+	// open a file for writing
+	llofstream file (resolved_filename);
+	if (!file.is_open())
+	{
+		llwarns << "can't open plugin cookie file \"" << PLUGIN_COOKIE_FILE_NAME << "\" for writing" << llendl;
+		return;
+	}
+
+	getCookieStore()->writePersistentCookies(file);
+
+	file.close();
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// static
+void LLViewerMedia::addCookie(const std::string &name, const std::string &value, const std::string &domain, const LLDate &expires, const std::string &path, bool secure)
+{
+	std::stringstream cookie;
+	
+	cookie << name << "=" << LLPluginCookieStore::quoteString(value);
+	
+	if(expires.notNull())
+	{
+		cookie << "; expires=" << expires.asRFC1123();
+	}
+	
+	cookie << "; domain=" << domain;
+
+	cookie << "; path=" << path;
+	
+	if(secure)
+	{
+		cookie << "; secure";
+	}
+	
+	getCookieStore()->setCookies(cookie.str());
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// static
+void LLViewerMedia::addSessionCookie(const std::string &name, const std::string &value, const std::string &domain, const std::string &path, bool secure)
+{
+	// A session cookie just has a NULL date.
+	addCookie(name, value, domain, LLDate(), path, secure);
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// static
+void LLViewerMedia::removeCookie(const std::string &name, const std::string &domain, const std::string &path )
+{
+	// To remove a cookie, add one with the same name, domain, and path that expires in the past.
+	
+	addCookie(name, "", domain, LLDate(LLDate::now().secondsSinceEpoch() - 1.0), path);
+}
+
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// static
+void LLViewerMedia::setOpenIDCookie()
+{
+	if(!sOpenIDCookie.empty())
+	{
+		getCookieStore()->setCookiesFromHost(sOpenIDCookie, sOpenIDURL.mAuthority);
+	}
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// static
+void LLViewerMedia::openIDSetup(const std::string &openid_url, const std::string &openid_token)
+{
+	LL_DEBUGS("MediaAuth") << "url = \"" << openid_url << "\", token = \"" << openid_token << "\"" << LL_ENDL;
+
+	// post the token to the url 
+	// the responder will need to extract the cookie(s).
+
+	// Save the OpenID URL for later -- we may need the host when adding the cookie.
+	sOpenIDURL.init(openid_url.c_str());
+	
+	// We shouldn't ever do this twice, but just in case this code gets repurposed later, clear existing cookies.
+	sOpenIDCookie.clear();
+
+	LLSD headers = LLSD::emptyMap();
+	// Keep LLHTTPClient from adding an "Accept: application/llsd+xml" header
+	headers["Accept"] = "*/*";
+	// and use the expected content-type for a post, instead of the LLHTTPClient::postRaw() default of "application/octet-stream"
+	headers["Content-Type"] = "application/x-www-form-urlencoded";
+
+	// postRaw() takes ownership of the buffer and releases it later, so we need to allocate a new buffer here.
+	size_t size = openid_token.size();
+	U8 *data = new U8[size];
+	memcpy(data, openid_token.data(), size);
+
+	LLHTTPClient::postRaw( 
+		openid_url, 
+		data, 
+		size, 
+		new LLViewerMediaOpenIDResponder(),
+		headers);
+			
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// static
+void LLViewerMedia::openIDCookieResponse(const std::string &cookie)
+{
+	LL_DEBUGS("MediaAuth") << "Cookie received: \"" << cookie << "\"" << LL_ENDL;
+	
+	sOpenIDCookie += cookie;
+
+	setOpenIDCookie();
+}
+
 bool LLViewerMedia::hasInWorldMedia()
 {
 	if (sInWorldMediaDisabled) return false;
@@ -1232,11 +1473,6 @@ LLViewerMediaImpl::LLViewerMediaImpl(	  const LLUUID& texture_id,
 //////////////////////////////////////////////////////////////////////////////////////////
 LLViewerMediaImpl::~LLViewerMediaImpl()
 {
-	if( gEditMenuHandler == this )
-	{
-		gEditMenuHandler = NULL;
-	}
-	
 	destroyMediaSource();
 	
 	LLViewerMediaTexture::removeMediaImplFromTexture(mTextureId) ;
@@ -1296,7 +1532,10 @@ void LLViewerMediaImpl::createMediaSource()
 	}
 	else if(! mMimeType.empty())
 	{
-		initializeMedia(mMimeType);
+		if (!initializeMedia(mMimeType))
+		{
+			LL_WARNS("Media") << "Failed to initialize media for mime type " << mMimeType << LL_ENDL;
+		}
 	}
 }
 
@@ -1455,6 +1694,17 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type)
 			media_source->clear_cache();
 		}
 		
+		// TODO: Only send cookies to plugins that need them
+		//  Ideally, the plugin should tell us whether it handles cookies or not -- either via the init response or through a separate message.
+		//  Due to the ordering of messages, it's possible we wouldn't get that information back in time to send cookies before sending a navigate message,
+		//  which could cause odd race conditions.
+		std::string all_cookies = LLViewerMedia::getCookieStore()->getAllCookies();
+		lldebugs << "setting cookies: " << all_cookies << llendl;
+		if(!all_cookies.empty())
+		{
+			media_source->set_cookies(all_cookies);
+		}
+				
 		mMediaSource = media_source;
 
 		updateVolume();
@@ -2152,6 +2402,16 @@ void LLViewerMediaImpl::update()
 			}
 		}
 	}
+	else
+	{
+		// If we didn't just create the impl, it may need to get cookie updates.
+		if(!sUpdatedCookies.empty())
+		{
+			// TODO: Only send cookies to plugins that need them
+			mMediaSource->set_cookies(sUpdatedCookies);
+		}
+	}
+
 	
 	if(mMediaSource == NULL)
 	{
@@ -2612,6 +2872,13 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla
 	emitEvent(plugin, event);
 }
 
+////////////////////////////////////////////////////////////////////////////////
+// virtual
+void LLViewerMediaImpl::handleCookieSet(LLPluginClassMedia* self, const std::string &cookie)
+{
+	LLViewerMedia::getCookieStore()->setCookies(cookie);
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 // virtual
 void
@@ -2701,7 +2968,13 @@ void LLViewerMediaImpl::calculateInterest()
 	if(!mObjectList.empty())
 	{
 		// Just use the first object in the list.  We could go through the list and find the closest object, but this should work well enough.
-		LLVector3d global_delta = gAgent.getPositionGlobal() - (*mObjectList.begin())->getPositionGlobal();
+		std::list< LLVOVolume* >::iterator iter = mObjectList.begin() ;
+		LLVOVolume* objp = *iter ;
+		llassert_always(objp != NULL) ;
+
+		LLVector3d obj_global = objp->getPositionGlobal() ;
+		LLVector3d agent_global = gAgent.getPositionGlobal() ;
+		LLVector3d global_delta = agent_global - obj_global ;
 		mProximityDistance = global_delta.magVecSquared();  // use distance-squared because it's cheaper and sorts the same.
 	}
 	
@@ -3025,7 +3298,7 @@ bool LLViewerMediaImpl::isObjectAttachedToAnotherAvatar(LLVOVolume *obj)
 		if (NULL != object)
 		{
 			LLVOAvatar *avatar = object->asAvatar();
-			if (NULL != avatar && avatar != gAgent.getAvatarObject())
+			if ((NULL != avatar) && (avatar != gAgentAvatarp))
 			{
 				result = true;
 				break;
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index f9870fb3b9a5947298e9957abb05a22b4543d067..e829d7a5b47bb9f15e07d9bee4198f4d5c126d79 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -44,12 +44,15 @@
 #include "llpluginclassmedia.h"
 #include "v4color.h"
 
+#include "llurl.h"
+
 class LLViewerMediaImpl;
 class LLUUID;
 class LLViewerMediaTexture;
 class LLMediaEntry;
 class LLVOVolume;
 class LLMimeDiscoveryResponder;
+class LLPluginCookieStore;
 
 typedef LLPointer<LLViewerMediaImpl> viewer_media_t;
 ///////////////////////////////////////////////////////////////////////////////
@@ -145,8 +148,23 @@ class LLViewerMedia
 	// Set the proxy config for all loaded plugins
 	static void setProxyConfig(bool enable, const std::string &host, int port);
 	
+	static LLPluginCookieStore *getCookieStore();
+	static void loadCookieFile();
+	static void saveCookieFile();
+	static void addCookie(const std::string &name, const std::string &value, const std::string &domain, const LLDate &expires, const std::string &path = std::string("/"), bool secure = false );
+	static void addSessionCookie(const std::string &name, const std::string &value, const std::string &domain, const std::string &path = std::string("/"), bool secure = false );
+	static void removeCookie(const std::string &name, const std::string &domain, const std::string &path = std::string("/") );
+
+	static void openIDSetup(const std::string &openid_url, const std::string &openid_token);
+	static void openIDCookieResponse(const std::string &cookie);
+	
 private:
+	static void setOpenIDCookie();
 	static void onTeleportFinished();
+	
+	static LLPluginCookieStore *sCookieStore;
+	static LLURL sOpenIDURL;
+	static std::string sOpenIDCookie;
 };
 
 // Implementation functions not exported into header file
@@ -294,6 +312,7 @@ class LLViewerMediaImpl
 
 	// Inherited from LLPluginClassMediaOwner
 	/*virtual*/ void handleMediaEvent(LLPluginClassMedia* plugin, LLPluginClassMediaOwner::EMediaEvent);
+	/*virtual*/ void handleCookieSet(LLPluginClassMedia* self, const std::string &cookie);
 
 	// LLEditMenuHandler overrides
 	/*virtual*/ void	cut();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index d79cb857309cb5fc4b1a4affc1f900f917b586e6..64967466fbdaf81fda5e0d0d3cd86ea3edfd7fae 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -73,6 +73,8 @@
 #include "llhudmanager.h"
 #include "llimview.h"
 #include "llinventorybridge.h"
+#include "llinventorydefines.h"
+#include "llinventoryfunctions.h"
 #include "llpanellogin.h"
 #include "llpanelblockedlist.h"
 #include "llmenucommands.h"
@@ -135,6 +137,7 @@ extern BOOL gDebugWindowProc;
 LLMenuBarGL		*gMenuBarView = NULL;
 LLViewerMenuHolderGL	*gMenuHolder = NULL;
 LLMenuGL		*gPopupMenuView = NULL;
+LLMenuGL		*gEditMenu = NULL;
 LLMenuBarGL		*gLoginMenuBarView = NULL;
 
 // Pie menus
@@ -382,8 +385,10 @@ void init_menus()
 	///
 	/// Context menus
 	///
+
 	const widget_registry_t& registry =
 		LLViewerMenuHolderGL::child_registry_t::instance();
+	gEditMenu = LLUICtrlFactory::createFromFile<LLMenuGL>("menu_edit.xml", gMenuHolder, registry);
 	gMenuAvatarSelf = LLUICtrlFactory::createFromFile<LLContextMenu>(
 		"menu_avatar_self.xml", gMenuHolder, registry);
 	gMenuAvatarOther = LLUICtrlFactory::createFromFile<LLContextMenu>(
@@ -1801,9 +1806,10 @@ class LLAdvancedDebugAvatarTextures : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
 	{
-#ifndef LL_RELEASE_FOR_DOWNLOAD
-		handle_debug_avatar_textures(NULL);
-#endif
+		if (gAgent.isGodlike())
+		{
+			handle_debug_avatar_textures(NULL);
+		}
 		return true;
 	}
 };
@@ -2692,11 +2698,10 @@ class LLSelfEnableRemoveAllAttachments : public view_listener_t
 	bool handleEvent(const LLSD& userdata)
 	{
 		bool new_value = false;
-		if (gAgent.getAvatarObject())
+		if (isAgentAvatarValid())
 		{
-			LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-			for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin(); 
-				 iter != avatarp->mAttachmentPoints.end(); )
+			for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
+				 iter != gAgentAvatarp->mAttachmentPoints.end(); )
 			{
 				LLVOAvatar::attachment_map_t::iterator curiter = iter++;
 				LLViewerJointAttachment* attachment = curiter->second;
@@ -2824,9 +2829,9 @@ bool handle_go_to()
 
 	LLViewerParcelMgr::getInstance()->deselectLand();
 
-	if (gAgent.getAvatarObject() && !gSavedSettings.getBOOL("AutoPilotLocksCamera"))
+	if (isAgentAvatarValid() && !gSavedSettings.getBOOL("AutoPilotLocksCamera"))
 	{
-		gAgentCamera.setFocusGlobal(gAgentCamera.getFocusTargetGlobal(), gAgent.getAvatarObject()->getID());
+		gAgentCamera.setFocusGlobal(gAgentCamera.getFocusTargetGlobal(), gAgentAvatarp->getID());
 	}
 	else 
 	{
@@ -3365,7 +3370,7 @@ class LLSelfStandUp : public view_listener_t
 
 bool enable_standup_self()
 {
-	bool new_value = gAgent.getAvatarObject() && gAgent.getAvatarObject()->isSitting();
+	bool new_value = isAgentAvatarValid() && gAgentAvatarp->isSitting();
 	return new_value;
 }
 
@@ -3694,9 +3699,9 @@ class LLLandSit : public view_listener_t
 		LLVector3d posGlobal = LLToolPie::getInstance()->getPick().mPosGlobal;
 		
 		LLQuaternion target_rot;
-		if (gAgent.getAvatarObject())
+		if (isAgentAvatarValid())
 		{
-			target_rot = gAgent.getAvatarObject()->getRotation();
+			target_rot = gAgentAvatarp->getRotation();
 		}
 		else
 		{
@@ -3859,15 +3864,15 @@ BOOL enable_deed_object_to_group(void*)
  * No longer able to support viewer side manipulations in this way
  *
 void god_force_inv_owner_permissive(LLViewerObject* object,
-									InventoryObjectList* inventory,
+									LLInventoryObject::object_list_t* inventory,
 									S32 serial_num,
 									void*)
 {
 	typedef std::vector<LLPointer<LLViewerInventoryItem> > item_array_t;
 	item_array_t items;
 
-	InventoryObjectList::const_iterator inv_it = inventory->begin();
-	InventoryObjectList::const_iterator inv_end = inventory->end();
+	LLInventoryObject::object_list_t::const_iterator inv_it = inventory->begin();
+	LLInventoryObject::object_list_t::const_iterator inv_end = inventory->end();
 	for ( ; inv_it != inv_end; ++inv_it)
 	{
 		if(((*inv_it)->getType() != LLAssetType::AT_CATEGORY))
@@ -4587,13 +4592,9 @@ BOOL sitting_on_selection()
 	}
 
 	// Need to determine if avatar is sitting on this object
-	LLVOAvatar* avatar = gAgent.getAvatarObject();
-	if (!avatar)
-	{
-		return FALSE;
-	}
+	if (!isAgentAvatarValid()) return FALSE;
 
-	return (avatar->isSitting() && avatar->getRoot() == root_object);
+	return (gAgentAvatarp->isSitting() && gAgentAvatarp->getRoot() == root_object);
 }
 
 class LLToolsSaveToInventory : public view_listener_t
@@ -5186,10 +5187,6 @@ void toggle_debug_menus(void*)
 {
 	BOOL visible = ! gSavedSettings.getBOOL("UseDebugMenus");
 	gSavedSettings.setBOOL("UseDebugMenus", visible);
-	if(visible)
-	{
-		//LLFirstUse::useDebugMenus();
-	}
 	show_debug_menus();
 }
 
@@ -5334,6 +5331,16 @@ class LLWorldCreateLandmark : public view_listener_t
 	}
 };
 
+class LLWorldPlaceProfile : public view_listener_t
+{
+	bool handleEvent(const LLSD& userdata)
+	{
+		LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent"));
+
+		return true;
+	}
+};
+
 void handle_look_at_selection(const LLSD& param)
 {
 	const F32 PADDING_FACTOR = 1.75f;
@@ -5846,7 +5853,7 @@ class LLObjectAttachToAvatar : public view_listener_t
 			S32 index = userdata.asInteger();
 			LLViewerJointAttachment* attachment_point = NULL;
 			if (index > 0)
-				attachment_point = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, index, (LLViewerJointAttachment*)NULL);
+				attachment_point = get_if_there(gAgentAvatarp->mAttachmentPoints, index, (LLViewerJointAttachment*)NULL);
 			confirm_replace_attachment(0, attachment_point);
 		}
 		return true;
@@ -5867,8 +5874,8 @@ void near_attach_object(BOOL success, void *user_data)
 		U8 attachment_id = 0;
 		if (attachment)
 		{
-			for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgent.getAvatarObject()->mAttachmentPoints.begin();
-				 iter != gAgent.getAvatarObject()->mAttachmentPoints.end(); ++iter)
+			for (LLVOAvatar::attachment_map_t::const_iterator iter = gAgentAvatarp->mAttachmentPoints.begin();
+				 iter != gAgentAvatarp->mAttachmentPoints.end(); ++iter)
 			{
 				if (iter->second == attachment)
 				{
@@ -5993,7 +6000,7 @@ class LLAttachmentDetachFromPoint : public view_listener_t
 {
 	bool handleEvent(const LLSD& user_data)
 	{
-		const LLViewerJointAttachment *attachment = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, user_data.asInteger(), (LLViewerJointAttachment*)NULL);
+		const LLViewerJointAttachment *attachment = get_if_there(gAgentAvatarp->mAttachmentPoints, user_data.asInteger(), (LLViewerJointAttachment*)NULL);
 		if (attachment->getNumObjects() > 0)
 		{
 			gMessageSystem->newMessage("ObjectDetach");
@@ -6021,7 +6028,7 @@ static bool onEnableAttachmentLabel(LLUICtrl* ctrl, const LLSD& data)
 	LLMenuItemGL* menu = dynamic_cast<LLMenuItemGL*>(ctrl);
 	if (menu)
 	{
-		const LLViewerJointAttachment *attachment = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, data["index"].asInteger(), (LLViewerJointAttachment*)NULL);
+		const LLViewerJointAttachment *attachment = get_if_there(gAgentAvatarp->mAttachmentPoints, data["index"].asInteger(), (LLViewerJointAttachment*)NULL);
 		if (attachment)
 		{
 			label = data["label"].asString();
@@ -6139,7 +6146,7 @@ class LLAttachmentEnableDrop : public view_listener_t
 		if (object && LLSelectMgr::getInstance()->getSelection()->contains(object,SELECT_ALL_TES ))
 		{
     		S32 attachmentID  = ATTACHMENT_ID_FROM_STATE(object->getState());
-			attachment = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, attachmentID, (LLViewerJointAttachment*)NULL);
+			attachment = get_if_there(gAgentAvatarp->mAttachmentPoints, attachmentID, (LLViewerJointAttachment*)NULL);
 
 			if (attachment)
 			{
@@ -6157,11 +6164,11 @@ class LLAttachmentEnableDrop : public view_listener_t
 						// if a fetch is already out there (being sent from a slow sim)
 						// we refetch and there are 2 fetches
 						LLWornItemFetchedObserver* wornItemFetched = new LLWornItemFetchedObserver();
-						LLInventoryFetchObserver::item_ref_t items; //add item to the inventory item to be fetched
+						uuid_vec_t items; //add item to the inventory item to be fetched
 						
 						items.push_back((*attachment_iter)->getItemID());
 						
-						wornItemFetched->fetchItems(items);
+						wornItemFetched->fetch(items);
 						gInventory.addObserver(wornItemFetched);
 					}
 				}
@@ -6271,8 +6278,8 @@ class LLAttachmentPointFilled : public view_listener_t
 	bool handleEvent(const LLSD& user_data)
 	{
 		bool enable = false;
-		LLVOAvatar::attachment_map_t::iterator found_it = gAgent.getAvatarObject()->mAttachmentPoints.find(user_data.asInteger());
-		if (found_it != gAgent.getAvatarObject()->mAttachmentPoints.end())
+		LLVOAvatar::attachment_map_t::iterator found_it = gAgentAvatarp->mAttachmentPoints.find(user_data.asInteger());
+		if (found_it != gAgentAvatarp->mAttachmentPoints.end())
 		{
 			enable = found_it->second->getNumObjects() > 0;
 		}
@@ -6468,13 +6475,13 @@ void handle_selected_texture_info(void*)
 
 void handle_test_male(void*)
 {
-	LLAppearanceManager::instance().wearOutfitByName("Male Shape & Outfit");
+	LLAppearanceMgr::instance().wearOutfitByName("Male Shape & Outfit");
 	//gGestureList.requestResetFromServer( TRUE );
 }
 
 void handle_test_female(void*)
 {
-	LLAppearanceManager::instance().wearOutfitByName("Female Shape & Outfit");
+	LLAppearanceMgr::instance().wearOutfitByName("Female Shape & Outfit");
 	//gGestureList.requestResetFromServer( FALSE );
 }
 
@@ -6489,15 +6496,10 @@ void handle_toggle_pg(void*)
 
 void handle_dump_attachments(void*)
 {
-	LLVOAvatar* avatar = gAgent.getAvatarObject();
-	if( !avatar )
-	{
-		llinfos << "NO AVATAR" << llendl;
-		return;
-	}
+	if(!isAgentAvatarValid()) return;
 
-	for (LLVOAvatar::attachment_map_t::iterator iter = avatar->mAttachmentPoints.begin(); 
-		 iter != avatar->mAttachmentPoints.end(); )
+	for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
+		 iter != gAgentAvatarp->mAttachmentPoints.end(); )
 	{
 		LLVOAvatar::attachment_map_t::iterator curiter = iter++;
 		LLViewerJointAttachment* attachment = curiter->second;
@@ -6917,7 +6919,7 @@ void reload_vertex_shader(void *)
 
 void handle_dump_avatar_local_textures(void*)
 {
-	gAgent.getAvatarObject()->dumpLocalTextures();
+	gAgentAvatarp->dumpLocalTextures();
 }
 
 void handle_dump_timers()
@@ -6937,86 +6939,83 @@ void handle_debug_avatar_textures(void*)
 void handle_grab_texture(void* data)
 {
 	ETextureIndex tex_index = (ETextureIndex)((intptr_t)data);
-	const LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (avatarp)
-	{
-		// MULTI-WEARABLE: change to support an index
-		const LLUUID& asset_id = avatarp->grabLocalTexture(tex_index, 0);
-		LL_INFOS("texture") << "Adding baked texture " << asset_id << " to inventory." << llendl;
-		LLAssetType::EType asset_type = LLAssetType::AT_TEXTURE;
-		LLInventoryType::EType inv_type = LLInventoryType::IT_TEXTURE;
-		const LLUUID folder_id = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(asset_type));
-		if(folder_id.notNull())
-		{
-			std::string name = "Unknown";
-			const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(tex_index);
-			if (texture_dict->mIsBakedTexture)
-			{
-				EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
-				name = "Baked " + LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index)->mNameCapitalized;
-			}
-			name += " Texture";
-
-			LLUUID item_id;
-			item_id.generate();
-			LLPermissions perm;
-			perm.init(gAgentID,
-					  gAgentID,
-					  LLUUID::null,
-					  LLUUID::null);
-			U32 next_owner_perm = PERM_MOVE | PERM_TRANSFER;
-			perm.initMasks(PERM_ALL,
-						   PERM_ALL,
-						   PERM_NONE,
-						   PERM_NONE,
-						   next_owner_perm);
-			time_t creation_date_now = time_corrected();
-			LLPointer<LLViewerInventoryItem> item
-				= new LLViewerInventoryItem(item_id,
-											folder_id,
-											perm,
-											asset_id,
-											asset_type,
-											inv_type,
-											name,
-											LLStringUtil::null,
-											LLSaleInfo::DEFAULT,
-											LLInventoryItem::II_FLAGS_NONE,
-											creation_date_now);
-
-			item->updateServer(TRUE);
-			gInventory.updateItem(item);
-			gInventory.notifyObservers();
-
-			// Show the preview panel for textures to let
-			// user know that the image is now in inventory.
-			LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel();
-			if(active_panel)
-			{
-				LLFocusableElement* focus_ctrl = gFocusMgr.getKeyboardFocus();
-
-				active_panel->setSelection(item_id, TAKE_FOCUS_NO);
-				active_panel->openSelected();
-				//LLFloaterInventory::dumpSelectionInformation((void*)view);
-				// restore keyboard focus
-				gFocusMgr.setKeyboardFocus(focus_ctrl);
-			}
-		}
-		else
-		{
-			llwarns << "Can't find a folder to put it in" << llendl;
+	if (!isAgentAvatarValid()) return;
+
+	// MULTI-WEARABLE: change to support an index
+	const LLUUID& asset_id = gAgentAvatarp->grabLocalTexture(tex_index, 0);
+	LL_INFOS("texture") << "Adding baked texture " << asset_id << " to inventory." << llendl;
+	LLAssetType::EType asset_type = LLAssetType::AT_TEXTURE;
+	LLInventoryType::EType inv_type = LLInventoryType::IT_TEXTURE;
+	const LLUUID folder_id = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(asset_type));
+	if(folder_id.notNull())
+	{
+		std::string name = "Unknown";
+		const LLVOAvatarDictionary::TextureEntry *texture_dict = LLVOAvatarDictionary::getInstance()->getTexture(tex_index);
+		if (texture_dict->mIsBakedTexture)
+		{
+			EBakedTextureIndex baked_index = texture_dict->mBakedTextureIndex;
+			name = "Baked " + LLVOAvatarDictionary::getInstance()->getBakedTexture(baked_index)->mNameCapitalized;
+		}
+		name += " Texture";
+
+		LLUUID item_id;
+		item_id.generate();
+		LLPermissions perm;
+		perm.init(gAgentID,
+				  gAgentID,
+				  LLUUID::null,
+				  LLUUID::null);
+		U32 next_owner_perm = PERM_MOVE | PERM_TRANSFER;
+		perm.initMasks(PERM_ALL,
+					   PERM_ALL,
+					   PERM_NONE,
+					   PERM_NONE,
+					   next_owner_perm);
+		time_t creation_date_now = time_corrected();
+		LLPointer<LLViewerInventoryItem> item
+			= new LLViewerInventoryItem(item_id,
+										folder_id,
+										perm,
+										asset_id,
+										asset_type,
+										inv_type,
+										name,
+										LLStringUtil::null,
+										LLSaleInfo::DEFAULT,
+										LLInventoryItemFlags::II_FLAGS_NONE,
+										creation_date_now);
+
+		item->updateServer(TRUE);
+		gInventory.updateItem(item);
+		gInventory.notifyObservers();
+
+		// Show the preview panel for textures to let
+		// user know that the image is now in inventory.
+		LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel();
+		if(active_panel)
+		{
+			LLFocusableElement* focus_ctrl = gFocusMgr.getKeyboardFocus();
+
+			active_panel->setSelection(item_id, TAKE_FOCUS_NO);
+			active_panel->openSelected();
+			//LLFloaterInventory::dumpSelectionInformation((void*)view);
+			// restore keyboard focus
+			gFocusMgr.setKeyboardFocus(focus_ctrl);
 		}
 	}
+	else
+	{
+		llwarns << "Can't find a folder to put it in" << llendl;
+	}
 }
 
 BOOL enable_grab_texture(void* data)
 {
 	ETextureIndex index = (ETextureIndex)((intptr_t)data);
-	const LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (avatarp)
+	if (isAgentAvatarValid())
 	{
 		// MULTI-WEARABLE:
-		return avatarp->canGrabLocalTexture(index,0);
+		return gAgentAvatarp->canGrabLocalTexture(index,0);
 	}
 	return FALSE;
 }
@@ -7227,12 +7226,11 @@ void handle_buy_currency_test(void*)
 
 void handle_rebake_textures(void*)
 {
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (!avatarp) return;
+	if (!isAgentAvatarValid()) return;
 
 	// Slam pending upload count to "unstick" things
 	bool slam_for_debug = true;
-	avatarp->forceBakeAllTextures(slam_for_debug);
+	gAgentAvatarp->forceBakeAllTextures(slam_for_debug);
 }
 
 void toggle_visibility(void* user_data)
@@ -7752,6 +7750,7 @@ void initialize_menus()
 	commit.add("World.Chat", boost::bind(&handle_chat, (void*)NULL));
 	view_listener_t::addMenu(new LLWorldAlwaysRun(), "World.AlwaysRun");
 	view_listener_t::addMenu(new LLWorldCreateLandmark(), "World.CreateLandmark");
+	view_listener_t::addMenu(new LLWorldPlaceProfile(), "World.PlaceProfile");
 	view_listener_t::addMenu(new LLWorldSetHomeLocation(), "World.SetHomeLocation");
 	view_listener_t::addMenu(new LLWorldTeleportHome(), "World.TeleportHome");
 	view_listener_t::addMenu(new LLWorldSetAway(), "World.SetAway");
diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h
index d3c34f0de426943b29912b490814d543e4057906..d72ea00077ad743de0fcb29d22eac4fdb37b1958 100644
--- a/indra/newview/llviewermenu.h
+++ b/indra/newview/llviewermenu.h
@@ -157,6 +157,7 @@ extern const std::string SAVE_INTO_INVENTORY;
 
 extern LLMenuBarGL*		gMenuBarView;
 //extern LLView*			gMenuBarHolder;
+extern LLMenuGL*		gEditMenu;
 extern LLMenuGL*		gPopupMenuView;
 extern LLViewerMenuHolderGL*	gMenuHolder;
 extern LLMenuBarGL*		gLoginMenuBarView;
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index c575656b244d037e079ab6b0b4c880ab2de6c2d3..c415d89e9cb9b829d9c4c457fdb0bbf4588f35c2 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -410,7 +410,6 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
 		{
 			gViewerWindow->playSnapshotAnimAndSound();
 			
-			LLImageBase::setSizeOverride(TRUE);
 			LLPointer<LLImageFormatted> formatted;
 			switch(LLFloaterSnapshot::ESnapshotFormat(gSavedSettings.getS32("SnapshotFormat")))
 			{
@@ -425,12 +424,12 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
 				break;
 			  default: 
 				llwarns << "Unknown Local Snapshot format" << llendl;
-				LLImageBase::setSizeOverride(FALSE);
 				return true;
 			}
 
+			formatted->enableOverSize() ;
 			formatted->encode(raw, 0);
-			LLImageBase::setSizeOverride(FALSE);
+			formatted->disableOverSize() ;
 			gViewerWindow->saveImageNumbered(formatted);
 		}
 		return true;
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index c2a78f20e1d5a3a10397858bba30c86bbbfdfe46..c542459cdbd9d4d890714e63d8a75c1f220d09fd 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -41,6 +41,7 @@
 #include "lleventtimer.h"
 #include "llfloaterreg.h"
 #include "llfollowcamparams.h"
+#include "llinventorydefines.h"
 #include "llregionhandle.h"
 #include "llsdserialize.h"
 #include "llteleportflags.h"
@@ -63,6 +64,7 @@
 #include "llfloaterpreference.h"
 #include "llhudeffecttrail.h"
 #include "llhudmanager.h"
+#include "llinventoryfunctions.h"
 #include "llinventoryobserver.h"
 #include "llinventorypanel.h"
 #include "llnearbychat.h"
@@ -870,9 +872,9 @@ bool check_offer_throttle(const std::string& from_name, bool check_only)
 	}
 }
  
-void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& from_name)
+void open_inventory_offer(const uuid_vec_t& items, const std::string& from_name)
 {
-	for (std::vector<LLUUID>::const_iterator item_iter = items.begin();
+	for (uuid_vec_t::const_iterator item_iter = items.begin();
 		 item_iter != items.end();
 		 ++item_iter)
 	{
@@ -1202,10 +1204,10 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 				// This is an offer from an agent. In this case, the back
 				// end has already copied the items into your inventory,
 				// so we can fetch it out of our inventory.
-				LLInventoryFetchObserver::item_ref_t items;
+				uuid_vec_t items;
 				items.push_back(mObjectID);
 				LLOpenAgentOffer* open_agent_offer = new LLOpenAgentOffer(from_string);
-				open_agent_offer->fetchItems(items);
+				open_agent_offer->fetch(items);
 				if(catp || (itemp && itemp->isComplete()))
 				{
 					open_agent_offer->done();
@@ -1263,8 +1265,8 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 			// Disabled logging to old chat floater to fix crash in group notices - EXT-4149
 			// LLFloaterChat::addChatHistory(chat);
 			
-			LLInventoryFetchComboObserver::folder_ref_t folders;
-			LLInventoryFetchComboObserver::item_ref_t items;
+			uuid_vec_t folders;
+			uuid_vec_t items;
 			items.push_back(mObjectID);
 			LLDiscardAgentOffer* discard_agent_offer;
 			discard_agent_offer = new LLDiscardAgentOffer(mFolderID, mObjectID);
@@ -1600,10 +1602,10 @@ void inventory_offer_handler(LLOfferInfo* info)
 		p.name = "UserGiveItem";
 		
 		// Prefetch the item into your local inventory.
-		LLInventoryFetchObserver::item_ref_t items;
+		uuid_vec_t items;
 		items.push_back(info->mObjectID);
 		LLInventoryFetchObserver* fetch_item = new LLInventoryFetchObserver();
-		fetch_item->fetchItems(items);
+		fetch_item->fetch(items);
 		if(fetch_item->isEverythingComplete())
 		{
 			fetch_item->done();
@@ -1684,6 +1686,18 @@ bool inspect_remote_object_callback(const LLSD& notification, const LLSD& respon
 }
 static LLNotificationFunctorRegistration inspect_remote_object_callback_reg("ServerObjectMessage", inspect_remote_object_callback);
 
+class LLPostponedServerObjectNotification: public LLPostponedNotification
+{
+protected:
+	/* virtual */
+	void modifyNotificationParams()
+	{
+		LLSD payload = mParams.payload;
+		payload["SESSION_NAME"] = mName;
+		mParams.payload = payload;
+	}
+};
+
 void process_improved_im(LLMessageSystem *msg, void **user_data)
 {
 	if (gNoRender)
@@ -1753,17 +1767,15 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 	std::string separator_string(": ");
 
 	LLSD args;
+	LLSD payload;
 	switch(dialog)
 	{
 	case IM_CONSOLE_AND_CHAT_HISTORY:
-		// These are used for system messages, hence don't need the name,
-		// as it is always "Second Life".
 	  	// *TODO: Translate
 		args["MESSAGE"] = message;
-
-		// Note: don't put the message in the IM history, even though was sent
-		// via the IM mechanism.
-		LLNotificationsUtil::add("SystemMessageTip",args);
+		payload["SESSION_NAME"] = name;
+		payload["from_id"] = from_id;
+		LLNotificationsUtil::add("IMSystemMessageTip",args, payload);
 		break;
 
 	case IM_NOTHING_SPECIAL: 
@@ -1986,7 +1998,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			// For requested notices, we don't want to send the popups.
 			if (dialog != IM_GROUP_NOTICE_REQUESTED)
 			{
-				LLSD payload;
 				payload["subject"] = subj;
 				payload["message"] = mes;
 				payload["sender_name"] = name;
@@ -2110,10 +2121,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			if (is_muted)
 			{
 				// Prefetch the offered item so that it can be discarded by the appropriate observer. (EXT-4331)
-				LLInventoryFetchObserver::item_ref_t items;
+				uuid_vec_t items;
 				items.push_back(info->mObjectID);
 				LLInventoryFetchObserver* fetch_item = new LLInventoryFetchObserver();
-				fetch_item->fetchItems(items);
+				fetch_item->fetch(items);
 				delete fetch_item;
 
 				// Same as closing window
@@ -2222,7 +2233,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			if(SYSTEM_FROM == name)
 			{
 				// System's UUID is NULL (fixes EXT-4766)
-				chat.mFromID = from_id = LLUUID::null;
+				chat.mFromID = LLUUID::null;
 			}
 
 			LLSD query_string;
@@ -2268,13 +2279,16 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			payload["slurl"] = location;
 			payload["name"] = name;
 			std::string session_name;
-			gCacheName->getFullName(from_id, session_name);
-			payload["SESSION_NAME"] = session_name;
 			if (from_group)
 			{
 				payload["group_owned"] = "true";
 			}
-			LLNotificationsUtil::add("ServerObjectMessage", substitutions, payload);
+
+			LLNotification::Params params("ServerObjectMessage");
+			params.substitutions = substitutions;
+			params.payload = payload;
+
+			LLPostponedNotification::add<LLPostponedServerObjectNotification>(params, from_id, false);
 		}
 		break;
 	case IM_FROM_TASK_AS_ALERT:
@@ -2317,7 +2331,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			{
 				LLSD args;
 				// *TODO: Translate -> [FIRST] [LAST] (maybe)
-				args["NAME"] = name;
+				args["NAME_SLURL"] = LLSLURL::buildCommand("agent", from_id, "about");
 				args["MESSAGE"] = message;
 				LLSD payload;
 				payload["from_id"] = from_id;
@@ -2383,7 +2397,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			}
 			else
 			{
-				args["[NAME]"] = name;
+				args["NAME_SLURL"] = LLSLURL::buildCommand("agent", from_id, "about");
 				if(message.empty())
 				{
 					//support for frienship offers from clients before July 2008
@@ -2844,8 +2858,8 @@ class LLFetchInWelcomeArea : public LLInventoryFetchDescendentsObserver
 		LLInventoryModel::cat_array_t	land_cats;
 		LLInventoryModel::item_array_t	land_items;
 
-		folder_ref_t::iterator it = mCompleteFolders.begin();
-		folder_ref_t::iterator end = mCompleteFolders.end();
+		uuid_vec_t::iterator it = mComplete.begin();
+		uuid_vec_t::iterator end = mComplete.end();
 		for(; it != end; ++it)
 		{
 			gInventory.collectDescendentsIf(
@@ -2906,7 +2920,7 @@ BOOL LLPostTeleportNotifiers::tick()
 	if ( gAgent.getTeleportState() == LLAgent::TELEPORT_NONE )
 	{
 		// get callingcards and landmarks available to the user arriving.
-		LLInventoryFetchDescendentsObserver::folder_ref_t folders;
+		uuid_vec_t folders;
 		const LLUUID callingcard_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD);
 		if(callingcard_id.notNull()) 
 			folders.push_back(callingcard_id);
@@ -2916,7 +2930,7 @@ BOOL LLPostTeleportNotifiers::tick()
 		if(!folders.empty())
 		{
 			LLFetchInWelcomeArea* fetcher = new LLFetchInWelcomeArea;
-			fetcher->fetchDescendents(folders);
+			fetcher->fetch(folders);
 			if(fetcher->isEverythingComplete())
 			{
 				fetcher->done();
@@ -3002,9 +3016,9 @@ void process_teleport_finish(LLMessageSystem* msg, void**)
 	gAgent.setRegion(regionp);
 	gObjectList.shiftObjects(shift_vector);
 
-	if (gAgent.getAvatarObject())
+	if (isAgentAvatarValid())
 	{
-		gAgent.getAvatarObject()->clearChatText();
+		gAgentAvatarp->clearChatText();
 		gAgentCamera.slamLookAt(look_at);
 	}
 	gAgent.setPositionAgent(pos);
@@ -3084,8 +3098,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
 	std::string version_channel;
 	msg->getString("SimData", "ChannelVersion", version_channel);
 
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (!avatarp)
+	if (!isAgentAvatarValid())
 	{
 		// Could happen if you were immediately god-teleported away on login,
 		// maybe other cases.  Continue, but warn.
@@ -3139,7 +3152,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
 		// know what you look like.
 		gAgent.sendAgentSetAppearance();
 
-		if (avatarp)
+		if (isAgentAvatarValid())
 		{
 			// Chat the "back" SLURL. (DEV-4907)
 
@@ -3152,9 +3165,9 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
 			LLNotificationsUtil::add("SystemMessageTip", args);
 
 			// Set the new position
-			avatarp->setPositionAgent(agent_pos);
-			avatarp->clearChat();
-			avatarp->slamPosition();
+			gAgentAvatarp->setPositionAgent(agent_pos);
+			gAgentAvatarp->clearChat();
+			gAgentAvatarp->slamPosition();
 		}
 	}
 	else
@@ -3214,9 +3227,9 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
 		gAgent.clearBusy();
 	}
 
-	if (avatarp)
+	if (isAgentAvatarValid())
 	{
-		avatarp->mFootPlane.clearVec();
+		gAgentAvatarp->mFootPlane.clearVec();
 	}
 	
 	// send walk-vs-run status
@@ -4117,7 +4130,7 @@ void process_avatar_appearance(LLMessageSystem *mesgsys, void **user_data)
 	mesgsys->getUUIDFast(_PREHASH_Sender, _PREHASH_ID, uuid);
 
 	LLVOAvatar* avatarp = (LLVOAvatar *)gObjectList.findObject(uuid);
-	if( avatarp )
+	if (avatarp)
 	{
 		avatarp->processAvatarAppearance( mesgsys );
 	}
@@ -4165,9 +4178,7 @@ void process_avatar_sit_response(LLMessageSystem *mesgsys, void **user_data)
 	BOOL force_mouselook;
 	mesgsys->getBOOLFast(_PREHASH_SitTransform, _PREHASH_ForceMouselook, force_mouselook);
 
-	LLVOAvatar* avatar = gAgent.getAvatarObject();
-
-	if (avatar && dist_vec_squared(camera_eye, camera_at) > 0.0001f)
+	if (isAgentAvatarValid() && dist_vec_squared(camera_eye, camera_at) > 0.0001f)
 	{
 		gAgentCamera.setSitCamera(sitObjectID, camera_eye, camera_at);
 	}
@@ -4178,7 +4189,7 @@ void process_avatar_sit_response(LLMessageSystem *mesgsys, void **user_data)
 	if (object)
 	{
 		LLVector3 sit_spot = object->getPositionAgent() + (sitPosition * object->getRotation());
-		if (!use_autopilot || (avatar && avatar->isSitting() && avatar->getRoot() == object->getRoot()))
+		if (!use_autopilot || isAgentAvatarValid() && gAgentAvatarp->isSitting() && gAgentAvatarp->getRoot() == object->getRoot())
 		{
 			//we're already sitting on this object, so don't autopilot
 		}
@@ -5218,7 +5229,7 @@ void process_derez_container(LLMessageSystem *msg, void**)
 }
 
 void container_inventory_arrived(LLViewerObject* object,
-								 InventoryObjectList* inventory,
+								 LLInventoryObject::object_list_t* inventory,
 								 S32 serial_num,
 								 void* data)
 {
@@ -5238,8 +5249,8 @@ void container_inventory_arrived(LLViewerObject* object,
 											  LLFolderType::FT_NONE,
 											  LLTrans::getString("AcquiredItems"));
 
-		InventoryObjectList::const_iterator it = inventory->begin();
-		InventoryObjectList::const_iterator end = inventory->end();
+		LLInventoryObject::object_list_t::const_iterator it = inventory->begin();
+		LLInventoryObject::object_list_t::const_iterator end = inventory->end();
 		for ( ; it != end; ++it)
 		{
 			if ((*it)->getType() != LLAssetType::AT_CATEGORY)
@@ -5275,7 +5286,7 @@ void container_inventory_arrived(LLViewerObject* object,
 	{
 		// we're going to get one fake root category as well as the
 		// one actual object
-		InventoryObjectList::iterator it = inventory->begin();
+		LLInventoryObject::object_list_t::iterator it = inventory->begin();
 
 		if ((*it)->getType() == LLAssetType::AT_CATEGORY)
 		{
@@ -5590,8 +5601,12 @@ void handle_lure(const LLUUID& invitee)
 }
 
 // Prompt for a message to the invited user.
-void handle_lure(const std::vector<LLUUID>& ids)
+void handle_lure(const uuid_vec_t& ids)
 {
+	if (ids.empty()) return;
+
+	if (!gAgent.getRegion()) return;
+
 	LLSD edit_args;
 	edit_args["REGION"] = gAgent.getRegion()->getName();
 
diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h
index 88f9697037fd33c8f4872f08073afc9251791f3c..4015cca77b664cb059b796ead7ad7036ff293f3c 100644
--- a/indra/newview/llviewermessage.h
+++ b/indra/newview/llviewermessage.h
@@ -129,7 +129,7 @@ void process_frozen_message(LLMessageSystem* msg, void**);
 
 void process_derez_container(LLMessageSystem *msg, void**);
 void container_inventory_arrived(LLViewerObject* object,
-								 std::list<LLPointer<LLInventoryObject> >* inventory, //InventoryObjectList
+								 std::list<LLPointer<LLInventoryObject> >* inventory, //LLInventoryObject::object_list_t
 								 S32 serial_num,
 								 void* data);
 
@@ -157,7 +157,7 @@ void send_group_notice(const LLUUID& group_id,
 					   const LLInventoryItem* item);
 
 void handle_lure(const LLUUID& invitee);
-void handle_lure(const std::vector<LLUUID>& ids);
+void handle_lure(const uuid_vec_t& ids);
 
 // always from gAgent and 
 // routes through the gAgent's current simulator
@@ -201,7 +201,7 @@ void invalid_message_callback(LLMessageSystem*, void*, EMessageException);
 
 void process_initiate_download(LLMessageSystem* msg, void**);
 void start_new_inventory_observer();
-void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& from_name);
+void open_inventory_offer(const uuid_vec_t& items, const std::string& from_name);
 
 // Returns true if item is not in certain "quiet" folder which don't need UI
 // notification (e.g. trash, cof, lost-and-found) and agent is not AFK, false otherwise.
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index abcb7e5452eb13a460c2ea67620f22c0e24f34a7..bb7933c10e8d90eccc6e578b36fac8f2a5e71c5d 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -46,6 +46,7 @@
 #include "llfontgl.h"
 #include "llframetimer.h"
 #include "llinventory.h"
+#include "llinventorydefines.h"
 #include "llmaterialtable.h"
 #include "llmutelist.h"
 #include "llnamevalue.h"
@@ -134,7 +135,15 @@ LLViewerObject *LLViewerObject::createObject(const LLUUID &id, const LLPCode pco
 	{
 		if (id == gAgentID)
 		{
-			res = new LLVOAvatarSelf(id, pcode, regionp);
+			if (!gAgentAvatarp)
+			{
+				gAgentAvatarp = new LLVOAvatarSelf(id, pcode, regionp);
+			}
+			else 
+			{
+				gAgentAvatarp->updateRegion(regionp);
+			}
+			res = gAgentAvatarp;
 		}
 		else
 		{
@@ -223,7 +232,7 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe
 	mClickAction(0),
 	mAttachmentItemID(LLUUID::null)
 {
-	if(!is_global)
+	if (!is_global)
 	{
 		llassert(mRegionp);
 	}
@@ -235,7 +244,7 @@ LLViewerObject::LLViewerObject(const LLUUID &id, const LLPCode pcode, LLViewerRe
 
 	mPositionRegion = LLVector3(0.f, 0.f, 0.f);
 
-	if(!is_global)
+	if (!is_global && mRegionp)
 	{
 		mPositionAgent = mRegionp->getOriginAgent();
 	}
@@ -377,11 +386,10 @@ void LLViewerObject::markDead()
 
 		if (flagAnimSource())
 		{
-			LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-			if (avatarp && !avatarp->isDead())
+			if (isAgentAvatarValid())
 			{
 				// stop motions associated with this object
-				avatarp->stopMotionFromSource(mID);
+				gAgentAvatarp->stopMotionFromSource(mID);
 			}
 		}
 
@@ -2170,8 +2178,8 @@ void LLViewerObject::deleteInventoryItem(const LLUUID& item_id)
 {
 	if(mInventory)
 	{
-		InventoryObjectList::iterator it = mInventory->begin();
-		InventoryObjectList::iterator end = mInventory->end();
+		LLInventoryObject::object_list_t::iterator it = mInventory->begin();
+		LLInventoryObject::object_list_t::iterator end = mInventory->end();
 		for( ; it != end; ++it )
 		{
 			if((*it)->getUUID() == item_id)
@@ -2481,7 +2489,7 @@ void LLViewerObject::processTaskInv(LLMessageSystem* msg, void** user_data)
 		}
 		else
 		{
-			object->mInventory = new InventoryObjectList();
+			object->mInventory = new LLInventoryObject::object_list_t();
 		}
 		LLPointer<LLInventoryObject> obj;
 		obj = new LLInventoryObject(object->mID, LLUUID::null,
@@ -2537,7 +2545,7 @@ void LLViewerObject::loadTaskInvFile(const std::string& filename)
 		}
 		else
 		{
-			mInventory = new InventoryObjectList;
+			mInventory = new LLInventoryObject::object_list_t;
 		}
 		while(ifs.good())
 		{
@@ -2670,8 +2678,8 @@ LLInventoryObject* LLViewerObject::getInventoryObject(const LLUUID& item_id)
 	LLInventoryObject* rv = NULL;
 	if(mInventory)
 	{
-		InventoryObjectList::iterator it = mInventory->begin();
-		InventoryObjectList::iterator end = mInventory->end();
+		LLInventoryObject::object_list_t::iterator it = mInventory->begin();
+		LLInventoryObject::object_list_t::iterator end = mInventory->end();
 		for ( ; it != end; ++it)
 		{
 			if((*it)->getUUID() == item_id)
@@ -2684,12 +2692,12 @@ LLInventoryObject* LLViewerObject::getInventoryObject(const LLUUID& item_id)
 	return rv;
 }
 
-void LLViewerObject::getInventoryContents(InventoryObjectList& objects)
+void LLViewerObject::getInventoryContents(LLInventoryObject::object_list_t& objects)
 {
 	if(mInventory)
 	{
-		InventoryObjectList::iterator it = mInventory->begin();
-		InventoryObjectList::iterator end = mInventory->end();
+		LLInventoryObject::object_list_t::iterator it = mInventory->begin();
+		LLInventoryObject::object_list_t::iterator end = mInventory->end();
 		for( ; it != end; ++it)
 		{
 			if ((*it)->getType() != LLAssetType::AT_CATEGORY)
@@ -2719,8 +2727,8 @@ LLViewerInventoryItem* LLViewerObject::getInventoryItemByAsset(const LLUUID& ass
 	{
 		LLViewerInventoryItem* item = NULL;
 
-		InventoryObjectList::iterator it = mInventory->begin();
-		InventoryObjectList::iterator end = mInventory->end();
+		LLInventoryObject::object_list_t::iterator it = mInventory->begin();
+		LLInventoryObject::object_list_t::iterator end = mInventory->end();
 		for( ; it != end; ++it)
 		{
 			LLInventoryObject* obj = *it;
@@ -4082,8 +4090,8 @@ S32 LLViewerObject::countInventoryContents(LLAssetType::EType type)
 	S32 count = 0;
 	if( mInventory )
 	{
-		InventoryObjectList::const_iterator it = mInventory->begin();
-		InventoryObjectList::const_iterator end = mInventory->end();
+		LLInventoryObject::object_list_t::const_iterator it = mInventory->begin();
+		LLInventoryObject::object_list_t::const_iterator end = mInventory->end();
 		for(  ; it != end ; ++it )
 		{
 			if( (*it)->getType() == type )
@@ -4920,7 +4928,6 @@ void LLViewerObject::setIncludeInSearch(bool include_in_search)
 
 void LLViewerObject::setRegion(LLViewerRegion *regionp)
 {
-	llassert(regionp);
 	mLatestRecvPacketID = 0;
 	mRegionp = regionp;
 
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index 266c40d49359616b5dd3941d96a2f7c09fc73079..be83fb7ef8a292fae89327b7238135388926543d 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -88,7 +88,7 @@ typedef enum e_object_update_type
 
 // callback typedef for inventory
 typedef void (*inventory_callback)(LLViewerObject*,
-								   InventoryObjectList*,
+								   LLInventoryObject::object_list_t*,
 								   S32 serial_num,
 								   void*);
 
@@ -409,7 +409,7 @@ class LLViewerObject : public LLPrimitive, public LLRefCount, public LLGLUpdate
 	void updateInventory(LLViewerInventoryItem* item, U8 key, bool is_new);
 	void updateInventoryLocal(LLInventoryItem* item, U8 key); // Update without messaging.
 	LLInventoryObject* getInventoryObject(const LLUUID& item_id);
-	void getInventoryContents(InventoryObjectList& objects);
+	void getInventoryContents(LLInventoryObject::object_list_t& objects);
 	LLInventoryObject* getInventoryRoot();
 	LLViewerInventoryItem* getInventoryItemByAsset(const LLUUID& asset_id);
 	S16 getInventorySerial() const { return mInventorySerialNum; }
@@ -629,7 +629,7 @@ class LLViewerObject : public LLPrimitive, public LLRefCount, public LLGLUpdate
 	F32				mPixelArea; // Apparent area in pixels
 
 	// This is the object's inventory from the viewer's perspective.
-	InventoryObjectList* mInventory;
+	LLInventoryObject::object_list_t* mInventory;
 	class LLInventoryCallbackInfo
 	{
 	public:
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index 64a7b2166bb690f75519b8941a37f8e7fa6a8ecd..752aeaaab01a157c7d58c6e3f40751d1fa3ca96a 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -474,7 +474,6 @@ void LLViewerObjectList::processObjectUpdate(LLMessageSystem *mesgsys,
 			
 			if (objectp->getRegion() != regionp)
 			{    // Object changed region, so update it
-				objectp->setRegion(regionp);
 				objectp->updateRegion(regionp); // for LLVOAvatar
 			}
 		}
@@ -895,6 +894,13 @@ void LLViewerObjectList::removeDrawable(LLDrawable* drawablep)
 
 BOOL LLViewerObjectList::killObject(LLViewerObject *objectp)
 {
+	// Don't ever kill gAgentAvatarp, just mark it as null region instead.
+	if (objectp == gAgentAvatarp)
+	{
+		objectp->setRegion(NULL);
+		return FALSE;
+	}
+
 	// When we're killing objects, all we do is mark them as dead.
 	// We clean up the dead objects later.
 
@@ -943,7 +949,8 @@ void LLViewerObjectList::killAllObjects()
 	{
 		objectp = *iter;
 		killObject(objectp);
-		llassert(objectp->isDead());
+		// Object must be dead, or it's the LLVOAvatarSelf which never dies.
+		llassert((objectp == gAgentAvatarp) || objectp->isDead());
 	}
 
 	cleanDeadObjects(FALSE);
@@ -1210,11 +1217,10 @@ void LLViewerObjectList::generatePickList(LLCamera &camera)
 		}
 
 		// add all hud objects to pick list
-		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-		if (avatarp)
+		if (isAgentAvatarValid())
 		{
-			for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin(); 
-				 iter != avatarp->mAttachmentPoints.end(); )
+			for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
+				 iter != gAgentAvatarp->mAttachmentPoints.end(); )
 			{
 				LLVOAvatar::attachment_map_t::iterator curiter = iter++;
 				LLViewerJointAttachment* attachment = curiter->second;
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index c9b3886fefa082fce84a699d2d02d1fd08d5597b..59efae4cb21aabc01bdfbb471239d659c5e9e0e5 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -40,8 +40,8 @@
 #include "llfloaterreg.h"
 #include "llfloaterworldmap.h"
 #include "llfocusmgr.h"
-#include "llinventory.h"
 #include "llinventorybridge.h"
+#include "llinventorydefines.h"
 #include "llinventorymodel.h"
 #include "lllandmark.h"
 #include "lllandmarkactions.h"
@@ -525,7 +525,7 @@ LLUIImagePtr LLEmbeddedItems::getItemImage(llwchar ext_char) const
 			case LLAssetType::AT_SOUND:			img_name = "Inv_Sound";		break;
 			case LLAssetType::AT_CLOTHING:		img_name = "Inv_Clothing";	break;
 			case LLAssetType::AT_OBJECT:
-				img_name = LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS & item->getFlags() ?
+				img_name = LLInventoryItemFlags::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS & item->getFlags() ?
 					"Inv_Object_Multi" : "Inv_Object";
 				break;
 			case LLAssetType::AT_CALLINGCARD:	img_name = "Inv_CallingCard"; break;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 11f9261297f089b1218724b43d45521bc8d6f277..96d9f2713e0b547f32eda0c1eeb01bd06bb8ab2a 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -365,9 +365,9 @@ class LLDebugText
 			agent_center_text = llformat("AgentCenter  %f %f %f",
 										 (F32)(tvector.mdV[VX]), (F32)(tvector.mdV[VY]), (F32)(tvector.mdV[VZ]));
 
-			if (gAgent.getAvatarObject())
+			if (isAgentAvatarValid())
 			{
-				tvector = gAgent.getPosGlobalFromAgent(gAgent.getAvatarObject()->mRoot.getWorldPosition());
+				tvector = gAgent.getPosGlobalFromAgent(gAgentAvatarp->mRoot.getWorldPosition());
 				agent_root_center_text = llformat("AgentRootCenter %f %f %f",
 												  (F32)(tvector.mdV[VX]), (F32)(tvector.mdV[VY]), (F32)(tvector.mdV[VZ]));
 			}
@@ -2090,7 +2090,7 @@ void LLViewerWindow::draw()
 		// Draw tool specific overlay on world
 		LLToolMgr::getInstance()->getCurrentTool()->draw();
 
-		if( gAgentCamera.cameraMouselook() )
+		if( gAgentCamera.cameraMouselook() || LLFloaterCamera::inFreeCameraMode() )
 		{
 			drawMouselookInstructions();
 			stop_glerror();
@@ -2145,12 +2145,14 @@ void LLViewerWindow::draw()
 // Takes a single keydown event, usually when UI is visible
 BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
 {
+	// hide tooltips on keypress
+	LLToolTipMgr::instance().blockToolTips();
+
 	if (gFocusMgr.getKeyboardFocus() 
 		&& !(mask & (MASK_CONTROL | MASK_ALT))
 		&& !gFocusMgr.getKeystrokesOnly())
 	{
 		// We have keyboard focus, and it's not an accelerator
-
 		if (key < 0x80)
 		{
 			// Not a special key, so likely (we hope) to generate a character.  Let it fall through to character handler first.
@@ -2158,68 +2160,49 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
 		}
 	}
 
-	// hide tooltips on keypress
-	LLToolTipMgr::instance().blockToolTips();
-	
-	// Explicit hack for debug menu.
-	if ((MASK_ALT & mask) &&
-		(MASK_CONTROL & mask) &&
-		('D' == key || 'd' == key))
+	// let menus handle navigation keys for navigation
+	if ((gMenuBarView && gMenuBarView->handleKey(key, mask, TRUE))
+		||(gLoginMenuBarView && gLoginMenuBarView->handleKey(key, mask, TRUE))
+		||(gMenuHolder && gMenuHolder->handleKey(key, mask, TRUE)))
 	{
-		toggle_debug_menus(NULL);
+		return TRUE;
 	}
 
-		// Explicit hack for debug menu.
-	if ((mask == (MASK_SHIFT | MASK_CONTROL)) &&
-		('G' == key || 'g' == key))
+	// give menus a chance to handle modified (Ctrl, Alt) shortcut keys before current focus 
+	// as long as focus isn't locked
+	if (mask & (MASK_CONTROL | MASK_ALT) && !gFocusMgr.focusLocked())
 	{
-		if  (LLStartUp::getStartupState() < STATE_LOGIN_CLEANUP)  //on splash page
+		if ((gMenuBarView && gMenuBarView->handleAcceleratorKey(key, mask))
+			||(gLoginMenuBarView && gLoginMenuBarView->handleAcceleratorKey(key, mask)))
 		{
-			BOOL visible = ! gSavedSettings.getBOOL("ForceShowGrid");
-			gSavedSettings.setBOOL("ForceShowGrid", visible);
-
-			// Initialize visibility (and don't force visibility - use prefs)
-			LLPanelLogin::refreshLocation( false );
+			return TRUE;
 		}
 	}
 
-	// Debugging view for unified notifications: CTRL-SHIFT-5
-	// *FIXME: Having this special-cased right here (just so this can be invoked from the login screen) sucks.
-	if ((MASK_SHIFT & mask) 
-	    && (!(MASK_ALT & mask))
-	    && (MASK_CONTROL & mask)
-	    && ('5' == key))
+	// give floaters first chance to handle TAB key
+	// so frontmost floater gets focus
+	// if nothing has focus, go to first or last UI element as appropriate
+	if (key == KEY_TAB && (mask & MASK_CONTROL || gFocusMgr.getKeyboardFocus() == NULL))
 	{
-		//LLFloaterNotificationConsole::showInstance();
-		LLFloaterReg::showInstance("notifications_console");
-		return TRUE;
-	}
+		if (gMenuHolder) gMenuHolder->hideMenus();
 
-	// handle escape key
-	//if (key == KEY_ESCAPE && mask == MASK_NONE)
-	//{
+		// if CTRL-tabbing (and not just TAB with no focus), go into window cycle mode
+		gFloaterView->setCycleMode((mask & MASK_CONTROL) != 0);
 
-		// *TODO: get this to play well with mouselook and hidden
-		// cursor modes, etc, and re-enable.
-		//if (gFocusMgr.getMouseCapture())
-		//{
-		//	gFocusMgr.setMouseCapture(NULL);
-		//	return TRUE;
-		//}
-	//}
-
-	// let menus handle navigation keys
-	if (gMenuBarView && gMenuBarView->handleKey(key, mask, TRUE))
-	{
-		return TRUE;
-	}
-	// let menus handle navigation keys
-	if (gLoginMenuBarView && gLoginMenuBarView->handleKey(key, mask, TRUE))
-	{
+		// do CTRL-TAB and CTRL-SHIFT-TAB logic
+		if (mask & MASK_SHIFT)
+		{
+			mRootView->focusPrevRoot();
+		}
+		else
+		{
+			mRootView->focusNextRoot();
+		}
 		return TRUE;
 	}
-	//some of context menus use this container, let context menu handle navigation keys
-	if(gMenuHolder && gMenuHolder->handleKey(key, mask, TRUE))
+
+	// hidden edit menu for cut/copy/paste
+	if (gEditMenu && gEditMenu->handleAcceleratorKey(key, mask))
 	{
 		return TRUE;
 	}
@@ -2272,7 +2255,7 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
 	}
 
 	// Try for a new-format gesture
-	if (LLGestureManager::instance().triggerGesture(key, mask))
+	if (LLGestureMgr::instance().triggerGesture(key, mask))
 	{
 		return TRUE;
 	}
@@ -2284,50 +2267,10 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
 		return TRUE;
 	}
 
-	// Topmost view gets a chance before the hierarchy
-	// *FIX: get rid of this?
-	//LLUICtrl* top_ctrl = gFocusMgr.getTopCtrl();
-	//if (top_ctrl)
-	//{
-	//	if( top_ctrl->handleKey( key, mask, TRUE ) )
-	//	{
-	//		return TRUE;
-	//	}
-	//}
-
-	// give floaters first chance to handle TAB key
-	// so frontmost floater gets focus
-	if (key == KEY_TAB)
-	{
-		// if nothing has focus, go to first or last UI element as appropriate
-		if (mask & MASK_CONTROL || gFocusMgr.getKeyboardFocus() == NULL)
-		{
-			if (gMenuHolder) gMenuHolder->hideMenus();
-
-			// if CTRL-tabbing (and not just TAB with no focus), go into window cycle mode
-			gFloaterView->setCycleMode((mask & MASK_CONTROL) != 0);
 
-			// do CTRL-TAB and CTRL-SHIFT-TAB logic
-			if (mask & MASK_SHIFT)
-			{
-				mRootView->focusPrevRoot();
-			}
-			else
-			{
-				mRootView->focusNextRoot();
-			}
-			return TRUE;
-		}
-	}
-	
-	// give menus a chance to handle keys
-	if (gMenuBarView && gMenuBarView->handleAcceleratorKey(key, mask))
-	{
-		return TRUE;
-	}
-	
-	// give menus a chance to handle keys
-	if (gLoginMenuBarView && gLoginMenuBarView->handleAcceleratorKey(key, mask))
+	// give menus a chance to handle unmodified accelerator keys
+	if ((gMenuBarView && gMenuBarView->handleAcceleratorKey(key, mask))
+		||(gLoginMenuBarView && gLoginMenuBarView->handleAcceleratorKey(key, mask)))
 	{
 		return TRUE;
 	}
@@ -3150,7 +3093,7 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls,
 		// setup HUD render
 		if (selection->getSelectType() == SELECT_TYPE_HUD && LLSelectMgr::getInstance()->getSelection()->getObjectCount())
 		{
-			LLBBox hud_bbox = gAgent.getAvatarObject()->getHUDBBox();
+			LLBBox hud_bbox = gAgentAvatarp->getHUDBBox();
 
 			// set up transform to encompass bounding box of HUD
 			glMatrixMode(GL_PROJECTION);
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 54379dece33b748d1a7ff0d7c109ea6615296800..af833db9c3afce894c36a682351a498b7230191f 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -755,11 +755,6 @@ LLVOAvatar::~LLVOAvatar()
 {
 	lldebugs << "LLVOAvatar Destructor (0x" << this << ") id:" << mID << llendl;
 
-	if (isSelf())
-	{
-		gAgent.setAvatarObject(NULL);
-	}
-
 	mRoot.removeAllChildren();
 
 	deleteAndClearArray(mSkeleton);
@@ -965,15 +960,14 @@ void LLVOAvatar::dumpBakedStatus()
 //static
 void LLVOAvatar::restoreGL()
 {
-	LLVOAvatar* self = gAgent.getAvatarObject();
-	if (!self)
-		return;
-	self->setCompositeUpdatesEnabled(TRUE);
-	for (U32 i = 0; i < self->mBakedTextureDatas.size(); i++)
+	if (!isAgentAvatarValid()) return;
+
+	gAgentAvatarp->setCompositeUpdatesEnabled(TRUE);
+	for (U32 i = 0; i < gAgentAvatarp->mBakedTextureDatas.size(); i++)
 	{
-		self->invalidateComposite(self->mBakedTextureDatas[i].mTexLayerSet, FALSE);
+		gAgentAvatarp->invalidateComposite(gAgentAvatarp->mBakedTextureDatas[i].mTexLayerSet, FALSE);
 	}
-	self->updateMeshTextures();
+	gAgentAvatarp->updateMeshTextures();
 }
 
 //static
@@ -2085,7 +2079,7 @@ U32 LLVOAvatar::processUpdateMessage(LLMessageSystem *mesgsys,
 
 	if(retval & LLViewerObject::INVALID_UPDATE)
 	{
-		if(this == gAgent.getAvatarObject())
+		if (isSelf())
 		{
 			//tell sim to cancel this update
 			gAgent.teleportViaLocation(gAgent.getPositionGlobal());
@@ -2254,7 +2248,7 @@ void LLVOAvatar::idleUpdateVoiceVisualizer(bool voice_enabled)
 					else	{ llinfos << "oops - CurrentGesticulationLevel can be only 0, 1, or 2"  << llendl; }
 					
 					// this is the call that Karl S. created for triggering gestures from within the code.
-					LLGestureManager::instance().triggerAndReviseString( gestureString );
+					LLGestureMgr::instance().triggerAndReviseString( gestureString );
 				}
 			}
 			
@@ -2547,7 +2541,7 @@ void LLVOAvatar::idleUpdateLoadingEffect()
 				llinfos << "self isFullyLoaded, first_fully_visible" << llendl;
 
 				first_fully_visible = false;
-				LLAppearanceManager::instance().onFirstFullyVisible();
+				LLAppearanceMgr::instance().onFirstFullyVisible();
 			}
 		}
 		if (isFullyLoaded())
@@ -2935,14 +2929,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
 			}
 			else
 			{
-				if (gSavedSettings.getBOOL("SmallAvatarNames"))
-				{
-					mNameText->setFont(LLFontGL::getFontSansSerif());
-				}
-				else
-				{
-					mNameText->setFont(LLFontGL::getFontSansSerifBig());
-				}
+				mNameText->setFont(LLFontGL::getFontSansSerif());
 				mNameText->setTextAlignment(LLHUDText::ALIGN_TEXT_CENTER);
 				mNameText->setFadeDistance(CHAT_NORMAL_RADIUS, 5.f);
 				mNameText->setVisibleOffScreen(FALSE);
@@ -5620,6 +5607,8 @@ void LLVOAvatar::sitDown(BOOL bSitting)
 //-----------------------------------------------------------------------------
 void LLVOAvatar::sitOnObject(LLViewerObject *sit_object)
 {
+	sitDown(TRUE);
+
 	if (isSelf())
 	{
 		// Might be first sit
@@ -5652,7 +5641,6 @@ void LLVOAvatar::sitOnObject(LLViewerObject *sit_object)
 	mDrawable->mXform.setRotation(mDrawable->getWorldRotation() * inv_obj_rot);
 
 	gPipeline.markMoved(mDrawable, TRUE);
-	sitDown(TRUE);
 	mRoot.getXform()->setParent(&sit_object->mDrawable->mXform); // LLVOAvatar::sitOnObject
 	mRoot.setPosition(getPosition());
 	mRoot.updateWorldMatrixChildren();
@@ -6859,8 +6847,7 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 // static
 void LLVOAvatar::dumpArchetypeXML( void* )
 {
-	LLVOAvatar* avatar = gAgent.getAvatarObject();
-	LLAPRFile outfile ;
+	LLAPRFile outfile;
 	outfile.open(gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,"new archetype.xml"), LL_APR_WB );
 	apr_file_t* file = outfile.getFileHandle() ;
 	if (!file)
@@ -6878,7 +6865,7 @@ void LLVOAvatar::dumpArchetypeXML( void* )
 		const std::string& wearable_name = LLWearableDictionary::getTypeName((EWearableType)type);
 		apr_file_printf( file, "\n\t\t<!-- wearable: %s -->\n", wearable_name.c_str() );
 
-		for (LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam())
+		for (LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam())
 		{
 			LLViewerVisualParam* viewer_param = (LLViewerVisualParam*)param;
 			if( (viewer_param->getWearableType() == type) && 
@@ -6894,7 +6881,7 @@ void LLVOAvatar::dumpArchetypeXML( void* )
 			if (LLVOAvatarDictionary::getTEWearableType((ETextureIndex)te) == type)
 			{
 				// MULTIPLE_WEARABLES: extend to multiple wearables?
-				LLViewerTexture* te_image = avatar->getImage((ETextureIndex)te, 0);
+				LLViewerTexture* te_image = ((LLVOAvatar *)(gAgentAvatarp))->getImage((ETextureIndex)te, 0);
 				if( te_image )
 				{
 					std::string uuid_str;
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 15be6b23b3126f36d4b3d10d9b616f0d82469759..c15dbeb8c60b333c3499acb65d134a3498180582 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -48,6 +48,7 @@
 #include "llagentwearables.h"
 #include "llhudeffecttrail.h"
 #include "llhudmanager.h"
+#include "llinventoryfunctions.h"
 #include "llselectmgr.h"
 #include "lltoolgrab.h"	// for needsRenderBeam
 #include "lltoolmgr.h" // for needsRenderBeam
@@ -67,6 +68,14 @@
 
 #include <boost/lexical_cast.hpp>
 
+LLVOAvatarSelf *gAgentAvatarp = NULL;
+BOOL isAgentAvatarValid()
+{
+	return (gAgentAvatarp &&
+			(gAgentAvatarp->getRegion() != NULL) &&
+			(!gAgentAvatarp->isDead()));
+}
+
 using namespace LLVOAvatarDefines;
 
 /*********************************************************************************
@@ -78,14 +87,14 @@ using namespace LLVOAvatarDefines;
 struct LocalTextureData
 {
 	LocalTextureData() : 
-		mIsBakedReady(FALSE), 
+		mIsBakedReady(false), 
 		mDiscard(MAX_DISCARD_LEVEL+1), 
 		mImage(NULL), 
 		mWearableID(IMG_DEFAULT_AVATAR),
 		mTexEntry(NULL)
 	{}
 	LLPointer<LLViewerFetchedTexture> mImage;
-	BOOL mIsBakedReady;
+	bool mIsBakedReady;
 	S32 mDiscard;
 	LLUUID mWearableID;	// UUID of the wearable that this texture belongs to, not of the image itself
 	LLTextureEntry *mTexEntry;
@@ -133,7 +142,6 @@ LLVOAvatarSelf::LLVOAvatarSelf(const LLUUID& id,
 	mLastRegionHandle(0),
 	mRegionCrossingCount(0)
 {
-	gAgent.setAvatarObject(this);
 	gAgentWearables.setAvatarObject(this);
 	
 	lldebugs << "Marking avatar as self " << id << llendl;
@@ -511,16 +519,17 @@ BOOL LLVOAvatarSelf::buildMenus()
 	return TRUE;
 }
 
+void LLVOAvatarSelf::cleanup()
+{
+	markDead();
+ 	delete mScreenp;
+ 	mScreenp = NULL;
+	mRegionp = NULL;
+}
+
 LLVOAvatarSelf::~LLVOAvatarSelf()
 {
-	// gAgents pointer might have been set to a different Avatar Self, don't get rid of it if so.
-	if (gAgent.getAvatarObject() == this)
-	{
-		gAgent.setAvatarObject(NULL);
-		gAgentWearables.setAvatarObject(NULL);
-	}
-	delete mScreenp;
-	mScreenp = NULL;
+	cleanup();
 }
 
 /**
@@ -610,6 +619,17 @@ BOOL LLVOAvatarSelf::updateCharacter(LLAgent &agent)
 	return LLVOAvatar::updateCharacter(agent);
 }
 
+// virtual
+BOOL LLVOAvatarSelf::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
+{
+	if (!isAgentAvatarValid())
+	{
+		return TRUE;
+	}
+	LLVOAvatar::idleUpdate(agent, world, time);
+	return TRUE;
+}
+
 // virtual
 LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)
 {
@@ -621,7 +641,8 @@ LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)
 	return LLVOAvatar::getJoint(name);
 }
 
-/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL upload_bake )
+// virtual
+BOOL LLVOAvatarSelf::setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL upload_bake )
 {
 	if (!which_param)
 	{
@@ -631,7 +652,8 @@ LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)
 	return setParamWeight(param,weight,upload_bake);
 }
 
-/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake )
+// virtual
+BOOL LLVOAvatarSelf::setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake )
 {
 	if (!param_name)
 	{
@@ -641,7 +663,8 @@ LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)
 	return setParamWeight(param,weight,upload_bake);
 }
 
-/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake )
+// virtual
+BOOL LLVOAvatarSelf::setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake )
 {
 	LLViewerVisualParam *param = (LLViewerVisualParam*) LLCharacter::getVisualParam(index);
 	return setParamWeight(param,weight,upload_bake);
@@ -777,7 +800,8 @@ void LLVOAvatarSelf::removeMissingBakedTextures()
 //virtual
 void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp)
 {
-	if (regionp->getHandle() != mLastRegionHandle)
+	setRegion(regionp);
+	if (!regionp || (regionp->getHandle() != mLastRegionHandle))
 	{
 		if (mLastRegionHandle != 0)
 		{
@@ -791,7 +815,10 @@ void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp)
 			max = llmax(delta, max);
 			LLViewerStats::getInstance()->setStat(LLViewerStats::ST_CROSSING_MAX, max);
 		}
-		mLastRegionHandle = regionp->getHandle();
+		if (regionp)
+		{
+			mLastRegionHandle = regionp->getHandle();
+		}
 	}
 	mRegionCrossingTimer.reset();
 }
@@ -1036,7 +1063,7 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view
 	if (attachment->isObjectAttached(viewer_object))
 	{
 		const LLUUID& attachment_id = viewer_object->getItemID();
-		LLAppearanceManager::instance().registerAttachment(attachment_id);
+		LLAppearanceMgr::instance().registerAttachment(attachment_id);
 	}
 
 	return attachment;
@@ -1069,13 +1096,13 @@ BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)
 		// Make sure the inventory is in sync with the avatar.
 
 		// Update COF contents, don't trigger appearance update.
-		if (gAgent.getAvatarObject() == NULL)
+		if (!isAgentAvatarValid())
 		{
 			llinfos << "removeItemLinks skipped, avatar is under destruction" << llendl;
 		}
 		else
 		{
-			LLAppearanceManager::instance().unregisterAttachment(attachment_id);
+			LLAppearanceMgr::instance().unregisterAttachment(attachment_id);
 		}
 		
 		return TRUE;
@@ -1668,7 +1695,7 @@ void LLVOAvatarSelf::onLocalTextureLoaded(BOOL success, LLViewerFetchedTexture *
 void LLVOAvatarSelf::dumpTotalLocalTextureByteCount()
 {
 	S32 gl_bytes = 0;
-	gAgent.getAvatarObject()->getLocalTextureByteCount(&gl_bytes);
+	gAgentAvatarp->getLocalTextureByteCount(&gl_bytes);
 	llinfos << "Total Avatar LocTex GL:" << (gl_bytes/1024) << "KB" << llendl;
 }
 
@@ -1925,9 +1952,7 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**)
 {
 	LLUUID texture_id;
 	msg->getUUID("TextureData", "TextureID", texture_id);
-
-	LLVOAvatarSelf* self = gAgent.getAvatarObject();
-	if (!self) return;
+	if (!isAgentAvatarValid()) return;
 
 	// If this is a texture corresponding to one of our baked entries, 
 	// just rebake that layer set.
@@ -1944,13 +1969,13 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**)
 		const LLVOAvatarDictionary::TextureEntry *texture_dict = iter->second;
 		if (texture_dict->mIsBakedTexture)
 		{
-			if (texture_id == self->getTEImage(index)->getID())
+			if (texture_id == gAgentAvatarp->getTEImage(index)->getID())
 			{
-				LLTexLayerSet* layer_set = self->getLayerSet(index);
+				LLTexLayerSet* layer_set = gAgentAvatarp->getLayerSet(index);
 				if (layer_set)
 				{
 					llinfos << "TAT: rebake - matched entry " << (S32)index << llendl;
-					self->invalidateComposite(layer_set, TRUE);
+					gAgentAvatarp->invalidateComposite(layer_set, TRUE);
 					found = TRUE;
 					LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_REBAKES);
 				}
@@ -1961,12 +1986,12 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**)
 	// If texture not found, rebake all entries.
 	if (!found)
 	{
-		self->forceBakeAllTextures();
+		gAgentAvatarp->forceBakeAllTextures();
 	}
 	else
 	{
 		// Not sure if this is necessary, but forceBakeAllTextures() does it.
-		self->updateMeshTextures();
+		gAgentAvatarp->updateMeshTextures();
 	}
 }
 
@@ -2046,10 +2071,9 @@ void LLVOAvatarSelf::onCustomizeStart()
 // static
 void LLVOAvatarSelf::onCustomizeEnd()
 {
-	LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
-	if (avatarp)
+	if (isAgentAvatarValid())
 	{
-		avatarp->invalidateAll();
+		gAgentAvatarp->invalidateAll();
 	}
 }
 
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 9514abc5bca48ffafb9ecef4ae8638f807a1e3ec..4856e8227506c2ab6fe399653f15b98114a81216 100644
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -55,7 +55,8 @@ class LLVOAvatarSelf :
 	LLVOAvatarSelf(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);
 	virtual 				~LLVOAvatarSelf();
 	virtual void			markDead();
-	virtual void 		initInstance(); // Called after construction to initialize the class.
+	virtual void 			initInstance(); // Called after construction to initialize the class.
+	void					cleanup();
 protected:
 	/*virtual*/ BOOL		loadAvatar();
 	BOOL					loadAvatarSelf();
@@ -77,6 +78,7 @@ class LLVOAvatarSelf :
 	//--------------------------------------------------------------------
 public:
 	/*virtual*/ void 		updateRegion(LLViewerRegion *regionp);
+	/*virtual*/ BOOL   	 	idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time);
 
 	//--------------------------------------------------------------------
 	// LLCharacter interface and related
@@ -122,12 +124,10 @@ class LLVOAvatarSelf :
 public:
 	/*virtual*/ BOOL    updateIsFullyLoaded();
 private:
-	BOOL                mIsBaked; // are the stored baked textures up to date?
 
 	//--------------------------------------------------------------------
 	// Region state
 	//--------------------------------------------------------------------
-private:
 	U64				mLastRegionHandle;
 	LLFrameTimer	mRegionCrossingTimer;
 	S32				mRegionCrossingCount;
@@ -333,4 +333,8 @@ class LLVOAvatarSelf :
 
 };
 
+extern LLVOAvatarSelf *gAgentAvatarp;
+
+BOOL isAgentAvatarValid();
+
 #endif // LL_VO_AVATARSELF_H
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index cc346c2345808487d358c6ebe034fe74d9576e0d..2238acd64376a1402c602640bf21a71f3ed11d1a 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -87,6 +87,12 @@
 static bool sConnectingToAgni = false;
 F32 LLVoiceClient::OVERDRIVEN_POWER_LEVEL = 0.7f;
 
+const F32 LLVoiceClient::VOLUME_MIN = 0.f;
+const F32 LLVoiceClient::VOLUME_DEFAULT = 0.5f;
+const F32 LLVoiceClient::VOLUME_MAX = 1.0f;
+
+const F32 VOLUME_SCALE_VIVOX = 0.01f;
+
 const F32 SPEAKING_TIMEOUT = 1.f;
 
 const int VOICE_MAJOR_VERSION = 1;
@@ -1112,24 +1118,28 @@ class LLSpeakerVolumeStorage : public LLSingleton<LLSpeakerVolumeStorage>
 public:
 
 	/**
-	 * Sets internal voluem level for specified user.
+	 * Stores volume level for specified user.
 	 *
-	 * @param[in] speaker_id - LLUUID of user to store volume level for
-	 * @param[in] volume - external (vivox) volume level to be stored for user.
+	 * @param[in] speaker_id - LLUUID of user to store volume level for.
+	 * @param[in] volume - volume level to be stored for user.
 	 */
 	void storeSpeakerVolume(const LLUUID& speaker_id, F32 volume);
 
 	/**
-	 * Gets stored external (vivox) volume level for specified speaker and
-	 * transforms it into internal (viewer) level.
+	 * Gets stored volume level for specified speaker
 	 *
-	 * If specified user is not found -1 will be returned.
-	 * Internal level is calculated as: internal = 400 * external^2
-	 * Maps 0.0 to 1.0 to internal values 0-400
+	 * @param[in] speaker_id - LLUUID of user to retrieve volume level for.
+	 * @param[out] volume - set to stored volume if found, otherwise unmodified.
+	 * @return - true if a stored volume is found.
+	 */
+	bool getSpeakerVolume(const LLUUID& speaker_id, F32& volume);
+
+	/**
+	 * Removes stored volume level for specified user.
 	 *
-	 * @param[in] speaker_id - LLUUID of user to get his volume level
+	 * @param[in] speaker_id - LLUUID of user to remove.
 	 */
-	S32 getSpeakerVolume(const LLUUID& speaker_id);
+	void removeSpeakerVolume(const LLUUID& speaker_id);
 
 private:
 	friend class LLSingleton<LLSpeakerVolumeStorage>;
@@ -1141,6 +1151,9 @@ class LLSpeakerVolumeStorage : public LLSingleton<LLSpeakerVolumeStorage>
 	void load();
 	void save();
 
+	static F32 transformFromLegacyVolume(F32 volume_in);
+	static F32 transformToLegacyVolume(F32 volume_in);
+
 	typedef std::map<LLUUID, F32> speaker_data_map_t;
 	speaker_data_map_t mSpeakersData;
 };
@@ -1159,23 +1172,85 @@ LLSpeakerVolumeStorage::~LLSpeakerVolumeStorage()
 
 void LLSpeakerVolumeStorage::storeSpeakerVolume(const LLUUID& speaker_id, F32 volume)
 {
-	mSpeakersData[speaker_id] = volume;
+	if ((volume >= LLVoiceClient::VOLUME_MIN) && (volume <= LLVoiceClient::VOLUME_MAX))
+	{
+		mSpeakersData[speaker_id] = volume;
+
+		// Enable this when debugging voice slider issues.  It's way to spammy even for debug-level logging.
+		// LL_DEBUGS("Voice") << "Stored volume = " << volume <<  " for " << id << LL_ENDL;
+	}
+	else
+	{
+		LL_WARNS("Voice") << "Attempted to store out of range volume " << volume << " for " << speaker_id << LL_ENDL;
+		llassert(0);
+	}
 }
 
-S32 LLSpeakerVolumeStorage::getSpeakerVolume(const LLUUID& speaker_id)
+bool LLSpeakerVolumeStorage::getSpeakerVolume(const LLUUID& speaker_id, F32& volume)
 {
-	// Return value of -1 indicates no level is stored for this speaker
-	S32 ret_val = -1;
 	speaker_data_map_t::const_iterator it = mSpeakersData.find(speaker_id);
 	
 	if (it != mSpeakersData.end())
 	{
-		F32 f_val = it->second;
-		// volume can amplify by as much as 4x!
-		S32 ivol = (S32)(400.f * f_val * f_val);
-		ret_val = llclamp(ivol, 0, 400);
+		volume = it->second;
+
+		// Enable this when debugging voice slider issues.  It's way to spammy even for debug-level logging.
+		// LL_DEBUGS("Voice") << "Retrieved stored volume = " << volume <<  " for " << id << LL_ENDL;
+
+		return true;
 	}
-	return ret_val;
+
+	return false;
+}
+
+void LLSpeakerVolumeStorage::removeSpeakerVolume(const LLUUID& speaker_id)
+{
+	mSpeakersData.erase(speaker_id);
+
+	// Enable this when debugging voice slider issues.  It's way to spammy even for debug-level logging.
+	// LL_DEBUGS("Voice") << "Removing stored volume for  " << id << LL_ENDL;
+}
+
+/* static */ F32 LLSpeakerVolumeStorage::transformFromLegacyVolume(F32 volume_in)
+{
+	// Convert to linear-logarithmic [0.0..1.0] with 0.5 = 0dB
+	// from legacy characteristic composed of two square-curves
+	// that intersect at volume_in = 0.5, volume_out = 0.56
+
+	F32 volume_out = 0.f;
+	volume_in = llclamp(volume_in, 0.f, 1.0f);
+
+	if (volume_in <= 0.5f)
+	{
+		volume_out = volume_in * volume_in * 4.f * 0.56f;
+	}
+	else
+	{
+		volume_out = (1.f - 0.56f) * (4.f * volume_in * volume_in - 1.f) / 3.f + 0.56f;
+	}
+
+	return volume_out;
+}
+
+/* static */ F32 LLSpeakerVolumeStorage::transformToLegacyVolume(F32 volume_in)
+{
+	// Convert from linear-logarithmic [0.0..1.0] with 0.5 = 0dB
+	// to legacy characteristic composed of two square-curves
+	// that intersect at volume_in = 0.56, volume_out = 0.5
+
+	F32 volume_out = 0.f;
+	volume_in = llclamp(volume_in, 0.f, 1.0f);
+
+	if (volume_in <= 0.56f)
+	{
+		volume_out = sqrt(volume_in / (4.f * 0.56f));
+	}
+	else
+	{
+		volume_out = sqrt((3.f * (volume_in - 0.56f) / (1.f - 0.56f) + 1.f) / 4.f);
+	}
+
+	return volume_out;
 }
 
 void LLSpeakerVolumeStorage::load()
@@ -1183,6 +1258,8 @@ void LLSpeakerVolumeStorage::load()
 	// load per-resident voice volume information
 	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SETTINGS_FILE_NAME);
 
+	LL_INFOS("Voice") << "Loading stored speaker volumes from: " << filename << LL_ENDL;
+
 	LLSD settings_llsd;
 	llifstream file;
 	file.open(filename);
@@ -1194,7 +1271,10 @@ void LLSpeakerVolumeStorage::load()
 	for (LLSD::map_const_iterator iter = settings_llsd.beginMap();
 		iter != settings_llsd.endMap(); ++iter)
 	{
-		mSpeakersData.insert(std::make_pair(LLUUID(iter->first), (F32)iter->second.asReal()));
+		// Maintain compatibility with 1.23 non-linear saved volume levels
+		F32 volume = transformFromLegacyVolume((F32)iter->second.asReal());
+
+		storeSpeakerVolume(LLUUID(iter->first), volume);
 	}
 }
 
@@ -1209,9 +1289,14 @@ void LLSpeakerVolumeStorage::save()
 		std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SETTINGS_FILE_NAME);
 		LLSD settings_llsd;
 
+		LL_INFOS("Voice") << "Saving stored speaker volumes to: " << filename << LL_ENDL;
+
 		for(speaker_data_map_t::const_iterator iter = mSpeakersData.begin(); iter != mSpeakersData.end(); ++iter)
 		{
-			settings_llsd[iter->first.asString()] = iter->second;
+			// Maintain compatibility with 1.23 non-linear saved volume levels
+			F32 volume = transformToLegacyVolume(iter->second);
+
+			settings_llsd[iter->first.asString()] = volume;
 		}
 
 		llofstream file;
@@ -2420,9 +2505,10 @@ void LLVoiceClient::stateMachine()
 					enforceTether();
 				}
 				
-				// Send an update if the ptt state has changed (which shouldn't be able to happen that often -- the user can only click so fast)
-				// or every 10hz, whichever is sooner.
-				if((mAudioSession && mAudioSession->mVolumeDirty) || mPTTDirty || mSpeakerVolumeDirty || mUpdateTimer.hasExpired())
+				// Send an update only if the ptt or mute state has changed (which shouldn't be able to happen that often
+				// -- the user can only click so fast) or every 10hz, whichever is sooner.
+				// Sending for every volume update causes an excessive flood of messages whenever a volume slider is dragged.
+				if((mAudioSession && mAudioSession->mMuteDirty) || mPTTDirty || mUpdateTimer.hasExpired())
 				{
 					mUpdateTimer.setTimerExpirySec(UPDATE_THROTTLE_SECONDS);
 					sendPositionalUpdate();
@@ -3417,38 +3503,26 @@ void LLVoiceClient::sendPositionalUpdate(void)
 		stream << "</Request>\n\n\n";
 	}	
 	
-	if(mAudioSession && mAudioSession->mVolumeDirty)
+	if(mAudioSession && (mAudioSession->mVolumeDirty || mAudioSession->mMuteDirty))
 	{
 		participantMap::iterator iter = mAudioSession->mParticipantsByURI.begin();
 
 		mAudioSession->mVolumeDirty = false;
+		mAudioSession->mMuteDirty = false;
 		
 		for(; iter != mAudioSession->mParticipantsByURI.end(); iter++)
 		{
 			participantState *p = iter->second;
-			
+
 			if(p->mVolumeDirty)
 			{
 				// Can't set volume/mute for yourself
 				if(!p->mIsSelf)
 				{
-					int volume = 56; // nominal default value
+					// scale from the range 0.0-1.0 to vivox volume in the range 0-100
+					S32 volume = llround(p->mVolume / VOLUME_SCALE_VIVOX);
+
 					bool mute = p->mOnMuteList;
-					
-					if(p->mUserVolume != -1)
-					{
-						// scale from user volume in the range 0-400 (with 100 as "normal") to vivox volume in the range 0-100 (with 56 as "normal")
-						if(p->mUserVolume < 100)
-							volume = (p->mUserVolume * 56) / 100;
-						else
-							volume = (((p->mUserVolume - 100) * (100 - 56)) / 300) + 56;
-					}
-					else if(p->mVolume != -1)
-					{
-						// Use the previously reported internal volume (comes in with a ParticipantUpdatedEvent)
-						volume = p->mVolume;
-					}
-										
 
 					if(mute)
 					{
@@ -3456,10 +3530,16 @@ void LLVoiceClient::sendPositionalUpdate(void)
 						// If we want the user to be muted, set their volume to 0 as well.
 						// This isn't perfect, but it will at least reduce their volume to a minimum.
 						volume = 0;
+
+						// Mark the current volume level as set to prevent incoming events
+						// changing it to 0, so that we can return to it when unmuting.
+						p->mVolumeSet = true;
 					}
-					
+
 					if(volume == 0)
+					{
 						mute = true;
+					}
 
 					LL_DEBUGS("Voice") << "Setting volume/mute for avatar " << p->mAvatarID << " to " << volume << (mute?"/true":"/false") << LL_ENDL;
 					
@@ -4600,16 +4680,13 @@ void LLVoiceClient::participantUpdatedEvent(
 				participant->mPower = 0.0f;
 			}
 
-			// *HACK: Minimal hack to fix EXT-6508, ignore the incoming volume if it is zero.
-			// This happens because we send volume zero to Vivox when someone is muted,
-			// Vivox then send it back to us, overwriting the previous volume.
-			// Remove this hack once volume refactoring from EXT-6031 is applied.
-			if (volume != 0)
+			// Ignore incoming volume level if it has been explicitly set, or there
+			//  is a volume or mute change pending.
+			if ( !participant->mVolumeSet && !participant->mVolumeDirty)
 			{
-				participant->mVolume = volume;
+				participant->mVolume = (F32)volume * VOLUME_SCALE_VIVOX;
 			}
 
-			
 			// *HACK: mantipov: added while working on EXT-3544
 			/*
 			Sometimes LLVoiceClient::participantUpdatedEvent callback is called BEFORE 
@@ -4993,7 +5070,7 @@ void LLVoiceClient::muteListChanged()
 			
 			// Check to see if this participant is on the mute list already
 			if(p->updateMuteState())
-				mAudioSession->mVolumeDirty = true;
+				mAudioSession->mMuteDirty = true;
 		}
 	}
 }
@@ -5016,10 +5093,10 @@ LLVoiceClient::participantState::participantState(const std::string &uri) :
 	 mIsModeratorMuted(false), 
 	 mLastSpokeTimestamp(0.f), 
 	 mPower(0.f), 
-	 mVolume(-1), 
-	 mOnMuteList(false), 
-	 mUserVolume(-1), 
-	 mVolumeDirty(false), 
+	 mVolume(VOLUME_DEFAULT),
+	 mOnMuteList(false),
+	 mVolumeSet(false),
+	 mVolumeDirty(false),
 	 mAvatarIDValid(false),
 	 mIsSelf(false)
 {
@@ -5068,7 +5145,7 @@ LLVoiceClient::participantState *LLVoiceClient::sessionState::addParticipant(con
 				result->mAvatarID = id;
 
 				if(result->updateMuteState())
-					mVolumeDirty = true;
+					mMuteDirty = true;
 			}
 			else
 			{
@@ -5080,8 +5157,7 @@ LLVoiceClient::participantState *LLVoiceClient::sessionState::addParticipant(con
 		
 		mParticipantsByUUID.insert(participantUUIDMap::value_type(&(result->mAvatarID), result));
 
-		result->mUserVolume = LLSpeakerVolumeStorage::getInstance()->getSpeakerVolume(result->mAvatarID);
-		if (result->mUserVolume != -1)
+		if (LLSpeakerVolumeStorage::getInstance()->getSpeakerVolume(result->mAvatarID, result->mVolume))
 		{
 			result->mVolumeDirty = true;
 			mVolumeDirty = true;
@@ -5872,12 +5948,10 @@ void LLVoiceClient::enforceTether(void)
 
 void LLVoiceClient::updatePosition(void)
 {
-	
 	if(gVoiceClient)
 	{
-		LLVOAvatarSelf *avatarp = gAgent.getAvatarObject();
 		LLViewerRegion *region = gAgent.getRegion();
-		if(region && avatarp)
+		if(region && isAgentAvatarValid())
 		{
 			LLMatrix3 rot;
 			LLVector3d pos;
@@ -5895,9 +5969,9 @@ void LLVoiceClient::updatePosition(void)
 					rot);				// rotation matrix
 					
 			// Send the current avatar position to the voice code
-			rot = avatarp->getRootJoint()->getWorldRotation().getMatrix3();
+			rot = gAgentAvatarp->getRootJoint()->getWorldRotation().getMatrix3();
 	
-			pos = avatarp->getPositionGlobal();
+			pos = gAgentAvatarp->getPositionGlobal();
 			// TODO: Can we get the head offset from outside the LLVOAvatar?
 //			pos += LLVector3d(mHeadOffset);
 			pos += LLVector3d(0.f, 0.f, 1.f);
@@ -6281,51 +6355,21 @@ BOOL LLVoiceClient::getOnMuteList(const LLUUID& id)
 	return result;
 }
 
-// External accessiors. Maps 0.0 to 1.0 to internal values 0-400 with .5 == 100
-// internal = 400 * external^2
+// External accessors.
 F32 LLVoiceClient::getUserVolume(const LLUUID& id)
 {
-	F32 result = 0.0f;
+	// Minimum volume will be returned for users with voice disabled
+	F32 result = VOLUME_MIN;
 	
 	participantState *participant = findParticipantByID(id);
 	if(participant)
 	{
-		S32 ires = 100; // nominal default volume
-		
-		if(participant->mIsSelf)
-		{
-			// Always make it look like the user's own volume is set at the default.
-		}
-		else if(participant->mUserVolume != -1)
-		{
-			// Use the internal volume
-			ires = participant->mUserVolume;
-			
-			// Enable this when debugging voice slider issues.  It's way to spammy even for debug-level logging.
-//			LL_DEBUGS("Voice") << "mapping from mUserVolume " << ires << LL_ENDL;
-		}
-		else if(participant->mVolume != -1)
-		{
-			// Map backwards from vivox volume 
-
-			// Enable this when debugging voice slider issues.  It's way to spammy even for debug-level logging.
-//			LL_DEBUGS("Voice") << "mapping from mVolume " << participant->mVolume << LL_ENDL;
+		result = participant->mVolume;
 
-			if(participant->mVolume < 56)
-			{
-				ires = (participant->mVolume * 100) / 56;
-			}
-			else
-			{
-				ires = (((participant->mVolume - 56) * 300) / (100 - 56)) + 100;
-			}
-		}
-		result = sqrtf(((F32)ires) / 400.f);
+		// Enable this when debugging voice slider issues.  It's way to spammy even for debug-level logging.
+		// LL_DEBUGS("Voice") << "mVolume = " << result <<  " for " << id << LL_ENDL;
 	}
 
-	// Enable this when debugging voice slider issues.  It's way to spammy even for debug-level logging.
-//	LL_DEBUGS("Voice") << "returning " << result << LL_ENDL;
-
 	return result;
 }
 
@@ -6334,16 +6378,23 @@ void LLVoiceClient::setUserVolume(const LLUUID& id, F32 volume)
 	if(mAudioSession)
 	{
 		participantState *participant = findParticipantByID(id);
-		if (participant)
+		if (participant && !participant->mIsSelf)
 		{
-			// store this volume setting for future sessions
-			LLSpeakerVolumeStorage::getInstance()->storeSpeakerVolume(id, volume);
+			if (!is_approx_equal(volume, VOLUME_DEFAULT))
+			{
+				// Store this volume setting for future sessions if it has been
+				// changed from the default
+				LLSpeakerVolumeStorage::getInstance()->storeSpeakerVolume(id, volume);
+			}
+			else
+			{
+				// Remove stored volume setting if it is returned to the default
+				LLSpeakerVolumeStorage::getInstance()->removeSpeakerVolume(id);
+			}
 
-			// volume can amplify by as much as 4x!
-			S32 ivol = (S32)(400.f * volume * volume);
-			participant->mUserVolume = llclamp(ivol, 0, 400);
-			participant->mVolumeDirty = TRUE;
-			mAudioSession->mVolumeDirty = TRUE;
+			participant->mVolume = llclamp(volume, VOLUME_MIN, VOLUME_MAX);
+			participant->mVolumeDirty = true;
+			mAudioSession->mVolumeDirty = true;
 		}
 	}
 }
@@ -6484,6 +6535,7 @@ LLVoiceClient::sessionState::sessionState() :
 	mVoiceEnabled(false),
 	mReconnect(false),
 	mVolumeDirty(false),
+	mMuteDirty(false),
 	mParticipantsChanged(false)
 {
 }
diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h
index aaacab69e0c69e220d28775bda0b0c966a2c3980..a29c386182db988b5d96d56ced8b4b1a57a8f2c8 100644
--- a/indra/newview/llvoiceclient.h
+++ b/indra/newview/llvoiceclient.h
@@ -101,6 +101,10 @@ class LLVoiceClient: public LLSingleton<LLVoiceClient>
 		
 		static F32 OVERDRIVEN_POWER_LEVEL;
 
+		static const F32 VOLUME_MIN;
+		static const F32 VOLUME_DEFAULT;
+		static const F32 VOLUME_MAX;
+
 		void updateSettings(); // call after loading settings and whenever they change
 	
 		void getCaptureDevicesSendMessage();
@@ -269,7 +273,7 @@ static	void updatePosition(void);
 		public:
 			participantState(const std::string &uri);
 
-			bool updateMuteState();
+			bool updateMuteState();	// true if mute state has changed
 			bool isAvatar();
 
 			std::string mURI;
@@ -279,13 +283,13 @@ static	void updatePosition(void);
 			LLFrameTimer mSpeakingTimeout;
 			F32	mLastSpokeTimestamp;
 			F32 mPower;
-			int mVolume;
+			F32 mVolume;
 			std::string mGroupID;
-			int mUserVolume;
 			bool mPTT;
 			bool mIsSpeaking;
 			bool mIsModeratorMuted;
 			bool mOnMuteList;		// true if this avatar is on the user's mute list (and should be muted)
+			bool mVolumeSet;		// true if incoming volume messages should not change the volume
 			bool mVolumeDirty;		// true if this participant needs a volume command sent (either mOnMuteList or mUserVolume has changed)
 			bool mAvatarIDValid;
 			bool mIsSelf;
@@ -349,6 +353,7 @@ static	void updatePosition(void);
 			// Set to true when the mute state of someone in the participant list changes.
 			// The code will have to walk the list to find the changed participant(s).
 			bool		mVolumeDirty;
+			bool		mMuteDirty;
 
 			bool		mParticipantsChanged;
 			participantMap mParticipantsByURI;
diff --git a/indra/newview/llvoinventorylistener.h b/indra/newview/llvoinventorylistener.h
index 335e867fcadd5ec5f0c6134adc28e72ffe8db1b9..1531e6e33964776828d8d0b5cbe3b96a5d903d65 100644
--- a/indra/newview/llvoinventorylistener.h
+++ b/indra/newview/llvoinventorylistener.h
@@ -42,7 +42,7 @@ class LLVOInventoryListener
 {
 public:
 	virtual void inventoryChanged(LLViewerObject* object,
-								 InventoryObjectList* inventory,
+								 LLInventoryObject::object_list_t* inventory,
 								 S32 serial_num,
 								 void* user_data) = 0;
 
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 346fc0c4e4f26eb535b0a5406bb82b60eac7e518..e6de33c459b22047b3a635aa0db14836e83f81ab 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -369,7 +369,7 @@ U32 LLVOVolume::processUpdateMessage(LLMessageSystem *mesgsys,
 			S32 res2 = unpackTEMessage(*dp);
 			if (TEM_INVALID == res2)
 			{
-				// Well, crap, there's something bogus in the data that we're unpacking.
+				// There's something bogus in the data that we're unpacking.
 				dp->dumpBufferToLog();
 				llwarns << "Flushing cache files" << llendl;
 				std::string mask;
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index 589099673d599dec75b7d50bd575ba18461f0066..63f99273fe1a9823476663c9abc6be566bc55d18 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -62,13 +62,12 @@ class LLOverrideBakedTextureUpdate
 public:
 	LLOverrideBakedTextureUpdate(bool temp_state)
 	{
-		mAvatar = gAgent.getAvatarObject();
 		U32 num_bakes = (U32) LLVOAvatarDefines::BAKED_NUM_INDICES;
 		for( U32 index = 0; index < num_bakes; ++index )
 		{
-			composite_enabled[index] = mAvatar->isCompositeUpdateEnabled(index);
+			composite_enabled[index] = gAgentAvatarp->isCompositeUpdateEnabled(index);
 		}
-		mAvatar->setCompositeUpdatesEnabled(temp_state);
+		gAgentAvatarp->setCompositeUpdatesEnabled(temp_state);
 	}
 
 	~LLOverrideBakedTextureUpdate()
@@ -76,13 +75,11 @@ class LLOverrideBakedTextureUpdate
 		U32 num_bakes = (U32)LLVOAvatarDefines::BAKED_NUM_INDICES;		
 		for( U32 index = 0; index < num_bakes; ++index )
 		{
-			mAvatar->setCompositeUpdatesEnabled(index, composite_enabled[index]);
-		}		
+			gAgentAvatarp->setCompositeUpdatesEnabled(index, composite_enabled[index]);
+		}
 	}
-
 private:
 	bool composite_enabled[LLVOAvatarDefines::BAKED_NUM_INDICES];
-	LLVOAvatarSelf *mAvatar;
 };
 
 // Private local functions
@@ -205,10 +202,9 @@ BOOL LLWearable::exportFile(LLFILE* file) const
 
 void LLWearable::createVisualParams()
 {
-	LLVOAvatar* avatar = gAgent.getAvatarObject();
-	for (LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam(); 
+	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
 		 param;
-		 param = (LLViewerVisualParam*) avatar->getNextVisualParam())
+		 param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam())
 	{
 		if (param->getWearableType() == mType)
 		{
@@ -228,7 +224,7 @@ void LLWearable::createVisualParams()
 		param->resetDrivenParams();
 		if(!param->linkDrivenParams(boost::bind(wearable_function,(LLWearable*)this, _1), false))
 		{
-			if( !param->linkDrivenParams(boost::bind(avatar_function,(LLVOAvatarSelf*)avatar,_1 ), true))
+			if( !param->linkDrivenParams(boost::bind(avatar_function,gAgentAvatarp,_1 ), true))
 			{
 				llwarns << "could not link driven params for wearable " << getName() << " id: " << param->getID() << llendl;
 				continue;
@@ -464,12 +460,7 @@ BOOL LLWearable::importFile( LLFILE* file )
 // since this wearable was created.
 BOOL LLWearable::isOldVersion() const
 {
-	LLVOAvatar* avatar = gAgent.getAvatarObject();
-	llassert( avatar );
-	if( !avatar )
-	{
-		return FALSE;
-	}
+	if (!isAgentAvatarValid()) return FALSE;
 
 	if( LLWearable::sCurrentDefinitionVersion < mDefinitionVersion )
 	{
@@ -483,9 +474,9 @@ BOOL LLWearable::isOldVersion() const
 	}
 
 	S32 param_count = 0;
-	for( LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam(); 
+	for( LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
 		param;
-		param = (LLViewerVisualParam*) avatar->getNextVisualParam() )
+		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )
 	{
 		if( (param->getWearableType() == mType) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )
 		{
@@ -531,17 +522,11 @@ BOOL LLWearable::isOldVersion() const
 // only if those values are the same as the defaults.
 BOOL LLWearable::isDirty() const
 {
-	LLVOAvatar* avatar = gAgent.getAvatarObject();
-	llassert( avatar );
-	if( !avatar )
-	{
-		return FALSE;
-	}
-
+	if (!isAgentAvatarValid()) return FALSE;
 
-	for( LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam(); 
+	for( LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
 		param;
-		param = (LLViewerVisualParam*) avatar->getNextVisualParam() )
+		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )
 	{
 		if( (param->getWearableType() == mType) 
 			&& (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) 
@@ -602,14 +587,9 @@ BOOL LLWearable::isDirty() const
 
 void LLWearable::setParamsToDefaults()
 {
-	LLVOAvatar* avatar = gAgent.getAvatarObject();
-	llassert( avatar );
-	if( !avatar )
-	{
-		return;
-	}
+	if (!isAgentAvatarValid()) return;
 
-	for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() )
+	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )
 	{
 		if( (((LLViewerVisualParam*)param)->getWearableType() == mType ) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )
 		{
@@ -645,18 +625,12 @@ void LLWearable::setTexturesToDefaults()
 // Updates the user's avatar's appearance
 void LLWearable::writeToAvatar()
 {
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	llassert(avatarp);
-	if(!avatarp)
-	{
-		llerrs << "could not get avatar object to write to for wearable " << this->getName() << llendl;
-		return;
-	}
+	if (!isAgentAvatarValid()) return;
 
-	ESex old_sex = avatarp->getSex();
+	ESex old_sex = gAgentAvatarp->getSex();
 
 	// Pull params
-	for( LLVisualParam* param = avatarp->getFirstVisualParam(); param; param = avatarp->getNextVisualParam() )
+	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )
 	{
 		// cross-wearable parameters are not authoritative, as they are driven by a different wearable. So don't copy the values to the
 		// avatar object if cross wearable. Cross wearable params get their values from the avatar, they shouldn't write the other way.
@@ -665,7 +639,7 @@ void LLWearable::writeToAvatar()
 			S32 param_id = param->getID();
 			F32 weight = getVisualParamWeight(param_id);
 
-			avatarp->setVisualParamWeight( param_id, weight, FALSE );
+			gAgentAvatarp->setVisualParamWeight( param_id, weight, FALSE );
 		}
 	}
 
@@ -686,14 +660,14 @@ void LLWearable::writeToAvatar()
 			}
 			LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );
 			// MULTI-WEARABLE: replace hard-coded 0
-			avatarp->setLocalTextureTE(te, image, 0);
+			gAgentAvatarp->setLocalTextureTE(te, image, 0);
 		}
 	}
 
-	ESex new_sex = avatarp->getSex();
+	ESex new_sex = gAgentAvatarp->getSex();
 	if( old_sex != new_sex )
 	{
-		avatarp->updateSexDependentLayerSets( FALSE );
+		gAgentAvatarp->updateSexDependentLayerSets( FALSE );
 	}	
 	
 //	if( upload_bake )
@@ -707,12 +681,7 @@ void LLWearable::writeToAvatar()
 // static 
 void LLWearable::removeFromAvatar( EWearableType type, BOOL upload_bake )
 {
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	llassert(avatarp);
-	if(!avatarp)
-	{
-		return;
-	}
+	if (!isAgentAvatarValid()) return;
 
 	// You can't just remove body parts.
 	if( (type == WT_SHAPE) ||
@@ -724,12 +693,12 @@ void LLWearable::removeFromAvatar( EWearableType type, BOOL upload_bake )
 	}
 
 	// Pull params
-	for( LLVisualParam* param = avatarp->getFirstVisualParam(); param; param = avatarp->getNextVisualParam() )
+	for( LLVisualParam* param = gAgentAvatarp->getFirstVisualParam(); param; param = gAgentAvatarp->getNextVisualParam() )
 	{
 		if( (((LLViewerVisualParam*)param)->getWearableType() == type) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )
 		{
 			S32 param_id = param->getID();
-			avatarp->setVisualParamWeight( param_id, param->getDefaultWeight(), upload_bake );
+			gAgentAvatarp->setVisualParamWeight( param_id, param->getDefaultWeight(), upload_bake );
 		}
 	}
 
@@ -738,8 +707,8 @@ void LLWearable::removeFromAvatar( EWearableType type, BOOL upload_bake )
 		gFloaterCustomize->setWearable(type, NULL, PERM_ALL, TRUE);
 	}
 
-	avatarp->updateVisualParams();
-	avatarp->wearableUpdated(type, TRUE);
+	gAgentAvatarp->updateVisualParams();
+	gAgentAvatarp->wearableUpdated(type, TRUE);
 
 //	if( upload_bake )
 //	{
@@ -751,12 +720,7 @@ void LLWearable::removeFromAvatar( EWearableType type, BOOL upload_bake )
 // Definition version is current: removes obsolete enties and creates default values for new ones.
 void LLWearable::copyDataFrom(const LLWearable* src)
 {
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	llassert(avatarp);
-	if(!avatarp)
-	{
-		return;
-	}
+	if (!isAgentAvatarValid()) return;
 
 	mDefinitionVersion = LLWearable::sCurrentDefinitionVersion;
 
@@ -769,9 +733,9 @@ void LLWearable::copyDataFrom(const LLWearable* src)
 
 	mSavedVisualParamMap.clear();
 	// Deep copy of mVisualParamMap (copies only those params that are current, filling in defaults where needed)
-	for (LLViewerVisualParam* param = (LLViewerVisualParam*) avatarp->getFirstVisualParam(); 
+	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
 		param;
-		param = (LLViewerVisualParam*) avatarp->getNextVisualParam() )
+		param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam() )
 	{
 		if( (param->getWearableType() == mType) )
 		{
@@ -876,14 +840,12 @@ void LLWearable::addVisualParam(LLVisualParam *param)
 
 void LLWearable::setVisualParams()
 {
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-
 	for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); iter != mVisualParamIndexMap.end(); iter++)
 	{
 		S32 id = iter->first;
 		LLVisualParam *wearable_param = iter->second;
 		F32 value = wearable_param->getWeight();
-		avatarp->setVisualParamWeight(id, value, FALSE);
+		gAgentAvatarp->setVisualParamWeight(id, value, FALSE);
 	}
 }
 
@@ -1024,8 +986,7 @@ BOOL LLWearable::isOnTop() const
 
 void LLWearable::createLayers(S32 te)
 {
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	LLTexLayerSet *layer_set = avatarp->getLayerSet((ETextureIndex)te);
+	LLTexLayerSet *layer_set = gAgentAvatarp->getLayerSet((ETextureIndex)te);
 	if (layer_set)
 	{
 		layer_set->cloneTemplates(mTEMap[te], (ETextureIndex)te, this);
@@ -1123,10 +1084,9 @@ void LLWearable::destroyTextures()
 void LLWearable::pullCrossWearableValues()
 {
 	// scan through all of the avatar's visual parameters
-	LLVOAvatar* avatar = gAgent.getAvatarObject();
-	for (LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam(); 
+	for (LLViewerVisualParam* param = (LLViewerVisualParam*) gAgentAvatarp->getFirstVisualParam(); 
 		 param;
-		 param = (LLViewerVisualParam*) avatar->getNextVisualParam())
+		 param = (LLViewerVisualParam*) gAgentAvatarp->getNextVisualParam())
 	{
 		if( param )
 		{
diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp
index 3385b75c65224ebd8c06fe221b2cb49377b2a28c..1a64f9d881e5fa8881065d7d94d94e49befa5347 100644
--- a/indra/newview/llweb.cpp
+++ b/indra/newview/llweb.cpp
@@ -102,9 +102,19 @@ void LLWeb::loadURLInternal(const std::string &url)
 
 // static
 void LLWeb::loadURLExternal(const std::string& url)
+{
+	loadURLExternal(url, true);
+}
+
+
+// static
+void LLWeb::loadURLExternal(const std::string& url, bool async)
 {
 	std::string escaped_url = escapeURL(url);
-	gViewerWindow->getWindow()->spawnWebBrowser(escaped_url);
+	if (gViewerWindow)
+	{
+		gViewerWindow->getWindow()->spawnWebBrowser(escaped_url, async);
+	}
 }
 
 
diff --git a/indra/newview/llweb.h b/indra/newview/llweb.h
index f4666c9280a975897ee44bbf8c1bc4ad1177c0c0..1119b80bb4f94ad327ff5918275eaa72d892dce0 100644
--- a/indra/newview/llweb.h
+++ b/indra/newview/llweb.h
@@ -54,8 +54,10 @@ class LLWeb
 	static void loadURL(const char* url) { loadURL( ll_safe_string(url) ); }
 	/// Load the given url in the Second Life internal web browser
 	static void loadURLInternal(const std::string &url);
-	/// Load the given url in the operating system's web browser
+	/// Load the given url in the operating system's web browser, async if we want to return immediately
+	/// before browser has spawned
 	static void loadURLExternal(const std::string& url);
+	static void loadURLExternal(const std::string& url, bool async);
 
 	/// Returns escaped url (eg, " " to "%20") - used by all loadURL methods
 	static std::string escapeURL(const std::string& url);
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index 19f303ab8877b99dc341bea32945cd1221c7d416..0b63f5efbde8023e9dba3b608cbd33bb2bdf7fcc 100644
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -1209,7 +1209,7 @@ static LLVector3d unpackLocalToGlobalPosition(U32 compact_local, const LLVector3
 	return pos_global;
 }
 
-void LLWorld::getAvatars(std::vector<LLUUID>* avatar_ids, std::vector<LLVector3d>* positions, const LLVector3d& relative_to, F32 radius) const
+void LLWorld::getAvatars(uuid_vec_t* avatar_ids, std::vector<LLVector3d>* positions, const LLVector3d& relative_to, F32 radius) const
 {
 	if(avatar_ids != NULL)
 	{
diff --git a/indra/newview/llworld.h b/indra/newview/llworld.h
index 48025c700b47b23b4f9d7d9a069c67dc4c8c63cc..502f7b0320bef2e1d4fdfa0924f8eaee86c4690d 100644
--- a/indra/newview/llworld.h
+++ b/indra/newview/llworld.h
@@ -158,7 +158,7 @@ class LLWorld : public LLSingleton<LLWorld>
 	// All arguments are optional. Given containers will be emptied and then filled.
 	// Not supplying origin or radius input returns data on all avatars in the known regions.
 	void getAvatars(
-		std::vector<LLUUID>* avatar_ids = NULL,
+		uuid_vec_t* avatar_ids = NULL,
 		std::vector<LLVector3d>* positions = NULL, 
 		const LLVector3d& relative_to = LLVector3d(), F32 radius = FLT_MAX) const;
 
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index 7afe81b436c1d9381bae0419cef746ec42ef8f0f..0c37bb6eb1b7a63fef50c799247d17e0bae6d6e9 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -886,28 +886,36 @@ void LLWorldMapView::drawFrustum()
 	F32 half_width_meters = far_clip_meters * tan( horiz_fov / 2 );
 	F32 half_width_pixels = half_width_meters * meters_to_pixels;
 	
-	F32 ctr_x = getRect().getWidth() * 0.5f + sPanX;
-	F32 ctr_y = getRect().getHeight() * 0.5f + sPanY;
+	F32 ctr_x = getLocalRect().getWidth() * 0.5f + sPanX;
+	F32 ctr_y = getLocalRect().getHeight() * 0.5f + sPanY;
 
 	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 
 	// Since we don't rotate the map, we have to rotate the frustum.
 	gGL.pushMatrix();
+	{
 		gGL.translatef( ctr_x, ctr_y, 0 );
-		glRotatef( atan2( LLViewerCamera::getInstance()->getAtAxis().mV[VX], LLViewerCamera::getInstance()->getAtAxis().mV[VY] ) * RAD_TO_DEG, 0.f, 0.f, -1.f);
 
 		// Draw triangle with more alpha in far pixels to make it 
 		// fade out in distance.
 		gGL.begin( LLRender::TRIANGLES  );
+		{
+			LLVector2 cam_lookat(LLViewerCamera::instance().getAtAxis().mV[VX], LLViewerCamera::instance().getAtAxis().mV[VY]);
+			LLVector2 cam_left(LLViewerCamera::instance().getLeftAxis().mV[VX], LLViewerCamera::instance().getLeftAxis().mV[VY]);
+
 			gGL.color4f(1.f, 1.f, 1.f, 0.25f);
 			gGL.vertex2f( 0, 0 );
 
 			gGL.color4f(1.f, 1.f, 1.f, 0.02f);
-			gGL.vertex2f( -half_width_pixels, far_clip_pixels );
+			
+			LLVector2 vert = cam_lookat * far_clip_pixels + cam_left * half_width_pixels;
+			gGL.vertex2f(vert.mV[VX], vert.mV[VY]);
 
-			gGL.color4f(1.f, 1.f, 1.f, 0.02f);
-			gGL.vertex2f(  half_width_pixels, far_clip_pixels );
+			vert = cam_lookat * far_clip_pixels - cam_left * half_width_pixels;
+			gGL.vertex2f(vert.mV[VX], vert.mV[VY]);
+		}
 		gGL.end();
+	}
 	gGL.popMatrix();
 }
 
diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp
index c19be37e75ce4deadb6eb70f2063617d2199ae50..5884cdd1c39bad95514a96487aaf22322526060c 100644
--- a/indra/newview/llxmlrpctransaction.cpp
+++ b/indra/newview/llxmlrpctransaction.cpp
@@ -252,8 +252,10 @@ void LLXMLRPCTransaction::Impl::init(XMLRPC_REQUEST request, bool useGzip)
 //	mCurlRequest->setopt(CURLOPT_VERBOSE, 1); // usefull for debugging
 	mCurlRequest->setopt(CURLOPT_NOSIGNAL, 1);
 	mCurlRequest->setWriteCallback(&curlDownloadCallback, (void*)this);
-	mCurlRequest->setopt(CURLOPT_SSL_VERIFYPEER, LLCurl::getSSLVerify());
+	BOOL verifySSLCert = !gSavedSettings.getBOOL("NoVerifySSLCert");
 	mCurlRequest->setopt(CURLOPT_SSL_VERIFYHOST, LLCurl::getSSLVerify() ? 2 : 0);
+	mCurlRequest->setopt(CURLOPT_SSL_VERIFYPEER, verifySSLCert);
+	mCurlRequest->setopt(CURLOPT_SSL_VERIFYHOST, verifySSLCert ? 2 : 0);
 	// Be a little impatient about establishing connections.
 	mCurlRequest->setopt(CURLOPT_CONNECTTIMEOUT, 40L);
 
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 5e54d4ab78f3f405bf6ee797c75294f1a5ec2406..5940b354f48b53a03ff150509b1216955944cfdc 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -3844,15 +3844,14 @@ void LLPipeline::renderForSelect(std::set<LLViewerObject*>& objects, BOOL render
 	}
 
 	// pick HUD objects
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-	if (avatarp && sShowHUDAttachments)
+	if (isAgentAvatarValid() && sShowHUDAttachments)
 	{
 		glh::matrix4f save_proj(glh_get_current_projection());
 		glh::matrix4f save_model(glh_get_current_modelview());
 
 		setup_hud_matrices(screen_rect);
-		for (LLVOAvatar::attachment_map_t::iterator iter = avatarp->mAttachmentPoints.begin(); 
-			 iter != avatarp->mAttachmentPoints.end(); )
+		for (LLVOAvatar::attachment_map_t::iterator iter = gAgentAvatarp->mAttachmentPoints.begin(); 
+			 iter != gAgentAvatarp->mAttachmentPoints.end(); )
 		{
 			LLVOAvatar::attachment_map_t::iterator curiter = iter++;
 			LLViewerJointAttachment* attachment = curiter->second;
@@ -3952,9 +3951,9 @@ void LLPipeline::rebuildPools()
 		max_count--;
 	}
 
-	if (gAgent.getAvatarObject())
+	if (isAgentAvatarValid())
 	{
-		gAgent.getAvatarObject()->rebuildHUD();
+		gAgentAvatarp->rebuildHUD();
 	}
 }
 
@@ -4586,8 +4585,8 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
 		glLightfv(gllight, GL_SPECULAR, LLColor4::black.mV);
 	}
 
-	if (gAgent.getAvatarObject() &&
-		gAgent.getAvatarObject()->mSpecialRenderMode == 3)
+	if (isAgentAvatarValid() &&
+		gAgentAvatarp->mSpecialRenderMode == 3)
 	{
 		LLColor4  light_color = LLColor4::white;
 		light_color.mV[3] = 0.0f;
@@ -4696,15 +4695,13 @@ void LLPipeline::enableLightsDynamic()
 		glColor4f(0.f, 0.f, 0.f, 1.f); // no local lighting by default
 	}
 
-	LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
-
-	if (avatarp && getLightingDetail() <= 0)
+	if (isAgentAvatarValid() && getLightingDetail() <= 0)
 	{
-		if (avatarp->mSpecialRenderMode == 0) // normal
+		if (gAgentAvatarp->mSpecialRenderMode == 0) // normal
 		{
 			gPipeline.enableLightsAvatar();
 		}
-		else if (avatarp->mSpecialRenderMode >= 1)  // anim preview
+		else if (gAgentAvatarp->mSpecialRenderMode >= 1)  // anim preview
 		{
 			gPipeline.enableLightsAvatarEdit(LLColor4(0.7f, 0.6f, 0.3f, 1.f));
 		}
@@ -7113,15 +7110,15 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 {
 	if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate)
 	{
-		LLVOAvatarSelf* avatarp = gAgent.getAvatarObject();
+		BOOL skip_avatar_update = FALSE;
 		if (gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK)
 		{
-			avatarp = NULL;
+			skip_avatar_update = TRUE;
 		}
 
-		if (avatarp)
+		if (!skip_avatar_update)
 		{
-			avatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON);
+			gAgentAvatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON);
 		}
 		LLVertexBuffer::unbind();
 
@@ -7345,9 +7342,9 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 		LLGLState::checkTextureChannels();
 		LLGLState::checkClientArrays();
 
-		if (avatarp)
+		if (!skip_avatar_update)
 		{
-			avatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode());
+			gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode());
 		}
 	}
 }
diff --git a/indra/newview/res-sdl/toolbuy.BMP b/indra/newview/res-sdl/toolbuy.BMP
new file mode 100644
index 0000000000000000000000000000000000000000..07e927372182c096659347c786dcd83f86dbfa85
Binary files /dev/null and b/indra/newview/res-sdl/toolbuy.BMP differ
diff --git a/indra/newview/res-sdl/toolopen.BMP b/indra/newview/res-sdl/toolopen.BMP
new file mode 100644
index 0000000000000000000000000000000000000000..5b87979304979a70dd091f04df1977261bd3ef5a
Binary files /dev/null and b/indra/newview/res-sdl/toolopen.BMP differ
diff --git a/indra/newview/res-sdl/toolsit.BMP b/indra/newview/res-sdl/toolsit.BMP
new file mode 100644
index 0000000000000000000000000000000000000000..8ce59ae97a9bbb6a2485265fcb02aa8a8ad653d8
Binary files /dev/null and b/indra/newview/res-sdl/toolsit.BMP differ
diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc
index 7a965cf57e50bc3cf38a666484781fdf6db88996..ecdcacec4638f2c3ef639ca352b48dc3df86b45f 100644
--- a/indra/newview/res/viewerRes.rc
+++ b/indra/newview/res/viewerRes.rc
@@ -129,8 +129,8 @@ TOOLBUY                 CURSOR                  "toolbuy.cur"
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 2,0,0,3422
- PRODUCTVERSION 2,0,0,3422
+ FILEVERSION 2,0,0,203110
+ PRODUCTVERSION 2,0,0,203110
  FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -147,12 +147,12 @@ BEGIN
         BEGIN
             VALUE "CompanyName", "Linden Lab"
             VALUE "FileDescription", "Second Life"
-            VALUE "FileVersion", "2.0.0.200030"
+            VALUE "FileVersion", "2.0.0.203110"
             VALUE "InternalName", "Second Life"
             VALUE "LegalCopyright", "Copyright © 2001-2008, Linden Research, Inc."
             VALUE "OriginalFilename", "SecondLife.exe"
             VALUE "ProductName", "Second Life"
-            VALUE "ProductVersion", "2.0.0.200030"
+            VALUE "ProductVersion", "2.0.0.203110"
         END
     END
     BLOCK "VarFileInfo"
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index fcf5cfadb260279d319ab68c898a6e68cf36427e..99603530d8f1f1ceb698fa6c865a1575e75bc0c9 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -61,7 +61,7 @@
 	value="0.26 0.345 0.263 1" />
 	<color
 	 name="Red"
-	 value="0.729 0 0.121 1" />
+	 value="1 0 0 1" />
 	<color
 	 name="Blue"
 	 value="0 0 1 1" />
@@ -197,7 +197,7 @@
      value="0.5 0.5 0.5 1" />
     <color
      name="ColorPaletteEntry03"
-     value="0.3344 0.5456 0.5159 1" />
+     value="0.5 0 0 1" />
     <color
      name="ColorPaletteEntry04"
      value="0.5 0.5 0 1" />
@@ -239,7 +239,7 @@
      reference="LtYellow" />
     <color
      name="ColorPaletteEntry17"
-     reference="LtGreen" />
+     reference="White" />
     <color
      name="ColorPaletteEntry18"
      reference="LtGray" />
@@ -248,7 +248,7 @@
      reference="Red" />
     <color
      name="ColorPaletteEntry20"
-     reference=".5 .5 1 0" />
+     reference="Yellow" />
     <color
      name="ColorPaletteEntry21"
      reference="Green" />
@@ -420,6 +420,9 @@
     <color
      name="InventoryItemSuffixColor"
      reference="White_25" />
+    <color
+     name="InventoryItemLibraryColor"
+     reference="EmphasisColor" />
     <color
      name="InventorySearchStatusColor"
      reference="EmphasisColor" />
@@ -524,7 +527,7 @@
      reference="Unused?" />
     <color
      name="NetMapBackgroundColor"
-     value="0 0 0 0.3" />
+     value="0 0 0 0" />
     <color
      name="NetMapGroupOwnAboveWater"
      reference="Purple" />
@@ -731,7 +734,10 @@
     <color
      name="ChatToastAgentNameColor"
      reference="EmphasisColor" />
-  <color
+    <color
     name="ColorSwatchBorderColor"
     value="0.45098 0.517647 0.607843 1"/>
+    <color
+     name="ChatTimestampColor"
+     reference="White" />
 </colors>
diff --git a/indra/newview/skins/default/textures/icons/Generic_Group_Large.png b/indra/newview/skins/default/textures/icons/Generic_Group_Large.png
deleted file mode 100644
index 4d4f1e1beea3f2b410805a9860c965b3a3489d0b..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Generic_Group_Large.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_1.png b/indra/newview/skins/default/textures/icons/Progress_1.png
deleted file mode 100644
index 58b56003c40a1c50fb38a02ad749862278fee619..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Progress_1.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_10.png b/indra/newview/skins/default/textures/icons/Progress_10.png
deleted file mode 100644
index 07fe0be8a3999b4713a0fa26ffaf9263a831b15e..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Progress_10.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_11.png b/indra/newview/skins/default/textures/icons/Progress_11.png
deleted file mode 100644
index 215d68cc465fa2c7597c650b0bb5251b08f46f83..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Progress_11.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_12.png b/indra/newview/skins/default/textures/icons/Progress_12.png
deleted file mode 100644
index d75558862140ee581dcf463bd903829c987155b1..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Progress_12.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_2.png b/indra/newview/skins/default/textures/icons/Progress_2.png
deleted file mode 100644
index 6640ee227ba754700c2d29014eb47dc06f765d84..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Progress_2.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_3.png b/indra/newview/skins/default/textures/icons/Progress_3.png
deleted file mode 100644
index 5decbe977e25de8cd5ed19dd1cc844df0a04e715..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Progress_3.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_4.png b/indra/newview/skins/default/textures/icons/Progress_4.png
deleted file mode 100644
index 56e81c17aa0258e691da8cd3db02a377b4f044d4..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Progress_4.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_5.png b/indra/newview/skins/default/textures/icons/Progress_5.png
deleted file mode 100644
index a89bf2ac62d0c3175ccb5cbcd2fbbed8a28e9047..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Progress_5.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_6.png b/indra/newview/skins/default/textures/icons/Progress_6.png
deleted file mode 100644
index 233c4795407ddf79ca93d1895da1baa4ad011f82..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Progress_6.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_7.png b/indra/newview/skins/default/textures/icons/Progress_7.png
deleted file mode 100644
index 631d7a6819ddd0763c90fc1834ce4eb9c51292a5..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Progress_7.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_8.png b/indra/newview/skins/default/textures/icons/Progress_8.png
deleted file mode 100644
index ac0e3f13f7b214eeb491a33fd3a057cc2f81e368..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Progress_8.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Progress_9.png b/indra/newview/skins/default/textures/icons/Progress_9.png
deleted file mode 100644
index 17fb4a0335da68fb3f50fdc50cbe1cec529cf75e..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Progress_9.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index a3e5361e763782c91a36c0d73876c79e459155f0..41bcc622207d7de573858e9874ff17b32de4ea83 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -1,4 +1,4 @@
-<!--
+<!--
 This file contains metadata about how to load, display, and scale textures for rendering in the UI.
 Images do *NOT* have to appear in this file in order to use them as textures in the UI...simply refer
 to them by filename (relative to textures directory).
@@ -46,13 +46,9 @@ with the same filename but different name
   <texture name="AddItem_Press" file_name="icons/AddItem_Press.png" preload="false" />
 
   <texture name="Arrow_Left_Off" file_name="navbar/Arrow_Left_Off.png" preload="true" />
-  <texture name="Arrow_Left_Press" file_name="navbar/Arrow_Left_Press.png" preload="true" />
   <texture name="Arrow_Right_Off" file_name="navbar/Arrow_Right_Off.png" preload="true" />
-  <texture name="Arrow_Right_Press" file_name="navbar/Arrow_Right_Press.png" preload="true" />
 
 <!--
-  <texture name="Arrow_Left" file_name="widgets/Arrow_Left.png" preload="true" />
-  <texture name="Arrow_Right" file_name="widgets/Arrow_Right.png" preload="true" />
 -->
 
   <texture name="Arrow_Small_Up" file_name="widgets/Arrow_Small_Up.png" preload="true" />
@@ -64,49 +60,28 @@ with the same filename but different name
 
   <texture name="AudioMute_Off" file_name="icons/AudioMute_Off.png" preload="false" />
   <texture name="AudioMute_Over" file_name="icons/AudioMute_Over.png" preload="false" />
-  <texture name="AudioMute_Press" file_name="icons/AudioMute_Press.png" preload="false" />
 
   <texture name="Audio_Off" file_name="icons/Audio_Off.png" preload="false" />
-  <texture name="Audio_Over" file_name="icons/Audio_Over.png" preload="false" />
   <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" />
 
   <texture name="Blank" file_name="Blank.png" preload="false" />
 
-  <texture name="BottomTray_BG" file_name="bottomtray/BottomTray_BG.png" preload="false" />
-  <texture name="BottomTray_Scroll_Right" file_name="navbar/Arrow_Right_Off.png" preload="false" />
-  <texture name="BottomTray_Scroll_Left" file_name="navbar/Arrow_Left_Off.png" preload="false" />
 
-  <texture name="BuyArrow_Off" file_name="navbar/BuyArrow_Off.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0"  />
   <texture name="BuyArrow_Over" file_name="navbar/BuyArrow_Over.png" preload="true" scale.left="0" scale.top="1" scale.right="0" scale.bottom="0"  />
   <texture name="BuyArrow_Press" file_name="navbar/BuyArrow_Press.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0"  />
 
-  <texture name="Cam_Avatar_Disabled" file_name="bottomtray/Cam_Avatar_Disabled.png" preload="false" />
-  <texture name="Cam_Avatar_Over" file_name="bottomtray/Cam_Avatar_Over.png" preload="false" />
   <texture name="Cam_Avatar_Off" file_name="bottomtray/Cam_Avatar_Off.png" preload="false" />
-  <texture name="Cam_Avatar_Press" file_name="bottomtray/Cam_Avatar_Press.png" preload="false" />
-  <texture name="Cam_FreeCam_Disabled" file_name="bottomtray/Cam_FreeCam_Disabled.png" preload="false" />
   <texture name="Cam_FreeCam_Off" file_name="bottomtray/Cam_FreeCam_Off.png" preload="false" />
-  <texture name="Cam_FreeCam_Over" file_name="bottomtray/Cam_FreeCam_Over.png" preload="false" />
-  <texture name="Cam_FreeCam_Press" file_name="bottomtray/Cam_FreeCam_Press.png" preload="false" />
-  <texture name="Cam_Orbit_Disabled" file_name="bottomtray/Cam_Orbit_Disabled.png" preload="false" />
   <texture name="Cam_Orbit_Off" file_name="bottomtray/Cam_Orbit_Off.png" preload="false" />
-  <texture name="Cam_Orbit_Over" file_name="bottomtray/Cam_Orbit_Over.png" preload="false" />
-  <texture name="Cam_Orbit_Press" file_name="bottomtray/Cam_Orbit_Press.png" preload="false" />
-  <texture name="Cam_Pan_Disabled" file_name="bottomtray/Cam_Pan_Disabled.png" preload="false" />
   <texture name="Cam_Pan_Off" file_name="bottomtray/Cam_Pan_Off.png" preload="false" />
-  <texture name="Cam_Pan_Over" file_name="bottomtray/CCam_Pan_Over.png" preload="false" />
-  <texture name="Cam_Pan_Press" file_name="bottomtray/Cam_Pan_Press.png" preload="false" />
 
   <texture name="Cam_Preset_Back_Off" file_name="bottomtray/Cam_Preset_Back_Off.png" preload="false" />
   <texture name="Cam_Preset_Back_On" file_name="bottomtray/Cam_Preset_Back_On.png" preload="false" />
   <texture name="Cam_Preset_Eye_Off" file_name="bottomtray/Cam_Preset_Eye_Off.png" preload="false" />
-  <texture name="Cam_Preset_Eye_On" file_name="bottomtray/Cam_Preset_Eye_On.png" preload="false" />
   <texture name="Cam_Preset_Front_Off" file_name="bottomtray/Cam_Preset_Front_Off.png" preload="false" />
   <texture name="Cam_Preset_Front_On" file_name="bottomtray/Cam_Preset_Front_On.png" preload="false" />
   <texture name="Cam_Preset_Side_Off" file_name="bottomtray/Cam_Preset_Side_Off.png" preload="false" />
@@ -116,8 +91,6 @@ with the same filename but different name
   <texture name="Cam_Rotate_Out" file_name="bottomtray/Cam_Rotate_Out.png" preload="false" />
   <texture name="Cam_Tracking_In" file_name="bottomtray/Cam_Tracking_In.png" preload="false" />
   <texture name="Cam_Tracking_Out" file_name="bottomtray/Cam_Tracking_Out.png" preload="false" />
-  <texture name="CameraView_Off" file_name="bottomtray/CameraView_Off.png" preload="false" />
-  <texture name="CameraView_Over" file_name="bottomtray/CameraView_Over.png" preload="false" />
 
   <texture name="Checkbox_Off_Disabled" file_name="widgets/Checkbox_Disabled.png" preload="true" />
   <texture name="Checkbox_On_Disabled" file_name="widgets/Checkbox_On_Disabled.png" preload="true" />
@@ -127,8 +100,6 @@ with the same filename but different name
   <texture name="Checkbox_Press" file_name="widgets/Checkbox_Press.png" preload="true" />
 
   <texture name="ComboButton_Disabled" file_name="widgets/ComboButton_Disabled.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
-  <texture name="ComboButton_Over" file_name="widgets/ComboButton_Over.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
-  <texture name="ComboButton_Press" file_name="widgets/ComboButton_Press.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_Selected" file_name="widgets/ComboButton_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_UpSelected" file_name="widgets/ComboButton_UpSelected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_Up_On_Selected" file_name="widgets/ComboButton_Up_On_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
@@ -136,25 +107,18 @@ with the same filename but different name
   <texture name="ComboButton_UpOff" file_name="widgets/ComboButton_UpOff.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="Container" file_name="containers/Container.png" preload="false" />
 
-  <texture name="DisclosureArrow_Closed_Off" file_name="widgets/DisclosureArrow_Closed_Off.png" preload="true" />
-  <texture name="DisclosureArrow_Closed_Press" file_name="widgets/DisclosureArrow_Closed_Press.png" preload="true" />
   <texture name="DisclosureArrow_Opened_Off" file_name="widgets/DisclosureArrow_Opened_Off.png" preload="true" />
-  <texture name="DisclosureArrow_Opened_Press" file_name="widgets/DisclosureArrow_Opened_Press.png" preload="true" />
 
   <texture name="DownArrow" file_name="bottomtray/DownArrow.png" preload="false" />
 
   <texture name="DropDown_Disabled" file_name="widgets/DropDown_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
-  <texture name="DropDown_Over" file_name="widgets/DropDown_Over.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
   <texture name="DropDown_Press" file_name="widgets/DropDown_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
-  <texture name="DropDown_Selected" file_name="widgets/DropDown_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
   <texture name="DropDown_On" file_name="widgets/DropDown_On.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
   <texture name="DropDown_Off" file_name="widgets/DropDown_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" />
 
   <texture name="DropTarget" file_name="widgets/DropTarget.png" preload="false" />
 
   <texture name="ExternalBrowser_Off" file_name="icons/ExternalBrowser_Off.png" preload="false" />
-  <texture name="ExternalBrowser_Over" file_name="icons/ExternalBrowser_Over.png" preload="false" />
-  <texture name="ExternalBrowser_Press" file_name="icons/ExternalBrowser_Press.png" preload="false" />
 
   <texture name="Favorite_Star_Active" file_name="navbar/Favorite_Star_Active.png" preload="false" />
   <texture name="Favorite_Star_Off" file_name="navbar/Favorite_Star_Off.png" preload="false" />
@@ -162,8 +126,6 @@ with the same filename but different name
   <texture name="Favorite_Star_Over" file_name="navbar/Favorite_Star_Over.png" preload="false" />
   <texture name="Favorite_Link_Over" file_name="navbar/Favorite_Link_Over.png" preload="false" />
 
-  <texture name="FileMenu_BarSelect" file_name="navbar/FileMenu_BarSelect.png" preload="false" scale.left="2" scale.top="0" scale.right="2" scale.bottom="0" />
-  <texture name="FileMenu_BG" file_name="navbar/FileMenu_BG.png" preload="false" />
 
   <texture name="Flag" file_name="navbar/Flag.png" preload="false" />
 
@@ -174,22 +136,16 @@ with the same filename but different name
 
   <texture name="Generic_Group" file_name="icons/Generic_Group.png" preload="false" />
   <texture name="icon_group.tga" file_name="icons/Generic_Group.png" preload="false" />
-  <texture name="Generic_Group_Large" file_name="icons/Generic_Group_Large.png" preload="false" />
-  <texture name="Generic_Object_Medium" file_name="icons/Generic_Object_Medium.png" preload="false" />
   <texture name="Generic_Object_Small" file_name="icons/Generic_Object_Small.png" preload="false" />
-  <texture name="Generic_Object_Large" file_name="icons/Generic_Object_Large.png" preload="false" />
   <texture name="Generic_Person" file_name="icons/Generic_Person.png" preload="false" />
   <texture name="Generic_Person_Large" file_name="icons/Generic_Person_Large.png" preload="false" />
 
   <texture name="Health" file_name="icons/Health.png" preload="false" />
 
-  <texture name="Help_Off" file_name="navbar/Help_Off.png" preload="false" />
   <texture name="Help_Press" file_name="navbar/Help_Press.png" preload="false" />
 
-  <texture name="History_Arrow" file_name="navbar/History_Arrow.png" preload="true" />
 
   <texture name="Home_Off" file_name="navbar/Home_Off.png" preload="false" />
-  <texture name="Home_Press" file_name="navbar/Home_Press.png" preload="false" />
 
   <texture name="Icon_Close_Foreground" file_name="windows/Icon_Close_Foreground.png" preload="true" />
   <texture name="Icon_Close_Press" file_name="windows/Icon_Close_Press.png" preload="true" />
@@ -206,7 +162,6 @@ with the same filename but different name
 
   <texture name="Icon_Help_Foreground" file_name="windows/Icon_Help_Foreground.png" preload="true" />
   <texture name="Icon_Help_Press" file_name="windows/Icon_Help_Press.png" preload="true" />
-  <texture name="Icon_Info" file_name="windows/Icon_Info.png" preload="false" />
 
   <texture name="Icon_Minimize_Foreground" file_name="windows/Icon_Minimize_Foreground.png" preload="true" />
   <texture name="Icon_Minimize_Press" file_name="windows/Icon_Minimize_Press.png" preload="true" />
@@ -225,13 +180,11 @@ with the same filename but different name
   <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" />
   <texture name="Inv_BodyShape" file_name="icons/Inv_BodyShape.png" preload="false" />
   <texture name="Inv_CallingCard" file_name="icons/Inv_CallingCard.png" preload="false" />
   <texture name="Inv_Clothing" file_name="icons/Inv_Clothing.png" preload="false" />
-  <texture name="Inv_DangerousScript" file_name="icons/Inv_DangerousScript.png" preload="false" />
   <texture name="Inv_Eye" file_name="icons/Inv_Eye.png" preload="false" />
   <texture name="Inv_FolderClosed" file_name="icons/Inv_FolderClosed.png" preload="false" />
   <texture name="Inv_FolderOpen" file_name="icons/Inv_FolderOpen.png" preload="false" />
@@ -239,7 +192,6 @@ with the same filename but different name
   <texture name="Inv_Gloves" file_name="icons/Inv_Gloves.png" preload="false" />
   <texture name="Inv_Hair" file_name="icons/Inv_Hair.png" preload="false" />
   <texture name="Inv_LinkItem" file_name="icons/Inv_LinkItem.png" preload="false" />
-  <texture name="Inv_LinkItem_Broken" file_name="icons/Inv_LinkItem_Broken.png" preload="false" />
   <texture name="Inv_LinkFolder" file_name="icons/Inv_LinkFolder.png" preload="false" />
   <texture name="Inv_Jacket" file_name="icons/Inv_Jacket.png" preload="false" />
   <texture name="Inv_LookFolderOpen" file_name="icons/Inv_LookFolderOpen.png" preload="false" />
@@ -259,7 +211,6 @@ with the same filename but different name
   <texture name="Inv_Sound" file_name="icons/Inv_Sound.png" preload="false" />
   <texture name="Inv_Tattoo" file_name="icons/Inv_Tattoo.png" preload="false" />
   <texture name="Inv_Texture" file_name="icons/Inv_Texture.png" preload="false" />
-  <texture name="Inv_Trash" file_name="icons/Inv_Trash.png" preload="false" />
   <texture name="Inv_Underpants" file_name="icons/Inv_Underpants.png" preload="false" />
   <texture name="Inv_Undershirt" file_name="icons/Inv_Undershirt.png" preload="false" />
 
@@ -272,9 +223,7 @@ with the same filename but different name
   <texture name="Lock" file_name="icons/Lock.png" preload="false" />
   <texture name="Lock2" file_name="navbar/Lock.png" preload="false" />
 
-  <texture name="Login_Pod" file_name="windows/Login_Pod.png" preload="true" />
 
-  <texture name="Microphone_Mute" file_name="icons/Microphone_Mute.png" preload="false" />
   <texture name="Microphone_On" file_name="icons/Microphone_On.png" preload="false" />
 
   <texture name="MinusItem_Disabled" file_name="icons/MinusItem_Disabled.png" preload="false" />
@@ -283,18 +232,9 @@ with the same filename but different name
 
   <texture name="menu_separator" file_name="navbar/FileMenu_Divider.png" scale.left="4" scale.top="166" scale.right="0" scale.bottom="0" />
 
-  <texture name="Move_Fly_Disabled" file_name="bottomtray/Move_Fly_Disabled.png" preload="false" />
   <texture name="Move_Fly_Off" file_name="bottomtray/Move_Fly_Off.png" preload="false" />
-  <texture name="Move_Fly_Over" file_name="bottomtray/Move_Fly_Over.png" preload="false" />
-  <texture name="Move_Fly_Press" file_name="bottomtray/Move_Fly_Press.png" preload="false" />
-  <texture name="Move_Run_Disabled" file_name="bottomtray/Move_Run_Disabled.png" preload="false" />
   <texture name="Move_Run_Off" file_name="bottomtray/Move_Run_Off.png" preload="false" />
-  <texture name="Move_Run_Over" file_name="bottomtray/Move_Run_Over.png" preload="false" />
-  <texture name="Move_Run_Press" file_name="bottomtray/Move_Run_Press.png" preload="false" />
-  <texture name="Move_Walk_Disabled" file_name="bottomtray/Move_Walk_Disabled.png" preload="false" />
   <texture name="Move_Walk_Off" file_name="bottomtray/Move_Walk_Off.png" preload="false" />
-  <texture name="Move_Walk_Over" file_name="bottomtray/Move_Walk_Over.png" preload="false" />
-  <texture name="Move_Walk_Press" file_name="bottomtray/Move_Walk_Press.png" preload="false" />
   <texture name="Movement_Backward_Off" file_name="bottomtray/Movement_Backward_Off.png" preload="false" />
   <texture name="Movement_Backward_On" file_name="bottomtray/Movement_Backward_On.png" preload="false" />
   <texture name="Movement_Down_Off" file_name="bottomtray/Movement_Down_Off.png" preload="false" />
@@ -311,10 +251,6 @@ with the same filename but different name
   <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" />
-  <texture name="NearbyVoice_Lvl3" file_name="bottomtray/NearbyVoice_Lvl3.png" preload="false" />
-  <texture name="NearbyVoice_On" file_name="bottomtray/NearbyVoice_On.png" preload="false" />
 
   <texture name="Notices_Unread" file_name="bottomtray/Notices_Unread.png" preload="true" />
 
@@ -356,27 +292,15 @@ with the same filename but different name
   <texture name="OptionsMenu_Off" file_name="icons/OptionsMenu_Off.png" preload="false" />
   <texture name="OptionsMenu_Press" file_name="icons/OptionsMenu_Press.png" preload="false" />
 
-  <texture name="Overhead_Arrow_L" file_name="world/Overhead_Arrow_L.png" preload="false" />
-  <texture name="Overhead_Arrow_M" file_name="world/Overhead_Arrow_M.png" preload="false" />
-  <texture name="Overhead_Arrow_S" file_name="world/Overhead_Arrow_S.png" preload="false" />
-  <texture name="Overhead_L" file_name="world/Overhead_L.png" preload="false" />
-  <texture name="Overhead_M" file_name="world/Overhead_M.png" preload="false" />
-  <texture name="Overhead_S" file_name="world/Overhead_S.png" preload="false" />
 
-  <texture name="Parcel_Evry_Color" file_name="icons/Parcel_Evry_Color.png" preload="false" />
   <texture name="Parcel_Exp_Color" file_name="icons/Parcel_Exp_Color.png" preload="false" />
-  <texture name="Parcel_M_Color" file_name="icons/Parcel_M_Color.png" preload="false" />
 
  <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_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" />
  <texture name="Parcel_Fly_Dark" file_name="icons/Parcel_Fly_Dark.png" preload="false" />
  <texture name="Parcel_FlyNo_Dark" file_name="icons/Parcel_FlyNo_Dark.png" preload="false" />
- <texture name="Parcel_ForSale_Dark" file_name="icons/Parcel_ForSale_Dark.png" preload="false" />
- <texture name="Parcel_ForSaleNo_Dark" file_name="icons/Parcel_ForSaleNo_Dark.png" preload="false" />
  <texture name="Parcel_Health_Dark" file_name="icons/Parcel_Health_Dark.png" preload="false" />
  <texture name="Parcel_M_Dark" file_name="icons/Parcel_M_Dark.png" preload="false" />
  <texture name="Parcel_PG_Dark" file_name="icons/Parcel_PG_Dark.png" preload="false" />
@@ -388,22 +312,13 @@ with the same filename but different name
  <texture name="Parcel_Voice_Dark" file_name="icons/Parcel_Voice_Dark.png" preload="false" />
  <texture name="Parcel_VoiceNo_Dark" file_name="icons/Parcel_VoiceNo_Dark.png" preload="false" />
 
- <texture name="Parcel_Build_Light" file_name="icons/Parcel_Build_Light.png" preload="false" />
  <texture name="Parcel_BuildNo_Light" file_name="icons/Parcel_BuildNo_Light.png" preload="false" />
- <texture name="Parcel_Damage_Light" file_name="icons/Parcel_Damage_Light.png" preload="false" />
- <texture name="Parcel_DamageNo_Light" file_name="icons/Parcel_DamageNo_Light.png" preload="false" />
- <texture name="Parcel_Evry_Light" file_name="icons/Parcel_Evry_Light.png" preload="false" />
- <texture name="Parcel_Exp_Light" file_name="icons/Parcel_Exp_Light.png" preload="false" />
- <texture name="Parcel_Fly_Light" file_name="icons/Parcel_Fly_Light.png" preload="false" />
  <texture name="Parcel_FlyNo_Light" file_name="icons/Parcel_FlyNo_Light.png" preload="false" />
  <texture name="Parcel_ForSale_Light" file_name="icons/Parcel_ForSale_Light.png" preload="false" />
- <texture name="Parcel_ForSaleNo_Light" file_name="icons/Parcel_ForSaleNo_Light.png" preload="false" />
  <texture name="Parcel_M_Light" file_name="icons/Parcel_M_Light.png" preload="false" />
  <texture name="Parcel_PG_Light" file_name="icons/Parcel_PG_Light.png" preload="false" />
- <texture name="Parcel_Push_Light" file_name="icons/Parcel_Push_Light.png" preload="false" />
  <texture name="Parcel_PushNo_Light" file_name="icons/Parcel_PushNo_Light.png" preload="false" />
  <texture name="Parcel_R_Light" file_name="icons/Parcel_R_Light.png" preload="false" />
- <texture name="Parcel_Scripts_Light" file_name="icons/Parcel_Scripts_Light.png" preload="false" />
  <texture name="Parcel_ScriptsNo_Light" file_name="icons/Parcel_ScriptsNo_Dark.png" preload="false" />
  <texture name="Parcel_Voice_Light" file_name="icons/Parcel_Voice_Light.png" preload="false" />
  <texture name="Parcel_VoiceNo_Light" file_name="icons/Parcel_VoiceNo_Light.png" preload="false" />
@@ -415,18 +330,6 @@ with the same filename but different name
   <texture name="Play_Over" file_name="icons/Play_Over.png" preload="false" />
   <texture name="Play_Press" file_name="icons/Play_Press.png" preload="false" />
 
-  <texture name="Progress_1" file_name="icons/Progress_1.png" preload="false" />
-  <texture name="Progress_2" file_name="icons/Progress_2.png" preload="false" />
-  <texture name="Progress_3" file_name="icons/Progress_3.png" preload="false" />
-  <texture name="Progress_4" file_name="icons/Progress_4.png" preload="false" />
-  <texture name="Progress_5" file_name="icons/Progress_5.png" preload="false" />
-  <texture name="Progress_6" file_name="icons/Progress_6.png" preload="false" />
-  <texture name="Progress_7" file_name="icons/Progress_7.png" preload="false" />
-  <texture name="Progress_8" file_name="icons/Progress_8.png" preload="false" />
-  <texture name="Progress_9" file_name="icons/Progress_9.png" preload="false" />
-  <texture name="Progress_10" file_name="icons/Progress_10.png" preload="false" />
-  <texture name="Progress_11" file_name="icons/Progress_11.png" preload="false" />
-  <texture name="Progress_12" file_name="icons/Progress_12.png" preload="false" />
 
   <texture name="ProgressBar" file_name="widgets/ProgressBar.png" preload="true" scale.left="4" scale.top="10" scale.right="48" scale.bottom="2" />
   <texture name="ProgressTrack" file_name="widgets/ProgressTrack.png" preload="true" scale.left="4" scale.top="13" scale.right="148" scale.bottom="2" />
@@ -435,7 +338,6 @@ with the same filename but different name
   <texture name="PushButton_Off" file_name="widgets/PushButton_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
   <texture name="PushButton_On" file_name="widgets/PushButton_On.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
   <texture name="PushButton_On_Selected" file_name="widgets/PushButton_On_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
-  <texture name="PushButton_On_Disabled" file_name="widgets/PushButton_On_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
   <texture name="PushButton_Press" file_name="widgets/PushButton_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
   <texture name="PushButton_Selected" file_name="widgets/PushButton_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
   <texture name="PushButton_Selected_Press" file_name="widgets/PushButton_Selected_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
@@ -448,12 +350,8 @@ with the same filename but different name
   <texture name="RadioButton_Disabled" file_name="widgets/RadioButton_Disabled.png" preload="true" />
   <texture name="RadioButton_On_Disabled" file_name="widgets/RadioButton_On_Disabled.png" preload="true" />
 
-  <texture name="Rec_Off" file_name="icons/Rec_Off.png" preload="false" />
-  <texture name="Rec_On" file_name="icons/Rec_On.png" preload="false" />
 
-  <texture name="Refresh_Disabled" file_name="icons/Refresh_Disabled.png" preload="false" />
   <texture name="Refresh_Off" file_name="icons/Refresh_Off.png" preload="false" />
-  <texture name="Refresh_Press" file_name="icons/Refresh_Press.png" preload="false" />
 
   <texture name="Resize_Corner" file_name="windows/Resize_Corner.png" preload="true" />
 
@@ -470,11 +368,6 @@ with the same filename but different name
   <texture name="ScrollTrack_Vert" file_name="widgets/ScrollTrack_Vert.png" preload="true" scale.left="2" scale.top="40" scale.bottom="13" scale.right="0" />
   <texture name="ScrollTrack_Horiz" file_name="widgets/ScrollTrack_Horiz.png" preload="true" scale.left="4" scale.top="0" scale.bottom="0" scale.right="2" />
 
-  <texture name="ScrubberThumb_Disabled" file_name="widgets/ScrubberThumb_Disabled.png" preload="false" />
-  <texture name="ScrubberThumb_Focus" file_name="widgets/ScrubberThumb_Focus.png" preload="false" />
-  <texture name="ScrubberThumb_Off" file_name="widgets/ScrubberThumb_Off.png" preload="false" />
-  <texture name="ScrubberThumb_Over" file_name="widgets/ScrubberThumb_Over.png" preload="false" />
-  <texture name="ScrubberThumb_Press" file_name="widgets/ScrubberThumb_Press.png" preload="false" />
 
   <texture name="Search" file_name="navbar/Search.png" preload="false" />
 
@@ -487,8 +380,6 @@ with the same filename but different name
   <texture name="SegmentedBtn_Left_Selected_Press" file_name="widgets/SegmentedBtn_Left_Selected_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="SegmentedBtn_Left_Selected_Disabled" file_name="widgets/SegmentedBtn_Left_Selected_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
 
-  <texture name="SegmentedBtn_Middle_Off" file_name="widgets/SegmentedBtn_Middle_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
-  <texture name="SegmentedBtn_Middle_Press" file_name="widgets/SegmentedBtn_Middle_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="SegmentedBtn_Middle_Disabled" file_name="widgets/SegmentedBtn_Middle_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="SegmentedBtn_Middle_Selected" file_name="widgets/SegmentedBtn_Middle_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="SegmentedBtn_Middle_Selected_Press" file_name="widgets/SegmentedBtn_Middle_Selected_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
@@ -503,11 +394,7 @@ with the same filename but different name
   <texture name="SegmentedBtn_Right_Selected_Disabled" file_name="widgets/SegmentedBtn_Right_Selected_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
 
   <texture name="SkipBackward_Off" file_name="icons/SkipBackward_Off.png" preload="false" />
-  <texture name="SkipBackward_Over" file_name="icons/SkipBackward_Over.png" preload="false" />
-  <texture name="SkipBackward_Press" file_name="icons/SkipBackward_Press.png" preload="false" />
   <texture name="SkipForward_Off" file_name="icons/SkipForward_Off.png" preload="false" />
-  <texture name="SkipForward_Over" file_name="icons/SkipForward_Over.png" preload="false" />
-  <texture name="SkipForward_Press" file_name="icons/SkipForward_Press.png" preload="false" />
 
   <texture name="SliderTrack_Horiz" file_name="widgets/SliderTrack_Horiz.png" scale.left="4" scale.top="4" scale.right="100" scale.bottom="2" />
   <texture name="SliderTrack_Vert" file_name="widgets/SliderTrack_Vert.png" scale.left="2" scale.top="100" scale.right="4" scale.bottom="4" />
@@ -520,63 +407,35 @@ with the same filename but different name
   <texture name="Unknown_Icon" file_name="icons/unknown_icon.png" preload="true" />
 
   <texture name="Snapshot_Off" file_name="bottomtray/Snapshot_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
-  <texture name="Snapshot_Over" file_name="bottomtray/Snapshot_Over.png" preload="false" />
-  <texture name="Snapshot_Press" file_name="bottomtray/Snapshot_Press.png" preload="false" />
 
   <texture name="startup_logo"  file_name="windows/startup_logo.png" preload="true" />
 
-  <texture name="Stepper_Down_Disabled" file_name="widgets/Stepper_Down_Disabled.png" preload="false" />
   <texture name="Stepper_Down_Off" file_name="widgets/Stepper_Down_Off.png" preload="false" />
   <texture name="Stepper_Down_Press" file_name="widgets/Stepper_Down_Press.png" preload="false" />
-  <texture name="Stepper_Up_Disabled" file_name="widgets/Stepper_Up_Disabled.png" preload="false" />
   <texture name="Stepper_Up_Off" file_name="widgets/Stepper_Up_Off.png" preload="false" />
   <texture name="Stepper_Up_Press" file_name="widgets/Stepper_Up_Press.png" preload="false" />
 
   <texture name="Stop_Off" file_name="icons/Stop_Off.png" preload="false" />
-  <texture name="Stop_Over" file_name="icons/Stop_Over.png" preload="false" />
-  <texture name="Stop_Press" file_name="icons/Stop_Press.png" preload="false" />
   <texture name="StopReload_Off" file_name="icons/StopReload_Off.png" preload="false" />
   <texture name="StopReload_Over" file_name="icons/StopReload_Over.png" preload="false" />
-  <texture name="StopReload_Press" file_name="icons/StopReload_Press.png" preload="false" />
 
-  <texture name="TabIcon_Appearance_Large" file_name="taskpanel/TabIcon_Appearance_Large.png" preload="false" />
   <texture name="TabIcon_Appearance_Off" file_name="taskpanel/TabIcon_Appearance_Off.png" preload="false" />
-  <texture name="TabIcon_Appearance_Over" file_name="taskpanel/TabIcon_Appearance_Over.png" preload="false" />
   <texture name="TabIcon_Appearance_Selected" file_name="taskpanel/TabIcon_Appearance_Selected.png" preload="false" />
   <texture name="TabIcon_Close_Off" file_name="taskpanel/TabIcon_Close_Off.png" preload="false" />
-  <texture name="TabIcon_Close_Over" file_name="taskpanel/TabIcon_Close_Over.png" preload="false" />
-  <texture name="TabIcon_Inventory_Large" file_name="taskpanel/TabIcon_Inventory_Large.png" preload="false" />
-  <texture name="TabIcon_Inventory_Off" file_name="taskpanel/TabIcon_Inventory_Off.png" preload="false" />
-  <texture name="TabIcon_Inventory_Over" file_name="taskpanel/TabIcon_Inventory_Over.png" preload="false" />
-  <texture name="TabIcon_Inventory_Selected" file_name="taskpanel/TabIcon_Inventory_Selected.png" preload="false" />
-  <texture name="TabIcon_Home_Large" file_name="taskpanel/TabIcon_Home_Large.png" preload="false" />
   <texture name="TabIcon_Home_Off" file_name="taskpanel/TabIcon_Home_Off.png" preload="false" />
-  <texture name="TabIcon_Home_Over" file_name="taskpanel/TabIcon_Home_Over.png" preload="false" />
   <texture name="TabIcon_Home_Selected" file_name="taskpanel/TabIcon_Home_Selected.png" preload="false" />
-  <texture name="TabIcon_Me_Large" file_name="taskpanel/TabIcon_Me_Large.png" preload="false" />
   <texture name="TabIcon_Me_Off" file_name="taskpanel/TabIcon_Me_Off.png" preload="false" />
-  <texture name="TabIcon_Me_Over" file_name="taskpanel/TabIcon_Me_Over.png" preload="false" />
   <texture name="TabIcon_Me_Selected" file_name="taskpanel/TabIcon_Me_Selected.png" preload="false" />
   <texture name="TabIcon_Open_Off" file_name="taskpanel/TabIcon_Open_Off.png" preload="false" />
-  <texture name="TabIcon_Open_Over" file_name="taskpanel/TabIcon_Open_Over.png" preload="false" />
-  <texture name="TabIcon_People_Large" file_name="taskpanel/TabIcon_People_Large.png" preload="false" />
   <texture name="TabIcon_People_Off" file_name="taskpanel/TabIcon_People_Off.png" preload="false" />
-  <texture name="TabIcon_People_Over" file_name="taskpanel/TabIcon_People_Over.png" preload="false" />
   <texture name="TabIcon_People_Selected" file_name="taskpanel/TabIcon_People_Selected.png" preload="false" />
   <texture name="TabIcon_Places_Large" file_name="taskpanel/TabIcon_Places_Large.png" preload="false" />
   <texture name="TabIcon_Places_Off" file_name="taskpanel/TabIcon_Places_Off.png" preload="false" />
-  <texture name="TabIcon_Places_Over" file_name="taskpanel/TabIcon_Places_Over.png" preload="false" />
   <texture name="TabIcon_Places_Selected" file_name="taskpanel/TabIcon_Places_Selected.png" preload="false" />
-  <texture name="TabIcon_Things_Large" file_name="taskpanel/TabIcon_Things_Large.png" preload="false" />
   <texture name="TabIcon_Things_Off" file_name="taskpanel/TabIcon_Things_Off.png" preload="false" />
-  <texture name="TabIcon_Things_Over" file_name="taskpanel/TabIcon_Things_Over.png" preload="false" />
   <texture name="TabIcon_Things_Selected" file_name="taskpanel/TabIcon_Things_Selected.png" preload="false" />
 
-  <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"  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"  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" />
@@ -585,8 +444,6 @@ with the same filename but different name
 
   <texture name="TaskPanel_Tab_Off" file_name="taskpanel/TaskPanel_Tab_Off.png" preload="false" scale.left="4" scale.top="29" scale.right="36" scale.bottom="4" />
   <texture name="TaskPanel_Tab_Selected" file_name="taskpanel/TaskPanel_Tab_Selected.png" preload="false" scale.left="5" scale.top="30" scale.right="36" scale.bottom="5" />
-  <texture name="TaskPanel_BG" file_name="taskpanel/TaskPanel_BG.png" preload="false" scale.left="4" scale.top="146" scale.right="146" scale.bottom="4" />
-  <texture name="TaskPanel_Tab_Unselected" file_name="taskpanel/TaskPanel_Tab_Over.png" preload="false" scale.left="5" scale.top="30" scale.right="36" scale.bottom="5" />
 
   <texture name="TextField_Search_Disabled" file_name="widgets/TextField_Search_Disabled.png" preload="true" scale.left="9" scale.top="12" scale.right="248" scale.bottom="12" />
   <texture name="TextField_Off" file_name="widgets/TextField_Off.png" preload="true" scale.left="9" scale.top="12" scale.right="248" scale.bottom="12" />
@@ -595,7 +452,6 @@ with the same filename but different name
   <texture name="TextField_Disabled" file_name="widgets/TextField_Disabled.png" preload="true" scale.left="9" scale.top="12" scale.right="248" scale.bottom="12" />
   <texture name="TextField_Active" file_name="widgets/TextField_Active.png" preload="true" scale.left="9" scale.top="12" scale.right="248" scale.bottom="12" />
 
-  <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"
@@ -604,25 +460,19 @@ with the same filename but different name
            scale.left="4" scale.top="28" scale.right="60" scale.bottom="4" />
 
   <texture name="Tool_Create" file_name="build/Tool_Create.png" preload="false" />
-  <texture name="Tool_Create_Selected" file_name="build/Tool_Create_Selected.png" preload="false" />
   <texture name="Tool_Dozer" file_name="build/Tool_Dozer.png" preload="false" />
-  <texture name="Tool_Dozer_Selected" file_name="build/Tool_Dozer_Selected.png" preload="false" />
   <texture name="Tool_Face" file_name="build/Tool_Face.png" preload="false" />
-  <texture name="Tool_Face_Selected" file_name="build/Tool_Face_Selected.png" preload="false" />
   <texture name="Tool_Grab" file_name="build/Tool_Grab.png" preload="false" />
-  <texture name="Tool_Grab_Selected" file_name="build/Tool_Grab_Selected.png" preload="false" />
   <texture name="Tool_Zoom" file_name="build/Tool_Zoom.png" preload="false" />
-  <texture name="Tool_Zoom_Selected" file_name="build/Tool_Zoom_Selected.png" preload="false" />
 
-  <texture name="Toolbar_Divider" file_name="containers/Toolbar_Divider.png" preload="false" />
   <texture name="Toolbar_Left_Off" file_name="containers/Toolbar_Left_Off.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
-  <texture name="Toolbar_Left_Press" file_name="containers/Toolbar_Left_Press.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
+  <texture name="Toolbar_Left_Over" file_name="containers/Toolbar_Left_Over.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
   <texture name="Toolbar_Left_Selected" file_name="containers/Toolbar_Left_Selected.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
   <texture name="Toolbar_Middle_Off" file_name="containers/Toolbar_Middle_Off.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" />
-  <texture name="Toolbar_Middle_Press" file_name="containers/Toolbar_Middle_Press.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" />
+  <texture name="Toolbar_Middle_Over" file_name="containers/Toolbar_Middle_Over.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" />
   <texture name="Toolbar_Middle_Selected" file_name="containers/Toolbar_Middle_Selected.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" />
   <texture name="Toolbar_Right_Off" file_name="containers/Toolbar_Right_Off.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
-  <texture name="Toolbar_Right_Press" file_name="containers/Toolbar_Right_Press.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
+  <texture name="Toolbar_Right_Over" file_name="containers/Toolbar_Right_Over.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
   <texture name="Toolbar_Right_Selected" file_name="containers/Toolbar_Right_Selected.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
 
   <texture name="Tooltip" file_name="widgets/Tooltip.png" preload="true" scale.left="2" scale.top="16" scale.right="100" scale.bottom="3" />
@@ -632,7 +482,6 @@ with the same filename but different name
   <texture name="TrashItem_Press" file_name="icons/TrashItem_Press.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="Volume_Background" file_name="windows/Volume_Background.png" preload="false"
@@ -647,10 +496,7 @@ with the same filename but different name
   <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" />
 
-  <texture name="WebBasedMediaBackground" file_name="windows/WebBasedMediaBackground.png" preload="false" />
 
-  <texture name="Widget_DownArrow" file_name="icons/Widget_DownArrow.png" preload="true" />
-  <texture name="Widget_UpArrow" file_name="icons/Widget_UpArrow.png" preload="true" />
 
   <texture name="Window_Background" file_name="windows/Window_Background.png" preload="true"
            scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" />
@@ -664,17 +510,7 @@ with the same filename but different name
   <texture name="YouAreHere_Badge" file_name="icons/YouAreHere_Badge.png" preload="false" />
 
   <texture name="Zoom_Off" file_name="icons/Zoom_Off.png" preload="false" />
-  <texture name="Zoom_Over" file_name="icons/Zoom_Over.png" preload="false" />
-  <texture name="Zoom_Press" file_name="icons/Zoom_Press.png" preload="false" />
   <texture name="UnZoom_Off" file_name="icons/UnZoom_Off.png" preload="false" />
-  <texture name="UnZoom_Over" file_name="icons/UnZoom_Over.png" preload="false" />
-  <texture name="UnZoom_Press" file_name="icons/UnZoom_Press.png" preload="false" />
-  <texture name="PowerOn_Off" file_name="icons/PowerOn_Off.png" preload="false" />
-  <texture name="PowerOn_Over" file_name="icons/PowerOn_Over.png" preload="false" />
-  <texture name="PowerOn_Press" file_name="icons/PowerOn_Press.png" preload="false" />
-  <texture name="PowerOff_Off" file_name="icons/PowerOff_Off.png" preload="false" />
-  <texture name="PowerOff_Over" file_name="icons/PowerOff_Over.png" preload="false" />
-  <texture name="PowerOff_Press" file_name="icons/PowerOff_Press.png" preload="false" />
 
   <texture name="pixiesmall.j2c" use_mips="true" />
   <texture name="script_error.j2c" use_mips="true" />
@@ -684,7 +520,6 @@ with the same filename but different name
   <texture name="transparent.j2c" use_mips="true" />
 
   <!--WARNING OLD ART BELOW *do not use*-->
-  <texture name="icn_chatbar.tga" />
   <texture name="icn_media_web.tga" preload="true" />
   <texture name="icn_media_movie.tga" preload="true" />
   <texture name="icn_speaker-muted_dark.tga" />
@@ -714,8 +549,6 @@ with the same filename but different name
   <texture name="icn_label_media.tga" />
   <texture name="icn_rounded-text-field.tga" scale.left="14" scale.bottom="16" scale.top="16" scale.right="114" />
 
-  <texture name="toggle_button_off" file_name="toggle_button_off.png" preload="true" />
-  <texture name="toggle_button_selected" file_name="toggle_button_selected.png" preload="true" />
   <texture name="color_swatch_alpha.tga" preload="true" />
 
   <texture name="button_anim_pause.tga" />
@@ -725,15 +558,11 @@ with the same filename but different name
   <texture name="crosshairs.tga" />
   <texture name="direction_arrow.tga" file_name="world/BeaconArrow.png" />
 
-  <texture name="icon_auction.tga" />
   <texture name="icon_avatar_offline.tga" />
   <texture name="icon_avatar_online.tga" />
   <texture name="icon_day_cycle.tga" />
   <texture name="icon_diurnal.tga" />
-  <texture name="icon_event.tga" />
-  <texture name="icon_event_mature.tga" />
   <texture name="icon_for_sale.tga" />
-  <texture name="icon_place_for_sale.tga" />
   <texture name="icon_top_pick.tga" />
 
   <texture name="lag_status_critical.tga" />
@@ -744,7 +573,6 @@ with the same filename but different name
 
   <texture name="map_avatar_16.tga" />
   <texture name="map_avatar_8.tga" />
-  <texture name="map_avatar_you_8.tga" />
   <texture name="map_event.tga" />
   <texture name="map_event_mature.tga" />
   <texture name="map_home.tga" />
@@ -753,15 +581,10 @@ with the same filename but different name
   <texture name="map_track_16.tga" />
 
   <texture name="notify_caution_icon.tga" />
-  <texture name="notify_next.png" preload="true" />
-  <texture name="notify_box_icon.tga" />
 
   <texture name="icn_active-speakers-dot-lvl0.tga" />
   <texture name="icn_active-speakers-dot-lvl1.tga" />
   <texture name="icn_active-speakers-dot-lvl2.tga" />
-  <texture name="icn_active-speakers-typing1.tga" />
-  <texture name="icn_active-speakers-typing2.tga" />
-  <texture name="icn_active-speakers-typing3.tga" />
 
   <texture name="icn_voice_ptt-off.tga" />
   <texture name="icn_voice_ptt-on.tga" />
@@ -777,5 +600,4 @@ with the same filename but different name
   <texture name="default_profile_picture.j2c" />
   <texture name="locked_image.j2c" />
 
-  <texture name="media_floater_border_16.png" scale_top="12" scale_left="4" scale_bottom="4" scale_right="12" />
 </textures>
diff --git a/indra/newview/skins/default/textures/windows/Icon_Gear_Background.png b/indra/newview/skins/default/textures/windows/Icon_Gear_Background.png
index db74b93afd02db4b6e6a7be6c9c51870243342f2..93d62a8d4f570890d5f692bb34004efadf798bbd 100644
Binary files a/indra/newview/skins/default/textures/windows/Icon_Gear_Background.png and b/indra/newview/skins/default/textures/windows/Icon_Gear_Background.png differ
diff --git a/indra/newview/skins/default/textures/windows/Icon_Gear_Foreground.png b/indra/newview/skins/default/textures/windows/Icon_Gear_Foreground.png
index 1032e45f7e2c6ef2fc3f3ff29fe6fad4105088fb..b2b2a77a88910a32350653ba0011cc954ddaef21 100644
Binary files a/indra/newview/skins/default/textures/windows/Icon_Gear_Foreground.png and b/indra/newview/skins/default/textures/windows/Icon_Gear_Foreground.png differ
diff --git a/indra/newview/skins/default/textures/windows/Icon_Gear_Over.png b/indra/newview/skins/default/textures/windows/Icon_Gear_Over.png
index 01dbde102be664d948ed3149ef1db5b49a3aa697..67bd3993587bc5109e2ef565a9da0b034ad849f6 100644
Binary files a/indra/newview/skins/default/textures/windows/Icon_Gear_Over.png and b/indra/newview/skins/default/textures/windows/Icon_Gear_Over.png differ
diff --git a/indra/newview/skins/default/textures/windows/Icon_Gear_Press.png b/indra/newview/skins/default/textures/windows/Icon_Gear_Press.png
index 6614bdd1652ecde49788e804cab20fdfb1a8d507..6fc3744d6beaa46656aa3f76fcb83fe305d29be8 100644
Binary files a/indra/newview/skins/default/textures/windows/Icon_Gear_Press.png and b/indra/newview/skins/default/textures/windows/Icon_Gear_Press.png differ
diff --git a/indra/newview/skins/default/xui/da/floater_build_options.xml b/indra/newview/skins/default/xui/da/floater_build_options.xml
index 9196f19b7859739562ac03f3fd0dcf801e1f574a..d3c3ac189966dd9929776f429847f81bae5b6c94 100644
--- a/indra/newview/skins/default/xui/da/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/da/floater_build_options.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="build options floater" title="GITTER VALG">
-	<spinner label="Gitter enheder (meter)" label_width="136" name="GridResolution" width="200"/>
-	<spinner label="Gitter rækkevidde (meter)" label_width="136" name="GridDrawSize" width="200"/>
+	<spinner label="Enheder (meter)" label_width="136" name="GridResolution" width="200"/>
+	<spinner label="Rækkevidde (meter)" label_width="136" name="GridDrawSize" width="200"/>
 	<check_box label="Aktivér låsning til underenheder" name="GridSubUnit"/>
 	<check_box label="Vis &apos;cross-sections&apos;" name="GridCrossSection"/>
 	<text name="grid_opacity_label" tool_tip="Gitter synlighed">
diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml
index 2e358111338fcde3a2efdc7b3a3834801378ab9f..a39a7e869830b579ba95b1798ff1ee14f49b3cd5 100644
--- a/indra/newview/skins/default/xui/da/floater_tools.xml
+++ b/indra/newview/skins/default/xui/da/floater_tools.xml
@@ -63,7 +63,7 @@
 		<radio_item label="Stræk (Ctrl+Shift)" name="radio stretch"/>
 		<radio_item label="Vælg overflade" name="radio select face"/>
 	</radio_group>
-	<check_box label="Redigér sammenlænkede dele" name="checkbox edit linked parts"/>
+	<check_box label="Redigér lænkede" name="checkbox edit linked parts"/>
 	<text name="RenderingCost" tool_tip="Hvis beregnede rendering omkostninger for dette objekt">
 		þ: [COUNT]
 	</text>
@@ -184,12 +184,12 @@
 				Klik for at:
 			</text>
 			<combo_box name="clickaction">
-				<combo_box.item label="Rør (Standard)" name="Touch/grab(default)"/>
-				<combo_box.item label="Sid på objekt" name="Sitonobject"/>
-				<combo_box.item label="Køb objekt" name="Buyobject"/>
-				<combo_box.item label="Betal objekt" name="Payobject"/>
-				<combo_box.item label="Ã…ben" name="Open"/>
-				<combo_box.item label="Zoom" name="Zoom"/>
+				<combo_box.item label="Røre (Standard)" name="Touch/grab(default)"/>
+				<combo_box.item label="Sidde på objekt" name="Sitonobject"/>
+				<combo_box.item label="Købe objekt" name="Buyobject"/>
+				<combo_box.item label="Betale objekt" name="Payobject"/>
+				<combo_box.item label="Ã…bne" name="Open"/>
+				<combo_box.item label="Zoome" name="Zoom"/>
 			</combo_box>
 			<check_box label="Til salg:" name="checkbox for sale"/>
 			<combo_box name="sale type">
@@ -206,8 +206,8 @@
 				<text name="Anyone can:">
 					Enhver:
 				</text>
-				<check_box label="Flyt" name="checkbox allow everyone move"/>
-				<check_box label="Kopi" name="checkbox allow everyone copy"/>
+				<check_box label="Flytte" name="checkbox allow everyone move"/>
+				<check_box label="Kopiere" name="checkbox allow everyone copy"/>
 				<text name="Next owner can:">
 					Næste ejer:
 				</text>
@@ -417,21 +417,21 @@
 				<combo_box.item label="Ingen" name="None"/>
 				<combo_box.item label="Lysintensitet" name="Brightness"/>
 				<combo_box.item label="Mørke" name="Darkness"/>
-				<combo_box.item label="træårer" name="woodgrain"/>
-				<combo_box.item label="bark" name="bark"/>
-				<combo_box.item label="mursten" name="bricks"/>
-				<combo_box.item label="tern" name="checker"/>
-				<combo_box.item label="beton" name="concrete"/>
-				<combo_box.item label="rustik flise" name="crustytile"/>
+				<combo_box.item label="Træårer" name="woodgrain"/>
+				<combo_box.item label="Bark" name="bark"/>
+				<combo_box.item label="Mursten" name="bricks"/>
+				<combo_box.item label="Tern" name="checker"/>
+				<combo_box.item label="Beton" name="concrete"/>
+				<combo_box.item label="Rustik flise" name="crustytile"/>
 				<combo_box.item label="Skåret sten" name="cutstone"/>
-				<combo_box.item label="plader" name="discs"/>
-				<combo_box.item label="grus" name="gravel"/>
-				<combo_box.item label="petriskål" name="petridish"/>
-				<combo_box.item label="udvendig beklædning" name="siding"/>
-				<combo_box.item label="stenflise" name="stonetile"/>
-				<combo_box.item label="puds" name="stucco"/>
-				<combo_box.item label="rør" name="suction"/>
-				<combo_box.item label="væv" name="weave"/>
+				<combo_box.item label="Plader" name="discs"/>
+				<combo_box.item label="Grus" name="gravel"/>
+				<combo_box.item label="Petriskål" name="petridish"/>
+				<combo_box.item label="Udvendig beklædning" name="siding"/>
+				<combo_box.item label="Stenflise" name="stonetile"/>
+				<combo_box.item label="Puds" name="stucco"/>
+				<combo_box.item label="Rør" name="suction"/>
+				<combo_box.item label="Væv" name="weave"/>
 			</combo_box>
 			<text name="tex scale">
 				Gentagelser på overflade
@@ -440,8 +440,8 @@
 			<check_box label="Vend" name="checkbox flip s"/>
 			<spinner label="Lodret (V)" name="TexScaleV"/>
 			<check_box label="Vend" name="checkbox flip t"/>
-			<spinner label="RotationËš" left="125" name="TexRot" width="55"/>
-			<spinner label="Gentagelser pr. meter" left="125" name="rptctrl" width="55"/>
+			<spinner label="RotationËš"/>
+			<spinner label="Gentagelser pr. m."/>
 			<button label="Gem" label_selected="Gem" left_delta="62" name="button apply"/>
 			<text name="tex offset">
 				Tekstur offset
@@ -488,7 +488,7 @@ Grå = Offentligt ejet"/>
 		<button label="Opdel" label_selected="Opdel" name="button subdivide land"/>
 		<button label="Saml" label_selected="Saml" name="button join land"/>
 		<text name="label_parcel_trans">
-			Transaktioner for land
+			Transaktioner - land
 		</text>
 		<button label="Køb land" label_selected="Køb land" name="button buy land"/>
 		<button label="Efterlad land" label_selected="Efterlad land" name="button abandon land"/>
diff --git a/indra/newview/skins/default/xui/da/language_settings.xml b/indra/newview/skins/default/xui/da/language_settings.xml
index 71418d446ab9fa71c3512f7f3dc17b1ba1d423a2..fa8a788605495c567d21c1f9d095bbe57f79ddf3 100644
--- a/indra/newview/skins/default/xui/da/language_settings.xml
+++ b/indra/newview/skins/default/xui/da/language_settings.xml
@@ -3,9 +3,9 @@
 <strings>
 
 	<!-- Locale Information -->
-	<string name="MicrosoftLocale">english</string>
-	<string name="DarwinLocale">C</string>
-	<string name="LinuxLocale">C</string>
+	<string name="MicrosoftLocale">danish</string>
+	<string name="DarwinLocale">da_DK.UTF-8</string>
+	<string name="LinuxLocale">da_DK.UTF-8</string>
 	
 	<!-- 
 	datetimeToCodes["wkday"]	= "%a";		// Thu
diff --git a/indra/newview/skins/default/xui/da/menu_mini_map.xml b/indra/newview/skins/default/xui/da/menu_mini_map.xml
index 0e2d04ffbb5e50f4092a38f5322a7d3b41a7e5f4..38486cdecb38ac4afa10322f85f37942ca0a32e8 100644
--- a/indra/newview/skins/default/xui/da/menu_mini_map.xml
+++ b/indra/newview/skins/default/xui/da/menu_mini_map.xml
@@ -4,6 +4,6 @@
 	<menu_item_call label="Zoom mellem" name="Zoom Medium"/>
 	<menu_item_call label="Zoom langt" name="Zoom Far"/>
 	<menu_item_check label="Rotér kort" name="Rotate Map"/>
-	<menu_item_call label="Stop Tracking" name="Stop Tracking"/>
+	<menu_item_call label="Fjern ref." name="Stop Tracking"/>
 	<menu_item_call label="Verdenskort" name="World Map"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml
index 18ad7cfffa0c39eba70be40c803ef852a7e3a97d..7e7d1b190a71412d76017da555c92bf6b6969bf9 100644
--- a/indra/newview/skins/default/xui/da/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/da/menu_viewer.xml
@@ -36,7 +36,7 @@
 		<menu_item_call label="Mit land" name="My Land"/>
 		<menu label="Vis" name="LandShow">
 			<menu_item_check label="Bevægelses kontrol" name="Movement Controls"/>
-			<menu_item_check label="Vis kontroller" name="Camera Controls"/>
+			<menu_item_check label="Kontroller" name="Camera Controls"/>
 			<menu_item_check label="&apos;Ingen adgang&apos; markering" name="Ban Lines"/>
 			<menu_item_check label="Pejlelys" name="beacons"/>
 			<menu_item_check label="Parcel skel" name="Property Lines"/>
@@ -75,7 +75,7 @@
 			<menu_item_call label="Vælg alt" name="Select All"/>
 			<menu_item_call label="Fravælg" name="Deselect"/>
 		</menu>
-		<menu_item_call label="Sammenkæde" name="Link"/>
+		<menu_item_call label="Sammenkæd" name="Link"/>
 		<menu_item_call label="Adskil" name="Unlink"/>
 		<menu_item_check label="Redigér sammekædede objekter" name="Edit Linked Parts"/>
 		<menu_item_call label="Fokusér på valgte" name="Focus on Selection"/>
@@ -88,10 +88,10 @@
 			<menu_item_call label="Opdater ændringer i indhold til objekt" name="Save Object Back to Object Contents"/>
 		</menu>
 		<menu label="Scripts" name="Scripts">
-			<menu_item_call label="Rekompilér scripts (Mono)" name="Mono"/>
+			<menu_item_call label="Genoversæt scripts (Mono)" name="Mono"/>
 			<menu_item_call label="Genoversæt scripts (LSL)" name="LSL"/>
 			<menu_item_call label="Genstart scripts" name="Reset Scripts"/>
-			<menu_item_call label="sæt scripts til &quot;Running&quot;" name="Set Scripts to Running"/>
+			<menu_item_call label="Sæt scripts til &quot;Running&quot;" name="Set Scripts to Running"/>
 			<menu_item_call label="Sæt scripts til &quot;Not Running&quot;" name="Set Scripts to Not Running"/>
 		</menu>
 		<menu label="Valg" name="Options">
@@ -111,7 +111,7 @@
 		<menu label="Vis lænkede dele" name="Select Linked Parts">
 			<menu_item_call label="Vælg næste del" name="Select Next Part"/>
 			<menu_item_call label="Vælg forrige del" name="Select Previous Part"/>
-			<menu_item_call label="Inkludér næste valg" name="Include Next Part"/>
+			<menu_item_call label="Inkludér næste del" name="Include Next Part"/>
 			<menu_item_call label="Inkludér forrige del" name="Include Previous Part"/>
 		</menu>
 	</menu>
@@ -128,7 +128,7 @@
 		<menu_item_check label="Begræns valg afstand" name="Limit Select Distance"/>
 		<menu_item_check label="Fjern kamerabegrænsninger" name="Disable Camera Distance"/>
 		<menu_item_check label="Højopløsningsfoto" name="HighResSnapshot"/>
-		<menu_item_check label="Lydløse foto&apos;s til disk" name="QuietSnapshotsToDisk"/>
+		<menu_item_check label="Lydløse fotos til disk" name="QuietSnapshotsToDisk"/>
 		<menu_item_check label="Komprimér fotos til disk" name="CompressSnapshotsToDisk"/>
 		<menu label="Værktøjer til ydelse" name="Performance Tools">
 			<menu_item_call label="Lag meter" name="Lag Meter"/>
@@ -149,7 +149,7 @@
 			<menu_item_check label="Alpha" name="Alpha"/>
 			<menu_item_check label="Træer" name="Tree"/>
 			<menu_item_check label="Avatarer" name="Character"/>
-			<menu_item_check label="SurfacePath" name="SurfacePath"/>
+			<menu_item_check label="Overflade" name="SurfacePath"/>
 			<menu_item_check label="Himmel" name="Sky"/>
 			<menu_item_check label="Vand" name="Water"/>
 			<menu_item_check label="Jord" name="Ground"/>
@@ -168,7 +168,7 @@
 			<menu_item_check label="TÃ¥ge" name="Fog"/>
 			<menu_item_check label="Fleksible objekter" name="Flexible Objects"/>
 		</menu>
-		<menu_item_check label="Kør flere tråde" name="Run Multiple Threads"/>
+		<menu_item_check label="Kør flere 'threats'" name="Run Multiple Threads"/>
 		<menu_item_call label="Tøm gruppe cache" name="ClearGroupCache"/>
 		<menu_item_check label="Muse udjævning" name="Mouse Smoothing"/>
 		<menu label="Shortcuts" name="Shortcuts">
diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml
index ea3527d63be06e388dd199c0dd07ccb4f5c2798e..30e19ee901dcc3209c610cec2a016840cef60953 100644
--- a/indra/newview/skins/default/xui/da/notifications.xml
+++ b/indra/newview/skins/default/xui/da/notifications.xml
@@ -228,7 +228,7 @@ Er du sikker på at du vil fortsætte?
 		Cache vil blive tømt ved næste genstart af [APP_NAME].
 	</notification>
 	<notification name="CacheWillBeMoved">
-		Cache vil blive flyttet ved næste genstart af [APP_NAME].
+		Cache vil blive fjernet ved næste genstart af [APP_NAME].
 Note: This will clear the cache.
 	</notification>
 	<notification name="ChangeConnectionPort">
diff --git a/indra/newview/skins/default/xui/da/panel_landmarks.xml b/indra/newview/skins/default/xui/da/panel_landmarks.xml
index 8adce2c819ab9ae5e1024d087ad79f623aebeebb..9a0a2fb207e3152f616e254720e50d2b18a14777 100644
--- a/indra/newview/skins/default/xui/da/panel_landmarks.xml
+++ b/indra/newview/skins/default/xui/da/panel_landmarks.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="Landmarks">
 	<accordion name="landmarks_accordion">
-		<accordion_tab name="tab_favorites" title="Favorites bjælke"/>
+		<accordion_tab name="tab_favorites" title="Favoritter"/>
 		<accordion_tab name="tab_landmarks" title="Mine landmærker"/>
 		<accordion_tab name="tab_inventory" title="Min beholdning"/>
 		<accordion_tab name="tab_library" title="Bibliotek"/>
diff --git a/indra/newview/skins/default/xui/da/panel_navigation_bar.xml b/indra/newview/skins/default/xui/da/panel_navigation_bar.xml
index 79f7e81b3561af4f05dd698555f7bc3450cbd852..2ee87433a462b06caaaa25ed1bba9858ea358457 100644
--- a/indra/newview/skins/default/xui/da/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/da/panel_navigation_bar.xml
@@ -11,7 +11,7 @@
 	</panel>
 	<favorites_bar name="favorite" tool_tip="Træk landemærker hertil for at få hurtig adgang til dine favoritsteder i Second Life!">
 		<label name="favorites_bar_label" tool_tip="Træk landemærker hertil for at få hurtig adgang til dine favoritsteder i Second Life!">
-			Favorit bar
+			Favoritter
 		</label>
 		<chevron_button name="&gt;&gt;" tool_tip="Søg mere af mine favoritter"/>
 	</favorites_bar>
diff --git a/indra/newview/skins/default/xui/da/panel_nearby_media.xml b/indra/newview/skins/default/xui/da/panel_nearby_media.xml
index 407d9f7c87d1731318d063d8f44a3e2f03d348da..7a8b5a6389315704a91caebaf75894c5ff4ae553 100644
--- a/indra/newview/skins/default/xui/da/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/da/panel_nearby_media.xml
@@ -41,25 +41,25 @@
 		<panel name="media_controls_panel">
 			<layout_stack name="media_controls">
 				<layout_panel name="stop">
-					<button name="stop_btn" tool_tip="Stop valgte media"/>
+					<button name="stop_btn" tool_tip="Stop valgte medie"/>
 				</layout_panel>
 				<layout_panel name="play">
-					<button name="play_btn" tool_tip="Afspil valgte media"/>
+					<button name="play_btn" tool_tip="Afspil valgte medie"/>
 				</layout_panel>
 				<layout_panel name="pause">
-					<button name="pause_btn" tool_tip="Pause valgte media"/>
+					<button name="pause_btn" tool_tip="Pause valgte medie"/>
 				</layout_panel>
 				<layout_panel name="volume_slider_ctrl">
-					<slider_bar initial_value="0.5" name="volume_slider" tool_tip="Lydstyrke for valgte media"/>
+					<slider_bar initial_value="0.5" name="volume_slider" tool_tip="Volumen for valgte medie"/>
 				</layout_panel>
 				<layout_panel name="mute">
-					<button name="mute_btn" tool_tip="Sluk for lyd på valgte media"/>
+					<button name="mute_btn" tool_tip="Sluk for lyd for valgte medie"/>
 				</layout_panel>
 				<layout_panel name="zoom">
-					<button name="zoom_btn" tool_tip="Zoom ind til valgte media"/>
+					<button name="zoom_btn" tool_tip="Zoom ind til valgte medie"/>
 				</layout_panel>
 				<layout_panel name="unzoom">
-					<button name="unzoom_btn" tool_tip="Zoom tilbage fra valgte media"/>
+					<button name="unzoom_btn" tool_tip="Zoom tilbage fra valgte medie"/>
 				</layout_panel>
 			</layout_stack>
 		</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/da/panel_preferences_advanced.xml
index b6ff4a6d907df9ba4fa7b7b151d34d73012dfbb2..1570960745b73dc7ac8f1ead8ec7e935654c2026 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_advanced.xml
@@ -18,7 +18,7 @@
 	<check_box label="Tast-tast-hold for at løbe" name="tap_tap_hold_to_run"/>
 	<check_box label="Bevæg avatarlæber når der tales" name="enable_lip_sync"/>
 	<check_box label="Talebobler" name="bubble_text_chat"/>
-	<slider label="Gennemsigtighed" name="bubble_chat_opacity"/>
+	<slider label="Synlighed" name="bubble_chat_opacity"/>
 	<color_swatch name="background" tool_tip="Vælg farve for talebobler"/>
 	<check_box label="Vis script fejl i:" name="show_script_errors"/>
 	<radio_group name="show_location">
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_general.xml b/indra/newview/skins/default/xui/da/panel_preferences_general.xml
index f2c59f3d81f5be842989da60f8e8e857b1cb9847..e70cb4826264dc892765c727f2bd013660ced4e7 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_general.xml
@@ -23,7 +23,7 @@
 	<text name="maturity_desired_textbox"/>
 	<combo_box name="maturity_desired_combobox">
 		<combo_box.item label="PG, Mature og Adult" name="Desired_Adult"/>
-		<combo_box.item label="PG and Mature" name="Desired_Mature"/>
+		<combo_box.item label="PG og Mature" name="Desired_Mature"/>
 		<combo_box.item label="PG" name="Desired_PG"/>
 	</combo_box>
 	<text name="start_location_textbox">
diff --git a/indra/newview/skins/default/xui/da/panel_region_covenant.xml b/indra/newview/skins/default/xui/da/panel_region_covenant.xml
index 564d8e6665f70d651bf4a6c6469740b7f78c21f0..4b9c7539ea3a269ea85441864b190dfa89e40b08 100644
--- a/indra/newview/skins/default/xui/da/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/da/panel_region_covenant.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Covenant" name="Covenant">
+<panel label="Regler" name="Covenant">
 	<text name="estate_section_lbl">
 		Estate
 	</text>
diff --git a/indra/newview/skins/default/xui/da/panel_region_estate.xml b/indra/newview/skins/default/xui/da/panel_region_estate.xml
index 7941553adecb4aefb172fbbc4429069e92b1f81c..65948ce4811f6c41ee00ee66e641cee783fae8b4 100644
--- a/indra/newview/skins/default/xui/da/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/da/panel_region_estate.xml
@@ -39,7 +39,7 @@
 	</string>
 	<button label="?" name="abuse_email_address_help"/>
 	<button label="Gem" name="apply_btn"/>
-	<button label="Spark en beboer ud af estate..." name="kick_user_from_estate_btn"/>
+	<button label="Fjern en beboer fra estate..." name="kick_user_from_estate_btn"/>
 	<button label="Send besked til estate..." name="message_estate_btn"/>
 	<text name="estate_manager_label">
 		Administratorer:
diff --git a/indra/newview/skins/default/xui/da/panel_side_tray.xml b/indra/newview/skins/default/xui/da/panel_side_tray.xml
index ec430d6fd47924136336a08e9e413d2de71c2efd..66c3e6990487bd6997fa68eca1603e400fd8e598 100644
--- a/indra/newview/skins/default/xui/da/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/da/panel_side_tray.xml
@@ -3,27 +3,27 @@
 	partially on screen to hold tab buttons. -->
 <side_tray name="sidebar">
 	<sidetray_tab description="Ã…bn/luk sidebar" name="sidebar_openclose" tab_title="Ã…bn/luk sidebar"/>
-	<sidetray_tab description="Hjem." name="sidebar_home" tab_title="Home">
+	<sidetray_tab description="Hjem." name="sidebar_home" tab_title="Hjem">
 		<panel label="hjem" name="panel_home"/>
 	</sidetray_tab>
-	<sidetray_tab description="Redigér din profile og favoritter." name="sidebar_me" tab_title="My Profile">
+	<sidetray_tab description="Redigér din profile og favoritter." name="sidebar_me" tab_title="Min profil">
 		<panel_container name="panel_container">
 			<panel label="Mig" name="panel_me"/>
 		</panel_container>
 	</sidetray_tab>
-	<sidetray_tab description="Find venner, kontakter og personer tæt på." name="sidebar_people" tab_title="People">
+	<sidetray_tab description="Find venner, kontakter og personer tæt på." name="sidebar_people" tab_title="Personer">
 		<panel_container name="panel_container">
 			<panel label="Gruppe profil" name="panel_group_info_sidetray"/>
 			<panel label="Blokerede beboere og objekter" name="panel_block_list_sidetray"/>
 		</panel_container>
 	</sidetray_tab>
-	<sidetray_tab description="Find steder du vil hen og steder du har været før." label="Steder" name="sidebar_places" tab_title="Places">
+	<sidetray_tab description="Find steder du vil hen og steder du har været før." label="Steder" name="sidebar_places" tab_title="Steder">
 		<panel label="Steder" name="panel_places"/>
 	</sidetray_tab>
-	<sidetray_tab description="Browse din beholdning." name="sidebar_inventory" tab_title="My Inventory">
+	<sidetray_tab description="Browse din beholdning." name="sidebar_inventory" tab_title="Min beholdning">
 		<panel label="Redigér beholdning" name="sidepanel_inventory"/>
 	</sidetray_tab>
-	<sidetray_tab description="Ændre dit nuværende udseende" name="sidebar_appearance" tab_title="My Appearance">
-		<panel label="Redigér fremtoning" name="sidepanel_appearance"/>
+	<sidetray_tab description="Ændre dit nuværende udseende" name="sidebar_appearance" tab_title="Mit udseende">
+		<panel label="Redigér udseende" name="sidepanel_appearance"/>
 	</sidetray_tab>
 </side_tray>
diff --git a/indra/newview/skins/default/xui/da/sidepanel_item_info.xml b/indra/newview/skins/default/xui/da/sidepanel_item_info.xml
index 77db828c201273700eda9c34af30fd4c3a5eda1a..701a59bade9a15ec058cc9613d427e4589f74bae 100644
--- a/indra/newview/skins/default/xui/da/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/da/sidepanel_item_info.xml
@@ -42,27 +42,27 @@
 			<text name="perm_modify">
 				Du kan:
 			</text>
-			<check_box label="Redigér" name="CheckOwnerModify"/>
-			<check_box label="Kopi" name="CheckOwnerCopy"/>
-			<check_box label="Giv væk" name="CheckOwnerTransfer"/>
+			<check_box label="Redigere" name="CheckOwnerModify"/>
+			<check_box label="Kopiere" name="CheckOwnerCopy"/>
+			<check_box label="Give væk" name="CheckOwnerTransfer"/>
 			<text name="AnyoneLabel">
 				Enhver:
 			</text>
-			<check_box label="Kopi" name="CheckEveryoneCopy"/>
+			<check_box label="Kopiere" name="CheckEveryoneCopy"/>
 			<text name="GroupLabel">
 				Gruppe:
 			</text>
-			<check_box label="Del" name="CheckShareWithGroup" tool_tip="Tillad alle medlemmer i den aktive gruppe at dele dine &apos;redigere&apos; rettigheder for dette objekt. Du skal dedikere for at åbne for rolle begrænsninger."/>
+			<check_box label="Dele" name="CheckShareWithGroup" tool_tip="Tillad alle medlemmer i den aktive gruppe at dele dine &apos;redigere&apos; rettigheder for dette objekt. Du skal dedikere for at åbne for rolle begrænsninger."/>
 			<text name="NextOwnerLabel">
 				Næste ejer:
 			</text>
 			<check_box label="Redigere" name="CheckNextOwnerModify"/>
-			<check_box label="Kopi" name="CheckNextOwnerCopy"/>
-			<check_box label="Giv væk" name="CheckNextOwnerTransfer" tool_tip="Næste ejer kan give væk eller sælge dette objekt"/>
+			<check_box label="Kopiere" name="CheckNextOwnerCopy"/>
+			<check_box label="Give væk" name="CheckNextOwnerTransfer" tool_tip="Næste ejer kan give væk eller sælge dette objekt"/>
 		</panel>
 		<check_box label="Til salg" name="CheckPurchase"/>
 		<combo_box name="combobox sale copy">
-			<combo_box.item label="Kopiér" name="Copy"/>
+			<combo_box.item label="Kopi" name="Copy"/>
 			<combo_box.item label="Original" name="Original"/>
 		</combo_box>
 		<spinner label="Pris: L$" name="Edit Cost"/>
diff --git a/indra/newview/skins/default/xui/da/sidepanel_task_info.xml b/indra/newview/skins/default/xui/da/sidepanel_task_info.xml
index 4642c11d218c95cb54ed5a19e9544219c4e76e02..bec97734e434a0bba80cb57b9cd5113de4220373 100644
--- a/indra/newview/skins/default/xui/da/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/da/sidepanel_task_info.xml
@@ -67,11 +67,11 @@
 			Klik for at:
 		</text>
 		<combo_box name="clickaction">
-			<combo_box.item label="Berør  (standard)" name="Touch/grab(default)"/>
-			<combo_box.item label="Sid på objekt" name="Sitonobject"/>
-			<combo_box.item label="Køb objekt" name="Buyobject"/>
-			<combo_box.item label="Betal objekt" name="Payobject"/>
-			<combo_box.item label="Ã…ben" name="Open"/>
+			<combo_box.item label="Berøre (standard)" name="Touch/grab(default)"/>
+			<combo_box.item label="Sidde på objekt" name="Sitonobject"/>
+			<combo_box.item label="Købe objekt" name="Buyobject"/>
+			<combo_box.item label="Betale objekt" name="Payobject"/>
+			<combo_box.item label="Ã…bne" name="Open"/>
 		</combo_box>
 		<panel name="perms_inv">
 			<text name="perm_modify">
@@ -80,18 +80,18 @@
 			<text name="Anyone can:">
 				Enhver:
 			</text>
-			<check_box label="Kopi" name="checkbox allow everyone copy"/>
-			<check_box label="Flyt" name="checkbox allow everyone move"/>
+			<check_box label="Kopiere" name="checkbox allow everyone copy"/>
+			<check_box label="Flytte" name="checkbox allow everyone move"/>
 			<text name="GroupLabel">
 				Gruppe:
 			</text>
-			<check_box label="Del" name="checkbox share with group" tool_tip="Tillad alle gruppemedlemmer i den valgte gruppe at dele dine redigeringsrettigheder for dette objekt. Du skal dedikere for at aktivere rollebegrænsninger"/>
+			<check_box label="Dele" name="checkbox share with group" tool_tip="Tillad alle gruppemedlemmer i den valgte gruppe at dele dine redigeringsrettigheder for dette objekt. Du skal dedikere for at aktivere rollebegrænsninger"/>
 			<text name="NextOwnerLabel">
 				Næste ejer:
 			</text>
 			<check_box label="Redigere" name="checkbox next owner can modify"/>
-			<check_box label="Kopi" name="checkbox next owner can copy"/>
-			<check_box label="Overfør" name="checkbox next owner can transfer" tool_tip="Næste ejer kan give væk eller sælge dette objekt"/>
+			<check_box label="Kopiere" name="checkbox next owner can copy"/>
+			<check_box label="Overføre" name="checkbox next owner can transfer" tool_tip="Næste ejer kan give væk eller sælge dette objekt"/>
 		</panel>
 		<check_box label="Til salg" name="checkbox for sale"/>
 		<combo_box name="sale type">
diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml
index bce197113f65b195ca94fd542c626f802457f596..37501a35345d5ac3b0a6437e01a673ecb58d1181 100644
--- a/indra/newview/skins/default/xui/da/strings.xml
+++ b/indra/newview/skins/default/xui/da/strings.xml
@@ -56,7 +56,7 @@
 		Klargør multimedia...
 	</string>
 	<string name="LoginInitializingFonts">
-		Indlæser fonts...
+		Indlæser skriftstyper...
 	</string>
 	<string name="LoginVerifyingCache">
 		Checker cache filer (kan tage 60-90 sekunder)...
@@ -892,8 +892,8 @@
 	<string name="no_modify" value=" (ikke redigere)"/>
 	<string name="no_copy" value=" (ikke kopiere)"/>
 	<string name="worn" value=" (båret)"/>
-	<string name="link" value=" (sammenkæde)"/>
-	<string name="broken_link" value=" (brudt_kæde)"/>
+	<string name="link" value=" (link)"/>
+	<string name="broken_link" value=" (brudt link)"/>
 	<string name="LoadingContents">
 		Henter indhold...
 	</string>
@@ -1795,7 +1795,7 @@ Forventet .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
 		Enhver
 	</string>
 	<string name="You">
-		Dig
+		Du
 	</string>
 	<string name="Multiple Media">
 		Flere medietyper
@@ -2604,7 +2604,7 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE].
 		Mere
 	</string>
 	<string name="More Gravity">
-		More
+		Mere
 	</string>
 	<string name="More Lipstick">
 		Mere læbestift
@@ -3276,10 +3276,10 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE].
 		(Moderator)
 	</string>
 	<string name="started_call">
-		Startet et stemme opkald
+		startede et stemme opkald
 	</string>
 	<string name="joined_call">
-		Tilsluttet stemme opkaldet
+		tilsluttede stemme opkald
 	</string>
 	<string name="ringing-im">
 		Tilslutter stemme opkald...
diff --git a/indra/newview/skins/default/xui/de/floater_build_options.xml b/indra/newview/skins/default/xui/de/floater_build_options.xml
index b70c859490823016ba9ce33f6a332c133652acc5..e90eb2c00bc5280728f4ea12bad0663d150baa40 100644
--- a/indra/newview/skins/default/xui/de/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/de/floater_build_options.xml
@@ -2,7 +2,7 @@
 <floater name="build options floater" title="RASTER-OPTIONEN">
 	<spinner label="Raster-Einheiten (Meter)" name="GridResolution"/>
 	<spinner label="Rastergröße (Meter)" name="GridDrawSize"/>
-	<check_box label="Einrasten von Untereinheiten aktivieren" name="GridSubUnit"/>
+	<check_box label="An Untereinheiten ausrichten" name="GridSubUnit"/>
 	<check_box label="Überschneidungen anzeigen" name="GridCrossSection"/>
 	<text name="grid_opacity_label" tool_tip="Raster-Deckkraft">
 		Deckkraft:
diff --git a/indra/newview/skins/default/xui/de/language_settings.xml b/indra/newview/skins/default/xui/de/language_settings.xml
index 71418d446ab9fa71c3512f7f3dc17b1ba1d423a2..3e357007fff470d8126717f6306cabd8cb9581d5 100644
--- a/indra/newview/skins/default/xui/de/language_settings.xml
+++ b/indra/newview/skins/default/xui/de/language_settings.xml
@@ -3,9 +3,9 @@
 <strings>
 
 	<!-- Locale Information -->
-	<string name="MicrosoftLocale">english</string>
-	<string name="DarwinLocale">C</string>
-	<string name="LinuxLocale">C</string>
+	<string name="MicrosoftLocale">german</string>
+	<string name="DarwinLocale">de_DE.UTF-8</string>
+	<string name="LinuxLocale">de_DE.UTF-8</string>
 	
 	<!-- 
 	datetimeToCodes["wkday"]	= "%a";		// Thu
diff --git a/indra/newview/skins/default/xui/de/panel_nearby_media.xml b/indra/newview/skins/default/xui/de/panel_nearby_media.xml
index ad26f7124592933d78f8ca513034cafbf83d1488..32750f14d4a93a8e5e6286a416115e39ffaecf8d 100644
--- a/indra/newview/skins/default/xui/de/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/de/panel_nearby_media.xml
@@ -13,8 +13,8 @@
 		(wird abgespielt)
 	</string>
 	<panel name="minimized_controls">
-		<button label="Alle stoppen" name="all_nearby_media_disable_btn" tool_tip="Alle Medien in der Nähe ausschalten"/>
-		<button label="Alle starten" name="all_nearby_media_enable_btn" tool_tip="Alle Medien in der Nähe einschalten"/>
+		<button label="Stoppen" name="all_nearby_media_disable_btn" tool_tip="Alle Medien in der Nähe ausschalten"/>
+		<button label="Starten" name="all_nearby_media_enable_btn" tool_tip="Alle Medien in der Nähe einschalten"/>
 		<button name="open_prefs_btn" tool_tip="Medien-Einstellungen öffnen"/>
 		<button label="Mehr &gt;&gt;" label_selected="Weniger &lt;&lt;" name="more_less_btn" tool_tip="Erweiterte Steuerung"/>
 	</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_status_bar.xml b/indra/newview/skins/default/xui/de/panel_status_bar.xml
index 0e182fa417809cb24f5b426c3590fb93db5cfe8b..803bd1b5ab8b26e35d1b5d8b2f07da3ffc44af80 100644
--- a/indra/newview/skins/default/xui/de/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml
@@ -22,7 +22,7 @@
 		[AMT] L$
 	</panel.string>
 	<button label="" label_selected="" name="buycurrency" tool_tip="Mein Kontostand"/>
-	<button label="Kaufen" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/>
+	<button label=" " name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/>
 	<text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)">
 		24:00 H PST
 	</text>
diff --git a/indra/newview/skins/default/xui/en/alert_line_editor.xml b/indra/newview/skins/default/xui/en/alert_line_editor.xml
index 97991153d88fda1b3a4ab7589e3c20c8fba7953c..82bf5fc8dad1463c5487051a29d0a955114eabf3 100644
--- a/indra/newview/skins/default/xui/en/alert_line_editor.xml
+++ b/indra/newview/skins/default/xui/en/alert_line_editor.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <line_editor
   select_on_focus="false"
-  handle_edit_keys_directly="false"
   revert_on_esc="true"
   commit_on_focus_lost="true"
   ignore_tab="true"
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index bc67621dfd678397a595613b65f3cfba3be725b8..a6a4c79da454925e6aa644ae8c353472877aa8e1 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -76,7 +76,7 @@ Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number
         allow_html="true" 
        follows="top|left"
        font="SansSerif"
-       height="350"
+       height="343"
        bg_readonly_color="Transparent"
        left="5"
        max_length="65536"
@@ -110,19 +110,14 @@ Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number
        top="5"
        width="435"
        word_wrap="true">
-Second Life is brought to you by Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les and many others.
+Second Life is brought to you by Philip, Tessa, Andrew, Cory, Ian, James, Phoenix, Ryan, Haney, Dan, Char, Ben, John, Tanya, Eddie, Richard, Mitch, Doug, Eric, Frank, Bruce, Aaron, Peter, Alice, Charlie, Debra, Eileen, Helen, Janet, Steffan, Steve, Tom, Mark, Hunter, Xenon, Burgess, Bill, Jim, Lee, Hamlet, Daniel, Jeff, Todd, Sarah, Tim, Stephanie, Colin, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Jack, Vektor, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Jesse, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Yuko, Makiko, Thomas, Harry, Seth, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Brad, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, Beez, Milo, Hermia, Red, Thrax, Gulliver, Joe, Sally, Paul, Jose, Rejean, Dore, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, Dustin, George, Del, Matthew, Cat, Jacqui, Adrian, Viola, Alfred, Noel, Irfan, Yool, Rika, Jane, Frontier, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Jeremy, JP, Jake, Anthony, Maurice, Madhavi, Leopard, Kyle, Joon, Bert, Belinda, Jon, Kristi, Bridie, Pramod, Socrates, Maria, Aric, Adreanne, Jay, Kari, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Colossus, Zen, BigPapi, Pastrami, Kurz, Mani, Neuro, Mel, Sardonyx, MJ, Rowan, Sgt, Elvis, Samuel, Leo, Bryan, Niko, Austin, Soft, Poppy, Rachel, Aki, Banzai, Alexa, Sue, Bender, CG, Angelo, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Rothman, Niall, Marin, Allison, Katie, Dawn, Dusty, Katt, Judy, Andrea, Ambroff, Infinity, Rico, Gail, Kalpana, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Maestro, Simone, Yang, T, Shannon, Nelson, Khanh, Scott, Courtney, Charlene, Quixote, Susan, Zed, Amanda, Katelin, Enkidu, Roxie, Esbee, JoRoan, Scarlet, Tay, Kevin, Wolfgang, Johnny, Ray, Andren, Merov, Bob, Rand, Howard, Callen, Heff, Galen, Newell, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl, Ashley, JessieAnn, Huseby, Karina, Paris, Kurt, Rick, Lis, Kotler, Theeba, Lynx, Murphy, Doten, Taka, Norm, Jillian, Marcus, Mae, Novack, Esther, Perry, Dana, Ducot, Javier, Porter, Madison, Gecko, Dough, JR, Gisele, Crimp, Norie, Arch, Kimi, Fisher, Barbara, Jason, Peggy, Bernard, Jules, Leroy, Eva, Khederian, Campbell, Vogt, Masido, Karel, Torres, Lo, Breezer, Delby, Rountree, Anna, Servus, Rue, Itiaes, Chuck, Luna, Novella, Zaza, Wen, Gino, Lex, Cassandra, Limey, Nancy, Anukul, Silver, Brodesky, Jinsai, Squid, Gez, Rakesh, Ladan, Edelman, Marcet, Squire, Tatem, Tony, Jerm, Tia, Falcon, BK, Tiggs, Driscoll, Bacon, Timothee, Cru, Carmilla, Coyot, Webb, Kazu, Rudas, LJ, Sea, Ali Wallace, Bewest, Pup, Drub, Dragon, Inoshiro, Byron, Rhett, Xandix, Aimee, Fredrik, Thor, Teddy, Baron, Nelly, Ghengis, Epic, Eli, Stone, Grapes, Irie, Prep, Scobu, Valerie, Alain, and many others.
 
-Thank you to the following Residents for helping to ensure that this is the best version yet: (in progress)
+Thank you to the following Residents for helping to ensure that this is the best version yet: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher  Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan, and many others.
 
 
 
 
-
-
-
-
-It is a rare mind indeed that can render the hitherto non-existent blindingly obvious. The cry 'I could have thought of that' is a very popular and misleading one, for the fact is that they didn't, and a very significant and revealing fact it is too.
- -- Douglas Adams
+"The work goes on, the cause endures, the hope still lives, and the dreams shall never die" - Edward Kennedy
       </text_editor>
     </panel>
     <panel
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 51bd7a0a167fab39b2dd9619a7fe92bf0a02a258..59f188980810e56947883e27dda0aa5b822c6640 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -636,7 +636,6 @@ Leyla Linden               </text>
              length="1"
              enabled="false"
              follows="all"
-             handle_edit_keys_directly="true"
              height="200"
              layout="topleft"
              left="10"
diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
index e02d32596a18c30acac9c8a823d8a9be9fb46663..637f9f55d400b741501b25bf3f830e681f28b120 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
@@ -24,13 +24,13 @@
    <text
      type="string"
      length="1"
-     follows="top|left"
+     follows="top|left|right"
      font="SansSerifHuge"
      layout="topleft"
      left="20"
      height="30"
      top="25"
-     width="300"
+     width="340"
      name="info_need_more">
         You need more L$
     </text>
@@ -55,7 +55,7 @@
      left="20"
      height="30"
      top="25"
-     width="200"
+     width="300"
      name="info_buying">
         Buy L$
     </text>
@@ -178,8 +178,8 @@
      follows="top|left"
      height="16"
      halign="right"
-     left="140"
-     width="180"
+     left="20"
+     width="300"
      layout="topleft"
      name="buy_action">
         [ACTION]
diff --git a/indra/newview/skins/default/xui/en/floater_buy_land.xml b/indra/newview/skins/default/xui/en/floater_buy_land.xml
index 125b080519646c3c0702133f89763969d5d693ad..df44b616327571c6f6da42ce5b443a0706602a07 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_land.xml
@@ -356,7 +356,6 @@ supports [AMOUNT2] objects
      length="1"
      enabled="false"
      follows="top|right"
-     handle_edit_keys_directly="false" 
      height="237"
      layout="topleft"
      left="444"
diff --git a/indra/newview/skins/default/xui/en/floater_event.xml b/indra/newview/skins/default/xui/en/floater_event.xml
index 0255e202fb91c21ee606ac45d6cce248235f9978..d9c9d63c72da802e87608fbb77ceb4b5d011bdbe 100644
--- a/indra/newview/skins/default/xui/en/floater_event.xml
+++ b/indra/newview/skins/default/xui/en/floater_event.xml
@@ -244,6 +244,7 @@
        layout="topleft"
        left="6"
        name="event_desc"
+       textbox.label="More"
        width="322">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</expandable_text>
     </layout_panel>
diff --git a/indra/newview/skins/default/xui/en/floater_god_tools.xml b/indra/newview/skins/default/xui/en/floater_god_tools.xml
index 36ef6beb592e80c34bff47d66bb04852dffae573..dfe3cf44858abd578e494c8f5843325de7a59e44 100644
--- a/indra/newview/skins/default/xui/en/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_god_tools.xml
@@ -28,19 +28,6 @@
          name="grid"
          top="16"
          width="398">
-            <button
-             follows="left|top"
-             height="20"
-             label="Kick all Residents"
-             label_selected="Kick all Residents"
-             layout="topleft"
-             left="10"
-             name="Kick all users"
-             top="30"
-             width="120">
-				<button.commit_callback
-				function="GridTools.KickAll" />
-			</button>
             <button
              follows="left|top"
              height="20"
@@ -74,10 +61,10 @@
              height="10"
              layout="topleft"
              left="10"
-             name="Sim Name:"
+             name="Region Name:"
              top="12"
              width="80">
-                Sim Name:
+                Region Name:
             </text>
             <line_editor
              border_style="line"
@@ -494,10 +481,10 @@
              height="10"
              layout="topleft"
              left="10"
-             name="Sim Name:"
+             name="Region Name:"
              top="10"
              width="80">
-                Sim Name:
+                Region Name:
             </text>
             <text
              type="string"
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
index 5d35275e171a4cdd53d89fe8b6c5929986e8c0c7..e21e44204d47767058ac0875c7bbfb1a9cc26388 100644
--- a/indra/newview/skins/default/xui/en/floater_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_map.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
+ bg_alpha_image_overlay="DkGray_66"
  legacy_header_height="18"
  can_minimize="true" 
  can_resize="true"
diff --git a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
index a2938e85744ef2ecd61bf2fa63c5f69e38961c08..1d73d516d0bc6508597f397216462d61e5d67249 100644
--- a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
@@ -45,7 +45,6 @@ as a new Outfit:
      border_style="line"
      border_thickness="1"
      follows="left|top"
-     handle_edit_keys_directly="true"
      height="23"
      layout="topleft"
      left_delta="0"
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 e9099211a33c89b7a5c63bb626b48453d3c85edd..14c0081c0df57675b6064f5f9af6ffd9db37fdf0 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
@@ -72,7 +72,6 @@
      max_length="65536"
      name="Notecard Editor"
      allow_html="false" 
-     handle_edit_keys_directly="true"
      tab_group="1"
      top="46"
      width="392"
diff --git a/indra/newview/skins/default/xui/en/floater_report_abuse.xml b/indra/newview/skins/default/xui/en/floater_report_abuse.xml
index ac0fca9cce98478bdfd7046d3f28cbe8576735d6..21c0bfef48b6114d71830f45ee8d8a61c54ca5d0 100644
--- a/indra/newview/skins/default/xui/en/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/en/floater_report_abuse.xml
@@ -456,7 +456,7 @@
      layout="topleft"
      left_delta="0"
      name="dscr_title"
-     top_pad="5"
+     top_pad="6"
      width="50">
         Details:
     </text>
@@ -464,11 +464,12 @@
      type="string"
      length="1"
      follows="left|top"
-     height="16"
+     height="22"
      layout="topleft"
      name="bug_aviso"
      left_pad="10"
-     width="200">
+     word_wrap="true"
+     width="270">
         Please be as specific as possible
     </text>
     <text_editor
diff --git a/indra/newview/skins/default/xui/en/floater_sell_land.xml b/indra/newview/skins/default/xui/en/floater_sell_land.xml
index afc44c41b8cbd8e65c720b99d53a3673464a6ea7..4cae42bcfe7528ca2be28f274029b99515152b8d 100644
--- a/indra/newview/skins/default/xui/en/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_sell_land.xml
@@ -203,13 +203,13 @@
          name="none"
          visible="false" />
         <radio_item
-         bottom="20"
+         top_pad="10"
          height="16"
          label="No, keep ownership of objects"
          left="10"
          name="no" />
         <radio_item
-         bottom="40"
+         top_pad="10"
          height="16"
          label="Yes, sell objects with land"
          left="10"
diff --git a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
index b730f0e511f9da97cb2e7b5943f1ca7002580d8c..548e24efba3d9cdd817377a4e6ca8cceafb949f6 100644
--- a/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_text_editor.xml
@@ -14,6 +14,7 @@
    name="test_text_editor"
    tool_tip="text editor"
    top="25"
+   word_wrap="true" 
    width="200">
     Text Editor
   </text_editor>
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index fd046c36953d4de5dd7d6a2f191133d52e0afbdf..cc9e72cfb581d82211546942a9fdf207b59feb08 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -2540,18 +2540,18 @@ even though the user gets a free copy.
              height="19"
              initial_value="0"
              label="Horizontal (U)"
-             label_width="90"
+             label_width="125"
              layout="topleft"
              left="20"
              max_val="100"
              name="TexScaleU"
              top_pad="6"
-             width="160" />
+             width="185" />
             <check_box
              height="19"
              label="Flip"
              layout="topleft"
-             left_pad="10"
+             left_pad="5"
              name="checkbox flip s"
              top_delta="0"
              width="70" />
@@ -2560,17 +2560,17 @@ even though the user gets a free copy.
              height="19"
              initial_value="0"
              label="Vertical (V)"
-             label_width="90"
+             label_width="125"
              layout="topleft"
              left="20"
              max_val="100"
              name="TexScaleV"
-             width="160" />
+             width="185" />
             <check_box
              height="19"
              label="Flip"
              layout="topleft"
-             left_pad="10"
+             left_pad="5"
              name="checkbox flip t"
              top_delta="0"
              width="70" />
@@ -2582,12 +2582,12 @@ even though the user gets a free copy.
              initial_value="0"
 			 label="RotationËš"
              layout="topleft"
-			 label_width="100"
+			 label_width="135"
              left="10"
              max_val="9999"
              min_val="-9999"
              name="TexRot"
-             width="170" />
+             width="195" />
 
             <spinner
              decimal_digits="1"
@@ -2596,19 +2596,19 @@ even though the user gets a free copy.
              initial_value="1"
 			 label="Repeats / Meter"
              layout="topleft"
-			 label_width="100"
+			 label_width="135"
              left="10"
              max_val="10"
              min_val="0.1"
              name="rptctrl"
-             width="170" />
+             width="195" />
             <button
              follows="left|top"
              height="23"
              label="Apply"
              label_selected="Apply"
              layout="topleft"
-             left_pad="10"
+             left_pad="5"
              name="button apply"
              width="75" />
             <text
@@ -2627,24 +2627,24 @@ even though the user gets a free copy.
              height="19"
              initial_value="0"
              label="Horizontal (U)"
-             label_width="90"
+             label_width="125"
              layout="topleft"
              left="20"
              min_val="-1"
              name="TexOffsetU"
-             width="160" />
+             width="185" />
             <spinner
              follows="left|top"
              height="19"
              initial_value="0"
              label="Vertical (V)"
-             label_width="90"
+             label_width="125"
              layout="topleft"
              left_delta="0"
              min_val="-1"
              name="TexOffsetV"
              top_pad="1"
-             width="160" />
+             width="185" />
         <panel
          border="false"
          follows="left|top"
@@ -2701,15 +2701,15 @@ even though the user gets a free copy.
 			<button
 			 follows="top|left"
 			 tool_tip="Edit this Media"
-			 height="18"
-			 image_disabled="OptionsMenu_Disabled"
-			 image_selected="OptionsMenu_Press"
-			 image_unselected="OptionsMenu_Off"
+			 height="12"
+			 image_disabled="Icon_Gear_Foreground"
+			 image_selected="Icon_Gear_Background"
+			 image_unselected="Icon_Gear_Press"
 			 layout="topleft"
 			 left_pad="10"
 			 name="edit_media"
-			 top_delta="0"
-			 width="18">
+			 top_delta="3"
+			 width="12">
 				<button.commit_callback
 				function="BuildTool.EditMedia"/>
 			</button>
@@ -2842,7 +2842,7 @@ even though the user gets a free copy.
          left_delta="0"
          name="button about land"
          top_pad="4"
-         width="112" />
+         width="125" />
         <check_box
          control_name="ShowParcelOwners"
          height="19"
@@ -2863,7 +2863,7 @@ even though the user gets a free copy.
          left="20"
          name="label_parcel_modify"
          top="152"
-         width="150">
+         width="240">
             Modify Parcel
         </text>
         <button
@@ -2875,7 +2875,7 @@ even though the user gets a free copy.
          left="30"
          name="button subdivide land"
          top="172"
-         width="112" />
+         width="125" />
         <button
          follows="left|top"
          height="23"
@@ -2885,7 +2885,7 @@ even though the user gets a free copy.
          left_delta="0"
          name="button join land"
          top_pad="4"
-         width="112" />
+         width="125" />
         <text
          type="string"
          length="1"
@@ -2896,7 +2896,7 @@ even though the user gets a free copy.
          left="20"
          name="label_parcel_trans"
          top="256"
-         width="150">
+         width="240">
             Land Transactions
         </text>
         <button
@@ -2908,7 +2908,7 @@ even though the user gets a free copy.
          left="30"
          name="button buy land"
          top="276"
-         width="112" />
+         width="125" />
         <button
          follows="left|top"
          height="23"
@@ -2918,6 +2918,6 @@ even though the user gets a free copy.
          left_delta="0"
          name="button abandon land"
          top_pad="4"
-         width="112" />
+         width="125" />
  </panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_tos.xml b/indra/newview/skins/default/xui/en/floater_tos.xml
index f3665e87eddfbf23eca5a3dc7b0632e3d022a821..cbfaac958bdfc4a63dd74785200a0231781ed4c5 100644
--- a/indra/newview/skins/default/xui/en/floater_tos.xml
+++ b/indra/newview/skins/default/xui/en/floater_tos.xml
@@ -11,6 +11,10 @@
      name="real_url">
         http://secondlife.com/app/tos/
     </floater.string>
+    <floater.string
+     name="loading_url">
+        data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E Loading %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E
+    </floater.string>
     <button
      enabled="false"
      height="20"
@@ -59,7 +63,6 @@
      layout="topleft"
      left_delta="0"
      name="tos_html"
-     start_url="data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E Loading %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E"
      top_delta="40"
      width="568" />
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_ui_preview.xml b/indra/newview/skins/default/xui/en/floater_ui_preview.xml
index 3a981adfdf7e89d1555985b30141afc0c2112907..3b10a57c500268e0a487a273451d90a1030d853e 100644
--- a/indra/newview/skins/default/xui/en/floater_ui_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_ui_preview.xml
@@ -238,7 +238,6 @@
              border_thickness="1"
              follows="left|bottom"
              font="SansSerif"
-             handle_edit_keys_directly="true"
              height="20"
              layout="topleft"
              left_delta="100"
@@ -278,7 +277,6 @@
              border_thickness="1"
              follows="left|bottom"
              font="SansSerif"
-             handle_edit_keys_directly="true"
              height="20"
              layout="topleft"
              left_delta="100"
@@ -320,7 +318,6 @@
              border_thickness="1"
              follows="left|bottom"
              font="SansSerif"
-             handle_edit_keys_directly="true"
              height="20"
              layout="topleft"
              left_delta="65"
diff --git a/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml
index b4b57f2dbc63d15adb997bbc03da479356dee7f8..71812bd1a67a8b7f28b7ff951c2cf2151cdd29fc 100644
--- a/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml
+++ b/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml
@@ -44,7 +44,6 @@
      border_style="line"
      border_thickness="1"
      follows="left|top"
-     handle_edit_keys_directly="true"
      height="23"
      layout="topleft"
      left_delta="0"
diff --git a/indra/newview/skins/default/xui/en/inspect_object.xml b/indra/newview/skins/default/xui/en/inspect_object.xml
index 00e00b9694f1ad89143c1ba2ce8d40fe5afb6737..b8a7222e8e8fcfda5877bb8960937bf25dd488f8 100644
--- a/indra/newview/skins/default/xui/en/inspect_object.xml
+++ b/indra/newview/skins/default/xui/en/inspect_object.xml
@@ -26,6 +26,7 @@ owner [OWNER]
   <string name="Touch">Touch</string>
   <string name="Sit">Sit</string>
   <text
+     allow_html="false"
      follows="all"
      font="SansSerifLarge"
      height="16"
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index e8f9d65be50f65794167e18c42c50d57984d4b3b..b2e4a7ad95db448774f2199567bf9747660c8140 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -163,15 +163,6 @@
                    name="notify_container"
                    tab_group="-2"
                    width="1024"/>
-  <panel top="0"
-         follows="all"
-         height="768"
-         mouse_opaque="true"
-         name="progress_view"
-         filename="panel_progress.xml" 
-         class="progress_view"
-         width="1024"
-         visible="false"/>
   <panel top="0"
         follows="all"
         mouse_opaque="false"
@@ -190,6 +181,15 @@
                            visible="false"
                            width="1024"/>
   </panel>
+  <panel top="0"
+         follows="all"
+         height="768"
+         mouse_opaque="true"
+         name="progress_view"
+         filename="panel_progress.xml"
+         class="progress_view"
+         width="1024"
+         visible="false"/>
   <panel top="0"
          follows="all"
          height="768"
diff --git a/indra/newview/skins/default/xui/en/menu_edit.xml b/indra/newview/skins/default/xui/en/menu_edit.xml
new file mode 100644
index 0000000000000000000000000000000000000000..68f3cb532cadfbf63de5efa181ff57ad54ac50a9
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_edit.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<menu create_jump_keys="true"
+      label="Edit"
+      name="Edit"
+      visible="false">
+  <menu_item_call
+   label="Undo"
+   name="Undo"
+   shortcut="control|Z">
+    <menu_item_call.on_click
+     function="Edit.Undo" />
+    <menu_item_call.on_enable
+     function="Edit.EnableUndo" />
+  </menu_item_call>
+  <menu_item_call
+   label="Redo"
+   name="Redo"
+   shortcut="control|Y">
+    <menu_item_call.on_click
+     function="Edit.Redo" />
+    <menu_item_call.on_enable
+     function="Edit.EnableRedo" />
+  </menu_item_call>
+  <menu_item_separator/>
+  <menu_item_call
+   label="Cut"
+   name="Cut"
+   shortcut="control|X">
+    <menu_item_call.on_click
+     function="Edit.Cut" />
+    <menu_item_call.on_enable
+     function="Edit.EnableCut" />
+  </menu_item_call>
+  <menu_item_call
+   label="Copy"
+   name="Copy"
+   shortcut="control|C">
+    <menu_item_call.on_click
+     function="Edit.Copy" />
+    <menu_item_call.on_enable
+     function="Edit.EnableCopy" />
+  </menu_item_call>
+  <menu_item_call
+   label="Paste"
+   name="Paste"
+   shortcut="control|V">
+    <menu_item_call.on_click
+     function="Edit.Paste" />
+    <menu_item_call.on_enable
+     function="Edit.EnablePaste" />
+  </menu_item_call>
+  <menu_item_call
+   label="Delete"
+   name="Delete"
+   shortcut="Del">
+    <menu_item_call.on_click
+     function="Edit.Delete" />
+    <menu_item_call.on_enable
+     function="Edit.EnableDelete" />
+  </menu_item_call>
+  <menu_item_call
+   label="Duplicate"
+   name="Duplicate"
+   shortcut="control|D">
+    <menu_item_call.on_click
+     function="Edit.Duplicate" />
+    <menu_item_call.on_enable
+     function="Edit.EnableDuplicate" />
+  </menu_item_call>
+  <menu_item_separator/>
+  <menu_item_call
+   label="Select All"
+   name="Select All"
+   shortcut="control|A">
+    <menu_item_call.on_click
+     function="Edit.SelectAll" />
+    <menu_item_call.on_enable
+     function="Edit.EnableSelectAll" />
+  </menu_item_call>
+  <menu_item_call
+   label="Deselect"
+   name="Deselect"
+   shortcut="control|E">
+    <menu_item_call.on_click
+     function="Edit.Deselect" />
+    <menu_item_call.on_enable
+     function="Edit.EnableDeselect" />
+  </menu_item_call>
+</menu>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/menu_group_plus.xml b/indra/newview/skins/default/xui/en/menu_group_plus.xml
index e83d07baecf1feda9047be131906a89e377de74d..fce7414d801aaa9f831ceddbcb5a77fac9a7554a 100644
--- a/indra/newview/skins/default/xui/en/menu_group_plus.xml
+++ b/indra/newview/skins/default/xui/en/menu_group_plus.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <menu name="menu_group_plus"
      left="0" bottom="0" visible="false"
-     mouse_opaque="false" opaque="true" color="MenuDefaultBgColor" drop_shadow="false">
+     mouse_opaque="false">
   <menu_item_call name="item_join" label="Join Group...">
     <menu_item_call.on_click function="People.Group.Plus.Action" userdata="join_group" />
   </menu_item_call>
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
index 1b002b1c320081076a80e7d310c349a1ccef74f9..a5ac5f76e1ff3e7f8bf681693fa851c8f5330c63 100644
--- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
@@ -40,6 +40,8 @@
    name="teleport">
     <menu_item_call.on_click
      function="InspectAvatar.Teleport"/>
+    <menu_item_call.on_enable
+     function="InspectAvatar.Gear.EnableTeleportOffer"/>
   </menu_item_call>
   <menu_item_call
    label="Invite to Group"
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index ba7410459446e3eed7c17df0f9ac6b991d3ac3af..4655fa8c4607895eac9b066c8cfe0945bd76089e 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -29,14 +29,6 @@
              function="File.Quit" />
         </menu_item_call>
     </menu>
-<!-- Edit menu merged into the Me menu above
-    <menu
-     create_jump_keys="true"
-     label="Edit"
-     name="Edit"
-     width="153">
-    </menu>
--->
     <menu
      create_jump_keys="true"
      label="Help"
@@ -59,105 +51,24 @@
              parameter="sl_about" />
         </menu_item_call>
     </menu>
+    <menu_item_check
+      label="Show Debug Menu"
+      name="Show Debug Menu"
+      visible="false" 
+      shortcut="control|alt|D">
+      <on_check
+       function="CheckControl"
+       parameter="UseDebugMenus" />
+      <on_click
+       function="ToggleControl"
+       parameter="UseDebugMenus" />
+    </menu_item_check>
     <menu
       visible="false"
      create_jump_keys="true"
      label="Debug"
      name="Debug"
      tear_off="true">
-      <!-- Need a copy of the edit menu here so keyboard shortcuts like
-           control-C work to copy text at login screen and About dialog (for QA)
-      -->
-      <menu
-       create_jump_keys="true"
-       label="Edit"
-       name="Edit"
-       tear_off="true">
-        <menu_item_call
-         label="Undo"
-         name="Undo"
-         shortcut="control|Z">
-          <menu_item_call.on_click
-           function="Edit.Undo" />
-          <menu_item_call.on_enable
-           function="Edit.EnableUndo" />
-        </menu_item_call>
-        <menu_item_call
-         label="Redo"
-         name="Redo"
-         shortcut="control|Y">
-          <menu_item_call.on_click
-           function="Edit.Redo" />
-          <menu_item_call.on_enable
-           function="Edit.EnableRedo" />
-        </menu_item_call>
-        <menu_item_separator />
-        <menu_item_call
-         label="Cut"
-         name="Cut"
-         shortcut="control|X">
-          <menu_item_call.on_click
-           function="Edit.Cut" />
-          <menu_item_call.on_enable
-           function="Edit.EnableCut" />
-        </menu_item_call>
-        <menu_item_call
-         label="Copy"
-         name="Copy"
-         shortcut="control|C">
-          <menu_item_call.on_click
-           function="Edit.Copy" />
-          <menu_item_call.on_enable
-           function="Edit.EnableCopy" />
-        </menu_item_call>
-        <menu_item_call
-         label="Paste"
-         name="Paste"
-         shortcut="control|V">
-          <menu_item_call.on_click
-           function="Edit.Paste" />
-          <menu_item_call.on_enable
-           function="Edit.EnablePaste" />
-        </menu_item_call>
-        <menu_item_call
-         label="Delete"
-         name="Delete"
-         shortcut="Del">
-          <menu_item_call.on_click
-           function="Edit.Delete" />
-          <menu_item_call.on_enable
-           function="Edit.EnableDelete" />
-        </menu_item_call>
-        <menu_item_call
-         label="Duplicate"
-         name="Duplicate"
-         shortcut="control|D">
-          <menu_item_call.on_click
-           function="Edit.Duplicate" />
-          <menu_item_call.on_enable
-           function="Edit.EnableDuplicate" />
-        </menu_item_call>
-        <menu_item_separator />
-        <menu_item_call
-         label="Select All"
-         name="Select All"
-         shortcut="control|A">
-          <menu_item_call.on_click
-           function="Edit.SelectAll" />
-          <menu_item_call.on_enable
-           function="Edit.EnableSelectAll" />
-        </menu_item_call>
-        <menu_item_call
-         label="Deselect"
-         name="Deselect"
-         shortcut="control|E">
-          <menu_item_call.on_click
-           function="Edit.Deselect" />
-          <menu_item_call.on_enable
-           function="Edit.EnableDeselect" />
-        </menu_item_call>
-      </menu>
-      <menu_item_separator />
       <menu_item_call
          label="Show Debug Settings"
          name="Debug Settings">
@@ -270,5 +181,27 @@
            function="Advanced.WebBrowserTest"
            parameter="http://join.secondlife.com/"/>
         </menu_item_call>
+      <menu_item_separator/>
+      <menu_item_check
+        label="Show Grid Picker"
+        name="Show Grid Picker"
+        visible="false" 
+        shortcut="control|shift|G">
+        <on_check
+         function="CheckControl"
+         parameter="ForceShowGrid" />
+        <on_click
+         function="ToggleControl"
+         parameter="ForceShowGrid" />
+      </menu_item_check>
+      <menu_item_call
+        label="Show Notifications Console"
+        name="Show Notifications Console"
+        visible="false"
+        shortcut="control|shift|5">
+        <on_click
+         function="Floater.Toggle"
+         parameter="notifications_console" />
+      </menu_item_call>
     </menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
index f1117d14191d6a4c91653a542dcaca9d2b0d1eed..92752a0feed87f14e5f342ddfcddc0f9d6db89b3 100644
--- a/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <menu name="menu_group_plus"
      left="0" bottom="0" visible="false"
-     mouse_opaque="false" opaque="true" color="MenuDefaultBgColor" drop_shadow="false">
+     mouse_opaque="false">
   <menu_item_check
    label="Sort by Name"
    name="sort_name">
diff --git a/indra/newview/skins/default/xui/en/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_groups_view_sort.xml
index df3cb26b04d783d8ca8dfaca66917e9825546034..2efb204ffbd578cd3b94874e4948e952ed33b56e 100644
--- a/indra/newview/skins/default/xui/en/menu_people_groups_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_groups_view_sort.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <menu name="menu_group_plus"
      left="0" bottom="0" visible="false"
-     mouse_opaque="false" opaque="true" color="MenuDefaultBgColor" drop_shadow="false">
+     mouse_opaque="false">
   <menu_item_check
    label="Display Group Icons"
    layout="topleft"
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 014a52bb4ffe1f63236220a22a9ed0c78984528e..d2e35e4cc00454f9fc78dd7bbc81a8cec94fc3c9 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby.xml
@@ -88,5 +88,8 @@
     name="teleport">
       <menu_item_call.on_click
        function="Avatar.OfferTeleport"/>
+      <menu_item_call.on_enable
+      function="Avatar.EnableItem"
+      parameter="can_offer_teleport"/>
     </menu_item_call>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
index 39f9e486093c3a3b659d7d07f22bc53fbd5cc724..69b383173869479717b71910e98f69e70fb565b6 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <menu name="menu_group_plus"
      left="0" bottom="0" visible="false"
-     mouse_opaque="false" opaque="true" color="MenuDefaultBgColor" drop_shadow="false">
+     mouse_opaque="false">
   <menu_item_check
      label="Sort by Recent Speakers"
      name="sort_by_recent_speakers">
diff --git a/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
index cfd6dc78b601feac8a46b8dcd265a83b076dfaa4..5c9555db92edad1c954c71d3b88e0734df6e907f 100644
--- a/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <menu name="menu_group_plus"
      left="0" bottom="0" visible="false"
-     mouse_opaque="false" opaque="true" color="MenuDefaultBgColor" drop_shadow="false">
+     mouse_opaque="false">
   <menu_item_check
    label="Sort by Most Recent"
    name="sort_most">
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index a08bc1606613c2d79da2a225e0f8f5fcd2de1e25..3af80f63fe28fefc468079fde7fa695a1114703c 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -2,16 +2,13 @@
 <menu_bar
  bg_visible="false"
  follows="left|top|right"
- layout="topleft"
  name="Main Menu">
     <menu
      label="Me"
-     layout="topleft"
      name="Me"
      tear_off="true">
         <menu_item_call
          label="Preferences"
-         layout="topleft"
          name="Preferences"
          shortcut="control|P">
             <menu_item_call.on_click
@@ -20,7 +17,6 @@
         </menu_item_call>
          <menu_item_call
              label="My Dashboard"
-             layout="topleft"
              name="Manage My Account">
                 <menu_item_call.on_click
                  function="PromptShowURL"
@@ -29,16 +25,13 @@
       </menu_item_call>
         <menu_item_call
          label="Buy L$"
-         layout="topleft"
          name="Buy and Sell L$">
             <menu_item_call.on_click
              function="BuyCurrency" />
         </menu_item_call>
-        <menu_item_separator
-         layout="topleft" />
+        <menu_item_separator/>
         <menu_item_call
          label="My Profile"
-         layout="topleft"
          name="Profile">
             <menu_item_call.on_click
              function="ShowAgentProfile"
@@ -46,7 +39,6 @@
         </menu_item_call>
         <menu_item_call
          label="My Appearance"
-         layout="topleft"
          name="Appearance">
             <menu_item_call.on_click
              function="CustomizeAvatar" />
@@ -56,7 +48,6 @@
         <menu_item_check
          label="My Inventory"
          name="Inventory"
-         layout="topleft"
          shortcut="control|shift|I"
 		 visible="false">
             <menu_item_check.on_check
@@ -69,7 +60,6 @@
         <menu_item_check
          label="My Inventory"
          name="ShowSidetrayInventory"
-         layout="topleft"
          shortcut="control|I"
 		 visible="true">
             <menu_item_check.on_check
@@ -81,7 +71,6 @@
         </menu_item_check>
         <menu_item_check
          label="My Gestures"
-         layout="topleft"
          name="Gestures"
          shortcut="control|G">
             <menu_item_check.on_check
@@ -93,21 +82,17 @@
         </menu_item_check>
         <menu
          label="My Status"
-         layout="topleft"
          name="Status"
          tear_off="true">
             <menu_item_call
              label="Away"
-             layout="topleft"
              name="Set Away">
                 <menu_item_call.on_click
                  function="World.SetAway" />
             </menu_item_call>
-            <menu_item_separator
-             layout="topleft"/>
+          <menu_item_separator/>
             <menu_item_call
              label="Busy"
-             layout="topleft"
              name="Set Busy">
                 <menu_item_call.on_click
                  function="World.SetBusy"/>
@@ -115,7 +100,6 @@
         </menu>
         <menu_item_call
          label="Request Admin Status"
-         layout="topleft"
          name="Request Admin Options"
          shortcut="control|alt|G"
 		 visible="false">
@@ -124,18 +108,15 @@
         </menu_item_call>
         <menu_item_call
          label="Leave Admin Status"
-         layout="topleft"
          name="Leave Admin Options"
          shortcut="control|alt|shift|G"
 		 visible="false">
             <menu_item_call.on_click
              function="Advanced.LeaveAdminStatus" />
         </menu_item_call>
-        <menu_item_separator
-         layout="topleft" />
+        <menu_item_separator/>
         <menu_item_call
          label="Quit [APP_NAME]"
-         layout="topleft"
          name="Quit"
          shortcut="control|Q">
             <menu_item_call.on_click
@@ -144,12 +125,10 @@
     </menu>
     <menu
      label="Communicate"
-     layout="topleft"
      name="Communicate"
      tear_off="true">
         <menu_item_call
          label="My Friends"
-         layout="topleft"
          name="My Friends"
          shortcut="control|shift|F">
             <menu_item_call.on_click
@@ -158,24 +137,21 @@
             </menu_item_call>
         <menu_item_call
          label="My Groups"
-         layout="topleft"
-         name="My Groups">
+         name="My Groups"
+         shortcut="control|shift|G">
             <menu_item_call.on_click
              function="SideTray.PanelPeopleTab"
              parameter="groups_panel" />
         </menu_item_call>
-        <menu_item_separator
-         layout="topleft" />
+        <menu_item_separator/>
         <!--menu_item_call
          label="Chat"
-         layout="topleft"
          name="Chat">
             <menu_item_call.on_click
              function="World.Chat" />
         </menu_item_call-->
         <menu_item_check
          label="Nearby Chat"
-         layout="topleft"
          name="Nearby Chat"
          shortcut="control|H"
          use_mac_ctrl="true">
@@ -188,7 +164,6 @@
         </menu_item_check>
         <menu_item_call
          label="Nearby People"
-         layout="topleft"
          name="Active Speakers"
          shortcut="control|shift|A">
             <menu_item_call.on_click
@@ -198,12 +173,10 @@
     </menu>
     <menu
      label="World"
-     layout="topleft"
      name="World"
      tear_off="true">
             <menu_item_check
          label="Mini-Map"
-         layout="topleft"
          name="Mini-Map"
          shortcut="control|shift|M">
             <menu_item_check.on_check
@@ -215,7 +188,6 @@
         </menu_item_check>
          <menu_item_check
          label="World Map"
-         layout="topleft"
          name="World Map"
          shortcut="control|M"
          use_mac_ctrl="true">
@@ -228,7 +200,6 @@
         </menu_item_check>
         <menu_item_call
          label="Snapshot"
-         layout="topleft"
          name="Take Snapshot"
          shortcut="control|shift|S">
             <menu_item_call.on_click
@@ -237,7 +208,6 @@
         </menu_item_call>
       <menu_item_call
              label="Landmark This Place"
-             layout="topleft"
              name="Create Landmark Here">
                 <menu_item_call.on_click
                  function="World.CreateLandmark" />
@@ -247,12 +217,17 @@
       <menu
            create_jump_keys="true"
            label="Place Profile"
-           layout="topleft"
            name="Land"
            tear_off="true">
         <menu_item_call
-         label="About Land"
+         label="Place Profile"
          layout="topleft"
+         name="Place Profile">
+            <menu_item_call.on_click
+             function="World.PlaceProfile" />
+        </menu_item_call>
+        <menu_item_call
+         label="About Land"
          name="About Land">
             <menu_item_call.on_click
              function="Floater.Show"
@@ -260,18 +235,15 @@
         </menu_item_call>
         <menu_item_call
          label="Region/Estate"
-         layout="topleft"
          name="Region/Estate">
             <menu_item_call.on_click
              function="Floater.Show"
              parameter="region_info" />
         </menu_item_call>
         </menu>
-        <menu_item_separator
-         layout="topleft" />
+        <menu_item_separator/>
         <menu_item_call
              label="Buy This Land"
-             layout="topleft"
              name="Buy Land">
                 <menu_item_call.on_click
                  function="Land.Buy" />
@@ -280,7 +252,6 @@
             </menu_item_call>
         <menu_item_call
              label="My Land"
-             layout="topleft"
              name="My Land">
                 <menu_item_call.on_click
                  function="Floater.Show"
@@ -289,12 +260,10 @@
         <menu
            create_jump_keys="true"
            label="Show"
-           layout="topleft"
            name="LandShow"
            tear_off="true">
          <menu_item_check
          label="Move Controls"
-         layout="topleft"
          name="Movement Controls">
             <menu_item_check.on_check
              function="Floater.Visible"
@@ -304,7 +273,6 @@
         </menu_item_check>
         <menu_item_check
          label="View Controls"
-         layout="topleft"
          name="Camera Controls">
             <menu_item_check.on_check
              function="Floater.Visible"
@@ -314,7 +282,6 @@
         </menu_item_check>
           <menu_item_check
              label="Ban Lines"
-             layout="topleft"
              name="Ban Lines">
             <menu_item_check.on_check
                control="ShowBanLines" />
@@ -324,7 +291,6 @@
           </menu_item_check>
            <menu_item_check
                  label="Beacons"
-                 layout="topleft"
                  name="beacons"
                  shortcut="control|alt|shift|N">
                     <menu_item_check.on_check
@@ -336,7 +302,6 @@
                 </menu_item_check>
           <menu_item_check
              label="Property Lines"
-             layout="topleft"
              name="Property Lines"
              shortcut="control|alt|shift|P">
             <menu_item_check.on_check
@@ -347,7 +312,6 @@
           </menu_item_check>
           <menu_item_check
              label="Land Owners"
-             layout="topleft"
              name="Land Owners">
             <menu_item_check.on_check
                control="ShowParcelOwners" />
@@ -374,11 +338,9 @@
                control="NavBarShowParcelProperties" />
           </menu_item_check>
         </menu>
-        <menu_item_separator
-         layout="topleft" />
+        <menu_item_separator/>
 	    <menu_item_call
 	     label="Teleport Home"
-	     layout="topleft"
 	     name="Teleport Home"
 	     shortcut="control|shift|H">
 		<menu_item_call.on_click
@@ -388,7 +350,6 @@
 	    </menu_item_call>
             <menu_item_call
              label="Set Home to Here"
-             layout="topleft"
              name="Set Home to Here">
                 <menu_item_call.on_click
                  function="World.SetHomeLocation" />
@@ -397,7 +358,6 @@
             </menu_item_call>
     <!--    <menu_item_check
          label="Show Navigation Bar"
-         layout="topleft"
          name="ShowNavbarNavigationPanel">
            <menu_item_check.on_click
              function="ToggleControl"
@@ -408,7 +368,6 @@
         </menu_item_check>
        <menu_item_check
          label="Show Favorites Bar"
-         layout="topleft"
          name="ShowNavbarFavoritesPanel">
            <menu_item_check.on_click
              function="ToggleControl"
@@ -417,19 +376,15 @@
              function="CheckControl"
              parameter="ShowNavbarFavoritesPanel" />
         </menu_item_check>
-        <menu_item_separator
-         layout="topleft" />-->
-        <menu_item_separator
-         layout="topleft" />
+        <menu_item_separator/>-->
+        <menu_item_separator/>
     <menu
          create_jump_keys="true"
          label="Sun"
-         layout="topleft"
          name="Environment Settings"
          tear_off="true">
             <menu_item_call
              label="Sunrise"
-             layout="topleft"
              name="Sunrise">
                 <menu_item_call.on_click
                  function="World.EnvSettings"
@@ -437,7 +392,6 @@
             </menu_item_call>
             <menu_item_call
              label="Midday"
-             layout="topleft"
              name="Noon"
              shortcut="control|shift|Y">
                 <menu_item_call.on_click
@@ -446,7 +400,6 @@
             </menu_item_call>
             <menu_item_call
              label="Sunset"
-             layout="topleft"
              name="Sunset"
              shortcut="control|shift|N">
                 <menu_item_call.on_click
@@ -455,7 +408,6 @@
             </menu_item_call>
             <menu_item_call
              label="Midnight"
-             layout="topleft"
              name="Midnight">
                 <menu_item_call.on_click
                  function="World.EnvSettings"
@@ -463,17 +415,14 @@
             </menu_item_call>
             <menu_item_call
              label="Estate Time"
-             layout="topleft"
              name="Revert to Region Default">
                 <menu_item_call.on_click
                  function="World.EnvSettings"
                  parameter="default" />
             </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_separator/>
             <menu_item_call
              label="Environment Editor"
-             layout="topleft"
              name="Environment Editor">
                 <menu_item_call.on_click
                  function="World.EnvSettings"
@@ -484,13 +433,11 @@
     <menu
      create_jump_keys="true"
      label="Build"
-     layout="topleft"
      name="BuildTools"
      tear_off="true"
      visible="true">
        <menu_item_check
          label="Build"
-         layout="topleft"
          name="Show Build Tools"
          shortcut="control|B">
             <menu_item_check.on_check
@@ -503,12 +450,10 @@
        <menu
           create_jump_keys="true"
           label="Select Build Tool"
-          layout="topleft"
           name="Select Tool"
           tear_off="true">
          <menu_item_call
 			label="Focus Tool"
-			layout="topleft"
 			name="Focus"
 			shortcut="control|1">
            <menu_item_call.on_click
@@ -517,7 +462,6 @@
          </menu_item_call>
          <menu_item_call
 			label="Move Tool"
-			layout="topleft"
 			name="Move"
 			shortcut="control|2">
            <menu_item_call.on_click
@@ -526,7 +470,6 @@
          </menu_item_call>
          <menu_item_call
 			label="Edit Tool"
-			layout="topleft"
 			name="Edit"
 			shortcut="control|3">
            <menu_item_call.on_click
@@ -535,7 +478,6 @@
          </menu_item_call>
          <menu_item_call
 			label="Create Tool"
-			layout="topleft"
 			name="Create"
 			shortcut="control|4">
            <menu_item_call.on_click
@@ -544,7 +486,6 @@
          </menu_item_call>
          <menu_item_call
 			label="Land Tool"
-			layout="topleft"
 			name="Land"
 			shortcut="control|5">
            <menu_item_call.on_click
@@ -552,112 +493,8 @@
               parameter="land" />
          </menu_item_call>
 	   </menu>
-        <menu
-         create_jump_keys="true"
-         label="Edit"
-         layout="topleft"
-         name="Edit"
-         tear_off="true">
-            <menu_item_call
-             label="Undo"
-             layout="topleft"
-             name="Undo"
-             shortcut="control|Z">
-                <menu_item_call.on_click
-                 function="Edit.Undo" />
-                <menu_item_call.on_enable
-                 function="Edit.EnableUndo" />
-            </menu_item_call>
-            <menu_item_call
-             label="Redo"
-             layout="topleft"
-             name="Redo"
-             shortcut="control|Y">
-                <menu_item_call.on_click
-                 function="Edit.Redo" />
-                <menu_item_call.on_enable
-                 function="Edit.EnableRedo" />
-            </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
-            <menu_item_call
-             label="Cut"
-             layout="topleft"
-             name="Cut"
-             shortcut="control|X">
-                <menu_item_call.on_click
-                 function="Edit.Cut" />
-                <menu_item_call.on_enable
-                 function="Edit.EnableCut" />
-            </menu_item_call>
-            <menu_item_call
-             label="Copy"
-             layout="topleft"
-             name="Copy"
-             shortcut="control|C">
-                <menu_item_call.on_click
-                 function="Edit.Copy" />
-                <menu_item_call.on_enable
-                 function="Edit.EnableCopy" />
-            </menu_item_call>
-            <menu_item_call
-             label="Paste"
-             layout="topleft"
-             name="Paste"
-             shortcut="control|V">
-                <menu_item_call.on_click
-                 function="Edit.Paste" />
-                <menu_item_call.on_enable
-                 function="Edit.EnablePaste" />
-            </menu_item_call>
-            <menu_item_call
-             label="Delete"
-             layout="topleft"
-             name="Delete"
-             shortcut="Del">
-                <menu_item_call.on_click
-                 function="Edit.Delete" />
-                <menu_item_call.on_enable
-                 function="Edit.EnableDelete" />
-            </menu_item_call>
-            <menu_item_call
-             label="Duplicate"
-             layout="topleft"
-             name="Duplicate"
-             shortcut="control|D">
-                <menu_item_call.on_click
-                 function="Edit.Duplicate" />
-                <menu_item_call.on_enable
-                 function="Edit.EnableDuplicate" />
-            </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
-            <menu_item_call
-             label="Select All"
-             layout="topleft"
-             name="Select All"
-             shortcut="control|A">
-                <menu_item_call.on_click
-                 function="Edit.SelectAll" />
-                <menu_item_call.on_enable
-                 function="Edit.EnableSelectAll" />
-            </menu_item_call>
-            <menu_item_call
-             label="Deselect"
-             layout="topleft"
-             name="Deselect"
-             shortcut="control|E">
-                <menu_item_call.on_click
-                 function="Edit.Deselect" />
-                <menu_item_call.on_enable
-                 function="Edit.EnableDeselect" />
-            </menu_item_call>
-        </menu>
-        <menu_item_separator
-           layout="topleft" />
         <menu_item_call
            label="Link"
-           layout="topleft"
            name="Link"
            shortcut="control|L">
           <menu_item_call.on_click
@@ -667,7 +504,6 @@
         </menu_item_call>
         <menu_item_call
            label="Unlink"
-           layout="topleft"
            name="Unlink"
            shortcut="control|shift|L">
           <menu_item_call.on_click
@@ -677,7 +513,6 @@
         </menu_item_call>
         <menu_item_check
              label="Edit Linked Parts"
-             layout="topleft"
              name="Edit Linked Parts">
                 <menu_item_check.on_check
                  control="EditLinkedParts" />
@@ -687,11 +522,9 @@
                 <menu_item_check.on_enable
                  function="Tools.EnableToolNotPie" />
             </menu_item_check>
-        <menu_item_separator
-           layout="topleft" />
+        <menu_item_separator/>
         <menu_item_call
            label="Focus on Selection"
-           layout="topleft"
            name="Focus on Selection"
            shortcut="H">
           <menu_item_call.on_click
@@ -702,7 +535,6 @@
         </menu_item_call>
         <menu_item_call
            label="Zoom to Selection"
-           layout="topleft"
            name="Zoom to Selection"
            shortcut="shift|H">
           <menu_item_call.on_click
@@ -711,17 +543,14 @@
           <menu_item_call.on_enable
              function="Tools.SomethingSelectedNoHUD" />
         </menu_item_call>
-        <menu_item_separator
-           layout="topleft" />
+        <menu_item_separator/>
         <menu
          create_jump_keys="true"
          label="Object"
-         layout="topleft"
          name="Object"
          tear_off="true">
           <menu_item_call
              label="Buy"
-             layout="topleft"
              name="Menu Object Buy">
             <menu_item_call.on_click
                function="Tools.BuyOrTake"/>
@@ -732,7 +561,6 @@
           </menu_item_call>
           <menu_item_call
              label="Take"
-             layout="topleft"
              name="Menu Object Take">
             <menu_item_call.on_click
                function="Tools.BuyOrTake"/>
@@ -743,7 +571,6 @@
           </menu_item_call>
           <menu_item_call
 			 label="Take Copy"
-			 layout="topleft"
 			 name="Take Copy">
 			<menu_item_call.on_click
                function="Tools.TakeCopy" />
@@ -752,7 +579,6 @@
           </menu_item_call>
           <menu_item_call
 			 label="Save Back to My Inventory"
-			 layout="topleft"
 			 name="Save Object Back to My Inventory">
 			<menu_item_call.on_click
                function="Tools.SaveToInventory" />
@@ -761,7 +587,6 @@
           </menu_item_call>
           <menu_item_call
 			 label="Save Back to Object Contents"
-			 layout="topleft"
 			 name="Save Object Back to Object Contents">
 			<menu_item_call.on_click
                function="Tools.SaveToObjectInventory" />
@@ -772,12 +597,10 @@
         <menu
            create_jump_keys="true"
            label="Scripts"
-           layout="topleft"
            name="Scripts"
            tear_off="true">
           <menu_item_call
              label="Recompile Scripts (Mono)"
-             layout="topleft"
              name="Mono">
             <menu_item_call.on_click
                function="Tools.SelectedScriptAction"
@@ -787,7 +610,6 @@
           </menu_item_call>
           <menu_item_call
              label="Recompile Scripts (LSL)"
-             layout="topleft"
              name="LSL">
             <menu_item_call.on_click
                function="Tools.SelectedScriptAction"
@@ -797,7 +619,6 @@
           </menu_item_call>
           <menu_item_call
              label="Reset Scripts"
-             layout="topleft"
              name="Reset Scripts">
             <menu_item_call.on_click
                function="Tools.SelectedScriptAction"
@@ -807,7 +628,6 @@
           </menu_item_call>
           <menu_item_call
              label="Set Scripts to Running"
-             layout="topleft"
              name="Set Scripts to Running">
             <menu_item_call.on_click
                function="Tools.SelectedScriptAction"
@@ -817,7 +637,6 @@
           </menu_item_call>
           <menu_item_call
              label="Set Scripts to Not Running"
-             layout="topleft"
              name="Set Scripts to Not Running">
             <menu_item_call.on_click
                function="Tools.SelectedScriptAction"
@@ -826,17 +645,14 @@
                function="EditableSelected" />
           </menu_item_call>
         </menu>
-        <menu_item_separator
-           layout="topleft" />
+        <menu_item_separator/>
         <menu
          create_jump_keys="true"
          label="Options"
-         layout="topleft"
          name="Options"
          tear_off="true">
             <menu_item_call
              label="Set Default Upload Permissions"
-             layout="topleft"
              name="perm prefs">
                 <menu_item_call.on_click
                  function="Floater.Toggle"
@@ -844,7 +660,6 @@
             </menu_item_call>
 	   <menu_item_check
 	       label="Show Advanced Permissions"
-	       layout="topleft"
 	       name="DebugPermissions">
 			  <menu_item_check.on_check
 				 function="CheckControl"
@@ -853,11 +668,9 @@
 				 function="ToggleControl"
 				 parameter="DebugPermissions" />
 			</menu_item_check>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_separator/>
             <menu_item_check
                  label="Select Only My Objects"
-                 layout="topleft"
                  name="Select Only My Objects">
                     <menu_item_check.on_check
                      control="SelectOwnedOnly" />
@@ -867,7 +680,6 @@
                 </menu_item_check>
                 <menu_item_check
                  label="Select Only Movable Objects"
-                 layout="topleft"
                  name="Select Only Movable Objects">
                     <menu_item_check.on_check
                      control="SelectMovableOnly" />
@@ -877,18 +689,15 @@
                 </menu_item_check>
                 <menu_item_check
                  label="Select By Surrounding"
-                 layout="topleft"
                  name="Select By Surrounding">
                     <menu_item_check.on_check
                      control="RectangleSelectInclusive" />
                     <menu_item_check.on_click
                      function="Tools.SelectBySurrounding" />
             </menu_item_check>
-          <menu_item_separator
-           layout="topleft" />
+          <menu_item_separator/>
                 <menu_item_check
                  label="Show Hidden Selection"
-                 layout="topleft"
                  name="Show Hidden Selection">
                     <menu_item_check.on_check
                      control="RenderHiddenSelections" />
@@ -897,7 +706,6 @@
                 </menu_item_check>
                 <menu_item_check
                  label="Show Light Radius for Selection"
-                 layout="topleft"
                  name="Show Light Radius for Selection">
                     <menu_item_check.on_check
                      control="RenderLightRadius" />
@@ -906,7 +714,6 @@
                 </menu_item_check>
                 <menu_item_check
                  label="Show Selection Beam"
-                 layout="topleft"
                  name="Show Selection Beam">
                     <menu_item_check.on_check
                      control="ShowSelectionBeam" />
@@ -914,11 +721,9 @@
                      function="ToggleControl"
                      parameter="ShowSelectionBeam" />
                 </menu_item_check>
-        <menu_item_separator
-           layout="topleft" />
+        <menu_item_separator/>
                 <menu_item_check
                  label="Snap to Grid"
-                 layout="topleft"
                  name="Snap to Grid"
                  shortcut="G">
                     <menu_item_check.on_check
@@ -931,7 +736,6 @@
                 </menu_item_check>
                 <menu_item_call
                  label="Snap Object XY to Grid"
-                 layout="topleft"
                  name="Snap Object XY to Grid"
                  shortcut="shift|X">
                     <menu_item_call.on_click
@@ -941,7 +745,6 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Use Selection for Grid"
-                 layout="topleft"
                  name="Use Selection for Grid"
                  shortcut="shift|G">
                     <menu_item_call.on_click
@@ -951,7 +754,6 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Grid Options"
-                 layout="topleft"
                  name="Grid Options"
                  shortcut="control|shift|B">
                     <menu_item_call.on_click
@@ -964,12 +766,10 @@
         <menu
          create_jump_keys="true"
          label="Select Linked Parts"
-         layout="topleft"
          name="Select Linked Parts"
          tear_off="true">
             <menu_item_call
              label="Select Next Part"
-             layout="topleft"
              name="Select Next Part"
 	     shortcut="control|.">
                 <menu_item_call.on_click
@@ -980,7 +780,6 @@
             </menu_item_call>
             <menu_item_call
              label="Select Previous Part"
-             layout="topleft"
              name="Select Previous Part"
 	     shortcut="control|,">
                 <menu_item_call.on_click
@@ -991,7 +790,6 @@
             </menu_item_call>
             <menu_item_call
              label="Include Next Part"
-             layout="topleft"
              name="Include Next Part"
 	     shortcut="control|shift|.">
                 <menu_item_call.on_click
@@ -1002,7 +800,6 @@
             </menu_item_call>
             <menu_item_call
              label="Include Previous Part"
-             layout="topleft"
              name="Include Previous Part"
 	     shortcut="control|shift|,">
                 <menu_item_call.on_click
@@ -1015,48 +812,40 @@
     </menu>
     <menu
      label="Help"
-     layout="topleft"
      name="Help"
      tear_off="true">
         <menu_item_call
          label="[SECOND_LIFE] Help"
-         layout="topleft"
          name="Second Life Help"
          shortcut="F1">
             <menu_item_call.on_click
              function="ShowHelp"
              parameter="f1_help" />
         </menu_item_call>
-  <!--      <menu_item_call
+<!--        <menu_item_call
          label="Tutorial"
-         layout="topleft"
          name="Tutorial">
             <menu_item_call.on_click
              function="Floater.Show"
              parameter="hud" />
         </menu_item_call>-->
-        <menu_item_separator
-             layout="topleft" />
+        <menu_item_separator/>
         <menu_item_call
              label="Report Abuse"
-             layout="topleft"
              name="Report Abuse">
                 <menu_item_call.on_click
                  function="ReportAbuse" />
             </menu_item_call>
         <menu_item_call
              label="Report Bug"
-             layout="topleft"
              name="Report Bug">
                 <menu_item_call.on_click
                  function="ShowHelp"
                  parameter="report_bug" />
             </menu_item_call>
-        <menu_item_separator
-             layout="topleft" />
+        <menu_item_separator/>
         <menu_item_call
          label="About [APP_NAME]"
-         layout="topleft"
          name="About Second Life">
             <menu_item_call.on_click
              function="Floater.Show"
@@ -1065,20 +854,28 @@
     </menu>
     <menu
      label="Advanced"
-     layout="topleft"
      name="Advanced"
      tear_off="true"
      visible="false">
+        <menu_item_check
+         label="Show Advanced Menu"
+         name="Show Advanced Menu"
+         shortcut="control|alt|D">
+          <on_check
+           function="CheckControl"
+           parameter="UseDebugMenus" />
+          <on_click
+           function="ToggleControl"
+           parameter="UseDebugMenus" />
+        </menu_item_check>
         <menu_item_call
          label="Stop Animating Me"
-         layout="topleft"
          name="Stop Animating My Avatar">
             <menu_item_call.on_click
              function="Tools.StopAllAnimations" />
         </menu_item_call>
         <menu_item_call
          label="Rebake Textures"
-         layout="topleft"
          name="Rebake Texture"
          shortcut="control|alt|R">
             <menu_item_call.on_click
@@ -1086,7 +883,6 @@
         </menu_item_call>
         <menu_item_call
            label="Set UI Size to Default"
-           layout="topleft"
            name="Set UI Size to Default">
           <menu_item_call.on_click
              function="View.DefaultUISize" />
@@ -1101,7 +897,6 @@
         <menu_item_separator/>
         <menu_item_check
          label="Limit Select Distance"
-         layout="topleft"
          name="Limit Select Distance">
             <menu_item_check.on_check
              function="CheckControl"
@@ -1112,7 +907,6 @@
         </menu_item_check>
         <menu_item_check
          label="Disable Camera Constraints"
-         layout="topleft"
          name="Disable Camera Distance">
             <menu_item_check.on_check
              function="CheckControl"
@@ -1121,11 +915,9 @@
              function="ToggleControl"
              parameter="DisableCameraConstraints" />
         </menu_item_check>
-        <menu_item_separator
-         layout="topleft" />
+        <menu_item_separator/>
         <menu_item_check
          label="High-res Snapshot"
-         layout="topleft"
          name="HighResSnapshot">
             <menu_item_check.on_check
              function="CheckControl"
@@ -1136,7 +928,6 @@
         </menu_item_check>
         <menu_item_check
          label="Quiet Snapshots to Disk"
-         layout="topleft"
          name="QuietSnapshotsToDisk">
             <menu_item_check.on_check
              function="CheckControl"
@@ -1147,7 +938,6 @@
         </menu_item_check>
         <menu_item_check
          label="Compress Snapshots to Disk"
-         layout="topleft"
          name="CompressSnapshotsToDisk">
             <menu_item_check.on_check
              function="CheckControl"
@@ -1156,17 +946,14 @@
              function="ToggleControl"
              parameter="CompressSnapshotsToDisk" />
         </menu_item_check>
-        <menu_item_separator
-         layout="topleft" />
+        <menu_item_separator/>
         <menu
          create_jump_keys="true"
          label="Performance Tools"
-         layout="topleft"
          name="Performance Tools"
          tear_off="true">
             <menu_item_call
              label="Lag Meter"
-             layout="topleft"
              name="Lag Meter">
                 <menu_item_call.on_click
                  function="Floater.Show"
@@ -1174,7 +961,6 @@
             </menu_item_call>
             <menu_item_check
              label="Statistics Bar"
-             layout="topleft"
              name="Statistics Bar"
              shortcut="control|shift|1">
                 <menu_item_check.on_check
@@ -1186,7 +972,6 @@
             </menu_item_check>
       <menu_item_check
         label="Show Avatar Rendering Cost"
-        layout="topleft"
         name="Avatar Rendering Cost">
            <menu_item_check.on_check
             function="Advanced.CheckInfoDisplay"
@@ -1199,12 +984,10 @@
         <menu
          create_jump_keys="true"
          label="Highlighting and Visibility"
-         layout="topleft"
          name="Highlighting and Visibility"
          tear_off="true">
          <menu_item_check
                  label="Cheesy Beacon"
-                 layout="topleft"
                  name="Cheesy Beacon">
                     <menu_item_check.on_check
                      function="CheckControl"
@@ -1215,7 +998,6 @@
                 </menu_item_check>
             <menu_item_check
              label="Hide Particles"
-             layout="topleft"
              name="Hide Particles"
              shortcut="control|alt|shift|=">
                 <menu_item_check.on_check
@@ -1227,7 +1009,6 @@
             </menu_item_check>
             <menu_item_check
              label="Hide Selected"
-             layout="topleft"
              name="Hide Selected">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -1238,7 +1019,6 @@
             </menu_item_check>
             <menu_item_check
              label="Highlight Transparent"
-             layout="topleft"
              name="Highlight Transparent"
              shortcut="control|alt|T">
                 <menu_item_check.on_check
@@ -1248,7 +1028,6 @@
             </menu_item_check>
             <menu_item_check
              label="Show HUD Attachments"
-             layout="topleft"
              name="Show HUD Attachments"
              shortcut="alt|shift|H">
                 <menu_item_check.on_check
@@ -1258,7 +1037,6 @@
             </menu_item_check>
             <menu_item_check
              label="Show Mouselook Crosshairs"
-             layout="topleft"
              name="ShowCrosshairs">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -1270,12 +1048,10 @@
   <!-- <menu
          create_jump_keys="true"
          label="Hover Tips"
-         layout="topleft"
          name="Hover Tips"
          tear_off="true">
             <menu_item_check
              label="Show Tips"
-             layout="topleft"
              name="Show Tips"
              shortcut="control|shift|T">
                 <menu_item_check.on_check
@@ -1283,11 +1059,9 @@
                 <menu_item_check.on_click
                  function="View.ShowHoverTips" />
             </menu_item_check>
-            <menu_item_separator
-             layout="topleft" />-->
+            <menu_item_separator/>
             <menu_item_check
              label="Show Land Tooltips"
-             layout="topleft"
              name="Land Tips">
                 <menu_item_check.on_check
                  control="ShowLandHoverTip" />
@@ -1297,9 +1071,8 @@
                 <menu_item_check.on_enable
                  function="View.CheckShowHoverTips" />
             </menu_item_check>
- <!--           <menu_item_check
+           <menu_item_check
              label="Show Tips On All Objects"
-             layout="topleft"
              name="Tips On All Objects">
                 <menu_item_check.on_check
                  control="ShowAllObjectHoverTip" />
@@ -1316,12 +1089,10 @@
         <menu
          create_jump_keys="true"
          label="Rendering Types"
-         layout="topleft"
          name="Rendering Types"
          tear_off="true">
             <menu_item_check
              label="Simple"
-             layout="topleft"
              name="Simple"
              shortcut="control|alt|shift|1">
                 <menu_item_check.on_check
@@ -1333,7 +1104,6 @@
             </menu_item_check>
             <menu_item_check
              label="Alpha"
-             layout="topleft"
              name="Alpha"
              shortcut="control|alt|shift|2">
                 <menu_item_check.on_check
@@ -1345,7 +1115,6 @@
             </menu_item_check>
             <menu_item_check
              label="Tree"
-             layout="topleft"
              name="Tree"
              shortcut="control|alt|shift|3">
                 <menu_item_check.on_check
@@ -1357,7 +1126,6 @@
             </menu_item_check>
             <menu_item_check
              label="Avatars"
-             layout="topleft"
              name="Character"
              shortcut="control|alt|shift|4">
                 <menu_item_check.on_check
@@ -1369,7 +1137,6 @@
             </menu_item_check>
             <menu_item_check
              label="SurfacePath"
-             layout="topleft"
              name="SurfacePath"
              shortcut="control|alt|shift|5">
                 <menu_item_check.on_check
@@ -1381,7 +1148,6 @@
             </menu_item_check>
             <menu_item_check
              label="Sky"
-             layout="topleft"
              name="Sky"
              shortcut="control|alt|shift|6">
                 <menu_item_check.on_check
@@ -1393,7 +1159,6 @@
             </menu_item_check>
             <menu_item_check
              label="Water"
-             layout="topleft"
              name="Water"
              shortcut="control|alt|shift|7">
                 <menu_item_check.on_check
@@ -1405,7 +1170,6 @@
             </menu_item_check>
             <menu_item_check
              label="Ground"
-             layout="topleft"
              name="Ground"
              shortcut="control|alt|shift|8">
                 <menu_item_check.on_check
@@ -1417,7 +1181,6 @@
             </menu_item_check>
             <menu_item_check
              label="Volume"
-             layout="topleft"
              name="Volume"
              shortcut="control|alt|shift|9">
                 <menu_item_check.on_check
@@ -1429,7 +1192,6 @@
             </menu_item_check>
             <menu_item_check
              label="Grass"
-             layout="topleft"
              name="Grass"
              shortcut="control|alt|shift|0">
                 <menu_item_check.on_check
@@ -1441,7 +1203,6 @@
             </menu_item_check>
             <menu_item_check
              label="Clouds"
-             layout="topleft"
              name="Clouds"
              shortcut="control|alt|shift|-">
                 <menu_item_check.on_check
@@ -1453,7 +1214,6 @@
             </menu_item_check>
             <menu_item_check
              label="Particles"
-             layout="topleft"
              name="Particles"
              shortcut="control|alt|shift|=">
                 <menu_item_check.on_check
@@ -1465,7 +1225,6 @@
             </menu_item_check>
             <menu_item_check
              label="Bump"
-             layout="topleft"
              name="Bump"
              shortcut="control|alt|shift|\">
                 <menu_item_check.on_check
@@ -1479,12 +1238,10 @@
         <menu
          create_jump_keys="true"
          label="Rendering Features"
-         layout="topleft"
          name="Rendering Features"
          tear_off="true">
             <menu_item_check
              label="UI"
-             layout="topleft"
              name="UI"
              shortcut="control|alt|F1">
                 <menu_item_check.on_check
@@ -1496,7 +1253,6 @@
             </menu_item_check>
             <menu_item_check
              label="Selected"
-             layout="topleft"
              name="Selected"
              shortcut="control|alt|F2">
                 <menu_item_check.on_check
@@ -1508,7 +1264,6 @@
             </menu_item_check>
             <menu_item_check
              label="Highlighted"
-             layout="topleft"
              name="Highlighted"
              shortcut="control|alt|F3">
                 <menu_item_check.on_check
@@ -1520,7 +1275,6 @@
             </menu_item_check>
             <menu_item_check
              label="Dynamic Textures"
-             layout="topleft"
              name="Dynamic Textures"
              shortcut="control|alt|F4">
                 <menu_item_check.on_check
@@ -1532,7 +1286,6 @@
             </menu_item_check>
             <menu_item_check
              label="Foot Shadows"
-             layout="topleft"
              name="Foot Shadows"
              shortcut="control|alt|F5">
                 <menu_item_check.on_check
@@ -1544,7 +1297,6 @@
             </menu_item_check>
             <menu_item_check
              label="Fog"
-             layout="topleft"
              name="Fog"
              shortcut="control|alt|F6">
                 <menu_item_check.on_check
@@ -1556,7 +1308,6 @@
             </menu_item_check>
             <menu_item_check
              label="Test FRInfo"
-             layout="topleft"
              name="Test FRInfo"
              shortcut="control|alt|F8">
                 <menu_item_check.on_check
@@ -1568,7 +1319,6 @@
             </menu_item_check>
             <menu_item_check
              label="Flexible Objects"
-             layout="topleft"
              name="Flexible Objects"
              shortcut="control|alt|F9">
                 <menu_item_check.on_check
@@ -1581,7 +1331,6 @@
         </menu>
         <menu_item_check
          label="Run Multiple Threads"
-         layout="topleft"
          name="Run Multiple Threads">
             <menu_item_check.on_check
              function="CheckControl"
@@ -1592,7 +1341,6 @@
         </menu_item_check>
         <menu_item_call
          label="Clear Group Cache"
-         layout="topleft"
          name="ClearGroupCache">
             <menu_item_call.on_click
              function="Advanced.ClearGroupCache"
@@ -1600,7 +1348,6 @@
         </menu_item_call>
         <menu_item_check
          label="Mouse Smoothing"
-         layout="topleft"
          name="Mouse Smoothing">
             <menu_item_check.on_check
              function="CheckControl"
@@ -1609,17 +1356,14 @@
              function="ToggleControl"
              parameter="MouseSmooth" />
         </menu_item_check>
-        <menu_item_separator
-         layout="topleft" />
+        <menu_item_separator/>
         <menu
          label="Shortcuts"
-         layout="topleft"
          name="Shortcuts"
          tear_off="true"
          visible="false">
           <menu_item_call
              label="Image (L$[COST])..."
-             layout="topleft"
              name="Upload Image"
              shortcut="control|U">
             <menu_item_call.on_click
@@ -1630,7 +1374,6 @@
             </menu_item_call>
             <menu_item_check
                label="Search"
-               layout="topleft"
                name="Search"
                shortcut="control|F">
             <menu_item_check.on_check
@@ -1643,7 +1386,6 @@
             <menu_item_call
              enabled="false"
              label="Release Keys"
-             layout="topleft"
              name="Release Keys">
                 <menu_item_call.on_click
                  function="Tools.ReleaseKeys"
@@ -1654,16 +1396,13 @@
             </menu_item_call>
             <menu_item_call
              label="Set UI Size to Default"
-             layout="topleft"
              name="Set UI Size to Default">
                 <menu_item_call.on_click
                  function="View.DefaultUISize" />
             </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_separator/>
             <menu_item_check
              label="Always Run"
-             layout="topleft"
              name="Always Run"
              shortcut="control|R">
                 <menu_item_check.on_check
@@ -1673,7 +1412,6 @@
             </menu_item_check>
             <menu_item_check
              label="Fly"
-             layout="topleft"
              name="Fly"
              shortcut="Home">
                 <menu_item_check.on_check
@@ -1683,11 +1421,9 @@
                 <menu_item_check.on_enable
                  function="Agent.enableFlying" />
             </menu_item_check>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_separator/>
             <menu_item_call
              label="Close Window"
-             layout="topleft"
              name="Close Window"
              shortcut="control|W">
                 <menu_item_call.on_click
@@ -1697,7 +1433,6 @@
             </menu_item_call>
             <menu_item_call
              label="Close All Windows"
-             layout="topleft"
              name="Close All Windows"
              shortcut="control|shift|W">
                 <menu_item_call.on_click
@@ -1705,22 +1440,18 @@
                 <menu_item_call.on_enable
                  function="File.EnableCloseAllWindows" />
             </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_separator/>
             <menu_item_call
              label="Snapshot to Disk"
-             layout="topleft"
              name="Snapshot to Disk"
              shortcut="control|`"
              use_mac_ctrl="true">
                 <menu_item_call.on_click
                  function="File.TakeSnapshotToDisk" />
             </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_separator/>
             <menu_item_call
              label="Mouselook"
-             layout="topleft"
              name="Mouselook"
              shortcut="M">
                 <menu_item_call.on_click
@@ -1730,7 +1461,6 @@
             </menu_item_call>
             <menu_item_check
              label="Joystick Flycam"
-             layout="topleft"
              name="Joystick Flycam"
              shortcut="alt|shift|F">
                 <menu_item_check.on_check
@@ -1742,7 +1472,6 @@
             </menu_item_check>
             <menu_item_call
              label="Reset View"
-             layout="topleft"
              name="Reset View"
              shortcut="Esc">
                 <menu_item_call.on_click
@@ -1750,7 +1479,6 @@
             </menu_item_call>
             <menu_item_call
              label="Look at Last Chatter"
-             layout="topleft"
              name="Look at Last Chatter"
              shortcut="control|\">
                 <menu_item_call.on_click
@@ -1758,17 +1486,14 @@
                 <menu_item_call.on_enable
                  function="View.EnableLastChatter" />
             </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_separator/>
             <menu
              create_jump_keys="true"
              label="Select Build Tool"
-             layout="topleft"
              name="Select Tool"
              tear_off="true">
                 <menu_item_call
                  label="Focus Tool"
-                 layout="topleft"
                  name="Focus"
                  shortcut="control|1">
                     <menu_item_call.on_click
@@ -1777,7 +1502,6 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Move Tool"
-                 layout="topleft"
                  name="Move"
                  shortcut="control|2">
                     <menu_item_call.on_click
@@ -1786,7 +1510,6 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Edit Tool"
-                 layout="topleft"
                  name="Edit"
                  shortcut="control|3">
                     <menu_item_call.on_click
@@ -1795,7 +1518,6 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Create Tool"
-                 layout="topleft"
                  name="Create"
                  shortcut="control|4">
                     <menu_item_call.on_click
@@ -1804,7 +1526,6 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Land Tool"
-                 layout="topleft"
                  name="Land"
                  shortcut="control|5">
                     <menu_item_call.on_click
@@ -1812,11 +1533,9 @@
                      parameter="land" />
                 </menu_item_call>
             </menu>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_separator/>
             <menu_item_call
              label="Zoom In"
-             layout="topleft"
              name="Zoom In"
              shortcut="control|0">
                 <menu_item_call.on_click
@@ -1824,7 +1543,6 @@
             </menu_item_call>
             <menu_item_call
              label="Zoom Default"
-             layout="topleft"
              name="Zoom Default"
              shortcut="control|9">
                 <menu_item_call.on_click
@@ -1832,17 +1550,14 @@
             </menu_item_call>
             <menu_item_call
              label="Zoom Out"
-             layout="topleft"
              name="Zoom Out"
              shortcut="control|8">
                 <menu_item_call.on_click
                  function="View.ZoomOut" />
             </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_separator/>
             <menu_item_call
              label="Toggle Fullscreen"
-             layout="topleft"
              name="Toggle Fullscreen"
              >
                <!-- Note: shortcut="alt|Enter" was deleted from the preceding node-->
@@ -1850,11 +1565,9 @@
                  function="View.Fullscreen" />
             </menu_item_call>
         </menu>
-        <menu_item_separator
-         layout="topleft" />
+        <menu_item_separator/>
         <menu_item_call
          label="Show Debug Settings"
-         layout="topleft"
          name="Debug Settings">
             <menu_item_call.on_click
              function="Advanced.ShowDebugSettings"
@@ -1862,7 +1575,6 @@
         </menu_item_call>
      <menu_item_check
          label="Show Develop Menu"
-         layout="topleft"
          name="Debug Mode"
          shortcut="control|alt|Q">
             <menu_item_check.on_check
@@ -1872,23 +1584,21 @@
              function="ToggleControl"
              parameter="QAMode" />
         </menu_item_check>
+    
     </menu>
     <menu
      create_jump_keys="true"
      label="Develop"
-     layout="topleft"
      name="Develop"
      tear_off="true"
      visible="false">
         <menu
          create_jump_keys="true"
          label="Consoles"
-         layout="topleft"
          name="Consoles"
          tear_off="true">
             <menu_item_check
              label="Texture Console"
-             layout="topleft"
              name="Texture Console"
              shortcut="control|shift|3"
              use_mac_ctrl="true">
@@ -1901,7 +1611,6 @@
             </menu_item_check>
             <menu_item_check
              label="Debug Console"
-             layout="topleft"
              name="Debug Console"
              shortcut="control|shift|4"
              use_mac_ctrl="true">
@@ -1914,7 +1623,6 @@
             </menu_item_check>
             <menu_item_call
              label="Notifications Console"
-             layout="topleft"
              name="Notifications"
              shortcut="control|shift|5">
               <menu_item_call.on_click
@@ -1923,7 +1631,6 @@
             </menu_item_call>
             <menu_item_check
                label="Texture Size Console"
-               layout="topleft"
                name="Texture Size"
                shortcut="control|shift|6">
               <menu_item_check.on_check
@@ -1935,7 +1642,6 @@
             </menu_item_check>
             <menu_item_check
                label="Texture Category Console"
-               layout="topleft"
                name="Texture Category"
                shortcut="control|shift|7">
               <menu_item_check.on_check
@@ -1947,7 +1653,6 @@
             </menu_item_check>
             <menu_item_check
              label="Fast Timers"
-             layout="topleft"
              name="Fast Timers"
              shortcut="control|shift|9"
              use_mac_ctrl="true">
@@ -1960,7 +1665,6 @@
             </menu_item_check>
             <menu_item_check
              label="Memory"
-             layout="topleft"
              name="Memory"
              shortcut="control|shift|0"
              use_mac_ctrl="true">
@@ -1971,11 +1675,9 @@
                  function="Advanced.ToggleConsole"
                  parameter="memory view" />
             </menu_item_check>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_separator/>
             <menu_item_call
              label="Region Info to Debug Console"
-             layout="topleft"
              name="Region Info to Debug Console">
                 <menu_item_call.on_click
                  function="Advanced.DumpInfoToConsole"
@@ -1983,7 +1685,6 @@
             </menu_item_call>
             <menu_item_call
              label="Group Info to Debug Console"
-             layout="topleft"
              name="Group Info to Debug Console">
                 <menu_item_call.on_click
                  function="Advanced.DumpInfoToConsole"
@@ -1991,17 +1692,14 @@
             </menu_item_call>
             <menu_item_call
              label="Capabilities Info to Debug Console"
-             layout="topleft"
              name="Capabilities Info to Debug Console">
                 <menu_item_call.on_click
                  function="Advanced.DumpInfoToConsole"
                  parameter="capabilities" />
             </menu_item_call>
-            <menu_item_separator
-         layout="topleft" />
+            <menu_item_separator/>
             <menu_item_check
              label="Camera"
-             layout="topleft"
              name="Camera">
                 <menu_item_check.on_check
                  function="Advanced.CheckHUDInfo"
@@ -2012,7 +1710,6 @@
             </menu_item_check>
             <menu_item_check
              label="Wind"
-             layout="topleft"
              name="Wind">
                 <menu_item_check.on_check
                  function="Advanced.CheckHUDInfo"
@@ -2023,7 +1720,6 @@
             </menu_item_check>
             <menu_item_check
              label="FOV"
-             layout="topleft"
              name="FOV">
                 <menu_item_check.on_check
                  function="Advanced.CheckHUDInfo"
@@ -2034,7 +1730,6 @@
             </menu_item_check>
             <menu_item_check
              label="Badge"
-             layout="topleft"
              name="Badge"
 			 shortcut="alt|control|shift|h">
                 <menu_item_check.on_check
@@ -2048,12 +1743,10 @@
         <menu
          create_jump_keys="true"
          label="Show Info"
-         layout="topleft"
          name="Display Info"
          tear_off="true">
             <menu_item_check
              label="Show Time"
-             layout="topleft"
              name="Show Time">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2064,7 +1757,6 @@
             </menu_item_check>
             <menu_item_check
              label="Show Render Info"
-             layout="topleft"
              name="Show Render Info">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2075,7 +1767,6 @@
             </menu_item_check>
             <menu_item_check
              label="Show Matrices"
-             layout="topleft"
              name="Show Matrices">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2086,7 +1777,6 @@
             </menu_item_check>
             <menu_item_check
              label="Show Color Under Cursor"
-             layout="topleft"
              name="Show Color Under Cursor">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2095,11 +1785,9 @@
                  function="ToggleControl"
                  parameter="DebugShowColor" />
             </menu_item_check>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_separator/>
             <menu_item_check
              label="Show Updates to Objects"
-             layout="topleft"
              name="Show Updates"
              shortcut="control|alt|shift|U">
                 <menu_item_check.on_check
@@ -2109,17 +1797,14 @@
                  function="Advanced.ToggleShowObjectUpdates" />
             </menu_item_check>
         </menu>
-        <menu_item_separator
-         layout="topleft" />
+        <menu_item_separator/>
         <menu
          create_jump_keys="true"
          label="Force an Error"
-         layout="topleft"
          name="Force Errors"
          tear_off="true">
             <menu_item_call
              label="Force Breakpoint"
-             layout="topleft"
              name="Force Breakpoint"
              shortcut="control|alt|shift|B">
                 <menu_item_call.on_click
@@ -2127,49 +1812,42 @@
             </menu_item_call>
             <menu_item_call
              label="Force LLError And Crash"
-             layout="topleft"
              name="Force LLError And Crash">
                 <menu_item_call.on_click
                  function="Advanced.ForceErrorLlerror" />
             </menu_item_call>
             <menu_item_call
              label="Force Bad Memory Access"
-             layout="topleft"
              name="Force Bad Memory Access">
                 <menu_item_call.on_click
                  function="Advanced.ForceErrorBadMemoryAccess" />
             </menu_item_call>
             <menu_item_call
              label="Force Infinite Loop"
-             layout="topleft"
              name="Force Infinite Loop">
                 <menu_item_call.on_click
                  function="Advanced.ForceErrorInfiniteLoop" />
             </menu_item_call>
             <menu_item_call
              label="Force Driver Crash"
-             layout="topleft"
              name="Force Driver Carsh">
                 <menu_item_call.on_click
                  function="Advanced.ForceErrorDriverCrash" />
             </menu_item_call>
             <menu_item_call
              label="Force Software Exception"
-             layout="topleft"
              name="Force Software Exception">
                 <menu_item_call.on_click
                  function="Advanced.ForceErrorSoftwareException" />
             </menu_item_call>
             <menu_item_call
              label="Force Disconnect Viewer"
-             layout="topleft"
              name="Force Disconnect Viewer">
                 <menu_item_call.on_click
                  function="Advanced.ForceErrorDisconnectViewer" />
             </menu_item_call>
             <menu_item_call
              label="Simulate a Memory Leak"
-             layout="topleft"
              name="Memory Leaking Simulation">
                <menu_item_call.on_click
                 function="Floater.Show"
@@ -2179,12 +1857,10 @@
         <menu
          create_jump_keys="true"
          label="Render Tests"
-         layout="topleft"
          name="Render Tests"
          tear_off="true">
             <menu_item_check
              label="Camera Offset"
-             layout="topleft"
              name="Camera Offset">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2195,7 +1871,6 @@
             </menu_item_check>
             <menu_item_check
              label="Randomize Framerate"
-             layout="topleft"
              name="Randomize Framerate">
                 <menu_item_check.on_check
                  function="Advanced.CheckRandomizeFramerate"
@@ -2205,7 +1880,6 @@
             </menu_item_check>
             <menu_item_check
              label="Periodic Slow Frame"
-             layout="topleft"
              name="Periodic Slow Frame">
                 <menu_item_check.on_check
                  function="Advanced.CheckPeriodicSlowFrame"
@@ -2216,7 +1890,6 @@
             </menu_item_check>
             <menu_item_check
              label="Frame Test"
-             layout="topleft"
              name="Frame Test">
                 <menu_item_check.on_check
                  function="Advanced.CheckFrameTest"
@@ -2228,12 +1901,10 @@
       <menu
         create_jump_keys="true"
         label="Render Metadata"
-        layout="topleft"
         name="Render Metadata"
         tear_off="true">
         <menu_item_check
          label="Bounding Boxes"
-         layout="topleft"
          name="Bounding Boxes">
         <menu_item_check.on_check
          function="Advanced.CheckInfoDisplay"
@@ -2244,7 +1915,6 @@
         </menu_item_check>
         <menu_item_check
          label="Octree"
-         layout="topleft"
          name="Octree">
           <menu_item_check.on_check
            function="Advanced.CheckInfoDisplay"
@@ -2255,7 +1925,6 @@
         </menu_item_check>
         <menu_item_check
          label="Shadow Frusta"
-         layout="topleft"
          name="Shadow Frusta">
           <menu_item_check.on_check
            function="Advanced.CheckInfoDisplay"
@@ -2266,7 +1935,6 @@
         </menu_item_check>
         <menu_item_check
          label="Occlusion"
-         layout="topleft"
          name="Occlusion">
           <menu_item_check.on_check
            function="Advanced.CheckInfoDisplay"
@@ -2277,7 +1945,6 @@
         </menu_item_check>
         <menu_item_check
          label="Render Batches"
-         layout="topleft"
          name="Render Batches">
           <menu_item_check.on_check
            function="Advanced.CheckInfoDisplay"
@@ -2288,7 +1955,6 @@
         </menu_item_check>
         <menu_item_check
          label="Texture Anim"
-         layout="topleft"
          name="Texture Anim">
           <menu_item_check.on_check
            function="Advanced.CheckInfoDisplay"
@@ -2299,7 +1965,6 @@
         </menu_item_check>
         <menu_item_check
          label="Texture Priority"
-         layout="topleft"
          name="Texture Priority">
           <menu_item_check.on_check
            function="Advanced.CheckInfoDisplay"
@@ -2310,7 +1975,6 @@
         </menu_item_check>
         <menu_item_check
          label="Texture Area"
-         layout="topleft"
          name="Texture Area">
           <menu_item_check.on_check
            function="Advanced.CheckInfoDisplay"
@@ -2321,7 +1985,6 @@
         </menu_item_check>
         <menu_item_check
          label="Face Area"
-         layout="topleft"
          name="Face Area">
           <menu_item_check.on_check
            function="Advanced.CheckInfoDisplay"
@@ -2332,7 +1995,6 @@
         </menu_item_check>
         <menu_item_check
          label="Lights"
-         layout="topleft"
          name="Lights">
           <menu_item_check.on_check
            function="Advanced.CheckInfoDisplay"
@@ -2343,7 +2005,6 @@
         </menu_item_check>
         <menu_item_check
          label="Collision Skeleton"
-         layout="topleft"
          name="Collision Skeleton">
           <menu_item_check.on_check
            function="Advanced.CheckInfoDisplay"
@@ -2354,7 +2015,6 @@
         </menu_item_check>
         <menu_item_check
          label="Raycast"
-         layout="topleft"
          name="Raycast">
           <menu_item_check.on_check
            function="Advanced.CheckInfoDisplay"
@@ -2367,7 +2027,6 @@
         <menu
          create_jump_keys="true"
          label="Rendering"
-         layout="topleft"
          name="Rendering"
          tear_off="true">
             <menu_item_check
@@ -2509,7 +2168,6 @@
             </menu_item_check>
             <menu_item_check
               label="Full Res Textures"
-             layout="topleft"
              name="Rull Res Textures">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2520,7 +2178,6 @@
             </menu_item_check>
             <menu_item_check
                label="Audit Textures"
-               layout="topleft"
                name="Audit Textures">
               <menu_item_check.on_check
                function="CheckControl"
@@ -2574,12 +2231,10 @@
         <menu
          create_jump_keys="true"
          label="Network"
-         layout="topleft"
          name="Network"
          tear_off="true">
             <menu_item_check
              label="Pause Agent"
-             layout="topleft"
              name="AgentPause">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2588,27 +2243,22 @@
                  function="ToggleControl"
                  parameter="AgentPause" />
             </menu_item_check>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_separator/>
             <menu_item_call
              label="Enable Message Log"
-             layout="topleft"
              name="Enable Message Log">
                 <menu_item_call.on_click
                  function="Advanced.EnableMessageLog" />
             </menu_item_call>
             <menu_item_call
              label="Disable Message Log"
-             layout="topleft"
              name="Disable Message Log">
                 <menu_item_call.on_click
                  function="Advanced.DisableMessageLog" />
             </menu_item_call>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_separator/>
             <menu_item_check
              label="Velocity Interpolate Objects"
-             layout="topleft"
              name="Velocity Interpolate Objects">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2619,7 +2269,6 @@
             </menu_item_check>
             <menu_item_check
              label="Ping Interpolate Object Positions"
-             layout="topleft"
              name="Ping Interpolate Object Positions">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2628,11 +2277,9 @@
                  function="ToggleControl"
                  parameter="PingInterpolate" />
             </menu_item_check>
-            <menu_item_separator
-             layout="topleft" />
+            <menu_item_separator/>
             <menu_item_call
              label="Drop a Packet"
-             layout="topleft"
              name="Drop a Packet"
              shortcut="control|alt|L">
                 <menu_item_call.on_click
@@ -2641,14 +2288,12 @@
         </menu>
         <menu_item_call
          label="Dump Scripted Camera"
-         layout="topleft"
          name="Dump Scripted Camera">
             <menu_item_call.on_click
              function="Advanced.DumpScriptedCamera" />
         </menu_item_call>
         <menu_item_call
              label="Bumps, Pushes &amp; Hits"
-             layout="topleft"
              name="Bumps, Pushes &amp;amp; Hits">
                 <menu_item_call.on_click
                  function="Floater.Show"
@@ -2658,12 +2303,10 @@
         <menu
          create_jump_keys="true"
          label="Recorder"
-         layout="topleft"
          name="Recorder"
          tear_off="true">
             <menu_item_call
              label="Start Playback"
-             layout="topleft"
              name="Start Playback">
                 <menu_item_call.on_click
                  function="Advanced.AgentPilot"
@@ -2671,7 +2314,6 @@
             </menu_item_call>
             <menu_item_call
              label="Stop Playback"
-             layout="topleft"
              name="Stop Playback">
                 <menu_item_call.on_click
                  function="Advanced.AgentPilot"
@@ -2679,7 +2321,6 @@
             </menu_item_call>
             <menu_item_check
              label="Loop Playback"
-             layout="topleft"
              name="Loop Playback">
                 <menu_item_check.on_check
                  function="Advanced.CheckAgentPilotLoop"
@@ -2689,7 +2330,6 @@
             </menu_item_check>
             <menu_item_call
              label="Start Record"
-             layout="topleft"
              name="Start Record">
                 <menu_item_call.on_click
                  function="Advanced.AgentPilot"
@@ -2697,7 +2337,6 @@
             </menu_item_call>
             <menu_item_call
              label="Stop Record"
-             layout="topleft"
              name="Stop Record">
                 <menu_item_call.on_click
                  function="Advanced.AgentPilot"
@@ -2708,12 +2347,10 @@
         <menu
          create_jump_keys="true"
          label="World"
-         layout="topleft"
          name="World"
          tear_off="true">
             <menu_item_check
              label="Sim Sun Override"
-             layout="topleft"
              name="Sim Sun Override">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2724,7 +2361,6 @@
             </menu_item_check>
             <menu_item_check
              label="Cheesy Beacon"
-             layout="topleft"
              name="Cheesy Beacon">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2735,7 +2371,6 @@
             </menu_item_check>
             <menu_item_check
              label="Fixed Weather"
-             layout="topleft"
              name="Fixed Weather">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2746,7 +2381,6 @@
             </menu_item_check>
             <menu_item_call
              label="Dump Region Object Cache"
-             layout="topleft"
              name="Dump Region Object Cache">
                 <menu_item_call.on_click
                  function="Advanced.DumpRegionObjectCache" />
@@ -2755,12 +2389,10 @@
         <menu
          create_jump_keys="true"
          label="UI"
-         layout="topleft"
          name="UI"
          tear_off="true">
          <!--   <menu_item_check
              label="New Bottom Bar"
-             layout="topleft"
              name="New Bottom Bar">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2771,7 +2403,6 @@
             </menu_item_check>-->
             <menu_item_call
              label="Web Browser Test"
-             layout="topleft"
              name="Web Browser Test">
                 <menu_item_call.on_click
                  function="Advanced.WebBrowserTest"
@@ -2779,14 +2410,12 @@
             </menu_item_call>
             <menu_item_call
              label="Dump SelectMgr"
-             layout="topleft"
              name="Dump SelectMgr">
                 <menu_item_call.on_click
                  function="Advanced.DumpSelectMgr" />
             </menu_item_call>
             <menu_item_call
              label="Dump Inventory"
-             layout="topleft"
              name="Dump Inventory">
                 <menu_item_call.on_click
                  function="Advanced.DumpInventory" />
@@ -2799,14 +2428,12 @@
             </menu_item_call>
             <menu_item_call
              label="Dump Focus Holder"
-             layout="topleft"
              name="Dump Focus Holder">
                 <menu_item_call.on_click
                  function="Advanced.DumpFocusHolder" />
             </menu_item_call>
             <menu_item_call
              label="Print Selected Object Info"
-             layout="topleft"
              name="Print Selected Object Info"
              shortcut="control|shift|P">
                 <menu_item_call.on_click
@@ -2814,7 +2441,6 @@
             </menu_item_call>
             <menu_item_call
              label="Print Agent Info"
-             layout="topleft"
              name="Print Agent Info"
              shortcut="shift|P">
                 <menu_item_call.on_click
@@ -2822,7 +2448,6 @@
             </menu_item_call>
             <menu_item_call
              label="Memory Stats"
-             layout="topleft"
              name="Memory Stats"
              shortcut="control|alt|shift|M">
                 <menu_item_call.on_click
@@ -2830,7 +2455,6 @@
             </menu_item_call>
             <menu_item_check
              label="Double-ClickAuto-Pilot"
-             layout="topleft"
              name="Double-ClickAuto-Pilot">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2843,7 +2467,6 @@
             <menu_item_separator />
             <menu_item_check
              label="Debug SelectMgr"
-             layout="topleft"
              name="Debug SelectMgr">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -2854,7 +2477,6 @@
             </menu_item_check>
             <menu_item_check
              label="Debug Clicks"
-             layout="topleft"
              name="Debug Clicks">
                 <menu_item_check.on_check
                  function="Advanced.CheckDebugClicks"
@@ -2865,7 +2487,6 @@
             </menu_item_check>
             <menu_item_check
              label="Debug Views"
-             layout="topleft"
              name="Debug Views">
                 <menu_item_check.on_check
                  function="Advanced.CheckDebugViews" />
@@ -2874,7 +2495,6 @@
             </menu_item_check>
             <menu_item_check
              label="Debug Name Tooltips"
-             layout="topleft"
              name="Debug Name Tooltips">
                 <menu_item_check.on_check
                  function="Advanced.CheckXUINameTooltips"
@@ -2884,7 +2504,6 @@
             </menu_item_check>
             <menu_item_check
              label="Debug Mouse Events"
-             layout="topleft"
              name="Debug Mouse Events">
                 <menu_item_check.on_check
                  function="Advanced.CheckDebugMouseEvents"
@@ -2894,7 +2513,6 @@
             </menu_item_check>
             <menu_item_check
              label="Debug Keys"
-             layout="topleft"
              name="Debug Keys">
                 <menu_item_check.on_check
                  function="Advanced.CheckDebugKeys"
@@ -2904,7 +2522,6 @@
             </menu_item_check>
             <menu_item_check
              label="Debug WindowProc"
-             layout="topleft"
              name="Debug WindowProc">
                 <menu_item_check.on_check
                  function="Advanced.CheckDebugWindowProc"
@@ -2921,14 +2538,12 @@
          tear_off="true">
             <menu_item_call
                label="Reload Color Settings"
-               layout="topleft"
                name="Reload Color Settings">
               <menu_item_call.on_click
                function="Advanced.ReloadColorSettings" />
             </menu_item_call>
             <menu_item_call
              label="Show Font Test"
-             layout="topleft"
              name="Show Font Test">
                 <menu_item_call.on_click
                  function="Floater.Show"
@@ -2936,21 +2551,18 @@
             </menu_item_call>
             <menu_item_call
              label="Load from XML"
-             layout="topleft"
              name="Load from XML">
                 <menu_item_call.on_click
                  function="Advanced.LoadUIFromXML" />
             </menu_item_call>
             <menu_item_call
              label="Save to XML"
-             layout="topleft"
              name="Save to XML">
                 <menu_item_call.on_click
                  function="Advanced.SaveUIToXML" />
             </menu_item_call>
             <menu_item_check
              label="Show XUI Names"
-             layout="topleft"
              name="Show XUI Names">
                 <menu_item_check.on_check
                  function="Advanced.CheckXUINames"
@@ -2960,7 +2572,6 @@
             </menu_item_check>
           <menu_item_call
            label="Send Test IMs"
-           layout="topleft"
            name="Send Test IMs">
             <menu_item_call.on_click
              function="Advanced.SendTestIMs" />
@@ -2969,18 +2580,15 @@
         <menu
          create_jump_keys="true"
          label="Avatar"
-         layout="topleft"
          name="Character"
          tear_off="true">
             <menu
              create_jump_keys="true"
              label="Grab Baked Texture"
-             layout="topleft"
              name="Grab Baked Texture"
              tear_off="true">
                 <menu_item_call
                  label="Iris"
-                 layout="topleft"
                  name="Iris">
                     <menu_item_call.on_click
                      function="Advanced.GrabBakedTexture"
@@ -2991,7 +2599,6 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Head"
-                 layout="topleft"
                  name="Head">
                     <menu_item_call.on_click
                      function="Advanced.GrabBakedTexture"
@@ -3002,7 +2609,6 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Upper Body"
-                 layout="topleft"
                  name="Upper Body">
                     <menu_item_call.on_click
                      function="Advanced.GrabBakedTexture"
@@ -3013,7 +2619,6 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Lower Body"
-                 layout="topleft"
                  name="Lower Body">
                     <menu_item_call.on_click
                      function="Advanced.GrabBakedTexture"
@@ -3024,7 +2629,6 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Skirt"
-                 layout="topleft"
                  name="Skirt">
                     <menu_item_call.on_click
                      function="Advanced.GrabBakedTexture"
@@ -3037,19 +2641,16 @@
             <menu
              create_jump_keys="true"
              label="Character Tests"
-             layout="topleft"
              name="Character Tests"
              tear_off="true">
                 <menu_item_call
                  label="Appearance To XML"
-                 layout="topleft"
                  name="Appearance To XML">
                     <menu_item_call.on_click
                      function="Advanced.AppearanceToXML" />
                 </menu_item_call>
                 <menu_item_call
                  label="Toggle Character Geometry"
-                 layout="topleft"
                  name="Toggle Character Geometry">
                     <menu_item_call.on_click
                      function="Advanced.ToggleCharacterGeometry" />
@@ -3058,28 +2659,24 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Test Male"
-                 layout="topleft"
                  name="Test Male">
                     <menu_item_call.on_click
                      function="Advanced.TestMale" />
                 </menu_item_call>
                 <menu_item_call
                  label="Test Female"
-                 layout="topleft"
                  name="Test Female">
                     <menu_item_call.on_click
                      function="Advanced.TestFemale" />
                 </menu_item_call>
                 <menu_item_call
                  label="Toggle PG"
-                 layout="topleft"
                  name="Toggle PG">
                     <menu_item_call.on_click
                      function="Advanced.TogglePG" />
                 </menu_item_call>
                 <menu_item_check
                  label="Allow Select Avatar"
-                 layout="topleft"
                  name="Allow Select Avatar">
                     <menu_item_check.on_check
                      function="CheckControl"
@@ -3091,14 +2688,12 @@
             </menu>
             <menu_item_call
              label="Force Params to Default"
-             layout="topleft"
              name="Force Params to Default">
                 <menu_item_call.on_click
                  function="Advanced.ForceParamsToDefault" />
             </menu_item_call>
             <menu_item_check
              label="Animation Info"
-             layout="topleft"
              name="Animation Info">
                 <menu_item_check.on_check
                  function="Advanced.CheckAnimationInfo"
@@ -3109,7 +2704,6 @@
             </menu_item_check>
             <menu_item_check
              label="Slow Motion Animations"
-             layout="topleft"
              name="Slow Motion Animations">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -3120,7 +2714,6 @@
             </menu_item_check>
             <menu_item_check
              label="Show Look At"
-             layout="topleft"
              name="Show Look At">
                 <menu_item_check.on_check
                  function="Advanced.CheckShowLookAt"
@@ -3130,7 +2723,6 @@
             </menu_item_check>
             <menu_item_check
              label="Show Point At"
-             layout="topleft"
              name="Show Point At">
                 <menu_item_check.on_check
                  function="Advanced.CheckShowPointAt"
@@ -3140,7 +2732,6 @@
             </menu_item_check>
             <menu_item_check
              label="Debug Joint Updates"
-             layout="topleft"
              name="Debug Joint Updates">
                 <menu_item_check.on_check
                  function="Advanced.CheckDebugJointUpdates"
@@ -3150,7 +2741,6 @@
             </menu_item_check>
             <menu_item_check
              label="Disable LOD"
-             layout="topleft"
              name="Disable LOD">
                 <menu_item_check.on_check
                  function="Advanced.CheckDisableLOD"
@@ -3160,7 +2750,6 @@
             </menu_item_check>
             <menu_item_check
              label="Debug Character Vis"
-             layout="topleft"
              name="Debug Character Vis">
                 <menu_item_check.on_check
                  function="Advanced.CheckDebugCharacterVis"
@@ -3170,7 +2759,6 @@
             </menu_item_check>
             <menu_item_check
              label="Show Collision Skeleton"
-             layout="topleft"
              name="Show Collision Skeleton">
                 <menu_item_check.on_check
                  function="Advanced.CheckInfoDisplay"
@@ -3181,7 +2769,6 @@
             </menu_item_check>
             <menu_item_check
              label="Display Agent Target"
-             layout="topleft"
              name="Display Agent Target">
                 <menu_item_check.on_check
                  function="Advanced.CheckInfoDisplay"
@@ -3193,7 +2780,6 @@
 <!-- Appears not to exist anymore
             <menu_item_check
              label="Debug Rotation"
-             layout="topleft"
              name="Debug Rotation">
                 <menu_item_check.on_check
                  function="CheckControl"
@@ -3205,14 +2791,12 @@
 -->
             <menu_item_call
              label="Dump Attachments"
-             layout="topleft"
              name="Dump Attachments">
                 <menu_item_call.on_click
                  function="Advanced.DumpAttachments" />
             </menu_item_call>
             <menu_item_call
              label="Debug Avatar Textures"
-             layout="topleft"
              name="Debug Avatar Textures"
              shortcut="control|alt|shift|A">
                 <menu_item_call.on_click
@@ -3220,18 +2804,15 @@
             </menu_item_call>
             <menu_item_call
              label="Dump Local Textures"
-             layout="topleft"
              name="Dump Local Textures"
              shortcut="alt|shift|M">
                 <menu_item_call.on_click
                  function="Advanced.DumpAvatarLocalTextures" />
             </menu_item_call>
         </menu>
-        <menu_item_separator
-         layout="topleft" />
+        <menu_item_separator/>
         <menu_item_check
          label="HTTP Textures"
-         layout="topleft"
          name="HTTP Textures">
             <menu_item_check.on_check
              function="CheckControl"
@@ -3242,14 +2823,12 @@
         </menu_item_check>
         <menu_item_call
          label="Compress Images"
-         layout="topleft"
          name="Compress Images">
             <menu_item_call.on_click
              function="Advanced.CompressImage" />
         </menu_item_call>
         <menu_item_check
          label="Output Debug Minidump"
-         layout="topleft"
          name="Output Debug Minidump">
             <menu_item_check.on_check
              function="CheckControl"
@@ -3260,7 +2839,6 @@
         </menu_item_check>
         <menu_item_check
          label="Console Window on next Run"
-         layout="topleft"
          name="Console Window">
             <menu_item_check.on_check
              function="CheckControl"
@@ -3269,11 +2847,9 @@
              function="ToggleControl"
              parameter="ShowConsoleWindow" />
         </menu_item_check>
-        <menu_item_separator
-         layout="topleft" />
+        <menu_item_separator/>
         <menu_item_check
          label="Show Admin Menu"
-         layout="topleft"
          name="View Admin Options">
             <menu_item_check.on_check
              function="Advanced.CheckViewAdminOptions"
@@ -3283,7 +2859,6 @@
         </menu_item_check>
         <menu_item_call
          label="Request Admin Status"
-         layout="topleft"
          name="Request Admin Options"
          shortcut="control|alt|G">
             <menu_item_call.on_click
@@ -3291,7 +2866,6 @@
         </menu_item_call>
         <menu_item_call
          label="Leave Admin Status"
-         layout="topleft"
          name="Leave Admin Options"
          shortcut="control|alt|shift|G">
             <menu_item_call.on_click
@@ -3301,18 +2875,15 @@
     <menu
      create_jump_keys="true"
      label="Admin"
-     layout="topleft"
      name="Admin"
      tear_off="true"
      visible="false">
         <menu
          create_jump_keys="true"
          label="Object"
-         layout="topleft"
          tear_off="true">
             <menu_item_call
              label="Take Copy"
-             layout="topleft"
              name="Take Copy"
              shortcut="control|alt|shift|O">
                 <menu_item_call.on_click
@@ -3322,7 +2893,6 @@
             </menu_item_call>
             <menu_item_call
              label="Force Owner To Me"
-             layout="topleft"
              name="Force Owner To Me">
                 <menu_item_call.on_click
                  function="Admin.HandleObjectOwnerSelf" />
@@ -3331,7 +2901,6 @@
             </menu_item_call>
             <menu_item_call
              label="Force Owner Permissive"
-             layout="topleft"
              name="Force Owner Permissive">
                 <menu_item_call.on_click
                  function="Admin.HandleObjectOwnerPermissive" />
@@ -3340,7 +2909,6 @@
             </menu_item_call>
             <menu_item_call
              label="Delete"
-             layout="topleft"
              name="Delete"
              shortcut="control|alt|shift|Del">
                 <menu_item_call.on_click
@@ -3350,7 +2918,6 @@
             </menu_item_call>
             <menu_item_call
              label="Lock"
-             layout="topleft"
              name="Lock"
              shortcut="control|alt|shift|L">
                 <menu_item_call.on_click
@@ -3360,7 +2927,6 @@
             </menu_item_call>
             <menu_item_call
              label="Get Assets IDs"
-             layout="topleft"
              name="Get Assets IDs"
              shortcut="control|alt|shift|I">
                 <menu_item_call.on_click
@@ -3372,12 +2938,10 @@
         <menu
          create_jump_keys="true"
          label="Parcel"
-         layout="topleft"
          name="Parcel"
          tear_off="true">
             <menu_item_call
              label="Force Owner To Me"
-             layout="topleft"
              name="Owner To Me">
                 <menu_item_call.on_click
                  function="Admin.HandleForceParcelOwnerToMe" />
@@ -3386,7 +2950,6 @@
             </menu_item_call>
             <menu_item_call
              label="Set to Linden Content"
-             layout="topleft"
              name="Set to Linden Content"
              shortcut="control|alt|shift|C">
                 <menu_item_call.on_click
@@ -3396,7 +2959,6 @@
             </menu_item_call>
             <menu_item_call
              label="Claim Public Land"
-             layout="topleft"
              name="Claim Public Land">
                 <menu_item_call.on_click
                  function="Admin.HandleClaimPublicLand" />
@@ -3407,12 +2969,10 @@
         <menu
          create_jump_keys="true"
          label="Region"
-         layout="topleft"
          name="Region"
          tear_off="true">
             <menu_item_call
              label="Dump Temp Asset Data"
-             layout="topleft"
              name="Dump Temp Asset Data">
                 <menu_item_call.on_click
                  function="Admin.HandleRegionDumpTempAssetData" />
@@ -3421,7 +2981,6 @@
             </menu_item_call>
             <menu_item_call
              label="Save Region State"
-             layout="topleft"
              name="Save Region State">
                 <menu_item_call.on_click
                  function="Admin.OnSaveState" />
@@ -3431,7 +2990,6 @@
         </menu>
         <menu_item_call
          label="God Tools"
-         layout="topleft"
          name="God Tools">
             <menu_item_call.on_click
              function="Floater.Show"
@@ -3443,34 +3001,29 @@
     <menu
      create_jump_keys="true"
      label="Admin"
-     layout="topleft"
      name="Deprecated"
      tear_off="true"
      visible="false">
         <menu
          create_jump_keys="true"
          label="Attach Object"
-         layout="topleft"
          mouse_opaque="false"
          name="Attach Object"
          tear_off="true" />
         <menu
          create_jump_keys="true"
          label="Detach Object"
-         layout="topleft"
          mouse_opaque="false"
          name="Detach Object"
          tear_off="true" />
         <menu
          create_jump_keys="true"
          label="Take Off Clothing"
-         layout="topleft"
          mouse_opaque="false"
          name="Take Off Clothing"
          tear_off="true">
             <menu_item_call
              label="Shirt"
-             layout="topleft"
              name="Shirt">
                 <menu_item_call.on_click
                  function="Edit.TakeOff"
@@ -3481,7 +3034,6 @@
             </menu_item_call>
             <menu_item_call
              label="Pants"
-             layout="topleft"
              name="Pants">
                 <menu_item_call.on_click
                  function="Edit.TakeOff"
@@ -3492,7 +3044,6 @@
             </menu_item_call>
             <menu_item_call
              label="Shoes"
-             layout="topleft"
              name="Shoes">
                 <menu_item_call.on_click
                  function="Edit.TakeOff"
@@ -3503,7 +3054,6 @@
             </menu_item_call>
             <menu_item_call
              label="Socks"
-             layout="topleft"
              name="Socks">
                 <menu_item_call.on_click
                  function="Edit.TakeOff"
@@ -3514,7 +3064,6 @@
             </menu_item_call>
             <menu_item_call
              label="Jacket"
-             layout="topleft"
              name="Jacket">
                 <menu_item_call.on_click
                  function="Edit.TakeOff"
@@ -3525,7 +3074,6 @@
             </menu_item_call>
             <menu_item_call
              label="Gloves"
-             layout="topleft"
              name="Gloves">
                 <menu_item_call.on_click
                  function="Edit.TakeOff"
@@ -3536,7 +3084,6 @@
             </menu_item_call>
             <menu_item_call
              label="Undershirt"
-             layout="topleft"
              name="Menu Undershirt">
                 <menu_item_call.on_click
                  function="Edit.TakeOff"
@@ -3547,7 +3094,6 @@
             </menu_item_call>
             <menu_item_call
              label="Underpants"
-             layout="topleft"
              name="Menu Underpants">
                 <menu_item_call.on_click
                  function="Edit.TakeOff"
@@ -3558,7 +3104,6 @@
             </menu_item_call>
             <menu_item_call
              label="Skirt"
-             layout="topleft"
              name="Skirt">
                 <menu_item_call.on_click
                  function="Edit.TakeOff"
@@ -3569,7 +3114,6 @@
             </menu_item_call>
             <menu_item_call
              label="Alpha"
-             layout="topleft"
              name="Alpha">
                 <menu_item_call.on_click
                  function="Edit.TakeOff"
@@ -3580,7 +3124,6 @@
             </menu_item_call>
             <menu_item_call
              label="Tattoo"
-             layout="topleft"
              name="Tattoo">
                 <menu_item_call.on_click
                  function="Edit.TakeOff"
@@ -3591,7 +3134,6 @@
             </menu_item_call>
             <menu_item_call
              label="All Clothes"
-             layout="topleft"
              name="All Clothes">
                 <menu_item_call.on_click
                  function="Edit.TakeOff"
@@ -3601,12 +3143,10 @@
         <menu
          create_jump_keys="true"
          label="Help"
-         layout="topleft"
          name="Help"
          tear_off="true">
             <menu_item_call
              label="Official Linden Blog"
-             layout="topleft"
              name="Official Linden Blog">
                 <menu_item_call.on_click
                  function="PromptShowURL"
@@ -3615,7 +3155,6 @@
             </menu_item_call>
             <menu_item_call
              label="Scripting Portal"
-             layout="topleft"
              name="Scripting Portal">
                 <menu_item_call.on_click
                  function="PromptShowURL"
@@ -3625,12 +3164,10 @@
             <menu
              create_jump_keys="true"
              label="Bug Reporting"
-             layout="topleft"
              name="Bug Reporting"
              tear_off="true">
                 <menu_item_call
                  label="Public Issue Tracker"
-                 layout="topleft"
                  name="Public Issue Tracker">
                     <menu_item_call.on_click
                      function="PromptShowURL"
@@ -3639,18 +3176,15 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Public Issue Tracker Help"
-                 layout="topleft"
                  name="Publc Issue Tracker Help">
                     <menu_item_call.on_click
                      function="PromptShowURL"
                      name="PublicIssueTrackerHelp_url"
                      parameter="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker" />
                 </menu_item_call>
-                <menu_item_separator
-                 layout="topleft" />
+                <menu_item_separator/>
                 <menu_item_call
                  label="Bug Reporting 101"
-                 layout="topleft"
                  name="Bug Reporing 101">
                     <menu_item_call.on_click
                      function="PromptShowURL"
@@ -3659,7 +3193,6 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Security Issues"
-                 layout="topleft"
                  name="Security Issues">
                     <menu_item_call.on_click
                      function="PromptShowURL"
@@ -3668,7 +3201,6 @@
                 </menu_item_call>
                 <menu_item_call
                  label="QA Wiki"
-                 layout="topleft"
                  name="QA Wiki">
                     <menu_item_call.on_click
                      function="PromptShowURL"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index c39a91281ef55715956bd3af7253d6831e118a46..e8ba8c683df497d40fa8fe6da605586382c7faf0 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -2023,6 +2023,28 @@ Would you be my friend?
     </form>
   </notification>
 
+  <notification
+ icon="alertmodal.tga"
+ label="Save Outfit"
+ name="SaveOutfitAs"
+ type="alertmodal">
+    Save what I'm wearing as a new Outfit:
+    <form name="form">
+      <input name="message" type="text">
+        [DESC] (new)
+      </input>
+      <button
+       default="true"
+       index="0"
+       name="Offer"
+       text="OK"/>
+      <button
+       index="1"
+       name="Cancel"
+       text="Cancel"/>
+    </form>
+  </notification>
+
   <notification
    icon="alertmodal.tga"
    name="RemoveFromFriends"
@@ -3110,6 +3132,18 @@ Teleport to [PICK]?
      yestext="Teleport"/>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="TeleportToHistoryEntry"
+   type="alertmodal">
+Teleport to [HISTORY_ENTRY]?
+    <usetemplate
+     ignoretext="Confirm that I want to teleport to a history location"
+     name="okcancelignore"
+     notext="Cancel"
+     yestext="Teleport"/>
+  </notification>
+
   <notification
    icon="alert.tga"
    label="Message everyone in your Estate"
@@ -4269,6 +4303,13 @@ The string [STRING_NAME] is missing from strings.xml
    type="notifytip">
 [MESSAGE]
   </notification>
+  
+  <notification
+   icon="notifytip.tga"
+   name="IMSystemMessageTip"
+   type="notifytip">
+[MESSAGE]
+  </notification>
 
   <notification
    icon="notifytip.tga"
@@ -5103,7 +5144,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you th
    icon="notify.tga"
    name="TeleportOffered"
    type="offer">
-[NAME] has offered to teleport you to their location:
+[NAME_SLURL] has offered to teleport you to their location:
 
 [MESSAGE]
     <form name="form">
@@ -5148,7 +5189,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you th
    icon="notify.tga"
    name="OfferFriendship"
    type="offer">
-[NAME] is offering friendship.
+[NAME_SLURL] is offering friendship.
 
 [MESSAGE]
 
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index 58c5c11e51c919121ac0204bbaad0889717cae30..c34a367c32fad52c0268f88ab303d7c174492046 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -263,7 +263,7 @@
          top="0"
          name="chiclet_list_panel"
          width="189"
-         min_width="60"
+         min_width="95"
          user_resize="false"
          auto_resize="true">
 <!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
@@ -274,7 +274,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
              height="24"
              layout="topleft"
              left="1"
-             min_width="60"
+             min_width="95"
              name="chiclet_list"
              top="7"
              chiclet_padding="4"
@@ -330,7 +330,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
          min_width="4"
          name="DUMMY"
          top="0"
-         width="5"/>
+         width="4"/>
         <layout_panel
          auto_resize="false"
          follows="right"
@@ -339,8 +339,8 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
          min_height="28"
          top="0"
          name="im_well_panel"
-         width="35"
-         min_width="35"
+         width="37"
+         min_width="37"
          user_resize="false">
             <chiclet_im_well
              max_displayed_count="99"
@@ -388,22 +388,10 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
          layout="topleft"
          min_height="28"
          top="0"
-         left_pad="3"
          name="notification_well_panel"
-         width="40"
-         min_width="40"
+         width="37"
+         min_width="37"
          user_resize="false">
-         <icon
-         auto_resize="false"
-         color="0 0 0 0"
-         follows="left|right"
-         height="10"
-         image_name="spacer24.tga"
-         layout="topleft"
-         left="0"
-         min_width="4"
-         top="0"
-         width="5" />
             <chiclet_notification
              flash_period="0.25"
              follows="right"
@@ -434,17 +422,6 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
                    function="Button.SetDockableFloaterToggle"
                    parameter="notification_well_window" />
               </button>
-         <icon
-         auto_resize="false"
-         color="0 0 0 0"
-         follows="left|right"
-         height="10"
-         image_name="spacer24.tga"
-         layout="topleft"
-         left="0"
-         min_width="4"
-         top="0"
-         width="5" />
 	    </chiclet_notification>
         </layout_panel>
     </layout_stack>
diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml
index 250dadd3900881a25b27b77b27c5750c53afa289..9124ad528d904b6242a52e62ae8eeb5d3d2299ed 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml
@@ -21,6 +21,7 @@
          top="3"
          width="18" />
     <text
+      allow_html="false"
       allow_scroll="false"
       v_pad = "7"
       read_only = "true"
diff --git a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml
index 996e28c57521f4c9be9eace2533b442a3bab7621..af3315ebfe1db4ca57e1d0663d924dfdea0f79e4 100644
--- a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml
@@ -65,6 +65,7 @@
      left="103"
      name="description"
      textbox.max_length="1024"
+     textbox.label="More"
      textbox.show_context_menu="false" 
      top_pad="0"
      width="178"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml
index 40647e1b81cffa942c34d4549bcf2406b4d2b10e..1d0c0a02b0ebc1afa4ae0c934fa4493a2d6dd97b 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml
@@ -1,33 +1,38 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_alpha_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
    <panel
-      border="true"
-      follows="left|top|right" 
-      height="180" 
+      border="false"
+      bg_alpha_color="DkGray2"
+      bg_opaque_color="DkGray2"
+      background_visible="true"
+      background_opaque="true"
+      follows="top|left|right"
+      height="400" 
       left="10" 
       layout="topleft" 
       name="avatar_alpha_color_panel"
       top="0"
-      width="293" >
+      width="313" >
        <texture_picker
         can_apply_immediately="true"
         default_image_name="Default"
         follows="left|top"
-        height="80"
+        height="100"
         label="Lower Alpha"
         layout="topleft"
-        left="10"
+        left="30"
         name="Lower Alpha"
         tool_tip="Click to choose a picture"
         top="10"
-        width="64" />
+        width="94" />
        <check_box
         control_name="LowerAlphaTextureInvisible"
         follows="left"
@@ -41,14 +46,14 @@
         can_apply_immediately="true"
         default_image_name="Default"
         follows="left|top"
-        height="80"
+        height="100"
         label="Upper Alpha"
         layout="topleft"
-        left_pad="10"
+        left_pad="20"
         name="Upper Alpha"
         tool_tip="Click to choose a picture"
         top="10"
-        width="64" />
+        width="94" />
        <check_box
         control_name="UpperAlphaTextureInvisible"
         follows="left"
@@ -62,14 +67,14 @@
         can_apply_immediately="true"
         default_image_name="Default"
         follows="left|top"
-        height="80"
+        height="100"
         label="Head Alpha"
         layout="topleft"
-        left_pad="10"
+        left="30"
         name="Head Alpha"
         tool_tip="Click to choose a picture"
-        top="10"
-        width="64" />
+        top="120"
+        width="94" />
        <check_box
         control_name="HeadAlphaTextureInvisible"
         follows="left"
@@ -83,14 +88,14 @@
         can_apply_immediately="true"
         default_image_name="Default"
         follows="left|top"
-        height="80"
+        height="100"
         label="Eye Alpha"
         layout="topleft"
-        left="10"
+        left_pad="20"
         name="Eye Alpha"
         tool_tip="Click to choose a picture"
-        top="100"
-        width="64" />
+        top="120"
+        width="94" />
        <check_box
         control_name="Eye AlphaTextureInvisible"
         follows="left"
@@ -104,14 +109,14 @@
         can_apply_immediately="true"
         default_image_name="Default"
         follows="left|top"
-        height="80"
+        height="100"
         label="Hair Alpha"
         layout="topleft"
-        left_pad="10"
+        left="30"
         name="Hair Alpha"
         tool_tip="Click to choose a picture"
-        top_delta="-4"
-        width="64" />
+        top="230"
+        width="94" />
        <check_box
         control_name="HairAlphaTextureInvisible"
         follows="left"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_eyes.xml b/indra/newview/skins/default/xui/en/panel_edit_eyes.xml
index c514054c41c08458d9d7f1ef50a7fd81f18f80ad..f11ef43c76f4d289d3b5dd3e508a4964f0e85e41 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_eyes.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_eyes.xml
@@ -1,21 +1,26 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_eyes_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
 	 <panel
-	  border="true"
-	  follows="left|top|right" 
-	  height="100" 
+	  border="false"
+      bg_alpha_color="DkGray2"
+      bg_opaque_color="DkGray2"
+      background_visible="true"
+      background_opaque="true"
+	  follows="top|left|right"
+	  height="90" 
 	  left="10" 
 	  layout="topleft" 
 	  name="avatar_eye_color_panel"
 	  top="0"
-	  width="293" >
+	  width="313" >
        <texture_picker
              can_apply_immediately="true"
              default_image_name="Default"
@@ -23,31 +28,49 @@
              height="80"
              label="Iris"
              layout="topleft"
-             left="8"
+             left="10"
              name="Iris"
              tool_tip="Click to choose a picture"
-             top_pad="10"
+             top="10"
              width="64" />
 	 </panel>
-	 <accordion
-		follows="left|top|right|bottom"
-		height ="340"
-		left="10"
-		name="wearable_accordion"
-		top_pad="10"
-		width="303">
-		<accordion_tab
+     <panel
+         border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+         follows="all"
+         height="300"
+         layout="topleft"
+         left="10"
+         name="accordion_panel"
+         top_pad="10"
+         width="313">
+     <accordion
+        follows="all"
+        height ="300"
+        layout="topleft"
+        left="0"
+        name="wearable_accordion"
+        single_expansion="true"
+        top="0"
+        width="313">
+        <accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="eyes_main_tab"
 			title="Eyes">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="eyes_main_param_list"
 				top="0"
 				width="303" />
 		</accordion_tab>
 	</accordion>
+    </panel>
 </panel>
 
diff --git a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
index 7aca40e8d9deb3ae0344ba5dd3cc6d79e94c073b..7d8eed50854ac4846da928247abda8fa6afeca4d 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
@@ -1,21 +1,26 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_gloves_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
 	 <panel
-	  border="true"
-	  follows="left|top|right" 
-	  height="100" 
+	  border="false"
+      bg_alpha_color="DkGray2"
+      bg_opaque_color="DkGray2"
+      background_visible="true"
+      background_opaque="true"
+	  follows="top|left|right"
+	  height="90" 
 	  left="10" 
 	  layout="topleft" 
 	  name="avatar_gloves_color_panel"
 	  top="0"
-	  width="293" >
+	  width="313" >
        <texture_picker
         can_apply_immediately="true"
         default_image_name="Default"
@@ -34,31 +39,49 @@
         height="80"
         label="Color/Tint"
         layout="topleft"
-        left_pad="10"
+        left_pad="20"
         name="Color/Tint"
         tool_tip="Click to open color picker"
         top="10"
         width="64" />
 	 </panel>
-	 <accordion
-		follows="left|top|right|bottom"
-		height ="340"
-		left="10"
-		name="wearable_accordion"
-		top_pad="10"
-		width="303">
+	 <panel
+         border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+         follows="all"
+         height="300"
+         layout="topleft"
+         left="10"
+         name="accordion_panel"
+         top_pad="10"
+         width="313">
+     <accordion
+        follows="all"
+        height ="300"
+        layout="topleft"
+        left="0"
+        name="wearable_accordion"
+        single_expansion="true"
+        top="0"
+        width="313">
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="gloves_main_tab"
 			title="Gloves">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="gloves_main_param_list"
 				top="0"
 				width="303" />
 		</accordion_tab>
 	</accordion>
+    </panel>
 </panel>
 
diff --git a/indra/newview/skins/default/xui/en/panel_edit_hair.xml b/indra/newview/skins/default/xui/en/panel_edit_hair.xml
index e7d1c0530168539d0f68d5e2eb18f1d28c7a6bbb..cd81aa2c4fdc2bd520bb00adc375d605dd77d952 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_hair.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_hair.xml
@@ -1,21 +1,26 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_hair_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
 	 <panel
-	  border="true"
-	  follows="left|top|right" 
-	  height="100" 
+	  border="false"
+      bg_alpha_color="DkGray2"
+      bg_opaque_color="DkGray2"
+      background_visible="true"
+      background_opaque="true"
+	  follows="top|left|right"
+	  height="90" 
 	  left="10" 
 	  layout="topleft" 
 	  name="avatar_hair_color_panel"
 	  top="0"
-	  width="293" > 
+	  width="313" > 
             <texture_picker
              can_apply_immediately="true"
              default_image_name="Default"
@@ -23,26 +28,43 @@
              height="80"
              label="Texture"
              layout="topleft"
-             left="8"
+             left="10"
              name="Texture"
              tool_tip="Click to choose a picture"
              top="10"
              width="64" />
 	 </panel>
+   <panel
+         border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+         follows="all"
+         height="300"
+         layout="topleft"
+         left="10"
+         name="accordion_panel"
+         top_pad="10"
+         width="313">
    <accordion 
-		follows="left|top|right|bottom"
-		height ="340"
-		left="10"
-		name="wearable_accordion"
-		top_pad="10"
-		width="303">
+        follows="all"
+        height ="300"
+        layout="topleft"
+        left="0"
+        name="wearable_accordion"
+        single_expansion="true"
+        top="0"
+        width="313">
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="hair_color_tab"
 			title="Color">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="hair_color_param_list"
 				top="0"
@@ -50,11 +72,13 @@
 		</accordion_tab>
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="hair_style_tab"
 			title="Style">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="hair_style_param_list"
 				top="0"
@@ -62,11 +86,13 @@
 		</accordion_tab>
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="hair_eyebrows_tab"
 			title="Eyebrows">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="hair_eyebrows_param_list"
 				top="0"
@@ -74,16 +100,19 @@
 		</accordion_tab>
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="hair_facial_tab"
 			title="Facial">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="hair_facial_param_list"
 				top="0"
 				width="303" />
 		</accordion_tab>
 	</accordion>
+    </panel>
 </panel>
 
diff --git a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
index ed92b1e0f85018863e8f42cc8fece31331374aec..ba038659376d2a5e97e1a6d5a30eb73bce71c5d0 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
@@ -1,21 +1,26 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_jacket_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
 	 <panel
-	  border="true"
-	  follows="left|top|right" 
-	  height="100" 
+	  border="false"
+      bg_alpha_color="DkGray2"
+      bg_opaque_color="DkGray2"
+      background_visible="true"
+      background_opaque="true"
+	  follows="top|left|right"
+	  height="90" 
 	  left="10" 
 	  layout="topleft" 
 	  name="avatar_jacket_color_panel"
 	  top="0"
-	  width="293" >
+	  width="313" >
        <texture_picker
         can_apply_immediately="true"
         default_image_name="Default"
@@ -23,11 +28,11 @@
         height="80"
         label="Upper Fabric"
         layout="topleft"
-        left="10"
+        left="25"
         name="Upper Fabric"
         tool_tip="Click to choose a picture"
         top="10"
-        width="64" />
+        width="74" />
        <texture_picker
         can_apply_immediately="true"
         default_image_name="Default"
@@ -35,42 +40,60 @@
         height="80"
         label="Lower Fabric"
         layout="topleft"
-        left_pad="10"
+        left_pad="20"
         name="Lower Fabric"
         tool_tip="Click to choose a picture"
         top="10"
-        width="64" />
+        width="74" />
        <color_swatch
         can_apply_immediately="true"
         follows="left|top"
         height="80"
         label="Color/Tint"
         layout="topleft"
-        left_pad="10"
+        left_pad="20"
         name="Color/Tint"
         tool_tip="Click to open color picker"
         top="10"
-        width="64" />
+        width="74" />
 	 </panel>
-	 <accordion
-		follows="left|top|right|bottom"
-		height ="340"
-		left="10"
-		name="wearable_accordion"
-		top_pad="10"
-		width="303">
+	 <panel
+         border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+         follows="all"
+         height="300"
+         layout="topleft"
+         left="10"
+         name="accordion_panel"
+         top_pad="10"
+         width="313">
+     <accordion
+        follows="all"
+        height ="300"
+        layout="topleft"
+        left="0"
+        name="wearable_accordion"
+        single_expansion="true"
+        top="0"
+        width="313">
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="jacket_main_tab"
 			title="Jacket">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="jacket_main_param_list"
 				top="0"
 				width="303" />
 		</accordion_tab>
 	</accordion>
+    </panel>
 </panel>
 
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pants.xml b/indra/newview/skins/default/xui/en/panel_edit_pants.xml
index b764188e04dae3ef4bebfe18ea7233c442b8077b..5b02d1f96866d580e85ba5b88b4e00846a9548c2 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pants.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pants.xml
@@ -1,21 +1,26 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_pants_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
 	 <panel
-	  border="true"
-	  follows="left|top|right" 
-	  height="100" 
+	  border="false"
+      bg_alpha_color="DkGray2"
+      bg_opaque_color="DkGray2"
+      background_visible="true"
+      background_opaque="true"
+	  follows="top|left|right"
+	  height="90" 
 	  left="10" 
 	  layout="topleft" 
 	  name="avatar_pants_color_panel"
 	  top="0"
-	  width="293" >
+	  width="313" >
        <texture_picker
         can_apply_immediately="true"
         default_image_name="Default"
@@ -34,31 +39,49 @@
         height="80"
         label="Color/Tint"
         layout="topleft"
-        left_pad="10"
+        left_pad="20"
         name="Color/Tint"
         tool_tip="Click to open color picker"
         top="10"
         width="64" />
 	 </panel>
-	 <accordion
-		follows="left|top|right|bottom"
-		height ="340"
-		left="10"
-		name="wearable_accordion"
-		top_pad="10"
-		width="303">
+     <panel
+         border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+         follows="all"
+         height="300"
+         layout="topleft"
+         left="10"
+         name="accordion_panel"
+         top_pad="10"
+         width="313">
+   <accordion 
+        follows="all"
+        height ="300"
+        layout="topleft"
+        left="0"
+        name="wearable_accordion"
+        single_expansion="true"
+        top="0"
+        width="313">
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="pants_main_tab"
 			title="Pants">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="pants_main_param_list"
 				top="0"
 				width="303" />
 		</accordion_tab>
 	</accordion>
+    </panel>
 </panel>
 
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shape.xml b/indra/newview/skins/default/xui/en/panel_edit_shape.xml
index 45c4b92338252e39826b08afee770f11cb5a822a..e1c574001a79344a10065872d2217cbec27dfdc7 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_shape.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_shape.xml
@@ -1,38 +1,43 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_shape_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
 	 <panel
-		 border="true"
-		 follows="top|left"
+		 border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+		 follows="top|left|right"
 		 height="50"
 		 left="10"
 		 layout="topleft"
 		 name="avatar_sex_panel"
-		 top="10"
-		 width="293" >
+		 top="0"
+		 width="313" >
    			<text 
 			 follows="top|left"
 			 height="16"
 			 layout="topleft"
 			 left="10"
 			 name="gender_text"
-			 width="303">
+			 width="313">
 				Gender:
 			</text>
 		   <radio_group
-			 follows="all"
+			 follows="left|top|right"
 			 left="10"
-             height="34"
+             height="28"
              layout="topleft"
              name="sex_radio"
 			 top_pad="3"
-			 width="200" >
+			 width="303" >
                 <radio_item
 					follows="all"
                  height="16"
@@ -51,21 +56,41 @@
                  width="82" />
             </radio_group>
 	 </panel>
+     <panel
+         border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+         follows="all"
+         height="345"
+         label="Shirt"
+         layout="topleft"
+		 left="10"
+         name="accordion_panel"
+		 top_pad="10"
+         width="313">
 	 <accordion
-		follows="left|top|right|bottom"
-		height ="330"
-		left="10"
+        layout="topleft"
+		follows="all"
+		height ="345"
+		left="0"
 		name="wearable_accordion"
-		top_pad="10"
-		width="303">
+		top="0"
+        single_expansion="true"
+        fit_parent="false"
+		width="313">
 		<accordion_tab
 			layout="topleft"
 			min_height="150"
 			name="shape_body_tab"
+            fit_panel="false"
 			title="Body">
 			<scrolling_panel_list
+                layout="topleft" 
 				follows="all"
 				left="0"
+                height="300"
 				name="shape_body_param_list"
 				top="0"
 				width="303" />
@@ -73,11 +98,13 @@
 		<accordion_tab
 			layout="topleft"
 			min_height="150"
+            fit_panel="false"
 			name="shape_head_tab"
 			title="Head">
-			<scrolling_panel_list
+           <scrolling_panel_list
+                layout="topleft"
 				follows="all"
-				left="0"
+				left="10"
 				name="shape_head_param_list"
 				top="0"
 				width="303" />
@@ -85,9 +112,11 @@
 		<accordion_tab
 			layout="topleft"
 			min_height="150"
+            fit_panel="false"
 			name="shape_eyes_tab"
 			title="Eyes">
-			<scrolling_panel_list
+           <scrolling_panel_list
+                layout="topleft"
 				follows="all"
 				left="0"
 				name="shape_eyes_param_list"
@@ -97,9 +126,11 @@
 		<accordion_tab
 			layout="topleft"
 			min_height="150"
+            fit_panel="false"
 			name="shape_ears_tab"
 			title="Ears">
-			<scrolling_panel_list
+           <scrolling_panel_list
+                layout="topleft"
 				follows="all"
 				left="0"
 				name="shape_ears_param_list"
@@ -110,8 +141,10 @@
 			layout="topleft"
 			min_height="150"
 			name="shape_nose_tab"
+            fit_panel="false"
 			title="Nose">
-			<scrolling_panel_list
+           <scrolling_panel_list
+                layout="topleft"
 				follows="all"
 				left="0"
 				name="shape_nose_param_list"
@@ -122,8 +155,10 @@
 			layout="topleft"
 			min_height="150"
 			name="shape_mouth_tab"
+            fit_panel="false"
 			title="Mouth">
-			<scrolling_panel_list
+           <scrolling_panel_list
+                layout="topleft"
 				follows="all"
 				left="0"
 				name="shape_mouth_param_list"
@@ -134,8 +169,10 @@
 			layout="topleft"
 			min_height="150"
 			name="shape_chin_tab"
+            fit_panel="false"
 			title="Chin">
-			<scrolling_panel_list
+           <scrolling_panel_list
+                layout="topleft"
 				follows="all"
 				left="0"
 				name="shape_chin_param_list"
@@ -146,8 +183,10 @@
 			layout="topleft"
 			min_height="150"
 			name="shape_torso_tab"
+            fit_panel="false"
 			title="Torso">
-			<scrolling_panel_list
+           <scrolling_panel_list
+                layout="topleft"
 				follows="all"
 				left="0"
 				name="shape_torso_param_list"
@@ -158,8 +197,10 @@
 			layout="topleft"
 			min_height="150"
 			name="shape_legs_tab"
+            fit_panel="false"
 			title="Legs">
-			<scrolling_panel_list
+           <scrolling_panel_list
+                layout="topleft"
 				follows="all"
 				left="0"
 				name="shape_legs_param_list"
@@ -167,5 +208,6 @@
 				width="303" />
 		</accordion_tab>
 	</accordion>
+    </panel>
 </panel>
 
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
index 4b7235545f2451bef897485ba9a9ba314a31d5c3..7da8de4c0bfd110df9b13d1b84748e80d1443084 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
@@ -1,21 +1,26 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_shirt_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
 	 <panel
-	  border="true"
-	  follows="left|top|right" 
-	  height="100" 
+	  border="false"
+      bg_alpha_color="DkGray2"
+      bg_opaque_color="DkGray2"
+      background_visible="true"
+      background_opaque="true"
+	  follows="top|left|right"
+	  height="90" 
 	  left="10" 
 	  layout="topleft" 
 	  name="avatar_shirt_color_panel"
 	  top="0"
-	  width="293" >
+	  width="313" >
        <texture_picker
         can_apply_immediately="true"
         default_image_name="Default"
@@ -34,31 +39,49 @@
         height="80"
         label="Color/Tint"
         layout="topleft"
-        left_pad="10"
+        left_pad="20"
         name="Color/Tint"
         tool_tip="Click to open color picker"
         top="10"
         width="64" />
 	 </panel>
+     <panel
+         border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+         follows="all"
+         height="300"
+         layout="topleft"
+         left="10"
+         name="accordion_panel"
+         top_pad="10"
+         width="313">
 	 <accordion
-		follows="left|top|right|bottom"
-		height ="340"
-		left="10"
+		follows="all"
+		height ="300"
+        layout="topleft"
+		left="0"
 		name="wearable_accordion"
-		top_pad="10"
-		width="303">
+        single_expansion="true"
+		top="0"
+		width="313">
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="shirt_main_tab"
 			title="Shirt">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="shirt_main_param_list"
 				top="0"
 				width="303" />
 		</accordion_tab>
 	</accordion>
+    </panel>
 </panel>
 
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
index e886afa0102946f12cc86717e3eab2185c3d8771..84fe26f7f6366589c79ae62e936ab1774b92eecf 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
@@ -1,21 +1,26 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_shoes_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
    <panel
-      border="true"
-      follows="left|top|right" 
-      height="100" 
+      border="false"
+      bg_alpha_color="DkGray2"
+      bg_opaque_color="DkGray2"
+      background_visible="true"
+      background_opaque="true"
+      follows="top|left|right"
+      height="90" 
       left="10" 
       layout="topleft" 
       name="avatar_shoes_color_panel"
       top="0"
-      width="293" >
+      width="313" >
        <texture_picker
         can_apply_immediately="true"
         default_image_name="Default"
@@ -34,31 +39,49 @@
         height="80"
         label="Color/Tint"
         layout="topleft"
-        left_pad="10"
+        left_pad="20"
         name="Color/Tint"
         tool_tip="Click to open color picker"
         top="10"
         width="64" />
 	 </panel>
-	 <accordion
-		follows="left|top|right|bottom"
-		height ="340"
-		left="10"
-		name="wearable_accordion"
-		top_pad="10"
-		width="303">
+     <panel
+         border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+         follows="all"
+         height="300"
+         layout="topleft"
+         left="10"
+         name="accordion_panel"
+         top_pad="10"
+         width="313">
+   <accordion 
+        follows="all"
+        height ="300"
+        layout="topleft"
+        left="0"
+        name="wearable_accordion"
+        single_expansion="true"
+        top="0"
+        width="313">
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="shoes_main_tab"
 			title="Shoes">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="shoes_main_param_list"
 				top="0"
 				width="303" />
 		</accordion_tab>
 	</accordion>
+    </panel>
 </panel>
 
diff --git a/indra/newview/skins/default/xui/en/panel_edit_skin.xml b/indra/newview/skins/default/xui/en/panel_edit_skin.xml
index 918606b54cad0e982518d529be113975c6fce8f7..b5c8c954730fe56562d340f15139fd01768fc0e0 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_skin.xml
@@ -1,21 +1,26 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_skin_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
 	 <panel
-	  border="true"
-	  follows="left|top|right" 
-	  height="100" 
+	  border="false"
+      bg_alpha_color="DkGray2"
+      bg_opaque_color="DkGray2"
+      background_visible="true"
+      background_opaque="true"
+	  follows="top|left|right"
+	  height="90" 
 	  left="10" 
 	  layout="topleft" 
 	  name="avatar_skin_color_panel"
 	  top="0"
-	  width="293" >
+	  width="313" >
        <texture_picker
         allow_no_texture="true"
         can_apply_immediately="true"
@@ -24,7 +29,7 @@
         height="80"
         label="Head Tattoos"
         layout="topleft"
-        left="10"
+        left="25"
         name="Head Tattoos"
         tool_tip="Click to choose a picture"
         top="10"
@@ -37,7 +42,7 @@
         height="80"
         label="Upper Tattoos"
         layout="topleft"
-        left_pad="10"
+        left_pad="20"
         name="Upper Tattoos"
         tool_tip="Click to choose a picture"
         top="10"
@@ -50,26 +55,43 @@
         height="80"
         label="Lower Tattoos"
         layout="topleft"
-        left_pad="10"
+        left_pad="20"
         name="Lower Tattoos"
         tool_tip="Click to choose a picture"
         top="10"
         width="74" />
 	 </panel>
+     <panel
+         border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+         follows="all"
+         height="300"
+         layout="topleft"
+         left="10"
+         name="accordion_panel"
+         top_pad="10"
+         width="313">    
 	 <accordion
-		follows="left|top|right|bottom"
-		height ="340"
-		left="10"
+        layout="topleft"
+		follows="all"
+		height ="300"
+		left="0"
 		name="wearable_accordion"
-		top_pad="10"
-		width="303">
+		top="0"
+        single_expansion="true"
+		width="313">
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="skin_color_tab"
 			title="Skin Color">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="skin_color_param_list"
 				top="0"
@@ -77,11 +99,13 @@
 		</accordion_tab>
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="skin_face_tab"
 			title="Face Detail">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="skin_face_param_list"
 				top="0"
@@ -89,11 +113,13 @@
 		</accordion_tab>
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="skin_makeup_tab"
 			title="Makeup">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="skin_makeup_param_list"
 				top="0"
@@ -101,16 +127,19 @@
 		</accordion_tab>
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="skin_body_tab"
 			title="Body Detail">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="skin_body_param_list"
 				top="0"
 				width="303" />
 		</accordion_tab>
 	</accordion>
+    </panel>
 </panel>
 
diff --git a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
index 6cccab18430b5e0c979ffbbd2683c528dfcf413a..16f6950bd522ad294801be1f5e8a5cec85ac5163 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
@@ -1,21 +1,26 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_skirt_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
    <panel
-      border="true"
-      follows="left|top|right" 
-      height="100" 
+      border="false"
+      bg_alpha_color="DkGray2"
+      bg_opaque_color="DkGray2"
+      background_visible="true"
+      background_opaque="true"
+      follows="top|left|right"
+      height="90" 
       left="10" 
       layout="topleft" 
       name="avatar_skirt_color_panel"
       top="0"
-      width="293" >
+      width="313" >
        <texture_picker
         can_apply_immediately="true"
         default_image_name="Default"
@@ -34,31 +39,49 @@
         height="80"
         label="Color/Tint"
         layout="topleft"
-        left_pad="10"
+        left_pad="20"
         name="Color/Tint"
         tool_tip="Click to open color picker"
         top="10"
         width="64" />
 	 </panel>
-	 <accordion
-		follows="left|top|right|bottom"
-		height ="340"
-		left="10"
-		name="wearable_accordion"
-		top_pad="10"
-		width="303">
+	 <panel
+         border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+         follows="all"
+         height="300"
+         layout="topleft"
+         left="10"
+         name="accordion_panel"
+         top_pad="10"
+         width="313">
+     <accordion
+        follows="all"
+        height ="300"
+        layout="topleft"
+        left="0"
+        name="wearable_accordion"
+        single_expansion="true"
+        top="0"
+        width="313">
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="skirt_main_tab"
 			title="Skirt">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="skirt_main_param_list"
 				top="0"
 				width="303" />
 		</accordion_tab>
 	</accordion>
+    </panel>
 </panel>
 
diff --git a/indra/newview/skins/default/xui/en/panel_edit_socks.xml b/indra/newview/skins/default/xui/en/panel_edit_socks.xml
index fc7de007146dc81109bc5659bd8a090a8a76209a..e4f916703b0c81f7cddd31e0cbad7d6aaba304c2 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_socks.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_socks.xml
@@ -1,21 +1,26 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_socks_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
 	 <panel
-	  border="true"
-	  follows="left|top|right" 
-	  height="100" 
+	  border="false"
+      bg_alpha_color="DkGray2"
+      bg_opaque_color="DkGray2"
+      background_visible="true"
+      background_opaque="true"
+	  follows="top|left|right"
+	  height="90" 
 	  left="10" 
 	  layout="topleft" 
 	  name="avatar_socks_color_panel"
 	  top="0"
-	  width="293" >
+	  width="313" >
        <texture_picker
         can_apply_immediately="true"
         default_image_name="Default"
@@ -34,31 +39,49 @@
         height="80"
         label="Color/Tint"
         layout="topleft"
-        left_pad="10"
+        left_pad="20"
         name="Color/Tint"
         tool_tip="Click to open color picker"
         top="10"
         width="64" />
 	 </panel>
-	 <accordion
-		follows="left|top|right|bottom"
-		height ="340"
-		left="10"
-		name="wearable_accordion"
-		top_pad="10"
-		width="303">
+	 <panel
+         border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+         follows="all"
+         height="300"
+         layout="topleft"
+         left="10"
+         name="accordion_panel"
+         top_pad="10"
+         width="313">
+     <accordion
+        follows="all"
+        height ="300"
+        layout="topleft"
+        left="0"
+        name="wearable_accordion"
+        single_expansion="true"
+        top="0"
+        width="313">
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="socks_main_tab"
 			title="Socks">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="socks_main_param_list"
 				top="0"
 				width="303" />
 		</accordion_tab>
 	</accordion>
+    </panel>
 </panel>
 
diff --git a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
index b214cd3de07cd8420415263d305e4b0d00f3b986..ed990eb0956468d35d1a9b91b809a032b401802d 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
@@ -1,57 +1,62 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_tattoo_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
 	 <panel
-	  border="true"
-	  follows="left|top|right" 
-	  height="100" 
+	  border="false"
+      bg_alpha_color="DkGray2"
+      bg_opaque_color="DkGray2"
+      background_visible="true"
+      background_opaque="true"
+	  follows="top|left|right"
+	  height="400" 
 	  left="10" 
 	  layout="topleft" 
 	  name="avatar_tattoo_color_panel"
 	  top="0"
-	  width="293" >
+	  width="313" >
        <texture_picker
         can_apply_immediately="true"
         default_image_name="Default"
         follows="left|top"
-        height="80"
+        height="100"
         label="Head Tattoo"
         layout="topleft"
-        left="10"
+        left="30"
         name="Head Tattoo"
         tool_tip="Click to choose a picture"
         top="10"
-        width="64" />
+        width="94" />
        <texture_picker
         can_apply_immediately="true"
         default_image_name="Default"
         follows="left|top"
-        height="80"
+        height="100"
         label="Upper Tattoo"
         layout="topleft"
-        left_pad="10"
+        left_pad="30"
         name="Upper Tattoo"
         tool_tip="Click to choose a picture"
         top="10"
-        width="64" />
+        width="94" />
        <texture_picker
         can_apply_immediately="true"
         default_image_name="Default"
         follows="left|top"
-        height="80"
+        height="100"
         label="Lower Tattoo"
         layout="topleft"
-        left_pad="10"
+        left="30"
         name="Lower Tattoo"
         tool_tip="Click to choose a picture"
-        top="10"
-        width="64" />
+        top_pad="10"
+        width="94" />
 	 </panel>
 </panel>
 
diff --git a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
index 03e0bb70ef93d10a42c360885104d910e565be4e..d43497c943d6825abc1dd3202422c0c1c6f0af4f 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
@@ -1,21 +1,26 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_underpants_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
    <panel
-      border="true"
-      follows="left|top|right" 
-      height="100" 
+      border="false"
+      bg_alpha_color="DkGray2"
+      bg_opaque_color="DkGray2"
+      background_visible="true"
+      background_opaque="true"
+      follows="top|left|right"
+      height="90" 
       left="10" 
       layout="topleft" 
       name="avatar_underpants_color_panel"
       top="0"
-      width="293" >
+      width="313" >
             <texture_picker
              can_apply_immediately="true"
              default_image_name="Default"
@@ -34,31 +39,49 @@
              height="80"
              label="Color/Tint"
              layout="topleft"
-             left_pad="10"
+             left_pad="20"
              name="Color/Tint"
              tool_tip="Click to open color picker"
              top="10"
              width="64" />
 	 </panel>
-	 <accordion
-		follows="left|top|right|bottom"
-		height ="340"
-		left="10"
-		name="wearable_accordion"
-		top_pad="10"
-		width="303">
+	 <panel
+         border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+         follows="all"
+         height="300"
+         layout="topleft"
+         left="10"
+         name="accordion_panel"
+         top_pad="10"
+         width="313">
+     <accordion
+        follows="all"
+        height ="300"
+        layout="topleft"
+        left="0"
+        name="wearable_accordion"
+        single_expansion="true"
+        top="0"
+        width="313">
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="underpants_main_tab"
 			title="Underpants">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="underpants_main_param_list"
 				top="0"
 				width="303" />
 		</accordion_tab>
 	</accordion>
+    </panel>
 </panel>
 
diff --git a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
index 20c56142fbb20d300960808a836e53e35b7482d8..45c6ef4526dafd4fc61cdd17b091242c5f353a26 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
@@ -1,21 +1,26 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel
+     background_visible="true"
 	 follows="all"
 	 height="400"
 	 layout="topleft"
-	 left="10"
+	 left="0"
 	 name="edit_undershirt_panel"
 	 top_pad="10"
-	 width="313" >
+	 width="333" >
 	 <panel
-	  border="true"
-	  follows="left|top|right" 
-	  height="100" 
+	  border="false"
+      bg_alpha_color="DkGray2"
+      bg_opaque_color="DkGray2"
+      background_visible="true"
+      background_opaque="true"
+	  follows="top|left|right"
+	  height="90" 
 	  left="10" 
 	  layout="topleft" 
 	  name="avatar_undershirt_color_panel"
 	  top="0"
-	  width="293" >
+	  width="313" >
        <texture_picker
         can_apply_immediately="true"
         default_image_name="Default"
@@ -34,31 +39,49 @@
         height="80"
         label="Color/Tint"
         layout="topleft"
-        left_pad="10"
+        left_pad="20"
         name="Color/Tint"
         tool_tip="Click to open Color Picker"
         top="10"
         width="64" />
        </panel>
-	 <accordion
-		follows="left|top|right|bottom"
-		height ="340"
-		left="10"
-		name="wearable_accordion"
-		top_pad="10"
-		width="303">
+	 <panel
+         border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+         follows="all"
+         height="300"
+         layout="topleft"
+         left="10"
+         name="accordion_panel"
+         top_pad="10"
+         width="313">
+     <accordion
+        follows="all"
+        height ="300"
+        layout="topleft"
+        left="0"
+        name="wearable_accordion"
+        single_expansion="true"
+        top="0"
+        width="313">
 		<accordion_tab
 			layout="topleft"
+            fit_panel="false"
 			min_height="150"
 			name="undershirt_main_tab"
 			title="Undershirt">
 			<scrolling_panel_list
 				follows="all"
+                layout="topleft"
 				left="0"
 				name="undershirt_main_param_list"
 				top="0"
 				width="303" />
 		</accordion_tab>
 	</accordion>
+    </panel>
 </panel>
 
diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
index f76a56bda49e369534b1901a329ec5477b77c62c..dc2f085356d36ecbfbee841c93261e152a179389 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
@@ -150,8 +150,12 @@ left="0"
 	 value="Editing Shape"
 	 width="270" />
      <panel
-         border="true"
-         follows="top|left"
+         border="false"
+         bg_alpha_color="DkGray2"
+         bg_opaque_color="DkGray2"
+         background_visible="true"
+         background_opaque="true"
+         follows="top|left|right"
          height="60"
          label="Shirt"
          layout="topleft"
@@ -160,7 +164,7 @@ left="0"
 		 top_pad="10"
          width="313">
 		 <text
-		 follows="top|left"
+		 follows="top|left|right"
 		 height="16"
 		 layout="topleft"
 		 left="10"
@@ -335,30 +339,76 @@ left="0"
 			 visible="false"
 			 width="333" />
 	 </panel>
+     <panel
+        follows="left|right|bottom"
+        height="38"
+        label="gear_buttom_panel"
+        layout="bottom|left|right"
+        left="0"
+        bottom="25"
+        name="gear_buttom_panel"
+        width="333">
+        <button
+            follows="bottom|left"
+            tool_tip="Options"
+            height="18"
+            image_disabled="OptionsMenu_Disabled"
+            image_selected="OptionsMenu_Press"
+            image_unselected="OptionsMenu_Off"
+            layout="topleft"
+            left="10"
+            name="friends_viewsort_btn"
+            top="10"
+            width="18" />
+        <button
+            follows="bottom|left"
+            height="18"
+            image_selected="AddItem_Press"
+            image_unselected="AddItem_Off"
+            image_disabled="AddItem_Disabled"
+            layout="topleft"
+            left_pad="10"
+            name="add_btn"
+            tool_tip="TODO"
+            width="18" />
+        <button
+            follows="bottom|left"
+            height="18"
+            image_selected="TrashItem_Press"
+            image_unselected="TrashItem_Off"
+            image_disabled="TrashItem_Disabled"
+            layout="topleft"
+            left_pad="10"
+            right="-10"
+            name="del_btn"
+            tool_tip="TODO"
+            top_delta="0"
+            width="18" />
+     </panel>
 	 <panel
-		 follows="all"
+		 follows="bottom|left|right"
 		 height="25"
 		 layout="bottom|left|right"
 		 left="0"
 		 name="button_panel"
-		 top_pad="10"
+		 bottom="5"
 		 width="333" >
 		 <button
 			 follows="bottomleft"
 			 layout="topleft"
 			 height="23"
 			 label="Save As"
-			 left="10"
+			 left="8"
 			 name="save_as_button"
 			 top="0"
-			 width="100" />
+			 width="153" />
 		 <button
 			 follows="bottomleft"
 			 layout="topleft"
 			 height="23"
 			 label="Revert"
-			 left_pad="10"
+			 left_pad="7"
 			 name="revert_button"
-			 width="100" />
+			 width="153" />
 	 </panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml
index f913c58cc97d3365da13dc9ba3f2671a442c1e3d..9341d433e8992a6dbd6785a1025a2f3fc9197ff5 100644
--- a/indra/newview/skins/default/xui/en/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_general.xml
@@ -241,14 +241,17 @@ Hover your mouse over the options for more help.
          tool_tip="Sets whether your group contains information rated as Moderate"
          top_pad="4"
          width="190">
+			<combo_item name="select_mature" value="Select">
+			- Select Mature -
+			</combo_item>
             <combo_box.item
-             label="General Content"
-             name="pg"
-             value="Not Mature" />
-             <combo_box.item
              label="Moderate Content"
              name="mature"
              value="Mature" />
+            <combo_box.item
+             label="General Content"
+             name="pg"
+             value="Not Mature" />
         </combo_box>
         <check_box
          follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
index 701a14e1c52260e9248c8d50bfc03f3cca5da688..789d69bc687f0ef6233cc075dd974126bdb499ed 100644
--- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
@@ -98,6 +98,7 @@ background_visible="true"
      left="0"
      top="0"
      single_expansion="true"
+     fit_parent="true"
      follows="all"
      layout="topleft"
      name="groups_accordion">
diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml
index 731b3c119c16c40ff8d4398c43d153d8208ae7b2..479629f6eac23cdc59fff9ae1f4447d38fa76a5a 100644
--- a/indra/newview/skins/default/xui/en/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml
@@ -131,6 +131,7 @@ Maximum 200 per group daily
             Subject:
         </text>
         <line_editor
+         follows="left|top|right"
          border_style="line"
          border_thickness="1"
          height="16"
@@ -153,6 +154,7 @@ Maximum 200 per group daily
             Message:
         </text>
         <text_editor
+         follows="left|top|right"
          height="90"
          layout="topleft"
          left_pad="3"
@@ -173,6 +175,7 @@ Maximum 200 per group daily
             Attach:
         </text>
         <line_editor
+         follows="left|top|right"
          enabled="false"
          height="19"
          layout="topleft"
@@ -222,7 +225,7 @@ Maximum 200 per group daily
          label="Send"
          label_selected="Send"
          layout="topleft"
-         right="-10"
+         right="-25"
          top_pad="10"
          name="send_notice"
          width="100" />
diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
index 88566ea03781e6b9d48c2349dba5da6cbda68ff5..29c6a17c31de13a0580f2e3ffb62b05c1c8f603f 100644
--- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
@@ -16,7 +16,7 @@
      border_size="0"
      clip="false"
      follows="all"
-     height="168"
+     height="183"
      layout="topleft"
      left="5"
      name="button_stack"
@@ -150,7 +150,7 @@
             <button
              follows="left|top|right"
              height="23"
-             label="Leave Call"
+             label="End Call"
              name="end_call_btn"
              width="100" />
         </layout_panel>
diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
index befeb182f93776778c8aa9921ee2e3f2c7bba3e2..31ba539c44336e8dd57354ecf744f9d3eac20036 100644
--- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
@@ -133,6 +133,7 @@
              layout="topleft"
              left="10"
              name="description"
+             textbox.label="More"
              top_pad="10"
              value="Du waltz die spritz"
              width="280" />
diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml
index ee8bca6f83635bd70ce773105d14fe0ce262daa5..a7e87f2a1ef9aef877bfb875dc0e5e09eda5ec23 100644
--- a/indra/newview/skins/default/xui/en/panel_landmarks.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml
@@ -3,22 +3,25 @@
    name="Landmarks"
    top="0"
    height="400"
-   layout="topleft" 
+   layout="topleft"
    left="0"
-   width="380"
+   width="313"
    help_topic="panel_landmarks"
    border="false"
    background_visible="true"
-   bg_alpha_color="DkGray2"
+   bg_alpha_color="DkGray"
    follows="all">
     <accordion
+     background_visible="true"
+     bg_alpha_color="DkGray2"
+     bg_opaque_color="DkGray2"
      follows="all"
-     height="360"
+     height="373"
      layout="topleft"
-     left="0"
+     left="3"
      name="landmarks_accordion"
      top="0"
-     width="380">
+     width="307">
         <accordion_tab
          layout="topleft"
          name="tab_favorites"
@@ -33,7 +36,7 @@
              mouse_opaque="true"
              name="favorites_list"
              start_folder="Favorites"
-             width="380"/>
+             width="307"/>
         </accordion_tab>
         <accordion_tab
          layout="topleft"
@@ -49,7 +52,7 @@
              mouse_opaque="true"
              name="landmarks_list"
              start_folder="Landmarks"
-             width="380"/>
+             width="307"/>
         </accordion_tab>
         <accordion_tab
          layout="topleft"
@@ -65,7 +68,7 @@
              mouse_opaque="true"
              name="my_inventory_list"
              start_folder="My Inventory"
-             width="380"/>
+             width="307"/>
           </accordion_tab>
           <accordion_tab
            layout="topleft"
@@ -81,55 +84,64 @@
              mouse_opaque="true"
              name="library_list"
              start_folder="LIBRARY"
-             width="380"/>
+             width="313"/>
         </accordion_tab>
     </accordion>
     <panel
-            bg_opaque_color="DkGray2"
-       bg_alpha_color="DkGray2"
-       background_visible="true"
-       background_opaque="true"
+     background_visible="true"
      bevel_style="none"
      bottom="0"
      follows="left|right|bottom"
-     height="38"
+     height="27"
      layout="bottomleft"
-     left="0"
+     left="3"
      name="bottom_panel"
-     width="380">
+     width="313">
         <button
          follows="bottom|left"
          tool_tip="Show additional options"
-         height="18"
-         image_disabled="OptionsMenu_Disabled"
-         image_selected="OptionsMenu_Press"
-         image_unselected="OptionsMenu_Off"
+         height="25"
+         image_hover_unselected="Toolbar_Left_Over"
+         image_overlay="OptionsMenu_Off"
+         image_selected="Toolbar_Left_Selected"
+         image_unselected="Toolbar_Left_Off"
          layout="topleft"
-         left="10"
+         left="0"
          name="options_gear_btn"
-         top="14"
-         width="18" />
+         top="1"
+         width="31" />
         <button
          follows="bottom|left"
-         height="18"
-         image_selected="AddItem_Press"
-         image_unselected="AddItem_Off"
-         image_disabled="AddItem_Disabled"
+         height="25"
+         image_hover_unselected="Toolbar_Middle_Over"
+         image_overlay="AddItem_Off"
+         image_selected="Toolbar_Middle_Selected"
+         image_unselected="Toolbar_Middle_Off"
          layout="topleft"
-         left_pad="10"
+         left_pad="1"
          name="add_btn"
          tool_tip="Add new landmark"
-         width="18" />
+         width="31" />
+        <icon
+         follows="bottom|left"
+         height="25"
+         image_name="Toolbar_Middle_Off"
+         layout="topleft"
+         left_pad="1"
+         name="dummy_icon"
+         width="209"
+         />
         <dnd_button
-         follows="bottom|right"
-         height="18"
-         image_selected="TrashItem_Press"
-         image_unselected="TrashItem_Off"
+         follows="bottom|left"
+         height="25"
+         image_hover_unselected="Toolbar_Right_Over"
+         image_overlay="TrashItem_Off"
+         image_selected="Toolbar_Right_Selected"
+         image_unselected="Toolbar_Right_Off"
          layout="topleft"
-         right="-8"
+         left_pad="1"
          name="trash_btn"
          tool_tip="Remove selected landmark"
-         top="14"
-         width="18" />
+         width="31" />
     </panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index cc68ec2bdc51d19e1848c22091158e64181de2f5..01adc00e1a16f3a42d1fdc48737597afe8d51333 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -64,7 +64,6 @@ First name:
 </text>
 <line_editor
 follows="left|bottom"
-handle_edit_keys_directly="true"
 height="22"
 label="First"
 left_delta="0"
@@ -85,7 +84,6 @@ top_pad="0"
     Last name:   </text>
 <line_editor
 follows="left|bottom"
-handle_edit_keys_directly="true"
 height="22"
 label="Last"
 max_length="31"
@@ -106,7 +104,6 @@ top="20"
 </text>
 <line_editor
 follows="left|bottom"
-handle_edit_keys_directly="true"
   height="22"
   max_length="16"
 name="password_edit"
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 c7768c6eb624e0ae3d9b0a962a4bc62e32607ba6..1b04d01abf4fa51b06c09520440c18fc53d77bbf 100644
--- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
@@ -9,22 +9,22 @@
  min_width="240"
  name="main inventory panel"
  width="330">
-    <panel.string
-     name="Itemcount">
-    </panel.string>
-    <panel.string
-     name="ItemcountFetching">
-        Fetching [ITEM_COUNT] Items... [FILTER]
-    </panel.string>
-    <panel.string
-     name="ItemcountCompleted">
-        [ITEM_COUNT] Items [FILTER]
-    </panel.string>
-    <panel.string
-     name="ItemcountUnknown">
+  <panel.string
+   name="Itemcount">
+  </panel.string>
+  <panel.string
+   name="ItemcountFetching">
+    Fetching [ITEM_COUNT] Items... [FILTER]
+  </panel.string>
+  <panel.string
+   name="ItemcountCompleted">
+    [ITEM_COUNT] Items [FILTER]
+  </panel.string>
+  <panel.string
+   name="ItemcountUnknown">
 
-    </panel.string>
-	<text
+  </panel.string>
+  <text
 		     type="string"
 		     length="1"
 		     follows="left|top"
@@ -36,478 +36,124 @@
 		     text_color="EmphasisColor"
 		     top_pad="0"
 		     width="300">
-	        Items:
-    </text>
-    <menu_bar
-     bg_visible="false"
-     follows="left|top|right"
-     height="20"
+    Items:
+  </text>
+  <filter_editor
+   text_pad_left="10"
+   follows="left|top|right"
+ height="23"
+   label="Filter Inventory"
+   layout="topleft"
+   left="10"
+   max_length="300"
+   name="inventory search editor"
+   top="3"
+   width="303" />
+  <tab_container
+     bg_alpha_color="DkGray"
+     bg_opaque_color="DkGray"
+     background_visible="true"
+     background_opaque="true"
+     follows="all"
+     halign="center"
+     height="339"
      layout="topleft"
-     left="10"
-     mouse_opaque="false"
-     name="Inventory Menu"
-     top="+10"
-	 visible="true"
-     width="290">
-        <menu
-         height="101"
-         label="File"
-         layout="topleft"
-         left="0"
-         mouse_opaque="false"
-         name="File"
-         tear_off="true"
-         top="-117"
-         width="128">
-            <menu_item_call
-             label="Open"
-             layout="topleft"
-             name="Open">
-                <menu_item_call.on_click
-                 function="Inventory.DoToSelected"
-                 parameter="open" />
-            </menu_item_call>
-            <menu
-             create_jump_keys="true"
-             label="Upload"
-             layout="topleft"
-             name="upload"
-             tear_off="true">
-                <menu_item_call
-                 label="Image (L$[COST])..."
-                 layout="topleft"
-                 name="Upload Image"
-                 shortcut="control|U">
-                    <menu_item_call.on_click
-                     function="File.UploadImage"
-                     parameter="" />
-                    <menu_item_call.on_enable
-                     function="File.EnableUpload" />
-                </menu_item_call>
-                <menu_item_call
-                 label="Sound (L$[COST])..."
-                 layout="topleft"
-                 name="Upload Sound">
-                    <menu_item_call.on_click
-                     function="File.UploadSound"
-                     parameter="" />
-                    <menu_item_call.on_enable
-                     function="File.EnableUpload" />
-                </menu_item_call>
-                <menu_item_call
-                 label="Animation (L$[COST])..."
-                 layout="topleft"
-                 name="Upload Animation">
-                    <menu_item_call.on_click
-                     function="File.UploadAnim"
-                     parameter="" />
-                    <menu_item_call.on_enable
-                     function="File.EnableUpload" />
-                </menu_item_call>
-                <menu_item_call
-                 label="Bulk (L$[COST] per file)..."
-                 layout="topleft"
-                 name="Bulk Upload">
-                    <menu_item_call.on_click
-                     function="File.UploadBulk"
-                     parameter="" />
-                </menu_item_call>
-                <menu_item_separator
-                 layout="topleft" />
-            </menu>
-            <menu_item_separator
-             layout="topleft" />
-            <menu_item_call
-             label="New Window"
-             layout="topleft"
-             name="New Window">
-                <menu_item_call.on_click
-                 function="Inventory.NewWindow" />
-            </menu_item_call>
-            <menu_item_separator
-             layout="topleft"
-             name="separator2" />
-            <menu_item_call
-             label="Show Filters"
-             layout="topleft"
-             name="Show Filters">
-                <menu_item_call.on_click
-                 function="Inventory.ShowFilters" />
-            </menu_item_call>
-            <menu_item_call
-             label="Reset Filters"
-             layout="topleft"
-             name="Reset Current">
-                <menu_item_call.on_click
-                 function="Inventory.ResetFilters" />
-            </menu_item_call>
-            <menu_item_call
-             label="Close All Folders"
-             layout="topleft"
-             name="Close All Folders">
-                <menu_item_call.on_click
-                 function="Inventory.CloseAllFolders" />
-            </menu_item_call>
-            <menu_item_separator
-             layout="topleft"
-             name="separator3" />
-            <menu_item_call
-             label="Empty Trash"
-             layout="topleft"
-             name="Empty Trash">
-                <menu_item_call.on_click
-                 function="Inventory.EmptyTrash" />
-            </menu_item_call>
-            <menu_item_call
-             label="Empty Lost And Found"
-             layout="topleft"
-             name="Empty Lost And Found">
-                <menu_item_call.on_click
-                 function="Inventory.EmptyLostAndFound" />
-            </menu_item_call>
-        </menu>
-        <menu
-         height="121"
-         label="Create"
-         layout="topleft"
-         left="0"
-         mouse_opaque="false"
-         name="Create"
-         tear_off="true"
-         top="-201"
-         width="121">
-            <menu_item_call
-             label="New Folder"
-             layout="topleft"
-             name="New Folder">
-                <menu_item_call.on_click
-                 function="Inventory.DoCreate"
-                 parameter="category" />
-            </menu_item_call>
-            <menu_item_call
-             label="New Script"
-             layout="topleft"
-             name="New Script">
-                <menu_item_call.on_click
-                 function="Inventory.DoCreate"
-                 parameter="lsl" />
-            </menu_item_call>
-            <menu_item_call
-             label="New Notecard"
-             layout="topleft"
-             name="New Note">
-                <menu_item_call.on_click
-                 function="Inventory.DoCreate"
-                 parameter="notecard" />
-            </menu_item_call>
-            <menu_item_call
-             label="New Gesture"
-             layout="topleft"
-             name="New Gesture">
-                <menu_item_call.on_click
-                 function="Inventory.DoCreate"
-                 parameter="gesture" />
-            </menu_item_call>
-            <menu
-             height="175"
-             label="New Clothes"
-             layout="topleft"
-             left_delta="0"
-             mouse_opaque="false"
-             name="New Clothes"
-             top_pad="514"
-             width="125">
-                <menu_item_call
-                 label="New Shirt"
-                 layout="topleft"
-                 name="New Shirt">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="shirt" />
-                </menu_item_call>
-                <menu_item_call
-                 label="New Pants"
-                 layout="topleft"
-                 name="New Pants">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="pants" />
-                </menu_item_call>
-                <menu_item_call
-                 label="New Shoes"
-                 layout="topleft"
-                 name="New Shoes">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="shoes" />
-                </menu_item_call>
-                <menu_item_call
-                 label="New Socks"
-                 layout="topleft"
-                 name="New Socks">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="socks" />
-                </menu_item_call>
-                <menu_item_call
-                 label="New Jacket"
-                 layout="topleft"
-                 name="New Jacket">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="jacket" />
-                </menu_item_call>
-                <menu_item_call
-                 label="New Skirt"
-                 layout="topleft"
-                 name="New Skirt">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="skirt" />
-                </menu_item_call>
-                <menu_item_call
-                 label="New Gloves"
-                 layout="topleft"
-                 name="New Gloves">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="gloves" />
-                </menu_item_call>
-                <menu_item_call
-                 label="New Undershirt"
-                 layout="topleft"
-                 name="New Undershirt">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="undershirt" />
-                </menu_item_call>
-                <menu_item_call
-                 label="New Underpants"
-                 layout="topleft"
-                 name="New Underpants">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="underpants" />
-                </menu_item_call>
-                <menu_item_call
-                 label="New Alpha"
-                 layout="topleft"
-                 name="New Alpha">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="alpha" />
-                </menu_item_call>
-                <menu_item_call
-                 label="New Tattoo"
-                 layout="topleft"
-                 name="New Tattoo">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="tattoo" />
-                </menu_item_call>
-            </menu>
-            <menu
-             height="85"
-             label="New Body Parts"
-             layout="topleft"
-             left_delta="0"
-             mouse_opaque="false"
-             name="New Body Parts"
-             top_pad="514"
-             width="118">
-                <menu_item_call
-                 label="New Shape"
-                 layout="topleft"
-                 name="New Shape">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="shape" />
-                </menu_item_call>
-                <menu_item_call
-                 label="New Skin"
-                 layout="topleft"
-                 name="New Skin">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="skin" />
-                </menu_item_call>
-                <menu_item_call
-                 label="New Hair"
-                 layout="topleft"
-                 name="New Hair">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="hair" />
-                </menu_item_call>
-                <menu_item_call
-                 label="New Eyes"
-                 layout="topleft"
-                 name="New Eyes">
-                    <menu_item_call.on_click
-                     function="Inventory.DoCreate"
-                     parameter="eyes" />
-                </menu_item_call>
-            </menu>
-        </menu>
-        <menu
-         height="49"
-         label="Sort"
-         layout="topleft"
-         left="0"
-         mouse_opaque="false"
-         name="Sort"
-         tear_off="true"
-         top="-113"
-         width="118">
-            <menu_item_check
-             control_name="Inventory.SortByName"
-             label="By Name"
-             layout="topleft"
-             name="By Name">
-                <menu_item_check.on_click
-                 function="Inventory.SetSortBy"
-                 parameter="name" />
-            </menu_item_check>
-            <menu_item_check
-             control_name="Inventory.SortByDate"
-             label="By Date"
-             layout="topleft"
-             name="By Date">
-                <menu_item_check.on_click
-                 function="Inventory.SetSortBy"
-                 parameter="date" />
-            </menu_item_check>
-            <menu_item_separator
-             layout="topleft" />
-            <menu_item_check
-             control_name="Inventory.FoldersAlwaysByName"
-             label="Folders Always By Name"
-             layout="topleft"
-             name="Folders Always By Name">
-                <menu_item_check.on_click
-                 function="Inventory.SetSortBy"
-                 parameter="foldersalwaysbyname" />
-            </menu_item_check>
-            <menu_item_check
-             control_name="Inventory.SystemFoldersToTop"
-             label="System Folders To Top"
-             layout="topleft"
-             name="System Folders To Top">
-                <menu_item_check.on_click
-                 function="Inventory.SetSortBy"
-                 parameter="systemfolderstotop" />
-            </menu_item_check>
-        </menu>
-    </menu_bar>
-    <filter_editor
-     text_pad_left="10"
-     follows="left|top|right"
-	 height="23"
-     label="Filter Inventory"
+     left="7"
+     name="inventory filter tabs"
+     tab_height="30"
+     tab_position="top"
+     tab_min_width="100"
+     top_pad="10"
+     width="312">
+    <inventory_panel
+        bg_opaque_color="DkGray2"
+   bg_alpha_color="DkGray2"
+   background_visible="true"
+   background_opaque="true"
+     border="false"
+     bevel_style="none"
+     follows="all"
+     height="338"
+     label="MY INVENTORY"
+     help_topic="my_inventory_tab"
      layout="topleft"
-     left="10"
-     max_length="300"
-     name="inventory search editor"
-     top="+31"
-     width="303" />
-    <tab_container
-       bg_opaque_color="DkGray2"
-       bg_alpha_color="DkGray2"
-       background_visible="true"
-       background_opaque="true"
-       follows="all"
-       halign="center"
-       height="300"
-       layout="topleft"
-       left="6"
-       name="inventory filter tabs"
-       tab_height="30"
-       tab_position="top"
-       tab_min_width="100"
-       top_pad="10"
-       width="315">
-        <inventory_panel
-            bg_opaque_color="DkGray2"
-       bg_alpha_color="DkGray2"
-       background_visible="true"
-       background_opaque="true"
-	       border="false"
-	       bevel_style="none"
-         follows="all"
-         height="295"
-         label="MY INVENTORY"
-         help_topic="my_inventory_tab"
-         layout="topleft"
-         left="0"
-         name="All Items"
-         sort_order_setting="InventorySortOrder"
-         top="16"
-         width="290" />
-        <inventory_panel
-            bg_opaque_color="DkGray2"
-       bg_alpha_color="DkGray2"
-       background_visible="true"
-       background_opaque="true"
-	       border="false"
-	       bevel_style="none"
-         follows="all"
-         height="295"
-         label="RECENT"
-         help_topic="recent_inventory_tab"
-         layout="topleft"
-         left_delta="0"
-         name="Recent Items"
-         width="290" />
-    </tab_container>
-
-    <panel
-            bg_opaque_color="DkGray2"
-       bg_alpha_color="DkGray2"
-       background_visible="true"
-       background_opaque="true"
+     left="0"
+     name="All Items"
+     sort_order_setting="InventorySortOrder"
+     top="16"
+     width="288" />
+    <inventory_panel
+        bg_opaque_color="DkGray2"
+   bg_alpha_color="DkGray2"
+   background_visible="true"
+   background_opaque="true"
+     border="false"
      bevel_style="none"
-     follows="left|right|bottom"
-     height="38"
+     follows="all"
+     height="338"
+     label="RECENT"
+     help_topic="recent_inventory_tab"
      layout="topleft"
-     top_pad="-1"
-     left="9"
-     name="bottom_panel"
-     width="310">
-        <button
-         follows="bottom|left"
-         tool_tip="Show additional options"
-         height="18"
-         image_disabled="OptionsMenu_Disabled"
-         image_selected="OptionsMenu_Press"
-         image_unselected="OptionsMenu_Off"
-         layout="topleft"
-         left="8"
-         name="options_gear_btn"
-         top="14"
-         width="18" />
-        <button
-         follows="bottom|left"
-         height="18"
-         image_selected="AddItem_Press"
-         image_unselected="AddItem_Off"
-         image_disabled="AddItem_Disabled"
-         layout="topleft"
-         left_pad="10"
-         name="add_btn"
-         tool_tip="Add new item"
-         width="18" />
-        <dnd_button
-         follows="bottom|right"
-         height="18"
-         image_selected="TrashItem_Press"
-         image_unselected="TrashItem_Off"
-         layout="topleft"
-         right="-7"
-         name="trash_btn"
-         tool_tip="Remove selected item"
-         top="14"
-         width="18" />
-    </panel>
+     left_delta="0"
+     name="Recent Items"
+     width="290" />
+  </tab_container>
 
-    
+  <panel
+     background_visible="true"
+   bevel_style="none"
+   follows="left|right|bottom"
+   height="27"
+   layout="topleft"
+   top_pad="-1"
+   left="10"
+   name="bottom_panel"
+   width="310">
+    <button
+     follows="bottom|left"
+     tool_tip="Show additional options"
+     height="25"
+     image_hover_unselected="Toolbar_Left_Over"
+     image_overlay="OptionsMenu_Off"
+     image_selected="Toolbar_Left_Selected"
+     image_unselected="Toolbar_Left_Off"
+     layout="topleft"
+     left="0"
+     name="options_gear_btn"
+     top="1"
+     width="31" />
+    <button
+     follows="bottom|left"
+     height="25"
+     image_hover_unselected="Toolbar_Middle_Over"
+     image_overlay="AddItem_Off"
+     image_selected="Toolbar_Middle_Selected"
+     image_unselected="Toolbar_Middle_Off"
+     layout="topleft"
+     left_pad="1"
+     name="add_btn"
+     tool_tip="Add new item"
+     width="31" />
+    <icon
+     follows="bottom|left"
+     height="25"
+     image_name="Toolbar_Middle_Off"
+     layout="topleft"
+     left_pad="1"
+     name="dummy_icon"
+     width="209"
+       />
+    <dnd_button
+     follows="bottom|left"
+     height="25"
+     image_hover_unselected="Toolbar_Right_Over"
+     image_overlay="TrashItem_Off"
+     image_selected="Toolbar_Right_Selected"
+     image_unselected="Toolbar_Right_Off"
+     left_pad="1"
+     layout="topleft"
+     name="trash_btn"
+     tool_tip="Remove selected item"
+     width="31"/>
+  </panel>
 </panel>
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 4112b65635387cdf3b8e8ed93d466dc2083c5827..5e41d65720946b5aaae0f49e8aaa251699a4cd2c 100644
--- a/indra/newview/skins/default/xui/en/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml
@@ -117,6 +117,8 @@
                layout="topleft"
                left="107"
                textbox.max_length="512"
+               textbox.label="More"
+               textbox.show_context_menu="true"
                name="sl_description_edit"
                top_pad="-3"
                translate="false"
@@ -171,6 +173,8 @@
                layout="topleft"
                left="107"
                textbox.max_length="512"
+               textbox.label="More"
+               textbox.show_context_menu="true"
                name="fl_description_edit"
                top_pad="-3"
                translate="false"
@@ -311,6 +315,8 @@
             name="sl_groups"
           top_pad="0"
             translate="false"
+            textbox.label="More"
+            textbox.show_context_menu="true"
             width="298"
             expanded_bg_visible="true"
             expanded_bg_color="DkGray">
diff --git a/indra/newview/skins/default/xui/en/panel_online_status_toast.xml b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml
index 14cb5fffee2fb43ed9dae9353227b70148427a85..b1a7697e8338b94543432fd71c1e167d93b9da0e 100644
--- a/indra/newview/skins/default/xui/en/panel_online_status_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
  background_visible="false"
- height="152"
+ height="40"
  label="friend_online_status"
  layout="topleft"
  left="0"
  name="friend_online_status"
  top="0"
- width="305">
+ width="220">
     <avatar_icon
 	 follows="top|left"
 	 height="18"
@@ -21,7 +21,7 @@
     <text
      font="SansSerifSmall"
      follows="all"
-     height="137"
+     height="13"
      layout="topleft"
      left_pad="5"
      name="message"
@@ -29,7 +29,7 @@
      top="15"
      use_ellipses="true"
      value=""
-     width="285"
+     width="189"
      word_wrap="true"
      max_length="350" />
 </panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c1800384a38a6e53b402aed89b24a7dc34291718
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<!-- Side tray Outfit Edit panel -->
+<panel
+ background_visible="true"
+ border="false"
+ height="600"
+ follows="all"
+ label="Outfit Edit"
+ layout="topleft"
+ left="0"
+ min_height="350"
+ name="outfit_edit"
+ top="0"
+ width="320">
+    <string
+     name="No Outfit"
+     value="No Outfit"/>
+	
+	<panel.string
+		name="not_available">
+		(N\A)
+	</panel.string>
+	<panel.string
+		name="unknown">
+		(unknown)
+	</panel.string>
+
+
+    <button
+     follows="top|left"
+     height="23"
+     image_overlay="BackArrow_Off"
+     layout="topleft"
+     name="back_btn"
+     left="5"
+     tab_stop="false"
+     top="2"
+     width="23" />
+    <text
+     follows="top|right"
+     font="SansSerifHugeBold"
+     height="26"
+     layout="topleft"
+     left_pad="20"
+     name="title"
+     text_color="LtGray"
+     top="0"
+     value="Edit Outfit"
+     use_ellipses="true"
+     width="275" /> 
+
+<!-- "HEADER WITH ICON, STATUS TEXT AND OUTFIT NAME" -->
+    <panel
+     bevel_style="none"
+     follows="top|left|right"
+     height="45"
+     label="bottom_panel"
+     layout="topleft"
+     left="5"
+     name="header_panel"
+     top_pad="5" 
+     width="300">
+        <icon
+         follows="left|top"
+         height="40"
+         image_name="t-shirt-image"
+         left="2"
+         mouse_opaque="false"
+         name="outfit_icon"
+         top="1"
+         scale_image="true"
+         visible="true"
+         width="35" />
+            <panel
+             bevel_style="none"
+             follows="top|right"
+             height="40"
+             label="bottom_panel"
+             layout="topleft"
+             left_pad="10"
+             name="outfit_name_and_status"
+             top="2"
+             width="200">
+                <text
+                 follows="top|left|right"
+                 font="SansSerif"
+                 height="13"
+                 layout="topleft"
+                 name="status"
+                 text_color="Green"
+                 top="0"
+                 value="Editing..."
+                 use_ellipses="true"
+                 width="275" /> 
+                <text
+                 follows="bottom|left|right"
+                 font="SansSerifHugeBold"
+                 height="26"
+                 layout="topleft"
+                 name="curr_outfit_name"
+                 text_color="LtGray"
+                 top_pad="0"
+                 value="[Current Outfit]"
+                 use_ellipses="true"
+                 width="275" /> 
+            </panel>
+    </panel>
+
+
+<!-- LIST OF WEARABLES (CURRENT OUTFIT/ WEARABLES TO ADD) -->
+    <layout_stack
+     animate="false"
+     default_tab_group="2"
+     follows="all"
+     height="470"
+     width="300"
+     layout="topleft"
+     orientation="vertical"
+     name="im_panels"
+     tab_group="1"
+     top_pad="10"
+     left="5">
+        <layout_panel
+         layout="topleft"
+         follows="left|top|right"
+         height="220"
+         label="IM Control Panel"
+         min_height="100"
+         name="outfit_wearables_panel"
+         width="300"
+         auto_resize="true"
+         user_resize="true">
+
+            <scroll_list
+             width="300"
+             column_padding="0"
+             draw_heading="false"
+             draw_stripes="false"
+             follows="left|top|right|bottom"
+             layout="topleft"
+             name="look_items_list"
+             search_column="1"
+             sort_column="2"
+             left="0"
+             height="193"
+             top="0">
+                <scroll_list.columns
+                 label="Look Item"
+                 name="look_item"
+                 width="285" />
+                <scroll_list.columns
+                 label="Outfit Item Sort"
+                 width="0"
+                 sort_column="look_item_sort"
+                 name="look_item_sort" />
+            </scroll_list>
+
+            <panel
+             background_visible="true"
+             bevel_style="none"
+             follows="bottom|left|right"
+             height="27"
+             label="bottom_panel"
+             layout="topleft"
+             left="0"
+             name="edit_panel"
+             top_pad="0"
+             width="300">
+                <button
+                 follows="bottom|left"
+                 height="25"
+                 image_hover_unselected="Toolbar_Left_Over"
+                 image_overlay="OptionsMenu_Off"
+                 image_selected="Toolbar_Left_Selected"
+                 image_unselected="Toolbar_Left_Off"
+                 layout="topleft"
+                 left="0"
+                 name="gear_menu_btn"
+                 top="1"
+                 width="31" />
+                <button
+                 is_toggle="true"
+                 follows="bottom|left"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="AddItem_Off"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 left_pad="1"
+                 name="add_btn"
+                 top="1"
+                 width="31" />
+                <button
+                 follows="bottom|left"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay=""
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 left_pad="1"
+                 name="new_btn"
+                 top="1"
+                 width="31" />
+                <button
+                 follows="bottom|right"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="TrashItem_Off"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 layout="topleft"
+                 name="trash_btn"
+                 right="-1"
+                 top="1"
+                 width="31" />
+            </panel>
+        </layout_panel>
+
+
+        <layout_panel
+         auto_resize="true"
+         default_tab_group="3"
+         height="250" 
+         min_height="120"
+         name="add_wearables_panel"
+         width="300"
+         tab_group="2"
+         user_resize="true"
+         visible="false">
+
+            <text
+             follows="top|left|right"
+             font="SansSerifBold"
+             height="13"
+             layout="topleft"
+             left="5"
+             name="status"
+             text_color="LtGray"
+             top="5"
+             value="Add Wearables"
+             use_ellipses="true"
+             width="275" />
+
+            <filter_editor
+             background_image="TextField_Search_Off"
+             follows="left|top|right"
+             font="SansSerif"
+             label="Filter"
+             layout="topleft"
+             left="5"
+             width="290"
+             height="20"
+             name="look_item_filter"
+             text_color="black"
+             text_pad_left="25" />
+
+            <inventory_panel
+             allow_multi_select="true"
+             border="false"
+             follows="left|top|right|bottom"
+             height="176"
+             layout="topleft"
+             left="0"
+             mouse_opaque="false"
+             name="inventory_items"
+             top_pad="5"
+             width="300"/>
+
+            <panel
+             background_visible="true"
+             bevel_style="none"
+             follows="left|right|bottom"
+             height="27"
+             label="add_wearables_button_bar"
+             layout="topleft"
+             left="0"
+             name="add_wearables_button_bar"
+             top_pad="0"
+             width="300">
+                <button
+                 follows="bottom|left"
+                 height="25"
+                 image_hover_unselected="Toolbar_Left_Over"
+                 image_overlay="OptionsMenu_Off"
+                 image_selected="Toolbar_Left_Selected"
+                 image_unselected="Toolbar_Left_Off"
+                 layout="topleft"
+                 left="0"
+                 name="wearables_gear_menu_btn"
+                 top="1"
+                 width="31" />
+                <button
+                 follows="bottom|left"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay=""
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 label="F"
+                 layout="topleft"
+                 left_pad="1"
+                 name="folder_view_btn"
+                 top="1"
+                 width="31" />
+                <button
+                 follows="bottom|left"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay=""
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
+                 label="L"
+                 layout="topleft"
+                 left_pad="1"
+                 name="list_view_btn"
+                 top="1"
+                 width="31" />
+            </panel>
+        </layout_panel>
+    </layout_stack>
+
+    <panel
+     follows="left|right|bottom"
+     height="30"
+     layout="topleft"
+     left="5"
+     top_pad="10"
+     name="save_revert_button_bar"
+     width="300">
+        <button
+         follows="bottom|left|right"
+         height="23"
+         label="Save"
+         left="0"
+         layout="topleft"
+         name="save_btn"
+         width="145" />
+        <button
+         follows="bottom|left|right"
+         height="23"
+         left_pad="15"
+         label="Revert"
+         layout="topleft"
+         name="revert_btn"
+         width="145" />
+    </panel>
+</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 cc60b97f92288c6b62c6772127f4a8bdc8ebb3d2..66ed43efecc6cd5c7c3dd3501b4644e611d2fc35 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,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
  <panel name="Outfits"
+ bg_alpha_color="DkGray"
+ bg_opaque_color="DkGray"
+ background_opaque="true"
  background_visible="true"
   follows="all"
  height="570"
@@ -11,15 +14,15 @@
  border="false">
    <tab_container
      follows="all"
-     height="490"
+     height="501"
      layout="topleft"
-     left="6"
+     left="7"
      name="appearance_tabs"
      tab_min_width="140"
      tab_height="30"
      tab_position="top"
      halign="center"
-     width="315">
+     width="312">
          <inventory_panel
            background_visible="true"
            background_opaque="true"
@@ -30,7 +33,7 @@
            border="false"
            left="0"
            top="0"
-           width="314"
+           width="315"
            mouse_opaque="true"
            name="outfitslist_tab"
            start_folder="My Outfits" /> 
@@ -47,53 +50,53 @@
            mouse_opaque="true"
            name="cof_tab"
            start_folder="Current Outfit"
-           width="313" />
+           width="315" />
    </tab_container>
 	 <panel
-            bg_opaque_color="DkGray2"
-       bg_alpha_color="DkGray2"
        background_visible="true"
-       background_opaque="true"
-     follows="left|right|bottom"
-	  height="38"
-	  layout="topleft"
-	  left="9"
-	  visible="true"
-	  top_pad="-1"
-     width="310" />
-	<panel
-	  background_visible="false"
 	  follows="bottom|left"
 	  height="73"
 	  layout="topleft"
 	  left="9"
+	  top_pad="-1"
 	  visible="true"
 	  name="bottom_panel"
-	  top_pad="-38"
 	  width="310">
         <button
          follows="bottom|left"
          tool_tip="Show additional options"
-         height="18"
-         image_disabled="OptionsMenu_Disabled"
-         image_selected="OptionsMenu_Press"
-         image_unselected="OptionsMenu_Off"
+         height="25"
+         image_hover_unselected="Toolbar_Left_Over"
+         image_overlay="OptionsMenu_Off"
+         image_selected="Toolbar_Left_Selected"
+         image_unselected="Toolbar_Left_Off"
          layout="topleft"
-         left="8"
+         left="1"
          name="options_gear_btn"
-         top="14"
-         width="18" />
+         top="1"
+         width="31" />
+     <icon
+      follows="bottom|left"
+      height="25"
+      image_name="Toolbar_Middle_Off"
+      layout="topleft"
+      left_pad="1"
+      name="dummy_icon"
+      width="241"
+        />
+
         <dnd_button
-         follows="bottom|right"
-         height="18"
-         image_selected="TrashItem_Press"
-         image_unselected="TrashItem_Off"
+         follows="bottom|left"
+         height="25"
+         image_hover_unselected="Toolbar_Right_Over"
+          image_overlay="TrashItem_Off"
+          image_selected="Toolbar_Right_Selected"
+          image_unselected="Toolbar_Right_Off"
          layout="topleft"
-         right="-9"
+         left_pad="1"
          name="trash_btn"
          tool_tip="Remove selected item"
-         top="14"
-         width="18" />
+         width="31"/>
 	 <button
 	  follows="bottom|left"
 		height="23" 
@@ -101,7 +104,7 @@
       layout="topleft"
       name="make_outfit_btn"
       tool_tip="Save appearance as an outfit"
-       top="43"
+       top_pad="6"
        left="0"
       width="153" />
      <button
@@ -111,19 +114,18 @@
       layout="topleft"
       name="wear_btn"
       left_pad="3"
-       top="43"
       tool_tip="Wear selected outfit"
       width="152" />
 	 <button
 	  follows="bottom|left"
 		height="23" 
-		label="M" 
+		label="Edit Outfit" 
 		layout="topleft"
         right="-140"
-		name="look_edit_btn"
+		name="edit_current_outfit_btn"
         top="26"
         visible="false" 
-		width="20" />
+		width="50" />
 	 </panel>
        
-</panel>
+</panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 13791a6d323e476ed7a5ab600b85605cf0170f36..6152dd1587f31dd736930f2d7cad03d3129151e8 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -2,13 +2,13 @@
 <!-- Side tray panel -->
 <panel
  follows="all"
+ height="449"
  label="People"
  layout="topleft"
- height="449"
+ left="0"
  min_height="350"
  name="people_panel"
  top="0"
- left="0"
  width="333">
     <string
      name="no_people"
@@ -39,7 +39,6 @@
      name="no_groups_msg"
      value="[secondlife:///app/search/groups Try searching for some groups to join.]" />
     <filter_editor
-     text_pad_left="10"
      follows="left|top|right"
      height="23"
      layout="topleft"
@@ -48,6 +47,7 @@
      max_length="300"
      name="filter_input"
      text_color="Black"
+     text_pad_left="10"
      top="3"
      width="303" />
     <tab_container
@@ -63,10 +63,10 @@
      halign="center"
      width="317">
      	<panel
-            bg_opaque_color="DkGray2"
-       bg_alpha_color="DkGray2"
-       background_visible="true"
-       background_opaque="true"
+         background_opaque="true"
+         background_visible="true"
+         bg_alpha_color="DkGray"
+         bg_opaque_color="DkGray"
          follows="all"
          height="383"
          label="NEARBY"
@@ -78,56 +78,71 @@
          width="313">
             <avatar_list
              allow_select="true"
+       		 bg_alpha_color="DkGray2"
+             bg_opaque_color="DkGray2"
              follows="all"
-             height="345"
+             height="356"
              ignore_online_status="true"
              layout="topleft"
-             left="0"
+             left="3"
              multi_select="true"
              name="avatar_list"
              top="0"
-             width="313" />
+             width="307" />
             <panel
+             background_visible="true"
              follows="left|right|bottom"
-             height="38"
+             height="27"
              label="bottom_panel"
              layout="topleft"
-             left="0"
+             left="3"
              name="bottom_panel"
+             top_pad="0"
              width="313">
              <button
              follows="bottom|left"
-             tool_tip="Options"
-             height="18"
-             image_disabled="OptionsMenu_Disabled"
-             image_selected="OptionsMenu_Press"
-             image_unselected="OptionsMenu_Off"
+             height="25"
+             image_hover_unselected="Toolbar_Left_Over"
+             image_overlay="OptionsMenu_Off"
+             image_selected="Toolbar_Left_Selected"
+             image_unselected="Toolbar_Left_Off"
              layout="topleft"
-             left="10"
+             left="0"
              name="nearby_view_sort_btn"
-             top="10"
-             width="18" />
+             tool_tip="Options"
+             top="1"
+             width="31" />
              <button
                  follows="bottom|left"
-                 height="18"
-                 image_selected="AddItem_Press"
-                 image_unselected="AddItem_Off"
-                 image_disabled="AddItem_Disabled"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+             	 image_overlay="AddItem_Off"
+                 image_selected="Toolbar_Middle_Selected"
+             	 image_unselected="Toolbar_Middle_Off"
                  layout="topleft"
-                 left_pad="10"
+                 left_pad="1"
                  name="add_friend_btn"
                  tool_tip="Add selected Resident to your friends List"
-                 width="18">
+                 width="31">
                <commit_callback
                   function="People.addFriend" />
              </button>
+             <icon
+             follows="bottom|left"
+             height="25"
+             image_name="Toolbar_Right_Off"
+             layout="topleft"
+             left_pad="1"
+             name="dummy_icon"
+             width="241"
+             />
             </panel>
         </panel>
         <panel
-            bg_opaque_color="DkGray2"
-       bg_alpha_color="DkGray2"
-       background_visible="true"
-       background_opaque="true"
+         background_opaque="true"
+         background_visible="true"
+         bg_alpha_color="DkGray"
+         bg_opaque_color="DkGray"
          follows="all"
          height="383"
          label="MY FRIENDS"
@@ -138,13 +153,16 @@
          top="0"
          width="313">
             <accordion
+       		 background_visible="true"
+       		 bg_alpha_color="DkGray2"
+       		 bg_opaque_color="DkGray2"
              follows="all"
-             height="345"
+             height="356"
              layout="topleft"
-             left="0"
+             left="3"
              name="friends_accordion"
              top="0"
-             width="313">
+             width="307">
                 <accordion_tab
                  layout="topleft"
                  height="172"
@@ -160,7 +178,7 @@
                          multi_select="true"
                          name="avatars_online"
                          top="0"
-                         width="313" />
+                         width="307" />
                 </accordion_tab>
                 <accordion_tab
                  layout="topleft"
@@ -176,53 +194,65 @@
                          multi_select="true"
                          name="avatars_all"
                          top="0"
-                         width="313" />
+                         width="307" />
                 </accordion_tab>
             </accordion>
             <panel
+             background_visible="true"
              follows="left|right|bottom"
-             height="38"
+             height="27"
              label="bottom_panel"
              layout="topleft"
-             left="0"
+             left="3"
              name="bottom_panel"
+             top_pad="0"
              width="313">
                <button
                follows="bottom|left"
                tool_tip="Options"
-               height="18"
-               image_disabled="OptionsMenu_Disabled"
-               image_selected="OptionsMenu_Press"
-               image_unselected="OptionsMenu_Off"
+               height="25"
+               image_hover_unselected="Toolbar_Left_Over"
+               image_overlay="OptionsMenu_Off"
+               image_selected="Toolbar_Left_Selected"
+               image_unselected="Toolbar_Left_Off"
                layout="topleft"
-               left="10"
+               left="0"
                name="friends_viewsort_btn"
-               top="10"
-               width="18" />
+               top="1"
+               width="31" />
                 <button
                  follows="bottom|left"
-                 height="18"
-                 image_selected="AddItem_Press"
-                 image_unselected="AddItem_Off"
-                 image_disabled="AddItem_Disabled"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+             	 image_overlay="AddItem_Off"
+             	 image_selected="Toolbar_Middle_Selected"
+             	 image_unselected="Toolbar_Middle_Off"
                  layout="topleft"
-                 left_pad="10"
+                 left_pad="1"
                  name="add_btn"
                  tool_tip="Offer friendship to a Resident"
-                 width="18" />
+                 width="31" />
+                <icon
+             	 follows="bottom|left"
+             	 height="25"
+             	 image_name="Toolbar_Middle_Off"
+             	 layout="topleft"
+             	 left_pad="1"
+             	 name="dummy_icon"
+             	 width="209"
+             />
                 <button
                  follows="bottom|left"
-                 height="18"
-                 image_selected="TrashItem_Press"
-                 image_unselected="TrashItem_Off"
-                 image_disabled="TrashItem_Disabled"
+                 height="25"
+                 image_hover_unselected="Toolbar_Right_Over"
+                 image_overlay="TrashItem_Off"
+                 image_selected="Toolbar_Right_Selected"
+                 image_unselected="Toolbar_Right_Off"
                  layout="topleft"
-                 left_pad="10"
-                 right="-10"
+                 left_pad="1"
                  name="del_btn"
                  tool_tip="Remove selected person from your Friends list"
-                 top_delta="0"
-                 width="18" />
+                 width="31" />
             </panel>
             <text
              follows="all"
@@ -237,10 +267,10 @@ If you're looking for people to hang out with, [secondlife:///app/worldmap try t
              </text>
         </panel>
         <panel
-            bg_opaque_color="DkGray2"
-       bg_alpha_color="DkGray2"
-       background_visible="true"
-       background_opaque="true"
+         background_opaque="true"
+         background_visible="true"
+         bg_alpha_color="DkGray"
+         bg_opaque_color="DkGray"
          follows="all"
          height="383"
          label="MY GROUPS"
@@ -255,65 +285,81 @@ If you're looking for people to hang out with, [secondlife:///app/worldmap try t
      Values are set from appropriate strings at the top of file via LLPeoplePanel::postBuild()
     -->
             <group_list
+             background_visible="true"
+             bg_alpha_color="DkGray2"
+             bg_opaque_color="DkGray2"
              follows="all"
-             height="345"
+             height="356"
              layout="topleft"
-             left="0"
+             left="3"
              name="group_list"
              no_filtered_groups_msg="[secondlife:///app/search/groups Try finding the group in search?]"
              no_groups_msg="[secondlife:///app/search/groups Try searching for some groups to join.]"
              top="0"
-             width="313" />
+             width="307" />
             <panel
+             background_visible="true"
              follows="left|right|bottom"
-             height="38"
+             height="27"
              label="bottom_panel"
              layout="topleft"
              left="0"
              name="bottom_panel"
+             top_pad="0"
              width="313">
                <button
                follows="bottom|left"
                tool_tip="Options"
-               height="18"
-               image_disabled="OptionsMenu_Disabled"
-               image_selected="OptionsMenu_Press"
-               image_unselected="OptionsMenu_Off"
+               height="25"
+               image_hover_unselected="Toolbar_Left_Over"
+               image_overlay="OptionsMenu_Off"
+               image_selected="Toolbar_Left_Selected"
+               image_unselected="Toolbar_Left_Off"
                layout="topleft"
-               left="10"
+               left="3"
                name="groups_viewsort_btn"
-               top="10"
-               width="18" />
+               top="1"
+               width="31" />
                 <button
                  follows="bottom|left"
-                 height="18"
-                 image_selected="AddItem_Press"
-                 image_unselected="AddItem_Off"
-                 image_disabled="AddItem_Disabled"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="AddItem_Off"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
                  layout="topleft"
-                 left_pad="10"
+                 left_pad="1"
                  name="plus_btn"
                  tool_tip="Join group/Create new group"
-                 width="18" />
+                 width="31" />
                 <button
                  follows="bottom|left"
-                 height="10"
-                 image_hover_selected="Activate_Checkmark"
-                 image_selected="Activate_Checkmark"
-                 image_unselected="Activate_Checkmark"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="Activate_Checkmark"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
                  layout="topleft"
-                 left_pad="10"
+                 left_pad="1"
                  name="activate_btn"
                  tool_tip="Activate selected group"
-                 top_delta="4"
-                 width="10" />
+                 width="31" />
+                 <icon
+             	 follows="bottom|left"
+             	 height="25"
+             	 image_name="Toolbar_Right_Off"
+             	 layout="topleft"
+             	 left_pad="1"
+             	 name="dummy_icon"
+             	 width="209"
+             />
             </panel>
         </panel>
         <panel
-            bg_opaque_color="DkGray2"
-       bg_alpha_color="DkGray2"
-       background_visible="true"
-       background_opaque="true"
+         background_opaque="true"
+         background_visible="true"
+         bg_alpha_color="DkGray"
+         bg_opaque_color="DkGray"
          follows="all"
          height="383"
          label="RECENT"
@@ -325,50 +371,65 @@ If you're looking for people to hang out with, [secondlife:///app/worldmap try t
          width="313">
             <avatar_list
              allow_select="true"
+       		 background_visible="true"
+       		 bg_alpha_color="DkGray2"
+             bg_opaque_color="DkGray2"
              follows="all"
-             height="345"
+             height="356"
              layout="topleft"
-             left="0"
+             left="3"
              multi_select="true"
              name="avatar_list"
              show_last_interaction_time="true"
              top="0"
-             width="313" />
+             width="307" />
             <panel
+             background_visible="true"
              follows="left|right|bottom"
-             height="38"
+             height="27"
              label="bottom_panel"
              layout="topleft"
              left="0"
              name="bottom_panel"
+             top_pad="0"
              width="313">
                <button
                follows="bottom|left"
                tool_tip="Options"
-               height="18"
-               image_disabled="OptionsMenu_Disabled"
-               image_selected="OptionsMenu_Press"
-               image_unselected="OptionsMenu_Off"
+               height="25"
+               image_hover_unselected="Toolbar_Left_Over"
+               image_overlay="OptionsMenu_Off"
+               image_selected="Toolbar_Left_Selected"
+               image_unselected="Toolbar_Left_Off"
                layout="topleft"
-               left="10"
+               left="3"
                name="recent_viewsort_btn"
-               top="10"
-               width="18" />
+               top="1"
+               width="31" />
               <button
                  follows="bottom|left"
-                 height="18"
-                 image_selected="AddItem_Press"
-                 image_unselected="AddItem_Off"
-                 image_disabled="AddItem_Disabled"
+                 height="25"
+                 image_hover_unselected="Toolbar_Middle_Over"
+                 image_overlay="AddItem_Off"
+                 image_selected="Toolbar_Middle_Selected"
+                 image_unselected="Toolbar_Middle_Off"
                  layout="topleft"
-                 left_pad="10"
+                 left_pad="1"
                  name="add_friend_btn"
-                 top_delta="0"
                  tool_tip="Add selected Resident to your friends List"
-                 width="18">
+                 width="31">
                 <commit_callback
                    function="People.addFriend" />
               </button>
+              <icon
+             	 follows="bottom|left"
+             	 height="25"
+             	 image_name="Toolbar_Right_Off"
+             	 layout="topleft"
+             	 left_pad="1"
+             	 name="dummy_icon"
+             	 width="241"
+             />
             </panel>
         </panel>
     </tab_container>
@@ -377,7 +438,7 @@ If you're looking for people to hang out with, [secondlife:///app/worldmap try t
      height="23"
      layout="topleft"
      left="8"
-     top_pad="0"
+     top_pad="4"
      name="button_bar"
      width="313">
         <button
@@ -387,6 +448,7 @@ If you're looking for people to hang out with, [secondlife:///app/worldmap try t
          layout="topleft"
          name="view_profile_btn"
          tool_tip="Show picture, groups, and other Residents information"
+         top="0"
          width="70" />
         <button
          follows="bottom|left"
diff --git a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
index 715dc5f23cf73fd18b4398799af78881e4e332d7..41651edaa02bdae8d8f7dc0751e46632f2aa942d 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml
@@ -65,6 +65,7 @@
      left="103"
      name="picture_descr"
      textbox.max_length="1024"
+     textbox.label="More"
      textbox.show_context_menu="false" 
      top_pad="0"
      width="178"
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index 9e5ef10d42dfbc4fd5d38445dd2aa798c0013cc1..a43b244fa0970c6530f21fe2911f10c694865626 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -275,6 +275,7 @@
              layout="topleft"
              left="5"
              name="description"
+             textbox.label="More"
              top_pad="10"
              value="Du waltz die spritz"
              width="300" />
@@ -742,7 +743,6 @@
                          bg_focus_color="DkGray2"
                          bg_readonly_color="DkGray2"
                          follows="left|top|right"
-                         handle_edit_keys_directly="true"
                          height="90"
                          layout="topleft"
                          left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index ff5d89470cde8cb74652d638bae3285437212c71..c61007a9e1a3fa2a150044074f6f12c5b56c0443 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -65,7 +65,7 @@ background_visible="true"
      visible="false"
      width="315" />
     <panel
-     height="19"
+     height="23"
      layout="topleft"
      left="4"
      name="button_panel"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
index e604e401f6c3ddb2be07a3cc66eb3fcfd9402a24..69e8e6fdcc9f21db7f3bb17b53dcf3821a5de085 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
@@ -186,6 +186,32 @@ Automatic position for:
 		     function="Pref.applyUIColor"
 		     parameter="BackgroundChatColor" />
     </color_swatch>
+  <text
+   type="string"
+   length="1"
+   follows="left|top"
+   height="12"
+   layout="topleft"
+   left="30"
+   name="UI Size:"
+   top_pad="5"
+   width="300">
+    UI size
+  </text>
+  <slider
+   control_name="UIScaleFactor"
+   decimal_digits="2"
+   follows="left|top"
+   height="17"
+   increment="0.025"
+   initial_value="1"
+   layout="topleft"
+   left_delta="52"
+   max_val="1.4"
+   min_val="0.75"
+   name="ui_scale_slider"
+   top_pad="-14"
+   width="180" />
     <check_box
      control_name="ShowScriptErrors"
      follows="left|top"
@@ -193,6 +219,7 @@ Automatic position for:
      label="Show script errors in:"
      layout="topleft"
      left="30"
+     top_pad="10" 
      name="show_script_errors"
      width="256" />
     <radio_group
@@ -247,6 +274,7 @@ Automatic position for:
      top_pad="5"
      width="200" />
     <button
+     layout="topleft" 
      follows="top|left"
      enabled_control="EnableVoiceChat"
      height="23"
@@ -257,8 +285,8 @@ Automatic position for:
           <button.commit_callback
           function="Pref.VoiceSetKey" />
     </button>
-    <button
-     enabled_control="EnableVoiceChat"
+  <button
+   enabled_control="EnableVoiceChat"
      follows="top|left"
      halign="center"
      height="23"
@@ -271,4 +299,15 @@ Automatic position for:
           <button.commit_callback
           function="Pref.VoiceSetMiddleMouse" />
     </button>
+  <button
+ height="23"
+ label="Other Devices"
+ left="30"
+ name="joystick_setup_button"
+ top_pad="12"
+ width="155">
+    <button.commit_callback
+     function="Floater.Show"
+     parameter="pref_joystick" />
+  </button>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
index e667fa9a2b0a0dde0724e23055219847b520c3e1..9eaabbe77b0b519799cb0ccd649dd18eda74e351 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -177,7 +177,7 @@
      layout="topleft"
      left="30"
      name="start_location_textbox"
-     top_pad="10"
+     top_pad="15"
      width="394">
         Start location:
     </text>
@@ -256,26 +256,15 @@
      left="50"
      name="show_my_name_checkbox1"
      width="300" />
-    <check_box
-	 enabled_control="AvatarNameTagMode"
-     control_name="SmallAvatarNames"
-     height="16"
-     initial_value="true"
-     label="Small name tags"
-     layout="topleft"
-     left_delta="175"
-     name="small_avatar_names_checkbox"
-     width="200" />
    <check_box
 	 enabled_control="AvatarNameTagMode"
      control_name="RenderShowGroupTitleAll"
      height="16"
      label="Show group titles"
      layout="topleft"
-     left_delta="-175"
+     left_delta="175"
      name="show_all_title_checkbox1"
-     top_pad="5"
-     width="300" />
+     width="200" />
     <text
      type="string"
      length="1"
@@ -354,7 +343,7 @@
      left="30"
      mouse_opaque="false"
      name="text_box3"
-     top_pad="10"
+     top_pad="15"
      width="240">
        Busy mode response:
     </text>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index c74de043e923f5f369c4a0888679d90111a6968b..44c44f5f59cbc2913db57a3208fd430931d6eac4 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -9,33 +9,6 @@
  name="Display panel"
  top="1"
  width="517">
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="12"
-     layout="topleft"
-     left="30"
-     name="UI Size:"
-     top="10"
-     width="300">
-        UI size:
-    </text>
-    <slider
-     can_edit_text="true"
-     control_name="UIScaleFactor"
-     decimal_digits="2"
-     follows="left|top"
-     height="15"
-     increment="0.025"
-     initial_value="1"
-     layout="topleft"
-     left_delta="52"
-     max_val="1.4"
-     min_val="0.75"
-     name="ui_scale_slider"
-     top_pad="2"
-     width="180" />
     <text
      type="string"
      length="1"
@@ -44,7 +17,7 @@
      layout="topleft"
      left="30"
      name="QualitySpeed"
-     top_pad="4"
+     top="10" 
      width="400">
         Quality and speed:
     </text>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
index 2123e62daa08e99b4b79ecf0b3aedf3dc7a7f5ba..500e65b916c63400894585fca84267091945657b 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
@@ -9,18 +9,6 @@
  name="Input panel"
  top="1"
  width="517">
-  <button
-   height="23"
-   label="Other Devices"
-   layout="topleft"
-   left="30"
-   name="joystick_setup_button"
-   top="10"
-   width="155">
-    <button.commit_callback
-     function="Floater.Show"
-     parameter="pref_joystick" />
-  </button>
   <text
    type="string"
    length="1"
@@ -29,7 +17,7 @@
    layout="topleft"
    left="30"
    name="Mouselook:"
-   top_pad="10"
+   top="10"
    width="300">
     Mouselook:
   </text>
@@ -210,7 +198,6 @@
    enabled="false"
    follows="left|top"
    font="SansSerif"
-   handle_edit_keys_directly="true"
    height="23"
    layout="topleft"
    left="80"
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index 30191aecb6a1446d547ef9ecd94910154cde0cac..a666608103315ba1f6f9f347f32a33f76f918f64 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -107,6 +107,8 @@
                layout="topleft"
                left="107"
                textbox.max_length="512"
+               textbox.label="More"
+               textbox.show_context_menu="true"
                name="sl_description_edit"
                top_pad="-3"
                translate="false"
@@ -151,6 +153,8 @@
                layout="topleft"
                left="107"
                textbox.max_length="512"
+               textbox.label="More"
+               textbox.show_context_menu="true"
                name="fl_description_edit"
                top_pad="-3"
                translate="false"
@@ -289,6 +293,8 @@
             left="7"
             name="sl_groups"
             textbox.max_length="512"
+            textbox.label="More"
+            textbox.show_context_menu="true"
             top_pad="0"
             translate="false"
             width="290"
diff --git a/indra/newview/skins/default/xui/en/panel_region_covenant.xml b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
index dc8f71c868af937620d9248710ef5ff102eb0f58..2b2ea78fac4bb7d48a4ed509fabb07decc8131cf 100644
--- a/indra/newview/skins/default/xui/en/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
@@ -113,7 +113,6 @@
      max_length="65535"
      name="covenant_editor"
      top_delta="30"
-     handle_edit_keys_directly="true"
      width="340"
      word_wrap="true">
         There is no Covenant provided for this Estate.
diff --git a/indra/newview/skins/default/xui/en/panel_script_ed.xml b/indra/newview/skins/default/xui/en/panel_script_ed.xml
index d4444205503d6d021f33597e9fc3547e96b47329..c5c66c04d500a1b1f92972d10a9ede123f131ca0 100644
--- a/indra/newview/skins/default/xui/en/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml
@@ -143,7 +143,6 @@
      name="Script Editor"
      width="487"
      show_line_numbers="true" 
-     handle_edit_keys_directly="true" 
      word_wrap="true">
         Loading...
     </text_editor>
diff --git a/indra/newview/skins/default/xui/en/panel_scrolling_param.xml b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml
index 44afadf65a6df9a077e0d0c06121d6e39780b1c7..f9c86fc75b739de40a411e9a70ccc1f32fd35523 100644
--- a/indra/newview/skins/default/xui/en/panel_scrolling_param.xml
+++ b/indra/newview/skins/default/xui/en/panel_scrolling_param.xml
@@ -5,7 +5,7 @@
  left="0"
  name="LLScrollingPanelParam"
  top="152"
- width="270">
+ width="290">
     <text
      follows="left|top"
      height="16"
@@ -46,6 +46,36 @@
      width="128">
         Loading...
     </text>
+    <view_border 
+     layout="topleft"
+     follows="left|top"
+     left="2"
+     top="0"
+     width="132"
+     height="132"
+     thickness="2"
+     shadow_light_color="LtGray_50"
+     highlight_light_color="LtGray_50"
+     highlight_dark_color="LtGray_50"
+     shadow_dark_color="LtGray_50"
+     bevel_style="in"
+     name="left_border"
+    />
+    <view_border 
+     layout="topleft"
+     follows="left|top"
+     left_pad="2"
+     top_delta="0"
+     width="132"
+     height="132"
+     thickness="2"
+     shadow_light_color="LtGray_50"
+     highlight_light_color="LtGray_50"
+     highlight_dark_color="LtGray_50"
+     shadow_dark_color="LtGray_50"
+     bevel_style="in"
+     name="right_border"
+    />
     <button
      enabled="false"
      height="132"
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 8c7de22cf8d940e02fdeeb209d793ab86fe56bd3..c2624ce0d05338473046f3bcfc7081c978a81179 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -62,11 +62,11 @@
      halign="right"
      font="SansSerifSmall"
      follows="right|top"
-     image_selected="BuyArrow_Over"
-     image_unselected="BuyArrow_Over"
-     image_pressed="BuyArrow_Press"
+     image_selected="spacer35.tga"
+     image_unselected="spacer35.tga"
+     image_pressed="spacer35.tga"
      height="16"
-     label="Buy"
+     label="Buy L$"
      label_color="EmphasisColor"
      left_pad="0"
      label_shadow="false"
diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history.xml b/indra/newview/skins/default/xui/en/panel_teleport_history.xml
index 0d4f67f94cd9ab34223461f7f6319386cd7fe583..21addb8e6fe9f80fed2e17ea768261aefe43aba4 100644
--- a/indra/newview/skins/default/xui/en/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/en/panel_teleport_history.xml
@@ -1,17 +1,19 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="Teleport History" bottom="0" height="400" left="0" width="380"
+<panel name="Teleport History" bottom="0" height="400" left="0" width="313"
      help_topic="panel_teleport_history"
-     border="false" follows="left|top|right|bottom">     
+     border="false" follows="left|top|right|bottom"
+     background_visible="true"
+     bg_alpha_color="DkGray">     
     <accordion
      follows="left|top|right|bottom"
-     height="368"
+     height="373"
      layout="topleft"
-     left="0"
+     left="3"
      top="0"
      name="history_accordion"
    background_visible="true"
    bg_alpha_color="DkGray2"
-     width="380">
+     width="307">
 	    <accordion_tab
          layout="topleft"
          name="today"
@@ -23,7 +25,7 @@
              left="0"
              name="today_items"
              top="0"
-             width="380">
+             width="307">
 	        </flat_list_view>
 	    </accordion_tab>
         <accordion_tab
@@ -37,7 +39,7 @@
              left="0"
              name="yesterday_items"
              top="0"
-             width="380">
+             width="307">
 	        </flat_list_view>
 	    </accordion_tab>
         <accordion_tab
@@ -51,7 +53,7 @@
              left="0"
              name="2_days_ago"
              top="0"
-             width="380">
+             width="307">
 	        </flat_list_view>
 	    </accordion_tab>
         <accordion_tab
@@ -65,7 +67,7 @@
              left="0"
              name="3_days_ago"
              top="0"
-             width="380">
+             width="307">
 	        </flat_list_view>
 	    </accordion_tab>
         <accordion_tab
@@ -79,7 +81,7 @@
              left="0"
              name="4_days_ago"
              top="0"
-             width="380">
+             width="307">
 	        </flat_list_view>
 	    </accordion_tab>
         <accordion_tab
@@ -93,7 +95,7 @@
              left="0"
              name="5_days_ago_items"
              top="0"
-             width="380">
+             width="307">
 	        </flat_list_view>
 	    </accordion_tab>
         <accordion_tab
@@ -107,7 +109,7 @@
              left="0"
              name="6_days_and_older_items"
              top="0"
-             width="380">
+             width="307">
 	        </flat_list_view>
 	    </accordion_tab>
         <accordion_tab
@@ -121,7 +123,7 @@
              left="0"
              name="1_month_and_older_items"
              top="0"
-             width="380">
+             width="307">
 	        </flat_list_view>
 	    </accordion_tab>
         <accordion_tab
@@ -135,34 +137,41 @@
              left="0"
              name="6_months_and_older_items"
              top="0"
-             width="380">
+             width="307">
 	        </flat_list_view>
 	    </accordion_tab>
     </accordion>
     <panel
-            bg_opaque_color="DkGray2"
-       bg_alpha_color="DkGray2"
-       background_visible="true"
-       background_opaque="true"
+     background_visible="true"
      bevel_style="none"
      bottom="0"
      follows="left|right|bottom"
-     height="38"
+     height="27"
      layout="bottomleft"
-     left="0"
+     left="3"
      name="bottom_panel"
-     width="380">
+     width="313">
         <button
          follows="bottom|left"
          tool_tip="Show additional options"
-         height="18"
-         image_disabled="OptionsMenu_Disabled"
-         image_selected="OptionsMenu_Press"
-         image_unselected="OptionsMenu_Off"
+         height="25"
+         image_hover_unselected="Toolbar_Left_Over"
+         image_overlay="OptionsMenu_Off"
+         image_selected="Toolbar_Left_Selected"
+         image_unselected="Toolbar_Left_Off"
          layout="topleft"
-         left="10"
+         left="0"
          name="gear_btn"
-         top="14"
-         width="18" />
+         top="1"
+         width="31" />
+        <icon
+         follows="bottom|left"
+         height="25"
+         image_name="Toolbar_Right_Off"
+         layout="topleft"
+         left_pad="1"
+         name="dummy_icon"
+         width="273"
+        />
     </panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml
index cd66c56ca1980437938863dc588f119560845cb3..7b22b2cce1c48cfd90aa3308e2ad434afdd238b9 100644
--- a/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml
+++ b/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml
@@ -32,9 +32,9 @@
    parameter="MuteAudio" />
   </slider>
   <button
-    left="7"
+    left="10"
     top_pad="9"
-    width="18"
+    width="12"
     height="12"
     follows="top|left"
     name="prefs_btn"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
index b3d55fec65dd553260a190808b7e4af6572a94c3..c5efa2e22188aa8f64ffbee7962a7dfdfe72905a 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -102,14 +102,17 @@ width="333">
 		name="newlook_btn"
 		 width="100" />-->
    <panel
-   class="panel_look_info"
-   filename="panel_look_info.xml"
+   class="panel_outfit_edit"
+   filename="panel_outfit_edit.xml"
+   height="550"
    follows="all"
    layout="topleft"
-   left="0"
-   name="panel_look_info"
-   top="35"
-   visible="false" />
+   left="5"
+   min_height="410"
+   name="panel_outfit_edit"
+   top="5"
+   visible="false" 
+   width="320"/>
    <panel
    class="panel_edit_wearable"
    filename="panel_edit_wearable.xml"
@@ -117,6 +120,6 @@ width="333">
    layout="topleft"
    left="0"
    name="panel_edit_wearable"
-   top="35"
+   top="0"
    visible="false" />
 </panel>
diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
index e5382e1e3f6ef3d59421dff445e4530dabc5ba40..b840fdd31b1afaf0a9bff4371885cb8d04f85983 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
@@ -399,12 +399,11 @@ top_pad="10"
 			    top_pad="10"/>
    </panel>
     <panel
-		 follows="bottom|left"
 		 height="30"
 		 layout="topleft"
 		 name="button_panel"
 		 left="5"
-		 bottom="2"
+		 top_pad="0"
 		 width="313">
 	    <button
 		     height="23"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 00bbbd65d0fcb44b0e2ed7a0255bc039f0906e50..0c73b8d7692eef339fb731053adee4e7e10e170c 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -114,6 +114,7 @@
 	<!-- ButtonToolTips, llfloater.cpp -->
 	<string name="BUTTON_CLOSE_DARWIN">Close (&#8984;W)</string>
 	<string name="BUTTON_CLOSE_WIN">Close (Ctrl+W)</string>
+	<string name="BUTTON_CLOSE_CHROME">Close</string>>
 	<string name="BUTTON_RESTORE">Restore</string>
 	<string name="BUTTON_MINIMIZE">Minimize</string>
 	<string name="BUTTON_TEAR_OFF">Tear Off</string>
@@ -3048,6 +3049,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
   <string name="unread_chat_multiple">
     [SOURCES] have said something new
   </string>"
+	<string name="session_initialization_timed_out_error">
+		The session initialization is timed out
+	</string>
   
   <!-- Financial operations strings -->
   <string name="paid_you_ldollars">[NAME] paid you L$[AMOUNT]</string>
diff --git a/indra/newview/skins/default/xui/en/widgets/chat_history.xml b/indra/newview/skins/default/xui/en/widgets/chat_history.xml
index aa3ea736b8c9f1c3e4d912def7f5069b9d4a5d2b..ef885e8045d46010bc05980eae02fb59e63f43b5 100644
--- a/indra/newview/skins/default/xui/en/widgets/chat_history.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chat_history.xml
@@ -2,7 +2,6 @@
 <chat_history
   message_header="panel_chat_header.xml"
   message_separator="panel_chat_separator.xml"
-  message_plaintext_separator="panel_chat_plaintext_separator.xml"
   left_text_pad="10"
   right_text_pad="15"
   left_widget_pad="0"
diff --git a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
index d9b6387f0d9739af9cecb59e9b6cf8c6269f06f5..6190ea787221c236b9c258ee1a901bb6246dfc8b 100644
--- a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
+++ b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml
@@ -5,7 +5,7 @@
   allow_html="true"
   allow_scroll="true"
   bg_visible="false"
-  more_label="More" 
+  label="More" 
   follows="left|top|right"
   name="text"
   read_only="true"
diff --git a/indra/newview/skins/default/xui/en/widgets/line_editor.xml b/indra/newview/skins/default/xui/en/widgets/line_editor.xml
index a21e3f2645087f765f55111a03eda2ab0c504fa9..a054960bf8cc40cbeed3dfdcba5e69ff7f0f1238 100644
--- a/indra/newview/skins/default/xui/en/widgets/line_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/line_editor.xml
@@ -3,7 +3,6 @@
              background_image_disabled="TextField_Disabled"
              background_image_focused="TextField_Active"
              select_on_focus="false"
-             handle_edit_keys_directly="false"
              commit_on_focus_lost="true"
              ignore_tab="true"
              cursor_color="TextCursorColor"
diff --git a/indra/newview/skins/default/xui/en/widgets/text.xml b/indra/newview/skins/default/xui/en/widgets/text.xml
index 855584a0db49dac639b7443c4276dd1ee9ca3b71..998ec5b170c8a7ffe267618317206e3e775bb7c3 100644
--- a/indra/newview/skins/default/xui/en/widgets/text.xml
+++ b/indra/newview/skins/default/xui/en/widgets/text.xml
@@ -15,6 +15,7 @@
       bg_visible="false" 
       border_visible="false" 
       hover="false" 
+      sound_flags="0"
       text_color="LabelTextColor"
       v_pad="0"
       max_length="4096"/>
diff --git a/indra/newview/skins/default/xui/es/floater_customize.xml b/indra/newview/skins/default/xui/es/floater_customize.xml
index 8daf2bed156132180f8104254624b7256ba7e846..b7058d431434aefdd03d1dd759eea45a5068d52a 100644
--- a/indra/newview/skins/default/xui/es/floater_customize.xml
+++ b/indra/newview/skins/default/xui/es/floater_customize.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater customize" title="APARIENCIA" width="527">
-	<tab_container name="customize tab container" width="525">
+<floater name="floater customize" title="APARIENCIA">
+	<tab_container name="customize tab container">
 		<text label="Partes del cuerpo" name="body_parts_placeholder">
 			Partes del cuerpo
 		</text>
-		<panel label="Forma" name="Shape" width="389">
+		<panel label="Forma" name="Shape">
 			<button label="Restablecer" label_selected="Restablecer" name="Revert"/>
 			<button label="Cuerpo" label_selected="Cuerpo" name="Body"/>
 			<button label="Cabeza" label_selected="Cabeza" name="Head"/>
@@ -40,12 +40,12 @@
 			<text name="no modify instructions">
 				No tiene permiso para modificar este ítem.
 			</text>
-			<text name="Item Action Label" right="107">
+			<text name="Item Action Label">
 				Forma:
 			</text>
 			<button label="Crear una forma nueva" label_selected="Crear una forma nueva" name="Create New"/>
-			<button label="Guardar" label_selected="Guardar" left="113" name="Save"/>
-			<button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/>
+			<button label="Guardar" label_selected="Guardar" name="Save"/>
+			<button label="Guardar como..." label_selected="Guardar como..." name="Save As"/>
 		</panel>
 		<panel label="Piel" name="Skin">
 			<button label="Color de piel" label_selected="Color de piel" name="Skin Color" width="115"/>
@@ -522,7 +522,7 @@
 			<button label="Revertir" label_selected="Revertir" name="Revert"/>
 		</panel>
 	</tab_container>
-	<scroll_container left="230" name="panel_container"/>
+	<scroll_container name="panel_container"/>
 	<button label="Información del script" label_selected="Información del script" name="script_info" tool_tip="Mostrar los scripts anexados a tu avatar"/>
 	<button label="Hacer un vestuario" label_selected="Hacer un vestuario" name="make_outfit_btn"/>
 	<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
diff --git a/indra/newview/skins/default/xui/es/floater_joystick.xml b/indra/newview/skins/default/xui/es/floater_joystick.xml
index 283a46b60bed09bef14ab99648bb9ede8a282787..dbd2e4f04eda1c3c461d1b6a69cb2a32669013d6 100644
--- a/indra/newview/skins/default/xui/es/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/es/floater_joystick.xml
@@ -63,7 +63,7 @@
 	<text name="ZoomDeadZone">
 		Zona muerta zoom
 	</text>
-	<button font="SansSerifSmall" label="Predeterminados del SpaceNavigator" left="330" name="SpaceNavigatorDefaults" width="210"/>
+	<button font="SansSerifSmall" label="Por defecto del SpaceNavigator" left="330" name="SpaceNavigatorDefaults" width="210"/>
 	<button label="OK" label_selected="OK" left="330" name="ok_btn"/>
 	<button label="Cancelar" label_selected="Cancelar" left_delta="120" name="cancel_btn"/>
 	<stat_view label="Monitor del joystick" name="axis_view">
diff --git a/indra/newview/skins/default/xui/es/floater_preferences.xml b/indra/newview/skins/default/xui/es/floater_preferences.xml
index 37d56ea8395a2e5344a6597962f5c211abf6cf4d..61f12fc0d75e9095dc5b5dc31e49ecd2d365e893 100644
--- a/indra/newview/skins/default/xui/es/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/es/floater_preferences.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater min_width="350" name="Preferences" title="PREFERENCIAS" width="646">
+<floater name="Preferences" title="PREFERENCIAS">
 	<button label="OK" label_selected="OK" name="OK"/>
 	<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
-	<tab_container name="pref core" tab_width="146" width="646">
+	<tab_container name="pref core">
 		<panel label="General" name="general"/>
 		<panel label="Gráficos" name="display"/>
 		<panel label="Privacidad" name="im"/>
diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml
index ac3a94982153e485b4def09a868c9441c81c3c40..a3851ea2b010ee4b2578ad1cf6ca74147dbdca31 100644
--- a/indra/newview/skins/default/xui/es/floater_tools.xml
+++ b/indra/newview/skins/default/xui/es/floater_tools.xml
@@ -399,7 +399,7 @@ máximo" name="checkbox fullbright"/>
 			<text name="tex gen">
 				Detallado
 			</text>
-			<combo_box name="combobox texgen" width="86">
+			<combo_box name="combobox texgen">
 				<combo_box.item label="Por defecto" name="Default"/>
 				<combo_box.item label="Plano" name="Planar"/>
 			</combo_box>
@@ -442,9 +442,9 @@ máximo" name="checkbox fullbright"/>
 			<check_box label="Voltear" name="checkbox flip s"/>
 			<spinner label="Vertical (V)" name="TexScaleV"/>
 			<check_box label="Voltear" name="checkbox flip t"/>
-			<spinner label="Rotación" left="118" name="TexRot" width="62"/>
-			<spinner label="Repeticiones / Metro" left="118" name="rptctrl" width="62"/>
-			<button label="Aplicar" label_selected="Aplicar" left_delta="72" name="button apply"/>
+			<spinner label="Rotación" name="TexRot"/>
+			<spinner label="Repeticiones / Metro" name="rptctrl"/>
+			<button label="Aplicar" label_selected="Aplicar" name="button apply"/>
 			<text name="tex offset">
 				Desplazar
 			</text>
@@ -475,7 +475,7 @@ máximo" name="checkbox fullbright"/>
 		<text name="label_area">
 			Área: [AREA] m²
 		</text>
-		<button label="Acerca del terreno" label_selected="Acerca del terreno" name="button about land" width="140"/>
+		<button label="Acerca del terreno" label_selected="Acerca del terreno" name="button about land"/>
 		<check_box label="Mostrar los propietarios" name="checkbox show owners" tool_tip="El color de las parcelas es según su propietario: 
 
 Verde = Su terreno 
@@ -487,12 +487,12 @@ Gris = Público"/>
 		<text name="label_parcel_modify">
 			Modificar la parcela
 		</text>
-		<button label="Dividir" label_selected="Dividir" name="button subdivide land" width="140"/>
-		<button label="Inscribirse" label_selected="Inscribirse" name="button join land" width="140"/>
+		<button label="Dividir" label_selected="Dividir" name="button subdivide land"/>
+		<button label="Inscribirse" label_selected="Inscribirse" name="button join land"/>
 		<text name="label_parcel_trans">
 			Transacciones de terreno
 		</text>
-		<button label="Comprar terreno" label_selected="Comprar terreno" name="button buy land" width="140"/>
-		<button label="Abandonar el terreno" label_selected="Abandonar el terreno" name="button abandon land" width="140"/>
+		<button label="Comprar terreno" label_selected="Comprar terreno" name="button buy land"/>
+		<button label="Abandonar el terreno" label_selected="Abandonar el terreno" name="button abandon land"/>
 	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/es/language_settings.xml b/indra/newview/skins/default/xui/es/language_settings.xml
index 71418d446ab9fa71c3512f7f3dc17b1ba1d423a2..1ade4ba300e3d244793c64bd0c57c0489d11d026 100644
--- a/indra/newview/skins/default/xui/es/language_settings.xml
+++ b/indra/newview/skins/default/xui/es/language_settings.xml
@@ -3,9 +3,9 @@
 <strings>
 
 	<!-- Locale Information -->
-	<string name="MicrosoftLocale">english</string>
-	<string name="DarwinLocale">C</string>
-	<string name="LinuxLocale">C</string>
+	<string name="MicrosoftLocale">spanish</string>
+	<string name="DarwinLocale">es_ES.UTF-8</string>
+	<string name="LinuxLocale">es_ES.UTF-8</string>
 	
 	<!-- 
 	datetimeToCodes["wkday"]	= "%a";		// Thu
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index 2cbd0f0a61fcdd0797afb942d9689e75095ff025..93964a2f4fa0bdc3d15dd00b72b82cbefd9edf6c 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -238,7 +238,7 @@
 			<menu_item_check label="Frame Test" name="Frame Test"/>
 		</menu>
 		<menu label="Rendering" name="Rendering">
-			<menu_item_check label="Ejes" name="Axes"/>
+			<menu_item_check label="Axes" name="Axes"/>
 			<menu_item_check label="Wireframe" name="Wireframe"/>
 			<menu_item_check label="Global Illumination" name="Global Illumination"/>
 			<menu_item_check label="Animation Textures" name="Animation Textures"/>
@@ -254,7 +254,7 @@
 		<menu_item_call label="Bumps, Pushes &amp; Hits" name="Bumps, Pushes &amp;amp; Hits"/>
 		<menu label="World" name="World">
 			<menu_item_check label="Region Sun Override" name="Sim Sun Override"/>
-			<menu_item_check label="Baliza con destellos" name="Cheesy Beacon"/>
+			<menu_item_check label="Beacon flashing effect" name="Cheesy Beacon"/>
 			<menu_item_check label="Fixed Weather" name="Fixed Weather"/>
 			<menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/>
 		</menu>
@@ -277,10 +277,10 @@
 		<menu label="Avatar" name="Character">
 			<menu label="Grab Baked Texture" name="Grab Baked Texture">
 				<menu_item_call label="Iris" name="Iris"/>
-				<menu_item_call label="Cabeza" name="Head"/>
+				<menu_item_call label="Head" name="Head"/>
 				<menu_item_call label="Upper Body" name="Upper Body"/>
 				<menu_item_call label="Lower Body" name="Lower Body"/>
-				<menu_item_call label="Falda" name="Skirt"/>
+				<menu_item_call label="Skirt" name="Skirt"/>
 			</menu>
 			<menu label="Character Tests" name="Character Tests">
 				<menu_item_call label="Toggle Character Geometry" name="Toggle Character Geometry"/>
@@ -297,8 +297,8 @@
 		<menu_item_check label="HTTP Textures" name="HTTP Textures"/>
 		<menu_item_check label="Console Window on next Run" name="Console Window"/>
 		<menu_item_check label="Show Admin Menu" name="View Admin Options"/>
-		<menu_item_call label="Solicitar estatus de Administrador" name="Request Admin Options"/>
-		<menu_item_call label="Dejar el estatus de Administrador" name="Leave Admin Options"/>
+		<menu_item_call label="Request Admin Status" name="Request Admin Options"/>
+		<menu_item_call label="Leave Admin Status" name="Leave Admin Options"/>
 	</menu>
 	<menu label="Admin" name="Admin">
 		<menu label="Object">
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index cc6a442508699d000c32363708b39ba409fed09c..df18b8883266c4d67ddbe269efee47897671fdfd 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -1734,7 +1734,7 @@ Dado que estos objetos tienen scripts, moverlos a tu inventario puede provocar u
 		<usetemplate ignoretext="Confirmar antes de salir" name="okcancelignore" notext="No salir" yestext="Salir"/>
 	</notification>
 	<notification name="HelpReportAbuseEmailLL">
-		Usa esta herramienta para denunciar violaciones de las [http://secondlife.com/corporate/tos.php Condiciones de Servicio] o las [http://secondlife.com/corporate/cs.php Normas de la Comunidad].
+		Usa esta herramienta para denunciar violaciones de las [http://secondlife.com/corporate/tos.php Condiciones del Servicio] o las [http://secondlife.com/corporate/cs.php Normas de la Comunidad].
 
 Se investigan y resuelven todas las infracciones denunciadas.
 	</notification>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
index 34b78b468bc9b5f2ab9522280d9123783812378f..46d8984889e7aa55deb6dff9ab1aaa97abfb118c 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
@@ -5,7 +5,7 @@
 	</text>
 	<radio_group name="chat_font_size">
 		<radio_item label="Disminuir" name="radio" value="0"/>
-		<radio_item label="Media" name="radio2" value="1"/>
+		<radio_item label="Medio" name="radio2" value="1"/>
 		<radio_item label="Aumentar" name="radio3" value="2"/>
 	</radio_group>
 	<text name="font_colors">
@@ -46,7 +46,7 @@
 	<check_box initial_value="true" label="Ejecutar la animación de escribir al hacerlo en el chat" name="play_typing_animation"/>
 	<check_box label="Cuando estoy desconectado, enviarme los MI al correo-e" name="send_im_to_email"/>
 	<text name="show_ims_in_label">
-		Mostrar los MI en:
+		Mostrar los MI en: 
 	</text>
 	<text name="requires_restart_label">
 		(requiere reiniciar)
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml
index 3632ecca7bd7bd4b750b88dfabe8c5cfaa5338a2..bf2c6b7aa61250bf066643ebf542ccdc9cc5cd84 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml
@@ -18,7 +18,7 @@
 	<check_box label="Guardar en mi ordenador registros de los MI" name="log_instant_messages"/>
 	<check_box label="Añadir fecha y hora" name="show_timestamps_check_im"/>
 	<text name="log_path_desc">
-		Localización de los registros:
+		Ruta de los registros:
 	</text>
 	<line_editor left="278" name="log_path_string" right="-20"/>
 	<button label="Elegir" label_selected="Elegir" name="log_path_button" width="120"/>
diff --git a/indra/newview/skins/default/xui/es/panel_side_tray.xml b/indra/newview/skins/default/xui/es/panel_side_tray.xml
index 4e9834063bf8677ddf4147d6786dd994d95d3a44..cf5afb3cd19f4f12769947fa38dc1d2b8cf5458f 100644
--- a/indra/newview/skins/default/xui/es/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/es/panel_side_tray.xml
@@ -3,27 +3,27 @@
 	partially on screen to hold tab buttons. -->
 <side_tray name="sidebar">
 	<sidetray_tab description="Manejar la barra lateral." name="sidebar_openclose" tab_title="Barra lateral"/>
-	<sidetray_tab description="Base." name="sidebar_home" tab_title="Home">
-		<panel label="base" name="panel_home"/>
+	<sidetray_tab description="Inicio." name="sidebar_home" tab_title="Inicio">
+		<panel label="Inicio" name="panel_home"/>
 	</sidetray_tab>
-	<sidetray_tab description="Edita tu perfil público y tus destacados." name="sidebar_me" tab_title="My Profile">
+	<sidetray_tab description="Edita tu perfil público y tus destacados." name="sidebar_me" tab_title="Mi perfil">
 		<panel_container name="panel_container">
 			<panel label="Yo" name="panel_me"/>
 		</panel_container>
 	</sidetray_tab>
-	<sidetray_tab description="Encuentra a tus amigos, contactos y gente que esté cerca." name="sidebar_people" tab_title="People">
+	<sidetray_tab description="Encuentra a tus amigos, contactos y gente que esté cerca." name="sidebar_people" tab_title="Gente">
 		<panel_container name="panel_container">
 			<panel label="Perfil del grupo" name="panel_group_info_sidetray"/>
 			<panel label="Residentes y objetos ignorados" name="panel_block_list_sidetray"/>
 		</panel_container>
 	</sidetray_tab>
-	<sidetray_tab description="Encontrar lugares donde ir o que ya visitaste." label="Lugares" name="sidebar_places" tab_title="Places">
+	<sidetray_tab description="Encontrar lugares donde ir o que ya visitaste." label="Lugares" name="sidebar_places" tab_title="Lugares">
 		<panel label="Lugares" name="panel_places"/>
 	</sidetray_tab>
-	<sidetray_tab description="Mira tu inventario." name="sidebar_inventory" tab_title="My Inventory">
+	<sidetray_tab description="Mira tu inventario." name="sidebar_inventory" tab_title="Mi inventario">
 		<panel label="Modificar el inventario" name="sidepanel_inventory"/>
 	</sidetray_tab>
-	<sidetray_tab description="Cambia tu apariencia y tu &apos;look&apos; actual." name="sidebar_appearance" tab_title="My Appearance">
+	<sidetray_tab description="Cambia tu apariencia y tu &apos;look&apos; actual." name="sidebar_appearance" tab_title="Mi apariencia">
 		<panel label="Modificar la apariencia" name="sidepanel_appearance"/>
 	</sidetray_tab>
 </side_tray>
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
index d7ec0b4885005ebd75096630c15d83154ffc6a02..4eaff8535e78a5abf9a2658fce9a3ac927364256 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
@@ -4,7 +4,7 @@
 		Achetez [LINDENS] L$ pour environ [LOCALAMOUNT]
 	</floater.string>
 	<text left="5" name="info_need_more" right="-5">
-		Vous avez besoin de plus de L$
+		Plus de L$ sont requis
 	</text>
 	<text name="contacting">
 		En train de contacter 
@@ -53,7 +53,7 @@ le Lindex...
 		Saisissez à nouveau le montant pour voir le taux de change actuel.
 	</text>
 	<text name="purchase_warning_repurchase">
-		La confirmation de cet achat n&apos;achète que des L$, pas l&apos;objet.
+		Confirmer cet achat n'achète que des L$, pas l'objet.
 	</text>
 	<text bottom_delta="16" name="purchase_warning_notenough">
 		Vous n&apos;achetez pas assez de L$. Veuillez augmenter le montant.
diff --git a/indra/newview/skins/default/xui/fr/floater_color_picker.xml b/indra/newview/skins/default/xui/fr/floater_color_picker.xml
index 8d7fe76b35b2444fe1451366d7ea012b0b0286a9..7ead543c78968695aaef0b3dade93e791c64a49e 100644
--- a/indra/newview/skins/default/xui/fr/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/fr/floater_color_picker.xml
@@ -26,6 +26,6 @@
 		Couleur actuelle :
 	</text>
 	<text left="8" name="(Drag below to save.)" width="220">
-		(Faire glisser dessous pour enregistrer.)
+		Enreg. : faire glisser dessous
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_customize.xml b/indra/newview/skins/default/xui/fr/floater_customize.xml
index 0343ff0014d5b8ba36a57c851ae9ee731d320b87..d5ee070dcd32e23e4d5fdffb412cf98c66286dda 100644
--- a/indra/newview/skins/default/xui/fr/floater_customize.xml
+++ b/indra/newview/skins/default/xui/fr/floater_customize.xml
@@ -155,7 +155,7 @@
 		</text>
 		<panel label="Chemise" name="Shirt">
 			<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
-			<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
+			<color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
 			<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
 			<button label="Créer une chemise" label_selected="Créer une chemise" name="Create New"/>
 			<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
@@ -188,7 +188,7 @@
 		</panel>
 		<panel label="Pantalon" name="Pants">
 			<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
-			<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
+			<color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
 			<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
 			<button label="Créer un pantalon" label_selected="Créer un pantalon" name="Create New"/>
 			<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
@@ -246,7 +246,7 @@
 				Chaussures :
 			</text>
 			<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
-			<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
+			<color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
 			<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
 			<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
 			<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
@@ -279,7 +279,7 @@
 				Chaussettes :
 			</text>
 			<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
-			<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
+			<color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
 			<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
 			<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
 			<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
@@ -313,7 +313,7 @@
 			</text>
 			<texture_picker label="Tissu (dessus)" name="Upper Fabric" tool_tip="Cliquez pour sélectionner une image" width="81"/>
 			<texture_picker label="Tissu (dessous)" name="Lower Fabric" tool_tip="Cliquez pour sélectionner une image" width="81"/>
-			<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="81"/>
+			<color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="81"/>
 			<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
 			<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
 			<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
@@ -346,7 +346,7 @@
 				Gants :
 			</text>
 			<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
-			<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
+			<color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
 			<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
 			<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
 			<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
@@ -379,7 +379,7 @@
 				Débardeur :
 			</text>
 			<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
-			<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
+			<color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
 			<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
 			<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
 			<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
@@ -412,7 +412,7 @@
 				Caleçon :
 			</text>
 			<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
-			<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
+			<color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
 			<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
 			<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
 			<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
@@ -445,7 +445,7 @@
 				Jupe :
 			</text>
 			<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/>
-			<color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
+			<color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/>
 			<button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/>
 			<button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/>
 			<button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml
index 951670ec7ea3c045ffb3f42bd6f333f9519eda25..a381f64cd92ae30541b65046d6b79dd63d015097 100644
--- a/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml
+++ b/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml
@@ -4,7 +4,7 @@
 		<panel label="Cycle du jour" name="Day Cycle">
 			<button label="?" name="WLDayCycleHelp" />
 			<text name="WL12am">
-				Minuit
+				Min.
 			</text>
 			<text name="WL3am">
 				3h
@@ -28,7 +28,7 @@
 				21h
 			</text>
 			<text name="WL12am2">
-				Minuit
+				Min.
 			</text>
 			<text name="WL12amHash">
 				|
diff --git a/indra/newview/skins/default/xui/fr/floater_preferences.xml b/indra/newview/skins/default/xui/fr/floater_preferences.xml
index 406e91a18a8da19927fe06dd5c5deb3b1f9f2798..052e43388b03c26b21d62e0faad207df6b37d757 100644
--- a/indra/newview/skins/default/xui/fr/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preferences.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater min_width="330" name="Preferences" title="PRÉFÉRENCES" width="626">
+<floater name="Preferences" title="PRÉFÉRENCES">
 	<button label="OK" label_selected="OK" name="OK"/>
 	<button label="Annuler" label_selected="Annuler" name="Cancel"/>
-	<tab_container name="pref core" tab_width="126" width="626">
+	<tab_container name="pref core">
 		<panel label="Général" name="general"/>
 		<panel label="Graphiques" name="display"/>
 		<panel label="Confidentialité" name="im"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index 663f1da7b647fc8aa4e95c37e207897763ed7fd8..16d276f8c2cdec36aab9dc9b326915e11dfae8a4 100644
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -355,7 +355,7 @@
 		</panel>
 		<panel label="Attributs" name="Features">
 			<text name="select_single">
-				Choisissez une prim pour changer les attributs.
+				Choisir une prim pour changer les attributs.
 			</text>
 			<text name="edit_object">
 				Modifier les attributs de l&apos;objet :
@@ -441,9 +441,9 @@
 			<check_box label="Inverser" name="checkbox flip s"/>
 			<spinner label="Vertical (V)" name="TexScaleV"/>
 			<check_box label="Inverser" name="checkbox flip t"/>
-			<spinner label="RotationËš" left="122" name="TexRot" width="58"/>
-			<spinner label="Répétitions / Mètre" left="122" name="rptctrl" width="58"/>
-			<button label="Appliquer" label_selected="Appliquer" left_delta="68" name="button apply" width="75"/>
+			<spinner label="RotationËš" name="TexRot" />
+			<spinner label="Répétitions / Mètre" name="rptctrl"/>
+			<button label="Appliquer" label_selected="Appliquer" name="button apply"/>
 			<text name="tex offset">
 				Décalage de la texture
 			</text>
diff --git a/indra/newview/skins/default/xui/fr/language_settings.xml b/indra/newview/skins/default/xui/fr/language_settings.xml
index 71418d446ab9fa71c3512f7f3dc17b1ba1d423a2..117ae16ee84cafd8572c40dda57849deee2267a2 100644
--- a/indra/newview/skins/default/xui/fr/language_settings.xml
+++ b/indra/newview/skins/default/xui/fr/language_settings.xml
@@ -3,9 +3,9 @@
 <strings>
 
 	<!-- Locale Information -->
-	<string name="MicrosoftLocale">english</string>
-	<string name="DarwinLocale">C</string>
-	<string name="LinuxLocale">C</string>
+	<string name="MicrosoftLocale">french</string>
+	<string name="DarwinLocale">fr_FR.UTF-8</string>
+	<string name="LinuxLocale">fr_FR.UTF-8</string>
 	
 	<!-- 
 	datetimeToCodes["wkday"]	= "%a";		// Thu
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index ff4a40b1ce356c08701f17b438fb2a775621f182..b8a3b6510125a34083acac4e6805aad14e3f26ba 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -276,7 +276,7 @@
 			<menu_item_check label="Atlas des textures" name="Texture Atlas"/>
 			<menu_item_check label="Rendu des lumières jointes" name="Render Attached Lights"/>
 			<menu_item_check label="Rendu des particules jointes" name="Render Attached Particles"/>
-			<menu_item_check label="Hover Glow Objects" name="Hover Glow Objects"/>
+			<menu_item_check label="Objets en surbrillance avec le pointeur" name="Hover Glow Objects"/>
 		</menu>
 		<menu label="Réseau" name="Network">
 			<menu_item_check label="Pauser l&apos;avatar" name="AgentPause"/>
@@ -296,7 +296,7 @@
 			<menu_item_call label="Arrêter l&apos;enregistrement" name="Stop Record"/>
 		</menu>
 		<menu label="Monde" name="World">
-			<menu_item_check label="Sim Sun Override" name="Sim Sun Override"/>
+			<menu_item_check label="Ignorer les paramètres du soleil de la sim" name="Sim Sun Override"/>
 			<menu_item_check label="Balise animée" name="Cheesy Beacon"/>
 			<menu_item_check label="Météo fixe" name="Fixed Weather"/>
 			<menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/>
@@ -369,14 +369,14 @@
 	<menu label="Admin" name="Admin">
 		<menu label="Object">
 			<menu_item_call label="Prendre une copie" name="Take Copy"/>
-			<menu_item_call label="Forcer le propriétaire sur moi" name="Force Owner To Me"/>
+			<menu_item_call label="Téléporter le propriétaire" name="Force Owner To Me"/>
 			<menu_item_call label="Forcer la permission du propriétaire" name="Force Owner Permissive"/>
 			<menu_item_call label="Supprimer" name="Delete"/>
 			<menu_item_call label="Verrouiller" name="Lock"/>
 			<menu_item_call label="Obtenir les ID d&apos;actifs" name="Get Assets IDs"/>
 		</menu>
 		<menu label="Parcelle" name="Parcel">
-			<menu_item_call label="Forcer le propriétaire sur moi" name="Owner To Me"/>
+			<menu_item_call label="Téléporter le propriétaire" name="Owner To Me"/>
 			<menu_item_call label="Définir sur le contenu Linden" name="Set to Linden Content"/>
 			<menu_item_call label="Réclamer un terrain public" name="Claim Public Land"/>
 		</menu>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 0fb609d653f614dd0bbe5d2243e39a8143184d96..38c6b57f5c031d52d686993216ef98d27b88b9b2 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -178,7 +178,7 @@ Voulez-vous continuer ?
 	<notification name="JoinGroupNoCost">
 		Vous vous apprêtez à rejoindre le groupe [NAME].
 Voulez-vous continuer ?
-		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="Fusionner"/>
+		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="Rejoindre"/>
 	</notification>
 	<notification name="JoinGroupCannotAfford">
 		Rejoindre ce groupe coûte [COST] L$.
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml b/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml
index 73e136ade68082fad30a73f5a10f6f2fb3fde92b..b1a437497df10256175b3f80f4f935bdb831d6a3 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml
@@ -2,7 +2,7 @@
 <panel name="edit_gloves_panel">
 	<panel name="avatar_gloves_color_panel">
 		<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
-		<color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Coul./Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
 	</panel>
 	<accordion name="wearable_accordion">
 		<accordion_tab name="gloves_main_tab" title="Gants"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml b/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml
index cee44eb79501914e59308ddbf10011855b1dae72..b757f60b18ecc8292062821a4c5073b17b9bb4c9 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml
@@ -3,7 +3,7 @@
 	<panel name="avatar_jacket_color_panel">
 		<texture_picker label="Tissu (haut)" name="Upper Fabric" tool_tip="Cliquez pour sélectionner une image"/>
 		<texture_picker label="Tissu (bas)" name="Lower Fabric" tool_tip="Cliquez pour sélectionner une image"/>
-		<color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Coul./Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
 	</panel>
 	<accordion name="wearable_accordion">
 		<accordion_tab name="jacket_main_tab" title="Veste"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_pants.xml b/indra/newview/skins/default/xui/fr/panel_edit_pants.xml
index 71d82c817f8e65c7ba3b1800a92adfeabec631f7..0cebe1e76a5091d2b958ce376573024dda59c121 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_pants.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_pants.xml
@@ -2,7 +2,7 @@
 <panel name="edit_pants_panel">
 	<panel name="avatar_pants_color_panel">
 		<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
-		<color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Coul./Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
 	</panel>
 	<accordion name="wearable_accordion">
 		<accordion_tab name="pants_main_tab" title="Pantalon"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml
index cf28cd8c1e4b44a8a95dc548dac01166cad28988..d6035415d8cb246eadb5512badbaeccf3144f470 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml
@@ -2,7 +2,7 @@
 <panel name="edit_shirt_panel">
 	<panel name="avatar_shirt_color_panel">
 		<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
-		<color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Coul./Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
 	</panel>
 	<accordion name="wearable_accordion">
 		<accordion_tab name="shirt_main_tab" title="Chemise"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml b/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml
index a8e0910a15928a6ee7d4c717de371e9907be9d7b..ef6d72629c4e2d547bb6e9d6469ff67d5c928197 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml
@@ -2,7 +2,7 @@
 <panel name="edit_shoes_panel">
 	<panel name="avatar_shoes_color_panel">
 		<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
-		<color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Coul./Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
 	</panel>
 	<accordion name="wearable_accordion">
 		<accordion_tab name="shoes_main_tab" title="Chaussures"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml
index e9784b9510d1fe808ad1cc5177ae5da515271f0f..1250c7819d5071cf5ede7c6b5f1a59d0497aa3f6 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml
@@ -2,7 +2,7 @@
 <panel name="edit_skirt_panel">
 	<panel name="avatar_skirt_color_panel">
 		<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
-		<color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Coul./Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
 	</panel>
 	<accordion name="wearable_accordion">
 		<accordion_tab name="skirt_main_tab" title="Jupe"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_socks.xml b/indra/newview/skins/default/xui/fr/panel_edit_socks.xml
index 6fc6a3dc778861ed3b8c55419ade88ee024dd167..bcd69b7dc5b801d97c779c6695f3d0985821f25b 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_socks.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_socks.xml
@@ -2,7 +2,7 @@
 <panel name="edit_socks_panel">
 	<panel name="avatar_socks_color_panel">
 		<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
-		<color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Coul./Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
 	</panel>
 	<accordion name="wearable_accordion">
 		<accordion_tab name="socks_main_tab" title="Chaussettes"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml b/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml
index 90dcae18ec53594da554e7a8dcd827b1e21e8fa6..dd2670bd7569430c74b22830cb3559e0af546032 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml
@@ -2,7 +2,7 @@
 <panel name="edit_underpants_panel">
 	<panel name="avatar_underpants_color_panel">
 		<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
-		<color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Coul./Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
 	</panel>
 	<accordion name="wearable_accordion">
 		<accordion_tab name="underpants_main_tab" title="Caleçon"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml
index 950cdd7639c713fb08671f16adb483a7bf673140..93a08f11891bb198982e60565f038a29745777f7 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml
@@ -2,7 +2,7 @@
 <panel name="edit_undershirt_panel">
 	<panel name="avatar_undershirt_color_panel">
 		<texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/>
-		<color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Coul./Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
 	</panel>
 	<accordion name="wearable_accordion">
 		<accordion_tab name="undershirt_main_tab" title="Débardeur"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml
index afd2d9cd8f79dd6337e31445c102e999a6d55000..e048e668104224b1765cf52ed91db91d3b1ef127 100644
--- a/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml
@@ -8,7 +8,7 @@
 	</text>
 	<line_editor name="home_url" tool_tip="La page d&apos;accueil pour cette source média"/>
 	<text name="preview_label">
-		Prévisualiser
+		Aperçu
 	</text>
 	<text name="current_url_label">
 		Page actuelle :
@@ -20,7 +20,7 @@
 	<check_box initial_value="false" label="Zoom auto" name="auto_zoom"/>
 	<check_box initial_value="false" label="Lecture auto du média" name="auto_play"/>
 	<text name="media_setting_note">
-		Remarque : kes résidents peuvent ignorer ce paramètre
+		Remarque : les résidents peuvent ignorer ce paramètre
 	</text>
 	<check_box initial_value="false" label="Mise à l&apos;échelle auto du média sur la face de l&apos;objet" name="auto_scale"/>
 	<text name="size_label">
diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml
index 6f6ae035a189bf0bf55740357934fcb5beaa67b9..f456ee1c835559728703b17d60084a936fb9c41a 100644
--- a/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml
+++ b/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml
@@ -11,10 +11,10 @@
 			Mini
 		</combo_item>
 	</combo_box>
-	<check_box initial_value="false" label="Désactiver la navigation et l&apos;interactivité" name="perms_owner_interact"/>
+	<check_box initial_value="false" label="Activer la navigation et l&apos;interactivité" name="perms_owner_interact"/>
 	<check_box initial_value="false" label="Afficher la barre de contrôles" name="perms_owner_control"/>
-	<check_box initial_value="false" label="Désactiver la navigation et l&apos;interactivité" name="perms_group_interact"/>
+	<check_box initial_value="false" label="Activer la navigation et l&apos;interactivité" name="perms_group_interact"/>
 	<check_box initial_value="false" label="Afficher la barre de contrôles" name="perms_group_control"/>
-	<check_box initial_value="false" label="Désactiver la navigation et l&apos;interactivité" name="perms_anyone_interact"/>
+	<check_box initial_value="false" label="Activer la navigation et l&apos;interactivité" name="perms_anyone_interact"/>
 	<check_box initial_value="false" label="Afficher la barre de contrôles" name="perms_anyone_control"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_media.xml b/indra/newview/skins/default/xui/fr/panel_nearby_media.xml
index d7757b3d9d62a06bf6c14be0b35948913c878b5e..ef5a42555e2987595364e5ceef32effa611f7734 100644
--- a/indra/newview/skins/default/xui/fr/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/fr/panel_nearby_media.xml
@@ -20,7 +20,7 @@
 	</panel>
 	<panel name="nearby_media_panel">
 		<text name="nearby_media">
-			Médias locaux
+			Médias proches
 		</text>
 		<text name="show">
 			Voir :
diff --git a/indra/newview/skins/default/xui/fr/panel_places.xml b/indra/newview/skins/default/xui/fr/panel_places.xml
index f0c40d7e92185b1bf1ae901a38e4b4eb5be24c66..92b0a6c1dbb9bf28b996984845acedc3781cc62a 100644
--- a/indra/newview/skins/default/xui/fr/panel_places.xml
+++ b/indra/newview/skins/default/xui/fr/panel_places.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Lieux" name="places panel">
 	<string name="landmarks_tab_title" value="MES REPÈRES"/>
-	<string name="teleport_history_tab_title" value="HISTORIQUE DES TÉLÉPORTATIONS"/>
+	<string name="teleport_history_tab_title" value="HISTORIQUE DES TÉLÉP."/>
 	<filter_editor label="Filtrer les endroits" name="Filter"/>
 	<panel name="button_panel">
 		<button label="Téléporter" name="teleport_btn" tool_tip="Me téléporter jusqu&apos;à la zone sélectionnée"/>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 9bb18b15594866e04bd56165e17d57beaf4b2983..0ea11bb80f355233493eb680f86455b5cbe16c4c 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -3465,13 +3465,13 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		[NAME] vous a payé [AMOUNT] L$
 	</string>
 	<string name="you_paid_ldollars">
-		Vous avez payé [NAME] [AMOUNT] L$ [REASON].
+		Vous avez payé à [AMOUNT] L$ [REASON].
 	</string>
 	<string name="you_paid_ldollars_no_reason">
-		Vous avez payé [NAME] [AMOUNT] L$.
+		Vous avez payé à [NAME] [AMOUNT] L$.
 	</string>
 	<string name="you_paid_ldollars_no_name">
-		Vous avez payé [AMOUNT] L$ [REASON].
+		Vous avez payé à [AMOUNT] L$ [REASON].
 	</string>
 	<string name="for a parcel of land">
 		pour une parcelle de terrain
@@ -3492,7 +3492,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		pour charger
 	</string>
 	<string name="giving">
-		Donne [AMOUNT] L$
+		Donner [AMOUNT] L$
 	</string>
 	<string name="uploading_costs">
 		Le chargement coûte [AMOUNT] L$
diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml
index 4b361f6fa6b1d4252d7d9639525f5f41cde4182e..bc23c2e8ff8cb912baf860ef42d189a66b7f0cb2 100644
--- a/indra/newview/skins/default/xui/it/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_about_land.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterland" title="INFO SUL TERRENO">
+<floater name="floaterland" title="INFORMAZIONI SUL TERRENO">
 	<floater.string name="maturity_icon_general">
 		&quot;Parcel_PG_Dark&quot;
 	</floater.string>
@@ -19,7 +19,7 @@
 		[SECONDS] secondi
 	</floater.string>
 	<floater.string name="Remaining">
-		restante
+		rimanenti
 	</floater.string>
 	<tab_container name="landtab">
 		<panel label="GENERALE" name="land_general_panel">
@@ -144,7 +144,7 @@ Vai al menu Mondo &gt; Informazioni sul terreno oppure seleziona un altro appezz
 			<button label="Reclama la terra" name="Reclaim Land..."/>
 			<button label="Vendita Linden" name="Linden Sale..." tool_tip="La terra deve essere posseduta, con contenuto impostato, e non già messa in asta."/>
 		</panel>
-		<panel label="COVENANT" name="land_covenant_panel">
+		<panel label="REGOLAMENTO" name="land_covenant_panel">
 			<panel.string name="can_resell">
 				La terra acquistata in questa regione può essere rivenduta.
 			</panel.string>
@@ -208,7 +208,7 @@ o suddivisa.
 				La terra in questa regione non può essere unita/suddivisa.
 			</text>
 		</panel>
-		<panel label="OBJECTS" name="land_objects_panel">
+		<panel label="OGGETTI" name="land_objects_panel">
 			<panel.string name="objects_available_text">
 				[COUNT] dei [MAX] ([AVAILABLE] disponibili)
 			</panel.string>
@@ -219,7 +219,7 @@ o suddivisa.
 				Fattore bonus degli oggetti della regione: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				Uso dei Primative :
+				Uso dei Prim:
 			</text>
 			<text left="214" name="objects_available" width="230">
 				[COUNT] dei [MAX] ([AVAILABLE] dsponibili)
@@ -335,11 +335,11 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
 			<check_box label="Tutti i residenti" name="check other scripts"/>
 			<check_box label="Gruppo" name="check group scripts"/>
 			<text name="land_options_label">
-				Opzioni della terra:
+				Opzioni per il terreno:
 			</text>
 			<check_box label="Sicuro (senza danno)" name="check safe" tool_tip="Se spuntato, imposta il terreno su &apos;sicuro&apos;, disabilitando i danni da combattimento. Se non spuntato, viene abilitato il combattimento a morte."/>
 			<check_box label="Nessuna spinta" name="PushRestrictCheck" tool_tip="Previeni i colpi. Selezionare questa opzione può essere utile per prevenire comportamenti dannosi sul tuo terreno."/>
-			<check_box label="Mostra luogo nel Cerca (L$30/settimana)" name="ShowDirectoryCheck" tool_tip="Lascia che questa terra sia vista dagli altri nei risultati di ricerca"/>
+			<check_box label="Mostra luogo nella ricerca (30 L$/settimana)" name="ShowDirectoryCheck" tool_tip="Lascia che questa terra sia vista dagli altri nei risultati di ricerca"/>
 			<combo_box left="282" name="land category with adult" width="140">
 				<combo_box.item label="Tutte le categorie" name="item0"/>
 				<combo_box.item label="Luogo dei Linden" name="item1"/>
@@ -428,13 +428,13 @@ Media:
 		</panel>
 		<panel label="SUONO" name="land_audio_panel">
 			<check_box label="Nascondi URL" name="hide_music_url" tool_tip="Questa opzione consente di nascondere l&apos;url della musica a chi non è autorizzato a visionare le informazioni di questo parcel."/>
-			<check_box label="Attiva Voice" name="parcel_enable_voice_channel"/>
-			<check_box label="Attiva Voice (stabilito dalla Proprietà)" name="parcel_enable_voice_channel_is_estate_disabled"/>
+			<check_box label="Attiva voce" name="parcel_enable_voice_channel"/>
+			<check_box label="Attiva voce (stabilito dalla proprietà)" name="parcel_enable_voice_channel_is_estate_disabled"/>
 			<check_box label="Limita il chat vocale a questo lotto" name="parcel_enable_voice_channel_local"/>
 		</panel>
 		<panel label="ACCESSO" name="land_access_panel">
 			<panel.string name="access_estate_defined">
-				(Definito dalla Proprietà)
+				(Definito dalla proprietà)
 			</panel.string>
 			<panel.string name="allow_public_access">
 				Consenti accesso pubblico ([MATURITY])
@@ -445,11 +445,11 @@ Media:
 			<text name="Limit access to this parcel to:">
 				Accesso a questo terreno
 			</text>
-			<check_box label="Permetti Accesso Pubblico [MATURITY]" name="public_access"/>
+			<check_box label="Consenti l&apos;accesso pubblico [MATURITY]" name="public_access"/>
 			<text name="Only Allow">
-				Accesso ristretto ai Residenti verificati con:
+				Consenti l&apos;accesso soltanto ai residenti verificati tramite:
 			</text>
-			<check_box label="Informazioni di pagamento on File [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Espelli i residenti non identificati."/>
+			<check_box label="Informazioni di pagamento in archivio [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Espelli i residenti non identificati."/>
 			<check_box label="Verifica dell&apos;età [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Espelli i residenti che non hanno la loro età verificata. Vedi [SUPPORT_SITE] per maggiori informazioni."/>
 			<check_box label="Permetti accesso al gruppo: [GROUP]" name="GroupCheck" tool_tip="Imposta il gruppo nel pannello generale."/>
 			<check_box label="Vendi pass a:" name="PassCheck" tool_tip="Permetti in questo terreno l&apos;accesso temporaneo"/>
diff --git a/indra/newview/skins/default/xui/it/floater_avatar_textures.xml b/indra/newview/skins/default/xui/it/floater_avatar_textures.xml
index b2c963929fed4da8677edbe942a1d0939b26b201..2935f0fdb6b1a9e206db6c38c07545ddcde9a419 100644
--- a/indra/newview/skins/default/xui/it/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/it/floater_avatar_textures.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="avatar_texture_debug" title="AVATAR TEXTURES">
+<floater name="avatar_texture_debug" title="TEXTURE DI AVATAR">
 	<floater.string name="InvalidAvatar">
 		AVATAR NON VALIDO
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/it/floater_beacons.xml b/indra/newview/skins/default/xui/it/floater_beacons.xml
index 8fd69d811d809e614883f454f0eff0739c87e9f5..ca6711468d63f77e96f7d9fc3bd827aad23ef301 100644
--- a/indra/newview/skins/default/xui/it/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/it/floater_beacons.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="beacons" title="BEACONS">
+<floater name="beacons" title="MARCATORI">
 	<panel name="beacons_panel">
 		<text name="label_show">
 			Mostra:
 		</text>
-		<check_box label="Beacons" name="beacons"/>
-		<check_box label="Highlights" name="highlights"/>
-		<text name="beacon_width_label" tool_tip="Beacon width">
+		<check_box label="Marcatori" name="beacons"/>
+		<check_box label="In evidenza" name="highlights"/>
+		<text name="beacon_width_label" tool_tip="Larghezza marcatore">
 			Larghezza:
 		</text>
 		<text name="label_objects">
@@ -15,7 +15,7 @@
 		<check_box label="Fisico" name="physical"/>
 		<check_box label="Scripted" name="scripted"/>
 		<check_box label="Tocca solo" name="touch_only"/>
-		<check_box label="Fonte del Suono" name="sounds"/>
-		<check_box label="Fonte delle Particle" name="particles"/>
+		<check_box label="Fonti sonore" name="sounds"/>
+		<check_box label="Fonti delle particelle" name="particles"/>
 	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_build_options.xml b/indra/newview/skins/default/xui/it/floater_build_options.xml
index 233efef19bbd78060b1ab05d322e0c2c8638a84d..326aab1a317beb7b5d092ce6d98840ba5d37acc1 100644
--- a/indra/newview/skins/default/xui/it/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/it/floater_build_options.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="build options floater" title="GRID OPTIONS">
-	<spinner label="Grid Units (meters)" label_width="192" name="GridResolution" width="250"/>
+<floater name="build options floater" title="OPZIONI DELLA GRIGLIA">
+	<spinner label="Unità griglia (metri)" label_width="192" name="GridResolution" width="250"/>
 	<spinner label="Estensione della griglia (metri)" label_width="192" name="GridDrawSize" width="250"/>
-	<check_box label="Usa allineamento sub-unitario" name="GridSubUnit"/>
-	<check_box label="Guarda le cross-sections" name="GridCrossSection"/>
-	<text name="grid_opacity_label" tool_tip="Opacità della Grid">
+	<check_box label="Usa sottounità" name="GridSubUnit"/>
+	<check_box label="Guarda le sezioni trasversali" name="GridCrossSection"/>
+	<text name="grid_opacity_label" tool_tip="Opacità della griglia">
 		Opacità:
 	</text>
 	<slider label="Trasparenza della griglia" name="GridOpacity" width="250"/>
diff --git a/indra/newview/skins/default/xui/it/floater_buy_currency.xml b/indra/newview/skins/default/xui/it/floater_buy_currency.xml
index 79b8836f3e14962638a484fb26144f0f0ef1bdf3..1327e8b172a10dfd555ddf22279db8a75a3c92c9 100644
--- a/indra/newview/skins/default/xui/it/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/it/floater_buy_currency.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="buy currency" title="COMPRA L$">
+<floater name="buy currency" title="ACQUISTA L$">
 	<floater.string name="buy_currency">
-		Compra L$ [LINDENS] per approx. [LOCALAMOUNT]
+		Acquista [LINDENS] L$ per circa [LOCALAMOUNT]
 	</floater.string>
 	<text font="SansSerifLarge" left="5" name="info_need_more" right="-5">
-		Necessiti di più  L$
+		Ti servono più L$
 	</text>
 	<text name="contacting">
 		Sto contattando il LindeX...
 	</text>
 	<text name="info_buying">
-		COMPRA L$
+		Acquista L$
 	</text>
 	<text name="balance_label">
 		Io ho
@@ -19,7 +19,7 @@
 		[AMT]L$
 	</text>
 	<text name="currency_action" width="45">
-		Io voglio comprare
+		Voglio acquistare
 	</text>
 	<text name="currency_label">
 		L$
@@ -31,10 +31,10 @@
 		Al prezzo
 	</text>
 	<text name="currency_est">
-		approx. [LOCALAMOUNT]
+		circa [LOCALAMOUNT]
 	</text>
 	<text name="getting_data">
-		Calcolando...
+		Stima in corso...
 	</text>
 	<text name="buy_action">
 		[ACTION]
@@ -49,15 +49,15 @@
 		[http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
 	</text>
 	<text name="exchange_rate_note">
-		Ri-scrivi un importo per vedere l&apos;ultimo rapporto di cambio.
+		Riscrivi l&apos;importo per vedere l&apos;ultimo tasso al cambio.
 	</text>
 	<text name="purchase_warning_repurchase">
-		Confermando questo acquisto di soli L$, non l&apos;oggetto.
+		La conferma di questo acquisto compra solo L$, non l&apos;oggetto.
 	</text>
 	<text bottom_delta="16" name="purchase_warning_notenough">
-		Non stai acquistando abbastanza L$. Per favore aumenta l&apos;importo.
+		Non stai acquistando abbastanza L$. Aumenta l&apos;importo.
 	</text>
-	<button label="Compra ora" name="buy_btn"/>
+	<button label="Acquista adesso" name="buy_btn"/>
 	<button label="Cancella" name="cancel_btn"/>
 	<text left="5" name="info_cannot_buy" right="-5">
 		Non in grado di acquistare
diff --git a/indra/newview/skins/default/xui/it/floater_buy_land.xml b/indra/newview/skins/default/xui/it/floater_buy_land.xml
index f4e7a6c2c5929fc49c69802d7d42b53386645975..2e78168209f5888383ac44403ea1886908413f65 100644
--- a/indra/newview/skins/default/xui/it/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_buy_land.xml
@@ -1,29 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="buy land" title="ACQUISTA TERRENO">
 	<floater.string name="can_resell">
-		Può essere rivenduta.
+		Può essere rivenduto.
 	</floater.string>
 	<floater.string name="can_not_resell">
-		Può non essere rivenduta.
+		Può non essere rivenduto.
 	</floater.string>
 	<floater.string name="can_change">
-		Può essere unita o suddivisa.
+		Può essere unito o suddiviso.
 	</floater.string>
 	<floater.string name="can_not_change">
-		Non può essere unita o suddivisa.
+		Non può essere unito o suddiviso.
 	</floater.string>
 	<floater.string name="cant_buy_for_group">
-		Non hai il permesso di comprare terra per il tuo gruppo attivo.
+		Non sei autorizzato ad acquistare terreno per il tuo gruppo attivo.
 	</floater.string>
 	<floater.string name="no_land_selected">
-		Nessuna terra selezionata.
+		Nessun terreno selezionato.
 	</floater.string>
 	<floater.string name="multiple_parcels_selected">
-		Hai selezionato appezzamenti diversi. 
+		Hai selezionato lotti diversi. 
 Prova a selezionare un&apos;area più piccola.
 	</floater.string>
 	<floater.string name="no_permission">
-		Non hai il permesso di comprare terra per il tuo gruppo attivo.
+		Non sei autorizzato ad acquistare terreno per il tuo gruppo attivo.
 	</floater.string>
 	<floater.string name="parcel_not_for_sale">
 		Il terreno selezionato non è in vendita.
@@ -32,7 +32,7 @@ Prova a selezionare un&apos;area più piccola.
 		Il gruppo possiede già il terreno.
 	</floater.string>
 	<floater.string name="you_already_own">
-		Possiedi già il terreno.
+		Sei già proprietario del terreno.
 	</floater.string>
 	<floater.string name="set_to_sell_to_other">
 		Il terreno selezionato è già impostato per la vendita ad un altro gruppo.
@@ -41,7 +41,7 @@ Prova a selezionare un&apos;area più piccola.
 		L&apos;area selezionata non è pubblica.
 	</floater.string>
 	<floater.string name="not_owned_by_you">
-		È selezionato terreno di proprietà di un altro residente. 
+		Hai selezionato terreno di proprietà di un altro residente. 
 Prova a scegliere una superficie più piccola.
 	</floater.string>
 	<floater.string name="processing">
@@ -50,13 +50,13 @@ Prova a scegliere una superficie più piccola.
 (Potrebbe volerci un minuto o due.)
 	</floater.string>
 	<floater.string name="fetching_error">
-		C&apos;e stato un errore mentre si stavano ottenendo le informazioni sull&apos;acquisto della terra.
+		Si &apos;e verificato un errore mentre si stavano ottenendo le informazioni sull&apos;acquisto del terreno.
 	</floater.string>
 	<floater.string name="buying_will">
-		Comprando questa terra:
+		Acuistando il terreno:
 	</floater.string>
 	<floater.string name="buying_for_group">
-		Comprare la terra per il gruppo farà:
+		Acuistando il terreno per il gruppo:
 	</floater.string>
 	<floater.string name="cannot_buy_now">
 		Non puoi comprare ora:
@@ -68,10 +68,10 @@ Prova a scegliere una superficie più piccola.
 		nessuno necessario
 	</floater.string>
 	<floater.string name="must_upgrade">
-		Il tuo tipo di account ha bisogno di un upgrade per possedere terra.
+		Per acquistare terreno devi passare a un livello di abbonamento superiore.
 	</floater.string>
 	<floater.string name="cant_own_land">
-		Il tuo account può possedere terra.
+		Con questo account puoi essere proprietario di terreno.
 	</floater.string>
 	<floater.string name="land_holdings">
 		Sei proprietario di [BUYER] m² di terreno.
@@ -107,12 +107,10 @@ consente [AMOUNT2] oggetti
 [VENDUTO_CON_OGGETTI]
 	</floater.string>
 	<floater.string name="insufficient_land_credits">
-		Il gruppo [GROUP] avrà bisogno di contribuzioni anticipate, mediante crediti d&apos;uso terriero,
-sufficienti a coprire l&apos;area del terreno prima che l&apos;acquisto
-sia completato.
+		Il gruppo [GROUP] avrà bisogno di contributi di crediti di utilizzo terreno sufficienti a coprire il terreno prima che l&apos;acquisto sia completato.
 	</floater.string>
 	<floater.string name="have_enough_lindens">
-		Hai [AMOUNT] L$, che sono sufficienti per comprare questa terra.
+		Hai [AMOUNT] L$, che sono sufficienti per comprare questo terreno.
 	</floater.string>
 	<floater.string name="not_enough_lindens">
 		Hai solo [AMOUNT] L$, ed hai bisogno di altri [AMOUNT2] L$.
@@ -209,7 +207,7 @@ venduto con oggetti
 		<combo_box.item label="US$ 6.00 al mese, addebitato annualmente" name="US$6.00/month,billedannually"/>
 	</combo_box>
 	<text name="land_use_action">
-		Aumenta il tasso di pagamento mensile delle tasse d&apos;uso della terra a 40 US$/mese.
+		Aumenta le tariffe mensili di utilizzo del terreno a 40 US$/mese.
 	</text>
 	<text name="land_use_reason">
 		Tu occupi 1309 m² di terreno.
diff --git a/indra/newview/skins/default/xui/it/floater_customize.xml b/indra/newview/skins/default/xui/it/floater_customize.xml
index 1ace781a7ed88c5d07c2a4288a4b5f40c285e6d5..75ddf43f651c95948d78ca652738fdea6229a0b9 100644
--- a/indra/newview/skins/default/xui/it/floater_customize.xml
+++ b/indra/newview/skins/default/xui/it/floater_customize.xml
@@ -459,7 +459,7 @@
 				[DESC]: non può essere modificato
 			</text>
 			<text name="title_loading">
-				[DESC]: caricando...
+				[DESC]: caricamento in corso...
 			</text>
 			<text name="title_not_worn">
 				[DESC]: non indossato
@@ -470,22 +470,22 @@
 			<text name="not worn instructions">
 				Metti un nuovo tatuaggio trascinandolo dal tuo inventario al avatar. Oppure, crea un nuovo tatuaggio e indossalo.
 			</text>
-			<button label="Crea Nuovo tatuaggio" label_selected="Crea un nuovo tatuaggio" name="Create New"/>
+			<button label="Crea un nuovo tatuaggio" label_selected="Crea un nuovo tatuaggio" name="Create New"/>
 			<text name="no modify instructions">
-				Non hai i permessi per moficare questa vestibilità.
+				Non hai i permessi per modificare questo capo.
 			</text>
 			<text name="Item Action Label">
 				Tatuaggio:
 			</text>
-			<texture_picker label="Tatuaggio della testa" name="Head Tattoo" tool_tip="Clicca per scegliere una foto"/>
+			<texture_picker label="Tatuaggio della testa" name="Head Tattoo" tool_tip="Clicca per scegliere una fotografia"/>
 			<texture_picker label="Tatuaggio superiore" name="Upper Tattoo" tool_tip="Clicca per scegliere una fotografia"/>
-			<texture_picker label="Tatuaggio inferiore" name="Lower Tattoo" tool_tip="Clicca per scegliere una fotografia"/>
+			<texture_picker label="Tattuaggio inferiore" name="Lower Tattoo" tool_tip="Clicca per scegliere una fotografia"/>
 			<button label="Togli" label_selected="Togli" name="Take Off"/>
 			<button label="Salva" label_selected="Salva" name="Save"/>
 			<button label="Salva con nome..." label_selected="Salva con nome..." name="Save As"/>
 			<button label="Ripristina" label_selected="Ripristina" name="Revert"/>
 		</panel>
-		<panel label="Alpha" name="Alpha">
+		<panel label="Alpha (Trasparenza)" name="Alpha">
 			<text name="title">
 				[DESC]
 			</text>
@@ -493,7 +493,7 @@
 				[DESC]: non può essere modificato
 			</text>
 			<text name="title_loading">
-				[DESC]: caricando...
+				[DESC]: caricamento in corso...
 			</text>
 			<text name="title_not_worn">
 				[DESC]: non indossato
@@ -504,18 +504,18 @@
 			<text name="not worn instructions">
 				Metti una nuova alpha mask trascinandola dal tuo inventario al tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo.
 			</text>
-			<button label="Crea nuova alpha" label_selected="Crea nuova alpha" name="Create New"/>
+			<button label="Crea nuovo Alpha" label_selected="Crea nuovo Alpha" name="Create New"/>
 			<text name="no modify instructions">
-				Non hai i permessi per modificare questa vestibilità.
+				Non hai i permessi per modificare questo capo.
 			</text>
 			<text name="Item Action Label">
 				Alpha:
 			</text>
 			<texture_picker label="Alpha inferiore" name="Lower Alpha" tool_tip="Clicca per scegliere una fotografia"/>
-			<texture_picker label="Alpha superiore" name="Upper Alpha" tool_tip="Clicca per scegliere una foto"/>
+			<texture_picker label="Alpha superiore" name="Upper Alpha" tool_tip="Clicca per scegliere una fotografia"/>
 			<texture_picker label="Alpha della testa" name="Head Alpha" tool_tip="Clicca per scegliere una fotografia"/>
 			<texture_picker label="Alpha dell&apos;occhio" name="Eye Alpha" tool_tip="Clicca per scegliere una fotografia"/>
-			<texture_picker label="Alpha dei capelli" name="Hair Alpha" tool_tip="Clicca per scegiere una fotografia"/>
+			<texture_picker label="Alpha dei capelli" name="Hair Alpha" tool_tip="Clicca per scegliere una fotografia"/>
 			<button label="Togli" label_selected="Togli" name="Take Off"/>
 			<button label="Salva" label_selected="Salva" name="Save"/>
 			<button label="Salva con nome..." label_selected="Salva con nome..." name="Save As"/>
diff --git a/indra/newview/skins/default/xui/it/floater_help_browser.xml b/indra/newview/skins/default/xui/it/floater_help_browser.xml
index 93da2a37c993a68d0a35d4805a20d91146324ae3..008643afac38c4f8c0afe4642f51277313a4657f 100644
--- a/indra/newview/skins/default/xui/it/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/it/floater_help_browser.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="HELP BROWSER">
+<floater name="floater_help_browser" title="BROWSER DELL&apos;AIUTO">
 	<floater.string name="loading_text">
 		Caricamento in corso...
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/it/floater_image_preview.xml b/indra/newview/skins/default/xui/it/floater_image_preview.xml
index 341202d8bc29051c9b37e4610cf4f69b65580a2f..6169c0222d4fbb1ead301c38dc51e0bc72d63663 100644
--- a/indra/newview/skins/default/xui/it/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/it/floater_image_preview.xml
@@ -12,15 +12,15 @@ immagine come:
 	</text>
 	<combo_box label="Tipo d&apos;abito" left="120" name="clothing_type_combo" width="166">
 		<combo_box.item label="Immagine" name="Image"/>
-		<combo_box.item label="Capelli" name="Hair"/>
-		<combo_box.item label="Testa Femminile" name="FemaleHead"/>
-		<combo_box.item label="Corpo Femminile Superiore" name="FemaleUpperBody"/>
-		<combo_box.item label="Corpo Femminile Inferiore" name="FemaleLowerBody"/>
-		<combo_box.item label="Testa Maschile" name="MaleHead"/>
-		<combo_box.item label="Corpo Maschile Superiore" name="MaleUpperBody"/>
-		<combo_box.item label="Corpo Maschile Inferiore" name="MaleLowerBody"/>
+		<combo_box.item label="Capigliature" name="Hair"/>
+		<combo_box.item label="Testa femminile" name="FemaleHead"/>
+		<combo_box.item label="Parte superiore del corpo femminile" name="FemaleUpperBody"/>
+		<combo_box.item label="Parte inferiore del corpo femminile" name="FemaleLowerBody"/>
+		<combo_box.item label="Testa maschile" name="MaleHead"/>
+		<combo_box.item label="Parte superiore del corpo maschile" name="MaleUpperBody"/>
+		<combo_box.item label="Parte inferiore del corpo maschile" name="MaleLowerBody"/>
 		<combo_box.item label="Gonna" name="Skirt"/>
-		<combo_box.item label="Sculpted Prim" name="SculptedPrim"/>
+		<combo_box.item label="Prim Sculpted" name="SculptedPrim"/>
 	</combo_box>
 	<text name="bad_image_text">
 		Non è stato possibile leggere l&apos;immagine.
diff --git a/indra/newview/skins/default/xui/it/floater_incoming_call.xml b/indra/newview/skins/default/xui/it/floater_incoming_call.xml
index 22aed7a69cebd7ae8a7fab94a12cc5f1821362cf..81a6ea7a60e2007d18fc2996192188c3aba94c16 100644
--- a/indra/newview/skins/default/xui/it/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/it/floater_incoming_call.xml
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="incoming call" title="UNA PERSONA SCONOSCIUTA STA&apos; CHIAMANDO">
+<floater name="incoming call" title="UNA PERSONA SCONOSCIUTA STA CHIAMANDO">
 	<floater.string name="lifetime">
 		5
 	</floater.string>
 	<floater.string name="localchat">
-		Voice Chat nei dintorni
+		Chat vocale nei dintorni
 	</floater.string>
 	<floater.string name="anonymous">
 		anonimo
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
-		stà chiamando.
+		sta chiamando.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
-		ha aggiunto una chiamata in Voice Chat ad una conferenza in chat.
+		ha aderito ad una chiamata in chat vocale in conferenza.
 	</floater.string>
 	<floater.string name="VoiceInviteGroup">
 		ha accettato una chiamata in Chat vocale con il gruppo [GROUP].
diff --git a/indra/newview/skins/default/xui/it/floater_lagmeter.xml b/indra/newview/skins/default/xui/it/floater_lagmeter.xml
index 93bf11b069c5523e4913f33b2dc4fa3afb7ecc30..f7b2b1ab4a402cb60d0fd64d3819129f52120a4b 100644
--- a/indra/newview/skins/default/xui/it/floater_lagmeter.xml
+++ b/indra/newview/skins/default/xui/it/floater_lagmeter.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_lagmeter" title="LAG METER">
+<floater name="floater_lagmeter" title="MISURATORE LAG">
 	<floater.string name="max_title_msg">
 		Misuratore del lag
 	</floater.string>
@@ -136,7 +136,7 @@
 	<text left="30" name="client_lag_cause" right="-10"/>
 	<button label="" label_selected="" name="network_lagmeter" tool_tip="Stato del lag del network"/>
 	<text name="network">
-		Network
+		Rete
 	</text>
 	<text font="SansSerifSmall" name="network_text">
 		Normale
@@ -150,5 +150,5 @@
 		Normale
 	</text>
 	<text left="30" name="server_lag_cause" right="-32"/>
-	<button label="&gt;&gt;" name="minimize" tool_tip="Pulsante per minimizzare"/>
+	<button label="&gt;&gt;" name="minimize" tool_tip="Cambia dimensioni floater"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_media_settings.xml b/indra/newview/skins/default/xui/it/floater_media_settings.xml
index b99a11b8816fe15c07c035c46901891a3e4bfe7f..d521502a4c68ffdd1d1eda0b5eb9c4c0c1df64cb 100644
--- a/indra/newview/skins/default/xui/it/floater_media_settings.xml
+++ b/indra/newview/skins/default/xui/it/floater_media_settings.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="media_settings" title="IMPOSTAZIONI MEDIA">
 	<button label="OK" label_selected="OK" name="OK"/>
-	<button label="Cancella" label_selected="Cancella" name="Cancel"/>
+	<button label="Annulla" label_selected="Annulla" name="Cancel"/>
 	<button label="Applica" label_selected="Applica" name="Apply"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_nearby_chat.xml b/indra/newview/skins/default/xui/it/floater_nearby_chat.xml
index 364b62fbdb36a5bb4ec16ec1e9228d21b9fa3dc8..9878fe85eac25758a96883b7d9e8ab53dc494a68 100644
--- a/indra/newview/skins/default/xui/it/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/it/floater_nearby_chat.xml
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT VICINA"/>
+<floater name="nearby_chat" title="CHAT NEI DINTORNI"/>
diff --git a/indra/newview/skins/default/xui/it/floater_preferences.xml b/indra/newview/skins/default/xui/it/floater_preferences.xml
index 5ffe7f480254ae83c3d818a7fc5c8ebb344ee161..c5b6654a6926297a6dd9b9cba1c2b7789409e148 100644
--- a/indra/newview/skins/default/xui/it/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/it/floater_preferences.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater min_width="350" name="Preferences" title="PREFERENZE" width="646">
+<floater name="Preferences" title="PREFERENZE">
 	<button label="OK" label_selected="OK" name="OK"/>
 	<button label="Annulla" label_selected="Annulla" name="Cancel"/>
-	<tab_container name="pref core" tab_width="146" width="646">
+	<tab_container name="pref core" tab_width="100">
 		<panel label="Generale" name="general"/>
 		<panel label="Grafica" name="display"/>
 		<panel label="Riservatezza" name="im"/>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
index 41d4fdfce2e3266314d6dd8314def40a7c5ac5b5..4e926cedc9250bd2b645fb40b5296c21488892be 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
@@ -50,18 +50,18 @@
 	<text name="steps_label">
 		Fasi:
 	</text>
-	<button label="Sù" name="up_btn"/>
+	<button label="Su" name="up_btn"/>
 	<button label="Giù" name="down_btn"/>
 	<button label="Elimina" name="delete_btn"/>
 	<radio_group name="animation_trigger_type">
-		<radio_item label="Inizia" name="start"/>
-		<radio_item label="Stop" name="stop"/>
+		<radio_item label="Attiva" name="start"/>
+		<radio_item label="Ferma" name="stop"/>
 	</radio_group>
 	<check_box label="finché le animazioni sono eseguite" left="226" name="wait_anim_check"/>
 	<check_box label="tempo in secondi" name="wait_time_check"/>
 	<line_editor left_delta="114" name="wait_time_editor"/>
 	<text name="help_label">
-		Tutte le fasi avvengono simultaneamente, a meno che non aggiungi una fase attendi.
+		Tutte le fasi avvengono contemporaneamente, a meno che non aggiungi fasi di attesa.
 	</text>
 	<check_box label="Attiva" name="active_check" tool_tip="Le gesture attivate possono essere eseguite scrivendo in chat la parola chiave o premendo i tasti chiave. Le gesture generalmente si disattivano quando c&apos;è un conflitto nei relativi tasti."/>
 	<button label="Anteprima" name="preview_btn"/>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml
index 660b868cae4069554f82a2dec36a45d2836df945..d490416cc7e7de128e11fdfe42f0a83a60f2e244 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="GESTURE SHORTCUT"/>
+<floater name="Gesture" title="SCORCIATOIA GESTURE"/>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml
index 942d5ed1cee7afc05f1767ffe1070470e43ff0b2..eb0bc4d86877e1265bd2d70becba32e4d436b86b 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="TASTO RAPIDO PER GESTURE">
+<floater name="Gesture" title="SCORCIATOIA GESTURE">
 	<text name="trigger_label">
 		Chat:
 	</text>
@@ -8,8 +8,8 @@
 	</text>
 	<combo_box label="Nessuno" name="modifier_combo"/>
 	<combo_box label="Nessuno" name="key_combo"/>
-	<text name="replace_text" tool_tip="Sostituisci la parola chiave con queste parole. Per esempio, parola chiave &apos;ciao&apos; sostituendo con &apos;buongiorno&apos; cambierà la chat da &apos;Io dico ciao&apos; in &apos;Io dico buongiorno&apos; non appena attiverete la gesture!">
+	<text name="replace_text" tool_tip="Sostituisci la parola chiave con queste parole. Per esempio, se si sceglie di sostituire la parola chiave &apos;ciao&apos; con &apos;buongiorno&apos;, nella chat il testo &apos;Volevo dire ciao&apos; diventerà &apos;Volevo dire buongiorno&apos; e verrà attivata la gesture.">
 		Sostituisci:
 	</text>
-	<line_editor name="replace_editor" tool_tip="Sostituisci la parola chiave con queste parole. Per esempio, parola chiave &apos;ciao&apos; sostituendo con &apos;buongiorno&apos; cambierà la chat da &apos;Io dico ciao&apos; in &apos;Io dico buongiorno&apos; non appena attiverete la gesture"/>
+	<line_editor name="replace_editor" tool_tip="Sostituisci la parola chiave con queste parole. Per esempio, se si sceglie di sostituire la parola chiave &apos;ciao&apos; con &apos;buongiorno&apos;, nella chat il testo &apos;Volevo dire ciao&apos; diventerà &apos;Volevo dire buongiorno&apos; e verrà attivata la gesture"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml
index 7c1f55ddbac87850375e755fc8f6051039af7e51..d490416cc7e7de128e11fdfe42f0a83a60f2e244 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="TASTO RAPIDO GESTURE"/>
+<floater name="Gesture" title="SCORCIATOIA GESTURE"/>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml
index 726152d147eb07b88fab4a560f22226c39ba4d48..70e28dde3541c360423bca464b837d2f4667048c 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_notecard.xml
@@ -7,7 +7,7 @@
 		Non hai il permesso di leggere questo biglietto.
 	</floater.string>
 	<floater.string name="Title">
-		Notecard: [NAME]
+		Biglietto: [NAME]
 	</floater.string>
 	<floater.string label="Salva" label_selected="Salva" name="Save">
 		Salva
diff --git a/indra/newview/skins/default/xui/it/floater_preview_texture.xml b/indra/newview/skins/default/xui/it/floater_preview_texture.xml
index e59f707ce73ca36bc2a3df0c9d4b162e894a2efb..5b4054514e3663232160211b72b137a6d243cbcd 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_texture.xml
@@ -10,31 +10,31 @@
 		Descrizione:
 	</text>
 	<text name="dimensions">
-		[WIDTH]px x [HEIGHT]px
+		[WIDTH] px x [HEIGHT] px
 	</text>
 	<text name="aspect_ratio">
 		Antreprima rapporto di visualizzazione
 	</text>
-	<combo_box name="combo_aspect_ratio" tool_tip="Anteprima del rapporto d&apos;aspetto impostato">
+	<combo_box name="combo_aspect_ratio" tool_tip="Anteprima con rapporto di visualizzazione fisso">
 		<combo_item name="Unconstrained">
 			Libero
 		</combo_item>
-		<combo_item name="1:1" tool_tip="Immagine del Gruppo o Profilo nel Mondo Reale">
+		<combo_item name="1:1" tool_tip="Logo del gruppo o profilo nel mondo reale">
 			1:1
 		</combo_item>
-		<combo_item name="4:3" tool_tip="[SECOND_LIFE] profilo">
+		<combo_item name="4:3" tool_tip="Profilo [SECOND_LIFE]">
 			4:3
 		</combo_item>
-		<combo_item name="10:7" tool_tip="Annunci ed elenco del Cerca, landmarks">
+		<combo_item name="10:7" tool_tip="Annunci e inserzioni, punti di riferimento">
 			10:7
 		</combo_item>
-		<combo_item name="3:2" tool_tip="Info sul terreno">
+		<combo_item name="3:2" tool_tip="Informazioni sul terreno">
 			3:2
 		</combo_item>
 		<combo_item name="16:10">
 			16:10
 		</combo_item>
-		<combo_item name="16:9" tool_tip="Preferiti nel Profilo">
+		<combo_item name="16:9" tool_tip="Preferiti del Profilo">
 			16:9
 		</combo_item>
 		<combo_item name="2:1">
@@ -43,5 +43,5 @@
 	</combo_box>
 	<button label="OK" name="Keep"/>
 	<button label="Elimina" name="Discard"/>
-	<button label="Salva come:" name="save_tex_btn"/>
+	<button label="Salva con nome" name="save_tex_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_settings_debug.xml b/indra/newview/skins/default/xui/it/floater_settings_debug.xml
index 3dc7ee010ee2054055ecae0830e02014bc8f0a4e..aab00a26ce47a570fc005ba850b123cfcff48689 100644
--- a/indra/newview/skins/default/xui/it/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/it/floater_settings_debug.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="settings_debug" title="DEBUG SETTINGS">
+<floater name="settings_debug" title="PARAMETRI DI DEBUG">
 	<radio_group name="boolean_combo">
 		<radio_item label="VERO" name="TRUE" value="vero"/>
 		<radio_item label="FALSO" name="FALSE" value=""/>
diff --git a/indra/newview/skins/default/xui/it/floater_sys_well.xml b/indra/newview/skins/default/xui/it/floater_sys_well.xml
index 1acdfa28150149d6026391da7efad8b9bcad4f88..e1c0b899028f492b7c8b35e493dd4077ecce30ab 100644
--- a/indra/newview/skins/default/xui/it/floater_sys_well.xml
+++ b/indra/newview/skins/default/xui/it/floater_sys_well.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="sys_well_window" title="NOTIFICHE">
+<floater name="sys_well_window" title="AVVISI">
 	<string name="title_im_well_window">
 		CONVERSAZIONI
 	</string>
 	<string name="title_notification_well_window">
-		NOTIFICHE
+		AVVISI
 	</string>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_telehub.xml b/indra/newview/skins/default/xui/it/floater_telehub.xml
index 08f5564c7ba251bdaf185485224832f46bfe72c3..15312a8959612c0e5adf512253c20ed5d8b309d0 100644
--- a/indra/newview/skins/default/xui/it/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/it/floater_telehub.xml
@@ -21,9 +21,9 @@
 	<button label="Aggiungi punti rigenerazione" name="add_spawn_point_btn" width="165"/>
 	<button label="Rimuovi punti" left="175" name="remove_spawn_point_btn" width="105"/>
 	<text name="spawn_point_help">
-		Seleziona un oggetto e click &quot;Aggiungi Spawn&quot; per specificare la posizione.
+		Seleziona un oggetto e fai clic su Aggiungi per specificare la posizione.
 Ora puoi spostare o cancellare l&apos;oggetto.
-Le Posizioni sono relative al centro del telehub.
+Le posizioni sono relative al centro del telehub.
 Seleziona un oggetto nella lista per evidenziarlo nel mondo.
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml
index dda957025b6ab67e11cf975028d9fc4ac3a05d81..6ad8d68df27db32729e2491958b3f502979a05a9 100644
--- a/indra/newview/skins/default/xui/it/floater_tools.xml
+++ b/indra/newview/skins/default/xui/it/floater_tools.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="toolbox floater" short_title="STRUMENTI/ATTREZZI PER COSTRUIRE" title="" width="288">
+<floater name="toolbox floater" short_title="STRUMENTI PER COSTRUZIONE" title="" width="288">
 	<floater.string name="status_rotate">
 		Sposta le fasce colorate per ruotare l&apos;oggetto
 	</floater.string>
@@ -16,7 +16,7 @@
 		Clicca e trascina per spostare la camera
 	</floater.string>
 	<floater.string name="status_grab">
-		Trascina per spostare, Ctrl per sollevare, Ctrl+Shift per ruotare
+		Trascina per spostare, Ctrl per sollevare, Ctrl+Maiusc per ruotare
 	</floater.string>
 	<floater.string name="status_place">
 		Clicca inworld per costruire
@@ -50,32 +50,32 @@
 	<radio_group name="focus_radio_group">
 		<radio_item label="Zoom" name="radio zoom"/>
 		<radio_item label="Guarda ruotando (Ctrl)" name="radio orbit"/>
-		<radio_item label="Panoramica (Ctrl+Shift)" name="radio pan"/>
+		<radio_item label="Panoramica (Ctrl+Maiusc)" name="radio pan"/>
 	</radio_group>
 	<radio_group name="move_radio_group">
 		<radio_item label="Muovi" name="radio move"/>
 		<radio_item label="Alza (Ctrl)" name="radio lift"/>
-		<radio_item label="Ruota (Ctrl+Shift)" name="radio spin"/>
+		<radio_item label="Gira (Ctrl+Maiusc)" name="radio spin"/>
 	</radio_group>
 	<radio_group name="edit_radio_group">
 		<radio_item label="Sposta" name="radio position"/>
 		<radio_item label="Ruota (Ctrl)" name="radio rotate"/>
-		<radio_item label="Estendi/Stira???!!!! (Ctrl+Shift)" name="radio stretch"/>
-		<radio_item label="Seleziona Faccia multimediale" name="radio select face"/>
+		<radio_item label="Allunga (Ctrl+Maiusc)" name="radio stretch"/>
+		<radio_item label="Seleziona faccia" name="radio select face"/>
 	</radio_group>
 	<check_box label="Modifica parti collegate" name="checkbox edit linked parts"/>
-	<text name="RenderingCost" tool_tip="Mostra il rendering cost calcolato per questo oggetto">
+	<text name="RenderingCost" tool_tip="Mostra il costo di rendering calcolato per questo oggetto">
 		þ: [COUNT]
 	</text>
 	<check_box label="Ridimens. simmetricamente" name="checkbox uniform"/>
 	<check_box initial_value="true" label="Ridimensiona le texture" name="checkbox stretch textures"/>
-	<check_box initial_value="true" label="Posiziona nella rete???!!!" name="checkbox snap to grid"/>
+	<check_box initial_value="true" label="Posiziona nella griglia" name="checkbox snap to grid"/>
 	<combo_box left_delta="48" name="combobox grid mode" tool_tip="Scegli il tipo di righello per posizionare l&apos;oggetto">
-		<combo_box.item label="Rete del Mondo" name="World"/>
+		<combo_box.item label="Rete del mondo" name="World"/>
 		<combo_box.item label="Rete locale" name="Local"/>
-		<combo_box.item label="Riferimento della rete???!!!!" name="Reference"/>
+		<combo_box.item label="Griglia di riferimento" name="Reference"/>
 	</combo_box>
-	<button label="Opzioni..." label_selected="Opzioni..." name="Options..." tool_tip="Vedi più opzioni delle rete"/>
+	<button label="Opzioni..." label_selected="Opzioni..." name="Options..." tool_tip="Vedi più opzioni della griglia"/>
 	<button label="" label_selected="" name="ToolCube" tool_tip="Cubo"/>
 	<button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/>
 	<button label="" label_selected="" name="ToolPyramid" tool_tip="Piramide"/>
@@ -91,10 +91,10 @@
 	<button label="" label_selected="" name="ToolRing" tool_tip="Anello"/>
 	<button label="" label_selected="" name="ToolTree" tool_tip="Albero"/>
 	<button label="" label_selected="" name="ToolGrass" tool_tip="Erba"/>
-	<check_box label="Mantieni lo strumento/attrezzo selezionato" name="checkbox sticky"/>
-	<check_box label="Seleziona la Copia" name="checkbox copy selection"/>
-	<check_box initial_value="true" label="Centra la Copia" name="checkbox copy centers"/>
-	<check_box label="Ruotare la Copia" name="checkbox copy rotates"/>
+	<check_box label="Mantieni lo strumento selezionato" name="checkbox sticky"/>
+	<check_box label="Copia la selezione" name="checkbox copy selection"/>
+	<check_box initial_value="true" label="Centra la copia" name="checkbox copy centers"/>
+	<check_box label="Ruota la copia" name="checkbox copy rotates"/>
 	<radio_group name="land_radio_group">
 		<radio_item label="Seleziona il terreno" name="radio select land"/>
 		<radio_item label="Appiattisci" name="radio flatten"/>
@@ -114,26 +114,26 @@
 	<text name="Strength:">
 		Potenza
 	</text>
-	<button label="Applica" label_selected="Applica" left="146" name="button apply to selection" tool_tip="Modifica la terra selezionata"/>
+	<button label="Applica" label_selected="Applica" left="146" name="button apply to selection" tool_tip="Modifica il terreno selezionato"/>
 	<text left="134" name="obj_count">
 		Oggetti: [COUNT]
 	</text>
 	<text left="134" name="prim_count">
-		Prims: [COUNT]
+		Prim: [COUNT]
 	</text>
 	<tab_container name="Object Info Tabs" tab_max_width="150" tab_min_width="30" width="288">
 		<panel label="Generale" name="General">
 			<panel.string name="text deed continued">
-				Intesta
+				Cessione
 			</panel.string>
 			<panel.string name="text deed">
 				Cedi al gruppo
 			</panel.string>
 			<panel.string name="text modify info 1">
-				Puoi modificare questo oggetto
+				Tu puoi modificare questo oggetto
 			</panel.string>
 			<panel.string name="text modify info 2">
-				Puoi modificare questi oggetti
+				Tu puoi modificare questi oggetti
 			</panel.string>
 			<panel.string name="text modify info 3">
 				Non puoi modificare questo oggetto
@@ -148,10 +148,10 @@
 				Prezzo: L$
 			</panel.string>
 			<panel.string name="Cost Total">
-				Prezzo Totale: L$
+				Prezzo totale: L$
 			</panel.string>
 			<panel.string name="Cost Per Unit">
-				Prezzo per Unità: L$
+				Prezzo per: L$
 			</panel.string>
 			<panel.string name="Cost Mixed">
 				Prezzo misto
@@ -180,20 +180,20 @@
 			<text name="Group:">
 				Gruppo:
 			</text>
-			<button label="Imposta..." label_selected="Imposta..." name="button set group" tool_tip="Scegli un gruppo per condividere i permessi di questo oggetto"/>
-			<name_box initial_value="Caricando..." name="Group Name Proxy"/>
-			<button label="Intesta" label_selected="Intesta" left_delta="152" name="button deed" tool_tip="Intestando permette di regalare questo oggetto con i permessi del prossimo proprietario. Gli oggetti condivisi dal gruppo posso essere instestati solo da un officer del gruppo." width="98"/>
-			<check_box label="Condividi" name="checkbox share with group" tool_tip="Permetti ai membri del gruppo selezionato di condividere i tuoi permessi modify per questo oggetto. Tu devi Intestare per attivare le restrizioni al ruolo."/>
+			<button label="Imposta..." label_selected="Imposta..." name="button set group" tool_tip="Scegli un gruppo con cui condividere i diritti relativi all&apos;oggetto"/>
+			<name_box initial_value="Caricamento in corso..." name="Group Name Proxy"/>
+			<button label="Cessione" label_selected="Cessione" left_delta="152" name="button deed" tool_tip="Con una cessione si trasferisce il bene con i diritti al proprietario successivo Gli oggetti in proprietà condivisa di gruppo possono essere ceduti soltanto da un funzionario del gruppo." width="98"/>
+			<check_box label="Condividi" name="checkbox share with group" tool_tip="Consenti a tutti i membri del gruppo selezionato di condividere i tuoi diritti di modifica di questo oggetto. Per attivare le restrizioni per ruolo devi prima effettuare la cessione."/>
 			<text name="label click action" width="220">
-				Clicca:
+				Fai clic per:
 			</text>
 			<combo_box name="clickaction" width="192">
-				<combo_box.item label="Tocca (default)" name="Touch/grab(default)"/>
+				<combo_box.item label="Tocca (predefinito)" name="Touch/grab(default)"/>
 				<combo_box.item label="Siediti sull&apos;oggetto" name="Sitonobject"/>
 				<combo_box.item label="Compra l&apos;oggetto" name="Buyobject"/>
 				<combo_box.item label="Paga l&apos;oggetto" name="Payobject"/>
 				<combo_box.item label="Apri" name="Open"/>
-				<combo_box.item label="Zoom" name="Zoom"/>
+				<combo_box.item label="Ingrandisci" name="Zoom"/>
 			</combo_box>
 			<check_box label="In vendita:" name="checkbox for sale"/>
 			<combo_box name="sale type">
@@ -205,7 +205,7 @@
 			<check_box label="Mostra nella ricerca" name="search_check" tool_tip="Permetti che l&apos;oggetto sia visibile nella ricerca"/>
 			<panel name="perms_build">
 				<text name="perm_modify">
-					Puoi modificare questo oggetto
+					Tu puoi modificare questo oggetto
 				</text>
 				<text name="Anyone can:">
 					Chiunque:
@@ -213,11 +213,11 @@
 				<check_box label="Sposta" name="checkbox allow everyone move"/>
 				<check_box label="Copia" name="checkbox allow everyone copy"/>
 				<text name="Next owner can:">
-					Prossimo proprietario:
+					Proprietario successivo:
 				</text>
 				<check_box label="Modificare" name="checkbox next owner can modify"/>
 				<check_box label="Copiare" left_delta="80" name="checkbox next owner can copy"/>
-				<check_box label="Transfer" left_delta="67" name="checkbox next owner can transfer" tool_tip="Il prossimo proprietario può regalare o rivendere questo oggetto"/>
+				<check_box label="Trasferisci" left_delta="67" name="checkbox next owner can transfer" tool_tip="Il prossimo proprietario può regalare o rivendere questo oggetto"/>
 				<text name="B:">
 					B:
 				</text>
@@ -241,7 +241,7 @@
 		<panel label="Oggetto" name="Object">
 			<check_box label="Bloccato" name="checkbox locked" tool_tip="Previene lo spostamento o la cancellazione dell&apos;oggetto. Spesso utile mentre si costruisce per evitare involontarie modifiche."/>
 			<check_box label="Fisico" name="Physical Checkbox Ctrl" tool_tip="Permette all&apos;oggetto di essere spostato e di subire gli effetti della gravità"/>
-			<check_box label="Temporaneo" name="Temporary Checkbox Ctrl" tool_tip="Causa la cancellazione dell&apos;oggetto 1 minuto dopo la sua creazione"/>
+			<check_box label="Temporaneo" name="Temporary Checkbox Ctrl" tool_tip="Determina la cancellazione dell&apos;oggetto 1 minuto dopo la sua creazione"/>
 			<check_box label="Fantasma" name="Phantom Checkbox Ctrl" tool_tip="Rende l&apos;oggetto penetrabile dagli altri oggetti e dagli avatars"/>
 			<text name="label position">
 				Posizione (metri)
@@ -281,7 +281,7 @@
 				<combo_box.item label="Gomma" name="Rubber"/>
 			</combo_box>
 			<text name="text cut">
-				Riduci una sezione (begin/end)
+				Riduci una sezione (inizio/fine)
 			</text>
 			<spinner label="I" name="cut begin"/>
 			<spinner label="F" name="cut end"/>
@@ -301,7 +301,7 @@
 				<combo_box.item label="Triangolare" name="Triangle"/>
 			</combo_box>
 			<text name="text twist">
-				Attorciglia (begin/end)
+				Attorciglia (inizio/fine)
 			</text>
 			<spinner label="I" name="Twist Begin"/>
 			<spinner label="F" name="Twist End"/>
@@ -319,13 +319,13 @@
 			<spinner label="X" name="Shear X"/>
 			<spinner label="Y" name="Shear Y"/>
 			<text name="advanced_cut" width="149">
-				Riduci un bordo (begin/end)
+				Riduci un bordo (inizio/fine)
 			</text>
 			<text name="advanced_dimple">
-				Fossetta???!!!! (begin/end)
+				Scava (inizio/fine)
 			</text>
 			<text name="advanced_slice">
-				Taglia???!!! (begin/end)
+				Taglia (inizio/fine)
 			</text>
 			<spinner label="I" name="Path Limit Begin"/>
 			<spinner label="F" name="Path Limit End"/>
@@ -361,7 +361,7 @@
 			<text name="edit_object">
 				Modifica le caratteristiche dell&apos;oggetto:
 			</text>
-			<check_box label="Flessibilità" name="Flexible1D Checkbox Ctrl" tool_tip="Permetti all&apos;oggetto di flettersi lungo l&apos;asse Z  (Client-side only)"/>
+			<check_box label="Flessibilità" name="Flexible1D Checkbox Ctrl" tool_tip="Consenti all&apos;oggetto di flettersi lungo l&apos;asse Z (solo lato client)"/>
 			<spinner label="Morbidezza" label_width="72" name="FlexNumSections" width="135"/>
 			<spinner label="Gravità" label_width="72" name="FlexGravity" width="135"/>
 			<spinner label="Elasticità" label_width="72" name="FlexFriction" width="135"/>
@@ -372,11 +372,11 @@
 			<spinner label="Forza Z" label_width="72" name="FlexForceZ" width="135"/>
 			<check_box label="Luce" name="Light Checkbox Ctrl" tool_tip="Imposta l&apos;oggetto come sorgente di luce"/>
 			<color_swatch label="" name="colorswatch" tool_tip="Clicca per aprire il selettore dei colori"/>
-			<texture_picker label="" name="light texture control" tool_tip="Clicca per scegliere una proiezione dell&apos;immagine (funziona solo con deferred rendering attivato)"/>
+			<texture_picker label="" name="light texture control" tool_tip="Clicca per scegliere un&apos;immagine da proiettare (funziona solo con il rendering differito attivato)"/>
 			<spinner label="Intensità" label_width="72" name="Light Intensity" width="135"/>
-			<spinner label="FOV" name="Light FOV"/>
+			<spinner label="Angolo di vista" name="Light FOV"/>
 			<spinner label="Raggio" label_width="72" name="Light Radius" width="135"/>
-			<spinner label="Focus" name="Light Focus"/>
+			<spinner label="Centro focale" name="Light Focus"/>
 			<spinner label="Attenuazione" label_width="72" name="Light Falloff" width="135"/>
 			<spinner label="Atmosfera" name="Light Ambiance"/>
 		</panel>
@@ -395,8 +395,7 @@
 			<text name="glow label">
 				Bagliore
 			</text>
-			<check_box bottom_delta="-21" label="Massima 
-luminosità" name="checkbox fullbright"/>
+			<check_box bottom_delta="-21" label="Massima  luminosità" name="checkbox fullbright"/>
 			<text name="tex gen">
 				Applicazione 
 della texture
@@ -438,32 +437,32 @@ della texture
 				<combo_box.item label="Trama" name="weave"/>
 			</combo_box>
 			<text name="tex scale">
-				Ripeti / Lato
+				Ripetizioni / Faccia
 			</text>
 			<spinner label="Orizzontale (U)" name="TexScaleU"/>
 			<check_box label="Inverti" name="checkbox flip s"/>
 			<spinner label="Verticale (V)" name="TexScaleV"/>
 			<check_box label="Inverti" name="checkbox flip t"/>
-			<spinner label="RotazioneËš" left="120" name="TexRot" width="60"/>
-			<spinner label="Ripete / Metri" left="120" name="rptctrl" width="60"/>
-			<button label="Applica" label_selected="Applica" left_delta="72" name="button apply"/>
+			<spinner label="RotazioneËš" name="TexRot" />
+			<spinner label="Ripetizioni / Metro" name="rptctrl" />
+			<button label="Applica" label_selected="Applica" name="button apply"/>
 			<text name="tex offset">
-				Bilanciamento della Texture
+				Bilanciamento della texture
 			</text>
 			<spinner label="Orizzontale (U)" name="TexOffsetU"/>
 			<spinner label="Verticale (V)" name="TexOffsetV"/>
 			<panel name="Add_Media">
 				<text name="media_tex">
-					Media
+					Multimediale
 				</text>
-				<button name="add_media" tool_tip="Aggiungi Media"/>
+				<button name="add_media" tool_tip="Aggiungi media"/>
 				<button name="delete_media" tool_tip="Cancella questa media texture"/>
-				<button name="edit_media" tool_tip="Modifica questo Media"/>
-				<button label="Alllinea" label_selected="Allinea Media" name="button align" tool_tip="Allinea media texture (must load first)"/>
+				<button name="edit_media" tool_tip="Modifica questo media"/>
+				<button label="Alllinea" label_selected="Allinea media" name="button align" tool_tip="Allinea texture del media (il caricamento deve prima essere completato)"/>
 			</panel>
 		</panel>
 		<panel label="Contenuto" name="Contents">
-			<button label="Nuovo Script" label_selected="Nuovo Script" name="button new script"/>
+			<button label="Nuovo Script" label_selected="Nuovo script" name="button new script"/>
 			<button label="Permessi" name="button permissions"/>
 		</panel>
 	</tab_container>
@@ -472,29 +471,22 @@ della texture
 			Informazioni sul terreno
 		</text>
 		<text name="label_area_price">
-			Prezzo: L$[PRICE] per [AREA] m²
+			Prezzo: L$ [PRICE] per [AREA] m²
 		</text>
 		<text name="label_area">
-			Area: [AREA] m²
+			Zona: [AREA] m²
 		</text>
-		<button label="Info sul terreno" label_selected="Info sul terreno" name="button about land" width="156"/>
-		<check_box label="Mostra i proprietari" name="checkbox show owners" tool_tip="Colora i terreni in base ai loro proprietari: 
-
-Verde = il tuo terreno 
-Acqua = la terra del tuo gruppo 
-Rosso = posseduta da altri 
-Giallo = in vendita 
-Viola = in asta 
-Grigia = pubblica"/>
+		<button label="Informazioni sui terreni" label_selected="Informazioni sui terreni" name="button about land" width="156"/>
+		<check_box label="Mostra i proprietari" name="checkbox show owners" tool_tip="Colora i terreni in base ai loro proprietari:   Verde = il tuo terreno  Acqua = la terra del tuo gruppo  Rosso = posseduta da altri  Giallo = in vendita  Viola = in asta  Grigia = pubblica"/>
 		<text name="label_parcel_modify">
 			Modifica il terreno
 		</text>
 		<button label="Suddividi" label_selected="Suddividi" name="button subdivide land" width="156"/>
-		<button label="Aderisci" label_selected="Aderisci" name="button join land" width="156"/>
+		<button label="Iscriviti" label_selected="Iscriviti" name="button join land" width="156"/>
 		<text name="label_parcel_trans">
-			Transazioni del territorio
+			Transazioni terreno
 		</text>
-		<button label="Compra la Terra" label_selected="Compra la Terra" name="button buy land" width="156"/>
-		<button label="Abbandona la Terra" label_selected="Abbandona la Terra" name="button abandon land" width="156"/>
+		<button label="Acquista terreno" label_selected="Acquista terreno" name="button buy land" width="156"/>
+		<button label="Abbandona il terreno" label_selected="Abbandona il terreno" name="button abandon land" width="156"/>
 	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_voice_controls.xml b/indra/newview/skins/default/xui/it/floater_voice_controls.xml
index c2375f357adf36a02f8ffa16df321c4052504103..07368da0dd7f9ec8a254036fd6c4a67c325997e8 100644
--- a/indra/newview/skins/default/xui/it/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/it/floater_voice_controls.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Controlli del Voice">
+<floater name="floater_voice_controls" title="Regolazione voce">
 	<string name="title_nearby">
-		VOICE NEI DINTORNI
+		VOCE NEI DINTORNI
 	</string>
 	<string name="title_group">
-		Chiamata di Gruppo con [GROUP]
+		Chiamata di gruppo con [GROUP]
 	</string>
 	<string name="title_adhoc">
-		Conference Call
+		Chiamata in conferenza
 	</string>
 	<string name="title_peer_2_peer">
-		Chiama con [NAME]
+		Chiamata con [NAME]
 	</string>
 	<string name="no_one_near">
 		Nessuno nei dintorni ha attivato la funzione voce
diff --git a/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml
index a8e07f73a44f537ff8ca88de26115a0c2f8cf742..9abc968b941babdf5011668483183d0b608f3929 100644
--- a/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml
+++ b/indra/newview/skins/default/xui/it/floater_whitelist_entry.xml
@@ -5,5 +5,5 @@
 	</text>
 	<line_editor name="whitelist_entry" tool_tip="Inserisci un URL o una configurazione URL alla lista bianca"/>
 	<button label="OK" name="ok_btn"/>
-	<button label="Cancella" name="cancel_btn"/>
+	<button label="Annulla" name="cancel_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/inspect_object.xml b/indra/newview/skins/default/xui/it/inspect_object.xml
index 7e6d195cb1f64bcde277a45576d6e814ea0c93ae..fd58c18e0be2e49e2a7a0b8ea048a51398a427f0 100644
--- a/indra/newview/skins/default/xui/it/inspect_object.xml
+++ b/indra/newview/skins/default/xui/it/inspect_object.xml
@@ -9,10 +9,10 @@
 	</string>
 	<string name="CreatorAndOwner">
 		Di [CREATOR]
-owner [OWNER]
+proprietario [OWNER]
 	</string>
 	<string name="Price">
-		L$[AMOUNT]
+		L$ [AMOUNT]
 	</string>
 	<string name="PriceFree">
 		Gratis!
@@ -21,14 +21,14 @@ owner [OWNER]
 		Tocca
 	</string>
 	<string name="Sit">
-		Siedi
+		Siediti
 	</string>
-	<button label="Compra" name="buy_btn"/>
+	<button label="Acquista" name="buy_btn"/>
 	<button label="Paga" name="pay_btn"/>
-	<button label="Fai una Copia" name="take_free_copy_btn"/>
+	<button label="Prendi copia" name="take_free_copy_btn"/>
 	<button label="Tocca" name="touch_btn"/>
-	<button label="Siedi" name="sit_btn"/>
+	<button label="Siediti" name="sit_btn"/>
 	<button label="Apri" name="open_btn"/>
-	<icon name="secure_browsing" tool_tip="Secure Browsing"/>
-	<button label="Ulteriore" name="more_info_btn"/>
+	<icon name="secure_browsing" tool_tip="Browsing sicuro"/>
+	<button label="Altro" name="more_info_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/language_settings.xml b/indra/newview/skins/default/xui/it/language_settings.xml
index 71418d446ab9fa71c3512f7f3dc17b1ba1d423a2..82cf789a6b3604341a5bd10692f775fbab539902 100644
--- a/indra/newview/skins/default/xui/it/language_settings.xml
+++ b/indra/newview/skins/default/xui/it/language_settings.xml
@@ -3,9 +3,9 @@
 <strings>
 
 	<!-- Locale Information -->
-	<string name="MicrosoftLocale">english</string>
-	<string name="DarwinLocale">C</string>
-	<string name="LinuxLocale">C</string>
+	<string name="MicrosoftLocale">italian</string>
+	<string name="DarwinLocale">it_IT.UTF-8</string>
+	<string name="LinuxLocale">it_IT.UTF-8</string>
 	
 	<!-- 
 	datetimeToCodes["wkday"]	= "%a";		// Thu
diff --git a/indra/newview/skins/default/xui/it/mime_types_linux.xml b/indra/newview/skins/default/xui/it/mime_types_linux.xml
index 5db3eddca8f1c92af4c9b741d610a4b456ae78d0..3bc30b507a4d0b7354bb47875d97133ef32f5401 100644
--- a/indra/newview/skins/default/xui/it/mime_types_linux.xml
+++ b/indra/newview/skins/default/xui/it/mime_types_linux.xml
@@ -2,24 +2,24 @@
 <mimetypes name="default">
 	<widgetset name="web">
 		<label name="web_label">
-			Contenuto del Web
+			Contenuti Web
 		</label>
 		<tooltip name="web_tooltip">
-			Questo luogo ha un contenuto Web
+			Questo luogo presenta contenuti Web
 		</tooltip>
 		<playtip name="web_playtip">
-			Mostra il contenuto Web
+			Mostra contenuti Web
 		</playtip>
 	</widgetset>
 	<widgetset name="movie">
 		<label name="movie_label">
-			Video
+			Filmato
 		</label>
 		<tooltip name="movie_tooltip">
-			Qui c&apos;è un video da riprodurre
+			C&apos;è un filmato da vedere qui
 		</tooltip>
 		<playtip name="movie_playtip">
-			Riproduci video
+			Riproduci il filmato
 		</playtip>
 	</widgetset>
 	<widgetset name="image">
@@ -27,10 +27,10 @@
 			Immagine
 		</label>
 		<tooltip name="image_tooltip">
-			C&apos;è un immagine in questo luogo
+			C&apos;è un&apos;immagine in questo luogo
 		</tooltip>
 		<playtip name="image_playtip">
-			Guarda l&apos;immagine di questo luogo
+			Vedi l&apos;immagine di questo luogo
 		</playtip>
 	</widgetset>
 	<widgetset name="audio">
@@ -38,25 +38,25 @@
 			Audio
 		</label>
 		<tooltip name="audio_tooltip">
-			In questo luogo c&apos;è l&apos;audio
+			C&apos;è un audio in questo luogo
 		</tooltip>
 		<playtip name="audio_playtip">
-			Riproduci l&apos;audio in questo luogo
+			Riproduci l&apos;audio di questo luogo
 		</playtip>
 	</widgetset>
 	<scheme name="rtsp">
 		<label name="rtsp_label">
-			Real Time Streaming
+			Streaming in tempo reale
 		</label>
 	</scheme>
 	<mimetype name="blank">
 		<label name="blank_label">
-			- Vuoto -
+			- Nessuno -
 		</label>
 	</mimetype>
 	<mimetype name="none/none">
 		<label name="none/none_label">
-			- Vuoto -
+			- Nessuno -
 		</label>
 	</mimetype>
 	<mimetype name="audio/*">
@@ -76,7 +76,7 @@
 	</mimetype>
 	<mimetype name="video/vnd.secondlife.qt.legacy">
 		<label name="vnd.secondlife.qt.legacy_label">
-			Video (QuickTime)
+			Filmato (QuickTime)
 		</label>
 	</mimetype>
 	<mimetype name="application/javascript">
@@ -116,7 +116,7 @@
 	</mimetype>
 	<mimetype name="application/x-director">
 		<label name="application/x-director_label">
-			Direttore Macromedia
+			Macromedia Director
 		</label>
 	</mimetype>
 	<mimetype name="audio/mid">
@@ -186,32 +186,32 @@
 	</mimetype>
 	<mimetype name="video/mpeg">
 		<label name="video/mpeg_label">
-			Video (MPEG)
+			Filmato (MPEG)
 		</label>
 	</mimetype>
 	<mimetype name="video/mp4">
 		<label name="video/mp4_label">
-			Video (MP4)
+			Filmato (MP4)
 		</label>
 	</mimetype>
 	<mimetype name="video/quicktime">
 		<label name="video/quicktime_label">
-			Video (QuickTime)
+			Filmato (QuickTime)
 		</label>
 	</mimetype>
 	<mimetype name="video/x-ms-asf">
 		<label name="video/x-ms-asf_label">
-			Video (Windows Media ASF)
+			Filmato (Windows Media ASF)
 		</label>
 	</mimetype>
 	<mimetype name="video/x-ms-wmv">
 		<label name="video/x-ms-wmv_label">
-			Video (Windows Media WMV)
+			Filmato (Windows Media WMV)
 		</label>
 	</mimetype>
 	<mimetype name="video/x-msvideo">
 		<label name="video/x-msvideo_label">
-			Video (AVI)
+			Filmato (AVI)
 		</label>
 	</mimetype>
 </mimetypes>
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
index ba68816f583a3e5f44b04177aee0363c0efe4b5f..6736c6a6f13dbfafce41d700f8c1070688291654 100644
--- a/indra/newview/skins/default/xui/it/notifications.xml
+++ b/indra/newview/skins/default/xui/it/notifications.xml
@@ -44,10 +44,10 @@
 			<button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
 		</form>
 	</template>
-	<notification functor="GenericAcknowledge" label="Messaggio di Notifica Sconosciuto" name="MissingAlert">
-		La versione di [APP_NAME] non riesce a visualizzare la notifica che ha ricevuto. Verifica di avere l&apos;ultima versione del Viewer installata.
+	<notification functor="GenericAcknowledge" label="Messaggio di notifica sconosciuto" name="MissingAlert">
+		La versione di [APP_NAME] non riesce a visualizzare la notifica appena ricevuta.  Verifica di avere l&apos;ultima versione del Viewer installata.
 
-Dettaglio Errore: La notifica di nome &apos;[_NAME]&apos; non è stata trovata in notifications.xml.
+Dettagli errore: La notifica denominata &apos;[_NAME]&apos; non è stata trovata in notifications.xml.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="FloaterNotFound">
@@ -68,11 +68,11 @@ Dettaglio Errore: La notifica di nome &apos;[_NAME]&apos; non è stata trovata i
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
 	</notification>
 	<notification name="BadInstallation">
-		Errore mentre si aggiornava [APP_NAME].  [http://get.secondlife.com Scarica l&apos;ultima versione] del Viewer.
+		Il programma [APP_NAME] ha riscontrato un&apos;errore durante il tentativo di aggiornamento.  [http://get.secondlife.com Scarica l&apos;ultima versione] del Viewer.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="LoginFailedNoNetwork">
-		Non è possibile connettersi a [SECOND_LIFE_GRID].
+		Non è possibile collegarsi alla [SECOND_LIFE_GRID].
 &apos;[DIAGNOSTIC]&apos;
 Accertati che la tua connessione Internet stia funzionando correttamente.
 		<usetemplate name="okbutton" yestext="OK"/>
@@ -146,7 +146,7 @@ Vuoi concedere i diritti di modifica ai residenti selezionati?
 Non si possono rimuovere membri da quel ruolo.
 I membri devono dimettersi volontariamente dal ruolo.
 Confermi l&apos;operazione?
-		<usetemplate ignoretext="Conferma prima di aggiungere un nuovo Proprietario del Gruppo" name="okcancelignore" notext="No" yestext="Si"/>
+		<usetemplate ignoretext="Conferma prima di aggiungere un nuovo proprietario del gruppo" name="okcancelignore" notext="No" yestext="Si"/>
 	</notification>
 	<notification name="AssignDangerousActionWarning">
 		Stai per aggiungere il potere &apos;[ACTION_NAME]&apos; al ruolo &apos;[ROLE_NAME]&apos;.
@@ -186,10 +186,10 @@ Continuare?
 Non hai abbastanza L$ per iscriverti a questo gruppo.
 	</notification>
 	<notification name="CreateGroupCost">
-		La Creazione di questo gruppo costerà L$100.
-I Gruppi devono avere più di un membro, o saranno cancellati definitivamente.
-Per favore invita altri membri entro le prossime 48 ore.
-		<usetemplate canceltext="Annulla" name="okcancelbuttons" notext="Cancella" yestext="Crea un gruppo per L$100"/>
+		La creazione di questo gruppo costerà L$ 100.
+I gruppi devono avere più di un partecipante, o saranno eliminati definitivamente.
+Invita altri partecipanti entro le prossime 48 ore.
+		<usetemplate canceltext="Annulla" name="okcancelbuttons" notext="Annulla" yestext="Crea un gruppo per L$ 100"/>
 	</notification>
 	<notification name="LandBuyPass">
 		Pagando [COST]L$ puoi entrare in questa terra (&apos;[PARCEL_NAME]&apos;) per [TIME] ore.  Compri un pass?
@@ -205,10 +205,10 @@ Il tuo prezzo di vendità è [SALE_PRICE]L$ ed è autorizzato alla vendita a [NA
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="ConfirmLandSaleToAnyoneChange">
-		ATTENZIONE: Cliccando &apos;vendi a tutti&apos; rende questo terreno disponibile all&apos;intera comunità [SECOND_LIFE], perfino a quelli che non sono in questa regione.
+		ATTENZIONE: Quando selezioni &apos;vendi a tutti&apos;, rendi questo terreno disponibile all&apos;intera comunità di [SECOND_LIFE], anche alle persone che non si trovano in questa regione.
 
-Stai mettendo in vendita il terrendo selezionato di [LAND_SIZE] m².
-Il prezzo di vendità è [SALE_PRICE]L$ e verrà autorizzato alla vendita a [NAME].
+Il terrendo selezionato di [LAND_SIZE] m² sta per essere messo in vendita.
+Il prezzo di vendità sarà [SALE_PRICE]L$ e [NAME] viene autorizzato alla vendita.
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="ReturnObjectsDeededToGroup">
@@ -269,10 +269,10 @@ L&apos;intera regione ha l&apos;abilitazione danni.
 Gli script devono essere autorizzati all&apos;esecuzione affinchè le armi funzionino.
 	</notification>
 	<notification name="MultipleFacesSelected">
-		Multiple facce multimediale sono attualmente selezionate.
-Se prosegui con questa azione, esempi separati del media saranno impostati su facce multimediali dell&apos;oggetto. ???!!!
-Per impostare il media su una sola faccia multimediale, scegli Seleziona Faccia e clicca la faccia desiderata dell&apos;oggetto e poi clicca Aggiungi.
-		<usetemplate ignoretext="Il Media sarà impostato su facce multimediali multiple" name="okcancelignore" notext="Cancella" yestext="OK"/>
+		Sono state selezionate più facce.
+Se prosegui con questa azione, sulle diverse facce dell&apos;oggetto verranno definite sessioni multimediali distinte.
+Per collocare il media su una sola faccia, scegli Seleziona faccia, clicca su una faccia e clicca su Aggiungi.
+		<usetemplate ignoretext="Il canale multimediale sarà impostato su più facce selezionate" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="MustBeInParcel">
 		Devi essere dentro il terreno per impostare il suo Punto di Atterraggio.
@@ -310,8 +310,8 @@ La cartella equipaggiamento non contiene abbigliamento, parti del corpo o attach
 		Non puoi indossare abiti e parti del corpo che sono nel cestino
 	</notification>
 	<notification name="MaxAttachmentsOnOutfit">
-		L&apos;oggetto non può essere attaccato.
-Superato il limite di oggetti attaccati [MAX_ATTACHMENTS]. Per favore prima stacca un altro oggetto.
+		L&apos;oggetto non può essere collegato.
+Superato il limite di oggetti collegati [MAX_ATTACHMENTS]. Per favore prima stacca un altro oggetto.
 	</notification>
 	<notification name="CannotWearInfoNotComplete">
 		Non puoi indossare quell&apos;elemento perchè non è ancora stato caricato. Riprova fra un minuto.
@@ -327,11 +327,11 @@ Hai bisogno di un account per entrare in [SECOND_LIFE]. Ne vuoi creare uno adess
 		<usetemplate name="okcancelbuttons" notext="Riprova" yestext="Crea un nuovo account"/>
 	</notification>
 	<notification name="AddClassified">
-		L&apos;inserzione apparirà nella sezione &apos;Annunci&apos; della Ricerca e su [http://secondlife.com/community/classifieds secondlife.com] per una settimana.
-Compila la tua inserzione, e quindi clicca &apos;Pubblica...&apos; per aggiungerla all&apos;elenco.
-Ti sarà chiesto un prezzo da pagare quando clicchi Pubblica.
-Pagando di più il tuo annuncio apparirà più in alto nella lista, e apparirà anche più in alto quando la gente cerca per Parole Chiavi.
-		<usetemplate ignoretext="Come Creare una nuova Inserzione" name="okcancelignore" notext="Annulla" yestext="OK"/>
+		L&apos;inserzione comparirà nella sezione &apos;Annunci&apos; della Ricerca e su [http://secondlife.com/community/classifieds secondlife.com] per una settimana.
+Compila la tua inserzione, quindi clicca &apos;Pubblica...&apos; per aggiungerla all&apos;elenco degli annunci.
+Quando clicchi su Pubblica, ti verrà chiesto di indicare quale prezzo vuoi pagare.
+Pagando di più, il tuo annuncio comparirà più in alto nella lista delle inserzioni, nonché nei risultati delle ricerche in base a parole chiave.
+		<usetemplate ignoretext="Come creare una nuova inserzione" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="DeleteClassified">
 		Cancella annuncio &apos;[NAME]&apos;?
@@ -339,9 +339,9 @@ Non ci sono rimborsi per la tariffa pagata.
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="DeleteMedia">
-		Hai selezionato la cancellazione del media associato a questa faccia multimediale.
-Sei sicuro di voler continuare?
-		<usetemplate ignoretext="Confemra la cancellazione del multimedia dall&apos;oggetto" name="okcancelignore" notext="No" yestext="Si"/>
+		Hai selezionato la cancellazione del media associato a questa faccia.
+Vuoi continuare?
+		<usetemplate ignoretext="Conferma prima di eliminare elemnti multimediali dall&apos;oggetto" name="okcancelignore" notext="No" yestext="Sì"/>
 	</notification>
 	<notification name="ClassifiedSave">
 		Salva le modifiche all&apos;annuncio [NAME]?
@@ -369,17 +369,17 @@ Sei sicuro di voler continuare?
 		Scegli un item storico da vedere.
 	</notification>
 	<notification name="CacheWillClear">
-		La Cache verrà cancellata dopo la ripartenza di  [APP_NAME].
+		La cache verrà cancellata dopo il riavvio di [APP_NAME].
 	</notification>
 	<notification name="CacheWillBeMoved">
-		La Cache verrà mossa dopo la ripartenza di  [APP_NAME].
-Nota: Questo cancellerà anche la cache.
+		La cache verrà spostata dopo il riavvio di [APP_NAME].
+Nota: questa operazione cancellerà la cache.
 	</notification>
 	<notification name="ChangeConnectionPort">
-		Le importazioni di Porte avranno effetto dopo la ripartenza di [APP_NAME].
+		Le impostazioni della porta avranno effetto dopo il riavvio di [APP_NAME].
 	</notification>
 	<notification name="ChangeSkin">
-		La nuova skin apparirà dopo la ripartenza di  [APP_NAME].
+		La nuova pelle comparirà dopo il riavvio di [APP_NAME].
 	</notification>
 	<notification name="GoToAuctionPage">
 		Vai alla pagina web [SECOND_LIFE] per vedere i dettagli dell&apos;asta oppure fai un&apos;offerta?
@@ -428,8 +428,8 @@ L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
 		C&apos;è stato un problema salvando lo script compilato a causa del seguente motivo: [REASON].  Riprova a salvare lo script più tardi.
 	</notification>
 	<notification name="StartRegionEmpty">
-		Oops, la tua Regione di Inizio non è stata impostata.
-Per favore scrivi il nome della Regione nello spazio Regione di Inizio oppure scegli la mia ultima Ubicazione o Casa Mia come ultima ubicazione.
+		La tua Regione di inizio non è stata definita.
+Per scegliere il luogo dove vuoi trovarti all&apos;accesso, digita il nome della regione nel campo del luogo di partenza oppure scegli La mia ultima Ubicazione o Casa mia.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="CouldNotStartStopScript">
@@ -449,21 +449,21 @@ Visitare [_URL] per ulteriori informazioni?
 		<url name="url" option="0">
 			http://secondlife.com/support/sysreqs.php?lang=it
 		</url>
-		<usetemplate ignoretext="L&apos;hardware di questo computer non è supportato" name="okcancelignore" notext="No" yestext="Si"/>
+		<usetemplate ignoretext="L&apos;hardware di questo computer non è compatibile" name="okcancelignore" notext="No" yestext="Si"/>
 	</notification>
 	<notification name="UnknownGPU">
 		Il tuo sistema utilizza una scheda grafica che [APP_NAME] non riconosce.
 Questo succede spesso con un nuovo hardware che non è stato ancora testato con [APP_NAME].  Probabilmente tutto andrà bene, ma devi riconfigurare le tue impostazioni grafiche.
 (Io &gt; Preferenze &gt; Grafica).
 		<form name="form">
-			<ignore name="ignore" text="La mia scheda grafica non è stata identificata"/>
+			<ignore name="ignore" text="La tua scheda grafica non è stata riconosciuta"/>
 		</form>
 	</notification>
 	<notification name="DisplaySettingsNoShaders">
-		[APP_NAME] si è interrotta mentre stava inizializzando i driver grafici.
-La Qualità Grafica verrà impostata a Basso per evitare alcuni errori comuni di driver. Questo disabiliterà alcune caratteristiche grafiche.
-Si raccomanda di aggiornare i driver della scheda grafica.
-La Qualità Grafica può essere aumentata in Preferenze &gt; Grafica.
+		L&apos;esecuzione di [APP_NAME] si è interrotta durante l&apos;inizializzazione dei driver grafici.
+La qualità grafica verrà impostata a livello basso per evitare alcuni errori comuni di driver. Alcune funzionalità grafiche saranno disattivate.
+Si consiglia di aggiornare i driver della scheda grafica.
+La qualità grafica può essere aumentata in Preferenze &gt; Grafica.
 	</notification>
 	<notification name="RegionNoTerraforming">
 		La regione [REGION] non consente di terraformare.
@@ -618,7 +618,7 @@ Attese [VALIDS]
 		Impossibile creare il file in uscita: [FILE]
 	</notification>
 	<notification name="DoNotSupportBulkAnimationUpload">
-		[APP_NAME] non supporta ancora l&apos;upload in blocco di file di animazione.
+		[APP_NAME] non supporta ancora il caricamento in blocco di file di animazione.
 	</notification>
 	<notification name="CannotUploadReason">
 		Impossibile importare il file [FILE] a causa del seguente motivo: [REASON]
@@ -654,7 +654,7 @@ Seleziona oggetti con degli script.
 Seleziona oggetti con script su cui hai i permessi di modifica.
 	</notification>
 	<notification name="CannotOpenScriptObjectNoMod">
-		Impossibile aprire la script dell&apos;oggetto senza i permessi modify.
+		Impossibile aprire la script dell&apos;oggetto senza i diritti di modifica.
 	</notification>
 	<notification name="CannotSetRunningSelectObjectsNoScripts">
 		Impossibile mettere &apos;in esecuzione&apos; gli script.
@@ -683,12 +683,12 @@ Ho cercato: [FINALQUERY]
 [REASON]
 	</notification>
 	<notification name="invalid_tport">
-		E&apos; stato incontrato un problema eseguendo la tua richiesta di teleport. Potresti avere bisogno di riloggarti per ritentare il teleport.
-Se continui a ricevere questo errore, controlla [SUPPORT_SITE].
+		C&apos;è stato un problema nell&apos;elaborare la tua richiesta di teleport. Potresti dover effettuare nuovamente l&apos;accesso prima di poter usare il teleport.
+Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE].
 	</notification>
 	<notification name="invalid_region_handoff">
-		Ci sono stati problemi eseguendo il passaggio di regione. Potresti avere bisogno di riloggarti per ritentare il passaggio di regione.
-Se continui a ricevere questo errore, controlla  [SUPPORT_SITE].
+		Si è verificato un problema nel tentativo di attraversare regioni. È possibile che per potere attraversare le regioni, tu debba effettuare nuovamente l&apos;accesso.
+Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE].
 	</notification>
 	<notification name="blocked_tport">
 		Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema.
@@ -757,7 +757,7 @@ Nessun terreno selezionato.
 Non riesco a trovare la regione dove è situato il terreno.
 	</notification>
 	<notification name="CannotCloseFloaterBuyLand">
-		Non puoi chiudere la finestra di Acquisto Terreno finchè [APP_NAME] non finisce di stimare il prezzo di questa transazione.
+		Non puoi chiudere la finestra Acquista terreno finché [APP_NAME] non finisce di stimare il prezzo di questa transazione.
 	</notification>
 	<notification name="CannotDeedLandNothingSelected">
 		Impossibile cedere il terreno:
@@ -768,8 +768,8 @@ Nessun terreno selezionato.
 Nessun gruppo selezionato.
 	</notification>
 	<notification name="CannotDeedLandNoRegion">
-		Non è possibile donare il terreno:
-Non riesco a trovare la regione in cui si trova.
+		Non è possibile effettuare la cessione del terreno:
+Impossibile trovare la regione in cui si trova il terreno.
 	</notification>
 	<notification name="CannotDeedLandMultipleSelected">
 		Impossibile cedere il terreno:
@@ -806,7 +806,7 @@ I terreni di tua proprietà vengono visualizzati in verde.
 	</notification>
 	<notification name="CannotReleaseLandRegionNotFound">
 		Non è possibile abbandonare il terreno:
-Non riesco a trovare la regione in cui si trova.
+Impossibile trovare la regione in cui si trova il terreno.
 	</notification>
 	<notification name="CannotReleaseLandNoTransfer">
 		Impossibile abbandonare il terreno:
@@ -844,11 +844,11 @@ Dividi il terreno?
 	</notification>
 	<notification name="CannotDivideLandNoRegion">
 		Non è possibile suddividere il terreno:
-Non riesco a trovare la regione in cui si trova.
+Impossibile trovare la regione in cui si trova il terreno.
 	</notification>
 	<notification name="CannotJoinLandNoRegion">
 		Non è possibile unire il terreno:
-Non riesco a trovare la regione in cui si trova.
+Impossibile trovare la regione in cui si trova il terreno.
 	</notification>
 	<notification name="CannotJoinLandNothingSelected">
 		Impossibile unire il terreno:
@@ -895,7 +895,7 @@ Unisci il terreno?
 	</notification>
 	<notification name="CannotSaveToAssetStore">
 		Non è possibile salvare [NAME] nel database centrale degli asset.
-Questo normalmente è un problema temporaneo. Riadatta e salva i vestiti e riprova fra qualche minuto.
+In genere si tratta di un problema temporaneo. Attendi alcuni minuti per modificare e salvare nuovamente gli elementi indossabili.
 	</notification>
 	<notification name="YouHaveBeenLoggedOut">
 		Accidenti. Sei stato scollegato da [SECOND_LIFE]
@@ -1060,35 +1060,36 @@ Cedi questo terreno di [AREA] m² al gruppo &apos;[GROUP_NAME]&apos;?
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="AvatarMovedDesired">
-		L&apos;ubicazione desiderata non è attualmente disponibile. Sei stato trasportato in una regione vicina.
+		L&apos;ubicazione prescelta non è attualmente disponibile.
+Sei stato trasferito in una regione vicina.
 	</notification>
 	<notification name="AvatarMovedLast">
-		La tua ultima ubicazione non è al momento disponibile.
-Sei stato trasferito in una regione vicina .
+		La tua ultima posizione non è al momento disponibile.
+Sei stato trasferito in una regione vicina.
 	</notification>
 	<notification name="AvatarMovedHome">
 		L&apos;ubicazione di casa tua non è al momento disponibile.
-Sei stato trasferito in un&apos;ubicazione vicina.
-Potresti impostare una nuova ubicazione.
+Sei stato trasferito in una regione vicina.
+Ti consigliamo di impostare una nuova posizione iniziale.
 	</notification>
 	<notification name="ClothingLoading">
-		Sto ancora scaricando i tuoi abiti.
-Puoi comunque usare [SECOND_LIFE] normalmente e gli altri ti vedranno correttamente.
+		Gli abiti sono in corso di scaricamento.
+Puoi comunque usare [SECOND_LIFE] normalmente e gli altri residenti ti vedranno correttamente.
 		<form name="form">
-			<ignore name="ignore" text="Lo scarico degli abiti sta impiegando parecchio tempo"/>
+			<ignore name="ignore" text="Lo scaricamento sta richiedendo parecchio tempo"/>
 		</form>
 	</notification>
 	<notification name="FirstRun">
-		L&apos;installazione di [APP_NAME] è completa.
+		L&apos;installazione di [APP_NAME] è terminata.
 
-Se questa è la prima volta che usi [SECOND_LIFE], devi creare un account prima che tu possa fare il log in.
-Vuoi ritornare su [http://join.secondlife.com secondlife.com] per creare un nuovo account?
+Se questa è la prima volta che usi [SECOND_LIFE], devi creare un account prima che tu possa effettuare l&apos;accesso.
+Vuoi tornare a [http://join.secondlife.com secondlife.com] per creare un nuovo account?
 		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Nuovo Account..."/>
 	</notification>
 	<notification name="LoginPacketNeverReceived">
-		Ci sono problemi di connessione. Può darsi che siano nella tua connessione Internet oppure in [SECOND_LIFE_GRID].
+		Ci sono problemi di connessione. È possibile che ci siano problemi con la tua connessione Internet oppure sulla [SECOND_LIFE_GRID].
 
-Puoi controllare la tua connessione Internet e riprovare fra qualche minuto, oppure cliccare Aiuto per vedere il [SUPPORT_SITE], oppure cliccare Teleport per tentare di teleportarti a casa.
+Controlla la tua connessione Internet e riprova fra qualche minuto, oppure clicca su Aiuto per visualizzare la pagina [SUPPORT_SITE], oppure clicca su Teleport per tentare il teleport a casa tua.
 		<url name="url">
 			http://it.secondlife.com/support/
 		</url>
@@ -1110,10 +1111,10 @@ Scegli un avatar maschile o femminile. Puoi sempre cambiare idea più tardi.
 		[NAME] [PRICE]L$ Non hai abbastanza L$ per farlo.
 	</notification>
 	<notification name="GrantedModifyRights">
-		[NAME] ti ha dato il permesso di editare i suoi oggetti.
+		[NAME] ti ha dato il permesso di modificare i suoi oggetti.
 	</notification>
 	<notification name="RevokedModifyRights">
-		Ti è stato revocato il permesso di modificare gli oggetti di [NAME]
+		Non sei più autorizzato a modificare gli oggetti di [NAME]
 	</notification>
 	<notification name="FlushMapVisibilityCaches">
 		Questo reinizializzerà la cache della mappa di questa regione.
@@ -1192,107 +1193,107 @@ Imposta l&apos;oggetto per la vendita e riprova.
 [DOWNLOAD_PATH].
 	</notification>
 	<notification name="DownloadWindowsMandatory">
-		E&apos; disponibile una nuova versione di [APP_NAME].
+		È disponibile una nuova versione di [APP_NAME].
 [MESSAGE]
-Devi scaricarla per usare  [APP_NAME].
+Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
 		<usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica l&apos;aggiornamento"/>
 	</notification>
 	<notification name="DownloadWindows">
-		E&apos; disponibile una versione aggiornata di [APP_NAME].
+		È disponibile una versione aggiornata di [APP_NAME].
 [MESSAGE]
-Questo aggiornamento non è obbligatorio, ma è consigliabile installarlo per migliorare le prestazioni e la stabilità.
+Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
 		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
 	</notification>
 	<notification name="DownloadWindowsReleaseForDownload">
-		E&apos; disponibile una versione aggiornata di [APP_NAME].
+		È disponibile una versione aggiornata di [APP_NAME].
 [MESSAGE]
-Questo aggiornamento non è obbligatorio, ma è consigliabile installarlo per migliorare le prestazioni e la stabilità.
+Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
 		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
 	</notification>
 	<notification name="DownloadLinuxMandatory">
-		Una nuova versione di [APP_NAME] è disponibile.
+		È disponibile una nuova versione di [APP_NAME].
 [MESSAGE]
-Devi scaricare questo aggiornamento per utilizzarlo [APP_NAME].
-		<usetemplate name="okcancelbuttons" notext="Esci" yestext="Download"/>
+Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
+		<usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica"/>
 	</notification>
 	<notification name="DownloadLinux">
-		E&apos; disponibile una versione aggiornata di [APP_NAME].
+		È disponibile una versione aggiornata di [APP_NAME].
 [MESSAGE]
-Questo aggiornamento non è necessario, ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
-		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Download"/>
+Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
+		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica"/>
 	</notification>
 	<notification name="DownloadLinuxReleaseForDownload">
-		E&apos; disponibile una versione aggiornata di [APP_NAME].
+		È disponibile una versione aggiornata di [APP_NAME].
 [MESSAGE]
-Questo aggiornamento non è obbligatorio, ma è consigliata l&apos;installazione per migliorare le prestazioni e l&apos;affidabilità.
-		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Download"/>
+Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
+		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica"/>
 	</notification>
 	<notification name="DownloadMacMandatory">
-		E&apos; disponibile una nuova versione di [APP_NAME].
+		È disponibile una nuova versione di [APP_NAME].
 [MESSAGE]
-Devi scaricarla per usare [APP_NAME].
+Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
 
-Scarico nella cartella Applicazioni?
+Scaricare nella cartella Applicazioni?
 		<usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica l&apos;aggiornamento"/>
 	</notification>
 	<notification name="DownloadMac">
-		E&apos; disponibile una versione aggiornata di [APP_NAME].
+		È disponibile una versione aggiornata di [APP_NAME].
 [MESSAGE]
-Questo aggiornamento non è obbligatorio, ma è consigliabile installarlo per migliorare le prestazioni e la stabilità.
+Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
 
-Scarico nella cartella Applicazioni?
+Scaricare nella cartella Applicazioni?
 		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
 	</notification>
 	<notification name="DownloadMacReleaseForDownload">
-		E&apos; disponibile una versione aggiornata di [APP_NAME].
+		È disponibile una versione aggiornata di [APP_NAME].
 [MESSAGE]
-Questo aggiornamento non è obbligatorio, ma è consigliabile installarlo per migliorare le prestazioni e la stabilità.
+Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
 
-Scarico nella cartella Applicazioni?
+Scaricare nella cartella Applicazioni?
 		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
 	</notification>
 	<notification name="DeedObjectToGroup">
 		La cessione di questo oggetto farà in modo che il gruppo:
 * Riceva i L$ pagati all&apos;oggetto
-		<usetemplate ignoretext="Conferma la donazione di un oggetto al gruppo" name="okcancelignore" notext="Annulla" yestext="Cedi"/>
+		<usetemplate ignoretext="Conferma la cessione di un oggetto al gruppo" name="okcancelignore" notext="Annulla" yestext="Cedi"/>
 	</notification>
 	<notification name="WebLaunchExternalTarget">
-		Vuoi aprire il browser per vedere questo contenuto?
-		<usetemplate ignoretext="Lancia il browser per vedere la pagina web" name="okcancelignore" notext="Annulla" yestext="OK"/>
+		Vuoi aprire il browser per vedere questi contenuti?
+		<usetemplate ignoretext="Lancia il browser per consultare una pagina web" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="WebLaunchJoinNow">
 		Vuoi andare su [http://secondlife.com/account/ Dashboard] per gestire il tuo account?
-		<usetemplate ignoretext="Lancia il browser pe gestire il mio account" name="okcancelignore" notext="Annulla" yestext="OK"/>
+		<usetemplate ignoretext="Lancia il browser per gestire il mio account" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="WebLaunchSecurityIssues">
 		Visita la Wiki di [SECOND_LIFE] per i dettagli su come segnalare un problema di sicurezza.
-		<usetemplate ignoretext="Lancia il browser per imparare a segnalare un Problema di Sicurezza" name="okcancelignore" notext="Annulla" yestext="OK"/>
+		<usetemplate ignoretext="Lancia il browser per imparare a segnalare un problema di sicurezza" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="WebLaunchQAWiki">
 		Visita il controllo di qualità Wiki [SECOND_LIFE].
-		<usetemplate ignoretext="Lancia il browser per vedere il QA Wiki" name="okcancelignore" notext="Annulla" yestext="OK"/>
+		<usetemplate ignoretext="Lancia il browser per vedere la pagina Wiki sul controllo di qualità" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="WebLaunchPublicIssue">
 		Visita il registro pubblico dei problemi di [SECOND_LIFE], dove puoi segnalare bug ed altri problemi.
-		<usetemplate ignoretext="Lancia il browser per vedere il Registro dei Problemi Pubblici" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
+		<usetemplate ignoretext="Lancia il browser per vedere il registro pubblico di monitoraggio dei problemi" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
 	</notification>
 	<notification name="WebLaunchSupportWiki">
 		Vai al blog ufficiale Linden, per le ultime notizie ed informazioni.
 		<usetemplate ignoretext="Lancia il browser per vedere il blog" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="WebLaunchLSLGuide">
-		Vuoi aprire la Guida per lo Scripting per avere aiuto con lo scripting?
-		<usetemplate ignoretext="Lancia il browser per vedere la Guida per lo Scripting" name="okcancelignore" notext="Annulla" yestext="OK"/>
+		Vuoi aprire la Guida per lo scripting per avere aiuto con lo scripting?
+		<usetemplate ignoretext="Lancia il browser per vedere la Guida per lo scripting" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="WebLaunchLSLWiki">
-		Vuoi visitare il Portale LSL per avere aiuto con lo Scripting?
+		Vuoi visitare il Portale LSL per avere aiuto con lo scripting?
 		<usetemplate ignoretext="Lancia il browser per vedere il Portale LSL" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
 	</notification>
 	<notification name="ReturnToOwner">
 		Confermi di voler restituire gli oggetti selezionati ai loro proprietari? Gli oggetti trasferibili ceduti al gruppo, verranno restituiti ai proprietari precedenti.
 
 *ATTENZIONE* Gli oggetti ceduti non trasferibili verranno cancellati!
-		<usetemplate ignoretext="Conferma la restituzione degli oggetti ai loro proprietari" name="okcancelignore" notext="Annulla" yestext="OK"/>
+		<usetemplate ignoretext="Conferma prima di restituire gli oggetti ai relativi proprietari" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="GroupLeaveConfirmMember">
 		Sei attualmente un membro del gruppo [GROUP].
@@ -1304,14 +1305,14 @@ Vuoi lasciare il gruppo?
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli tutti i residenti"/>
 	</notification>
 	<notification name="MuteLinden">
-		Mi dispiace, non puoi bloccare un Linden.
+		Spiacenti, non puoi bloccare un Linden.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="CannotStartAuctionAlreadyForSale">
 		Non è possibile mettere in vendita all&apos;asta un terreno che è già impostato per la vendita. Disabilita la vendita del terreno, se sei certo di voler avviare una vendita all&apos;asta.
 	</notification>
-	<notification label="E&apos; fallito Il Blocco dell&apos;Oggetto" name="MuteByNameFailed">
-		Hai già bloccato questo nome.
+	<notification label="Il blocco dell&apos;oggetto in base al nome non è riuscito," name="MuteByNameFailed">
+		hai già bloccato questo nome.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="RemoveItemWarn">
@@ -1328,9 +1329,9 @@ Vuoi cancellare quell&apos;elemento?
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="BusyModeSet">
-		E&apos; stata impostata la modalità Non Disponibile.
-La Chat e gli IM verranno nascosti. Gli IM riceveranno la tua risposta di Non Disponibile. Tutte le offerte di teleport verranno declinate. Tutte le offerte di Inventory andranno nel Cestino.
-		<usetemplate ignoretext="Cambio il mio stato in Non Disponibile" name="okignore" yestext="OK"/>
+		È stata impostata la modalità Non disponibile.
+La chat e gli IM verranno nascosti. Gli IM riceveranno la tua risposta di Non disponibile. Tutte le offerte di teleport verranno rifiutate. Tutte le offerte di Inventario andranno nel Cestino.
+		<usetemplate ignoretext="Cambio il mio stato sulla modalità Non disponibile" name="okignore" yestext="OK"/>
 	</notification>
 	<notification name="JoinedTooManyGroupsMember">
 		Hai raggiunto il numero massimo di gruppi. Per favore abbandona almeno un gruppo prima di aderire a questo, oppure declina l&apos;offerta.
@@ -1403,15 +1404,15 @@ La Chat e gli IM verranno nascosti. Gli IM riceveranno la tua risposta di Non Di
 	</notification>
 	<notification name="TeleportFromLandmark">
 		Sei sicuro di volere il teleport a &lt;nolink&gt;[LOCATION]&lt;/nolink&gt;?
-		<usetemplate ignoretext="Conferma il teleport verso un Landmark" name="okcancelignore" notext="Annulla" yestext="Teleportati"/>
+		<usetemplate ignoretext="Conferma il teleport verso un punto di riferimento" name="okcancelignore" notext="Annulla" yestext="Teleportati"/>
 	</notification>
 	<notification name="TeleportToPick">
 		Teleport a [PICK]?
-		<usetemplate ignoretext="Conferma il teleport verso l&apos;ubicazione nei Posti Consigliati" name="okcancelignore" notext="Annulla" yestext="Teleport"/>
+		<usetemplate ignoretext="Conferma che voglio il teleport verso l&apos;ubicazione nei Luoghi preferiti" name="okcancelignore" notext="Annulla" yestext="Teleport"/>
 	</notification>
 	<notification name="TeleportToClassified">
 		Teleport a [CLASSIFIED]?
-		<usetemplate ignoretext="Confermo il teleport verso questa ubicazione negli Annunci" name="okcancelignore" notext="Cancella" yestext="Teleport"/>
+		<usetemplate ignoretext="Conferma il teleport verso questa posizione negli annunci" name="okcancelignore" notext="Annulla" yestext="Teleport"/>
 	</notification>
 	<notification label="Manda un messaggio a tutti nella tua proprietà" name="MessageEstate">
 		Scrivi un annuncio breve che verrà mandato a tutti quelli che sono in questo momento nella tua proprietà.
@@ -1489,19 +1490,19 @@ Vuoi andare alla Knowledge Base per ulteriori informazioni sulle categorie di ac
 		<url name="url">
 			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
 		</url>
-		<usetemplate ignoretext="Non posso entrare in questa Regione, a causa delle restrizioni sulla Categoria di Accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
+		<usetemplate ignoretext="Non posso entrare in questa regione a causa delle restrizioni della categoria di accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
 	</notification>
 	<notification name="RegionEntryAccessBlocked_Notify">
 		Non sei ammesso in questa regione a causa della tua categoria d&apos;accesso.
 	</notification>
 	<notification name="RegionEntryAccessBlocked_Change">
-		Non ti è consentito entrare in quella Regione a causa della tua Categoria di Accesso impostata nelle Preferenze.
+		Non ti è consentito entrare in quella regione a causa della tua categoria di accesso impostata nelle preferenze.
 
-Puoi cliccare su &apos;Cambia Preferenze&apos; per alzare la tua preferenza di Categoria di Accesso e quindi riuscire ad entrare. Sarai in grado di ricercare e di accedere da adesso in poi contenuto [REGIONMATURITY]. Se più tardi volessi cambiare di nuovo le tue impostazioni, vai su Me &gt; Preferenze &gt; Generali.
+Puoi cliccare su Cambia preferenze per modificare la categoria di accesso e quindi riuscire ad entrare. Da adesso potrai accedere ai contenuti [REGIONMATURITY] ed effettuare ricerche in questa categoria. Se in seguito tu volessi cambiare di nuovo le tue impostazioni, apri la finestra di dialogo da Io &gt; Preferenze &gt; Generale.
 		<form name="form">
-			<button name="OK" text="Cambia Preferenza"/>
+			<button name="OK" text="Cambia preferenza"/>
 			<button default="true" name="Cancel" text="Chiudi"/>
-			<ignore name="ignore" text="Le mie preferenze attivate nel Rating (Classificazione) prevengono il mio ingresso in una Regione"/>
+			<ignore name="ignore" text="La categoria di accesso impostata mi impedisce di entrare in una regione"/>
 		</form>
 	</notification>
 	<notification name="LandClaimAccessBlocked">
@@ -1517,16 +1518,16 @@ Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di acc
 		<url name="url">
 			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
 		</url>
-		<usetemplate ignoretext="Non posso richiedere questo Terreno, a causa delle restrizioni sulla Categoria di Accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
+		<usetemplate ignoretext="Non posso richiedere questo terreno a causa delle restrizioni della categoria di accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
 	</notification>
 	<notification name="LandClaimAccessBlocked_Notify">
 		Non puoi prendere possesso di questa terra a causa della tua categoria di accesso.
 	</notification>
 	<notification name="LandClaimAccessBlocked_Change">
-		Non puoi richiedere questo Terreno a causa delle tue preferenze di Categoria di Accesso.
+		Non puoi richiedere questo terreno a causa della tua categoria di accesso.
 
-Puoi cliccare su &apos;Cambia Preferenze&apos; per alzare la tua preferenza di Categoria di Accesso e quindi riuscire ad entrare. Sarai in grado di ricercare e di accedere da adesso in poi contenuto [REGIONMATURITY]. Se più tardi volessi cambiare di nuovo le tue impostazioni, vai su Me &gt; Preferenze &gt; Generali.
-		<usetemplate ignoretext="Le mie preferenze di Categoria di Accesso mi impediscono di chiedere questo Terreno" name="okcancelignore" notext="Chiudi" yestext="Cambia le preferenze"/>
+Puoi cliccare su Cambia preferenze per modificare la categoria di accesso e quindi riuscire ad entrare. Da adesso potrai accedere ai contenuti [REGIONMATURITY] ed effettuare ricerche in questa categoria. Se in seguito tu volessi cambiare di nuovo le tue impostazioni, apri la finestra di dialogo da Io &gt; Preferenze &gt; Generale.
+		<usetemplate ignoretext="Le mie preferenze di categoria di accesso mi impediscono di richiedere terreno" name="okcancelignore" notext="Chiudi" yestext="Cambia le preferenze"/>
 	</notification>
 	<notification name="LandBuyAccessBlocked">
 		Non puoi acquistare questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età.
@@ -1541,16 +1542,16 @@ Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di acc
 		<url name="url">
 			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
 		</url>
-		<usetemplate ignoretext="Non posso comprare questo Terreno , a causa delle restrizioni della Categoria di Accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
+		<usetemplate ignoretext="Non posso acquistare questo terreno a causa delle restrizioni della categoria di accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
 	</notification>
 	<notification name="LandBuyAccessBlocked_Notify">
 		Non puoi acquistare questa land a causa della tua categoria di accesso.
 	</notification>
 	<notification name="LandBuyAccessBlocked_Change">
-		Non puoi comprare questo Terreno a causa delle tue preferenze di Categoria di Accesso.
+		Non puoi acquistare questo terreno a causa della tua categoria di accesso.
 
-Puoi cliccare su &apos;Cambia Preferenze&apos; per alzare la tua preferenza di Categoria di Accesso e quindi riuscire ad entrare. Sarai in grado di ricercare e di accedere da adesso in poi contenuto [REGIONMATURITY]. Se più tardi volessi cambiare di nuovo le tue impostazioni, vai su Me &gt; Preferenze &gt; Generali.
-		<usetemplate ignoretext="Le mie Preferenze di Accesso mi impediscono l&apos;acquisto di questo Terreno" name="okcancelignore" notext="Chiudi" yestext="Cambia le preferenze"/>
+Puoi cliccare su Cambia preferenze per modificare la categoria di accesso e quindi riuscire ad entrare. Da adesso potrai accedere ai contenuti [REGIONMATURITY] ed effettuare ricerche in questa categoria. Se in seguito tu volessi cambiare di nuovo le tue impostazioni, apri la finestra di dialogo da Io &gt; Preferenze &gt; Generale.
+		<usetemplate ignoretext="Le mie Preferenze di accesso mi impediscono di acquistare terreno" name="okcancelignore" notext="Chiudi" yestext="Cambia le preferenze"/>
 	</notification>
 	<notification name="TooManyPrimsSelected">
 		Hai selezionato troppi prim.  Seleziona non più di [MAX_PRIM_COUNT] prim e riprova
@@ -1611,7 +1612,7 @@ Un periodo di tempo è necessario prima che la modifica venga integrata nella ma
 Per accedere a regioni per adulti, i residenti devono avere un Account verificato, mediante verifica dell&apos;età oppure mediante verifica della modalità di pagamento.
 	</notification>
 	<notification label="Versione voice non compatibile" name="VoiceVersionMismatch">
-		Questa versione di [APP_NAME] non è compatibile con le capacità di Chat Voice in questa regione. Per poter far funzionare correttamente la Chat Voice devi aggiornare [APP_NAME].
+		Questa versione di [APP_NAME] non è compatibile con la funzionalità di chat vocale in questa regione. Affinché la chat vocale funzioni correttamente, dovrai aggiornare [APP_NAME].
 	</notification>
 	<notification label="Impossibile comprare oggetti" name="BuyObjectOneOwner">
 		Impossibile comprare oggetti da proprietari diversi nello stesso momento.
@@ -1700,31 +1701,31 @@ Hai aggiornato l&apos;ubicazione di questo preferito ma gli altri dettagli conse
 Questi elementi verranno trasferiti nel tuo inventario, ma non copiati.
 
 Trasferisci gli elementi nell&apos;inventario?
-		<usetemplate ignoretext="Avvertimi quando rimuovo gli elementi  &apos;no-copy&apos; da un oggetto" name="okcancelignore" notext="Annulla" yestext="OK"/>
+		<usetemplate ignoretext="Avvertimi quando tento di rimuovore elementi per i quali non è consentita la copia da un oggetto" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="MoveInventoryFromScriptedObject">
 		Hai selezionato elementi dell&apos;inventario non copiabili.  Questi elementi verranno trasferiti nel tuo inventario, non verranno copiati.
 Dato che questo oggetto è scriptato, il trasferimento di questi elementi nel tuo inventario potrebbe causare un malfunzionamento degli script.
 
 Trasferisci gli elementi nell&apos;inventario?
-		<usetemplate ignoretext="Avvertimi se la rimozione di elementi  &apos;no-copy&apos; possono danneggiare un oggetto scriptato" name="okcancelignore" notext="Annulla" yestext="OK"/>
+		<usetemplate ignoretext="Avvertimi se tento di rimuovore di elementi per i quali non è consentita la copia e che potrebbero danneggiare un oggetto scriptato" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="ClickActionNotPayable">
-		Attenzione: E&apos; stata impostata l&apos;azione &apos;Paga Oggetto&apos;, ma funzionerà soltanto se inserisci uno script con un evento money().
+		Attenzione: l&apos;azione Paga oggetto è stata impostata, ma funzionerà soltanto se inserisci uno script con un evento money().
 		<form name="form">
-			<ignore name="ignore" text="Ho impostato l&apos;azione &apos;Paga Oggetto&apos; costruendo un oggetto senza uno script money()"/>
+			<ignore name="ignore" text="Ho impostato l&apos;azione Paga oggetto costruendo un oggetto senza uno script money()"/>
 		</form>
 	</notification>
 	<notification name="OpenObjectCannotCopy">
 		Non ci sono elementi in questo oggetto che tu possa copiare.
 	</notification>
 	<notification name="WebLaunchAccountHistory">
-		Vai su [http://secondlife.com/account/ Dashboard] per vedere la storia delle tue Transazioni?
-		<usetemplate ignoretext="Lancia il browser per vedere la storia del mio account" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
+		Vai al [http://secondlife.com/account/ Dashboard] per vedere la cronologia del tuo account?
+		<usetemplate ignoretext="Lancia il browser per vedere la cronologia del mio account" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
 	</notification>
 	<notification name="ConfirmQuit">
 		Confermi di voler uscire?
-		<usetemplate ignoretext="Conferma Uscita" name="okcancelignore" notext="Non Uscire" yestext="Esci"/>
+		<usetemplate ignoretext="Conferma prima di uscire" name="okcancelignore" notext="Non uscire" yestext="Esci"/>
 	</notification>
 	<notification name="HelpReportAbuseEmailLL">
 		Usa questo strumento per segnalare violazioni a [http://secondlife.com/corporate/tos.php Terms of Service] e [http://secondlife.com/corporate/cs.php Community Standards].
@@ -1753,15 +1754,15 @@ Devi essere il più specifico possibile, includendo i nomi e i dettagli dell&apo
 Inserendo una descrizione accurata ci aiuti a gestire ed elaborare le segnalazioni di abuso.
 	</notification>
 	<notification name="HelpReportAbuseContainsCopyright">
-		Gentile Residente,
+		Gentile residente,
 
-Sembra che tu stia segnalando una violazione di proprietà intellettuale. Cerca di essere sicuro che la tua segnalazione stia riportando correttamente:
+Ci risulta che tu stia segnalando una violazione di proprietà intellettuale. Per segnalare correttamente la violazione:
 
-(1) Il processo di Abuso. Puoi inviare una segnalazione di abuso se ritieni che un residente stia sfruttando il sistema di permessi di [SECOND_LIFE], per esempio usando CopyBot o simili strumenti di copia, per rubare i diritti della proprietà intellettuale. L&apos;Ufficio Abusi investigherà e deciderà adeguate azioni disciplinari per comportamenti che violano i [http://secondlife.com/corporate/tos.php Termini di Servizio] di  [SECOND_LIFE] oppure i  [http://secondlife.com/corporate/cs.php Standard di Comunità]. Si tenga però presente che l&apos;ufficio Abusi non gestisce e non risponde alle richieste di rimozione di contentuo da [SECOND_LIFE].
+(1) Definizione di abuso. Puoi inviare una segnalazione di abuso se ritieni che un residente stia sfruttando il sistema di permessi di [SECOND_LIFE], per esempio usando CopyBot o simili strumenti di copia, per rubare i diritti di proprietà intellettuale. L&apos;Ufficio abusi investigherà e deciderà adeguate azioni disciplinari per comportamenti che violano i [http://secondlife.com/corporate/tos.php Termini del servizio] di  [SECOND_LIFE] oppure gli  [http://secondlife.com/corporate/cs.php Standard della comunità]. Tieni comunque presente che l&apos;Ufficio abusi non gestisce e non risponde alle richieste di rimozione di contenuti da [SECOND_LIFE].
 
-(2) Il processo di rimozione DMCA o processo di rimozione dei contenuti. Per richiedere la rimozione di contenuto da [SECOND_LIFE], DEVI compilare una denuncia valid di furto come definito nella nostra  [http://secondlife.com/corporate/dmca.php Policy DMCA].
+(2) DMCA o rimozione di contenuti. Per richiedere la rimozione di contenuti da [SECOND_LIFE], devi compilare una denuncia valida di violazione come definito nelle nostra  [http://secondlife.com/corporate/dmca.php Regole DMCA] (leggi sul copyright).
 
-Se desideri egualmente continuare con il processo di Abuso, chiudi questa finestra e completa la compilazione della segnalazione. Puoi specificare la categoria specifica  &apos;CopyBot o Sfruttamento Permessi&apos;.
+Per continuare con il procedimento di abuso, chiudi questa finestra e completa la compilazione della segnalazione.  È possibile che dovrai specificare la categoria CopyBot o Sfruttamento dei diritti.
 
 Grazie,
 
@@ -1775,7 +1776,7 @@ Linden Lab
 		C&apos;è già un oggetto indossato in questo punto del corpo.
 Vuoi sostituirlo con l&apos;oggetto selezionato?
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="Sostituisci un preesistente attachment con l&apos;elemento selezionato"/>
+			<ignore name="ignore" save_option="true" text="Sostituisci un pezzo collegato con l&apos;elemento selezionato"/>
 			<button ignore="Replace Automatically" name="Yes" text="OK"/>
 			<button ignore="Never Replace" name="No" text="Annulla"/>
 		</form>
@@ -1785,21 +1786,21 @@ Vuoi sostituirlo con l&apos;oggetto selezionato?
 
 Desideri abbandonare la modalità &apos;Occupato&apos; prima di completare questa transazione?
 		<form name="form">
-			<ignore name="ignore" save_option="true" text="Sto per pagare una persona o un oggetto mentro sono Non Disponibile"/>
+			<ignore name="ignore" save_option="true" text="Sto per pagare una persona o un oggetto mentro sono in modalià Non disponibile"/>
 			<button ignore="Always leave Busy Mode" name="Yes" text="OK"/>
 			<button ignore="Never leave Busy Mode" name="No" text="Abbandona"/>
 		</form>
 	</notification>
 	<notification name="ConfirmDeleteProtectedCategory">
-		La cartella &apos;[FOLDERNAME]&apos; è una cartella di sistema. La cancellazione delle cartelle di sistema può creare instabilità.  Sei sicuro di volerla cancellare?
-		<usetemplate ignoretext="Conferma prima di cancellare una cartella di sistema" name="okcancelignore" notext="Cancella" yestext="OK"/>
+		La cartella &apos;[FOLDERNAME]&apos; è una cartella di sistema. L&apos;eliminazione di cartelle di sistema può creare instabilità.  Sei sicuro di volerla eliminare?
+		<usetemplate ignoretext="Chiedi conferma prima di eliminare una cartella di sistema" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="ConfirmEmptyTrash">
-		Vuoi veramente cancellare permanentemente il contenuto del tuo Cestino?
-		<usetemplate ignoretext="Conferma lo svuotamento del contenuto del Cestino" name="okcancelignore" notext="Annulla" yestext="OK"/>
+		Vuoi veramente eliminare in modo permanente il contenuto del tuo Cestino?
+		<usetemplate ignoretext="Conferma prima di svuotare la cartella del Cestino inventario" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="ConfirmClearBrowserCache">
-		Vuoi veramente cancellare la storia dei viaggi, web e delle ricerche fatte?
+		Vuoi veramente eliminare la cronologia viaggi, web e ricerche fatte?
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="ConfirmClearCookies">
@@ -1811,14 +1812,14 @@ Desideri abbandonare la modalità &apos;Occupato&apos; prima di completare quest
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
 	</notification>
 	<notification name="ConfirmEmptyLostAndFound">
-		Vuoi veramente cancellare permanentemente il contenuto dei tuoi Persi e Ritrovati?
-		<usetemplate ignoretext="Conferma lo svuotamento della cartella Persi e Ritrovati" name="okcancelignore" notext="No" yestext="Si"/>
+		Vuoi veramente eliminare in modo definitivo il contenuto dei tuoi Oggetti smarriti?
+		<usetemplate ignoretext="Conferma prima di svuotare della cartella Oggetti smarriti" name="okcancelignore" notext="No" yestext="Si"/>
 	</notification>
 	<notification name="CopySLURL">
 		Lo SLurl seguente è stato copiato negli Appunti:
  [SLURL]
 
-Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubicazione, o provala incollandola nella barra indirizzo di un browser web.
+Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubicazione, o provala incollandola nella barra degli indirizzi di un browser web.
 		<form name="form">
 			<ignore name="ignore" text="Lo SLurl è stato copiato negli Appunti"/>
 		</form>
@@ -1886,18 +1887,18 @@ Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubica
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="Cannot_Purchase_an_Attachment">
-		Non puoi comprare un oggetto mentre è indossato.
+		Non puoi comprare un oggetto mentre è unito.
 	</notification>
 	<notification label="Informazioni sulle richieste per il permesso di addebito" name="DebitPermissionDetails">
 		Accettare questa richiesta da allo script il permesso continuativo di prendere Linden dollar (L$) dal tuo account. Per revocare questo permesso, il proprietario dell&apos;oggetto deve cancellare l&apos;oggetto oppure reimpostare gli script nell&apos;oggetto.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="AutoWearNewClothing">
-		Vuoi indossare automaticamente gli oggetti che stai per creare?
-		<usetemplate ignoretext="Indossa gli abiti che creo mentre modifico il Mio Aspetto" name="okcancelignore" notext="No" yestext="Si"/>
+		Vuoi indossare automaticamente gli indumenti che stai per creare?
+		<usetemplate ignoretext="Indossare gli abiti che creo mentre modifico il mio aspetto" name="okcancelignore" notext="No" yestext="Si"/>
 	</notification>
 	<notification name="NotAgeVerified">
-		Devi avere l&apos;Età Verificata per visitare quest&apos;area. Vuoi andare sul sito [SECOND_LIFE] per verificare la tua età?
+		Per entrare in questa zona, devi avere eseguito la verifica dell&apos;età.  Vuoi andare sul sito di [SECOND_LIFE] per verificare la tua età?
 
 [_URL]
 		<url name="url" option="0">
@@ -1906,13 +1907,13 @@ Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubica
 		<usetemplate ignoretext="Non ho verificato la mia età" name="okcancelignore" notext="No" yestext="Si"/>
 	</notification>
 	<notification name="Cannot enter parcel: no payment info on file">
-		Devi avere le Informazioni di Pagamento registrate per poter visitare quest&apos;area. Vuoi andare sul sito di [SECOND_LIFE] ed impostarle?
+		Per poter visitare questa zona devi avere devi aver fornito informazioni di pagamento a Linden Lab.  Vuoi andare sul sito di [SECOND_LIFE] ed impostarle?
 
 [_URL]
 		<url name="url" option="0">
 			https://secondlife.com/account/index.php?lang=it
 		</url>
-		<usetemplate ignoretext="Manca la registrazione delle Informazioni di Pagamento" name="okcancelignore" notext="No" yestext="Si"/>
+		<usetemplate ignoretext="Manca la registrazione delle informazioni di pagamento" name="okcancelignore" notext="No" yestext="Si"/>
 	</notification>
 	<notification name="MissingString">
 		La stringa [STRING_NAME] non è presente in strings.xml
@@ -1942,7 +1943,7 @@ Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubica
 		[FIRST] [LAST] è Offline
 	</notification>
 	<notification name="AddSelfFriend">
-		Anche se sei molto piacevole, non puoi aggiungerti come amicizia.
+		Anche se sei molto simpatico, non puoi aggiungere te stesso all&apos;elenco degli amici.
 	</notification>
 	<notification name="UploadingAuctionSnapshot">
 		Sto importando le fotografie per l&apos;uso inworld e per il web...
@@ -1961,7 +1962,7 @@ Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubica
 		Terrain.raw caricato
 	</notification>
 	<notification name="GestureMissing">
-		Manca la Gesture [NAME] dal database.
+		Manca la gesture [NAME] dal database.
 	</notification>
 	<notification name="UnableToLoadGesture">
 		Impossibile caricare la gesture [NAME].
@@ -1973,14 +1974,14 @@ Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubica
 		Impossibile caricare il Landmark di riferimento. Riprova.
 	</notification>
 	<notification name="CapsKeyOn">
-		Hai il Blocco delle Maiuscole attivato.
-Questo potrebbe influenzare la tua password.
+		Hai il blocco delle maiuscole attivato.
+Questo potrebbe incidere sulla tua password.
 	</notification>
 	<notification name="NotecardMissing">
 		Notecard non trovata nel database.
 	</notification>
 	<notification name="NotecardNoPermissions">
-		Non hai il permesso di vedere questa notecard.
+		Non hai il permesso di vedere questo biglietto.
 	</notification>
 	<notification name="RezItemNoPermissions">
 		Permessi insufficienti per creare un oggetto.
@@ -2018,7 +2019,7 @@ Riprova.
 Riprova.
 	</notification>
 	<notification name="CannotBuyObjectsFromDifferentOwners">
-		Puoi comprare oggetti solo da un proprietario per volta.
+		Puoi acquistare oggetti soltanto da un proprietario per volta.
 Seleziona solo un oggetto.
 	</notification>
 	<notification name="ObjectNotForSale">
@@ -2031,10 +2032,10 @@ Seleziona solo un oggetto.
 		Esci dalla modalità divina, livello [LEVEL]
 	</notification>
 	<notification name="CopyFailed">
-		Non hai i permessi per copiare.
+		Non hai l&apos;autorizzazione a copiare.
 	</notification>
 	<notification name="InventoryAccepted">
-		[NAME] ha ricevuto la tua offerta di Inventory.
+		[NAME] ha ricevuto la tua offerta di inventario.
 	</notification>
 	<notification name="InventoryDeclined">
 		[NAME] non ha accettato la tua offerta dall&apos;inventario.
@@ -2049,9 +2050,9 @@ Seleziona solo un oggetto.
 		Il tuo biglietto da visita non è stato accettato.
 	</notification>
 	<notification name="TeleportToLandmark">
-		Puoi teleportarti alle ubicazioni come  &apos;[NAME]&apos; aprendo il pannello Luoghi sul lato destro dello schermo, e quindi selezionare la linguetta Landmarks.
-Clicca su un landmark per selezionarlo e quindi clicca  &apos;Teleport&apos; sul fondo del pannello.
-(Puoi anche fare doppio-click sul landmark oppure cliccarlo con il tasto destro e scegliere &apos;Teleport&apos;.)
+		Puoi teleportarti alle ubicazioni come &apos;[NAME]&apos; aprendo il pannello Luoghi sul lato destro dello schermo, quindi selezionare la scheda Punti di riferimento.
+Clicca su un punto di riferimento per selezionarlo, quindi clicca su Teleport sul lato inferiore del pannello.
+(Puoi anche fare doppio clic sul punto di riferimento oppure cliccare su di esso con il tasto destro del mouse e scegliere Teleport.)
 	</notification>
 	<notification name="TeleportToPerson">
 		Puoi contattare il residente &apos;[NAME]&apos; aprendo il pannello Persone nel lato destro del tuo schermo.
@@ -2106,19 +2107,19 @@ Prova a selezionare una parte di terreno più piccola.
 [NAMES]
 	</notification>
 	<notification name="NoQuickTime">
-		Il Software QuickTime di Apple non sembra installato sul tuo computer.
-Se vuoi vedere contenuto multimediale sugli appezzamenti che lo supportano devi andare su [http://www.apple.com/quicktime QuickTime site] e installare il Player QuickTime.
+		Il software QuickTime di Apple sembra non essere installato sul tuo computer.
+Se vuoi vedere contenuto multimediale in streaming sui lotti che lo supportano, vai alla pagina [http://www.apple.com/quicktime QuickTime] e installa il Player QuickTime.
 	</notification>
 	<notification name="NoPlugin">
-		Nessun Media Plugin è stato trovato per gestire &quot;[MIME_TYPE]&quot; il tipo mime.  Il Media di questo tipo non è disponibile.
+		Non è stato trovato alcun plugin multimediale per gestire il tipo mime [MIME_TYPE].  Il media di questo tipo non è disponibile.
 	</notification>
 	<notification name="MediaPluginFailed">
-		Questo Media Plugin non funziona:
+		Questo plugin multimediale non funziona:
     [PLUGIN]
 
-Per favore re-installa il plugin o contatta il venditore se continui ad avere questi problemi.
+Reinstalla il plugin o contatta il venditore se continui ad avere questi problemi.
 		<form name="form">
-			<ignore name="ignore" text="Mancato funzionamento del Media Plugin"/>
+			<ignore name="ignore" text="Mancato funzionamento del plugin multimediale"/>
 		</form>
 	</notification>
 	<notification name="OwnedObjectsReturned">
@@ -2143,21 +2144,21 @@ Gli oggetti non trasferibili che erano stati ceduti al gruppo sono stati cancell
 &lt;nolink&gt;[MSG]&lt;/nolink&gt;
 	</notification>
 	<notification name="NotSafe">
-		Questo terreno è abilitato ai Danni da combattimento.
-Qui potresti ricevere ferite. Se dovessi morire verrai teleportato a casa tua.
+		Su questo terreno sono abilitati i danni.
+Qui potresti essere ferito. Se dovessi morire verrai teleportato a casa tua.
 	</notification>
 	<notification name="NoFly">
-		Quest&apos;are ha il volo disabilitato.
+		In questa zona è proibito il volo.
 Qui non puoi volare.
 	</notification>
 	<notification name="PushRestricted">
-		Quest&apos;area non consente le spinte. Non puoi spingere gli altri a meno che tu non sia il proprietario del terreno.
+		Questa zona non consente le spinte. Non puoi spingere gli altri a meno che tu non sia il proprietario del terreno.
 	</notification>
 	<notification name="NoVoice">
-		Quest&apos;area ha la chat voice disabilitata. Non puoi sentire nessuno parlare.
+		Questa zona ha la chat vocale disattivata. Non puoi sentire nessuno parlare.
 	</notification>
 	<notification name="NoBuild">
-		Quest&apos;area ha il building disabilitato. Qui non puoi costruire o rezzare oggetti.
+		In questa zona è proibita la costruzione. Qui non puoi costruire né rezzare oggetti.
 	</notification>
 	<notification name="ScriptsStopped">
 		Un amministratore ha temporaneamente disabilitato gli script in questa regione.
@@ -2168,10 +2169,10 @@ Qui non puoi volare.
 	<notification name="NoOutsideScripts">
 		Questo terreno non consente script esterni.
 
-Qui funzinano solo gli script del proprietario del terreno.
+Qui funzionano soltanto gli script del proprietario del terreno.
 	</notification>
 	<notification name="ClaimPublicLand">
-		Puoi solo chiedere terreni pubblici nella regione in cui sei posizionato.
+		Puoi solo richiedere terreni pubblici nella regione in cui sei posizionato.
 	</notification>
 	<notification name="RegionTPAccessBlocked">
 		Non puoi entrare in quella regione a causa della tua categoria di accesso. Può essere necessario validare l&apos;età e/o installare l&apos;ultima versione del programma.
@@ -2352,12 +2353,12 @@ Questo sarà aggiunto nel tuo inventario come segnalibro per consentirti di invi
 		</form>
 	</notification>
 	<notification name="RegionRestartMinutes">
-		Questa regione farà il restart fra [MINUTES] minuti.
-Se rimani qui verrai disconnesso.
+		Questa regione verrà riavviata fra [MINUTES] minuti.
+Se rimani qui verrai scollegato da Second Life.
 	</notification>
 	<notification name="RegionRestartSeconds">
-		Questa regione farà il restart fra  [SECONDS] secondi.
-Se rimani qui verrai disconnesso.
+		Questa regione verrà riavviata fra [SECONDS] secondi.
+Se rimani qui verrai scollegato da Second Life.
 	</notification>
 	<notification name="LoadWebPage">
 		Caricare pagina web [URL]?
@@ -2394,9 +2395,9 @@ Va bene?
 		Un oggetto di nome &apos;[OBJECTNAME]&apos;, posseduto da  &apos;[NAME]&apos; vorrebbe:
 
 [QUESTIONS]
-Se non ti fidi di questo oggetto e del suo creatore dovresti declinare la richiesta.
+Se non ti fidi di questo oggetto e del suo ideatore, dovresti rifiutare la richiesta.
 
-Consenti questa richiesta?
+Concedi questa richiesta?
 		<form name="form">
 			<button name="Grant" text="Accetta"/>
 			<button name="Deny" text="Nega"/>
@@ -2418,11 +2419,11 @@ Consenti questa richiesta?
 		</form>
 	</notification>
 	<notification name="BuyLindenDollarSuccess">
-		Grazie per il pagamento!
+		Grazie per aver inviato il pagamento.
 
-Il tuo saldo in L$ sarà aggiornato al termine dell&apos;elaborazione. Se l&apos;elaborazione dovesse impiegare più di 20 minuti, la transazione verrà annullata. In quel caso l&apos;ammontare dell&apos;acquisto verrà rimborsato nel tuo saldo in US$.
+Il tuo saldo in L$ sarà aggiornato al termine dell&apos;elaborazione. Se l&apos;elaborazione dovesse impiegare più di 20 minuti, la transazione verrà annullata. In quel caso l&apos;ammontare dell&apos;acquisto verrà accreditato sul tuo saldo in US$.
 
-Lo stato del tuo pagamento potrà essere controllato nella pagina della Storia delle tue Transazioni su  [http://secondlife.com/account/ Pannello di Controllo]
+Potrai controllare lo stato del pagamento nella pagina della cronologia delle transazioni nel tuo [http://secondlife.com/account/ Dashboard]
 	</notification>
 	<notification name="FirstOverrideKeys">
 		I tuoi movimenti della tastiera vengono ora gestiti da un oggetto.
@@ -2431,16 +2432,16 @@ Alcuni oggetti (come pistole) richiedono di andare in mouselook per il loro util
 Premi &apos;M&apos; per farlo.
 	</notification>
 	<notification name="FirstSandbox">
-		Questa è una Sandbox, serve per aiutare i Residenti ad imparare a costruire.
+		Questa è una Sandbox, serve ai residenti per imparare a costruire.
 
-Gli oggetti che costruisci qui saranno cancellati dopo che te ne sei andato, perciò non dimenticare di cliccare sulle tue creazioni col tasto destro e scegliere &apos;Prendi&apos; per trasferirle nel tuo Inventory.
+Gli oggetti che costruisci qui verranno eliminati dopo che te ne sei andato, perciò non dimenticare di cliccare sulle tue creazioni col tasto destro del mouse e scegliere Prendi per trasferirle nel tuo Inventario.
 	</notification>
 	<notification name="MaxListSelectMessage">
 		È possibile selezionare solo fino a [MAX_SELECT] oggetti da questa lista.
 	</notification>
 	<notification name="VoiceInviteP2P">
-		[NAME] ti sta invitando ad una chiamata in Chat Voice.
-Clicca Accetta per unirti alla chiamata oppure Declina per declinare l&apos;invito. Clicca Blocca per bloccare questo chiamante.
+		[NAME] ti sta invitando ad una chiamata in chat vocale.
+Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
 		<form name="form">
 			<button name="Accept" text="Accetta"/>
 			<button name="Decline" text="Rifiuta"/>
@@ -2448,17 +2449,17 @@ Clicca Accetta per unirti alla chiamata oppure Declina per declinare l&apos;invi
 		</form>
 	</notification>
 	<notification name="AutoUnmuteByIM">
-		Hai appena inviato un IM a [FIRST] [LAST], che è stato automaticamente sbloccato.
+		[FIRST] [LAST] ha ricevuto un IM ed è stato automaticamente sbloccato.
 	</notification>
 	<notification name="AutoUnmuteByMoney">
-		Hai appena inviato del denaro a [FIRST] [LAST], che è stato automaticamente sbloccato.
+		[FIRST] [LAST] ha ricevuto del denaro e pertanto è stato automaticamente sbloccato.
 	</notification>
 	<notification name="AutoUnmuteByInventory">
-		Hai appena offerto un elemento dell&apos;Inventory a [FIRST] [LAST], che è stato automaticamente sbloccato.
+		A [FIRST] [LAST] è stato offerto un elemento dell&apos;Inventario e pertanto è stato automaticamente sbloccato.
 	</notification>
 	<notification name="VoiceInviteGroup">
-		[NAME] si è aggiunto alla chiamata in Chat Voice con il gruppo [GROUP].
-Clicca  Accetta per unirti alla chiamata oppure  Declina per declinare l&apos;invito. Clicca Blocca per bloccare questo chiamante.
+		[NAME] si è aggiunto alla chiamata in chat vocale con il gruppo [GROUP].
+Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
 		<form name="form">
 			<button name="Accept" text="Accetta"/>
 			<button name="Decline" text="Rifiuta"/>
@@ -2466,8 +2467,8 @@ Clicca  Accetta per unirti alla chiamata oppure  Declina per declinare l&apos;in
 		</form>
 	</notification>
 	<notification name="VoiceInviteAdHoc">
-		[NAME] si è aggiunto alla chiamata in Chat Voice con una conferenza.
-Clicca Accetta per unirti alla chiamata oppure Declina to declinare l&apos;invito. Clicca Blocca per bloccare questo chiamante.
+		[NAME] si è aggiunto alla chiamata in chat vocale con una conferenza.
+Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
 		<form name="form">
 			<button name="Accept" text="Accetta"/>
 			<button name="Decline" text="Rifiuta"/>
@@ -2476,7 +2477,7 @@ Clicca Accetta per unirti alla chiamata oppure Declina to declinare l&apos;invit
 	</notification>
 	<notification name="InviteAdHoc">
 		[NAME] ti sta invitando ad una conferenza in chat.
-Clicca Accetta per unirti alla chat oppure  Declina per declinare l&apos;invito. Clicca Blocca per bloccare questo chiamante.
+Clicca su Accetta per unirti alla chat oppure su Declina per declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
 		<form name="form">
 			<button name="Accept" text="Accetta"/>
 			<button name="Decline" text="Rifiuta"/>
@@ -2490,25 +2491,25 @@ Clicca Accetta per unirti alla chat oppure  Declina per declinare l&apos;invito.
 		Siamo spiacenti.  Questa area ha raggiunto la capacità massima per le chiamate voice.  Si prega di provare ad usare il voice in un&apos;altra area.
 	</notification>
 	<notification name="VoiceChannelDisconnected">
-		Sei stato disconnesso da [VOICE_CHANNEL_NAME].  Verrai ora riconnesso alla Chat Voice Locale.
+		Sei stato scollegato da [VOICE_CHANNEL_NAME].  Verrai ora ricollegato alla chat vocale nei dintorni.
 	</notification>
 	<notification name="VoiceChannelDisconnectedP2P">
-		[VOICE_CHANNEL_NAME] ha terminato la chiamata.  Verrai ora riconnesso alla Chat Voice Locale.
+		[VOICE_CHANNEL_NAME] ha chiuso la chiamata.  Verrai ora ricollegato alla chat vocale nei dintorni.
 	</notification>
 	<notification name="P2PCallDeclined">
-		[VOICE_CHANNEL_NAME] ha declinato la tua chiamata. Verrai ora riconnesso alla Chat Voice Locale.
+		[VOICE_CHANNEL_NAME] ha declinato la tua chiamata.  Verrai ora ricollegato alla chat vocale nei dintorni.
 	</notification>
 	<notification name="P2PCallNoAnswer">
-		[VOICE_CHANNEL_NAME] non è disponibile per la tua chiamata. Verrai ora riconnesso alla Chat Voice Locale.
+		[VOICE_CHANNEL_NAME] non è disponibile per la tua chiamata.  Verrai ora ricollegato alla chat vocale nei dintorni.
 	</notification>
 	<notification name="VoiceChannelJoinFailed">
-		Connessione a [VOICE_CHANNEL_NAME] fallita, riprova più tardi.  Verrai ora riconnesso alla Chat Voice Locale.
+		Collegamento a [VOICE_CHANNEL_NAME] non riuscito, riprova più tardi.  Verrai ora ricollegato alla chat vocale nei dintorni.
 	</notification>
 	<notification name="VoiceLoginRetry">
 		Stiamo creando una canale voice per te. Questo può richiedere fino a un minuto.
 	</notification>
 	<notification name="Cannot enter parcel: not a group member">
-		Soltanto i membri di uno specifico gruppo possono visitare quest&apos;area.
+		Soltanto i membri di un determinato gruppo possono visitare questa zona.
 	</notification>
 	<notification name="Cannot enter parcel: banned">
 		Non puoi entrare nel terreno, sei stato bloccato.
@@ -2523,17 +2524,17 @@ Clicca Accetta per unirti alla chat oppure  Declina per declinare l&apos;invito.
 		Si è verificato un errore durante il tentativo di collegarti a una voice chat con [VOICE_CHANNEL_NAME].  Riprova più tardi.
 	</notification>
 	<notification name="ServerVersionChanged">
-		Sei appena entrato in una regione che usa una versione differente del server, questo potrebbe influenzare le prestazioni. [[URL] Guarda le Release Notes.]
+		Sei appena entrato in una regione che usa una versione differente del server: ciò potrebbe incidere sule prestazioni. [[URL] Visualizza le note sulla versione.]
 	</notification>
 	<notification name="UnsupportedCommandSLURL">
-		Lo SLurl che hai cliccato non è attivo.
+		Lo SLurl su cui hai cliccato non è valido.
 	</notification>
 	<notification name="BlockedSLURL">
-		Uno SLurl è stato ricevuto da un browser sconosciuto e per la tua sicurezza è stato bloccato.
+		Uno SLurl è stato ricevuto da un browser sconosciuto o non sicuro e, per sicurezza, è stato bloccato.
 	</notification>
 	<notification name="ThrottledSLURL">
-		Multipli SLurls sono stati ricevuti da un browser sconosciuto in un breve periodo.
-Per la tua sicurezza verranno bloccati per alcuni secondi.
+		Sono stati ricevuti più SLurl da un browser sconosciuto o non sicuro in un breve periodo di tempo.
+Per sicurezza, verranno bloccati per alcuni secondi.
 	</notification>
 	<notification name="IMToast">
 		[MESSAGE]
@@ -2546,18 +2547,18 @@ Per la tua sicurezza verranno bloccati per alcuni secondi.
 		<usetemplate ignoretext="Conferma prima della chiusura di tutti gli IM" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="AttachmentSaved">
-		L&apos;Allegato (Attachment) è stato salvato.
+		L&apos;elemento da collegare è stato salvato.
 	</notification>
 	<notification name="UnableToFindHelpTopic">
-		Impossibilitato a trovare il tema aiuto per questo elemento (nozione)???!!!!.
+		Impossibile trovare l&apos;argomento nell&apos;aiuto per questo elemento.
 	</notification>
 	<notification name="ObjectMediaFailure">
-		Errore del Server: aggiornamento del Media o mancato funzionamento.
+		Errore del server: mancato aggiornamento o ottenimento del media.
 &apos;[ERROR]&apos;
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="TextChatIsMutedByModerator">
-		Il tuo testo nella chat è stato interrotto dal moderatore.
+		La tua chat di testo è stata interrotta dal moderatore.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="VoiceIsMutedByModerator">
@@ -2566,19 +2567,19 @@ Per la tua sicurezza verranno bloccati per alcuni secondi.
 	</notification>
 	<notification name="ConfirmClearTeleportHistory">
 		Sei sicuro di volere cancellare la cronologia dei tuoi teleport?
-		<usetemplate name="okcancelbuttons" notext="Cancella" yestext="OK"/>
+		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="BottomTrayButtonCanNotBeShown">
-		Il bottone selezionato non può essere mostrato in questo momento.
-Il bottone verrà mostrato quando ci sarà abbastanza spazio.
+		Il pulsante selezionato non può essere visualizzato in questo momento.
+Il pulsante verrà visualizzato quando lo spazio sarà sufficiente.
 	</notification>
 	<global name="UnsupportedCPU">
 		- La velocità della tua CPU non soddisfa i requisiti minimi.
 	</global>
 	<global name="UnsupportedGLRequirements">
-		Non sembra che tu abbia i requisiti hardware adeguati per [APP_NAME]. [APP_NAME] richiede una scheda grafica OpenGL con supporto multitexture. Se tu ce l&apos;hai, dovresti accertarti di avere i driver, i service pack e le patch più recenti della scheda grafica e del tuo sistema operativo.
+		Non sembra che tu abbia i requisiti hardware adeguati per [APP_NAME]. [APP_NAME] richiede una scheda grafica OpenGL con supporto multitexture. Se ne hai una in dotazione, accertati di avere i driver, i service pack e i patch più recenti per la scheda grafica e per il sistema operativo.
 
-Se continui ad avere problemi, visita [SUPPORT_SITE].
+Se continui ad avere problemi, visita la pagina [SUPPORT_SITE].
 	</global>
 	<global name="UnsupportedCPUAmount">
 		796
@@ -2593,7 +2594,7 @@ Se continui ad avere problemi, visita [SUPPORT_SITE].
 		- La memoria del tuo sistema non soddisfa i requisiti minimi.
 	</global>
 	<global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
-		Se possiedi una parte di terra, puoi creare qui la tua ubicazione di casa.
-Altrimenti, puoi guardare sulla Mappa e trovare luoghi segnalati come &quot;Infohub&quot;.
+		Se sei proprietario di un appezzamento di terreno, puoi definirlo come la tua posizione iniziale.
+In alternativa, puoi guardare sulla mappa e trovare luoghi segnalati come &quot;Infohub&quot;.
 	</global>
 </notifications>
diff --git a/indra/newview/skins/default/xui/it/panel_bottomtray.xml b/indra/newview/skins/default/xui/it/panel_bottomtray.xml
index ccefc91ce18911f70a0fc20e96d874e0f8858738..c0218fad5e21d2e74643e080a17bccbef6990265 100644
--- a/indra/newview/skins/default/xui/it/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/it/panel_bottomtray.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="bottom_tray">
 	<string name="SpeakBtnToolTip">
-		Microfono on/off
+		Accende o spegne il microfono
 	</string>
 	<string name="VoiceControlBtnToolTip">
-		Mostra/nascondi il pannello voice control
+		Mostra o nasconde il pannello di regolazione voce
 	</string>
 	<layout_stack name="toolbar_stack">
 		<layout_panel name="speak_panel">
@@ -13,13 +13,13 @@
 			</talk_button>
 		</layout_panel>
 		<layout_panel name="gesture_panel">
-			<gesture_combo_list label="Gesture" name="Gesture" tool_tip="Mostra/nascondi gestures"/>
+			<gesture_combo_list label="Gesture" name="Gesture" tool_tip="Mostra o nasconde le gesture"/>
 		</layout_panel>
 		<layout_panel name="movement_panel">
-			<button label="Sposta" name="movement_btn" tool_tip="Mostra/nascondi i controlli del movimento"/>
+			<button label="Sposta" name="movement_btn" tool_tip="Mostra o nasconde i comandi del movimento"/>
 		</layout_panel>
 		<layout_panel name="cam_panel">
-			<button label="Visualizza" name="camera_btn" tool_tip="Mostra/nascondi i controlli della camera"/>
+			<button label="Visuale" name="camera_btn" tool_tip="Mostra o nasconde le regolazioni della visuale"/>
 		</layout_panel>
 		<layout_panel name="snapshot_panel">
 			<button label="" name="snapshots" tool_tip="Scatta una foto"/>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_alpha.xml b/indra/newview/skins/default/xui/it/panel_edit_alpha.xml
index 652bef04303c798c97c9c9a3173ff66fec04aee9..286ee626cfa3a6b9887cc406303e0178222d21d6 100644
--- a/indra/newview/skins/default/xui/it/panel_edit_alpha.xml
+++ b/indra/newview/skins/default/xui/it/panel_edit_alpha.xml
@@ -2,7 +2,7 @@
 <panel name="edit_alpha_panel">
 	<panel name="avatar_alpha_color_panel">
 		<texture_picker label="Alpha inferiore" name="Lower Alpha" tool_tip="Clicca per scegliere una fotografia"/>
-		<texture_picker label="Alpha superiore" name="Upper Alpha" tool_tip="Click to choose a picture"/>
+		<texture_picker label="Alpha superiore" name="Upper Alpha" tool_tip="Clicca per scegliere una fotografia"/>
 		<texture_picker label="Alpha della testa" name="Head Alpha" tool_tip="Clicca per scegliere una fotografia"/>
 		<texture_picker label="Alpha dell&apos;occhio" name="Eye Alpha" tool_tip="Clicca per scegliere una fotografia"/>
 		<texture_picker label="Alpha dei capelli" name="Hair Alpha" tool_tip="Clicca per scegliere una fotografia"/>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_skin.xml b/indra/newview/skins/default/xui/it/panel_edit_skin.xml
index 2fa76d4afc1e53cc26a1100d279ed93850632c65..9e05599470ad699722e5515086b217dd00778dcf 100644
--- a/indra/newview/skins/default/xui/it/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/it/panel_edit_skin.xml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_skin_panel">
 	<panel name="avatar_skin_color_panel">
-		<texture_picker label="Tatuaggi Testa" name="Head Tattoos" tool_tip="Clicca per scegliere un&apos;immagine"/>
-		<texture_picker label="Tatuaggi superiori" name="Upper Tattoos" tool_tip="Clicca per scegliere un&apos;immagine"/>
-		<texture_picker label="Tatuaggi inferiori" name="Lower Tattoos" tool_tip="Clicca per scegliere un&apos;immagine"/>
+		<texture_picker label="Tatuaggi testa" name="Head Tattoos" tool_tip="Clicca per scegliere una fotografia"/>
+		<texture_picker label="Tatuaggi superiori" name="Upper Tattoos" tool_tip="Clicca per scegliere una fotografia"/>
+		<texture_picker label="Tatuaggi inferiori" name="Lower Tattoos" tool_tip="Clicca per scegliere una fotografia"/>
 	</panel>
 	<accordion name="wearable_accordion">
 		<accordion_tab name="skin_color_tab" title="Colore della pelle"/>
-		<accordion_tab name="skin_face_tab" title="Dettagli del Viso"/>
-		<accordion_tab name="skin_makeup_tab" title="Trucco"/>
-		<accordion_tab name="skin_body_tab" title="Dettagli del Corpo"/>
+		<accordion_tab name="skin_face_tab" title="Dettagli del viso"/>
+		<accordion_tab name="skin_makeup_tab" title="Makeup"/>
+		<accordion_tab name="skin_body_tab" title="Dettagli del corpo"/>
 	</accordion>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_socks.xml b/indra/newview/skins/default/xui/it/panel_edit_socks.xml
index 1d1eb4bd3a778b2c2f1c8e094c871916472d3c56..d2af3ebd5a2d337863935feaa159028c4a614352 100644
--- a/indra/newview/skins/default/xui/it/panel_edit_socks.xml
+++ b/indra/newview/skins/default/xui/it/panel_edit_socks.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_socks_panel">
 	<panel name="avatar_socks_color_panel">
-		<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una foto"/>
+		<texture_picker label="Tessuto" name="Fabric" tool_tip="Clicca per scegliere una fotografia"/>
 		<color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/>
 	</panel>
 	<accordion name="wearable_accordion">
-		<accordion_tab name="socks_main_tab" title="Calze"/>
+		<accordion_tab name="socks_main_tab" title="Calzini"/>
 	</accordion>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_wearable.xml b/indra/newview/skins/default/xui/it/panel_edit_wearable.xml
index baf585dad06bc001d31ed2b88ad2d49bd266700f..2583cf4e0ea60c7c1112199c5151b8bae10e3432 100644
--- a/indra/newview/skins/default/xui/it/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/it/panel_edit_wearable.xml
@@ -1,55 +1,55 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Indossabile" name="panel_edit_wearable">
 	<string name="edit_shape_title">
-		Modifica la Shape
+		Modifica della figura corporea
 	</string>
 	<string name="edit_skin_title">
-		Modifica la Skin
+		Modifica della pelle
 	</string>
 	<string name="edit_hair_title">
-		Modifica capelli
+		Modifica dei capelli
 	</string>
 	<string name="edit_eyes_title">
-		Modifica occhi
+		Modifica degli occhi
 	</string>
 	<string name="edit_shirt_title">
-		Modifica camicia
+		Modifica della camicia
 	</string>
 	<string name="edit_pants_title">
-		Modifica pantaloni
+		Modifica dei pantaloni
 	</string>
 	<string name="edit_shoes_title">
-		Modifica scarpe
+		Modifica delle scarpe
 	</string>
 	<string name="edit_socks_title">
-		Modifica calze
+		Modifica delle calze
 	</string>
 	<string name="edit_jacket_title">
-		Modifica Giacca
+		Modifica della giacca
 	</string>
 	<string name="edit_skirt_title">
-		Modifica gonna
+		Modifica della gonna
 	</string>
 	<string name="edit_gloves_title">
-		Modifica guanti
+		Modifica dei guanti
 	</string>
 	<string name="edit_undershirt_title">
-		Modifica maglietta intima
+		Modifica della maglietta intima
 	</string>
 	<string name="edit_underpants_title">
-		Modifica slip
+		Modifica dello slip
 	</string>
 	<string name="edit_alpha_title">
-		Modifica Alpha Mask
+		Modifica di Alpha Mask
 	</string>
 	<string name="edit_tattoo_title">
-		Modifica tatuaggio
+		Modifica del tatuaggio
 	</string>
 	<string name="shape_desc_text">
-		Shape:
+		Figura corporea:
 	</string>
 	<string name="skin_desc_text">
-		Skin:
+		Pelle:
 	</string>
 	<string name="hair_desc_text">
 		Capelli:
@@ -90,9 +90,9 @@
 	<string name="tattoo_desc_text">
 		Tatuaggio:
 	</string>
-	<text name="edit_wearable_title" value="Modifica Shape"/>
+	<text name="edit_wearable_title" value="Modifica della figura corporea"/>
 	<panel label="Camicia" name="wearable_type_panel">
-		<text name="description_text" value="Shape:"/>
+		<text name="description_text" value="Figura corporea:"/>
 	</panel>
 	<panel name="button_panel">
 		<button label="Salva con nome" name="save_as_button"/>
diff --git a/indra/newview/skins/default/xui/it/panel_group_invite.xml b/indra/newview/skins/default/xui/it/panel_group_invite.xml
index 346945baffdc998f9850d2e8b44920172bcb1919..e3cb3c1092ef4467ee08185ba08236d3c386de31 100644
--- a/indra/newview/skins/default/xui/it/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_invite.xml
@@ -13,15 +13,15 @@
 		Puoi selezionare più residenti da invitare nel tuo gruppo. Per iniziare, clicca su Apri il selettore di residenti.
 	</text>
 	<button label="Scelta residenti" name="add_button" tool_tip=""/>
-	<name_list name="invitee_list" tool_tip="Tieni premuto Ctrl e fai clic sui nomi dei residenti per una selezionare più nomi"/>
+	<name_list name="invitee_list" tool_tip="Tieni premuto Ctrl e fai clic sui nomi dei residenti per selezionare più nomi"/>
 	<button label="Rimuovi i selezionati dall&apos;elenco" name="remove_button" tool_tip="Rimuove i residenti selezionati dalla lista degli inviti"/>
 	<text name="role_text">
 		Scegli che ruolo assegnare loro:
 	</text>
-	<combo_box name="role_name" tool_tip="Choose from the list of Roles you are allowed to assign members to"/>
+	<combo_box name="role_name" tool_tip="Scegli dall&apos;elenco dei ruoli ai quali ti è consentito assegnare i membri"/>
 	<button label="Manda gli inviti" name="ok_button"/>
 	<button label="Annulla" name="cancel_button"/>
 	<string name="GroupInvitation">
-		Invito del Gruppo
+		Invito di gruppo
 	</string>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_group_land_money.xml b/indra/newview/skins/default/xui/it/panel_group_land_money.xml
index 0ad4d9cd02f698e1cd3c5d637fe1b430dc989ea6..1e3ef5e6574c1091110e6d65d8558a0bd6f087ea 100644
--- a/indra/newview/skins/default/xui/it/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_land_money.xml
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Terra &amp; L$" name="land_money_tab">
 	<panel.string name="help_text">
-		Appare un avviso fino a quando la Terra Totale in Uso è meno o = alla Contribuzione Totale.
+		Viene visualizzata un&apos;avvertenza fino a quando il terreno totale in uso è inferiore o uguale al contributo totale.
 	</panel.string>
 	<panel.string name="cant_view_group_land_text">
-		Non hai i permessi per vedere la terra posseduta dal gruppo
+		Non sei autorizzato a vedere quali terreni appartengono al gruppo.
 	</panel.string>
 	<panel.string name="cant_view_group_accounting_text">
-		Non hai i permessi per vedere le informazioni sulla contabilità del gruppo.
+		Non sei autorizzato a visionare le informazioni finanziarie del gruppo.
 	</panel.string>
 	<panel.string name="loading_txt">
 		Attendi...
 	</panel.string>
 	<panel.string name="land_contrib_error">
-		Incapace di impostare la tua contribuzione di terreno
+		Impossibile definire il tuo contributo di terreno
 	</panel.string>
 	<panel name="layout_panel_landmoney">
 		<scroll_list name="group_parcel_list">
@@ -60,22 +60,22 @@
 	<tab_container name="group_money_tab_container">
 		<panel label="PIANIFICAZIONE" name="group_money_planning_tab">
 			<text_editor name="group_money_planning_text">
-				Caricando...
+				Caricamento in corso...
 			</text_editor>
 		</panel>
 		<panel label="DETTAGLI" name="group_money_details_tab">
 			<text_editor name="group_money_details_text">
-				Caricando...
+				Caricamento in corso...
 			</text_editor>
 			<button label="&lt; Precedente" label_selected="&lt; Precedente" name="earlier_details_button" tool_tip="Indietro" width="90"/>
-			<button label="Successivo &gt;" label_selected="Successivo &gt;" left_delta="260" name="later_details_button" tool_tip="Prossimo" width="90"/>
+			<button label="Successivo &gt;" label_selected="Successivo &gt;" left_delta="260" name="later_details_button" tool_tip="Avanti" width="90"/>
 		</panel>
 		<panel label="VENDITE" name="group_money_sales_tab">
 			<text_editor name="group_money_sales_text">
-				Caricando...
+				Caricamento in corso...
 			</text_editor>
 			<button label="&lt; Precedente" label_selected="&lt; Precedente" name="earlier_sales_button" tool_tip="Indietro" width="90"/>
-			<button label="Successivo &gt;" label_selected="Successivo &gt;" left_delta="260" name="later_sales_button" tool_tip="Prossimo" width="90"/>
+			<button label="Successivo &gt;" label_selected="Successivo &gt;" left_delta="260" name="later_sales_button" tool_tip="Avanti" width="90"/>
 		</panel>
 	</tab_container>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_group_notices.xml b/indra/newview/skins/default/xui/it/panel_group_notices.xml
index e1e397392fa29592eca9b0f2066cf389e11429d1..9dac282de9ea90f3018e6d40d312d9be671d39f5 100644
--- a/indra/newview/skins/default/xui/it/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/it/panel_group_notices.xml
@@ -5,10 +5,10 @@
 Puoi disattivare la ricezione delle notice nella finestra principale.
 	</panel.string>
 	<panel.string name="no_notices_text">
-		Non ci sono vecchie Notice
+		Non ci sono avvisi precedenti
 	</panel.string>
 	<text name="lbl2">
-		Le Notice sono conservate per 14 giorni.
+		Gli avvisi sono conservati per 14 giorni.
 Massimo 200 per gruppo al giorno
 	</text>
 	<scroll_list name="notice_list">
@@ -17,10 +17,10 @@ Massimo 200 per gruppo al giorno
 		<scroll_list.columns label="Data" name="date"/>
 	</scroll_list>
 	<text name="notice_list_none_found">
-		Nessuna trovata
+		Nessuno trovato
 	</text>
-	<button label="Crea una nuova notice" label_selected="Crea una nuova notice" name="create_new_notice" tool_tip="Crea una nuova notice"/>
-	<button label="Aggiorna" label_selected="Aggiorna l&apos;elenco" name="refresh_notices" tool_tip="Aggiorna la lista delle notice"/>
+	<button label="Crea un nuovo avviso" label_selected="Crea una nuova notice" name="create_new_notice" tool_tip="Crea un nuovo avviso"/>
+	<button label="Aggiorna" label_selected="Aggiorna l&apos;elenco" name="refresh_notices" tool_tip="Aggiorna la lista degli avvisi"/>
 	<panel label="Crea una nuova notice" name="panel_create_new_notice">
 		<text name="lbl">
 			Crea una notice
@@ -41,15 +41,15 @@ Massimo 200 per gruppo al giorno
 			Trascina e rilascia qui l&apos;oggetto da allegare:
 		</text>
 		<button label="Rimuovi" label_selected="Rimuovi allegato" name="remove_attachment" tool_tip="Rimuovi allegato dal tuo avviso"/>
-		<button label="Spedisci" label_selected="Spedisci" name="send_notice"/>
-		<group_drop_target name="drop_target" tool_tip="Trascina un oggetto dall&apos;inventario nello spazio ALLEGA per spedirlo con la notice. Devi avere i permessi copy e transfer relativi all&apos;oggetto da allegare."/>
+		<button label="Invia" label_selected="Invia" name="send_notice"/>
+		<group_drop_target name="drop_target" tool_tip="Trascina un oggetto dall&apos;inventario ín questa casella per spedirlo con questo avviso. Devi avere i diritti per la copia e il trasferimento per poter allegare l&apos;oggetto."/>
 	</panel>
 	<panel label="Vedi le notice precedenti" name="panel_view_past_notice">
 		<text name="lbl">
 			Notice archiviate
 		</text>
 		<text name="lbl2">
-			Per spedire una nuova notice, clicca il bottone +
+			Per spedire un nuovo avviso, clicca sul pulsante +
 		</text>
 		<text name="lbl3">
 			Oggetto:
diff --git a/indra/newview/skins/default/xui/it/panel_login.xml b/indra/newview/skins/default/xui/it/panel_login.xml
index bbf93ceb8744e0d4f6a1368d3cceea407aaca3bc..287e938d57aa71c87d526b57aaf5fcbbdf5ef02f 100644
--- a/indra/newview/skins/default/xui/it/panel_login.xml
+++ b/indra/newview/skins/default/xui/it/panel_login.xml
@@ -12,13 +12,21 @@
 				Nome:
 			</text>
 			<line_editor label="Nome" name="first_name_edit" tool_tip="[SECOND_LIFE] First Name"/>
+			<text name="last_name_text">
+				Cognome:
+			</text>
 			<line_editor label="Cognome" name="last_name_edit" tool_tip="[SECOND_LIFE] Last Name"/>
+			<text name="password_text">
+				Password:
+			</text>
 			<check_box label="Ricorda password" name="remember_check"/>
 			<text name="start_location_text">
 				Inizia da:
 			</text>
 			<combo_box name="start_location_combo">
+				<combo_box.item label="La mia ultima ubicazione" name="MyLastLocation"/>
 				<combo_box.item label="Casa mia" name="MyHome"/>
+				<combo_box.item label="&lt;Scrivi nome regione&gt;" name="Typeregionname"/>
 			</combo_box>
 			<button label="Accedi" name="connect_btn"/>
 		</layout_panel>
@@ -26,6 +34,9 @@
 			<text name="create_new_account_text">
 				Iscriviti
 			</text>
+			<text name="forgot_password_text">
+				Hai dimenticato il nome o la password?
+			</text>
 			<text name="login_help">
 				Ti serve aiuto con la fase di accesso?
 			</text>
diff --git a/indra/newview/skins/default/xui/it/panel_me.xml b/indra/newview/skins/default/xui/it/panel_me.xml
index 7a0805b936120107cefb2bb45051561ee8857a0e..66601aa1653aedf32b1ff990ac9f60db51cbbf66 100644
--- a/indra/newview/skins/default/xui/it/panel_me.xml
+++ b/indra/newview/skins/default/xui/it/panel_me.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Mio Profilo" name="panel_me">
+<panel label="Il mio profilo" name="panel_me">
 	<tab_container name="tabs">
 		<panel label="IL MIO PROFILO" name="panel_profile"/>
 		<panel label="I MIEI PREFERITI" name="panel_picks"/>
diff --git a/indra/newview/skins/default/xui/it/panel_media_settings_security.xml b/indra/newview/skins/default/xui/it/panel_media_settings_security.xml
index 5969c7bdba56582ea4888fd0d725fa4b476b3be9..785cd048a1e51c359d2753436b9ba49af2b878a2 100644
--- a/indra/newview/skins/default/xui/it/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/it/panel_media_settings_security.xml
@@ -5,7 +5,7 @@
 		Le mancate aperture di home page sono segnalate:
 	</text>
 	<button label="Aggiungi" name="whitelist_add"/>
-	<button label="Cancella" name="whitelist_del"/>
+	<button label="Elimina" name="whitelist_del"/>
 	<text name="home_url_fails_whitelist">
 		Avvertenza: la home page specificata nella scheda Generale non ha superato la lista bianca. Viene disabilitata fino a che non venga inserita una voce valida.
 	</text>
diff --git a/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml
index f7a58581d47d0e09e0ee5632137e68b44be9d3ed..6317d3192ea76f9b4af66e829c0cbf3f2c514124 100644
--- a/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml
@@ -1,5 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="chat_bar">
-	<line_editor label="Clicca qui per la chat." name="chat_box" tool_tip="Premi Invio per dire, Ctrl+Invio per gridare"/>
-	<button name="show_nearby_chat" tool_tip="Mostra/Nasconde la chat log nei dintorni"/>
+	<string name="min_width">
+		192
+	</string>
+	<string name="max_width">
+		320
+	</string>
+	<line_editor label="Clicca qui per la chat." name="chat_box" tool_tip="Premi Invio per parlare, Ctrl+Invio per gridare"/>
+	<button name="show_nearby_chat" tool_tip="Mostra/Nasconde il registro della chat nei dintorni"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_notes.xml b/indra/newview/skins/default/xui/it/panel_notes.xml
index cb805dae4953150b42afb4f41cb583495ee4f774..9ce6b47a325deba1d9a84a1f880eeb9b938a8c70 100644
--- a/indra/newview/skins/default/xui/it/panel_notes.xml
+++ b/indra/newview/skins/default/xui/it/panel_notes.xml
@@ -1,20 +1,20 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Note &amp; Privacy" name="panel_notes">
+<panel label="Note e Privacy" name="panel_notes">
 	<layout_stack name="layout">
 		<panel name="notes_stack">
 			<scroll_container name="profile_scroll">
 				<panel name="profile_scroll_panel">
 					<text name="status_message" value="Le mie note private:"/>
-					<text name="status_message2" value="Permetti a questa persona di:"/>
-					<check_box label="Vedermi On-line" name="status_check"/>
-					<check_box label="Vedermi sull mappa" name="map_check"/>
-					<check_box label="Modificare, cancellare o prendere i miei oggetti" name="objects_check"/>
+					<text name="status_message2" value="Consenti a questa persona di:"/>
+					<check_box label="Vedere se sono online" name="status_check"/>
+					<check_box label="Vedermi sulla mappa" name="map_check"/>
+					<check_box label="Modificare, eliminare o prendere i miei oggetti" name="objects_check"/>
 				</panel>
 			</scroll_container>
 		</panel>
 		<panel name="notes_buttons_panel">
 			<button label="Aggiungi amico" name="add_friend" tool_tip="Offri amicizia a questo residente"/>
-			<button label="IM" name="im" tool_tip="Apri una sessione di messaggio istantaneo"/>
+			<button label="IM" name="im" tool_tip="Apri una sessione messaggio istantaneo"/>
 			<button label="Chiama" name="call" tool_tip="Chiama questo residente"/>
 			<button label="Mappa" name="show_on_map_btn" tool_tip="Mostra il residente sulla mappa"/>
 			<button label="Teleport" name="teleport" tool_tip="Offri teleport"/>
diff --git a/indra/newview/skins/default/xui/it/panel_place_profile.xml b/indra/newview/skins/default/xui/it/panel_place_profile.xml
index fef262d2b935ada6142fc893d2e88ca8f3e2b87f..9a38909d47cdd6aa3badf8f67706406a9c883f74 100644
--- a/indra/newview/skins/default/xui/it/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/it/panel_place_profile.xml
@@ -1,42 +1,42 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="place_profile">
-	<string name="on" value="On"/>
-	<string name="off" value="Off"/>
+	<string name="on" value="Attivo"/>
+	<string name="off" value="Disattivato"/>
 	<string name="anyone" value="Chiunque"/>
 	<string name="available" value="disponibile"/>
 	<string name="allocated" value="assegnato"/>
-	<string name="title_place" value="Profilo del luogo"/>
+	<string name="title_place" value="Profilo del posto"/>
 	<string name="title_teleport_history" value="Cronologia Teleport"/>
-	<string name="not_available" value="(N\D)"/>
+	<string name="not_available" value="(non pert.)"/>
 	<string name="unknown" value="(sconosciuto)"/>
-	<string name="public" value="(publico)"/>
+	<string name="public" value="(pubblico)"/>
 	<string name="none_text" value="(nessuno)"/>
-	<string name="sale_pending_text" value="(Vendita in attesa di)"/>
-	<string name="group_owned_text" value="(Gruppo posseduto)"/>
+	<string name="sale_pending_text" value="(In corso di vendita)"/>
+	<string name="group_owned_text" value="(Di proprietà di un gruppo)"/>
 	<string name="price_text" value="L$"/>
 	<string name="area_text" value="m²"/>
-	<string name="all_residents_text" value="Tutti i Residenti"/>
+	<string name="all_residents_text" value="Tutti i residenti"/>
 	<string name="group_text" value="Gruppo"/>
 	<string name="can_resell">
-		La terra acquistata in questa regione può essere rivenduta.
+		Il terreno acquistato in questa regione può essere rivenduto.
 	</string>
 	<string name="can_not_resell">
-		La terra acquistata in questa regione non può essere rivenduta.
+		Il terreno acquistato in questa regione non può essere rivenduto.
 	</string>
 	<string name="can_change">
-		La terra acquistata in questa regione può essere unita o suddivisa.
+		Il terreno acquistato in questa regione può essere unito o suddiviso.
 	</string>
 	<string name="can_not_change">
-		La terra acquistata in questa regione non può essere unita o suddivisa.
+		Il terreno acquistato in questa regione non può essere unito o suddiviso.
 	</string>
 	<string name="server_update_text">
-		Informazioni su questo luogo non disponibili senza l&apos;aggiornamento del server.
+		Informazioni sul luogo non disponibili senza l&apos;aggiornamento del server.
 	</string>
 	<string name="server_error_text">
-		Informazioni su questo luogo non sono disponibili ora, per favore riprova più tardi.
+		Informazioni su questo luogo non disponibili al momento, riprova più tardi.
 	</string>
 	<string name="server_forbidden_text">
-		Informazioni su questo luogo non sono disponibili a cause delle restrizioni sull&apos;accesso.  Per favore verifica i tuoi permessi con il proprietario del parcel.
+		Informazioni su questo luogo non disponibili a causa delle limitazioni di accesso.  Controlla i tuoi permessi con il proprietario del terreno.
 	</string>
 	<string name="acquired_date">
 		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
@@ -48,7 +48,7 @@
 			<text name="owner_label" value="Proprietario:"/>
 			<text name="maturity_value" value="sconosciuto"/>
 			<accordion name="advanced_info_accordion">
-				<accordion_tab name="parcel_characteristics_tab" title="Parcel">
+				<accordion_tab name="parcel_characteristics_tab" title="Lotto">
 					<panel name="parcel_characteristics_panel">
 						<text name="rating_label" value="Categoria:"/>
 						<text name="rating_value" value="sconosciuto"/>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
index 1fc75b2857358ac088f9abd2fcbc9799cbff2452..d02a794219b963ebb5642852558cbaa7fbeae29b 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_graphics1.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Grafica" name="Display panel">
 	<text name="UI Size:">
-		misura UI:
+		Dimensioni UI:
 	</text>
 	<text name="QualitySpeed">
 		Qualità e velocità:
@@ -99,7 +99,7 @@
 		</radio_group>
 	</panel>
 	<button label="Applica" label_selected="Applica" name="Apply"/>
-	<button label="Resetta" left="110" name="Defaults" width="190"/>
-	<button label="Avanzato" name="Advanced"/>
+	<button label="Reimposta" left="110" name="Defaults" width="190"/>
+	<button label="Avanzate" name="Advanced"/>
 	<button label="Hardware" label_selected="Hardware" name="GraphicsHardwareButton"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
index 2842b6a8aa06b88a623cd5528f1d2ecfc726d26b..6936f24a8a237fda034141ca6e03bb82f9df2d2e 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Suoni" name="Preference Media panel">
-	<slider label="Comando volume centrale" name="System Volume"/>
-	<check_box initial_value="true" label="Disattiva audio quando minimizzato" name="mute_when_minimized"/>
+	<slider label="Vol. principale" name="System Volume"/>
+	<check_box initial_value="true" label="Disatt. se a icona" name="mute_when_minimized"/>
 	<slider label="Pulsanti" name="UI Volume"/>
 	<slider label="Ambiente" name="Wind Volume"/>
 	<slider label="Effetti sonori" name="SFX Volume"/>
diff --git a/indra/newview/skins/default/xui/it/panel_profile_view.xml b/indra/newview/skins/default/xui/it/panel_profile_view.xml
index bf89a3e6f6bf2139a500147a5b4cb0f1f8c798fd..20c62d4ceb2b72e8075a6f36082a3c6df5a899d2 100644
--- a/indra/newview/skins/default/xui/it/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/it/panel_profile_view.xml
@@ -6,11 +6,11 @@
 	<string name="status_offline">
 		Offline
 	</string>
-	<text_editor name="user_name" value="(Caricando...)"/>
+	<text_editor name="user_name" value="(Caricamento in corso...)"/>
 	<text name="status" value="Online"/>
 	<tab_container name="tabs">
 		<panel label="PROFILO" name="panel_profile"/>
-		<panel label="PREFERITI" name="panel_picks"/>
-		<panel label="NOTE &amp; PRIVACY" name="panel_notes"/>
+		<panel label="LUOGHI CONSIGLIATI" name="panel_picks"/>
+		<panel label="NOTE E PRIVACY" name="panel_notes"/>
 	</tab_container>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_status_bar.xml b/indra/newview/skins/default/xui/it/panel_status_bar.xml
index 5b5ca5775907a0a3f0a999153de2a7fe8ca5ea5c..584ac5e4b4e9730648b2079827ab0599f79ff097 100644
--- a/indra/newview/skins/default/xui/it/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/it/panel_status_bar.xml
@@ -23,9 +23,9 @@
 	</panel.string>
 	<button label="" label_selected="" name="buycurrency" tool_tip="Il mio saldo"/>
 	<button label="Acquista" name="buyL" tool_tip="Clicca per comprare più L$"/>
-	<text name="TimeText" tool_tip="Ora attuale (Pacific)">
+	<text name="TimeText" tool_tip="Orario attuale (Pacifico)">
 		24:00, ora del Pacifico
 	</text>
 	<button name="media_toggle_btn" tool_tip="Attiva/ferma tutti i media (musica, video, pagine Web)"/>
-	<button name="volume_btn" tool_tip="Controllo del volume globale"/>
+	<button name="volume_btn" tool_tip="Regolazione del volume globale"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/role_actions.xml b/indra/newview/skins/default/xui/it/role_actions.xml
index eab8e6b4e3d41bf35840c55ca08b8195c200df08..e3f95f7f868228d06dec0ba6819a65220cc409f8 100644
--- a/indra/newview/skins/default/xui/it/role_actions.xml
+++ b/indra/newview/skins/default/xui/it/role_actions.xml
@@ -1,72 +1,72 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <role_actions>
-	<action_set description="Queste abilità permettono di aggiungere e rimuovere Membri dal gruppo, e permettono ai nuovi membri di aderire al gruppo senza invito." name="Membership">
-		<action description="Invitare persone in questo Gruppo" longdescription="Invita Persone in questo Gruppo usando il bottone &apos;Invita&apos; nella sezione Ruoli &gt; tabella Membri." name="member invite"/>
-		<action description="Espellere Membri da questo Gruppo" longdescription="Espelli Membri dal Gruppo usando il bottone &apos;Espelli&apos; nella sezione Ruoli &gt; tabella Membri. Un Proprietario può espellere chiunque eccetto un altro Proprietario. Se tu non sei un Proprietario, un Membro può essere espulso da un gruppo solo ed unicamente, se hanno il Ruolo Everyone, e nessun altro Ruolo. Per rimuovere Membri dai Ruoli, devi avere l&apos;Abilità &apos;Rimuovi Membri dai Ruoli&apos;." name="member eject"/>
-		<action description="Seleziona &apos;Iscrizione libera&apos; e modifica da &apos;Tassa d&apos;Iscrizione&apos;" longdescription="Seleziona &apos;Iscrizione libera&apos; per permettere ai nuovi Membri di aderire senza invito, e modifica da &apos;Tassa d&apos;Iscrizione&apos; nella sezione Generale." name="member options"/>
+	<action_set description="Queste abilità permettono di aggiungere e rimuovere membri dal gruppo e consentono ai nuovi membri di aderire al gruppo senza invito." name="Membership">
+		<action description="Invita persone in questo gruppo" longdescription="Invita persone in questo gruppo usando il pulsante Invita nella sezione Ruoli &gt; scheda membri." name="member invite"/>
+		<action description="Espelli membri da questo gruppo" longdescription="Espelli membri dal gruppo usando il pulsante Espelli nella sezione Ruoli &gt; scheda membri. Un proprietario può espellere chiunque tranne un altro proprietario. Se non sei un proprietario, un membro può essere espulso da un gruppo soltanto qualora abbia soltanto il ruolo Tutti, e nessun altro ruolo. Per rimuovere membri dai ruoli, devi avere l&apos;Abilità corrispondente." name="member eject"/>
+		<action description="Seleziona Iscrizione libera e modifica la Quota d&apos;iscrizione" longdescription="Seleziona Iscrizione libera per permettere ai nuovi membri di aderire senza invito e modifica la quota d&apos;iscrizione nella scheda Generale." name="member options"/>
 	</action_set>
-	<action_set description="Queste Abilità permettono di aggiungere, rimuovere, cambiare i Ruoli del Gruppo, aggiungere e rimuovere Membri dai Ruoli, e assegnare Abilità ai Ruoli." name="Roles">
-		<action description="Creare nuovi Ruoli" longdescription="Crea nuovi Ruoli nella sezione Ruoli &gt; tabella Ruoli." name="role create"/>
-		<action description="Cancellare Ruoli" longdescription="Cancella Ruoli nella sezione Ruoli &gt; tabella Ruoli." name="role delete"/>
-		<action description="Cambia i nomi del Ruolo, titoli, descrizioni, se i membri in quel Ruolo sono resi pubblici" longdescription="Cambia i nomi del Ruolo, titoli, descrizioni, se i membri in quel Ruolo sono resi pubblici. Viene fatto nella parte bassa della sezione Ruoli &gt; tabella Ruoli dopo avere selezionato un Ruolo." name="role properties"/>
-		<action description="Incaricare Membri ad Assegnare Ruoli" longdescription="Assegna un Ruolo a Membri nella lista dei Ruoli assegnati (Roles section &gt; Members tab). Un Membro con questa Abilità può aggiungere Membri ad un Ruolo già presente nell&apos;elenco." name="role assign member limited"/>
-		<action description="Assegnare Membri a tutti i Ruoli" longdescription="Assegna Tutti i Ruoli a Membri nella lista dei Ruoli Assegnati (Roles section &gt; Members tab). *ATTENZIONE* Ogni Membro con questo Ruolo e Abilità può assegnarsi -- e assegnare ad altri Membri non Proprietari-- Ruoli con poteri maggiori di quelli normalmente concessi, potenzialmente elevandosi ai poteri concessi al Proprietario. Siate sicuri di quello che fate prima di assegnare questa Abilità." name="role assign member"/>
-		<action description="Rimuovere Membri dai Ruoli" longdescription="Rimuovi dai Ruoli i Membri nella lista dei Ruoli Assegnati (Roles section &gt; Members tab). Il Proprietario non può essere rimosso." name="role remove member"/>
-		<action description="Assegnare e Rimuovere Abilità nei Ruoli" longdescription="Assegna e Rimuovi Abilità per ogni Ruolo nella lista dei Ruoli Assegnati (Roles section &gt; Roles tab). *ATTENZIONE* Ogni Membro con questo Ruolo e Abilità può assegnarsi --ed assegnare ad altri Membri non Proprietà-- tutte le Abilità, che potenzialmente lo elevano ai poteri ai poteri concessi al Proprietario. Siate sicuri di quello che fate prima di assegnare questa Abilità ." name="role change actions"/>
+	<action_set description="Queste Abilità permettono di aggiungere, rimuovere, cambiare i ruoli del gruppo, aggiungere e rimuovere membri dai ruoli, nonché assegnare abilità ai ruoli." name="Roles">
+		<action description="Creare nuovi ruoli" longdescription="Crea nuovi ruoli nella sezione Ruoli &gt; scheda ruoli." name="role create"/>
+		<action description="Eliminare ruoli" longdescription="Elimina ruoli nella sezione Ruoli &gt; scheda ruoli." name="role delete"/>
+		<action description="Cambia i nomi di ruoli, i titoli, le descrizioni e definisci se i membri in quel ruolo sono resi pubblici" longdescription="Cambia i nomi di ruoli, i titoli, le descrizioni e definisci se i membri in quel ruolo sono resi pubblici Viene fatto nella parte inferiore della sezione Ruoli &gt; scheda Ruoli, dopo avere selezionato un ruolo." name="role properties"/>
+		<action description="Assegnare membri a ruoli del responsabile" longdescription="Assegna un ruolo a membri nella lista dei ruoli assegnati (sezione Ruoli &gt; scheda membri). Un utente con questa Abilità può aggiungere membri ad un ruolo nel quale il responsabile è già presente." name="role assign member limited"/>
+		<action description="Assegnare membri a qualsiasi ruolo" longdescription="Assegna i membri a qualsiasi ruolo nell&apos;elenco dei ruoli assegnati (sezione Ruoli &gt; scheda membri). *ATTENZIONE* Ogni membro con questo Ruolo e Abilità può assegnarsi -- e assegnare ad altri membri non proprietari -- ruoli con poteri maggiori di quelli normalmente concessi, potenzialmente con poteri analoghi a quelli di proprietario. Sii sicuro della scelta prima di assegnare questa Abilità." name="role assign member"/>
+		<action description="Rimuovere membri dai ruoli" longdescription="Rimuovi dai ruoli i membri nell&apos;elenco dei ruoli assegnati (sezione Ruoli &gt; scheda membri). Il proprietario non può essere rimosso." name="role remove member"/>
+		<action description="Assegnare e rimuovere abilità nei ruoli" longdescription="Assegna e Rimuovi Abilità per ogni ruolo nell&apos;elenco dei ruoli assegnati (sezione Ruoli &gt; scheda Ruoli). *ATTENZIONE* Ogni membro con questo ruolo e Abilità può assegnarsi -- ed assegnare ad altri membri non proprietari -- tutte le Abilità, che potenzialmente con poteri analoghi a quelli di proprietario. Sii sicuro della scelta prima di assegnare questa Abilità." name="role change actions"/>
 	</action_set>
-	<action_set description="Queste Abilità permettono di modificare l&apos;identità di questo Gruppo, come il cambiamento della visibilità pubblica, lo statuto, e lo stemma." name="Group Identity">
-		<action description="Cambiare lo Statuto, lo Stemma, e &apos;Mostra nel Cerca/Search&apos;" longdescription="Cambia Statuto, Immagine, e &apos;Mostra nel Cerca&apos;. Viene fatto nella sezione Generale." name="group change identity"/>
+	<action_set description="Queste abilità autorizzano a modificare l&apos;identità di questo gruppo, come ad esempio la modifica della visibilità pubblica, lo statuto e il logo." name="Group Identity">
+		<action description="Cambiare lo statuto, il logo, e &apos;Mostra nella ricerca&apos;" longdescription="Cambia statuto, logo e &apos;Mostra nella ricerca&apos;. Viene fatto nella sezione Generale." name="group change identity"/>
 	</action_set>
-	<action_set description="Queste Abilità includono il potere di intestare, modificare, e vendere terreni di proprietà del Gruppo. Per aprire la finestra Info sul Terreno, click destro sulla terra e seleziona &apos;Info sul Terreno&apos;, o clicca l&apos;icona &apos;i&apos; sulla Barra di Navigazione." name="Parcel Management">
-		<action description="Intestare terra e comprare terra per il gruppo" longdescription="Intesta terra e compra terra per il Gruppo. Viene fatto in Informazioni sul Terreno &gt; tabella Generale." name="land deed"/>
-		<action description="Abbandonare la terra in favore di Governor Linden" longdescription="Abbandona la terra in favore di Governor Linden. *ATTENZIONE* Ogni Membro con questo Ruolo e Abilità può abbandonare la terra posseduta dal Gruppo in Informazioni sul Terreno &gt; tabella Generale, restituendola alla proprietà Linden senza una vendita! Devi essere sicuro di quello che fai prima di assegnare questa Abilità." name="land release"/>
-		<action description="Impostare le info per la vendita della terra" longdescription="Imposta le info per la vendita della terra. *ATTENZIONE* Ogni Membro con questo Ruolo e Abilità può vendere la terra posseduta dal Gruppo in Info sul Terreno &gt; tabella Generale (al prezzo che vogliono)! Devi essere sicuro di quello che fai prima di assegnare questa Abilità." name="land set sale info"/>
-		<action description="Suddividere e unire appezzamenti" longdescription="Suddividi e unisci parcel. Viene fatto con click destro sul terra, &apos;Modifica Terreno&apos;, trascinando poi il mouse sulla terra per creare una selezione. Per suddividere, seleziona quale parte vuoi dividere e clicca &apos;Suddividere&apos;. Per unire, seleziona due o più two parcel confinanti e clicca &apos;Unisci&apos;." name="land divide join"/>
+	<action_set description="Queste Abilità comprendono il potere di intestare, modificare e vendere terreni di proprietà del gruppo. Per aprire la finestra Informazioni sul terreno, fai clic con il pulsante destro del mouse sul terreno e seleziona Informazioni sul terreno, o clicca sull&apos;icona &apos;i&apos; nella Barra di Navigazione." name="Parcel Management">
+		<action description="Cessione di terreno e acquisto di terreno per il gruppo" longdescription="Intesta terreno e acquista terreno per il gruppo. Ciò viene fatto in Informazioni sul terreno &gt; scheda Generale." name="land deed"/>
+		<action description="Abbandonare il terreno in favore di Governor Linden" longdescription="Abbandona il terreno in favore di Governor Linden. *ATTENZIONE* Ogni membro con questo ruolo e abilità può abbandonare il terreno di proprietà del gruppo in Informazioni sul terreno &gt; scheda Generale, restituendolo alla proprietà Linden senza effettuare una vendita. Sii sicuro della scelta prima di assegnare questa Abilità." name="land release"/>
+		<action description="Informazioni su come impostare il terreno come in vendita" longdescription="Imposta le informazioni per la vendita del terreno. *ATTENZIONE* Ogni Membro con questo ruolo e abilità può vendere il terreno di proprietà del gruppo nella scheda Informazioni sul terreno &gt; scheda Generale. Pertanto sii sicuro della scelta prima di assegnare questa Abilità." name="land set sale info"/>
+		<action description="Suddividere e unire lotti" longdescription="Suddividi e unisci lotti. Viene fatto cliccando con il pulsante destro del mouse sul terreno, selezionando Modifica terreno e trascinando il mouse sul terreno per creare una selezione. Per suddividere, seleziona quale parte vuoi dividere e clicca su Suddividi. Per unire, seleziona due o più lotti confinanti e clicca su Unisci." name="land divide join"/>
 	</action_set>
-	<action_set description="Queste Abilità permettono di cambiare il nome dell&apos;appezzamento, le impostazioni pre-definite, la visibilità nella mappatura, il punto di arrivo &amp; le coordinate del Teleport." name="Parcel Identity">
-		<action description="Premi &apos;Mostra Luogo nel Cerca&apos; e seleziona una categoria" longdescription="Premi &apos;Mostra Luogo nel Cerca&apos; e seleziona una categoria di parcel in Info sul Terreno &gt; tabella Opzioni." name="land find places"/>
-		<action description="Cambia il nome del parcel, descrizione, e impostazioni nel &apos;Mostra Luogo nel Cerca&apos;" longdescription="Cambia il nome del parcel, descrizione, e impostazioni nel &apos;Mostra Luogo nel Cerca&apos;. Viene fatto in Info sul Terreno &gt; tabella Opzioni." name="land change identity"/>
-		<action description="Impostare il punto di arrivo e le coordinate del Teleport" longdescription="In un appezzamento posseduto da un Gruppo, i Membri con questo Ruolo e Abilità possono impostare un punto di arrivo per i Teleport entranti, e impostare anche le coordinate del Teleport per ulteriore precisione. Viene fatto in Informazioni sul Terreno &gt; tabella Opzioni." name="land set landing point"/>
+	<action_set description="Queste abilità permettono di cambiare il nome del lotto, le impostazioni di pubblicazione, la visibilità negli elenchi e il punto di arrivo, nonché opzioni di indirizzamento del Teleport." name="Parcel Identity">
+		<action description="Premi Mostra luogo nella ricerca e seleziona una categoria" longdescription="Premi Mostra luogo nella ricerca e seleziona una categoria di lotto in Informazioni sul terreno &gt; scheda Opzioni." name="land find places"/>
+		<action description="Cambia il nome del lotto, la descrizione e le impostazioni di Mostra luogo nella ricerca" longdescription="Cambia il nome del lotto, la descrizione e le impostazioni di Mostra luogo nella ricerca. Ciò viene fatto in Informazioni sul terreno &gt; scheda Opzioni." name="land change identity"/>
+		<action description="Impostare il punto di arrivo e l&apos;indirizzamento del Teleport" longdescription="In un lotto di proprietà di un gruppo, i membri con questo ruolo e abilità possono impostare un punto di arrivo per i teleport entranti e impostare anche l&apos;indirizzamento del teleport per ulteriore precisione. Viene fatto in Informazioni sul terreno &gt; Opzioni." name="land set landing point"/>
 	</action_set>
-	<action_set description="Queste Abilità permettono alcune permessi nell&apos;appezzamento, quali &apos;Creare Oggetti&apos;, &apos;Editare il Terreno&apos;, trasmettere musica &amp; tabella Media." name="Parcel Settings">
-		<action description="Cambiare musica &amp; tabella media" longdescription="Cambia le impostazioni per lo streaming della musica e dei video in Informazioni sul Terreno &gt; tabella Media." name="land change media"/>
-		<action description="Cliccare &apos;Edita il Terreno&apos;" longdescription="Clicca &apos;Edita il Terreno&apos;. *ATTENZIONE* Informazioni sul Terreno &gt; tabella Opzioni &gt; Edita il Terreno permette a tutti di modificare la forma del terreno, collocare e spostare le piante Linden. Devi essere sicuro di quello che fai prima di assignera questa Abilità. Edita il terreno in Informazioni sul Terreno &gt; tabella Opzioni." name="land edit"/>
-		<action description="Cliccare Informazioni sul Terreno &gt; Impostazione Opzioni" longdescription="Premi &apos;Salvo (nessun danno)&apos;, &apos;Vola&apos;, e permetti agli altri Residenti di: &apos;modifica Terreno&apos;, &apos;Crea&apos;, &apos;Crea Landmarks&apos;, e &apos;Scripts attivi&apos; nella terra posseduta da un Gruppo in Info sul Terreno &gt; tabella Opzioni." name="land options"/>
+	<action_set description="Queste abilità hanno poteri relativi alle opzioni dei lotti, come la creazione di oggetti, la modifica del terreno e le impostazioni per la musica e gli elementi multimediali." name="Parcel Settings">
+		<action description="Cambiare impostazioni musica e multimediali" longdescription="Cambia le impostazioni per lo streaming della musica e dei video in Informazioni sul terreno &gt; Media." name="land change media"/>
+		<action description="Attiva &apos;Modifica terreno&apos;" longdescription="Attiva &apos;Modifica terreno&apos;. *ATTENZIONE* Informazioni sul terreno &gt; Opzioni &gt; Modifica terreno consente a chiunque di modificare la forma del tuo terreno e di collocare e spostare le piante Linden. Pertanto sii sicuro della scelta prima di assegnare questa Abilità. La funzione di modifica del terreno è attivata in Informazioni sul terreno &gt; Opzioni." name="land edit"/>
+		<action description="Attivazione di parametri per Informazioni sul terreno &gt; Opzioni" longdescription="Premi Sicuro (nessun danno), Vola e consenti agli altri residenti di: modificare il terreno, costruire, creare punti di riferimento ed eseguire script nel terreno appartenente ad un gruppo in Informazioni sul terreno &gt; scheda Opzioni." name="land options"/>
 	</action_set>
-	<action_set description="Queste Abilità permettono ai Membri di non avere restrizioni in un appezzamento posseduto da un Gruppo." name="Parcel Powers">
-		<action description="Permettere sempre &apos;Edita il Terreno&apos;" longdescription="I Membri con questo Ruolo e Abilità possono editare il terreno posseduto da un Gruppo, anche se non è selezionato in Informazioni sul Terreno &gt; tabella Opzioni." name="land allow edit land"/>
-		<action description="Permettere Vola Sempre&apos;" longdescription="I Membri con questo Ruolo e Abilità possono volare in un terreno posseduto da un Gruppo, anche se non è selezionato in Info sul Terreno &gt; tabella Opzioni." name="land allow fly"/>
-		<action description="Permettere &apos;Crea Oggetti&apos; sempre" longdescription="I Membri con questo Ruolo e Abilità possono creare oggetti in un appezzamento posseduto da un Gruppo, anche se non è selezionato in Informazioni sul Terreno &gt; tabella Opzioni." name="land allow create"/>
-		<action description="Permettere &apos;Crea Landmark&apos; sempre" longdescription="I Membri con questo Ruolo e Abilità possono creare Landmark in un appezzamento posseduto da un Gruppo , anche se non è evidenziato in Informazioni sul Terreno &gt; tabella Opzioni." name="land allow landmark"/>
-		<action description="Permettere &apos;Teleportami a Casa&apos; in un appezzamento di un Gruppo" longdescription="I Membri in un Ruolo con questa Abilità possono usare il menu Mondo &gt; Landmarks &gt; Imposta come Casa su un parcel intestato ad un Gruppo." name="land allow set home"/>
+	<action_set description="Queste abilità permettono ai membri di non avere restrizioni in un lotto appartenente ad un gruppo." name="Parcel Powers">
+		<action description="Consenti sempre la modifica del terreno" longdescription="I membri con questo ruolo e abilità possono modificare il terreno appartenente ad un gruppo, anche se la funzionalità è disattivata in Informazioni sul terreno &gt; Opzioni." name="land allow edit land"/>
+		<action description="Consenti sempre il volo" longdescription=" I membri con questo ruolo e abilità possono volare in un terreno appartenente ad un gruppo, anche se la funzionalità è disattivata in Informazioni sul terreno &gt; Opzioni." name="land allow fly"/>
+		<action description="Consenti sempre la creazione di oggetti" longdescription="I membri con questo ruolo e abilità possono creare oggetti in un lotto appartenente ad un gruppo, anche se la funzionalità è disattivata in Informazioni sul terreno &gt; Opzioni." name="land allow create"/>
+		<action description="Consenti sempre la creazione di punti di riferimento" longdescription="I membri con questo ruolo e abilità possono creare punti di riferimento in un lotto appartenente ad un gruppo, anche se la funzionalità è disattivata in Informazioni sul terreno &gt; Opzioni." name="land allow landmark"/>
+		<action description="Consenti la funzione &apos;Imposta come Casa mia&apos; in un lotto di gruppo" longdescription="I membri in un ruolo con questa Abilità possono usare il menu Mondo &gt; Punti di riferimento &gt; Imposta come Casa su un lotto ceduto a questo gruppo." name="land allow set home"/>
 	</action_set>
-	<action_set description="Queste Abilità permettono di concedere o limitare l&apos;accesso ad un appezzamento di un Gruppo, e includono Congela ed Espelli un Residente." name="Parcel Access">
-		<action description="Gestire la lista degli Accessi Consentiti" longdescription="Gestisci la lista degli Accessi Consentiti in Informazioni sul Terreno &gt; tabella Accesso." name="land manage allowed"/>
-		<action description="Gestire la lista degli Accessi Bloccati" longdescription="Gestisci la lista Espulsi dal parcel in Info sul Terreno &gt; tabella Accesso." name="land manage banned"/>
-		<action description="Cambia le impostazioni del parcel in &apos;Vendi Pass a&apos;" longdescription="Cambia le impostazioni &apos;Vendi Pass a&apos; in Info sul Terreno &gt; tabella Accesso." name="land manage passes"/>
-		<action description="Espellere e Congelare i Residenti in un appezzamento" longdescription="Membri in un Ruolo con questa Abilità possono occuparsi di un residente indesiderato in un parcel posseduto da un Gruppo, con click destro sul residente, selezionando &apos;Espelli&apos; o &apos;Immobilizza&apos;." name="land admin"/>
+	<action_set description="Queste Abilità consentono di concedere o limitare l&apos;accesso ad un lotto di un gruppo da parte di residenti, con le azioni Congela ed Espelli." name="Parcel Access">
+		<action description="Gestire la lista di accesso al lotto" longdescription="Gestisci la lista di accesso al lotto in Informazioni sul terreno &gt;  Accesso." name="land manage allowed"/>
+		<action description="Gestire la lista dei residenti espulsi dal lotto" longdescription="Gestisci la lista Espulsi dal lotto in Informazioni sul terreno &gt; scheda Accesso." name="land manage banned"/>
+		<action description="Cambia le impostazioni del lotto in Vendi pass a" longdescription="Cambia le impostazioni Vendi pass a in Informazioni sul terreno &gt; scheda Accesso." name="land manage passes"/>
+		<action description="Espellere e Congelare i Residenti in un lotto" longdescription="Membri in un ruolo con questa Abilità possono occuparsi di un residente indesiderato in un lotto posseduto da un gruppo, facendo clic sul residente con il pulsante destro del mouse e selezionando Espelli o Congela." name="land admin"/>
 	</action_set>
-	<action_set description="Queste Abilità permettono ai Membri di restituire oggetti, collocare e spostare piante Linden. Questo è utile ai Membri per ripulire da oggetti indesiderati e creare paesaggi, ma deve essere utilizzato con cura, perchè non si può annullare la restituzione degli Oggetti." name="Parcel Content">
-		<action description="Restituire oggetti posseduti da un Gruppo" longdescription="Restituisci gli oggetti posseduti da un Gruppo in un appezzamento di un Gruppo in Informazioni sul Terreno &gt; tabella Oggetti." name="land return group owned"/>
-		<action description="Restituire oggetti concessi ad un Gruppo" longdescription="Restituisci oggetti concessi ad un Gruppo in un appezzamento di un Gruppo in Informazioni sul Terreno &gt; tabella Oggetti." name="land return group set"/>
-		<action description="Restituire oggetti estranei al Gruppo" longdescription="Restituire oggetti estranei al Gruppo in un appezzamento di un Gruppo in Info sul Terreno &gt; tabella Oggetti." name="land return non group"/>
-		<action description="Creare un paesaggio utilizzando le piante Linden" longdescription="Abilità di creare paesaggi di posizionare e spostare alberi, piante, erba. Questi oggetti sono presenti nella Libreria del tuo Inventario &gt; Cartella Oggetti, o possono essere creati con il menu Crea." name="land gardening"/>
+	<action_set description="Queste abilità consentono ai membri di restituire oggetti, collocare e spostare piante Linden. Questo è utile ai membri per ripulire da oggetti indesiderati e creare paesaggi, ma deve essere utilizzato con cura, perchè la restituzione degli oggetti non può essere annullata." name="Parcel Content">
+		<action description="Restituire oggetti di proprietà di un gruppo" longdescription="Restituisci gli oggetti di proprietà di un gruppo in un appezzamento di un gruppo in Informazioni sul terreno &gt; Oggetti." name="land return group owned"/>
+		<action description="Restituire oggetti assegnati ad un gruppo" longdescription="Restituisci oggetti assegnati ad un gruppo in un lotto di un gruppo in Informazioni sul terreno &gt; Oggetti." name="land return group set"/>
+		<action description="Restituire oggetti estranei al gruppo" longdescription="Restituire oggetti estranei al gruppo in un appezzamento di un gruppo in Informazioni sul terreno &gt; Oggetti." name="land return non group"/>
+		<action description="Creare un paesaggio utilizzando le piante Linden" longdescription="Abilità di creare paesaggi e posizionare e spostare alberi, piante, erba Linden. Questi oggetti sono presenti nella Libreria del tuo Inventario &gt; cartella Oggetti, o possono essere creati con il menu Crea." name="land gardening"/>
 	</action_set>
-	<action_set description="Queste Abilità includono il potere di intestare, modificare, vendere oggetti posseduti dal gruppo. Viene fatto in Build Tools &gt; tabella Generale. Click destro su un oggetto e Modifica per vedere le impostazioni." name="Object Management">
-		<action description="Intestare oggetti ad un Gruppo" longdescription="Intesta oggetti ad un Gruppo in Build Tools &gt; tabella Generale." name="object deed"/>
-		<action description="Modificare (sposta, copia, modifica) oggetti di un Gruppo" longdescription="Controlla (sposta, copia, modifica) gli oggetti posseduti da un Gruppo in Build Tools &gt; tabella Generale." name="object manipulate"/>
-		<action description="Mettere in vendita oggetti di un Gruppo" longdescription="Metti in vendita oggetti posseduti da un Gruppo in Build Tools &gt; tabelle Generale." name="object set sale"/>
+	<action_set description="Queste Abilità includono il potere di cedere, modificare e vendere oggetti posseduti dal gruppo. Viene fatto negli strumenti Costruisci &gt; scheda Generale. Clic con il pulsante destro del mouse su un oggetto e Modifica per vedere le impostazioni." name="Object Management">
+		<action description="Intestare oggetti ad un gruppo" longdescription="Intesta oggetti ad un gruppo in Strumenti per costruzione &gt; scheda Generale." name="object deed"/>
+		<action description="Modificare (sposta, copia, modifica) oggetti di un gruppo" longdescription="Gestisci (sposta, copia, modifica) gli oggetti appartenenti ad un gruppo in Build Tools &gt; tabella Generale." name="object manipulate"/>
+		<action description="Mettere in vendita oggetti di un gruppo" longdescription="Metti in vendita oggetti posseduti da un Gruppo in Strumenti per costruzione &gt; scheda Generale." name="object set sale"/>
 	</action_set>
-	<action_set description="Queste Abilità permettono di richiedere ai Membri di pagare le perdite del Gruppo e di ricevere i dividendi del Gruppo, e di limitare l&apos;accesso all&apos;account del Gruppo." name="Accounting">
-		<action description="Pagare le perdite del Gruppo e ricevere i dividendi del Gruppo" longdescription="I Membri con questo Ruolo e Abilità pagheranno automaticamente le perdite del Gruppo e riceveranno i dividendi del Gruppo. Questo significa che riceveranno una porzione delle vendite di terre possedute dal gruppo (che sono risolte giornalmente), e contribuiranno anche su cose come le tasse di iscrizione dell&apos;appezzament. " name="accounting accountable"/>
+	<action_set description="Queste abilità consentono di richiedere ai membri di pagare le passività del gruppo e di ricevere i dividendi del gruppo, nonché di limitare l&apos;accesso alla cronologia finanziaria del gruppo." name="Accounting">
+		<action description="Pagare le passività del gruppo e ricevere i dividendi del gruppo" longdescription="I membri con questo ruolo e abilità pagheranno automaticamente le passività del gruppo e riceveranno i dividendi del gruppo. Questo significa che riceveranno una porzione delle vendite di terreni appartenenti al gruppo (che sono distribuite giornalmente) e contribuiranno fondi a spese come le quote di inserzione del lotto. " name="accounting accountable"/>
 	</action_set>
-	<action_set description="Queste Abilità permettono ai Membri di spedire, ricevere, e vedere le Notice del Gruppo." name="Notices">
-		<action description="Spedire Notice" longdescription="Membri in un Ruolo con questa Abilità possono spedire Notice nel Gruppo &gt; sezione Notice." name="notices send"/>
-		<action description="Ricevere Notice e vedere Notice precedenti" longdescription="Membri in un ruolo con questa Abilità possono ricevere Notice e vedere Notice vecchie nel Gruppo &gt; sezione Notice." name="notices receive"/>
+	<action_set description="Queste abilità consentono ai membri di inviare, ricevere e vedere gli avvisi del gruppo." name="Notices">
+		<action description="Invia avvisi" longdescription="Membri in un ruolo con questa Abilità possono inviare avvisi tramite la sezione Gruppo &gt; Avvisi." name="notices send"/>
+		<action description="Ricevere avvisi e vedere avvisi precedenti" longdescription="Membri in un ruolo con questa Abilità possono ricevere avvisi e vedere avvisi precedenti nella sezione Gruppo &gt; Avvisi." name="notices receive"/>
 	</action_set>
-	<action_set description="Queste Abilità permettono di concedere o limitare l&apos;accesso alle sessioni di chat e di voice chat nel gruppo." name="Chat">
-		<action description="Aderire alla Chat di Gruppo" longdescription="I Membri con questo Ruolo e Abilità possono aderire alle sessioni di chat, sia scritte che in voice." name="join group chat"/>
-		<action description="Aderire alla Voice Chat di Gruppo" longdescription="I Membri con questo Ruolo e Abilità possono aderire alle sessioni di Voice Chat nel gruppo.  NOTA: Per poter partecipare alla Chat di Gruppo è necessario accedere alla sessione di voice chat." name="join voice chat"/>
-		<action description="Moderare la Chat di Gruppo" longdescription="I Membri con questo Ruolo e Abilità possono controllare l&apos;accesso e la partecipazione alle sessioni di chat scritta e di voice chat nel Gruppo." name="moderate group chat"/>
+	<action_set description="Queste Abilità permettono di concedere o limitare l&apos;accesso alle sessioni di chat e di chat vocale nel gruppo." name="Chat">
+		<action description="Partecipare alla Chat di gruppo" longdescription="I membri con questo ruolo e abilità possono partecipare alle sessioni di chat, sia scritte che vocale." name="join group chat"/>
+		<action description="Partecipa alla Chat vocale di gruppo" longdescription=" I membri con questo ruolo e abilità possono partecipare alle sessioni di Chat vocale nel gruppo.  NOTA: per poter partecipare alla Chat di gruppo è necessario accedere alla sessione di chat vocale." name="join voice chat"/>
+		<action description="Moderare la Chat di gruppo" longdescription="I membri con questo ruolo e abilità possono gestire l&apos;accesso e la partecipazione alle sessioni di chat scritta e di chat vocale nel gruppo." name="moderate group chat"/>
 	</action_set>
 </role_actions>
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 308d5501886eb0d3bee441b38a61066c7f68501f..a1b570d7160ec64fe2c990c41f663b807ee68fdc 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -853,7 +853,7 @@
 		Offerta di Teleport
 	</string>
 	<string name="StartUpNotifications">
-		Nuove notifice sono arrivate mentre eri assente...
+		Mentre eri assente sono arrivate nuove notifiche...
 	</string>
 	<string name="OverflowInfoChannelString">
 		Hai ancora [%d] notifiche
@@ -999,7 +999,7 @@
 		Preferiti
 	</string>
 	<string name="InvFolder Current Outfit">
-		Vestiario attuale
+		Abbigliamento attuale
 	</string>
 	<string name="InvFolder My Outfits">
 		Il mio vestiario
diff --git a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
index 105e903840adb32a0a2596f1e43b4252e64576cd..dc34441535dab172dbe6f97ff4cd6d86ade5da4a 100644
--- a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
@@ -92,7 +92,7 @@
 	<text name="dscr_title">
 		詳細:
 	</text>
-	<text name="bug_aviso" width="210">
+	<text name="bug_aviso">
 		できるだけ具体的に詳しく記入してください。
 	</text>
 	<text name="incomplete_title">
diff --git a/indra/newview/skins/default/xui/ja/language_settings.xml b/indra/newview/skins/default/xui/ja/language_settings.xml
index 71418d446ab9fa71c3512f7f3dc17b1ba1d423a2..72382417d9cd79168192a8e2882c2fddf50ab2f4 100644
--- a/indra/newview/skins/default/xui/ja/language_settings.xml
+++ b/indra/newview/skins/default/xui/ja/language_settings.xml
@@ -3,9 +3,9 @@
 <strings>
 
 	<!-- Locale Information -->
-	<string name="MicrosoftLocale">english</string>
-	<string name="DarwinLocale">C</string>
-	<string name="LinuxLocale">C</string>
+	<string name="MicrosoftLocale">japanese</string>
+	<string name="DarwinLocale">ja_JP.UTF-8</string>
+	<string name="LinuxLocale">ja_JP.UTF-8</string>
 	
 	<!-- 
 	datetimeToCodes["wkday"]	= "%a";		// Thu
diff --git a/indra/newview/skins/default/xui/nl/language_settings.xml b/indra/newview/skins/default/xui/nl/language_settings.xml
index 71418d446ab9fa71c3512f7f3dc17b1ba1d423a2..dc4663705fb44fdab83f6e3f47877c1ff8f881dd 100644
--- a/indra/newview/skins/default/xui/nl/language_settings.xml
+++ b/indra/newview/skins/default/xui/nl/language_settings.xml
@@ -3,9 +3,9 @@
 <strings>
 
 	<!-- Locale Information -->
-	<string name="MicrosoftLocale">english</string>
-	<string name="DarwinLocale">C</string>
-	<string name="LinuxLocale">C</string>
+	<string name="MicrosoftLocale">dutch</string>
+	<string name="DarwinLocale">nl_NL.UTF-8</string>
+	<string name="LinuxLocale">nl_NL.UTF-8</string>
 	
 	<!-- 
 	datetimeToCodes["wkday"]	= "%a";		// Thu
diff --git a/indra/newview/skins/default/xui/pl/floater_about.xml b/indra/newview/skins/default/xui/pl/floater_about.xml
index 93a87b8cbc7ec8399f044b9d3c1a0ead2ca46976..b49247c4bfb2737d5e473bb79d2515b8dbfb9a5a 100644
--- a/indra/newview/skins/default/xui/pl/floater_about.xml
+++ b/indra/newview/skins/default/xui/pl/floater_about.xml
@@ -16,18 +16,18 @@
 		Procesor: [CPU]
 Pamięć: [MEMORY_MB] MB
 Wersja OS: [OS_VERSION]
-Graphics Card Vendor: [GRAPHICS_CARD_VENDOR]
-Karta Graficzna: [GRAPHICS_CARD]
+Sprzedawca karty graficznej: [GRAPHICS_CARD_VENDOR]
+Karta graficzna: [GRAPHICS_CARD]
 	</floater.string>
 	<floater.string name="AboutDriver">
-		Windows Sterownik Karty Graficznej: [GRAPHICS_DRIVER_VERSION]
+		Windows Sterownik karty graficznej: [GRAPHICS_DRIVER_VERSION]
 	</floater.string>
 	<floater.string name="AboutLibs">
 		Wersja OpenGL: [OPENGL_VERSION]
 
 Wersja libcurl: [LIBCURL_VERSION]
-Wersja Dekodera J2C: [J2C_VERSION]
-Wersja Sterownika Audio: [AUDIO_DRIVER_VERSION]
+Wersja dekodera J2C: [J2C_VERSION]
+Wersja sterownika audio: [AUDIO_DRIVER_VERSION]
 Wersja Qt Webkit: [QT_WEBKIT_VERSION]
 Wersja Vivox: [VIVOX_VERSION]
 	</floater.string>
@@ -35,11 +35,11 @@ Wersja Vivox: [VIVOX_VERSION]
 		(żadne)
 	</floater.string>
 	<floater.string name="AboutTraffic">
-		Stracone Pakiety: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+		Stracone pakiety: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
 	</floater.string>
 	<tab_container name="about_tab">
 		<panel label="Info" name="support_panel">
-			<button label="Kopiuj do Schowka" name="copy_btn"/>
+			<button label="Kopiuj do schowka" name="copy_btn"/>
 		</panel>
 		<panel label="Podziękowania" name="credits_panel">
 			<text_editor name="credits_editor">
diff --git a/indra/newview/skins/default/xui/pl/floater_about_land.xml b/indra/newview/skins/default/xui/pl/floater_about_land.xml
index 6f5cc18104be177bc29098166c56ab919318548e..e4908deb079499749fc0dc6aed2959ffea3f1430 100644
--- a/indra/newview/skins/default/xui/pl/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/pl/floater_about_land.xml
@@ -24,7 +24,7 @@
 	<tab_container name="landtab">
 		<panel label="OGÓLNE" name="land_general_panel">
 			<panel.string name="new users only">
-				Tylko Nowi Rezydenci
+				Tylko nowi Rezydenci
 			</panel.string>
 			<panel.string name="anyone">
 				Każdy
@@ -39,7 +39,7 @@
 				Numer aukcji: [ID]
 			</panel.string>
 			<panel.string name="need_tier_to_modify">
-				Musisz zaakceptować zakup by móc modyfikować posiadłość.
+				Musisz zaakceptować zakup by móc modyfikować Posiadłość.
 			</panel.string>
 			<panel.string name="group_owned_text">
 				(Własność Grupy)
@@ -57,7 +57,7 @@
 				(brak)
 			</panel.string>
 			<panel.string name="sale_pending_text">
-				(Sprzedaż w Toku Realizacji)
+				(Sprzedaż w toku realizacji)
 			</panel.string>
 			<panel.string name="no_selection_text">
 				Posiadłość nie wybrana.
@@ -94,9 +94,9 @@ Idź do Świat &gt; O Posiadłości albo wybierz inną posiadłość żeby pokaz
 				Leyla Linden
 			</text>
 			<button label="Ustaw" name="Set..."/>
-			<check_box label="Udostępnij przypisywanie na grupę" name="check deed" tool_tip="Oficer grupy ma prawo przepisać prawo własności posiadłości na grupę. Posiadłość wspierana jest przez przydziały pochodzące od członków grupy."/>
-			<button label="Przypisz" name="Deed..." tool_tip="Prawo przypisania posiadłości na grupę może dokonać jedynie oficer grupy."/>
-			<check_box label="Właścicel dokonuje wpłat związanych z posiadłością" name="check contrib" tool_tip="Kiedy posiadłość zostaje przypisana na grupę, poprzedni właściciel realizuje wpłaty z nią związane w celu jej utrzymania."/>
+			<check_box label="Udostępnij przypisywanie na Grupę" name="check deed" tool_tip="Oficer Grupy ma prawo przepisać prawo własności Posiadłości na Grupę. Posiadłość wspierana jest przez przydziały pochodzące od członków Grupy."/>
+			<button label="Przypisz" name="Deed..." tool_tip="Prawo przypisania Posiadłości na Grupę może dokonać jedynie oficer Grupy."/>
+			<check_box label="Właścicel dokonuje wpłat związanych z Posiadłością" name="check contrib" tool_tip="Kiedy Posiadłość zostaje przypisana na Grupę, poprzedni Właściciel realizuje wpłaty z nią związane w celu jej utrzymania."/>
 			<text name="For Sale:">
 				Na Sprzedaż:
 			</text>
@@ -104,9 +104,9 @@ Idź do Świat &gt; O Posiadłości albo wybierz inną posiadłość żeby pokaz
 				Nie
 			</text>
 			<text name="For Sale: Price L$[PRICE].">
-				Cena: L$[PRICE] (L$[PRICE_PER_SQM]/m²).
+				Cena: [PRICE]L$ ([PRICE_PER_SQM]L$/m²).
 			</text>
-			<button label="Sprzedaj Posiadłość" name="Sell Land..."/>
+			<button label="Sprzedaj posiadłość" name="Sell Land..."/>
 			<text name="For sale to">
 				Na sprzedaż dla: [BUYER]
 			</text>
@@ -116,7 +116,7 @@ Idź do Świat &gt; O Posiadłości albo wybierz inną posiadłość żeby pokaz
 			<text name="Selling with no objects in parcel.">
 				Obiekty nie są zawarte w sprzedaży.
 			</text>
-			<button label="Anuluj Sprzedaż" label_selected="Anuluj Sprzedaż" name="Cancel Land Sale"/>
+			<button label="Anuluj sprzedaż" label_selected="Anuluj sprzedaż" name="Cancel Land Sale"/>
 			<text name="Claimed:">
 				Data:
 			</text>
@@ -139,22 +139,22 @@ Idź do Świat &gt; O Posiadłości albo wybierz inną posiadłość żeby pokaz
 			<button label="Skrypt" name="Scripts..."/>
 			<button label="Kup dla Grupy" name="Buy For Group..."/>
 			<button label="Kup Przepustkę..." label_selected="Kup Przeputkę..." left="130" name="Buy Pass..." tool_tip="Przepustka udostępnia tymczasowy wstęp na posiadłość." width="125"/>
-			<button label="Porzuć z Posiadłości" name="Abandon Land..."/>
+			<button label="Porzuć Posiadłość" name="Abandon Land..."/>
 			<button label="Odzyskaj Posiadłość" name="Reclaim Land..."/>
-			<button label="Sprzedaż przez Lindenów" name="Linden Sale..." tool_tip="Posiadłość musi mieć właściciela, zawartość oraz nie może być wystawiona na aukcę."/>
+			<button label="Sprzedaż przez Lindenów" name="Linden Sale..." tool_tip="Posiadłość musi mieć Właściciela, zawartość oraz nie może być wystawiona na Aukcję."/>
 		</panel>
 		<panel label="UMOWA" name="land_covenant_panel">
 			<panel.string name="can_resell">
-				Posiadłość zakupiona w tym regionie może być odsprzedana.
+				Posiadłość zakupiona w tym Regionie może być odsprzedana.
 			</panel.string>
 			<panel.string name="can_not_resell">
-				Posiadłość zakupiona w tym regionie nie może być odsprzedana.
+				Posiadłość zakupiona w tym Regionie nie może być odsprzedana.
 			</panel.string>
 			<panel.string name="can_change">
-				Posiadłość zakupiona w tym regionie może być łączona/dzielona.
+				Posiadłość zakupiona w tym Regionie może być łączona/dzielona.
 			</panel.string>
 			<panel.string name="can_not_change">
-				Posiadłość zakupiona w tym regionie nie może być
+				Posiadłość zakupiona w tym Regionie nie może być
 łączona/dzielona.
 			</panel.string>
 			<text name="estate_section_lbl">
@@ -197,13 +197,13 @@ Idź do Świat &gt; O Posiadłości albo wybierz inną posiadłość żeby pokaz
 				Odsprzedaj:
 			</text>
 			<text left="115" name="resellable_clause" width="338">
-				Posiadłość zakupiona w tym regionie nie może być odsprzedana.
+				Posiadłość zakupiona w tym Regionie nie może być odsprzedana.
 			</text>
 			<text name="changeable_lbl">
 				Podziel:
 			</text>
 			<text left="115" name="changeable_clause" width="338">
-				Posiadłość zakupiona w tym regionie nie może być
+				Posiadłość zakupiona w tym Regionie nie może być
 łączona/dzielona.
 			</text>
 		</panel>
@@ -215,7 +215,7 @@ Idź do Świat &gt; O Posiadłości albo wybierz inną posiadłość żeby pokaz
 				[COUNT] z [MAX] ([DELETED] zostanie usunięte)
 			</panel.string>
 			<text name="parcel_object_bonus">
-				Ilość Ekstra Obiektów: [BONUS]
+				Ilość ekstra obiektów: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
 				Ilość używanych primów:
@@ -230,19 +230,19 @@ Idź do Świat &gt; O Posiadłości albo wybierz inną posiadłość żeby pokaz
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				Primy na posiadłości:
+				Primy na Posiadłości:
 			</text>
 			<text name="total_objects_text">
 				[COUNT]
 			</text>
 			<text name="Owned by parcel owner:">
-				Właściciela posiadłości:
+				Właściciela Posiadłości:
 			</text>
 			<text name="owner_objects_text">
 				[COUNT]
 			</text>
 			<button label="Pokaż" label_selected="Pokaż" name="ShowOwner"/>
-			<button label="Zwróć" name="ReturnOwner..." tool_tip="Zwróć obiekty do ich właścicieli."/>
+			<button label="Zwróć" name="ReturnOwner..." tool_tip="Zwróć obiekty do ich Właścicieli."/>
 			<text name="Set to group:">
 				Grupy:
 			</text>
@@ -250,7 +250,7 @@ Idź do Świat &gt; O Posiadłości albo wybierz inną posiadłość żeby pokaz
 				[COUNT]
 			</text>
 			<button label="Pokaż" label_selected="Pokaż" name="ShowGroup"/>
-			<button label="Zwróć" name="ReturnGroup..." tool_tip="Zwróć obiekty do ich właścicieli.."/>
+			<button label="Zwróć" name="ReturnGroup..." tool_tip="Zwróć obiekty do ich Właścicieli.."/>
 			<text name="Owned by others:">
 				Innych Rezydentów:
 			</text>
@@ -258,7 +258,7 @@ Idź do Świat &gt; O Posiadłości albo wybierz inną posiadłość żeby pokaz
 				[COUNT]
 			</text>
 			<button label="Pokaż" label_selected="Pokaż" name="ShowOther"/>
-			<button label="Zwróć" name="ReturnOther..." tool_tip="Zwróć obiekty do ich właścicieli."/>
+			<button label="Zwróć" name="ReturnOther..." tool_tip="Zwróć obiekty do ich Właścicieli."/>
 			<text name="Selected / sat upon:">
 				Wybranych:
 			</text>
@@ -269,9 +269,9 @@ Idź do Świat &gt; O Posiadłości albo wybierz inną posiadłość żeby pokaz
 				Zwracaj obiekty innych Rezydentów (minut, 0 = wyłącz):
 			</text>
 			<text name="Object Owners:" width="108">
-				Właściciel Obiektów:
+				Właściciel obiektów:
 			</text>
-			<button label="Odśwież Listę" label_selected="Odśwież Listę" left="112" name="Refresh List" tool_tip="Refresh Object List"/>
+			<button label="Odśwież listę" label_selected="Odśwież listę" left="112" name="Refresh List" tool_tip="Refresh Object List"/>
 			<button label="Zwróć obiekty..." label_selected="Zwróć obiekty..." left="224" name="Return objects..."/>
 			<name_list name="owner list">
 				<name_list.columns label="Typ" name="type"/>
@@ -283,14 +283,14 @@ Idź do Świat &gt; O Posiadłości albo wybierz inną posiadłość żeby pokaz
 		</panel>
 		<panel label="OPCJE" name="land_options_panel">
 			<panel.string name="search_enabled_tooltip">
-				Udostępnij wyświetlanie tej posiadłości w wyszukiwarce
+				Udostępnij wyświetlanie tej Posiadłości w wyszukiwarce
 			</panel.string>
 			<panel.string name="search_disabled_small_tooltip">
-				Wybrana opcja jest wyłączona ze względu iż wielkość posiadłości wynosi 128 m² bądź mniej.
+				Wybrana opcja jest wyłączona, ponieważ wielkość Posiadłości wynosi 128 m² bądź mniej.
 Jedynie większe posiadłości mogą być umieszczone w bazie wyszukiwarki.
 			</panel.string>
 			<panel.string name="search_disabled_permissions_tooltip">
-				Wybrana opcja jest wyłączona ponieważ nie posiadasz prawa do modyfikacji posiadłości.
+				Wybrana opcja jest wyłączona ponieważ nie posiadasz prawa do modyfikacji Posiadłości.
 			</panel.string>
 			<panel.string name="mature_check_mature">
 				Treść &apos;Mature&apos;
@@ -299,10 +299,10 @@ Jedynie większe posiadłości mogą być umieszczone w bazie wyszukiwarki.
 				Treść &apos;Adult&apos;
 			</panel.string>
 			<panel.string name="mature_check_mature_tooltip">
-				Twoja posiadłość bądź treść jaką zawiera klasyfikowana jest jako &apos;Mature&apos;.
+				Twoja Posiadłość bądź treść jaką zawiera klasyfikowana jest jako &apos;Mature&apos;.
 			</panel.string>
 			<panel.string name="mature_check_adult_tooltip">
-				Informacje o Twojej posiadłości i treści jaką zawiera klasyfikowane są jako &apos;Adult&apos;.
+				Informacje o Twojej Posiadłości i treści jaką zawiera klasyfikowane są jako &apos;Adult&apos;.
 			</panel.string>
 			<panel.string name="landing_point_none">
 				(brak)
@@ -316,8 +316,8 @@ Jedynie większe posiadłości mogą być umieszczone w bazie wyszukiwarki.
 			<text name="allow_label">
 				Udostępnij innym Rezydentom:
 			</text>
-			<check_box label="Edytowanie Terenu" name="edit land check" tool_tip="Wybrana - każdy może kształtować Twój teren. Najlepiej jest zostawić tą opcję nie wybraną, Ty zawsze możesz kształtowć Twój teren."/>
-			<check_box label="Latanie" name="check fly" tool_tip="Wybrana - Rezydenci mogą latać na Twojej posiadłości. Nie wybrana - mogą tylko wlatywać do lub latać ponad Twoją posiadłością."/>
+			<check_box label="Edytowanie Terenu" name="edit land check" tool_tip="Wybrana - każdy może kształtować Twój teren. Najlepiej jest zostawić tą opcję nie wybraną, Ty zawsze możesz kształtować Twój teren."/>
+			<check_box label="Latanie" name="check fly" tool_tip="Wybrana - Rezydenci mogą latać na Twojej Posiadłości. Nie jest wybrana - mogą tylko wlatywać do lub latać ponad Twoją Posiadłością."/>
 			<text name="allow_label2">
 				Budowanie:
 			</text>
@@ -336,34 +336,34 @@ Jedynie większe posiadłości mogą być umieszczone w bazie wyszukiwarki.
 			<text name="land_options_label">
 				Opcje Posiadłości:
 			</text>
-			<check_box label="Bezpieczna (brak zniszczeń)" name="check safe" tool_tip="Wybrana - posiadłość jest bezpieczna - zniszczenia w walce są zablokowane. Nie wybrana - zniszczenia w walce są włączone."/>
-			<check_box label="Popychanie niedozwolone" name="PushRestrictCheck" tool_tip="Nie pozwalaj skryptom na popychanie. Wybranie tej opcji może być przydatne do ograniczenia zakłóceń spokoju w Twojej posiadłości."/>
-			<check_box label="Wyświetlaj w wyszukiwarce (30L$/tyg.)" name="ShowDirectoryCheck" tool_tip="Udostępnij ukazywanie się nazwy posiadłości w wyszukiwarce"/>
+			<check_box label="Bezpieczna (brak zniszczeń)" name="check safe" tool_tip="Wybrana - Posiadłość jest bezpieczna - zniszczenia w walce są zablokowane. Nie jest wybrana - zniszczenia w walce są włączone."/>
+			<check_box label="Popychanie niedozwolone" name="PushRestrictCheck" tool_tip="Nie pozwalaj skryptom na popychanie. Wybranie tej opcji może być przydatne do ograniczenia zakłóceń spokoju w Twojej Posiadłości."/>
+			<check_box label="Wyświetlaj w wyszukiwarce (30L$/tyg.)" name="ShowDirectoryCheck" tool_tip="Udostępnij ukazywanie się nazwy Posiadłości w wyszukiwarce"/>
 			<combo_box name="land category with adult">
-				<combo_box.item label="Każda Kategoria" name="item0"/>
-				<combo_box.item label="Linden Lokacja" name="item1"/>
+				<combo_box.item label="Każda kategoria" name="item0"/>
+				<combo_box.item label="Linden Lokalizacja" name="item1"/>
 				<combo_box.item label="&apos;Adult&apos;" name="item2"/>
-				<combo_box.item label="Sztuka i Kultura" name="item3"/>
+				<combo_box.item label="Sztuka i kultura" name="item3"/>
 				<combo_box.item label="Biznes" name="item4"/>
 				<combo_box.item label="Edukacyjna" name="item5"/>
 				<combo_box.item label="Gra" name="item6"/>
 				<combo_box.item label="Poznawanie ludzi" name="item7"/>
 				<combo_box.item label="Przyjazne dla nowych" name="item8"/>
-				<combo_box.item label="Park i Natura" name="item9"/>
+				<combo_box.item label="Park i natura" name="item9"/>
 				<combo_box.item label="Mieszkalna" name="item10"/>
 				<combo_box.item label="Zakupy" name="item11"/>
 				<combo_box.item label="Inna" name="item12"/>
 			</combo_box>
 			<combo_box name="land category">
-				<combo_box.item label="Każda Kategoria" name="item0"/>
-				<combo_box.item label="Linden Lokacja" name="item1"/>
-				<combo_box.item label="Sztuka i Kultura" name="item3"/>
+				<combo_box.item label="Każda kategoria" name="item0"/>
+				<combo_box.item label="Linden Lokalizacja" name="item1"/>
+				<combo_box.item label="Sztuka i kultura" name="item3"/>
 				<combo_box.item label="Biznes" name="item4"/>
 				<combo_box.item label="Edukacyjna" name="item5"/>
 				<combo_box.item label="Gra" name="item6"/>
 				<combo_box.item label="Poznawanie ludzi" name="item7"/>
 				<combo_box.item label="Przyjazna dla nowych" name="item8"/>
-				<combo_box.item label="Parki i Natura" name="item9"/>
+				<combo_box.item label="Parki i natura" name="item9"/>
 				<combo_box.item label="Mieszkalna" name="item10"/>
 				<combo_box.item label="Zakupy" name="item11"/>
 				<combo_box.item label="Inna" name="item12"/>
@@ -379,9 +379,9 @@ Jedynie większe posiadłości mogą być umieszczone w bazie wyszukiwarki.
 			<button label="Ustaw" label_selected="Ustaw" name="Set" tool_tip="Ustal miejsce lądowania dla przybywających gości. Używa położenia Twojego awatara na tej posiadłości."/>
 			<button label="Nowy" label_selected="Nowy" name="Clear" tool_tip="Clear the landing point."/>
 			<text name="Teleport Routing: ">
-				Trasa Teleportacji:
+				Trasa teleportacji:
 			</text>
-			<combo_box name="landing type" tool_tip="Trasa Teleportacj-ustaw w jaki sposób będzie sę odbywać proces telportacji w posiadłości.">
+			<combo_box name="landing type" tool_tip="Trasa teleportacj-ustaw w jaki sposób będzie sę odbywać proces telportacji w Posiadłości.">
 				<combo_box.item label="Zablokowana" name="Blocked"/>
 				<combo_box.item label="Punkt LÄ…dowania" name="LandingPoint"/>
 				<combo_box.item label="Gdziekolwiek" name="Anywhere"/>
@@ -389,14 +389,14 @@ Jedynie większe posiadłości mogą być umieszczone w bazie wyszukiwarki.
 		</panel>
 		<panel label="MEDIA" name="land_media_panel">
 			<text name="with media:">
-				Typ Mediów:
+				Typ mediów:
 			</text>
 			<combo_box name="media type" tool_tip=""/>
 			<text name="at URL:">
-				URL Mediów:
+				URL mediów:
 			</text>
 			<button label="Ustaw" name="set_media_url"/>
-			<check_box label="Ukryj URL Mediów" name="hide_media_url" tool_tip="Wybranie tej opcji, zablokuje widok adresu do medów wszystkim nieautoryzowanym użytkownikom. Nie dotyczy to jednak typów HTML."/>
+			<check_box label="Ukryj URL mediów" name="hide_media_url" tool_tip="Wybranie tej opcji, zablokuje widok adresu do medów wszystkim nieautoryzowanym Użytkownikom. Nie dotyczy to jednak typów HTML."/>
 			<text name="Description:">
 				Opis:
 			</text>
@@ -425,9 +425,9 @@ Mediów:
 			<check_box label="Powtórka Odtwarzania" name="media_loop" tool_tip="Odtwarzaj media z powtórką. Po wyświetleniu materialu, rozpocznie się odtwarzanie od początku."/>
 		</panel>
 		<panel label="DŹWIĘK" name="land_audio_panel">
-			<check_box label="Ukryj URL Muzyki" name="hide_music_url" tool_tip="Wybranie tej opcji, zablokuje widok adresu do medów muzycznych w posiadłości wszystkim nieautoryzowanym użytkownikom"/>
-			<check_box label="Rozmowy Dozwolone" name="parcel_enable_voice_channel"/>
-			<check_box label="Rozmowy Dozwolone (ustawione przez MajÄ…tek)" name="parcel_enable_voice_channel_is_estate_disabled"/>
+			<check_box label="Ukryj URL muzyki" name="hide_music_url" tool_tip="Wybranie tej opcji, zablokuje widok adresu do medów muzycznych w posiadłości wszystkim nieautoryzowanym Użytkownikom"/>
+			<check_box label="Rozmowy dozwolone" name="parcel_enable_voice_channel"/>
+			<check_box label="Rozmowy dozwolone (ustawione przez MajÄ…tek)" name="parcel_enable_voice_channel_is_estate_disabled"/>
 			<check_box label="Ogranicz komunikację głosową w tej posiadłości." name="parcel_enable_voice_channel_local"/>
 		</panel>
 		<panel label="DOSTĘP" name="land_access_panel">
@@ -438,19 +438,19 @@ Mediów:
 				Udostępnij dostęp publiczny ([MATURITY])
 			</panel.string>
 			<panel.string name="estate_override">
-				Jedna lub więcej z tych opcji ustawiona jest z poziomu posiadłości
+				Jedna lub więcej z tych opcji ustawiona jest z poziomu Posiadłości
 			</panel.string>
 			<text name="Limit access to this parcel to:">
-				Dostęp do tej posiadłości:
+				Dostęp do tej Posiadłości:
 			</text>
 			<check_box label="Publiczny [MATURITY]" name="public_access"/>
 			<text name="Only Allow">
 				Zablokuj dostęp dla:
 			</text>
 			<check_box label="Rezydentów zarejestrowanych w systemie płatniczym Linden Lab [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Zbanuj Rezydentów niezarejestrowanych w systemie płatniczym z Linden Lab."/>
-			<check_box label="Weryfikacja Wieku: [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Zbanuj Rezydetów bez weryfikacji wieku. Odwiedź support.secondlife.com po więcej informacji."/>
-			<check_box label="Udostępnij wejście grupie: [GROUP]" name="GroupCheck" tool_tip="Ustaw grupę w głównej zakładce"/>
-			<check_box label="Sprzedaj wejściówki:" name="PassCheck" tool_tip="Otwórz tymczasowy dostęp do tej posiadłości"/>
+			<check_box label="Weryfikacja Wieku: [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Zbanuj Rezydetów bez Weryfikacji Wieku. Odwiedź support.secondlife.com po więcej informacji."/>
+			<check_box label="Udostępnij wejście Grupie: [GROUP]" name="GroupCheck" tool_tip="Ustaw Grupę w głównej zakładce"/>
+			<check_box label="Sprzedaj przepustki:" name="PassCheck" tool_tip="Otwórz tymczasowy dostęp do tej Posiadłości"/>
 			<combo_box name="pass_combo">
 				<combo_box.item label="Każdemu" name="Anyone"/>
 				<combo_box.item label="Grupie" name="Group"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_animation_preview.xml b/indra/newview/skins/default/xui/pl/floater_animation_preview.xml
index b8eea31e29f198b413370dec169305d20de9e6bf..ca06665c659e3f66fb7611005a43a178363509e1 100644
--- a/indra/newview/skins/default/xui/pl/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/pl/floater_animation_preview.xml
@@ -9,7 +9,7 @@
 Maksymalna długość pliku animacji wynosi [MAX_LENGTH] sekund.
 	</floater.string>
 	<floater.string name="failed_file_read">
-		Niemożliwość odczytania pliku animacji do wyświetlenia.
+		Brak możliwości odczytania plików animacji do wyświetlenia.
 
 [STATUS]
 	</floater.string>
@@ -62,25 +62,25 @@ Maksymalna długość pliku animacji wynosi [MAX_LENGTH] sekund.
 		Nie można odczytać wartości obrotu.
 	</floater.string>
 	<floater.string name="E_ST_NO_XLT_FILE">
-		Niemożliwość otworzenia pliku tłumaczenia.
+		Nie można otworzyć pliku tłumaczenia.
 	</floater.string>
 	<floater.string name="E_ST_NO_XLT_HEADER">
-		Niemożliwość przeczytania tłumaczenia nagłówka.
+		Nie można przeczytać tłumaczenia nagłówka.
 	</floater.string>
 	<floater.string name="E_ST_NO_XLT_NAME">
-		Niemożliwość przeczytania nazw tłumaczenia.
+		Nie można przetłumaczyć nazw.
 	</floater.string>
 	<floater.string name="E_ST_NO_XLT_IGNORE">
-		Niemożliwość przeczytania tłumaczenia dla wartości ignorowania.
+		Nie można przeczytać tłumaczenia dla wartości ignorowania.
 	</floater.string>
 	<floater.string name="E_ST_NO_XLT_RELATIVE">
-		Niemożliwość przeczytania tłumaczenia wartości relatywnej.
+		Nie można przeczytać tłumaczenia wartości relatywnej.
 	</floater.string>
 	<floater.string name="E_ST_NO_XLT_OUTNAME">
-		Niemożliwość przeczytania nazw wartości tłumaczenia.
+		Nie można przeczytać nazw wartości tłumaczenia.
 	</floater.string>
 	<floater.string name="E_ST_NO_XLT_MATRIX">
-		Niemożliwość przeczytania tłumaczenia pola.
+		Nie można przeczytać tłumaczenia pola.
 	</floater.string>
 	<floater.string name="E_ST_NO_XLT_MERGECHILD">
 		Brak otrzymania nazwy dla mergechild.
@@ -115,7 +115,7 @@ Maksymalna długość pliku animacji wynosi [MAX_LENGTH] sekund.
 	<text name="description_label">
 		Opis:
 	</text>
-	<spinner label="Pierwszeństwo" name="priority" tool_tip="Kontroluj,animacje,które mogą zostać zdominowane przez tą animację"/>
+	<spinner label="Pierwszeństwo" name="priority" tool_tip="Kontroluj animacje,które mogą zostać zdominowane przez tą animację"/>
 	<check_box label="Powtarzaj" name="loop_check" tool_tip="Powtarzaj tÄ… animacjÄ™"/>
 	<spinner label="Od(%)" name="loop_in_point" tool_tip="Wybierz punkt, od którego chcesz zacząć powtarzać animację"/>
 	<spinner label="Do(%)" name="loop_out_point" tool_tip="Wybierz punkt, od którego chcesz zakończyć powtarzanie animacji"/>
@@ -182,6 +182,6 @@ Maksymalna długość pliku animacji wynosi [MAX_LENGTH] sekund.
 
 Doradzamy eksport plików BVH z Poser 4.
 	</text>
-	<button label="Załaduj (L$[AMOUNT])" name="ok_btn"/>
+	<button label="Załaduj ([AMOUNT]L$)" name="ok_btn"/>
 	<button label="Anuluj" name="cancel_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_auction.xml b/indra/newview/skins/default/xui/pl/floater_auction.xml
index 815c36606c86b7f72d6d79d5a803b89a9c2ecda4..9399fa11153a4c565944805739fc876c35ee5595 100644
--- a/indra/newview/skins/default/xui/pl/floater_auction.xml
+++ b/indra/newview/skins/default/xui/pl/floater_auction.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_auction" title="ROZPOCZNIJ SPRZEDAŻ POSIADŁOŚCI LINDENÓW">
 	<floater.string name="already for sale">
-		Nie możesz umieścić posiadłości na aukcji, jeżeli już została wystawiona na sprzedaż.
+		Nie możesz umieścić Posiadłości na Aukcji, jeżeli już została wystawiona na sprzedaż.
 	</floater.string>
 	<check_box initial_value="true" label="Zawierając żółte ogrodzenie" name="fence_check"/>
 	<button label="Zdjęce" label_selected="Zdjęce" name="snapshot_btn"/>
-	<button label="Sprzedaj Każdemu" label_selected="Sprzedaj Każdemu" name="sell_to_anyone_btn"/>
-	<button label="Wyczyść Ustawienia" label_selected="Wyczyść Ustawienia" name="reset_parcel_btn"/>
+	<button label="Sprzedaj każdemu" label_selected="Sprzedaj Każdemu" name="sell_to_anyone_btn"/>
+	<button label="Wyczyść ustawienia" label_selected="Wyczyść ustawienia" name="reset_parcel_btn"/>
 	<button label="Rozpocznij AukcjÄ™" label_selected="Rozpocznij AukcjÄ™" name="start_auction_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml b/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml
index b42464d21290ee3f659800988396aadee5368dd2..11651ad7e84dafb7b1f5f4efd83f49a61d3e56d4 100644
--- a/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml
@@ -4,38 +4,38 @@
 		NIEWŁAŚCIWY AWATAR
 	</floater.string>
 	<text name="composite_label">
-		Tekstury Kompozytowe
+		Tekstury kompozytowe
 	</text>
 	<button label="Zrzuć" label_selected="Zrzuć" name="Dump"/>
 	<scroll_container name="profile_scroll">
 		<panel name="scroll_content_panel">
 			<texture_picker label="Włosy" name="hair-baked"/>
 			<texture_picker label="Włosy" name="hair_grain"/>
-			<texture_picker label="Alpha Włosów" name="hair_alpha"/>
+			<texture_picker label="Alpha włosów" name="hair_alpha"/>
 			<texture_picker label="Głowa" name="head-baked"/>
 			<texture_picker label="Makijaż" name="head_bodypaint"/>
-			<texture_picker label="Alpha Głowy" name="head_alpha"/>
-			<texture_picker label="Tatuaż Głowy" name="head_tattoo"/>
+			<texture_picker label="Alpha głowy" name="head_alpha"/>
+			<texture_picker label="Tatuaż głowy" name="head_tattoo"/>
 			<texture_picker label="Oczy" name="eyes-baked"/>
 			<texture_picker label="Oko" name="eyes_iris"/>
-			<texture_picker label="Alpha Oczu" name="eyes_alpha"/>
-			<texture_picker label="Górna Część Ciała" name="upper-baked"/>
-			<texture_picker label="Górny Wzór na Ciele" name="upper_bodypaint"/>
+			<texture_picker label="Alpha oczu" name="eyes_alpha"/>
+			<texture_picker label="Górna część ciała" name="upper-baked"/>
+			<texture_picker label="Górny wzór na ciele" name="upper_bodypaint"/>
 			<texture_picker label="Podkoszulek" name="upper_undershirt"/>
 			<texture_picker label="Rękawiczki" name="upper_gloves"/>
 			<texture_picker label="Koszula" name="upper_shirt"/>
-			<texture_picker label="Kurtka Górna" name="upper_jacket"/>
-			<texture_picker label="Alpha Górna" name="upper_alpha"/>
-			<texture_picker label="Tatuaż Górny" name="upper_tattoo"/>
-			<texture_picker label="Dolna Część Ciała" name="lower-baked"/>
-			<texture_picker label="Dolny Wzór na Ciele" name="lower_bodypaint"/>
+			<texture_picker label="Kurtka górna" name="upper_jacket"/>
+			<texture_picker label="Alpha górna" name="upper_alpha"/>
+			<texture_picker label="Tatuaż górny" name="upper_tattoo"/>
+			<texture_picker label="Dolna część ciała" name="lower-baked"/>
+			<texture_picker label="Dolny wzór na ciele" name="lower_bodypaint"/>
 			<texture_picker label="Bielizna" name="lower_underpants"/>
 			<texture_picker label="Skarpetki" name="lower_socks"/>
 			<texture_picker label="Buty" name="lower_shoes"/>
 			<texture_picker label="Spodnie" name="lower_pants"/>
 			<texture_picker label="Kurtka" name="lower_jacket"/>
-			<texture_picker label="Alpha Dolna" name="lower_alpha"/>
-			<texture_picker label="Tatuaż Dolny" name="lower_tattoo"/>
+			<texture_picker label="Alpha dolna" name="lower_alpha"/>
+			<texture_picker label="Tatuaż dolny" name="lower_tattoo"/>
 			<texture_picker label="Spódnica" name="skirt-baked"/>
 			<texture_picker label="Spódnica" name="skirt"/>
 		</panel>
diff --git a/indra/newview/skins/default/xui/pl/floater_beacons.xml b/indra/newview/skins/default/xui/pl/floater_beacons.xml
index 5bb469c4339b3b03acf2ece79079315c5e49b3c5..547db2b3517c670b6a99854fd80065b8be0d0323 100644
--- a/indra/newview/skins/default/xui/pl/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/pl/floater_beacons.xml
@@ -2,20 +2,20 @@
 <floater name="beacons" title="EMITERY">
 	<panel name="beacons_panel">
 		<text name="label_show">
-			Pokaż Emitery:
+			Pokaż emitery:
 		</text>
 		<check_box label="Emitery" name="beacons"/>
-		<check_box label="Podkreśl Emitery" name="highlights"/>
-		<text name="beacon_width_label" tool_tip="Zasięg Emiterów">
+		<check_box label="Podkreśl emitery" name="highlights"/>
+		<text name="beacon_width_label" tool_tip="Zasięg emiterów">
 			Szer.
 		</text>
 		<text name="label_objects">
 			Dla tych obiektów:
 		</text>
-		<check_box label="Obiekty Fizyczne" name="physical"/>
-		<check_box label="Obiekty Skryptowane" name="scripted"/>
-		<check_box label="Obiekty Dotykalne" name="touch_only"/>
-		<check_box label="Źródła Dźwięku" name="sounds"/>
-		<check_box label="Źródła Cząsteczek" name="particles"/>
+		<check_box label="Obiekty fizyczne" name="physical"/>
+		<check_box label="Obiekty skryptowane" name="scripted"/>
+		<check_box label="Obiekty dotykalne" name="touch_only"/>
+		<check_box label="Źródła dźwięku" name="sounds"/>
+		<check_box label="Źródła cząsteczek" name="particles"/>
 	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_build_options.xml b/indra/newview/skins/default/xui/pl/floater_build_options.xml
index 8e9ae36c052364b0eb640b048d66fb20f9a40a88..5d296aa7255ae4877af894d387e385917065a528 100644
--- a/indra/newview/skins/default/xui/pl/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/pl/floater_build_options.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="build options floater" title="OPCJE SIATKI">
-	<spinner label="Jednostki Siatki (metery)" name="GridResolution"/>
-	<spinner label="Rozmiary Siatki (metry)" name="GridDrawSize"/>
+	<spinner label="Jednostki siatki (metery)" name="GridResolution"/>
+	<spinner label="Rozmiary siatki (metry)" name="GridDrawSize"/>
 	<check_box label="Pokaż podjednostki" name="GridSubUnit"/>
-	<check_box label="Pokaż Przekroje" name="GridCrossSection"/>
-	<text name="grid_opacity_label" tool_tip="Nieprzeźroczystość Siatki:">
+	<check_box label="Pokaż przekroje" name="GridCrossSection"/>
+	<text name="grid_opacity_label" tool_tip="Nieprzeźroczystość siatki:">
 		Nieprzeźroczystość:
 	</text>
-	<slider label="Nieprzezroczystość Siatki" name="GridOpacity"/>
+	<slider label="Nieprzezroczystość siatki" name="GridOpacity"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml b/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml
index 4b6e8f793bb466d16cedc9f49e78e62e2660bc27..f4721b05d8d9e180f60aa69f4ef8d9cf6e184f73 100644
--- a/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml
@@ -14,7 +14,7 @@
 	</floater.string>
 	<check_box label="Animacje" name="check_animation"/>
 	<icon name="icon_animation" tool_tip="Animacja"/>
-	<check_box label="Części Ciała" name="check_bodypart"/>
+	<check_box label="Części ciała" name="check_bodypart"/>
 	<icon name="icon_bodypart" tool_tip="Części Ciała"/>
 	<check_box label="Ubranie" name="check_clothing"/>
 	<icon name="icon_clothing" tool_tip="Ubranie"/>
@@ -44,7 +44,7 @@
 	</text>
 	<check_box label="Kopiuj" name="everyone_copy"/>
 	<text name="NextOwnerLabel">
-		Następny właściciel:
+		Następny Właściciel:
 	</text>
 	<check_box label="Modyfikuje" name="next_owner_modify"/>
 	<check_box label="Kopiuje" name="next_owner_copy"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_buy_contents.xml b/indra/newview/skins/default/xui/pl/floater_buy_contents.xml
index dacd2c23768455fc78e4bd34cb7c085d08bfc04d..94f2b50450eb85b779ea94bd3c70b3e5adf676e4 100644
--- a/indra/newview/skins/default/xui/pl/floater_buy_contents.xml
+++ b/indra/newview/skins/default/xui/pl/floater_buy_contents.xml
@@ -4,7 +4,7 @@
 		[NAME] zawiera:
 	</text>
 	<text name="buy_text">
-		Kupić za L$[AMOUNT] od [NAME]?
+		Kupić za [AMOUNT]L$ od [NAME]?
 	</text>
 	<button label="Anuluj" label_selected="Anuluj" name="cancel_btn"/>
 	<button label="Kup" label_selected="Kup" name="buy_btn"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_buy_currency.xml b/indra/newview/skins/default/xui/pl/floater_buy_currency.xml
index d8e53ee37a29b4d514fd5efc9be403511c65c3e2..f2a6579dc37181eedc74074c72b4474582f42738 100644
--- a/indra/newview/skins/default/xui/pl/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/pl/floater_buy_currency.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="buy currency" title="KUP L$">
 	<floater.string name="buy_currency">
-		Kup L$ [LINDENS] za [LOCALAMOUNT]
+		Kup [LINDENS] L$ za [LOCALAMOUNT]
 	</floater.string>
 	<text name="info_need_more">
 		Potrzebujesz więcej L$
@@ -10,7 +10,7 @@
 		Kontaktowanie z LindeX...
 	</text>
 	<text name="info_buying">
-		kup L$
+		Kup L$
 	</text>
 	<text name="balance_label">
 		Obecnie posiadasz
@@ -46,7 +46,7 @@
 		[AMT]L$
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+		[http://www.secondlife.com/my/account/payment_method_management.php metoda płatności] | [http://www.secondlife.com/my/account/currency.php waluta] | [http://www.secondlife.com/my/account/exchange_rates.php kurs wymiany]
 	</text>
 	<text name="exchange_rate_note">
 		Wpisz ponownie kwotę aby zobaczyć ostatni kurs wymiany.
diff --git a/indra/newview/skins/default/xui/pl/floater_buy_land.xml b/indra/newview/skins/default/xui/pl/floater_buy_land.xml
index daafd14e1fd472ac84214318c360c8a427616273..3d01129d9bd332a98e3fe2886264a5c0dcb3c561 100644
--- a/indra/newview/skins/default/xui/pl/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/pl/floater_buy_land.xml
@@ -35,14 +35,14 @@ Spróbuj wybrać mniejszy obszar.
 		Ta Posiadłość już należy do Ciebie.
 	</floater.string>
 	<floater.string name="set_to_sell_to_other">
-		Wybrana Posiadłość będzie sprzedana komu innemu.
+		Wybrana Posiadłość będzie sprzedana komuś innemu.
 	</floater.string>
 	<floater.string name="no_public_land">
 		Wybrany obszar nie ma publicznych Posiadłości.
 	</floater.string>
 	<floater.string name="not_owned_by_you">
-		Wybrałeś posiadłość, której właścicielem jest inny Rezydent.
-Spróbuj wybrać ponownie mniejszą powierzchnię posiadłości.
+		Wybrałeś Posiadłość, której Właścicielem jest inny Rezydent.
+Spróbuj wybrać ponownie mniejszą powierzchnię Posiadłości.
 	</floater.string>
 	<floater.string name="processing">
 		Przetwarzanie Twojego zakupu...
@@ -56,7 +56,7 @@ Spróbuj wybrać ponownie mniejszą powierzchnię posiadłości.
 		Zakup tej Posiadłości spowoduje:
 	</floater.string>
 	<floater.string name="buying_for_group">
-		Zakup ziemi dla grupy:
+		Zakup ziemi dla Grupy:
 	</floater.string>
 	<floater.string name="cannot_buy_now">
 		Nie możesz teraz kupić:
@@ -123,7 +123,7 @@ używanie Posiadłości żeby sfinalizować ten zakup.
 		Musisz dokupić [AMOUNT]L$ żeby kupić tą Posiadłość.
 	</floater.string>
 	<floater.string name="no_parcel_selected">
-		(Posiadłość nie wybrana)
+		(Posiadłość nie została wybrana)
 	</floater.string>
 	<floater.string name="icon_PG" value="Parcel_PG_Dark"/>
 	<floater.string name="icon_M" value="Parcel_M_Dark"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_camera.xml b/indra/newview/skins/default/xui/pl/floater_camera.xml
index 4de00e39f345a3e65e2ab77a4b74719aaf238397..aec75f026f083ba51cd0c8ec7d93940cd016ce3b 100644
--- a/indra/newview/skins/default/xui/pl/floater_camera.xml
+++ b/indra/newview/skins/default/xui/pl/floater_camera.xml
@@ -28,16 +28,16 @@
 		</panel>
 		<joystick_rotate name="cam_rotate_stick" tool_tip="Obracaj kamerę wokoł osi"/>
 		<panel name="camera_presets">
-			<button name="rear_view" tool_tip="Widok z Tyłu"/>
+			<button name="rear_view" tool_tip="Widok z tyłu"/>
 			<button name="group_view" tool_tip="PodglÄ…d Grupy"/>
-			<button name="front_view" tool_tip="Widok z Przodu"/>
-			<button name="mouselook_view" tool_tip="Widok Panoramiczny"/>
+			<button name="front_view" tool_tip="Widok z przodu"/>
+			<button name="mouselook_view" tool_tip="Widok panoramiczny"/>
 		</panel>
 	</panel>
 	<panel name="buttons">
-		<button label="" name="orbit_btn" tool_tip="Obracaj KamerÄ™"/>
-		<button label="" name="pan_btn" tool_tip="Kamera Horyzontalna"/>
+		<button label="" name="orbit_btn" tool_tip="Obracaj kamerÄ™"/>
+		<button label="" name="pan_btn" tool_tip="Kamera horyzontalna"/>
 		<button label="" name="avatarview_btn" tool_tip="Ustawienia"/>
-		<button label="" name="freecamera_btn" tool_tip="PodglÄ…d Obiektu"/>
+		<button label="" name="freecamera_btn" tool_tip="PodglÄ…d obiektu"/>
 	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_choose_group.xml b/indra/newview/skins/default/xui/pl/floater_choose_group.xml
index 1e89b8bafc4398461b0703c45c18c9be19b19c2c..877cedc0bcd10c4a36af871c8910b1769113e310 100644
--- a/indra/newview/skins/default/xui/pl/floater_choose_group.xml
+++ b/indra/newview/skins/default/xui/pl/floater_choose_group.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="groups" title="GRUPY">
 	<text name="groupdesc">
-		Wybierz grupÄ™:
+		Wybierz GrupÄ™:
 	</text>
 	<button label="OK" label_selected="OK" name="OK"/>
 	<button label="Anuluj" label_selected="Anuluj" name="Cancel"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_color_picker.xml b/indra/newview/skins/default/xui/pl/floater_color_picker.xml
index 2246bf9edefae609cbf36f49a619911cae9b8f3a..a607ca982f899cac84925990724a84dba4dea889 100644
--- a/indra/newview/skins/default/xui/pl/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/pl/floater_color_picker.xml
@@ -23,9 +23,9 @@
 	<button label="Anuluj" label_selected="Anuluj" name="cancel_btn"/>
 	<button label="OK" label_selected="OK" name="select_btn"/>
 	<text name="Current color:">
-		Obecny Kolor:
+		Obecny kolor:
 	</text>
 	<text name="(Drag below to save.)">
-		(Przeciągnij tutaj by zapisać)
+		(Przeciągnij tutaj aby zapisać)
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_customize.xml b/indra/newview/skins/default/xui/pl/floater_customize.xml
index 5acab606420faf8726e659b7c04a84edc58733d9..dd1d5cf684b2b35af01c0db52603b0c407129e9e 100644
--- a/indra/newview/skins/default/xui/pl/floater_customize.xml
+++ b/indra/newview/skins/default/xui/pl/floater_customize.xml
@@ -43,15 +43,15 @@
 			<text name="Item Action Label">
 				Kształt:
 			</text>
-			<button label="Nowy Kształt" label_selected="Nowy Kształt" name="Create New"/>
+			<button label="Nowy kształt" label_selected="Nowy kształt" name="Create New"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
-			<button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/>
+			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
 		</panel>
 		<panel label="Skórka" name="Skin">
-			<button label="Kolor Skórki" label_selected="Kolor Skórki" name="Skin Color"/>
-			<button label="Detale Twarzy" label_selected="Detale Twarzy" name="Face Detail"/>
+			<button label="Kolor skórki" label_selected="Kolor skórki" name="Skin Color"/>
+			<button label="Detale twarzy" label_selected="Detale twarzy" name="Face Detail"/>
 			<button label="Makijaż" label_selected="Makijaż" name="Makeup"/>
-			<button label="Detale Ciała" label_selected="Detale Ciała" name="Body Detail"/>
+			<button label="Detale ciała" label_selected="Detale ciała" name="Body Detail"/>
 			<text name="title">
 				[DESC]
 			</text>
@@ -76,12 +76,12 @@
 			<text name="Item Action Label">
 				Skórka:
 			</text>
-			<texture_picker label="Tatuaże Głowy" name="Head Tattoos" tool_tip="Kliknij by wybrać teksturę"/>
-			<texture_picker label="Tatuaże Górne" name="Upper Tattoos" tool_tip="Kliknij by wybrać teksturę"/>
-			<texture_picker label="Tatuaże Dolne" name="Lower Tattoos" tool_tip="Kliknij by wybrać teksturę"/>
-			<button label="Nowa Skórka" label_selected="Nowa Skórka" name="Create New"/>
+			<texture_picker label="Tatuaże głowy" name="Head Tattoos" tool_tip="Kliknij by wybrać teksturę"/>
+			<texture_picker label="Tatuaże górne" name="Upper Tattoos" tool_tip="Kliknij by wybrać teksturę"/>
+			<texture_picker label="Tatuaże dolne" name="Lower Tattoos" tool_tip="Kliknij by wybrać teksturę"/>
+			<button label="Nowa skórka" label_selected="Nowa skórka" name="Create New"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
-			<button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/>
+			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
 			<button label="Wróć" label_selected="Wróć" name="Revert"/>
 		</panel>
 		<panel label="Włosy" name="Hair">
@@ -114,9 +114,9 @@
 				Włosy:
 			</text>
 			<texture_picker label="Tekstura" name="Texture" tool_tip="Kliknij by wybrać teksturę"/>
-			<button label="Nowe Włosy" label_selected="Nowe Włosy" name="Create New"/>
+			<button label="Nowe włosy" label_selected="Nowe włosy" name="Create New"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
-			<button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/>
+			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
 			<button label="Wróć" label_selected="Wróć" name="Revert"/>
 		</panel>
 		<panel label="Oczy" name="Eyes">
@@ -145,9 +145,9 @@
 				Oczy:
 			</text>
 			<texture_picker label="Tęczówka" name="Iris" tool_tip="Kliknij by wybrać teksturę"/>
-			<button label="Nowe Oczy" label_selected="Nowe Oczy" name="Create New"/>
+			<button label="Nowe oczy" label_selected="Nowe oczy" name="Create New"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
-			<button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/>
+			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
 			<button label="Wróć" label_selected="Wróć" name="Revert"/>
 		</panel>
 		<text label="Ubrania" name="clothes_placeholder">
@@ -159,7 +159,7 @@
 			<button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/>
 			<button label="Nowa Koszula" label_selected="Nowa Koszula" name="Create New"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
-			<button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/>
+			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
 			<button label="Wróć" label_selected="Wróć" name="Revert"/>
 			<text name="title">
 				[DESC]
@@ -190,9 +190,9 @@
 			<texture_picker label="Materiał" name="Fabric" tool_tip="Kliknij tutaj by wybrać teksturę"/>
 			<color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij aby wybrać kolor"/>
 			<button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/>
-			<button label="Nowe Spodnie" label_selected="Nowe Spodnie" name="Create New"/>
+			<button label="Nowe spodnie" label_selected="Nowe spodnie" name="Create New"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
-			<button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/>
+			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
 			<button label="Wróć" label_selected="Wróć" name="Revert"/>
 			<text name="title">
 				[DESC]
@@ -249,7 +249,7 @@
 			<color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij aby wybrać kolor"/>
 			<button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
-			<button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/>
+			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
 			<button label="Wróć" label_selected="Wróć" name="Revert"/>
 		</panel>
 		<panel label="Skarpety" name="Socks">
@@ -282,7 +282,7 @@
 			<color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij aby wybrać kolor"/>
 			<button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
-			<button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/>
+			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
 			<button label="Wróć" label_selected="Wróć" name="Revert"/>
 		</panel>
 		<panel label="Kurtka" name="Jacket">
@@ -311,12 +311,12 @@
 			<text name="Item Action Label">
 				Kurtka:
 			</text>
-			<texture_picker label="Górny Materiał" name="Upper Fabric" tool_tip="Kliknij by wybrać teksturę" width="76"/>
-			<texture_picker label="Dolny Materiał" name="Lower Fabric" tool_tip="Kliknij by wybrać kolor" width="76"/>
+			<texture_picker label="Górny materiał" name="Upper Fabric" tool_tip="Kliknij by wybrać teksturę" width="76"/>
+			<texture_picker label="Dolny materiał" name="Lower Fabric" tool_tip="Kliknij by wybrać kolor" width="76"/>
 			<color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij aby wybrać kolor" width="76"/>
 			<button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
-			<button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/>
+			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
 			<button label="Wróć" label_selected="Wróć" name="Revert"/>
 		</panel>
 		<panel label="Rękawiczki" name="Gloves">
@@ -349,7 +349,7 @@
 			<color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij aby wybrać kolor"/>
 			<button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
-			<button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/>
+			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
 			<button label="Wróć" label_selected="Wróć" name="Revert"/>
 		</panel>
 		<panel label="Podkoszulek" name="Undershirt">
@@ -382,7 +382,7 @@
 			<color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij aby wybrać kolor"/>
 			<button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
-			<button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/>
+			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
 			<button label="Wróć" label_selected="Wróć" name="Revert"/>
 		</panel>
 		<panel label="Bielizna" name="Underpants">
@@ -415,7 +415,7 @@
 			<color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij aby wybrać kolor"/>
 			<button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
-			<button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/>
+			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
 			<button label="Wróć" label_selected="Wróć" name="Revert"/>
 		</panel>
 		<panel label="Spódnica" name="Skirt">
@@ -448,7 +448,7 @@
 			<color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij aby wybrać kolor"/>
 			<button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
-			<button label="Zapisz Jako..." label_selected="Zapisz Jako..." name="Save As"/>
+			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
 			<button label="Wróć" label_selected="Wróć" name="Revert"/>
 		</panel>
 		<panel label="Tatuaż" name="Tattoo">
@@ -477,9 +477,9 @@
 			<text name="Item Action Label">
 				Tatuaż:
 			</text>
-			<texture_picker label="Tatuaż Głowy" name="Head Tattoo" tool_tip="Kliknij aby wybrać teksturę"/>
-			<texture_picker label="Górny Tatuaż" name="Upper Tattoo" tool_tip="Kliknij aby wybrać teksturę"/>
-			<texture_picker label="Tatuaż Dolnej Części Ciała" name="Lower Tattoo" tool_tip="Kliknij aby wybrać teksturę"/>
+			<texture_picker label="Tatuaż głowy" name="Head Tattoo" tool_tip="Kliknij aby wybrać teksturę"/>
+			<texture_picker label="Górny tatuaż" name="Upper Tattoo" tool_tip="Kliknij aby wybrać teksturę"/>
+			<texture_picker label="Tatuaż dolnej części ciała" name="Lower Tattoo" tool_tip="Kliknij aby wybrać teksturę"/>
 			<button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
 			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
@@ -512,18 +512,18 @@
 				Alpha:
 			</text>
 			<texture_picker label="Dolna Alpha" name="Lower Alpha" tool_tip="Kliknij aby wybrać teksturę"/>
-			<texture_picker label="Alpha Górnej Części Ciała" name="Upper Alpha" tool_tip="Kliknij aby wybrać teksturę"/>
-			<texture_picker label="Alpha Głowy" name="Head Alpha" tool_tip="Kliknij aby wybrać teksturę"/>
-			<texture_picker label="Alpha Oka" name="Eye Alpha" tool_tip="Kliknij aby wybrać teksturę"/>
-			<texture_picker label="Alpha Włosów" name="Hair Alpha" tool_tip="Kliknij aby wybrać teksturę"/>
+			<texture_picker label="Alpha górnej części ciała" name="Upper Alpha" tool_tip="Kliknij aby wybrać teksturę"/>
+			<texture_picker label="Alpha głowy" name="Head Alpha" tool_tip="Kliknij aby wybrać teksturę"/>
+			<texture_picker label="Alpha oka" name="Eye Alpha" tool_tip="Kliknij aby wybrać teksturę"/>
+			<texture_picker label="Alpha włosów" name="Hair Alpha" tool_tip="Kliknij aby wybrać teksturę"/>
 			<button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/>
 			<button label="Zapisz" label_selected="Zapisz" name="Save"/>
 			<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
 			<button label="Wróć" label_selected="Wróć" name="Revert"/>
 		</panel>
 	</tab_container>
-	<button label="Info o Skrypcie" label_selected="Info o Skrypcie" name="script_info" tool_tip="Pokaż skrypty przyłączone do Twojego awatara"/>
-	<button label="Stwórz Ubranie" label_selected="Stwórz Ubranie" name="make_outfit_btn"/>
+	<button label="Info o skrypcie" label_selected="Info o skrypcie" name="script_info" tool_tip="Pokaż skrypty przyłączone do Twojego awatara"/>
+	<button label="Stwórz ubranie" label_selected="Stwórz Ubranie" name="make_outfit_btn"/>
 	<button label="Anuluj" label_selected="Anuluj" name="Cancel"/>
 	<button label="OK" label_selected="OK" name="Ok"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml
index 6671bb853e40e746ad1167e4b3d6a2fd1ce42448..0cb2114f99798abf45f05bfeaf844d6f81735abf 100644
--- a/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml
+++ b/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml
@@ -62,7 +62,7 @@
 			<button label="Dodaj" label_selected="Dodaj" name="WLAddKey" />
 			<button label="Usuń" label_selected="Usuń" name="WLDeleteKey" />
 			<text name="WLCurKeyFrameText">
-				Preferencje Czasu:
+				Preferencje czasu:
 			</text>
 			<text name="WLCurKeyTimeText">
 				Czas:
@@ -78,7 +78,7 @@
 			</text>
 			<combo_box label="5 min" name="WLSnapOptions" />
 			<text name="DayCycleText2">
-				Długość Cyklu:
+				Długość cyklu:
 			</text>
 			<spinner label="Godz" name="WLLengthOfDayHour" />
 			<spinner label="Min" name="WLLengthOfDayMin" />
@@ -88,11 +88,11 @@
 			</text>
 			<button label="Start" label_selected="Start" name="WLAnimSky" />
 			<button label="Stop" label_selected="Stop" name="WLStopAnimSky" />
-			<button label="Używaj Czasu Regionu" label_selected="Używaj Czasu Regionu"
+			<button label="Używaj czasu regionu" label_selected="Używaj czasu regionu"
 			     name="WLUseLindenTime" />
-			<button label="Zapisz Test Dnia" label_selected="Zapisz Test Dnia"
+			<button label="Zapisz test dnia" label_selected="Zapisz test dnia"
 			     name="WLSaveDayCycle" />
-			<button label="Załaduj Test Dnia" label_selected="Załaduj Test Dnia"
+			<button label="Załaduj test dnia" label_selected="Załaduj test dnia"
 			     name="WLLoadDayCycle" />
 		</panel>
 	</tab_container>
diff --git a/indra/newview/skins/default/xui/pl/floater_env_settings.xml b/indra/newview/skins/default/xui/pl/floater_env_settings.xml
index fb4c505ff36b88ef4f0dc0da87c3743d00f443c4..3ab854fbbbbfc01b30663654fed3d015237b1e27 100644
--- a/indra/newview/skins/default/xui/pl/floater_env_settings.xml
+++ b/indra/newview/skins/default/xui/pl/floater_env_settings.xml
@@ -15,14 +15,14 @@
 	</text>
 	<slider label="" name="EnvCloudSlider"/>
 	<text name="EnvWaterColorText">
-		Kolor Wody
+		Kolor wody
 	</text>
 	<color_swatch label="" name="EnvWaterColor" tool_tip="Kliknij aby wybrać kolor"/>
 	<text name="EnvWaterFogText">
 		Zamglenie:
 	</text>
 	<slider label="" name="EnvWaterFogSlider"/>
-	<button label="Używaj Czasu Regionu" name="EnvUseEstateTimeButton"/>
-	<button label="Zaawansowane Niebo" name="EnvAdvancedSkyButton"/>
-	<button label="Zaawansowana Woda" name="EnvAdvancedWaterButton"/>
+	<button label="Używaj czasu regionu" name="EnvUseEstateTimeButton"/>
+	<button label="Zaawansowane niebo" name="EnvAdvancedSkyButton"/>
+	<button label="Zaawansowana woda" name="EnvAdvancedWaterButton"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_event.xml b/indra/newview/skins/default/xui/pl/floater_event.xml
index dfdc87b079895b0b2aaa4c5c934d2adaf491ee7b..758849346421866d2fc82bb4460f72f7454045f1 100644
--- a/indra/newview/skins/default/xui/pl/floater_event.xml
+++ b/indra/newview/skins/default/xui/pl/floater_event.xml
@@ -10,13 +10,13 @@
 		Nie zawiadamiaj
 	</floater.string>
 	<floater.string name="moderate">
-		Moderuj
+		Mature
 	</floater.string>
 	<floater.string name="adult">
 		Adult
 	</floater.string>
 	<floater.string name="general">
-		Ogólne
+		PG
 	</floater.string>
 	<floater.string name="unknown">
 		Nieznana
diff --git a/indra/newview/skins/default/xui/pl/floater_gesture.xml b/indra/newview/skins/default/xui/pl/floater_gesture.xml
index d12ea988157d1f0ed6e717ce7bc6dd563ac15608..750a9e4a66f8c9b8b96ec9961f7f360e4f1a9de0 100644
--- a/indra/newview/skins/default/xui/pl/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/pl/floater_gesture.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Miejsca" name="gestures" title="GESTURY">
+<floater label="Miejsca" name="gestures" title="GESTY">
 	<floater.string name="loading">
 		Ładowanie...
 	</floater.string>
@@ -18,8 +18,8 @@
 	<panel label="bottom_panel" name="bottom_panel">
 		<menu_button name="gear_btn" tool_tip="Więcej opcji"/>
 		<button name="new_gesture_btn" tool_tip="Stwórz nową gesturę"/>
-		<button name="activate_btn" tool_tip="Aktywuj/Dezaktywuj wybranÄ… gesturÄ™"/>
-		<button name="del_btn" tool_tip="Usuń gesturę"/>
+		<button name="activate_btn" tool_tip="Aktywuj/Dezaktywuj wybrany gest"/>
+		<button name="del_btn" tool_tip="Usuń gest"/>
 	</panel>
 	<button label="Edytuj" name="edit_btn"/>
 	<button label="Odtwarzaj" name="play_btn"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_god_tools.xml b/indra/newview/skins/default/xui/pl/floater_god_tools.xml
index d3ff60397007b35f5ef2a20e3dcecb6ace193066..4d49c32fc182e24855300fdded0163889a90b009 100644
--- a/indra/newview/skins/default/xui/pl/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/pl/floater_god_tools.xml
@@ -3,7 +3,7 @@
 	<tab_container name="GodTools Tabs">
 		<panel label="Grid" name="grid">
 			<button label="Wyrzuć wszystkich Rezydentów" label_selected="Wyrzuć wszystkich Rezydentów" name="Kick all users" width="205"/>
-			<button label="Wyrównaj Widoczność Buforu Mapy Regionu" label_selected="Wyrównaj Widoczność Buforu Mapy Regionu" name="Flush This Region&apos;s Map Visibility Caches" width="285"/>
+			<button label="Wyrównaj widoczność buforu mapy Regionu" label_selected="Wyrównaj widoczność buforu mapy Regionu" name="Flush This Region&apos;s Map Visibility Caches" width="285"/>
 		</panel>
 		<panel label="Region" name="region">
 			<text name="Sim Name:" width="100">
@@ -12,15 +12,15 @@
 			<line_editor left="115" name="region name" width="178"/>
 			<check_box label="Wstęp" name="check prelude" tool_tip="Set this to make the region a prelude"/>
 			<check_box label="Korekta Słońca" name="check fixed sun" tool_tip="Skorektuj ustawienia pozycji słońca."/>
-			<check_box height="32" label="Zresetuj Pozycję  Miejsca Startowego" name="check reset home" tool_tip="Zresetuj miejsce startu Rezydentów po teleportacji"/>
-			<check_box bottom_delta="-32" label="Widoczny" name="check visible" tool_tip="Wybierz tę opcję by ustawić region widocznym dla wszystkich."/>
+			<check_box height="32" label="Zresetuj pozycję  Miejsca Startowego" name="check reset home" tool_tip="Zresetuj miejsce startu Rezydentów po teleportacji"/>
+			<check_box bottom_delta="-32" label="Widoczny" name="check visible" tool_tip="Wybierz tą opcję by ustawić region widocznym dla wszystkich."/>
 			<check_box label="Zniszczenia" name="check damage" tool_tip="Wybierz tę opcję by uruchomić opcję zniszczeń w regionie."/>
-			<check_box label="Zablokuj Monitorowanie Trafficu" name="block dwell" tool_tip="Wybierz tę opcję by zablokować monitorowanie trafficu w regionie."/>
-			<check_box label="Zablokuj Terraformowanie" name="block terraform" tool_tip="Wybierz tę opcję by zablokować terraforming w regionie"/>
+			<check_box label="Zablokuj Monitorowanie Trafficu" name="block dwell" tool_tip="Wybierz tą opcję by zablokować monitorowanie trafficu w regionie."/>
+			<check_box label="Zablokuj Terraformowanie" name="block terraform" tool_tip="Wybierz tą opcję by zablokować terraforming w regionie"/>
 			<check_box label="Piaskownica" name="is sandbox" tool_tip="Toggle whether this is a sandbox region"/>
-			<button label="Ustal Teren" label_selected="Ustal Teren" name="Bake Terrain" tool_tip="Zapamiętaj obecny teren jako początkowy dla cofnięcia modyfikacji terenu." width="138"/>
-			<button label="Cofnięcie Modyfikacji" label_selected="Cofnięcie Modyfikacji" name="Revert Terrain" tool_tip="Przywróć Ustawienia Domyślne Regionu." width="138"/>
-			<button label="Zamień Teren" label_selected="Zamień Teren" name="Swap Terrain" tool_tip="Swap current terrain with default" width="138"/>
+			<button label="Ustal teren" label_selected="Ustal teren" name="Bake Terrain" tool_tip="Zapamiętaj obecny teren jako początkowy dla cofnięcia modyfikacji terenu." width="138"/>
+			<button label="Cofnięcie modyfikacji" label_selected="Cofnięcie modyfikacji" name="Revert Terrain" tool_tip="Przywróć ustawienia domyślne Regionu." width="138"/>
+			<button label="Zamień teren" label_selected="Zamień teren" name="Swap Terrain" tool_tip="Swap current terrain with default" width="138"/>
 			<text name="estate id">
 				ID Regionu:
 			</text>
@@ -40,7 +40,7 @@
 			<line_editor left_delta="110" name="redirectx" width="35"/>
 			<line_editor left_delta="45" name="redirecty" width="35"/>
 			<text name="billable factor text">
-				Czynnik Płatności:
+				Czynnik płatności:
 			</text>
 			<spinner name="billable factor"/>
 			<text name="land cost text">
@@ -49,8 +49,8 @@
 			<spinner name="land cost"/>
 			<button label="Odśwież" label_selected="Odśwież" name="Refresh" tool_tip="Click here to refresh the above information"/>
 			<button label="Zastosuj" label_selected="Zastosuj" name="Apply" tool_tip="Click here to apply any changes from above"/>
-			<button label="Wybierz Region" label_selected="Wybierz Region" left="156" name="Select Region" tool_tip="Wybierz cały region za pomocą narzędzi edycji terenu" width="150"/>
-			<button label="Automatyczne Zapisanie" label_selected="Automatyczne Zapisanie" left="156" name="Autosave now" tool_tip="Save gzipped state to autosave directory" width="150"/>
+			<button label="Wybierz Region" label_selected="Wybierz Region" left="156" name="Select Region" tool_tip="Wybierz cały Region za pomocą narzędzi edycji terenu" width="150"/>
+			<button label="Automatyczne zapisanie" label_selected="Automatyczne zapisanie" left="156" name="Autosave now" tool_tip="Save gzipped state to autosave directory" width="150"/>
 		</panel>
 		<panel label="Obiekty" name="objects">
 			<text name="Sim Name:" width="105">
@@ -59,9 +59,9 @@
 			<text left_delta="110" name="region name">
 				Welsh
 			</text>
-			<check_box label="Wyłącz Skrypty" name="disable scripts" tool_tip="Set this to disable all scripts in this region"/>
-			<check_box label="Deaktywuj Kolizje" name="disable collisions" tool_tip="Set this to disable non-agent collisions in this region"/>
-			<check_box label="WylÄ…cz FizykÄ™" name="disable physics" tool_tip="Set this to disable all physics in this region"/>
+			<check_box label="Wyłącz skrypty" name="disable scripts" tool_tip="Set this to disable all scripts in this region"/>
+			<check_box label="Deaktywuj kolizje" name="disable collisions" tool_tip="Set this to disable non-agent collisions in this region"/>
+			<check_box label="WylÄ…cz fizykÄ™" name="disable physics" tool_tip="Set this to disable all physics in this region"/>
 			<button label="Zastosuj" label_selected="Zastosuj" name="Apply" tool_tip="Click here to apply any changes from above"/>
 			<button label="Ustaw Cel" label_selected="Set Target" name="Set Target" tool_tip="Set the target avatar for object deletion"/>
 			<text name="target_avatar_name">
@@ -70,8 +70,8 @@
 			<button label="Usuń cel z oskryptowanych obiektów na innych posiadłościach" label_selected="Usuń cel &apos;s skryptowane obiekty na innych posiadłościach" name="Delete Target&apos;s Scripted Objects On Others Land" tool_tip="Delete all scripted objects owned by the target on land not owned by the target. (no copy) objects will be returned."/>
 			<button label="Usuń cel z oskryptowanych obiektów na jakichkolwiek posiadłościach" label_selected="Usuń cel &apos;s skryptowane obiekty na jakichkolwiek posiadłościach" name="Delete Target&apos;s Scripted Objects On *Any* Land" tool_tip="Delete all scripted objects owned by the target in this region. (no copy) objects will be returned."/>
 			<button label="Usuń wszystkie cele i obiekty" label_selected="Usuń wszystkie cele i obiekty" name="Delete *ALL* Of Target&apos;s Objects" tool_tip="Delete all objects owned by the target in this region. (no copy) objects will be returned."/>
-			<button label="Główne Kolizje" label_selected="Główne Kolizje" name="Get Top Colliders" tool_tip="Gets list of objects experiencing the most narrowphase callbacks"/>
-			<button label="Główne Skrypty" label_selected="Główne Skrypty" name="Get Top Scripts" tool_tip="Gets list of objects spending the most time running scripts"/>
+			<button label="Główne kolizje" label_selected="Główne kolizje" name="Get Top Colliders" tool_tip="Gets list of objects experiencing the most narrowphase callbacks"/>
+			<button label="Główne skrypty" label_selected="Główne skrypty" name="Get Top Scripts" tool_tip="Gets list of objects spending the most time running scripts"/>
 			<button label="Treść skryptów" label_selected="Treść skryptów" name="Scripts digest" tool_tip="Wyświetla listę wszystkich skryptów i liczbę ich zastosowań."/>
 		</panel>
 		<panel label="Zażądaj" name="request">
diff --git a/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml b/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml
index 85e8194834257252476bec969d1c4b868b3a90c9..bd5dd7e7d2ed418a2dda65f024e1641d420eb069 100644
--- a/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml
@@ -3,9 +3,9 @@
 	<text name="Filtering:">
 		Filtrowanie:
 	</text>
-	<check_box label="Filtrowanie Anizotropowe" name="ani"/>
+	<check_box label="Filtr anizotropowy" name="ani"/>
 	<text name="Antialiasing:">
-		Antialiasing:
+		Antyaliasing:
 	</text>
 	<combo_box label="Antialiasing" name="fsaa" width="84">
 		<combo_box.item label="Wyłączone" name="FSAADisabled"/>
@@ -21,8 +21,8 @@
 	<text name="Enable VBO:">
 		Włącz VBO:
 	</text>
-	<check_box initial_value="true" label="Włącz Bufor Vertexów OpenGL" name="vbo" tool_tip=""/>
-	<slider label="Pamięć Tekstur (MB):" name="GraphicsCardTextureMemory" tool_tip="Ilość alokacji pamięci dla tekstur. Domyślne dla karty pamięci video. Obniżenie poziomu tych funkcji może polepszyć wydajność systemową jednak spowoduje zmniejszenie jakości i wyrazistości tekstur."/>
-	<spinner label="Stosunek Dystansu Mgły:" name="fog"/>
+	<check_box initial_value="true" label="Włącz rozszerzenie OpenGL" name="vbo" tool_tip=""/>
+	<slider label="Pamięć na tekstury (MB):" name="GraphicsCardTextureMemory" tool_tip="Ilość alokacji pamięci dla tekstur. Domyślne dla karty pamięci video. Obniżenie poziomu tych funkcji może polepszyć wydajność systemową jednak spowoduje zmniejszenie jakości i wyrazistości tekstur."/>
+	<spinner label="Stosunek dystansu mgły:" name="fog"/>
 	<button label="OK" label_selected="OK" name="OK"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_im_session.xml b/indra/newview/skins/default/xui/pl/floater_im_session.xml
index f4dd7d00e1406b2a83f9402b6bfa608b476107db..db513f787cbb3ad108697ec9614e1217c290a6b2 100644
--- a/indra/newview/skins/default/xui/pl/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/pl/floater_im_session.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="panel_im">
 	<layout_stack name="im_panels">
-		<layout_panel label="Panel Kontroli Wiadomości Prywatnej (IM)" name="panel_im_control_panel"/>
+		<layout_panel label="Panel kontroli wiadomości prywatnej (IM)" name="panel_im_control_panel"/>
 		<layout_panel>
 			<line_editor label="Do" name="chat_editor"/>
 		</layout_panel>
diff --git a/indra/newview/skins/default/xui/pl/floater_image_preview.xml b/indra/newview/skins/default/xui/pl/floater_image_preview.xml
index 6c61cfcacf84b1b7f86a4618f3060e27a5cb2709..a27e8ffed36f32b67cd7a6e29335c378dbf92ada 100644
--- a/indra/newview/skins/default/xui/pl/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/pl/floater_image_preview.xml
@@ -12,12 +12,12 @@
 	<combo_box label="Rodzaj Ubrania" name="clothing_type_combo">
 		<combo_box.item label="Obraz" name="Image"/>
 		<combo_box.item label="Włosy" name="Hair"/>
-		<combo_box.item label="Damska Głowa" name="FemaleHead"/>
-		<combo_box.item label="Damska Górna Część Ciała" name="FemaleUpperBody"/>
-		<combo_box.item label="Damska Górna Część Ciała" name="FemaleLowerBody"/>
-		<combo_box.item label="Męska Głowa" name="MaleHead"/>
-		<combo_box.item label="Męska Górna Część Ciała" name="MaleUpperBody"/>
-		<combo_box.item label="Męska Dolna Część Ciała" name="MaleLowerBody"/>
+		<combo_box.item label="Damska głowa" name="FemaleHead"/>
+		<combo_box.item label="Damska górna część ciała" name="FemaleUpperBody"/>
+		<combo_box.item label="Damska górna część ciała" name="FemaleLowerBody"/>
+		<combo_box.item label="Męska głowa" name="MaleHead"/>
+		<combo_box.item label="Męska górna część ciała" name="MaleUpperBody"/>
+		<combo_box.item label="Męska dolna część ciała" name="MaleLowerBody"/>
 		<combo_box.item label="Spódnica" name="Skirt"/>
 		<combo_box.item label="Prim sculptowy" name="SculptedPrim"/>
 	</combo_box>
diff --git a/indra/newview/skins/default/xui/pl/floater_incoming_call.xml b/indra/newview/skins/default/xui/pl/floater_incoming_call.xml
index fa2308675ee452e57cc3d56d84788d004736f2cc..e5ec3804aeb1842e030e8f0b7dae8691da14fbd2 100644
--- a/indra/newview/skins/default/xui/pl/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/pl/floater_incoming_call.xml
@@ -4,7 +4,7 @@
 		5
 	</floater.string>
 	<floater.string name="localchat">
-		Rozmowy Głosowe w Pobliżu
+		Rozmowy głosowe w pobliżu
 	</floater.string>
 	<floater.string name="anonymous">
 		anonimowy
diff --git a/indra/newview/skins/default/xui/pl/floater_inspect.xml b/indra/newview/skins/default/xui/pl/floater_inspect.xml
index f595f0c7dd8218bda374fda92360d30193e7059b..2c66f2851dab30953a3cc90dcbf72b5cccf9ea0c 100644
--- a/indra/newview/skins/default/xui/pl/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/pl/floater_inspect.xml
@@ -7,7 +7,7 @@
 		<scroll_list.columns label="Nazwa" name="object_name"/>
 		<scroll_list.columns label="Właściciel" name="owner_name"/>
 		<scroll_list.columns label="Twórca" name="creator_name"/>
-		<scroll_list.columns label="Data Kreacji" name="creation_date"/>
+		<scroll_list.columns label="Data kreacji" name="creation_date"/>
 	</scroll_list>
 	<button label="Profil Właściciela..." label_selected="" name="button owner" tool_tip=""/>
 	<button label="Profil Twórcy..." label_selected="" name="button creator" tool_tip=""/>
diff --git a/indra/newview/skins/default/xui/pl/floater_inventory.xml b/indra/newview/skins/default/xui/pl/floater_inventory.xml
index 42aebe99d6c2ac2ed73180bc72941786f577a3d0..0dc4d5b96d66c84a3372c6f5ca13c897080d19db 100644
--- a/indra/newview/skins/default/xui/pl/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/pl/floater_inventory.xml
@@ -4,7 +4,7 @@
 		MOJA SZAFA
 	</floater.string>
 	<floater.string name="TitleFetching">
-		MOJA SZAFA (Fetching [ITEM_COUNT] Obiekty...) [FILTER]
+		MOJA SZAFA (Dostarczanie [ITEM_COUNT] obiektów...) [FILTER]
 	</floater.string>
 	<floater.string name="TitleCompleted">
 		MOJA SZAFA ([ITEM_COUNT] Obiektów) [FILTER]
diff --git a/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml
index 9204262304d0a24240645e571bfd887e501d1135..bd7b221c5d68c67c5f352bcbe719b06366196b6a 100644
--- a/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml
+++ b/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml
@@ -4,7 +4,7 @@
 	<check_box label="Wizytówki" name="check_calling_card" />
 	<check_box label="Ubrania" name="check_clothing" />
 	<check_box label="Gesty" name="check_gesture" />
-	<check_box label="Zakładki Miejsc" name="check_landmark" />
+	<check_box label="Landmarki" name="check_landmark" />
 	<check_box label="Noty" name="check_notecard" />
 	<check_box label="Obiekty" name="check_object" />
 	<check_box label="Skrypty" name="check_script" />
diff --git a/indra/newview/skins/default/xui/pl/floater_joystick.xml b/indra/newview/skins/default/xui/pl/floater_joystick.xml
index b0b4f173b299f18f99e98805b01b88e4b6c21528..78742c39d1dc13667835f531574f6b6f602ad14c 100644
--- a/indra/newview/skins/default/xui/pl/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/pl/floater_joystick.xml
@@ -5,10 +5,10 @@
 	<spinner label="Kalibracja Osi X" label_width="130" left="20" name="JoystickAxis1" width="170"/>
 	<spinner label="Kalibracja Osi Y" label_width="130" left="210" name="JoystickAxis2" width="170"/>
 	<spinner label="Kalibracja Osi Z" label_width="130" left="400" name="JoystickAxis0" width="170"/>
-	<spinner label="Kalibracja Wznoszenia" label_width="130" left="20" name="JoystickAxis4" width="170"/>
-	<spinner label="Kalibracja Wychylania" label_width="130" left="210" name="JoystickAxis5" width="170"/>
-	<spinner label="Kalibracja Obrotu" label_width="130" left="400" name="JoystickAxis3" width="170"/>
-	<spinner label="Kalibracja Powiększania" label_width="130" name="JoystickAxis6" width="170"/>
+	<spinner label="Kalibracja wznoszenia" label_width="130" left="20" name="JoystickAxis4" width="170"/>
+	<spinner label="Kalibracja wychylania" label_width="130" left="210" name="JoystickAxis5" width="170"/>
+	<spinner label="Kalibracja obrotu" label_width="130" left="400" name="JoystickAxis3" width="170"/>
+	<spinner label="Kalibracja powiększania" label_width="130" name="JoystickAxis6" width="170"/>
 	<check_box label="Bezpośrednie" left="205" name="ZoomDirect"/>
 	<check_box label="Kursor 3D" left="340" name="Cursor3D"/>
 	<check_box label="Automatyczne" left="450" name="AutoLeveling"/>
@@ -37,54 +37,54 @@
 	<spinner left="208" name="BuildAxisScale0"/>
 	<spinner left="283" name="FlycamAxisScale0"/>
 	<text name="PitchScale" width="104">
-		Skala Wznoszenia
+		Skala wznoszenia
 	</text>
 	<spinner left="133" name="AvatarAxisScale4"/>
 	<spinner left="208" name="BuildAxisScale4"/>
 	<spinner left="283" name="FlycamAxisScale4"/>
 	<text name="YawScale" width="104">
-		Skala Odchylania
+		Skala odchylania
 	</text>
 	<spinner left="133" name="AvatarAxisScale5"/>
 	<spinner left="208" name="BuildAxisScale5"/>
 	<spinner left="283" name="FlycamAxisScale5"/>
 	<text name="RollScale" width="104">
-		Skala Obrotu
+		Skala obrotu
 	</text>
 	<spinner left="208" name="BuildAxisScale3"/>
 	<spinner left="283" name="FlycamAxisScale3"/>
 	<text name="XDeadZone" width="104">
-		Tolerancja Osi X
+		Tolerancja osi X
 	</text>
 	<spinner left="133" name="AvatarAxisDeadZone1"/>
 	<spinner left="208" name="BuildAxisDeadZone1"/>
 	<spinner left="283" name="FlycamAxisDeadZone1"/>
 	<text name="YDeadZone" width="104">
-		Tolerancja Osi Y
+		Tolerancja osi Y
 	</text>
 	<spinner left="133" name="AvatarAxisDeadZone2"/>
 	<spinner left="208" name="BuildAxisDeadZone2"/>
 	<spinner left="283" name="FlycamAxisDeadZone2"/>
 	<text name="ZDeadZone" width="104">
-		Tolerancja Osi Z
+		Tolerancja osi Z
 	</text>
 	<spinner left="133" name="AvatarAxisDeadZone0"/>
 	<spinner left="208" name="BuildAxisDeadZone0"/>
 	<spinner left="283" name="FlycamAxisDeadZone0"/>
 	<text name="PitchDeadZone" width="104">
-		Tolerancja Wznoszenia
+		Tolerancja wznoszenia
 	</text>
 	<spinner left="133" name="AvatarAxisDeadZone4"/>
 	<spinner left="208" name="BuildAxisDeadZone4"/>
 	<spinner left="283" name="FlycamAxisDeadZone4"/>
 	<text name="YawDeadZone" width="104">
-		Tolerancja Odchylania
+		Tolerancja odchylania
 	</text>
 	<spinner left="133" name="AvatarAxisDeadZone5"/>
 	<spinner left="208" name="BuildAxisDeadZone5"/>
 	<spinner left="283" name="FlycamAxisDeadZone5"/>
 	<text name="RollDeadZone" width="104">
-		Tolerancja Obrotu
+		Tolerancja obrotu
 	</text>
 	<spinner left="208" name="BuildAxisDeadZone3"/>
 	<spinner left="283" name="FlycamAxisDeadZone3"/>
@@ -95,14 +95,14 @@
 	<slider label="" left="200" name="BuildFeathering"/>
 	<slider label="" left="275" name="FlycamFeathering"/>
 	<text name="ZoomScale2" width="104">
-		Skala Powiększania
+		Skala powiększania
 	</text>
 	<spinner label="" left="283" name="FlycamAxisScale6"/>
 	<text name="ZoomDeadZone" width="104">
-		Tolerancja Powiększania
+		Tolerancja powiększania
 	</text>
 	<spinner label="" left="283" name="FlycamAxisDeadZone6"/>
-	<button label="Ustawienia Domyślne" left="366" name="SpaceNavigatorDefaults"/>
+	<button label="Ustawienia domyślne" left="366" name="SpaceNavigatorDefaults"/>
 	<button label="OK" label_selected="OK" left="366" name="ok_btn"/>
 	<button label="Anuluj" label_selected="Anuluj" name="cancel_btn"/>
 	<stat_view label="Monitor Joysticka" name="axis_view">
diff --git a/indra/newview/skins/default/xui/pl/floater_lagmeter.xml b/indra/newview/skins/default/xui/pl/floater_lagmeter.xml
index cc71c1dc3370b8f764f6e26bbf0cb794cba4607e..8038550bcb30637ac063dfd4edf0ea17ae6dd2d0 100644
--- a/indra/newview/skins/default/xui/pl/floater_lagmeter.xml
+++ b/indra/newview/skins/default/xui/pl/floater_lagmeter.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_lagmeter" title="POMIAR LAGÓW">
 	<floater.string name="max_title_msg">
-		Pomiar Lagów
+		Pomiar lagów
 	</floater.string>
 	<floater.string name="max_width_px">
 		360
@@ -34,16 +34,16 @@
 		W normie
 	</floater.string>
 	<floater.string name="client_draw_distance_cause_msg">
-		Przyczyna: Dystans rysowania jest za wysoki
+		Przyczyna: dystans rysowania jest za wysoki
 	</floater.string>
 	<floater.string name="client_texture_loading_cause_msg">
-		Przyczyna: Ładowanie obrazu
+		Przyczyna: ładowanie obrazu
 	</floater.string>
 	<floater.string name="client_texture_memory_cause_msg">
-		Przyczyna: Za dużo obrazów w pamięci
+		Przyczyna: za dużo obrazów w pamięci
 	</floater.string>
 	<floater.string name="client_complex_objects_cause_msg">
-		Przyczyna: Za dużo złożonych obiektów
+		Przyczyna: za dużo złożonych obiektów
 	</floater.string>
 	<floater.string name="network_text_msg">
 		Sieć
@@ -103,22 +103,22 @@
 		W normie
 	</floater.string>
 	<floater.string name="server_physics_cause_msg">
-		Przyczyna: Za dużo obiektów fizycznych
+		Przyczyna: za dużo obiektów fizycznych
 	</floater.string>
 	<floater.string name="server_scripts_cause_msg">
-		Przyczyna: Za dużo obieków skryptowanych
+		Przyczyna: za dużo obieków skryptowanych
 	</floater.string>
 	<floater.string name="server_net_cause_msg">
-		Przyczyna: Za duży ruch w sieci
+		Przyczyna: za duży ruch w sieci
 	</floater.string>
 	<floater.string name="server_agent_cause_msg">
-		Przyczyna: Za dużo poruszających się awatarów w regionie
+		Przyczyna: za dużo poruszających się awatarów w regionie
 	</floater.string>
 	<floater.string name="server_images_cause_msg">
-		Przyczyna: Za dużo kalkulacji obrazu
+		Przyczyna: za dużo kalkulacji obrazu
 	</floater.string>
 	<floater.string name="server_generic_cause_msg">
-		Przyczyna: Symulator ładuje się zbyt powoli
+		Przyczyna: symulator ładuje się zbyt powoli
 	</floater.string>
 	<floater.string name="smaller_label">
 		&gt;&gt;
diff --git a/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml b/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml
index 0dc5b9f663a07a52f1e3155574e6d6e7295962a3..7b1b395f8712647c79e1ab6fa605bfc20e788c20 100644
--- a/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml
@@ -3,5 +3,5 @@
 	<check_box label="Idź za kursorem" name="lock_check"/>
 	<combo_box label="Zablokuj" name="history_combo"/>
 	<button label="Wróć" name="back_btn"/>
-	<button label="Do Przodu" name="fwd_btn"/>
+	<button label="Do przodu" name="fwd_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_media_browser.xml b/indra/newview/skins/default/xui/pl/floater_media_browser.xml
index 4a513f146de027d5847af77f77799e5bf116d556..9787736ad8f11b255fff8c0179749f2bd7a4b294 100644
--- a/indra/newview/skins/default/xui/pl/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/pl/floater_media_browser.xml
@@ -3,15 +3,15 @@
 	<layout_stack name="stack1">
 		<layout_panel name="nav_controls">
 			<button label="Wróć" name="back"/>
-			<button label="Do Przodu" name="forward"/>
+			<button label="Do przodu" name="forward"/>
 			<button label="Załaduj" name="reload"/>
 			<button label="Idź" name="go"/>
 		</layout_panel>
 		<layout_panel name="parcel_owner_controls">
-			<button label="Wyślij bieżącą Stronę do Parceli" name="assign"/>
+			<button label="Wyślij bieżącą stronę do Parceli" name="assign"/>
 		</layout_panel>
 		<layout_panel name="external_controls">
-			<button label="Użyj Mojej Przeglądarki" name="open_browser"/>
+			<button label="Użyj mojej przeglądarki" name="open_browser"/>
 			<check_box label="Zawsze otwieraj w mojej przeglÄ…darce internetowej" name="open_always"/>
 			<button label="Zamknij" name="close"/>
 		</layout_panel>
diff --git a/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml b/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml
index 87d74f6c1597f9f31ac54d37ab41b5c520030fcb..9ce99692d094473c1fd8b6c455515af4b20b0c39 100644
--- a/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="MemLeak" title="STYMULACJA WYCIEKU PAMIĘCI">
-	<spinner label="Prędkość Przecieków (byty na klatkę):" name="leak_speed"/>
-	<spinner label="Max Przecieki (MB):" name="max_leak"/>
+	<spinner label="Prędkość przecieków (byty na klatkę):" name="leak_speed"/>
+	<spinner label="Max przecieki (MB):" name="max_leak"/>
 	<text name="total_leaked_label">
 		Przeciekło: [SIZE] KB
 	</text>
diff --git a/indra/newview/skins/default/xui/pl/floater_moveview.xml b/indra/newview/skins/default/xui/pl/floater_moveview.xml
index 9f93335177f4b707e1b7cdf8e314b8752b521f07..9c97a8a0e7dcd4d2ef05060f93277f2c80cf9366 100644
--- a/indra/newview/skins/default/xui/pl/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/pl/floater_moveview.xml
@@ -28,8 +28,8 @@
 		Lataj
 	</string>
 	<panel name="panel_actions">
-		<button label="" label_selected="" name="turn left btn" tool_tip="Obróć w Lewo (naciśnij Lewą Strzałkę lub A)"/>
-		<button label="" label_selected="" name="turn right btn" tool_tip="Obróć w Prawo (naciśnij Prawą Strzałkę lub D)"/>
+		<button label="" label_selected="" name="turn left btn" tool_tip="Obróć w lewo (naciśnij Lewą Strzałkę lub A)"/>
+		<button label="" label_selected="" name="turn right btn" tool_tip="Obróć w prawo (naciśnij Prawą Strzałkę lub D)"/>
 		<button label="" label_selected="" name="move up btn" tool_tip="Leć do góry, naciśnij E"/>
 		<button label="" label_selected="" name="move down btn" tool_tip="Leć w dół, naciśnij C"/>
 		<joystick_turn name="forward btn" tool_tip="Idź (naciśnij Strzałkę w Górę lub W)"/>
@@ -38,6 +38,6 @@
 	<panel name="panel_modes">
 		<button label="" name="mode_walk_btn" tool_tip="Tryb chodzenia"/>
 		<button label="" name="mode_run_btn" tool_tip="Tryb biegu"/>
-		<button label="" name="mode_fly_btn" tool_tip="Tryb Latania"/>
+		<button label="" name="mode_fly_btn" tool_tip="Tryb latania"/>
 	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_openobject.xml b/indra/newview/skins/default/xui/pl/floater_openobject.xml
index e30fbe3889e88ba0f941052e5a7e8e052982dc51..8e94ae821cc2caf0505c8deacae3c1a8a7c3452a 100644
--- a/indra/newview/skins/default/xui/pl/floater_openobject.xml
+++ b/indra/newview/skins/default/xui/pl/floater_openobject.xml
@@ -4,5 +4,5 @@
 		[DESC]:
 	</text>
 	<button label="Kopiuj do Szafy" label_selected="Kopiuj do Szafy" name="copy_to_inventory_button"/>
-	<button label="Kopiuj i Zalóż" label_selected="Kopiuj i Załóż" name="copy_and_wear_button"/>
+	<button label="Kopiuj i zalóż" label_selected="Kopiuj i załóż" name="copy_and_wear_button"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/pl/floater_outfit_save_as.xml
index 7e55f6db3b37eb1646adc2c24ab979aa0c55f205..a8d2e10c5fbe9c42bd2e04316aabc8663edec62f 100644
--- a/indra/newview/skins/default/xui/pl/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/pl/floater_outfit_save_as.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container" title="Stwórz Ubranie">
+<floater name="modal container" title="Stwórz ubranie">
 	<button label="Zapisz" label_selected="Zapisz" name="Save"/>
 	<button label="Anuluj" label_selected="Anuluj" name="Cancel"/>
 	<text name="Save item as:">
diff --git a/indra/newview/skins/default/xui/pl/floater_outgoing_call.xml b/indra/newview/skins/default/xui/pl/floater_outgoing_call.xml
index 5522c026314f62f1bea8fa953f01ff59d293e778..8a70cb3247e0da9e777ad2c968030ad0708b7d14 100644
--- a/indra/newview/skins/default/xui/pl/floater_outgoing_call.xml
+++ b/indra/newview/skins/default/xui/pl/floater_outgoing_call.xml
@@ -4,7 +4,7 @@
 		5
 	</floater.string>
 	<floater.string name="localchat">
-		Rozmowy Głosowe w Pobliżu
+		Rozmowy głosowe w pobliżu
 	</floater.string>
 	<floater.string name="anonymous">
 		anonimowy
@@ -13,7 +13,7 @@
 		dzwoni.
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
-		uczestniczy w Konferencyjnej Rozmowie Głosowej
+		uczestniczy w konferencyjnej rozmowie głosowej
 	</floater.string>
 	<text name="connecting">
 		Łączy z [CALLEE_NAME]
@@ -25,10 +25,10 @@
 		Brak odpowiedzi. Proszę spróbować ponownie później.
 	</text>
 	<text name="nearby">
-		Zostaleś rozłączony od [VOICE_CHANNEL_NAME].  [RECONNECT_NEARBY]
+		Zostaleś rozłączony z [VOICE_CHANNEL_NAME].  [RECONNECT_NEARBY]
 	</text>
 	<text name="nearby_P2P_by_other">
-		[VOICE_CHANNEL_NAME] has ended the call.  [RECONNECT_NEARBY]
+		[VOICE_CHANNEL_NAME] zakończył/a rozmowę głosową.  [RECONNECT_NEARBY]
 	</text>
 	<text name="nearby_P2P_by_agent">
 		Zakończyłeś rozmowę.  [RECONNECT_NEARBY]
diff --git a/indra/newview/skins/default/xui/pl/floater_perm_prefs.xml b/indra/newview/skins/default/xui/pl/floater_perm_prefs.xml
index 1b0dd6113efd6036f10ad204b6d116e9f8e07491..2128cfa3c876c4e8ac3850a66dc732017c1294cc 100644
--- a/indra/newview/skins/default/xui/pl/floater_perm_prefs.xml
+++ b/indra/newview/skins/default/xui/pl/floater_perm_prefs.xml
@@ -5,7 +5,7 @@
 		<check_box label="Udostępnij grupie" name="share_with_group"/>
 		<check_box label="Pozwól kopiować każdemu" name="everyone_copy"/>
 		<text name="NextOwnerLabel">
-			Następny właściciel:
+			Następny Właściciel:
 		</text>
 		<check_box label="Modyfikuje" name="next_owner_modify"/>
 		<check_box label="Kopiuje" name="next_owner_copy"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_post_process.xml b/indra/newview/skins/default/xui/pl/floater_post_process.xml
index 6bd91f97b1b8fefad9108e2e6ca3e43a9a11efc9..a3515915bf70387047027fcb665c4b7084ba4f64 100644
--- a/indra/newview/skins/default/xui/pl/floater_post_process.xml
+++ b/indra/newview/skins/default/xui/pl/floater_post_process.xml
@@ -16,40 +16,40 @@
 			</text>
 			<slider label="" name="wmiColorFilterContrast" />
 			<text name="wmiColorFilterBaseText">
-				Kontrast Koloru Podstawowego
+				Kontrast koloru podstawowego
 			</text>
 			<slider label="R" name="wmiColorFilterBaseR" />
 			<slider label="G" name="wmiColorFilterBaseG" />
 			<slider label="B" name="wmiColorFilterBaseB" />
 			<slider label="I" name="wmiColorFilterBaseI" />
 		</panel>
-		<panel label="Wizja Nocna" name="wmiNightVisionPanel">
+		<panel label="Wizja nocna" name="wmiNightVisionPanel">
 			<check_box label="Udostępnij" name="wmiNightVisionToggle" />
 			<text name="wmiNightVisionBrightMultText">
-				Wielokrotne Wzmocnienie Światła
+				Wielokrotne wzmocnienie światła
 			</text>
 			<slider label="" name="wmiNightVisionBrightMult" />
 			<text name="wmiNightVisionNoiseSizeText">
-				Rozmiar Szumu
+				Rozmiar szumu
 			</text>
 			<slider label="" name="wmiNightVisionNoiseSize" />
 			<text name="wmiNightVisionNoiseStrengthText">
-				Moc Szumu
+				Moc szumu
 			</text>
 			<slider label="" name="wmiNightVisionNoiseStrength" />
 		</panel>
 		<panel label="Bloom" name="wmiBloomPanel">
 			<check_box label="Udostępnij" name="wmiBloomToggle" />
 			<text name="wmiBloomExtractText">
-				Ekstracja Luminacji
+				Ekstracja luminacji
 			</text>
 			<slider label="" name="wmiBloomExtract" />
 			<text name="wmiBloomSizeText">
-				Rozmiar Rozmazania Obrazu
+				Rozmiar rozmazania obrazu
 			</text>
 			<slider label="" name="wmiBloomSize" />
 			<text name="wmiBloomStrengthText">
-				Moc Rozmazania Obrazu
+				Moc rozmazania obrazu
 			</text>
 			<slider label="" name="wmiBloomStrength" />
 		</panel>
diff --git a/indra/newview/skins/default/xui/pl/floater_postcard.xml b/indra/newview/skins/default/xui/pl/floater_postcard.xml
index 362483e2fdd27da587b5daa741a5b892892b7d47..095974aa6133b6085101294a2b278417d8ac705e 100644
--- a/indra/newview/skins/default/xui/pl/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/pl/floater_postcard.xml
@@ -20,7 +20,7 @@
 		Wpisz treść swojej wiadomości tutaj
 	</text_editor>
 	<text name="fine_print">
-		Jeżeli odbiorca tej pocztówki dołączy do [SECOND_LIFE], otrzymasz bonusa.
+		Jeżeli Odbiorca tej pocztówki dołączy do [SECOND_LIFE], otrzymasz bonus.
 	</text>
 	<button label="Anuluj" name="cancel_btn"/>
 	<button label="Wyślij" name="send_btn"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_animation.xml b/indra/newview/skins/default/xui/pl/floater_preview_animation.xml
index 386d703eb3e1e70da12545478d54316611398aaa..6ce6914771ef3f2cac5ecc2700d9f837ff6f401a 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_animation.xml
@@ -6,6 +6,6 @@
 	<text name="desc txt">
 		Opis:
 	</text>
-	<button label="Uruchom in-world" label_selected="Stop" left="20" name="Anim play btn" tool_tip="Uruchom tÄ™ animacjÄ™ by widzieli jÄ… pozostali Rezydenci" width="131"/>
-	<button label="Używaj lokalnie" label_selected="Stop" left="162" name="Anim audition btn" tool_tip="Uruchom tę animację widoczną tylko przez Ciebie" width="125"/>
+	<button label="Uruchom in-world" label_selected="Stop" left="20" name="Anim play btn" tool_tip="Uruchom animacjÄ™ by widzieli jÄ… pozostali Rezydenci" width="131"/>
+	<button label="Używaj lokalnie" label_selected="Stop" left="162" name="Anim audition btn" tool_tip="Uruchom animację widoczną tylko przez Ciebie" width="125"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_event.xml b/indra/newview/skins/default/xui/pl/floater_preview_event.xml
index 180cdea6e82095b258e92d25b814a6e021fd3ee1..5d9e47bc00500d851fca62b7e8b42cad8fc96b80 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_event.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_event.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="event_preview" title="INFORMACJE O IMPREZIE">
+<floater name="event_preview" title="INFO O IMPREZIE">
 	<floater.string name="Title">
 		Impreza: [NAME]
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml
index ba4fa736b133bf4b6e2f2894e469712c04af3d3b..05758ac04d980bcaa0842c4279cb5e393d656ec9 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml
@@ -22,7 +22,7 @@
 		-- Brak --
 	</floater.string>
 	<floater.string name="Title">
-		Gestura: [NAME]
+		Gest: [NAME]
 	</floater.string>
 	<text name="name_text">
 		Nazwa:
@@ -50,8 +50,8 @@
 	<text name="steps_label">
 		Etapy:
 	</text>
-	<button label="W Górę" name="up_btn"/>
-	<button label="W Dół" name="down_btn"/>
+	<button label="W górę" name="up_btn"/>
+	<button label="W dół" name="down_btn"/>
 	<button label="Usuń" name="delete_btn"/>
 	<radio_group name="animation_trigger_type">
 		<radio_item label="Start" name="start"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture_info.xml
index 8f760d5085dcb7d4047951e550559f040a01c016..d31cada96d44e7374fcd536e5de98250c0339397 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_gesture_info.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_gesture_info.xml
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="GESTURA"/>
+<floater name="Gesture" title="GEST"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture_shortcut.xml
index 2dc9917435420c89a9a6b26a6fb2f0dbdec3ce00..d33b799476ef6e8bd78967de2087ce9b8adf22b9 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_gesture_shortcut.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_gesture_shortcut.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="GESTURY">
+<floater name="Gesture" title="GESTY">
 	<text name="trigger_label">
 		Czat:
 	</text>
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture_steps.xml
index 74fb0c258eafb940ed363d36af13613bdba28b8f..6592d9dad0f97ff19e0d748d691c702c448be67a 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_gesture_steps.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_gesture_steps.xml
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Gesture" title="GESTURY"/>
+<floater name="Gesture" title="GESTY"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml b/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml
index eb8b5c1a4623ae048001c3dc6ee55c5c2a0287e5..1ad07c236bc37f18eb16c61e2daa173100a1753f 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="preview notecard" title="NOTA:">
 	<floater.string name="no_object">
-		Nie można znaleść obiektu zawierającego tą notkę.
+		Nie można znaleźć obiektu zawierającego tą notkę.
 	</floater.string>
 	<floater.string name="not_allowed">
 		Nie masz pozwolenia na zobaczenie tej notki.
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_sound.xml b/indra/newview/skins/default/xui/pl/floater_preview_sound.xml
index 230f432e094254f198b7d35b4fcca1b35bd0dce8..d02b3ca75ee2a80f3b0266a89aeb30c36921d5f8 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_sound.xml
@@ -7,5 +7,5 @@
 		Opis:
 	</text>
 	<button label="Odtwarzaj" label_selected="Odtwarzaj" left_delta="-136" name="Sound play btn" tool_tip="Dźwięk będzie słyszalny przez wszystkich." width="130"/>
-	<button label="Odtwarzaj Lokalnie" label_selected="Odtwarzaj Lokalnie" name="Sound audition btn" tool_tip="Dźwięk będzie słyszalny tylko dla Ciebie."/>
+	<button label="Odtwarzaj Lokalnie" label_selected="Odtwarzaj lokalnie" name="Sound audition btn" tool_tip="Dźwięk będzie słyszalny tylko dla Ciebie."/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_texture.xml b/indra/newview/skins/default/xui/pl/floater_preview_texture.xml
index 698a63e74aef38fcb2b9168d636db90264600835..e58acee139571d996116d2f2596d4ebccfc99de6 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_texture.xml
@@ -13,13 +13,13 @@
 		[WIDTH]px x [HEIGHT]px
 	</text>
 	<text name="aspect_ratio">
-		Zobacz Proporcje
+		Zobacz proporcje
 	</text>
 	<combo_box name="combo_aspect_ratio" tool_tip="Wyświetl w domyślnych proporcjach">
 		<combo_item name="Unconstrained">
 			Swobodny
 		</combo_item>
-		<combo_item name="1:1" tool_tip="Insygnia Grupy lub Realny Profil">
+		<combo_item name="1:1" tool_tip="Insygnia Grupy lub realny Profil">
 			1:1
 		</combo_item>
 		<combo_item name="4:3" tool_tip="[SECOND_LIFE] profil">
diff --git a/indra/newview/skins/default/xui/pl/floater_region_info.xml b/indra/newview/skins/default/xui/pl/floater_region_info.xml
index ae00f90f164638c983b28af5cdaeef8f2d106a95..a1f7785f488eaed112b47a5c6a5d35f03e277278 100644
--- a/indra/newview/skins/default/xui/pl/floater_region_info.xml
+++ b/indra/newview/skins/default/xui/pl/floater_region_info.xml
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="regioninfo" title="REGION/ESTATE"/>
+<floater name="regioninfo" title="REGION/MAJĄTEK"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml
index 18ce1b230f481e97df4110662b75fae9925e1261..a6f8ba6c11d7bc3e73f53a403dd866f8bfcb5c26 100644
--- a/indra/newview/skins/default/xui/pl/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/pl/floater_report_abuse.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_report_abuse" title="RAPORT O NADUŻYCIU">
 	<floater.string name="Screenshot">
-		Zdjęcie Ekranu
+		Zdjęcie ekranu
 	</floater.string>
 	<check_box label="Załącz zdjęcie do raportu" name="screen_check"/>
 	<text name="reporter_title">
@@ -40,42 +40,42 @@
 	</text>
 	<combo_box name="category_combo" tool_tip="Wybór kategorii - wybierz kategorię, której dotyczy raport">
 		<combo_box.item label="Wybierz KategoriÄ™:" name="Select_category"/>
-		<combo_box.item label="Wiek &gt; Udawanie Nieletniej Osoby" name="Age__Age_play"/>
+		<combo_box.item label="Wiek &gt; Udawanie nieletniej osoby" name="Age__Age_play"/>
 		<combo_box.item label="Wiek &gt; Dorosły Rezydent w Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/>
 		<combo_box.item label="Wiek &gt; Nieletni Rezydent poza Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
-		<combo_box.item label="Napaść &gt; Strefa Militarna / Niebezpieczny Obszar" name="Assault__Combat_sandbox___unsafe_area"/>
-		<combo_box.item label="Napaść &gt; Bezpieczny Obszar" name="Assault__Safe_area"/>
-		<combo_box.item label="Napaść &gt; Obszar do Testowania Broni" name="Assault__Weapons_testing_sandbox"/>
-		<combo_box.item label="Handel &gt; Niedostarczenie Produktu lub Usługi" name="Commerce__Failure_to_deliver_product_or_service"/>
-		<combo_box.item label="Naruszenie Prywatności &gt; Dane Osobiste" name="Disclosure__Real_world_information"/>
-		<combo_box.item label="Ujawnienie &gt; Monitorowanie Czatu" name="Disclosure__Remotely_monitoring chat"/>
-		<combo_box.item label="Ujawnienie &gt; Dane z Second Life / Czatu / IM" name="Disclosure__Second_Life_information_chat_IMs"/>
-		<combo_box.item label="Zakłócanie Spokoju &gt; Nieuczciwe Używanie Zasobów Regionu" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
-		<combo_box.item label="Zakłócanie Spokoju &gt; Przesadnie Skryptowane Obiekty" name="Disturbing_the_peace__Excessive_scripted_objects"/>
-		<combo_box.item label="Zakłócanie Spokoju &gt; Śmiecenie Obiektami" name="Disturbing_the_peace__Object_littering"/>
-		<combo_box.item label="Zakłócanie Spokoju &gt; Ciągły Spam" name="Disturbing_the_peace__Repetitive_spam"/>
-		<combo_box.item label="Zakłócanie Spokoju &gt; Nieporządany Spam Reklamowy" name="Disturbing_the_peace__Unwanted_advert_spam"/>
+		<combo_box.item label="Napaść &gt; strefa militarna / niebezpieczny obszar" name="Assault__Combat_sandbox___unsafe_area"/>
+		<combo_box.item label="Napaść &gt; nezpieczny obszar" name="Assault__Safe_area"/>
+		<combo_box.item label="Napaść &gt; obszar do testowania broni" name="Assault__Weapons_testing_sandbox"/>
+		<combo_box.item label="Handel &gt; niedostarczenie produktu lub usługi" name="Commerce__Failure_to_deliver_product_or_service"/>
+		<combo_box.item label="Naruszenie prywatności &gt; dane osobiste" name="Disclosure__Real_world_information"/>
+		<combo_box.item label="Ujawnienie &gt; monitorowanie czatu" name="Disclosure__Remotely_monitoring chat"/>
+		<combo_box.item label="Ujawnienie &gt; dane z Second Life / Czatu / IM" name="Disclosure__Second_Life_information_chat_IMs"/>
+		<combo_box.item label="Zakłócanie spokoju &gt; nieuczciwe używanie zasobów Regionu" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
+		<combo_box.item label="Zakłócanie spokoju &gt; przesadnie skryptowane obiekty" name="Disturbing_the_peace__Excessive_scripted_objects"/>
+		<combo_box.item label="Zakłócanie spokoju &gt; śmiecenie obiektami" name="Disturbing_the_peace__Object_littering"/>
+		<combo_box.item label="Zakłócanie spokoju &gt; ciągły spam" name="Disturbing_the_peace__Repetitive_spam"/>
+		<combo_box.item label="Zakłócanie spokoju &gt; nieporządany spam reklamowy" name="Disturbing_the_peace__Unwanted_advert_spam"/>
 		<combo_box.item label="Oszustwo &gt; L$" name="Fraud__L$"/>
 		<combo_box.item label="Oszustwo &gt; Posiadłości" name="Fraud__Land"/>
-		<combo_box.item label="Oszustwo &gt; Piramidy albo Listy Łańcuchowe" name="Fraud__Pyramid_scheme_or_chain_letter"/>
+		<combo_box.item label="Oszustwo &gt; piramidy albo listy łańcuchowe" name="Fraud__Pyramid_scheme_or_chain_letter"/>
 		<combo_box.item label="Oszustwo &gt; US$" name="Fraud__US$"/>
-		<combo_box.item label="Prześladowanie &gt; Farmy Reklamowe / Wizualny Spam" name="Harassment__Advert_farms___visual_spam"/>
-		<combo_box.item label="Prześladowanie &gt; Zniesławianie Jedostek lub Grup" name="Harassment__Defaming_individuals_or_groups"/>
-		<combo_box.item label="Prześladowanie &gt; Ograniczanie Ruchu" name="Harassment__Impeding_movement"/>
-		<combo_box.item label="Prześladowanie &gt; Molestowanie Seksualne" name="Harassment__Sexual_harassment"/>
-		<combo_box.item label="Prześladowanie &gt; Namawianie/Zachęcanie Innych do Łamania Warunków Umowy (ToS)" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
+		<combo_box.item label="Prześladowanie &gt; farmy reklamowe / wizualny spam" name="Harassment__Advert_farms___visual_spam"/>
+		<combo_box.item label="Prześladowanie &gt; zniesławianie jedostek lub grup" name="Harassment__Defaming_individuals_or_groups"/>
+		<combo_box.item label="Prześladowanie &gt; Ograniczanie ruchu" name="Harassment__Impeding_movement"/>
+		<combo_box.item label="Prześladowanie &gt; Molestowanie seksualne" name="Harassment__Sexual_harassment"/>
+		<combo_box.item label="Prześladowanie &gt; Namawianie/Zachęcanie innych do łamania warunków umowy (ToS)" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
 		<combo_box.item label="Prześladowanie &gt; Znieważanie Słowne" name="Harassment__Verbal_abuse"/>
-		<combo_box.item label="Nieprzyzwoitość &gt; Obraźliwa Treść lub Postępowanie" name="Indecency__Broadly_offensive_content_or_conduct"/>
-		<combo_box.item label="Nieprzyzwoitość &gt; Niestosowne Imię Awatara" name="Indecency__Inappropriate_avatar_name"/>
-		<combo_box.item label="Nieprzyzwoitość &gt; Obraźliwa treść i postępowanie w regionie &apos;PG&apos;" name="Indecency__Mature_content_in_PG_region"/>
-		<combo_box.item label="Nieprzyzwoitość &gt; Obraźliwa treść i postępowanie w regionie &apos;Mature&apos;" name="Indecency__Inappropriate_content_in_Mature_region"/>
-		<combo_box.item label="Naruszenie Własności Intelektualnej &gt; Usunięcie Treści" name="Intellectual_property_infringement_Content_Removal"/>
-		<combo_box.item label="Naruszenie Własności Intelektualnej &gt; CopyBot albo Nadużycie Przywilejów" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
+		<combo_box.item label="Nieprzyzwoitość &gt; Obraźliwa treść lub postępowanie" name="Indecency__Broadly_offensive_content_or_conduct"/>
+		<combo_box.item label="Nieprzyzwoitość &gt; Niestosowne imię awatara" name="Indecency__Inappropriate_avatar_name"/>
+		<combo_box.item label="Nieprzyzwoitość &gt; Obraźliwa treść i postępowanie w Regionie &apos;PG&apos;" name="Indecency__Mature_content_in_PG_region"/>
+		<combo_box.item label="Nieprzyzwoitość &gt; Obraźliwa treść i postępowanie w Regionie &apos;Mature&apos;" name="Indecency__Inappropriate_content_in_Mature_region"/>
+		<combo_box.item label="Naruszenie własności intelektualnej &gt; usunięcie treści" name="Intellectual_property_infringement_Content_Removal"/>
+		<combo_box.item label="Naruszenie własności intelektualnej &gt; CopyBot albo nadużycie przywilejów" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
 		<combo_box.item label="Nietolerancja" name="Intolerance"/>
-		<combo_box.item label="Posiadłości &gt; Nadużywanie Piaskownicy" name="Land__Abuse_of_sandbox_resources"/>
-		<combo_box.item label="Posiadłości &gt; Naruszenie &gt; Obiekty/Tekstury" name="Land__Encroachment__Objects_textures"/>
-		<combo_box.item label="Posiadłości &gt; Naruszenie &gt; Cząsteczki" name="Land__Encroachment__Particles"/>
-		<combo_box.item label="Posiadłości &gt; Naruszenie &gt; Drzewa/Rośliny" name="Land__Encroachment__Trees_plants"/>
+		<combo_box.item label="Posiadłości &gt; nadużywanie piaskownicy" name="Land__Abuse_of_sandbox_resources"/>
+		<combo_box.item label="Posiadłości &gt; naruszenie &gt; obiekty/tekstury" name="Land__Encroachment__Objects_textures"/>
+		<combo_box.item label="Posiadłości &gt; naruszenie &gt; cząsteczki" name="Land__Encroachment__Particles"/>
+		<combo_box.item label="Posiadłości &gt; naruszenie &gt; drzewa/rośliny" name="Land__Encroachment__Trees_plants"/>
 		<combo_box.item label="Zakłady/Hazard" name="Wagering_gambling"/>
 		<combo_box.item label="Inne" name="Other"/>
 	</combo_box>
diff --git a/indra/newview/skins/default/xui/pl/floater_script_queue.xml b/indra/newview/skins/default/xui/pl/floater_script_queue.xml
index c20decdd0049d6a0919dc0695fdd6c27af53c6ad..bdfdba569e5c1d6b4ea32e05fd8333e24b62ec0f 100644
--- a/indra/newview/skins/default/xui/pl/floater_script_queue.xml
+++ b/indra/newview/skins/default/xui/pl/floater_script_queue.xml
@@ -7,7 +7,7 @@
 		Wykonane.
 	</floater.string>
 	<floater.string name="Resetting">
-		Trwa reset
+		Trwa resetowanie
 	</floater.string>
 	<floater.string name="Running">
 		Skrypt działa
diff --git a/indra/newview/skins/default/xui/pl/floater_script_search.xml b/indra/newview/skins/default/xui/pl/floater_script_search.xml
index a2812406a4b6d091c487d8e6a4463889723e5fb6..cb010daee4ed6247da146212da45fcd719e27ab4 100644
--- a/indra/newview/skins/default/xui/pl/floater_script_search.xml
+++ b/indra/newview/skins/default/xui/pl/floater_script_search.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="script search" title="SZUKAJ SKRYPTU">
-	<check_box label="CapsLoock Nieaktywny" name="case_text"/>
+	<check_box label="CapsLoock nieaktywny" name="case_text"/>
 	<button label="Szukaj" label_selected="Szukaj" name="search_btn"/>
 	<button label="Zamień" label_selected="Zamień" name="replace_btn"/>
-	<button label="Zamień Wszystko" label_selected="Zamień Wszystko" name="replace_all_btn"/>
+	<button label="Zamień Wszystko" label_selected="Zamień wszystko" name="replace_all_btn"/>
 	<text name="txt">
 		Szukaj
 	</text>
diff --git a/indra/newview/skins/default/xui/pl/floater_sell_land.xml b/indra/newview/skins/default/xui/pl/floater_sell_land.xml
index 1670becbbb4b8c862fe07ec6213fb54ac86bc071..eb1ed74797e2a01e3adf192d258ed5500a031b66 100644
--- a/indra/newview/skins/default/xui/pl/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/pl/floater_sell_land.xml
@@ -58,7 +58,7 @@
 			<text name="nag_message_label">
 				PAMIĘTAJ: Sprzedaż jest nieodwracalna.
 			</text>
-			<button label="Wystaw Ziemię na Sprzedaż" name="sell_btn"/>
+			<button label="Wystaw ziemię na sprzedaż" name="sell_btn"/>
 			<button label="Anuluj" name="cancel_btn"/>
 		</panel>
 	</scroll_container>
diff --git a/indra/newview/skins/default/xui/pl/floater_snapshot.xml b/indra/newview/skins/default/xui/pl/floater_snapshot.xml
index 0b15727daae48e265225df11651b1d9a592e0de1..df4e5b43bcfd8fcff9457a9078d1c37d6f97093a 100644
--- a/indra/newview/skins/default/xui/pl/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/pl/floater_snapshot.xml
@@ -11,7 +11,7 @@
 	<text name="file_size_label">
 		[SIZE] KB
 	</text>
-	<button label="Odśwież Zdjęcie" name="new_snapshot_btn"/>
+	<button label="Odśwież zdjęcie" name="new_snapshot_btn"/>
 	<button label="Wyślij" name="send_btn"/>
 	<button label="Załaduj (L$[AMOUNT])" name="upload_btn"/>
 	<flyout_button label="Zapisz" name="save_btn" tool_tip="Zapisz zdjęcie na dysk">
@@ -66,7 +66,7 @@
 	<combo_box label="Warstwy Obrazu" name="layer_types">
 		<combo_box.item label="Kolory" name="Colors"/>
 		<combo_box.item label="Głębokość" name="Depth"/>
-		<combo_box.item label="Obiekty Åšlepe" name="ObjectMattes"/>
+		<combo_box.item label="Obiekty ślepe" name="ObjectMattes"/>
 	</combo_box>
 	<check_box label="Pokaż interfejs na zdjęciu" name="ui_check"/>
 	<check_box label="Pokaż obiekty HUD na zdjęciu" name="hud_check"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_sound_preview.xml b/indra/newview/skins/default/xui/pl/floater_sound_preview.xml
index c66ac0a98fe83615f99706d8992366ac398f82e9..ac041dff6ad0c4842fe2f77265f9a72df1532ad7 100644
--- a/indra/newview/skins/default/xui/pl/floater_sound_preview.xml
+++ b/indra/newview/skins/default/xui/pl/floater_sound_preview.xml
@@ -7,5 +7,5 @@
 		Opis:
 	</text>
 	<button label="Anuluj" label_selected="Anuluj" name="cancel_btn"/>
-	<button label="Załaduj (L$[AMOUNT])" label_selected="Załaduj (L$[AMOUNT])" name="ok_btn"/>
+	<button label="Załaduj ([AMOUNT]L$)" label_selected="Załaduj ([AMOUNT]L$)" name="ok_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_stats.xml b/indra/newview/skins/default/xui/pl/floater_stats.xml
index acd3df0585f4bacf89368684d961c40436199d40..ee5fba4d63573740674cf3fbbd719042fe868443 100644
--- a/indra/newview/skins/default/xui/pl/floater_stats.xml
+++ b/indra/newview/skins/default/xui/pl/floater_stats.xml
@@ -3,17 +3,17 @@
 	<scroll_container name="statistics_scroll">
 		<container_view name="statistics_view">
 			<stat_view label="Podstawowe" name="basic">
-				<stat_bar label="Ilość Obrazów/Sec (FPS)" name="fps"/>
+				<stat_bar label="Ilość obrazów/sek (FPS)" name="fps"/>
 				<stat_bar label="Przepustowość" name="bandwidth"/>
-				<stat_bar label="Stracone Pakiety" name="packet_loss"/>
-				<stat_bar label="Ping Sim" name="ping"/>
+				<stat_bar label="Stracone pakiety" name="packet_loss"/>
+				<stat_bar label="Ping sim" name="ping"/>
 			</stat_view>
 			<stat_view label="Zaawansowane" name="advanced">
 				<stat_view label="Renderuj" name="render">
 					<stat_bar label="KTris Drawn" name="ktrisframe"/>
 					<stat_bar label="KTris Drawn" name="ktrissec"/>
-					<stat_bar label="Wszystkie Obiekty" name="objs"/>
-					<stat_bar label="Nowe Obiekty" name="newobjs"/>
+					<stat_bar label="Wszystkie obiekty" name="objs"/>
+					<stat_bar label="Nowe obiekty" name="newobjs"/>
 				</stat_view>
 				<stat_view label="Tekstura" name="texture">
 					<stat_bar label="Suma" name="numimagesstat"/>
@@ -24,8 +24,8 @@
 					<stat_bar label="Bound Mem" name="glboundmemstat"/>
 				</stat_view>
 				<stat_view label="Sieć" name="network">
-					<stat_bar label="Pakiety Wewnętrzne" name="packetsinstat"/>
-					<stat_bar label="Pakiety Zewnętrzne" name="packetsoutstat"/>
+					<stat_bar label="Pakiety wewnętrzne" name="packetsinstat"/>
+					<stat_bar label="Pakiety zewnętrzne" name="packetsoutstat"/>
 					<stat_bar label="Obiekty" name="objectkbitstat"/>
 					<stat_bar label="Tesktura" name="texturekbitstat"/>
 					<stat_bar label="Asset" name="assetkbitstat"/>
@@ -40,30 +40,30 @@
 				<stat_bar label="Ilość Obrazów/Sec na Symulatorze (Sim FPS)" name="simfps"/>
 				<stat_bar label="Fizyka Obrazów/Sec" name="simphysicsfps"/>
 				<stat_view label="Szczegóły Fizyki" name="physicsdetail">
-					<stat_bar label="Pinned Objects" name="physicspinnedtasks"/>
+					<stat_bar label="Pinned objects" name="physicspinnedtasks"/>
 					<stat_bar label="Niskie LOD Obiektów" name="physicslodtasks"/>
-					<stat_bar label="Alokacja Pamięci" name="physicsmemoryallocated"/>
-					<stat_bar label="Aktualizacja Agentów/Sec" name="simagentups"/>
-					<stat_bar label="Główni Agenci" name="simmainagents"/>
-					<stat_bar label="Child Agents" name="simchildagents"/>
+					<stat_bar label="Alokacja pamięci" name="physicsmemoryallocated"/>
+					<stat_bar label="Aktualizacja agentów/Sek" name="simagentups"/>
+					<stat_bar label="Główni agenci" name="simmainagents"/>
+					<stat_bar label="Child agents" name="simchildagents"/>
 					<stat_bar label="Obiekty" name="simobjects"/>
-					<stat_bar label="Aktywne Obiekty" name="simactiveobjects"/>
-					<stat_bar label="Aktywne Skrypty" name="simactivescripts"/>
-					<stat_bar label="Wydarzenie Skryptowe" name="simscripteps"/>
-					<stat_bar label="Pakiety Wewnętrzne" name="siminpps"/>
-					<stat_bar label="Pakiety Zewnętrzne" name="simoutpps"/>
-					<stat_bar label="Oczekiwane na Pobranie" name="simpendingdownloads"/>
-					<stat_bar label="Oczekiwane na Załadowanie" name="simpendinguploads"/>
-					<stat_bar label="Wszystkie Niepotwierdzone Bity" name="simtotalunackedbytes"/>
+					<stat_bar label="Aktywne obiekty" name="simactiveobjects"/>
+					<stat_bar label="Aktywne skrypty" name="simactivescripts"/>
+					<stat_bar label="Wydarzenie skryptowe" name="simscripteps"/>
+					<stat_bar label="Pakiety wewnętrzne" name="siminpps"/>
+					<stat_bar label="Pakiety zewnętrzne" name="simoutpps"/>
+					<stat_bar label="Oczekiwane na pobranie" name="simpendingdownloads"/>
+					<stat_bar label="Oczekiwane na załadowanie" name="simpendinguploads"/>
+					<stat_bar label="Wszystkie niepotwierdzone bity" name="simtotalunackedbytes"/>
 				</stat_view>
 				<stat_view label="Czas (ms)" name="simperf">
-					<stat_bar label="Całkowity Czas Obrazu" name="simframemsec"/>
-					<stat_bar label="Czas Sieciowy" name="simnetmsec"/>
-					<stat_bar label="Czas Fizyki" name="simsimphysicsmsec"/>
-					<stat_bar label="Czas Symulatora" name="simsimothermsec"/>
-					<stat_bar label="Czas Agenta" name="simagentmsec"/>
-					<stat_bar label="Czas Obrazu" name="simimagesmsec"/>
-					<stat_bar label="Czas Skryptu" name="simscriptmsec"/>
+					<stat_bar label="Całkowity czas obrazu" name="simframemsec"/>
+					<stat_bar label="Czas sieciowy" name="simnetmsec"/>
+					<stat_bar label="Czas fizyki" name="simsimphysicsmsec"/>
+					<stat_bar label="Czas symulatora" name="simsimothermsec"/>
+					<stat_bar label="Czas agenta" name="simagentmsec"/>
+					<stat_bar label="Czas obrazu" name="simimagesmsec"/>
+					<stat_bar label="Czas skryptu" name="simscriptmsec"/>
 				</stat_view>
 			</stat_view>
 		</container_view>
diff --git a/indra/newview/skins/default/xui/pl/floater_telehub.xml b/indra/newview/skins/default/xui/pl/floater_telehub.xml
index f8a23a6fc3b1ef81686760913682f54a7528a15d..32cc08810df9100afb291824a9439092458d56c0 100644
--- a/indra/newview/skins/default/xui/pl/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/pl/floater_telehub.xml
@@ -15,10 +15,10 @@
 	<button label="Połącz z teleporterem" name="connect_btn" width="132"/>
 	<button label="Rozłącz" left="152" name="disconnect_btn" width="88"/>
 	<text name="spawn_points_text" width="250">
-		Punkty Składowe (pozycje - nie obiekty!):
+		Punkty składowe (pozycje - nie obiekty!):
 	</text>
-	<button label="Dodaj Punkt" name="add_spawn_point_btn"/>
-	<button label="Usuń Punkt" name="remove_spawn_point_btn"/>
+	<button label="Dodaj punkt" name="add_spawn_point_btn"/>
+	<button label="Usuń punkt" name="remove_spawn_point_btn"/>
 	<text name="spawn_point_help">
 		Wybierz obiekt i wybierz &quot;Dodaj&quot; by sprecyzować pozycję.
 Możesz przesunąć lub usunąć obiekt.
diff --git a/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml
index 8464343ebb036c33d73706df9837cb6a51f706bc..52c0cb8a93ab2b758dfe20af31f27435038c0a4f 100644
--- a/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml
@@ -4,7 +4,7 @@
 		Kliknij by wybrać obraz
 	</string>
 	<text name="Multiple">
-		Wiele Tekstur
+		Wiele tekstur
 	</text>
 	<text name="unknown">
 		Rozmiar: [DIMENSIONS]
@@ -12,8 +12,8 @@
 	<button label="Domyślna" label_selected="Domyślna" name="Default"/>
 	<button label="Żadna" label_selected="Żadna" name="None"/>
 	<button label="Pusta" label_selected="Pusta" name="Blank"/>
-	<check_box label="Pokaż Foldery" name="show_folders_check"/>
-	<search_editor label="Filtruj Tektury" name="inventory search editor"/>
+	<check_box label="Pokaż foldery" name="show_folders_check"/>
+	<search_editor label="Filtruj tektury" name="inventory search editor"/>
 	<check_box label="Zastosuj teraz" name="apply_immediate_check"/>
 	<button label="" label_selected="" name="Pipette"/>
 	<button label="Anuluj" label_selected="Anuluj" name="Cancel"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_tools.xml b/indra/newview/skins/default/xui/pl/floater_tools.xml
index e355813f8353cdbeafc7e51c9b67c292945f1e3f..5bc3811ef628d374bdc2e7e78ffe1ca48e41a1df 100644
--- a/indra/newview/skins/default/xui/pl/floater_tools.xml
+++ b/indra/newview/skins/default/xui/pl/floater_tools.xml
@@ -154,10 +154,10 @@
 				Cena za: L$
 			</panel.string>
 			<panel.string name="Cost Mixed">
-				Cena Mieszana
+				Cena mieszana
 			</panel.string>
 			<panel.string name="Sale Mixed">
-				Sprzedaż Mieszana
+				Sprzedaż mieszana
 			</panel.string>
 			<text name="Name:">
 				Nazwa:
@@ -190,10 +190,10 @@
 				Kliknij:
 			</text>
 			<combo_box name="clickaction">
-				<combo_box.item label="Dotknij  (domyślne)" name="Touch/grab(default)"/>
-				<combo_box.item label="Usiądź na Obiekcie" name="Sitonobject"/>
-				<combo_box.item label="Kup Obiekt" name="Buyobject"/>
-				<combo_box.item label="Zapłać Obiektowi" name="Payobject"/>
+				<combo_box.item label="Dotknij (domyślne)" name="Touch/grab(default)"/>
+				<combo_box.item label="Usiądź na obiekcie" name="Sitonobject"/>
+				<combo_box.item label="Kup obiekt" name="Buyobject"/>
+				<combo_box.item label="Zapłać obiektowi" name="Payobject"/>
 				<combo_box.item label="Otwórz" name="Open"/>
 				<combo_box.item label="Przybliż" name="Zoom"/>
 			</combo_box>
@@ -215,11 +215,11 @@
 				<check_box label="Przesuń" name="checkbox allow everyone move"/>
 				<check_box label="Kopiuj" name="checkbox allow everyone copy"/>
 				<text name="Next owner can:">
-					Następny właściciel:
+					Następny Właściciel:
 				</text>
 				<check_box label="Zmienia" name="checkbox next owner can modify"/>
 				<check_box label="Kopiuje" name="checkbox next owner can copy"/>
-				<check_box label="Oddaje/Sprzedaje" name="checkbox next owner can transfer" tool_tip="Następny właściciel może oddawać lub sprzedawać ten obiekt"/>
+				<check_box label="Oddaje/Sprzedaje" name="checkbox next owner can transfer" tool_tip="Następny Właściciel może oddawać lub sprzedawać ten obiekt"/>
 				<text name="B:">
 					B:
 				</text>
@@ -313,20 +313,20 @@
 				Zwężenie
 			</text>
 			<text name="scale_hole">
-				Rozmiar Wgłębienia
+				Rozmiar wgłębienia
 			</text>
 			<spinner label="X" name="Taper Scale X"/>
 			<spinner label="Y" name="Taper Scale Y"/>
 			<text name="text topshear">
-				Przesunięcie Górne
+				Przesunięcie górne
 			</text>
 			<spinner label="X" name="Shear X"/>
 			<spinner label="Y" name="Shear Y"/>
 			<text name="advanced_cut">
-				Wykrojenie Przekroju (poczÄ…tek/koniec)
+				Wykrojenie przekroju (poczÄ…tek/koniec)
 			</text>
 			<text name="advanced_dimple">
-				Przesunięcie Promienia (początek/koniec)
+				Przesunięcie promienia (początek/koniec)
 			</text>
 			<text name="advanced_slice">
 				Przetnij(poczÄ…tek/koniec)
@@ -346,17 +346,17 @@
 			</text>
 			<spinner name="Radius Offset"/>
 			<spinner name="Revolutions"/>
-			<texture_picker label="Tekstura Skulptowa" name="sculpt texture control" tool_tip="Click to choose a picture"/>
+			<texture_picker label="Tekstura skulptowa" name="sculpt texture control" tool_tip="Click to choose a picture"/>
 			<check_box label="Odbicie" name="sculpt mirror control" tool_tip="Odwraca skulpt wzdłuż osi X."/>
 			<check_box label="Åšrodek na zewnÄ…trz" name="sculpt invert control" tool_tip="Odwraca normalne skulptu."/>
 			<text name="label sculpt type">
-				Typ Ścięgna
+				Typ ścięgna
 			</text>
 			<combo_box name="sculpt type control">
 				<combo_box.item label="(żadne)" name="None"/>
 				<combo_box.item label="Kula" name="Sphere"/>
 				<combo_box.item label="Torus" name="Torus"/>
-				<combo_box.item label="Płaczyzna" name="Plane"/>
+				<combo_box.item label="Płaszczyzna" name="Plane"/>
 				<combo_box.item label="Walec" name="Cylinder"/>
 			</combo_box>
 		</panel>
@@ -454,7 +454,7 @@
 			<spinner label="Powtórzenia / metr" name="rptctrl"/>
 			<button label="Zastosuj" label_selected="Zastosuj" name="button apply"/>
 			<text name="tex offset">
-				Wyrównanie Tekstury
+				Wyrównanie tekstury
 			</text>
 			<spinner label="Poziome (U)" name="TexOffsetU"/>
 			<spinner label="Pionowe (V)" name="TexOffsetV"/>
@@ -469,7 +469,7 @@
 			</panel>
 		</panel>
 		<panel label="Treść" name="Contents">
-			<button label="Nowy Skrypt" label_selected="Nowy Skrypt" name="button new script"/>
+			<button label="Nowy skrypt" label_selected="Nowy skrypt" name="button new script"/>
 			<button label="Prawa" name="button permissions"/>
 		</panel>
 	</tab_container>
@@ -484,13 +484,13 @@
 			Obszar: [AREA] m²
 		</text>
 		<button label="O Posiadłości" label_selected="O Posiadłości" name="button about land"/>
-		<check_box label="Pokaż Właścicieli" name="checkbox show owners" tool_tip="Pokoloruj posiadłości zgodnie z przynależnością do właściciela: 
+		<check_box label="Pokaż Właścicieli" name="checkbox show owners" tool_tip="Pokoloruj Posiadłości zgodnie z przynależnością do Właściciela: 
 
 Zielony = Twoja Posiadłość 
 Morski = Posiadłość Twojej Grupy 
-Czerwony = Posiadłości Innych 
-Żółty = Na Sprzedaż 
-Fioletowy = Na AukcjÄ™ 
+Czerwony = Posiadłości innych 
+Żółty = Na sprzedaż 
+Fioletowy = Na aukcjÄ™ 
 Szary = Publiczna"/>
 		<text name="label_parcel_modify">
 			Modyfikuj Posiadłość
@@ -498,7 +498,7 @@ Szary = Publiczna"/>
 		<button label="Podziel" label_selected="Podziel" name="button subdivide land"/>
 		<button label="Złącz" label_selected="Złącz" name="button join land"/>
 		<text name="label_parcel_trans">
-			Transakcje na posiadłości
+			Transakcje na Posiadłości
 		</text>
 		<button label="Kup Posiadłość" label_selected="Kup Posiadłość" name="button buy land"/>
 		<button label="Porzuć Posiadłość" label_selected="Porzuć Posiadłość" name="button abandon land"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_top_objects.xml b/indra/newview/skins/default/xui/pl/floater_top_objects.xml
index 8d41e0fb134cfcf81942f47cae883beceb65fbda..6afbce7e1064b287650e2f4f46fdda9a3cac7d12 100644
--- a/indra/newview/skins/default/xui/pl/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/pl/floater_top_objects.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="top_objects" title="Główne Obiekty">
 	<floater.string name="top_scripts_title">
-		Główne Skrypty
+		Główne skrypty
 	</floater.string>
 	<floater.string name="top_scripts_text">
 		[COUNT] skryptów działa w czasie [TIME] ms
@@ -13,7 +13,7 @@
 		Mono Time
 	</floater.string>
 	<floater.string name="top_colliders_title">
-		Główne Kolizje
+		Główne kolizje
 	</floater.string>
 	<floater.string name="top_colliders_text">
 		[COUNT] obiektów odczuwa działanie wielu potencjalnych kolizji
@@ -22,7 +22,7 @@
 		Wynik
 	</floater.string>
 	<floater.string name="none_descriptor">
-		Nie odnalezione
+		Nieodnalezione
 	</floater.string>
 	<text name="title_text">
 		Ładowanie...
@@ -37,11 +37,11 @@
 		<scroll_list.columns label="URL" name="URLs"/>
 	</scroll_list>
 	<text name="id_text">
-		ID Obiektu:
+		ID obiektu:
 	</text>
-	<button label="Pokaż Emitery" name="show_beacon_btn"/>
+	<button label="Pokaż emitery" name="show_beacon_btn"/>
 	<text name="obj_name_text">
-		Nazwa Obiektu:
+		Nazwa obiektu:
 	</text>
 	<button label="Filtr" name="filter_object_btn"/>
 	<text name="owner_name_text">
@@ -49,8 +49,8 @@
 	</text>
 	<button label="Filter" name="filter_owner_btn"/>
 	<button label="Odśwież" name="refresh_btn"/>
-	<button label="Zwróć Wybrane" name="return_selected_btn"/>
-	<button label="Zwróć Wszystko" name="return_all_btn"/>
-	<button label="Deaktywuj Wybrane" name="disable_selected_btn"/>
-	<button label="Deaktywuj Wszystko" name="disable_all_btn"/>
+	<button label="Zwróć wybrane" name="return_selected_btn"/>
+	<button label="Zwróć wszystko" name="return_all_btn"/>
+	<button label="Deaktywuj wybrane" name="disable_selected_btn"/>
+	<button label="Deaktywuj wszystko" name="disable_all_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_voice_controls.xml b/indra/newview/skins/default/xui/pl/floater_voice_controls.xml
index 27e26119527d74bffd4568beb7894ad7860995dc..6bee3e911c557767115ae65ff58e924e7a6e3376 100644
--- a/indra/newview/skins/default/xui/pl/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/pl/floater_voice_controls.xml
@@ -17,7 +17,7 @@
 	</string>
 	<layout_stack name="my_call_stack">
 		<layout_panel name="my_panel">
-			<text name="user_text" value="Mój Awatar:"/>
+			<text name="user_text" value="Mój awatar:"/>
 		</layout_panel>
 		<layout_panel name="leave_call_btn_panel">
 			<button label="Zakończ" name="leave_call_btn"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_water.xml b/indra/newview/skins/default/xui/pl/floater_water.xml
index 5ea5dbdd0e5a162d6778d1097080962842fb2efe..9720dae516a717fb1d07be6875d97e3ea2e915b4 100644
--- a/indra/newview/skins/default/xui/pl/floater_water.xml
+++ b/indra/newview/skins/default/xui/pl/floater_water.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Water Floater" title="ZAAWANSOWANY EDYTOR WODY">
 	<text name="KeyFramePresetsText">
-		Ustawienia Wody:
+		Ustawienia wody:
 	</text>
 	<button label="Nowe" label_selected="Nowe" name="WaterNewPreset"/>
 	<button label="Zapisz" label_selected="Zapisz" name="WaterSavePreset"/>
@@ -9,22 +9,22 @@
 	<tab_container name="Water Tabs">
 		<panel label="USTAWIENIA" name="Settings">
 			<text name="BHText">
-				Kolor Podwodnej Mgły
+				Kolor podwodnej mgły
 			</text>
 			<button label="?" name="WaterFogColorHelp"/>
 			<color_swatch label="" name="WaterFogColor" tool_tip="Kliknij aby wybrać kolor"/>
 			<text name="WaterFogDensText">
-				Wykładnik Gęstości Mgły
+				Wykładnik gęstości mgły
 			</text>
 			<button label="?" name="WaterFogDensityHelp"/>
 			<slider label="" name="WaterFogDensity"/>
 			<text name="WaterUnderWaterFogModText">
-				Modyfikator Mgły
+				Modyfikator mgły
 			</text>
 			<button label="?" name="WaterUnderWaterFogModHelp"/>
 			<slider label="" name="WaterUnderWaterFogMod"/>
 			<text name="BDensText">
-				Skala Zmarszczeń
+				Skala zmarszczeń
 			</text>
 			<button label="?" name="WaterNormalScaleHelp"/>
 			<text name="BHText2">
@@ -50,24 +50,24 @@
 			<button label="?" name="WaterFresnelOffsetHelp"/>
 			<slider label="" name="WaterFresnelOffset"/>
 			<text name="DensMultText">
-				Górna Refrakcja
+				Górna refrakcja
 			</text>
 			<button label="?" name="WaterScaleAboveHelp"/>
 			<slider label="" name="WaterScaleAbove"/>
 			<text name="WaterScaleBelowText">
-				Dolna Refrakcja
+				Dolna refrakcja
 			</text>
 			<button label="?" name="WaterScaleBelowHelp"/>
 			<slider label="" name="WaterScaleBelow"/>
 			<text name="MaxAltText">
-				Mnożnik Rozmycia
+				Mnożnik rozmycia
 			</text>
 			<button label="?" name="WaterBlurMultiplierHelp"/>
 			<slider label="" name="WaterBlurMult"/>
 		</panel>
 		<panel label="OBRAZ" name="Waves">
 			<text name="BHText">
-				Kierunek Dużych Fal
+				Kierunek dużych fal
 			</text>
 			<button label="?" name="WaterWave1Help"/>
 			<text name="WaterWave1DirXText">
@@ -79,7 +79,7 @@
 			<slider label="" name="WaterWave1DirX"/>
 			<slider label="" name="WaterWave1DirY"/>
 			<text name="BHText2">
-				Kierunek Małych Fal
+				Kierunek małych fal
 			</text>
 			<button label="?" name="WaterWave2Help"/>
 			<text name="WaterWave2DirXText">
@@ -91,7 +91,7 @@
 			<slider label="" name="WaterWave2DirX"/>
 			<slider label="" name="WaterWave2DirY"/>
 			<text name="BHText3">
-				Mapa Normalnych
+				Mapa normalnych
 			</text>
 			<button label="?" name="WaterNormalMapHelp"/>
 			<texture_picker label="" name="WaterNormalMap"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml
index 42a67995f6b82480ff6bd44c41b27fffe0375b61..925295102e405522690007628ceb4c1c67c4e606 100644
--- a/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml
+++ b/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml
@@ -3,7 +3,7 @@
 	<button label="Zapisz" label_selected="Zapisz" name="Save"/>
 	<button label="Anuluj" label_selected="Anuluj" name="Cancel"/>
 	<text name="Save item as:">
-		Zapisz obiekt w mojej szafie jako:
+		Zapisz obiekt w mojej Szafie jako:
 	</text>
 	<line_editor name="name ed">
 		Nowe [DESC]
diff --git a/indra/newview/skins/default/xui/pl/floater_windlight_options.xml b/indra/newview/skins/default/xui/pl/floater_windlight_options.xml
index 6de121a180909ae2547cc209a5a238e0e2538c08..49e523fae8bc75a18af9ec3eba05ff2d7f3ac726 100644
--- a/indra/newview/skins/default/xui/pl/floater_windlight_options.xml
+++ b/indra/newview/skins/default/xui/pl/floater_windlight_options.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="WindLight floater" title="ZAAWANSOWANY EDYTOR NIEBA">
 	<text name="KeyFramePresetsText">
-		Ustawienia Nieba:
+		Ustawienia nieba:
 	</text>
 	<button label="Nowe" label_selected="Nowe" name="WLNewPreset"/>
 	<button label="Zapisz" label_selected="Zapisz" name="WLSavePreset"/>
 	<button label="Usuń" label_selected="Usuń" name="WLDeletePreset"/>
-	<button label="Edytor Cyklu Dnia" label_selected="Edytor Cyklu Dnia" name="WLDayCycleMenuButton"/>
+	<button label="Edytor cyklu dnia" label_selected="Edytor cyklu dnia" name="WLDayCycleMenuButton"/>
 	<tab_container name="WindLight Tabs">
 		<panel label="ATMOSFERA" name="Atmosphere">
 			<text name="BHText">
-				Horyzont Błękitu
+				Horyzont błękitu
 			</text>
 			<button label="?" name="WLBlueHorizonHelp"/>
 			<text name="BHText2">
@@ -30,12 +30,12 @@
 			<slider label="" name="WLBlueHorizonB"/>
 			<slider label="" name="WLBlueHorizonI"/>
 			<text name="BDensText">
-				Horyzont Zamglenia
+				Horyzont zamglenia
 			</text>
 			<button label="?" name="WLHazeHorizonHelp"/>
 			<slider label="" name="WLHazeHorizon"/>
 			<text name="BDensText2">
-				Gęstość Błękitu
+				Gęstość błękitu
 			</text>
 			<button label="?" name="WLBlueDensityHelp"/>
 			<text name="BHText6">
@@ -55,29 +55,29 @@
 			<slider label="" name="WLBlueDensityB"/>
 			<slider label="" name="WLBlueDensityI"/>
 			<text name="HDText">
-				Gęstość Zamglenia
+				Gęstość zamglenia
 			</text>
 			<button label="?" name="WLHazeDensityHelp"/>
 			<slider label="" name="WLHazeDensity"/>
 			<text name="DensMultText">
-				Mnożnik Gęsości
+				Mnożnik gęsości
 			</text>
 			<button label="?" name="WLDensityMultHelp"/>
 			<slider label="" name="WLDensityMult"/>
 			<text name="WLDistanceMultText">
-				Mnożnik Dystansu
+				Mnożnik dystansu
 			</text>
 			<button label="?" name="WLDistanceMultHelp"/>
 			<slider label="" name="WLDistanceMult"/>
 			<text name="MaxAltText">
-				Max Wysokość
+				Max wysokość
 			</text>
 			<button label="?" name="WLMaxAltitudeHelp"/>
 			<slider label="" name="WLMaxAltitude"/>
 		</panel>
 		<panel label="ŚWIATŁO" name="Lighting">
 			<text name="SLCText">
-				Kolor Słońca/Księżyca
+				Kolor słońca/księżyca
 			</text>
 			<button label="?" name="WLSunlightColorHelp"/>
 			<text name="BHText">
@@ -97,7 +97,7 @@
 			<slider label="" name="WLSunlightB"/>
 			<slider label="" name="WLSunlightI"/>
 			<text name="TODText">
-				Pozycja Słońca/Księżyca
+				Pozycja słońca/księżyca
 			</text>
 			<button label="?" name="WLTimeOfDayHelp"/>
 			<slider label="" name="WLSunAngle"/>
@@ -122,30 +122,30 @@
 			<slider label="" name="WLAmbientB"/>
 			<slider label="" name="WLAmbientI"/>
 			<text name="WLEastAngleText">
-				Pozycja Wschodu
+				Pozycja wschodu
 			</text>
 			<button label="?" name="WLEastAngleHelp"/>
 			<slider label="" name="WLEastAngle"/>
 			<text name="SunGlowText">
-				Blask Słońca
+				Blask słońca
 			</text>
 			<button label="?" name="WLSunGlowHelp"/>
 			<slider label="Ostrość" name="WLGlowB"/>
 			<slider label="Rozmiar" name="WLGlowR"/>
 			<text name="SceneGammaText">
-				Jasność Obrazu
+				Jasność obrazu
 			</text>
 			<button label="?" name="WLSceneGammaHelp"/>
 			<slider label="" name="WLGamma"/>
 			<text name="WLStarText">
-				Blask Gwiazd
+				Blask gwiazd
 			</text>
 			<button label="?" name="WLStarBrightnessHelp"/>
 			<slider label="" name="WLStarAlpha"/>
 		</panel>
 		<panel label="CHMURY" name="Clouds">
 			<text name="WLCloudColorText">
-				Kolor Chmur
+				Kolor chmur
 			</text>
 			<button label="?" name="WLCloudColorHelp"/>
 			<text name="BHText">
@@ -181,17 +181,17 @@
 			<slider label="" name="WLCloudY"/>
 			<slider label="" name="WLCloudDensity"/>
 			<text name="WLCloudCoverageText">
-				Pokrycie Chmur
+				Pokrycie chmur
 			</text>
 			<button label="?" name="WLCloudCoverageHelp"/>
 			<slider label="" name="WLCloudCoverage"/>
 			<text name="WLCloudScaleText">
-				Skala Chmur
+				Skala chmur
 			</text>
 			<button label="?" name="WLCloudScaleHelp"/>
 			<slider label="" name="WLCloudScale"/>
 			<text name="WLCloudDetailText">
-				Szczegóły (XY/Gęstość)
+				Szczegóły (XY/gęstość)
 			</text>
 			<button label="?" name="WLCloudDetailHelp"/>
 			<text name="BHText8">
@@ -207,18 +207,18 @@
 			<slider label="" name="WLCloudDetailY"/>
 			<slider label="" name="WLCloudDetailDensity"/>
 			<text name="WLCloudScrollXText">
-				Przewijanie Chmur X
+				Przewijanie chmur X
 			</text>
 			<button label="?" name="WLCloudScrollXHelp"/>
 			<check_box label="Zablokuj" name="WLCloudLockX"/>
 			<slider label="" name="WLCloudScrollX"/>
 			<text name="WLCloudScrollYText">
-				Przewijanie Chmur Y
+				Przewijanie chmur Y
 			</text>
 			<button label="?" name="WLCloudScrollYHelp"/>
 			<check_box label="Zablokuj" name="WLCloudLockY"/>
 			<slider label="" name="WLCloudScrollY"/>
-			<check_box label="Klasyczne Chmury" name="DrawClassicClouds"/>
+			<check_box label="Klasyczne chmury" name="DrawClassicClouds"/>
 			<button label="?" name="WLClassicCloudsHelp"/>
 		</panel>
 	</tab_container>
diff --git a/indra/newview/skins/default/xui/pl/floater_world_map.xml b/indra/newview/skins/default/xui/pl/floater_world_map.xml
index 13ad1bccc7d26b65d25708f52089b8a2bca446f1..95010e0b91b08646c334c7768a0b8296714157af 100644
--- a/indra/newview/skins/default/xui/pl/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/pl/floater_world_map.xml
@@ -20,10 +20,10 @@
 			Sprzedaż Posiadłości
 		</text>
 		<text name="by_owner_label">
-			przez właściciela
+			przez Właściciela
 		</text>
 		<text name="auction_label">
-			aukcja posiadłości
+			aukcja Posiadłości
 		</text>
 		<button name="Go Home" tool_tip="Teleportuj do mojego Miejsca Startowego"/>
 		<text name="Home_label">
diff --git a/indra/newview/skins/default/xui/pl/inspect_avatar.xml b/indra/newview/skins/default/xui/pl/inspect_avatar.xml
index 6a688391c0ddd21b3b0260bfe6e9c4abf247fd70..3ee0b976eb76d2670dd0c273cc7dbca85627192f 100644
--- a/indra/newview/skins/default/xui/pl/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/pl/inspect_avatar.xml
@@ -15,7 +15,7 @@
 	<button label="IM" name="im_btn"/>
 	<button label="Profil" name="view_profile_btn"/>
 	<panel name="moderator_panel">
-		<button label="Wyłącz Komunikację Głosową" name="disable_voice"/>
-		<button label="Włącz Komunikację Głosową" name="enable_voice"/>
+		<button label="Wyłącz komunikację głosową" name="disable_voice"/>
+		<button label="Włącz komunikację głosową" name="enable_voice"/>
 	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/inspect_group.xml b/indra/newview/skins/default/xui/pl/inspect_group.xml
index d434443794cb837c8497b6ef394e66dd057255be..0a2a62ce74b3cf084af8a9c8ae72ffb512db94c1 100644
--- a/indra/newview/skins/default/xui/pl/inspect_group.xml
+++ b/indra/newview/skins/default/xui/pl/inspect_group.xml
@@ -5,10 +5,10 @@
 -->
 <floater name="inspect_group">
 	<string name="PrivateGroup">
-		Grupa Prywatna
+		Grupa prywatna
 	</string>
 	<string name="FreeToJoin">
-		Wstęp Wolny
+		Wstęp wolny
 	</string>
 	<string name="CostToJoin">
 		L$[AMOUNT] by dołączyć
diff --git a/indra/newview/skins/default/xui/pl/inspect_object.xml b/indra/newview/skins/default/xui/pl/inspect_object.xml
index 822e28ea7e0ebbff634ab51a34d24befe2a018a0..2e15691463e10712dbcf3ce4fc6796bcaddd2000 100644
--- a/indra/newview/skins/default/xui/pl/inspect_object.xml
+++ b/indra/newview/skins/default/xui/pl/inspect_object.xml
@@ -21,13 +21,13 @@ właściciel [OWNER]
 		Dotknij
 	</string>
 	<string name="Sit">
-		Usiądź tu
+		Usiądź tutaj
 	</string>
 	<button label="Kup" name="buy_btn"/>
 	<button label="Zapłać" name="pay_btn"/>
 	<button label="Weź kopię" name="take_free_copy_btn"/>
 	<button label="Dotknij" name="touch_btn"/>
-	<button label="Usiądź tu" name="sit_btn"/>
+	<button label="Usiądź tutaj" name="sit_btn"/>
 	<button label="Otwórz" name="open_btn"/>
 	<icon name="secure_browsing" tool_tip="Zabezpiecz przeglÄ…danie"/>
 	<button label="Więcej" name="more_info_btn"/>
diff --git a/indra/newview/skins/default/xui/pl/language_settings.xml b/indra/newview/skins/default/xui/pl/language_settings.xml
index 71418d446ab9fa71c3512f7f3dc17b1ba1d423a2..debc451a338beee6b159e58ec5867a72af30345e 100644
--- a/indra/newview/skins/default/xui/pl/language_settings.xml
+++ b/indra/newview/skins/default/xui/pl/language_settings.xml
@@ -3,9 +3,9 @@
 <strings>
 
 	<!-- Locale Information -->
-	<string name="MicrosoftLocale">english</string>
-	<string name="DarwinLocale">C</string>
-	<string name="LinuxLocale">C</string>
+	<string name="MicrosoftLocale">polish</string>
+	<string name="DarwinLocale">pl_PL.UTF-8</string>
+	<string name="LinuxLocale">pl_PL.UTF-8</string>
 	
 	<!-- 
 	datetimeToCodes["wkday"]	= "%a";		// Thu
diff --git a/indra/newview/skins/default/xui/pl/menu_attachment_self.xml b/indra/newview/skins/default/xui/pl/menu_attachment_self.xml
index 1107a5d9d1c8c9436f8d34ca9df7ae78dce2cfa8..ff695be205b7a0475123501c0d840e0588d947ad 100644
--- a/indra/newview/skins/default/xui/pl/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/pl/menu_attachment_self.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Attachment Pie">
-	<menu_item_call label="Dotnij" name="Attachment Object Touch"/>
+	<menu_item_call label="Dotknij" name="Attachment Object Touch"/>
 	<menu_item_call label="Edytuj" name="Edit..."/>
 	<menu_item_call label="Odłącz" name="Detach"/>
 	<menu_item_call label="Opuść" name="Drop"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_bottomtray.xml b/indra/newview/skins/default/xui/pl/menu_bottomtray.xml
index 818dfc08aeb5f2c14b993843d59a27e38f6982b1..9fcf1b3440437c4c76611effdb4cdaa6598d8db9 100644
--- a/indra/newview/skins/default/xui/pl/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/pl/menu_bottomtray.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_camera_move_controls_menu">
-	<menu_item_check label="Przycisk Gesturek" name="ShowGestureButton"/>
+	<menu_item_check label="Przycisk Gestur" name="ShowGestureButton"/>
 	<menu_item_check label="Przycisk Ruchu" name="ShowMoveButton"/>
 	<menu_item_check label="Przycisk Widoku" name="ShowCameraButton"/>
 	<menu_item_check label="Przycisk Zdjęć" name="ShowSnapshotButton"/>
@@ -8,5 +8,5 @@
 	<menu_item_call label="Kopiuj" name="NearbyChatBar_Copy"/>
 	<menu_item_call label="Wklej" name="NearbyChatBar_Paste"/>
 	<menu_item_call label="Usuń" name="NearbyChatBar_Delete"/>
-	<menu_item_call label="Zaznacz Wszystko" name="NearbyChatBar_Select_All"/>
+	<menu_item_call label="Zaznacz wszystko" name="NearbyChatBar_Select_All"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_favorites.xml b/indra/newview/skins/default/xui/pl/menu_favorites.xml
index 0a0b54a54812eafbe1464e4285696f42cd5ee7c3..cbacaf4bebafdcb6970c1b91878a9817c124a333 100644
--- a/indra/newview/skins/default/xui/pl/menu_favorites.xml
+++ b/indra/newview/skins/default/xui/pl/menu_favorites.xml
@@ -3,7 +3,7 @@
 	<menu_item_call label="Teleportuj" name="Teleport To Landmark"/>
 	<menu_item_call label="Zobacz/Edytuj Ulubione Miejsce" name="Landmark Open"/>
 	<menu_item_call label="Kopiuj SLurl" name="Copy slurl"/>
-	<menu_item_call label="Pokaż na Mapie" name="Show On Map"/>
+	<menu_item_call label="Pokaż na mapie" name="Show On Map"/>
 	<menu_item_call label="Kopiuj" name="Landmark Copy"/>
 	<menu_item_call label="Wklej" name="Landmark Paste"/>
 	<menu_item_call label="Usuń" name="Delete"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml b/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml
index 1c2687338d30ab8c57bdc80e7da0c6f0d5c2df98..d30f5a4d3fc946c216740d3ff4ab81f41fb946c0 100644
--- a/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/pl/menu_hide_navbar.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_navbar_menu">
-	<menu_item_check label="Pokaż Pasek Nawigacji" name="ShowNavbarNavigationPanel"/>
-	<menu_item_check label="Pokaż Pasek Ulubionych" name="ShowNavbarFavoritesPanel"/>
+	<menu_item_check label="Pokaż pasek Nawigacji" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="Pokaż pasek Ulubionych" name="ShowNavbarFavoritesPanel"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_im_well_button.xml b/indra/newview/skins/default/xui/pl/menu_im_well_button.xml
index 4962ffc356614e321734982e3d42ddaf809226ab..207bc2211b30df0242c54f17dfc33ba95794f5f2 100644
--- a/indra/newview/skins/default/xui/pl/menu_im_well_button.xml
+++ b/indra/newview/skins/default/xui/pl/menu_im_well_button.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="IM Well Button Context Menu">
-	<menu_item_call label="Zamknij Wszystkie" name="Close All"/>
+	<menu_item_call label="Zamknij wszystkie" name="Close All"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml
index 925272d5ee0ecb72899ef34e8e30760fea814bef..4ead44878a3f23d27dda5e640c3fe4ae454a19aa 100644
--- a/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml
+++ b/indra/newview/skins/default/xui/pl/menu_imchiclet_adhoc.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="IMChiclet AdHoc Menu">
-	<menu_item_call label="Zakończ Rozmowę" name="End Session"/>
+	<menu_item_call label="Zakończ rozmowę" name="End Session"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml
index dc232c096d1ef59934a13ccc63e14a1ef1bde813..c53f72c043a7ecf22ce614384ebf813287ec8b0b 100644
--- a/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml
+++ b/indra/newview/skins/default/xui/pl/menu_imchiclet_group.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="IMChiclet Group Menu">
 	<menu_item_call label="O Grupie" name="Show Profile"/>
-	<menu_item_call label="Pokaż Sesję" name="Chat"/>
-	<menu_item_call label="Zakończ Rozmowę" name="End Session"/>
+	<menu_item_call label="Pokaż sesję" name="Chat"/>
+	<menu_item_call label="Zakończ rozmowę" name="End Session"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml
index df991cbc36fcf2922af2933f8159128c34a43def..c0c812c0a771e948c4c39a100ef6b1d07a36146f 100644
--- a/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml
+++ b/indra/newview/skins/default/xui/pl/menu_imchiclet_p2p.xml
@@ -2,6 +2,6 @@
 <menu name="IMChiclet P2P Menu">
 	<menu_item_call label="Zobacz Profil" name="Show Profile"/>
 	<menu_item_call label="Dodaj Znajomość" name="Add Friend"/>
-	<menu_item_call label="Pokaż Sesję" name="Send IM"/>
-	<menu_item_call label="Zakończ Rozmowę" name="End Session"/>
+	<menu_item_call label="Pokaż sesję" name="Send IM"/>
+	<menu_item_call label="Zakończ rozmowę" name="End Session"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml
index f6ac02f91c77e5d13d4d4a32dc932d43615fcf98..325072d0fb88465a1be16a6abebe7bc97c015035 100644
--- a/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/pl/menu_inspect_avatar_gear.xml
@@ -12,7 +12,7 @@
 	<menu_item_call label="Unieruchom" name="freeze"/>
 	<menu_item_call label="Wyrzuć" name="eject"/>
 	<menu_item_call label="Debug" name="debug"/>
-	<menu_item_call label="Znajdź na Mapie" name="find_on_map"/>
+	<menu_item_call label="Znajdź na mapie" name="find_on_map"/>
 	<menu_item_call label="Przybliż" name="zoom_in"/>
 	<menu_item_call label="Zapłać" name="pay"/>
 	<menu_item_call label="Udostępnij" name="share"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml
index 988c31a6e4906b5d2c350b2be78e05051066e6ff..2c56d2ca3d1cefc10d79e6e1def5f82f608e3134 100644
--- a/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml
+++ b/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml
@@ -5,7 +5,7 @@
 	<menu_item_call label="Zapłać" name="pay"/>
 	<menu_item_call label="Kup" name="buy"/>
 	<menu_item_call label="Weź" name="take"/>
-	<menu_item_call label="Weź Kopię" name="take_copy"/>
+	<menu_item_call label="Weź kopię" name="take_copy"/>
 	<menu_item_call label="Otwórz" name="open"/>
 	<menu_item_call label="Edytuj" name="edit"/>
 	<menu_item_call label="Ubierz" name="wear"/>
@@ -13,5 +13,5 @@
 	<menu_item_call label="Zablokuj" name="block"/>
 	<menu_item_call label="Przybliż" name="zoom_in"/>
 	<menu_item_call label="Usuń" name="remove"/>
-	<menu_item_call label="Więcej Informacji" name="more_info"/>
+	<menu_item_call label="Więcej informacji" name="more_info"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_inventory.xml b/indra/newview/skins/default/xui/pl/menu_inventory.xml
index 30fb703584c26f560fa10a7275c9e832b1c80e16..7fe9da3c0c89ef5fb34899c14c1fc21a713a21d9 100644
--- a/indra/newview/skins/default/xui/pl/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/pl/menu_inventory.xml
@@ -4,32 +4,32 @@
 	<menu_item_call label="Otwórz" name="Task Open"/>
 	<menu_item_call label="Odtwarzaj" name="Task Play"/>
 	<menu_item_call label="Właściwości" name="Task Properties"/>
-	<menu_item_call label="Zmień Nazwę" name="Task Rename"/>
+	<menu_item_call label="Zmień nazwę" name="Task Rename"/>
 	<menu_item_call label="Usuń" name="Task Remove"/>
 	<menu_item_call label="Opróżnij Kosz" name="Empty Trash"/>
 	<menu_item_call label="Opróżnij Folder Zgubione i Odnalezione" name="Empty Lost And Found"/>
-	<menu_item_call label="Nowy Folder" name="New Folder"/>
-	<menu_item_call label="Nowy Skrypt" name="New Script"/>
-	<menu_item_call label="Nowa Nota" name="New Note"/>
-	<menu_item_call label="Nowy Gest" name="New Gesture"/>
+	<menu_item_call label="Nowy folder" name="New Folder"/>
+	<menu_item_call label="Nowy skrypt" name="New Script"/>
+	<menu_item_call label="Nowa nota" name="New Note"/>
+	<menu_item_call label="Nowy gest" name="New Gesture"/>
 	<menu label="Nowe Ubranie" name="New Clothes">
-		<menu_item_call label="Nowa Koszulka" name="New Shirt"/>
-		<menu_item_call label="Nowe Spodnie" name="New Pants"/>
-		<menu_item_call label="Nowe Buty" name="New Shoes"/>
-		<menu_item_call label="Nowe Skarpety" name="New Socks"/>
-		<menu_item_call label="Nowa Kurtka" name="New Jacket"/>
-		<menu_item_call label="Nowa Spódnica" name="New Skirt"/>
-		<menu_item_call label="Nowe Rękawiczki" name="New Gloves"/>
-		<menu_item_call label="Nowy Podkoszulek" name="New Undershirt"/>
-		<menu_item_call label="Nowa Bielizna" name="New Underpants"/>
-		<menu_item_call label="Nowa Maska Przezroczysta" name="New Alpha Mask"/>
-		<menu_item_call label="Nowy Tatuaż" name="New Tattoo"/>
+		<menu_item_call label="Nowa koszulka" name="New Shirt"/>
+		<menu_item_call label="Nowe spodnie" name="New Pants"/>
+		<menu_item_call label="Nowe buty" name="New Shoes"/>
+		<menu_item_call label="Nowe skarpety" name="New Socks"/>
+		<menu_item_call label="Nowa kurtka" name="New Jacket"/>
+		<menu_item_call label="Nowa spódnica" name="New Skirt"/>
+		<menu_item_call label="Nowe rękawiczki" name="New Gloves"/>
+		<menu_item_call label="Nowy podkoszulek" name="New Undershirt"/>
+		<menu_item_call label="Nowa bielizna" name="New Underpants"/>
+		<menu_item_call label="Nowa maska Alpha" name="New Alpha Mask"/>
+		<menu_item_call label="Nowy tatuaż" name="New Tattoo"/>
 	</menu>
 	<menu label="Nowa Część Ciała" name="New Body Parts">
-		<menu_item_call label="Nowy Kształt" name="New Shape"/>
-		<menu_item_call label="Nowa Skórka" name="New Skin"/>
-		<menu_item_call label="Nowe Włosy" name="New Hair"/>
-		<menu_item_call label="Nowe Oczy" name="New Eyes"/>
+		<menu_item_call label="Nowy kształt" name="New Shape"/>
+		<menu_item_call label="Nowa skórka" name="New Skin"/>
+		<menu_item_call label="Nowe włosy" name="New Hair"/>
+		<menu_item_call label="Nowe oczy" name="New Eyes"/>
 	</menu>
 	<menu label="Zmień Czcionkę" name="Change Type">
 		<menu_item_call label="Domyślna" name="Default"/>
@@ -46,31 +46,31 @@
 	<menu_item_call label="Teleportuj" name="Landmark Open"/>
 	<menu_item_call label="Otwórz" name="Animation Open"/>
 	<menu_item_call label="Otwórz" name="Sound Open"/>
-	<menu_item_call label="Zmień Strój" name="Replace Outfit"/>
-	<menu_item_call label="Dodaj do Stroju" name="Add To Outfit"/>
-	<menu_item_call label="Usuń Obiekt" name="Purge Item"/>
-	<menu_item_call label="Przywróć Obiekt" name="Restore Item"/>
+	<menu_item_call label="Zmień strój" name="Replace Outfit"/>
+	<menu_item_call label="Dodaj do stroju" name="Add To Outfit"/>
+	<menu_item_call label="Usuń obiekt" name="Purge Item"/>
+	<menu_item_call label="Przywróć obiekt" name="Restore Item"/>
 	<menu_item_call label="Otwórz" name="Open"/>
 	<menu_item_call label="Właściwości" name="Properties"/>
-	<menu_item_call label="Zmień Nazwę" name="Rename"/>
-	<menu_item_call label="Kopiuj Dane UUID" name="Copy Asset UUID"/>
+	<menu_item_call label="Zmień nazwę" name="Rename"/>
+	<menu_item_call label="Kopiuj dane UUID" name="Copy Asset UUID"/>
 	<menu_item_call label="Kopiuj" name="Copy"/>
 	<menu_item_call label="Wklej" name="Paste"/>
-	<menu_item_call label="Wklej jako Link" name="Paste As Link"/>
+	<menu_item_call label="Wklej jako link" name="Paste As Link"/>
 	<menu_item_call label="Usuń" name="Delete"/>
 	<menu_item_call label="Skasuj Folder Systemu" name="Delete System Folder"/>
-	<menu_item_call label="Rozpocznij KonferencjÄ™ CzatowÄ…" name="Conference Chat Folder"/>
+	<menu_item_call label="Rozpocznij konferencjÄ™ czatowÄ…" name="Conference Chat Folder"/>
 	<menu_item_call label="Odtwarzaj" name="Sound Play"/>
 	<menu_item_call label="O Miejscu" name="About Landmark"/>
-	<menu_item_call label="Używaj w Świecie" name="Animation Play"/>
-	<menu_item_call label="Odtwarzaj Lokalnie" name="Animation Audition"/>
+	<menu_item_call label="Używaj in-world" name="Animation Play"/>
+	<menu_item_call label="Odtwarzaj lokalnie" name="Animation Audition"/>
 	<menu_item_call label="Wyślij IM" name="Send Instant Message"/>
-	<menu_item_call label="Zaoferuj TeleportacjÄ™..." name="Offer Teleport..."/>
-	<menu_item_call label="Rozpocznij KonferencjÄ™ CzatowÄ…" name="Conference Chat"/>
+	<menu_item_call label="Teleportuj..." name="Offer Teleport..."/>
+	<menu_item_call label="Rozpocznij konferencjÄ™ czatowÄ…" name="Conference Chat"/>
 	<menu_item_call label="Aktywuj" name="Activate"/>
 	<menu_item_call label="Deaktywuj" name="Deactivate"/>
 	<menu_item_call label="Zapisz jako" name="Save As"/>
-	<menu_item_call label="Odłącz od Siebie" name="Detach From Yourself"/>
+	<menu_item_call label="Odłącz od siebie" name="Detach From Yourself"/>
 	<menu_item_call label="Ubierz" name="Object Wear"/>
 	<menu label="Dołącz do" name="Attach To"/>
 	<menu label="Dołącz do Załączników HUD" name="Attach To HUD"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_inventory_add.xml b/indra/newview/skins/default/xui/pl/menu_inventory_add.xml
index 5b8c5426dd7174261ae8011a84acae7fd7029352..b4d85c2c5cd343e52bb3533e9477df7d67ec6c1c 100644
--- a/indra/newview/skins/default/xui/pl/menu_inventory_add.xml
+++ b/indra/newview/skins/default/xui/pl/menu_inventory_add.xml
@@ -1,32 +1,32 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_inventory_add">
 	<menu label="Załaduj" name="upload">
-		<menu_item_call label="Obraz (L$[COST])..." name="Upload Image"/>
-		<menu_item_call label="Dźwięk (L$[COST])..." name="Upload Sound"/>
-		<menu_item_call label="AnimacjÄ™ (L$[COST])..." name="Upload Animation"/>
-		<menu_item_call label="Zbiór Plików (L$[COST] za jeden plik)..." name="Bulk Upload"/>
+		<menu_item_call label="obraz (L$[COST])..." name="Upload Image"/>
+		<menu_item_call label="dźwięk (L$[COST])..." name="Upload Sound"/>
+		<menu_item_call label="animacjÄ™ (L$[COST])..." name="Upload Animation"/>
+		<menu_item_call label="zbiór plików (L$[COST] za jeden plik)..." name="Bulk Upload"/>
 	</menu>
-	<menu_item_call label="Nowy Folder" name="New Folder"/>
-	<menu_item_call label="Nowy Skrypt" name="New Script"/>
-	<menu_item_call label="Nowa Nota" name="New Note"/>
-	<menu_item_call label="Nowa Gesturka" name="New Gesture"/>
+	<menu_item_call label="Nowy folder" name="New Folder"/>
+	<menu_item_call label="Nowy skrypt" name="New Script"/>
+	<menu_item_call label="Nowa nota" name="New Note"/>
+	<menu_item_call label="Nowy gest" name="New Gesture"/>
 	<menu label="Nowe Ubranie" name="New Clothes">
-		<menu_item_call label="Nowa Koszulka" name="New Shirt"/>
-		<menu_item_call label="Nowe Spodnie" name="New Pants"/>
-		<menu_item_call label="Nowe Buty" name="New Shoes"/>
-		<menu_item_call label="Nowe Skarpetki" name="New Socks"/>
-		<menu_item_call label="Nowa Kurtka" name="New Jacket"/>
-		<menu_item_call label="Nowa Spódnica" name="New Skirt"/>
-		<menu_item_call label="Nowe Rękawiczki" name="New Gloves"/>
-		<menu_item_call label="Nowy Podkoszulek" name="New Undershirt"/>
-		<menu_item_call label="Nowa Bielizna" name="New Underpants"/>
-		<menu_item_call label="Nowe Ubranie Przezroczyste" name="New Alpha"/>
-		<menu_item_call label="Nowy Tatuaż" name="New Tattoo"/>
+		<menu_item_call label="Nowa koszulka" name="New Shirt"/>
+		<menu_item_call label="Nowe spodnie" name="New Pants"/>
+		<menu_item_call label="Nowe buty" name="New Shoes"/>
+		<menu_item_call label="Nowe skarpetki" name="New Socks"/>
+		<menu_item_call label="Nowa kurtka" name="New Jacket"/>
+		<menu_item_call label="Nowa spódnica" name="New Skirt"/>
+		<menu_item_call label="Nowe rękawiczki" name="New Gloves"/>
+		<menu_item_call label="Nowy podkoszulek" name="New Undershirt"/>
+		<menu_item_call label="Nowa bielizna" name="New Underpants"/>
+		<menu_item_call label="Nowe ubranie Przezroczyste" name="New Alpha"/>
+		<menu_item_call label="Nowy tatuaż" name="New Tattoo"/>
 	</menu>
 	<menu label="Nowa Część Ciała" name="New Body Parts">
-		<menu_item_call label="Nowy Kształt" name="New Shape"/>
-		<menu_item_call label="Nowa Skórka" name="New Skin"/>
-		<menu_item_call label="Nowe Włosy" name="New Hair"/>
-		<menu_item_call label="Nowe Oczy" name="New Eyes"/>
+		<menu_item_call label="Nowy kształt" name="New Shape"/>
+		<menu_item_call label="Nowa skórka" name="New Skin"/>
+		<menu_item_call label="Nowe włosy" name="New Hair"/>
+		<menu_item_call label="Nowe oczy" name="New Eyes"/>
 	</menu>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml
index 8f5f94a02f9ac746f619d71cc80ecac179172a38..2ec3741682683b02995ef684c30e0a257bb08149 100644
--- a/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/pl/menu_inventory_gear_default.xml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_gear_default">
-	<menu_item_call label="Nowe Okno Szafy" name="new_window"/>
-	<menu_item_call label="Porządkuj Według Nazwy" name="sort_by_name"/>
-	<menu_item_call label="Porządkuj Według Daty" name="sort_by_recent"/>
-	<menu_item_call label="Pokaż Filtry" name="show_filters"/>
-	<menu_item_call label="Zresetuj Filtry" name="reset_filters"/>
-	<menu_item_call label="Zamknij Wszystkie Foldery" name="close_folders"/>
+	<menu_item_call label="Nowe okno Szafy" name="new_window"/>
+	<menu_item_call label="Porządkuj według nazwy" name="sort_by_name"/>
+	<menu_item_call label="Porządkuj według daty" name="sort_by_recent"/>
+	<menu_item_call label="Pokaż filtry" name="show_filters"/>
+	<menu_item_call label="Zresetuj filtry" name="reset_filters"/>
+	<menu_item_call label="Zamknij wszystkie foldery" name="close_folders"/>
 	<menu_item_call label="Opróżnij Kosz" name="empty_trash"/>
 	<menu_item_call label="Opróżnij Zagubione i Odnalezione" name="empty_lostnfound"/>
-	<menu_item_call label="Zapisz TeksturÄ™ Jako" name="Save Texture As"/>
-	<menu_item_call label="Znajdź Oryginał" name="Find Original"/>
-	<menu_item_call label="Znajdź Wszystkie Linki" name="Find All Links"/>
+	<menu_item_call label="Zapisz teksturÄ™ jako" name="Save Texture As"/>
+	<menu_item_call label="Znajdź oryginał" name="Find Original"/>
+	<menu_item_call label="Znajdź wszystkie linki" name="Find All Links"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_land.xml b/indra/newview/skins/default/xui/pl/menu_land.xml
index 2c89b43525a836d31fd50a20fe7f2711162622b4..1e1ce73089c90b1d5a34530e258434364cdbb300 100644
--- a/indra/newview/skins/default/xui/pl/menu_land.xml
+++ b/indra/newview/skins/default/xui/pl/menu_land.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Land Pie">
 	<menu_item_call label="O Posiadłości" name="Place Information..."/>
-	<menu_item_call label="Usiądź Tutaj" name="Sit Here"/>
+	<menu_item_call label="Usiądź tutaj" name="Sit Here"/>
 	<menu_item_call label="Kup Posiadłość" name="Land Buy"/>
-	<menu_item_call label="Kup Wstęp" name="Land Buy Pass"/>
+	<menu_item_call label="Kup przepustkÄ™" name="Land Buy Pass"/>
 	<menu_item_call label="Buduj" name="Create"/>
-	<menu_item_call label="Edytuj Teren" name="Edit Terrain"/>
+	<menu_item_call label="Edytuj teren" name="Edit Terrain"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_landmark.xml b/indra/newview/skins/default/xui/pl/menu_landmark.xml
index 8cd7e03bf1ba588f27b1718c4b0edbca8d140522..aa5808390c4d7a3a6c1ba7e475b6b383782da4d0 100644
--- a/indra/newview/skins/default/xui/pl/menu_landmark.xml
+++ b/indra/newview/skins/default/xui/pl/menu_landmark.xml
@@ -3,5 +3,5 @@
 	<menu_item_call label="Kopiuj SLurl" name="copy"/>
 	<menu_item_call label="Usuń" name="delete"/>
 	<menu_item_call label="Utwórz" name="pick"/>
-	<menu_item_call label="Dodaj do Paska Ulubionych" name="add_to_favbar"/>
+	<menu_item_call label="Dodaj do paska Ulubionych" name="add_to_favbar"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_login.xml b/indra/newview/skins/default/xui/pl/menu_login.xml
index be7c8c2102deb9b9c0f8b1a857758726f6f7c741..2673f5c27136340062b5ec46c2cce52cb5574579 100644
--- a/indra/newview/skins/default/xui/pl/menu_login.xml
+++ b/indra/newview/skins/default/xui/pl/menu_login.xml
@@ -2,7 +2,7 @@
 <menu_bar name="Login Menu">
 	<menu label="Ja" name="File">
 		<menu_item_call label="Ustawienia" name="Preferences..."/>
-		<menu_item_call label="Wyłącz Program" name="Quit"/>
+		<menu_item_call label="Wyłącz program" name="Quit"/>
 	</menu>
 	<menu label="Pomoc" name="Help">
 		<menu_item_call label="[SECOND_LIFE]: Pomoc" name="Second Life Help"/>
@@ -16,15 +16,15 @@
 			<menu_item_call label="Wklej" name="Paste"/>
 			<menu_item_call label="Usuń" name="Delete"/>
 			<menu_item_call label="Powiel" name="Duplicate"/>
-			<menu_item_call label="Zaznacz Wszystko" name="Select All"/>
+			<menu_item_call label="Zaznacz wszystko" name="Select All"/>
 			<menu_item_call label="Odznacz" name="Deselect"/>
 		</menu>
-		<menu_item_call label="Ustawienia Debugowania" name="Debug Settings"/>
-		<menu_item_call label="Ustawienia UI/Kolor" name="UI/Color Settings"/>
+		<menu_item_call label="Ustawienia debugowania" name="Debug Settings"/>
+		<menu_item_call label="Ustawienia UI/kolor" name="UI/Color Settings"/>
 		<menu label="UI Testy" name="UI Tests"/>
-		<menu_item_call label="Ustaw Rozmiar Interfejsu..." name="Set Window Size..."/>
+		<menu_item_call label="Ustaw rozmiar interfejsu..." name="Set Window Size..."/>
 		<menu_item_call label="Wyświetl TOS" name="TOS"/>
-		<menu_item_call label="Wyświetl Wiadomość Krytyczną" name="Critical"/>
-		<menu_item_call label="Test PrzeglÄ…darki Internetowej" name="Web Browser Test"/>
+		<menu_item_call label="Wyświetl wiadomość krytyczną" name="Critical"/>
+		<menu_item_call label="Test przeglÄ…darki internetowej" name="Web Browser Test"/>
 	</menu>
 </menu_bar>
diff --git a/indra/newview/skins/default/xui/pl/menu_mini_map.xml b/indra/newview/skins/default/xui/pl/menu_mini_map.xml
index dbebeadfbe29eb02259d28893f312e51c12cd168..94e4c91abb4026a62f6245f2b5f7598ca245d1ef 100644
--- a/indra/newview/skins/default/xui/pl/menu_mini_map.xml
+++ b/indra/newview/skins/default/xui/pl/menu_mini_map.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="Popup">
-	<menu_item_call label="Zoom Blisko" name="Zoom Close"/>
-	<menu_item_call label="Zoom Åšrednio" name="Zoom Medium"/>
-	<menu_item_call label="Zoom Daleko" name="Zoom Far"/>
-	<menu_item_check label="Obróć Mapę" name="Rotate Map"/>
+	<menu_item_call label="Zoom blisko" name="Zoom Close"/>
+	<menu_item_call label="Zoom średnio" name="Zoom Medium"/>
+	<menu_item_call label="Zoom daleko" name="Zoom Far"/>
+	<menu_item_check label="Obróć mapę" name="Rotate Map"/>
 	<menu_item_call label="Zatrzymaj" name="Stop Tracking"/>
 	<menu_item_call label="Mapa Åšwiata" name="World Map"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_navbar.xml b/indra/newview/skins/default/xui/pl/menu_navbar.xml
index 8d84f3e7645bd5b51de805908882bf13c8c9760c..f38b805ee22d78668c9371edb398574f280c004c 100644
--- a/indra/newview/skins/default/xui/pl/menu_navbar.xml
+++ b/indra/newview/skins/default/xui/pl/menu_navbar.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="Navbar Menu">
-	<menu_item_check label="Pokaż Współrzędne" name="Show Coordinates"/>
-	<menu_item_check label="Pokaż Właściwości Posiadłości" name="Show Parcel Properties"/>
+	<menu_item_check label="Pokaż współrzędne" name="Show Coordinates"/>
+	<menu_item_check label="Pokaż właściwości Posiadłości" name="Show Parcel Properties"/>
 	<menu_item_call label="Ulubione Miejsce" name="Landmark"/>
 	<menu_item_call label="Wytnij" name="Cut"/>
 	<menu_item_call label="Kopiuj" name="Copy"/>
 	<menu_item_call label="Wklej" name="Paste"/>
 	<menu_item_call label="Usuń" name="Delete"/>
-	<menu_item_call label="Zaznacz Wszystko" name="Select All"/>
+	<menu_item_call label="Zaznacz wszystko" name="Select All"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml b/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml
index 78b8c0a4fcad5e08ff3950101df0865718f7d829..fe5bc6ba6f39a545357459212609220118016daf 100644
--- a/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/pl/menu_nearby_chat.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="NearBy Chat Menu">
-	<menu_item_call label="Pokaż Osoby w Pobliżu..." name="nearby_people"/>
-	<menu_item_check label="Pokaż Zablokowany Tekst" name="muted_text"/>
-	<menu_item_check label="Wyświetlaj Ikonki Znajomych" name="show_buddy_icons"/>
-	<menu_item_check label="Wyświetlaj Imiona" name="show_names"/>
-	<menu_item_check label="Wyświetlaj Ikonki i Imiona" name="show_icons_and_names"/>
-	<menu_item_call label="Rozmiar Czcionki" name="font_size"/>
+	<menu_item_call label="Pokaż osoby w pobliżu..." name="nearby_people"/>
+	<menu_item_check label="Pokaż zablokowany tekst" name="muted_text"/>
+	<menu_item_check label="Wyświetlaj ikonki znajomych" name="show_buddy_icons"/>
+	<menu_item_check label="Wyświetlaj imiona" name="show_names"/>
+	<menu_item_check label="Wyświetlaj ikonki i imiona" name="show_icons_and_names"/>
+	<menu_item_call label="Rozmiar czcionki" name="font_size"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_object.xml b/indra/newview/skins/default/xui/pl/menu_object.xml
index d71611ce912e7878f64aefa64f2ff4078c51d9ed..763b120f89bb1cc75dde7ca4ce0e1b7f7c28a6ca 100644
--- a/indra/newview/skins/default/xui/pl/menu_object.xml
+++ b/indra/newview/skins/default/xui/pl/menu_object.xml
@@ -4,7 +4,7 @@
 	<menu_item_call label="Edytuj" name="Edit..."/>
 	<menu_item_call label="Buduj" name="Build"/>
 	<menu_item_call label="Otwórz" name="Open"/>
-	<menu_item_call label="Usiądź Tutaj" name="Object Sit"/>
+	<menu_item_call label="Usiądź tutaj" name="Object Sit"/>
 	<menu_item_call label="Wstań" name="Object Stand Up"/>
 	<menu_item_call label="Sprawdź" name="Object Inspect"/>
 	<menu_item_call label="Przybliż" name="Zoom In"/>
@@ -21,7 +21,7 @@
 	</context_menu>
 	<menu_item_call label="Kup" name="Pie Object Bye"/>
 	<menu_item_call label="Weź" name="Pie Object Take"/>
-	<menu_item_call label="Weź Kopię" name="Take Copy"/>
+	<menu_item_call label="Weź kopię" name="Take Copy"/>
 	<menu_item_call label="Zapłać" name="Pay..."/>
 	<menu_item_call label="Kup" name="Buy..."/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_participant_list.xml b/indra/newview/skins/default/xui/pl/menu_participant_list.xml
index 9b60b17ba80dc680ca545c327bdd4f7c029f4dab..079b8558da701859cb4c8022d7a09b5e38b012ab 100644
--- a/indra/newview/skins/default/xui/pl/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/pl/menu_participant_list.xml
@@ -8,8 +8,8 @@
 	<menu_item_call label="Zadzwoń" name="Call"/>
 	<menu_item_call label="Udostępnij" name="Share"/>
 	<menu_item_call label="Zapłać" name="Pay"/>
-	<menu_item_check label="Zablokuj Głos" name="Block/Unblock"/>
-	<menu_item_check label="Zablokuj Tekst" name="MuteText"/>
+	<menu_item_check label="Zablokuj głos" name="Block/Unblock"/>
+	<menu_item_check label="Zablokuj tekst" name="MuteText"/>
 	<context_menu label="Opcje Moderatora &gt;" name="Moderator Options">
 		<menu_item_check label="Czat/IM dozwolony" name="AllowTextChat"/>
 		<menu_item_call label="Wycisz tego uczestnika" name="ModerateVoiceMuteSelected"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml
index 0043030035c8561c1ca2503e252f0d0672bea1ec..9c33fad00f094313e3eece0726ac92f1ad3979a5 100644
--- a/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml
+++ b/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_group_plus">
-	<menu_item_check label="Porządkuj Według Nazwy" name="sort_name"/>
-	<menu_item_check label="Porządkuj Według Statusu" name="sort_status"/>
-	<menu_item_check label="Wyświetlaj Ikonki" name="view_icons"/>
-	<menu_item_call label="Pokaż Zablokowanych Rezydentów &amp; Obiekty" name="show_blocked_list"/>
+	<menu_item_check label="Porządkuj według nazwy" name="sort_name"/>
+	<menu_item_check label="Porządkuj według statusu" name="sort_status"/>
+	<menu_item_check label="Wyświetlaj ikonki" name="view_icons"/>
+	<menu_item_call label="Pokaż zablokowanych Rezydentów &amp; obiekty" name="show_blocked_list"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml
index f661cfeba0a5f98581a3d9f559504585ec71b063..4be60d9b8330300430e155bf546cee83c7ddded2 100644
--- a/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml
+++ b/indra/newview/skins/default/xui/pl/menu_people_groups_view_sort.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_group_plus">
-	<menu_item_check label="Wyświetlaj Ikonki Grupy" name="Display Group Icons"/>
-	<menu_item_call label="Opuść Zaznaczone Grupy" name="Leave Selected Group"/>
+	<menu_item_check label="Wyświetlaj ikonki Grupy" name="Display Group Icons"/>
+	<menu_item_call label="Opuść zaznaczone Grupy" name="Leave Selected Group"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby.xml
index fcba806e4539e40b4588475d75c0d4490733e48d..afe3a5200b8c60cb0181620d583f7e0e23958a7a 100644
--- a/indra/newview/skins/default/xui/pl/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/pl/menu_people_nearby.xml
@@ -2,7 +2,7 @@
 <context_menu name="Avatar Context Menu">
 	<menu_item_call label="Zobacz Profil" name="View Profile"/>
 	<menu_item_call label="Dodaj Znajomość" name="Add Friend"/>
-	<menu_item_call label="Usuń z listy znajomych" name="Remove Friend"/>
+	<menu_item_call label="Usuń z listy Znajomych" name="Remove Friend"/>
 	<menu_item_call label="IM" name="IM"/>
 	<menu_item_call label="Zadzwoń" name="Call"/>
 	<menu_item_call label="Mapa" name="Map"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml
index 9e5f1a5917dcf32950dd3354862c4c34d0d97a35..8ec3820f84e888c5bc13ee47df866d53d55997b2 100644
--- a/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml
+++ b/indra/newview/skins/default/xui/pl/menu_people_nearby_view_sort.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_group_plus">
-	<menu_item_check label="Porządkuj Według Ostatnich Rozmówców" name="sort_by_recent_speakers"/>
-	<menu_item_check label="Porządkuj Według Nazwy" name="sort_name"/>
-	<menu_item_check label="Porządkuj Według Odległości" name="sort_distance"/>
-	<menu_item_check label="Wyświetlaj Ikonki" name="view_icons"/>
-	<menu_item_call label="Pokaż Zablokowanych Rezydentów &amp; Obiekty" name="show_blocked_list"/>
+	<menu_item_check label="Porządkuj według ostatnich rozmówców" name="sort_by_recent_speakers"/>
+	<menu_item_check label="Porządkuj według nazwy" name="sort_name"/>
+	<menu_item_check label="Porządkuj według odległości" name="sort_distance"/>
+	<menu_item_check label="Wyświetlaj ikonki" name="view_icons"/>
+	<menu_item_call label="Pokaż zablokowanych Rezydentów &amp; obiekty" name="show_blocked_list"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml
index 418b67bce8b8a3bfb3e7c8ce6bd5b46103ea8851..b474a556bdad38e6f19fa4c2892a3ef251507b53 100644
--- a/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml
+++ b/indra/newview/skins/default/xui/pl/menu_people_recent_view_sort.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_group_plus">
-	<menu_item_check label="Porządkuj Według Daty" name="sort_most"/>
-	<menu_item_check label="Porządkuj Według Nazwy" name="sort_name"/>
-	<menu_item_check label="Wyświetlaj Ikonki" name="view_icons"/>
-	<menu_item_call label="Pokaż Zablokowanych Rezydentów &amp; Obiekty" name="show_blocked_list"/>
+	<menu_item_check label="Porządkuj według daty" name="sort_most"/>
+	<menu_item_check label="Porządkuj według nazwy" name="sort_name"/>
+	<menu_item_check label="Wyświetlaj ikonki" name="view_icons"/>
+	<menu_item_call label="Pokaż zablokowanych Rezydentów &amp; obiekty" name="show_blocked_list"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_picks_plus.xml b/indra/newview/skins/default/xui/pl/menu_picks_plus.xml
index 14ab9c2978c8077038d41c8a48aad0771f106dc6..8f196612a8bcc6100be6ac78d851a82c7afd6877 100644
--- a/indra/newview/skins/default/xui/pl/menu_picks_plus.xml
+++ b/indra/newview/skins/default/xui/pl/menu_picks_plus.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="picks_plus_menu">
-	<menu_item_call label="Utwórz" name="create_pick"/>
+	<menu_item_call label="Stwórz" name="create_pick"/>
 	<menu_item_call label="Nowa Reklama" name="create_classified"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_place.xml b/indra/newview/skins/default/xui/pl/menu_place.xml
index 72f4b1265f88d9d3bda5e088eadcd305b081227f..312bfc6bb01e7a52559d43007f7111de6b3dea3a 100644
--- a/indra/newview/skins/default/xui/pl/menu_place.xml
+++ b/indra/newview/skins/default/xui/pl/menu_place.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="place_overflow_menu">
-	<menu_item_call label="Zapisz Ulubione Miejsce" name="landmark"/>
+	<menu_item_call label="Zapisz Landmark" name="landmark"/>
 	<menu_item_call label="Utwórz" name="pick"/>
-	<menu_item_call label="Kup Wstęp" name="pass"/>
+	<menu_item_call label="Kup PrzepustkÄ™" name="pass"/>
 	<menu_item_call label="Edytuj" name="edit"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_place_add_button.xml b/indra/newview/skins/default/xui/pl/menu_place_add_button.xml
index a737fc49ceac7c8816da50b4700cd63987dffb43..6175671fb9fba15a65db40800037702edc47ab88 100644
--- a/indra/newview/skins/default/xui/pl/menu_place_add_button.xml
+++ b/indra/newview/skins/default/xui/pl/menu_place_add_button.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_folder_gear">
-	<menu_item_call label="Dodaj Folder" name="add_folder"/>
-	<menu_item_call label="Dodaj do Ulubionych Miejsc" name="add_landmark"/>
+	<menu_item_call label="Dodaj folder" name="add_folder"/>
+	<menu_item_call label="Dodaj do Landmarków" name="add_landmark"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml
index f5ece87b282f1db8d545bd7e9497c688ee80d9bf..d17b6c1033ad104ec22ae7d02aefe26528bccce0 100644
--- a/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml
+++ b/indra/newview/skins/default/xui/pl/menu_places_gear_folder.xml
@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_folder_gear">
-	<menu_item_call label="Dodaj do Ulubionych Miejsc" name="add_landmark"/>
-	<menu_item_call label="Dodaj Folder" name="add_folder"/>
+	<menu_item_call label="Dodaj do Landmarków" name="add_landmark"/>
+	<menu_item_call label="Dodaj folder" name="add_folder"/>
 	<menu_item_call label="Wytnij" name="cut"/>
 	<menu_item_call label="Kopiuj" name="copy_folder"/>
 	<menu_item_call label="Wklej" name="paste"/>
-	<menu_item_call label="Zmień Nazwę" name="rename"/>
+	<menu_item_call label="Zmień nazwę" name="rename"/>
 	<menu_item_call label="Usuń" name="delete"/>
 	<menu_item_call label="Rozwiń" name="expand"/>
 	<menu_item_call label="Schowaj" name="collapse"/>
-	<menu_item_call label="Rozwiń Wszystkie Foldery" name="expand_all"/>
-	<menu_item_call label="Schowaj Wszystkie Foldery" name="collapse_all"/>
+	<menu_item_call label="Rozwiń wszystkie foldery" name="expand_all"/>
+	<menu_item_call label="Schowaj wszystkie foldery" name="collapse_all"/>
 	<menu_item_check label="Sortuj według daty" name="sort_by_date"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml
index e88f650ed065079b599f5c17291941cdd844f301..0720aea8aac9ee8c4eddc8e93a3186546cef6789 100644
--- a/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml
+++ b/indra/newview/skins/default/xui/pl/menu_places_gear_landmark.xml
@@ -1,18 +1,18 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_ladmark_gear">
 	<menu_item_call label="Teleportuj" name="teleport"/>
-	<menu_item_call label="Więcej Informacji" name="more_info"/>
-	<menu_item_call label="Pokaż na Mapie" name="show_on_map"/>
-	<menu_item_call label="Dodaj do Ulubionych Miejsc" name="add_landmark"/>
-	<menu_item_call label="Dodaj Folder" name="add_folder"/>
+	<menu_item_call label="Więcej informacji" name="more_info"/>
+	<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
+	<menu_item_call label="Dodaj do Landmarków" name="add_landmark"/>
+	<menu_item_call label="Dodaj folder" name="add_folder"/>
 	<menu_item_call label="Wytnij" name="cut"/>
-	<menu_item_call label="Kopiuj Ulubione Miejsce" name="copy_landmark"/>
+	<menu_item_call label="Kopiuj Landmark" name="copy_landmark"/>
 	<menu_item_call label="Kopiuj SLurl" name="copy_slurl"/>
 	<menu_item_call label="Wklej" name="paste"/>
-	<menu_item_call label="Zmień Nazwę" name="rename"/>
+	<menu_item_call label="Zmień nazwę" name="rename"/>
 	<menu_item_call label="Usuń" name="delete"/>
-	<menu_item_call label="Rozwiń Wszystkie Foldery" name="expand_all"/>
-	<menu_item_call label="Schowaj Wszystkie Foldery" name="collapse_all"/>
+	<menu_item_call label="Rozwiń wszystkie foldery" name="expand_all"/>
+	<menu_item_call label="Schowaj wszystkie foldery" name="collapse_all"/>
 	<menu_item_check label="Sortuj według daty" name="sort_by_date"/>
 	<menu_item_call label="Stwórz Ulubione" name="create_pick"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml
index 7e58747267d85d8e5374c1e8ff665b1f33ba338a..cd36c116b065f7a49c2538de5de7baf257912058 100644
--- a/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml
+++ b/indra/newview/skins/default/xui/pl/menu_teleport_history_item.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Teleport History Item Context Menu">
 	<menu_item_call label="Teleportuj" name="Teleport"/>
-	<menu_item_call label="Więcej Szczegółów" name="More Information"/>
+	<menu_item_call label="Więcej szczegółów" name="More Information"/>
 	<menu_item_call label="Kopiuj do schowka" name="CopyToClipboard"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_agent.xml b/indra/newview/skins/default/xui/pl/menu_url_agent.xml
index 0f210b140bb42c18beb491ddfe8c11519c024943..7c90e6582ddbac395ae663494a771c7ad607e40f 100644
--- a/indra/newview/skins/default/xui/pl/menu_url_agent.xml
+++ b/indra/newview/skins/default/xui/pl/menu_url_agent.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
 	<menu_item_call label="Pokaż Profil Rezydenta" name="show_agent"/>
-	<menu_item_call label="Kopiuj NazwÄ™ do Schowka" name="url_copy_label"/>
+	<menu_item_call label="Kopiuj nazwÄ™ do schowka" name="url_copy_label"/>
 	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_group.xml b/indra/newview/skins/default/xui/pl/menu_url_group.xml
index 38e4360691e680b548e4504b82bfc53a25a5d5c7..109f96e5625f8a02b0b15ed6ff2b8e85acc026d4 100644
--- a/indra/newview/skins/default/xui/pl/menu_url_group.xml
+++ b/indra/newview/skins/default/xui/pl/menu_url_group.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Pokaż Szczegóły o Grupie" name="show_group"/>
-	<menu_item_call label="Kopiuj GrupÄ™ do Schowka" name="url_copy_label"/>
+	<menu_item_call label="Pokaż szczegóły o Grupie" name="show_group"/>
+	<menu_item_call label="Kopiuj GrupÄ™ do schowka" name="url_copy_label"/>
 	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_http.xml b/indra/newview/skins/default/xui/pl/menu_url_http.xml
index 0d8793d41e7ed1438633e02949fcac85fca10f86..e73f7b674562e71b81864fba4fa3decd812fb360 100644
--- a/indra/newview/skins/default/xui/pl/menu_url_http.xml
+++ b/indra/newview/skins/default/xui/pl/menu_url_http.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Otwórz Przeglądarkę Internetową" name="url_open"/>
-	<menu_item_call label="Otwórz w Wewnętrzenej Przeglądarce" name="url_open_internal"/>
-	<menu_item_call label="Otwórz w Zewnętrznej Przeglądarce" name="url_open_external"/>
+	<menu_item_call label="Otwórz przeglądarkę internetową" name="url_open"/>
+	<menu_item_call label="Otwórz w wewnętrzenej przeglądarce" name="url_open_internal"/>
+	<menu_item_call label="Otwórz w zewnętrznej przeglądarce" name="url_open_external"/>
 	<menu_item_call label="Kopiuj URL do schowka" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_inventory.xml b/indra/newview/skins/default/xui/pl/menu_url_inventory.xml
index c11860d6fe1d0d9862389a9744f93a55ab7d51c2..ce3309cba02792e8f56e40a53920eeb26b982670 100644
--- a/indra/newview/skins/default/xui/pl/menu_url_inventory.xml
+++ b/indra/newview/skins/default/xui/pl/menu_url_inventory.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Pokaż Obiekt w Szafie" name="show_item"/>
-	<menu_item_call label="Kopiuj NazwÄ™ do Schowka" name="url_copy_label"/>
+	<menu_item_call label="Pokaż obiekt w Szafie" name="show_item"/>
+	<menu_item_call label="Kopiuj nazwÄ™ do schowka" name="url_copy_label"/>
 	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_map.xml b/indra/newview/skins/default/xui/pl/menu_url_map.xml
index becbd8276fc95196317580543e2333bb9407fa8a..179ab1f6768213a1629ae7b3ce85cabc542f30d9 100644
--- a/indra/newview/skins/default/xui/pl/menu_url_map.xml
+++ b/indra/newview/skins/default/xui/pl/menu_url_map.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Pokaż na Mapie" name="show_on_map"/>
-	<menu_item_call label="Teleportuj do Miejsca" name="teleport_to_location"/>
+	<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
+	<menu_item_call label="Teleportuj do miejsca" name="teleport_to_location"/>
 	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_objectim.xml b/indra/newview/skins/default/xui/pl/menu_url_objectim.xml
index 0bdf1da2a40cbf95d851beb2c8c85faab604ea74..7576208a9ef1e706579dbcc90ff65d866cd73c2a 100644
--- a/indra/newview/skins/default/xui/pl/menu_url_objectim.xml
+++ b/indra/newview/skins/default/xui/pl/menu_url_objectim.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Pokaż Szczegóły o Obiekcie" name="show_object"/>
-	<menu_item_call label="Pokaż na Mapie" name="show_on_map"/>
-	<menu_item_call label="Teleportuj to Miejsca Obiektu" name="teleport_to_object"/>
-	<menu_item_call label="Kopiuj NazwÄ™ Obiektu do Schowka" name="url_copy_label"/>
+	<menu_item_call label="Pokaż szczegóły o obiekcie" name="show_object"/>
+	<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
+	<menu_item_call label="Teleportuj to miejsca obiektu" name="teleport_to_object"/>
+	<menu_item_call label="Kopiuj nazwÄ™ obiektu do schowka" name="url_copy_label"/>
 	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_parcel.xml b/indra/newview/skins/default/xui/pl/menu_url_parcel.xml
index 881c010bc1206c1bf90fb9d10009d2ddec397705..43b945b8bebf39dd1998048683781894bca1fa96 100644
--- a/indra/newview/skins/default/xui/pl/menu_url_parcel.xml
+++ b/indra/newview/skins/default/xui/pl/menu_url_parcel.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Pokaż Szczegóły o Miejscu" name="show_parcel"/>
-	<menu_item_call label="Pokaż na Mapie" name="show_on_map"/>
+	<menu_item_call label="Pokaż szczegóły o Miejscu" name="show_parcel"/>
+	<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
 	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_url_slurl.xml b/indra/newview/skins/default/xui/pl/menu_url_slurl.xml
index b9fa692365ce9a071a6deb22e7e08117f8d1e000..456146d8e56af6fa4e93ea4b57a3b51431c0aa86 100644
--- a/indra/newview/skins/default/xui/pl/menu_url_slurl.xml
+++ b/indra/newview/skins/default/xui/pl/menu_url_slurl.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Url Popup">
-	<menu_item_call label="Pokaż Szczegóły o Miejscu" name="show_place"/>
-	<menu_item_call label="Pokaż na Mapie" name="show_on_map"/>
+	<menu_item_call label="Pokaż szczegóły o Miejscu" name="show_place"/>
+	<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
 	<menu_item_call label="Teleportuj do miejsca" name="teleport_to_location"/>
 	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml
index 23a17f4edabe326dc5a50b99bb4b9cf8da1d868b..85ceb9592fe9374a9dbadd43e4b221807032ae84 100644
--- a/indra/newview/skins/default/xui/pl/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml
@@ -8,7 +8,7 @@
 		<menu_item_call label="Mój Wygląd" name="Appearance"/>
 		<menu_item_check label="Moja Szafa" name="Inventory"/>
 		<menu_item_check label="Moja Szafa" name="ShowSidetrayInventory"/>
-		<menu_item_check label="Moje Gesturki" name="Gestures"/>
+		<menu_item_check label="Moje Gesty" name="Gestures"/>
 		<menu label="Mój Status" name="Status">
 			<menu_item_call label="Tryb Oddalenia" name="Set Away"/>
 			<menu_item_call label="Tryb Pracy" name="Set Busy"/>
@@ -75,7 +75,7 @@
 			<menu_item_call label="Zaznacz Wszystko" name="Select All"/>
 			<menu_item_call label="Cofnij Zaznaczenie" name="Deselect"/>
 		</menu>
-		<menu_item_call label="Grupuj" name="Link"/>
+		<menu_item_call label="Linkuj" name="Link"/>
 		<menu_item_call label="Rozlinkuj" name="Unlink"/>
 		<menu_item_check label="Edytuj Zgrupowane Obiekty" name="Edit Linked Parts"/>
 		<menu_item_call label="Ogniskowa Selekcji" name="Focus on Selection"/>
diff --git a/indra/newview/skins/default/xui/pl/mime_types.xml b/indra/newview/skins/default/xui/pl/mime_types.xml
index c90d5761e6ea4fbc1c967e80b36df13d49ba203a..cbf2afa91d3cda2818d2fd87bafda8f8e484aacb 100644
--- a/indra/newview/skins/default/xui/pl/mime_types.xml
+++ b/indra/newview/skins/default/xui/pl/mime_types.xml
@@ -2,13 +2,13 @@
 <mimetypes name="default">
 	<widgetset name="web">
 		<label name="web_label">
-			Zawartość Strony Internetowej
+			Zawartość przeglądarki internetowej
 		</label>
 		<tooltip name="web_tooltip">
-			To miejsce posiada zawartość strony internetowej
+			To miejsce posiada zawartość przeglądarki internetowej
 		</tooltip>
 		<playtip name="web_playtip">
-			Pokaż zawartość strony internetowej
+			Pokaż zawartość przeglądarki internetowej
 		</playtip>
 	</widgetset>
 	<widgetset name="movie">
diff --git a/indra/newview/skins/default/xui/pl/mime_types_linux.xml b/indra/newview/skins/default/xui/pl/mime_types_linux.xml
index 0c901809dc752e279810a2548fec3255190a0c35..a2b8168b518625dd8cf889a399b83260a6bc6091 100644
--- a/indra/newview/skins/default/xui/pl/mime_types_linux.xml
+++ b/indra/newview/skins/default/xui/pl/mime_types_linux.xml
@@ -2,13 +2,13 @@
 <mimetypes name="default">
 	<widgetset name="web">
 		<label name="web_label">
-			Zawartość Strony Internetowej
+			Zawartość przeglądarki internetowej
 		</label>
 		<tooltip name="web_tooltip">
-			W tym miejscu można zobaczyć zawartość strony internetowej
+			W tym miejscu można zobaczyć zawartość przeglądarki internetowej
 		</tooltip>
 		<playtip name="web_playtip">
-			Pokaż zawartość strony internetowej
+			Pokaż zawartość przeglądarki internetowej
 		</playtip>
 	</widgetset>
 	<widgetset name="movie">
diff --git a/indra/newview/skins/default/xui/pl/mime_types_mac.xml b/indra/newview/skins/default/xui/pl/mime_types_mac.xml
index bd39ff7ac3adb6682fe8a82e7ed587840daf7cdd..ae860249bb8da46a33c5c883072a391bd3ab86b3 100644
--- a/indra/newview/skins/default/xui/pl/mime_types_mac.xml
+++ b/indra/newview/skins/default/xui/pl/mime_types_mac.xml
@@ -2,13 +2,13 @@
 <mimetypes name="default">
 	<widgetset name="web">
 		<label name="web_label">
-			Zawartość Przeglądarki Internetowej
+			Zawartość przeglądarki internetowej
 		</label>
 		<tooltip name="web_tooltip">
-			To miejsce posiada zawartość internetową
+			W tym miejscu można zobaczyć zawartość przeglądarki internetowej
 		</tooltip>
 		<playtip name="web_playtip">
-			Pokaż Zawartość Przeglądarki Internetowej
+			Pokaż zawartość przeglądarki internetowej
 		</playtip>
 	</widgetset>
 	<widgetset name="movie">
diff --git a/indra/newview/skins/default/xui/pl/notifications.xml b/indra/newview/skins/default/xui/pl/notifications.xml
index f565a0fa181c7c35f4c0952af9f4497eb8061a61..12d68ed30edd2e2c41426711640816f0eb943274 100644
--- a/indra/newview/skins/default/xui/pl/notifications.xml
+++ b/indra/newview/skins/default/xui/pl/notifications.xml
@@ -89,7 +89,7 @@ Sprawdź stan swojego połączenia sieciowego.
 		W trakcie ładwania tekstu dla skryptu pojawił się problem z następującego powodu: [REASON]. Spróbuj ponownie za kilka minut.
 	</notification>
 	<notification name="CompileQueueSaveBytecode">
-		W trakcie ładwania skompilowanego skryptu pojawił się problem z następującego powodu: [REASON]. Spróbuj ponownie za kilka minut.
+		W trakcie ładowania skompilowanego skryptu pojawił się problem z następującego powodu: [REASON]. Spróbuj ponownie za kilka minut.
 	</notification>
 	<notification name="WriteAnimationFail">
 		Problem w zapisywaniu danych animacji. Spróbuj ponownie za kilka minut.
@@ -255,7 +255,7 @@ Obiekty: [N]
 		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
 	</notification>
 	<notification name="DisableAllTopObjects">
-		Czy na pewno chcesz deaktywować wszystkie obiekty w tym regionie?
+		Czy na pewno chcesz deaktywować wszystkie obiekty w tym Regionie?
 		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
 	</notification>
 	<notification name="ReturnObjectsNotOwnedByGroup">
@@ -325,7 +325,7 @@ Czy chcesz przejść na stronę www.secondlife.com by założyć konto?
 	<notification name="AddClassified">
 		Ogłoszenia reklamowe ukazują się w zakładce Reklama w wyszukiwarce (Szukaj) oraz na [http://secondlife.com/community/classifieds secondlife.com] przez tydzień.
 Napisz treść swojej reklamy, kliknij Zamieść by dodać katalogu ogłoszeń.
-Po zamieszczeniu reklamy zostaniesz poproszony o sprecyzowanie opłaty za reklamę.
+Po zamieszczeniu reklamy zostaniesz poproszony o sprecyzowanie opłaty za Reklamę.
 Im wyższa opłata tym wyżej Twoja reklama wyświetla się w katalogu i wyszukiwarce po wpisaniu słów kluczowych.
 		<usetemplate ignoretext="Jak stworzyć nową reklamę?" name="okcancelignore" notext="Anuluj" yestext="OK"/>
 	</notification>
@@ -340,7 +340,7 @@ Czy na pewno chcesz kontynuować?
 		<usetemplate ignoretext="Potwierdź przed usunięciem mediów z obiektu" name="okcancelignore" notext="Nie" yestext="Tak"/>
 	</notification>
 	<notification name="ClassifiedSave">
-		Zapisać zmiany w reklamie [NAME]?
+		Zapisać zmiany w Reklamie [NAME]?
 		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/>
 	</notification>
 	<notification name="ClassifiedInsufficientFunds">
@@ -352,7 +352,7 @@ Czy na pewno chcesz kontynuować?
 		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
 	</notification>
 	<notification name="PromptGoToEventsPage">
-		Odwiedzić internetową stronę imprez [SECOND_LIFE]?
+		Odwiedzić internetową stronę Imprez [SECOND_LIFE]?
 		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
 	</notification>
 	<notification name="SelectProposalToView">
@@ -392,17 +392,17 @@ Usuń kilka etapów i zapisz jeszcze raz.
 	</notification>
 	<notification name="GestureSaveFailedObjectNotFound">
 		Nie można zapisać gestu ponieważ obiekt lub szafa powiązanego obiektu nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usuniety.
+Obiekt może znajdować się zbyt daleko albo został usunięty.
 	</notification>
 	<notification name="GestureSaveFailedReason">
-		Nie można zapisać gestu z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej.
+		Nie można zapisać gestu z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
 	</notification>
 	<notification name="SaveNotecardFailObjectNotFound">
 		Nie można zapisać notki ponieważ obiekt lub szafa powiązanego obiektu nie został znaleziony.
 Obiekt może znajdować się zbyt daleko albo został usuniety.
 	</notification>
 	<notification name="SaveNotecardFailReason">
-		Nie można zapisać notki z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej.
+		Nie można zapisać notki z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
 	</notification>
 	<notification name="ScriptCannotUndo">
 		Nie można cofnąć wszystkich zmian w Twojej wersji skryptu.
@@ -411,7 +411,7 @@ Czy chcesz załadować ostatnią wersję zapisaną na serwerze?
 		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
 	</notification>
 	<notification name="SaveScriptFailReason">
-		Nie można zapisać skryptu z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej.
+		Nie można zapisać skryptu z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
 	</notification>
 	<notification name="SaveScriptFailObjectNotFound">
 		Nie można zapisać skryptu ponieważ obiekt w którym się zawiera nie został znaleziony.
@@ -517,7 +517,7 @@ Odwiedź stronę [_URL] po więcej informacji na temat zakupu L$?
 	</notification>
 	<notification name="UnableToLinkObjects">
 		Nie można połączyć [COUNT] obiektów.
-Maksimalnie można połączyć [MAX] obiektów.
+Maksymalnie można połączyć [MAX] obiektów.
 	</notification>
 	<notification name="CannotLinkIncompleteSet">
 		Możesz łączyć tylko kompletne zbiory obiektów i musisz wybrać więcej niż jeden obiekt.
@@ -682,7 +682,7 @@ Jeśli nadal nie możesz się teleportować wyloguj się i ponownie zaloguj.
 		Czekamy na Twoje akcesoria. Możesz poczekać kilka minut lub zrobić relog przed następną próbą teleportacji.
 	</notification>
 	<notification name="too_many_uploads_tport">
-		Obecnie ten region ma problemy z ładowaniem obiektów w związku z czym teleportacja bardzo sie opóznia.
+		Obecnie ten region ma problemy z ładowaniem obiektów w związku z czym teleportacja bardzo sie opóźnia.
 Spróbuj jeszcze raz za kilka minut albo teleportuj się do mniej zatłoczonego miejsca.
 	</notification>
 	<notification name="expired_tport">
@@ -864,10 +864,10 @@ Połączyć posiadłości?
 		Zmiana rozdzielczości do [RESX] x [RESY] nie powidła się
 	</notification>
 	<notification name="ErrorUndefinedGrasses">
-		Błąd: Niezdefiniowane trawy: [SPECIES]
+		Błąd: niezdefiniowane trawy: [SPECIES]
 	</notification>
 	<notification name="ErrorUndefinedTrees">
-		Bład: Niezdefiniowane drzewa: [SPECIES]
+		Bład: niezdefiniowane drzewa: [SPECIES]
 	</notification>
 	<notification name="CannotSaveWearableOutOfSpace">
 		Nie można zapisać &apos;[NAME]&apos; do pliku stroju. Musisz zwolnić trochę miejsca na Twoim komputerze i zapisać strój jeszcze raz.
@@ -930,7 +930,7 @@ ze wszystkich posiadłości w tym symulatorze?
 		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
 	</notification>
 	<notification name="BlankClassifiedName">
-		Musisz nadać tytuł Twojej reklamie.
+		Musisz nadać tytuł Twojej Reklamie.
 	</notification>
 	<notification name="MinClassifiedPrice">
 		Minimalna cena za publikacjÄ™ wynosi [MIN_PRICE]L$.
@@ -1132,10 +1132,10 @@ Zamień teksturę [TEXTURE_NUM] na 24-o bitową teksturę o wymiarze 512x512 lub
 		Maksymalna liczba gości wynosi [MAX_AGENTS].
 	</notification>
 	<notification name="MaxBannedAgentsOnRegion">
-		Maksymalna liczba nieporządanych Rezydentów (banów) wynosi [MAX_BANNED].
+		Maksymalna liczba niepożądanych Rezydentów (banów) wynosi [MAX_BANNED].
 	</notification>
 	<notification name="MaxAgentOnRegionBatch">
-		Próba dodania [NUM_ADDED] osób nie powidła się:
+		Próba dodania [NUM_ADDED] osób nie powiodła się:
 [MAX_AGENTS] [LIST_TYPE] limit przekroczony o [NUM_EXCESS].
 	</notification>
 	<notification name="MaxAllowedGroupsOnRegion">
@@ -1223,7 +1223,7 @@ Pobrać i zapisać w folderze Aplikacji?
 		<usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Załaduj"/>
 	</notification>
 	<notification name="DeedObjectToGroup">
-		Przekazanie tego obiektu spowoduje, że grupa:
+		Przekazanie tego obiektu spowoduje, że Grupa:
 * Otrzyma L$ zapłacone temu obiektowi
 		<usetemplate ignoretext="Proszę potwierdzić decyzję przed przepisaniem obiektu do grupy" name="okcancelignore" notext="Anuluj" yestext="Przekaż"/>
 	</notification>
@@ -1583,7 +1583,7 @@ Zazwyczaj musi upłynąć nieco czasu zanim ta zmiana zostanie odzwierciedlona n
 Aby wejść do regionu Adult, Rezydenci muszą posiadać zweryfikowane konto, albo w wyniku weryfikacji wieku albo płatości.
 	</notification>
 	<notification label="Wersja Niezgodna z Systemem Rozmów" name="VoiceVersionMismatch">
-		Ta wersja [APP_NAME] nie jest kompatybilna z systemem Rozmów w tym regionie. Musisz zainstalować aktualną wersję [APP_NAME] komunikacja głosowa działała poprawnie.
+		Ta wersja [APP_NAME] nie jest kompatybilna z systemem rozmów w tym Regionie. Musisz zainstalować aktualną wersję [APP_NAME] aby komunikacja głosowa działała poprawnie.
 	</notification>
 	<notification label="Nie Można Kupić Obiektów" name="BuyObjectOneOwner">
 		Jednorazowo możesz kupować tylko od jednego właściciela.
@@ -1660,20 +1660,20 @@ Wpisz hasło ponownie i kliknij OK.
 	</notification>
 	<notification name="SetPickLocation">
 		Uwaga:
-Lokacja tego wyboru została zaktualizowana ale pozostałe szczegóły zachowają oryginalne wartości.
+Lokalizacja tego wyboru została zaktualizowana ale pozostałe szczegóły zachowają oryginalne wartości.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="MoveInventoryFromObject">
-		Wybrane obiekty szafy nie majÄ… praw kopiowania.
-Obiekty zostanÄ… przeniesione do Twojej szafy, nie zostanÄ… skopiowane.
+		Wybrane obiekty Szafy nie majÄ… praw kopiowania.
+Obiekty zostanÄ… przeniesione do Twojej Szafy, nie zostanÄ… skopiowane.
 
-Przenieść obiekty szafy?
+Przenieść obiekty Szafy?
 		<usetemplate ignoretext="Uprzedź przed przeniesieniem zawartości niekopiowalnej z obiektu" name="okcancelignore" notext="Anuluj" yestext="OK"/>
 	</notification>
 	<notification name="MoveInventoryFromScriptedObject">
-		Wybrane obiekty szafy nie majÄ… praw kopiowania.
+		Wybrane obiekty Szafy nie majÄ… praw kopiowania.
 Obiekty zostanÄ… przeniesione do Twojej Szafy, nie zostanÄ… skopiowane.
-Ponieważ obiekty zawierają skrypty, przeniesienie obiektów do Twojej szafy może spowodować niepoprawne działanie skryptów.
+Ponieważ obiekty zawierają skrypty, przeniesienie obiektów do Twojej Szafy może spowodować niepoprawne działanie skryptów.
 
 Przenieść obiekty szafy?
 		<usetemplate ignoretext="Uprzedź przed przeniesieniem zawartości niekopiowalnej z obiektu, która może uszkodzić skrypty obiektu" name="okcancelignore" notext="Anuluj" yestext="OK"/>
@@ -1837,7 +1837,7 @@ Zamieść go na stronie internetowej żeby umożliwić innym łatwy dostęp do t
 		Ustawienie już istnieje!
 	</notification>
 	<notification name="WaterNoEditDefault">
-		Domyśle ustawienie nie może być zmienione ani usunięte.
+		Domyślne ustawienie nie może być zmienione ani usunięte.
 	</notification>
 	<notification name="ChatterBoxSessionStartError">
 		Błąd podczas rozpoczynania czatu/IM z [RECIPIENT].
@@ -2025,7 +2025,7 @@ i wybierajÄ…c folder Zapisane Miejsca (LM).
 (Kliknij dwa razy na miejsce (LM) i wybierz &apos;Teleport&apos; żeby tam się przenieść.)
 	</notification>
 	<notification name="TeleportToPerson">
-		Możesz skontaktować się z Rezydentem &apos;[NAME]&apos; poprzez otworzenie panelu Ludzie po prawej stronei ekranu.
+		Możesz skontaktować się z Rezydentem &apos;[NAME]&apos; poprzez otworzenie panelu Ludzie po prawej stronie ekranu.
 Wybierz Rezydenta z listy, następnie kliknij &apos;IM&apos; na dole panelu.
 (Możesz także kliknąć podwójnie na ich imię na liście, lub prawym przyciskiem i wybrać &apos;IM&apos;).
 	</notification>
diff --git a/indra/newview/skins/default/xui/pl/panel_audio_device.xml b/indra/newview/skins/default/xui/pl/panel_audio_device.xml
index fc3b3776f07374935cbfd5ad575f467ecad9ec7f..fa8dde77eb1f730fb63de6aa97f96d0c0eee535b 100644
--- a/indra/newview/skins/default/xui/pl/panel_audio_device.xml
+++ b/indra/newview/skins/default/xui/pl/panel_audio_device.xml
@@ -13,7 +13,7 @@
 		Poziom Wejścia
 	</text>
 	<text_editor name="voice_intro_text1">
-		Użyj suwaka by dostosować jak głośno Cię słychać dla innych Rezydentów. By przetestować poziom wejścia, zacznij mówić do mikrofonu.
+		Użyj suwaka by dostosować jak głośno Cię słychać dla innych Rezydentów. W celu przetestowania poziomu wejścia, zacznij mówić do mikrofonu.
 	</text_editor>
 	<volume_slider name="mic_volume_slider"
 	     tool_tip="By zmienić poziom głośności użyj suwaka" />
diff --git a/indra/newview/skins/default/xui/pl/panel_bottomtray.xml b/indra/newview/skins/default/xui/pl/panel_bottomtray.xml
index 043db94c953362e26ca8fa8c34ff9de737c3b09d..e21d8a077d41de16538d404e5adda840a7c2991f 100644
--- a/indra/newview/skins/default/xui/pl/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/pl/panel_bottomtray.xml
@@ -16,7 +16,7 @@
 			<gesture_combo_list label="Gestury" name="Gesture" tool_tip="Pokazuje/Ukrywa gestury"/>
 		</layout_panel>
 		<layout_panel name="movement_panel">
-			<button label="Move" name="movement_btn" tool_tip="Pokaż/Ukryj Ustawienia Ruchu"/>
+			<button label="Ruch" name="movement_btn" tool_tip="Pokaż/Ukryj Ustawienia Ruchu"/>
 		</layout_panel>
 		<layout_panel name="cam_panel">
 			<button label="Widok" name="camera_btn" tool_tip="Pokaż/Ukryj Ustawienia Kamery"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml
index 8be5324dd4aa926ba0d80d30a231daf2769358b9..77d2e86b7e29a0ba44dda61e4164afe7eebf93c3 100644
--- a/indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml
+++ b/indra/newview/skins/default/xui/pl/panel_bottomtray_lite.xml
@@ -2,7 +2,7 @@
 <panel name="bottom_tray_lite">
 	<layout_stack name="toolbar_stack_lite">
 		<layout_panel name="gesture_panel">
-			<gesture_combo_list label="Gestura" name="Gesture" tool_tip="Pokaż/ukryj gestury"/>
+			<gesture_combo_list label="Gest" name="Gest" tool_tip="Pokaż/ukryj gestury"/>
 		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_jacket.xml b/indra/newview/skins/default/xui/pl/panel_edit_jacket.xml
index bf3c0f478925ce9d9a9a975ca091cff63fdeebad..f4ea9303aaacd3215ce50485c3388c80d1f31cd2 100644
--- a/indra/newview/skins/default/xui/pl/panel_edit_jacket.xml
+++ b/indra/newview/skins/default/xui/pl/panel_edit_jacket.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_jacket_panel">
 	<panel name="avatar_jacket_color_panel">
-		<texture_picker label="Górny Materiał" name="Upper Fabric" tool_tip="Kliknij aby wybrać teksturę"/>
-		<texture_picker label="Dolny Materiał" name="Lower Fabric" tool_tip="Kliknij aby wybrać teksturę"/>
+		<texture_picker label="Górny materiał" name="Upper Fabric" tool_tip="Kliknij aby wybrać teksturę"/>
+		<texture_picker label="Dolny materiał" name="Lower Fabric" tool_tip="Kliknij aby wybrać teksturę"/>
 		<color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij aby wybrać kolor"/>
 	</panel>
 	<accordion name="wearable_accordion">
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_pick.xml b/indra/newview/skins/default/xui/pl/panel_edit_pick.xml
index f07f5496beb2ef68742d2163d08700620030987c..22fb00671d4703164401b43c3c0ca70673da4493 100644
--- a/indra/newview/skins/default/xui/pl/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/pl/panel_edit_pick.xml
@@ -21,7 +21,7 @@
 			<text name="pick_location">
 				ładowanie...
 			</text>
-			<button label="Ustaw na Bieżąca Lokalizacje" name="set_to_curr_location_btn"/>
+			<button label="Ustaw na bieżąca lokalizację" name="set_to_curr_location_btn"/>
 		</panel>
 	</scroll_container>
 	<panel label="bottom_panel" name="bottom_panel">
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_profile.xml b/indra/newview/skins/default/xui/pl/panel_edit_profile.xml
index 3f3d32c9fc45fcf7c3913bae32621ae51301b136..edd74157512ff7921b7ba6769382457514422060 100644
--- a/indra/newview/skins/default/xui/pl/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/pl/panel_edit_profile.xml
@@ -10,11 +10,11 @@
 	<string name="AcctTypeTrial" value="Próbne"/>
 	<string name="AcctTypeCharterMember" value="Członek-zalożyciel"/>
 	<string name="AcctTypeEmployee" value="Pracownik Linden Lab"/>
-	<string name="PaymentInfoUsed" value="Dane Konta Używane"/>
-	<string name="PaymentInfoOnFile" value="Dane Konta Dostępne"/>
-	<string name="NoPaymentInfoOnFile" value="Brak Danych Konta"/>
-	<string name="AgeVerified" value="Wiek Zweryfikowany"/>
-	<string name="NotAgeVerified" value="Brak Weryfikacji Wieku"/>
+	<string name="PaymentInfoUsed" value="Dane konta używane"/>
+	<string name="PaymentInfoOnFile" value="Dane konta dostępne"/>
+	<string name="NoPaymentInfoOnFile" value="Brak danych konta"/>
+	<string name="AgeVerified" value="Wiek zweryfikowany"/>
+	<string name="NotAgeVerified" value="Brak weryfikacji wieku"/>
 	<string name="partner_edit_link_url">
 		http://www.secondlife.com/account/partners.php?lang=pl
 	</string>
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/pl/panel_edit_tattoo.xml
index 5efa402698d5dbff125cbe3f3226cf14da60683c..b5e18285885886a7a832d1fcfdc64fbd5efdadd1 100644
--- a/indra/newview/skins/default/xui/pl/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/pl/panel_edit_tattoo.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_tattoo_panel">
 	<panel name="avatar_tattoo_color_panel">
-		<texture_picker label="Tatuaż Głowy" name="Head Tattoo" tool_tip="Kliknij by wybrać grafikę"/>
-		<texture_picker label="Tatuaż Górnej Części Ciała" name="Upper Tattoo" tool_tip="Kliknij by wybrać grafikę"/>
-		<texture_picker label="Tatuaż Dolnej Części Ciała" name="Lower Tattoo" tool_tip="Kliknij by wybrać grafikę"/>
+		<texture_picker label="Tatuaż głowy" name="Head Tattoo" tool_tip="Kliknij by wybrać grafikę"/>
+		<texture_picker label="Tatuaż górnej części ciała" name="Upper Tattoo" tool_tip="Kliknij by wybrać grafikę"/>
+		<texture_picker label="Tatuaż dolnej części ciała" name="Lower Tattoo" tool_tip="Kliknij by wybrać grafikę"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml b/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml
index 9bd89f0b3655893d5ab8a6cb6953888101fc156c..cf17afea3fc02dd04085083fac4c689d7508b0f4 100644
--- a/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml
@@ -4,46 +4,46 @@
 		Edycja kształtu
 	</string>
 	<string name="edit_skin_title">
-		Edycja Skórki
+		Edycja skórki
 	</string>
 	<string name="edit_hair_title">
-		Edycja Włosów
+		Edycja włosów
 	</string>
 	<string name="edit_eyes_title">
-		Edycja Oczu
+		Edycja oczu
 	</string>
 	<string name="edit_shirt_title">
-		Edycja Spódnicy
+		Edycja spódnicy
 	</string>
 	<string name="edit_pants_title">
-		Edycja Spodni
+		Edycja spodni
 	</string>
 	<string name="edit_shoes_title">
-		Edycja Butów
+		Edycja butów
 	</string>
 	<string name="edit_socks_title">
-		Edycja Skarpetek
+		Edycja skarpetek
 	</string>
 	<string name="edit_jacket_title">
-		Edycja Kurtki
+		Edycja kurtki
 	</string>
 	<string name="edit_skirt_title">
-		Edycja Spódnicy
+		Edycja spódnicy
 	</string>
 	<string name="edit_gloves_title">
-		Edycja Rękawiczek
+		Edycja rękawiczek
 	</string>
 	<string name="edit_undershirt_title">
-		Edycja Podkoszulki
+		Edycja podkoszulki
 	</string>
 	<string name="edit_underpants_title">
-		Edycja Bielizny
+		Edycja bielizny
 	</string>
 	<string name="edit_alpha_title">
-		Edycja Maski Alpha
+		Edycja maski Alpha
 	</string>
 	<string name="edit_tattoo_title">
-		Edycja Tatuażu
+		Edycja tatuażu
 	</string>
 	<string name="shape_desc_text">
 		Kształt:
diff --git a/indra/newview/skins/default/xui/pl/panel_group_general.xml b/indra/newview/skins/default/xui/pl/panel_group_general.xml
index 0dc955c096fc4bd4bd64d5178ba63e1cc7157439..67fa0bf085150cf0e19872357c0fffd221275094 100644
--- a/indra/newview/skins/default/xui/pl/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_general.xml
@@ -18,7 +18,7 @@ By otrzymać pomoc i dodatkowe wskazówki przesuń kursor na przyciski.
 		</text>
 		<name_box initial_value="(przetwarzanie)" name="founder_name"/>
 		<text name="join_cost_text">
-			Wstęp Wolny
+			Wstęp wolny
 		</text>
 		<button label="DOŁĄCZ TERAZ!" name="btn_join"/>
 	</panel>
@@ -43,8 +43,8 @@ By otrzymać pomoc i dodatkowe wskazówki przesuń kursor na przyciski.
 		<text name="group_settngs_label">
 			Grupa
 		</text>
-		<check_box label="Wolny Wstęp" name="open_enrollement" tool_tip="Sprawdź czy grupa oferuje wolny wstęp i nie wymaga zaproszenia."/>
-		<check_box label="Opłata Wstępu" name="check_enrollment_fee" tool_tip="Ustaw opłatę za przyłączenie się do grupy."/>
+		<check_box label="Wolny wstęp" name="open_enrollement" tool_tip="Sprawdź czy grupa oferuje wolny wstęp i nie wymaga zaproszenia."/>
+		<check_box label="Opłata wstępu" name="check_enrollment_fee" tool_tip="Ustaw opłatę za przyłączenie się do grupy."/>
 		<spinner label="L$" name="spin_enrollment_fee" tool_tip="Nowi członkowie grupy muszą zapłacić wymaganą opłatę by dołączyć do grupy."/>
 		<combo_box name="group_mature_check" tool_tip="Wybierz jeżeli uważasz, iż Twoja grupa klasyfikowana jest jako &apos;Mature&apos;.">
 			<combo_box.item label="Treść &apos;PG&apos;" name="pg"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml
index dd4938d50b5f8a56eef19a3923833ed3048f0c02..509c2893cf4fa332633089ef0feb9395fade4645 100644
--- a/indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml
@@ -29,7 +29,7 @@
 			<button label="Czat" name="btn_chat"/>
 			<button label="Konferencja Głosowa" name="btn_call" tool_tip="Konferencja Głosowa"/>
 			<button label="Zapisz" label_selected="Zapisz" name="btn_apply"/>
-			<button label="Stwórz nową grupę" name="btn_create" tool_tip="Stwórz nową grupę"/>
+			<button label="Stwórz nową Grupę" name="btn_create" tool_tip="Stwórz nową Grupę"/>
 		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_group_invite.xml b/indra/newview/skins/default/xui/pl/panel_group_invite.xml
index 335fff8458958a0f37bc4c4eb33d8b97dd896971..e520c06944f75b3d3e1238a57d4a764f381b31c4 100644
--- a/indra/newview/skins/default/xui/pl/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_invite.xml
@@ -4,7 +4,7 @@
 		Jesteś pewny, że chcesz wybrać nowych właścieli grupy? Ta decyzja jest ostateczna!
 	</panel.string>
 	<panel.string name="loading">
-		(loading...)
+		(ładowanie...)
 	</panel.string>
 	<panel.string name="already_in_group">
 		Niektórzy Rezydenci, których wybrałeś już należą do grupy i nie otrzymali zaproszenia.
diff --git a/indra/newview/skins/default/xui/pl/panel_group_notices.xml b/indra/newview/skins/default/xui/pl/panel_group_notices.xml
index c973bcd24f5f83085650ed542e02a6eecf05f1ed..31882ab0e6fc948cd52aae96605e602aab035a2d 100644
--- a/indra/newview/skins/default/xui/pl/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_notices.xml
@@ -39,11 +39,11 @@ Limit dzienny ogłoszeń dla grupy wynosi 200.
 		</text>
 		<button label="Usuń załącznik" label_selected="Usuń Załącznik" name="remove_attachment" tool_tip="Usuń załącznik z noty"/>
 		<button label="Wyślij" label_selected="Wyślij" name="send_notice"/>
-		<group_drop_target name="drop_target" tool_tip="Przeciągnij załącznik ze swojej Szafy na pole docelowe aby wysłać go z ogłoszeniem. Musisz posiadać prawo do kopiowania i transferu załącznika aby go dodać do ogłoszenia."/>
+		<group_drop_target name="drop_target" tool_tip="Przeciągnij załącznik ze swojej Szafy na pole docelowe aby wysłać go z Ogłoszeniem. Musisz posiadać prawo do kopiowania i transferu załącznika aby go dodać do ogłoszenia."/>
 	</panel>
-	<panel label="Zobacz Przeszłe Ogłoszenia" name="panel_view_past_notice">
+	<panel label="Zobacz przeszłe Ogłoszenia" name="panel_view_past_notice">
 		<text name="lbl">
-			Ogłoszenia Zachowane
+			Ogłoszenia zachowane
 		</text>
 		<text name="lbl2">
 			W celu wysłania nowego ogłoszenia kliknij przycisk +
diff --git a/indra/newview/skins/default/xui/pl/panel_landmarks.xml b/indra/newview/skins/default/xui/pl/panel_landmarks.xml
index ccd340901526b8f9c15a86bc7d0a899515397387..dcc495b5a814ea5539879563dbfac49105d552e7 100644
--- a/indra/newview/skins/default/xui/pl/panel_landmarks.xml
+++ b/indra/newview/skins/default/xui/pl/panel_landmarks.xml
@@ -2,7 +2,7 @@
 <panel name="Landmarks">
 	<accordion name="landmarks_accordion">
 		<accordion_tab name="tab_favorites" title="Ulubione"/>
-		<accordion_tab name="tab_landmarks" title="Miejsca Zapisane"/>
+		<accordion_tab name="tab_landmarks" title="Landmarki"/>
 		<accordion_tab name="tab_inventory" title="Moja Szafa"/>
 		<accordion_tab name="tab_library" title="Biblioteka"/>
 	</accordion>
diff --git a/indra/newview/skins/default/xui/pl/panel_main_inventory.xml b/indra/newview/skins/default/xui/pl/panel_main_inventory.xml
index 648f6e2ff00a631dcccb3ec586de666a59359cdf..e0d9def8b32810d4d76371d13664494585a52110 100644
--- a/indra/newview/skins/default/xui/pl/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/pl/panel_main_inventory.xml
@@ -13,10 +13,10 @@
 		<menu label="Plik" name="File">
 			<menu_item_call label="Otwórz" name="Open"/>
 			<menu label="Załaduj" name="upload">
-				<menu_item_call label="Obraz (L$[COST])..." name="Upload Image"/>
-				<menu_item_call label="Dźwięk (L$[COST])..." name="Upload Sound"/>
-				<menu_item_call label="AnimacjÄ™ (L$[COST])..." name="Upload Animation"/>
-				<menu_item_call label="Zbiór Plików (L$[COST] za jeden plik)..." name="Bulk Upload"/>
+				<menu_item_call label="obraz (L$[COST])..." name="Upload Image"/>
+				<menu_item_call label="dźwięk (L$[COST])..." name="Upload Sound"/>
+				<menu_item_call label="animacjÄ™ (L$[COST])..." name="Upload Animation"/>
+				<menu_item_call label="zbiór plików (L$[COST] za jeden plik)..." name="Bulk Upload"/>
 			</menu>
 			<menu_item_call label="Nowe Okno" name="New Window"/>
 			<menu_item_call label="Pokaż Filtry" name="Show Filters"/>
@@ -26,41 +26,41 @@
 			<menu_item_call label="Opróżnij Folder Zgubione i Znalezione" name="Empty Lost And Found"/>
 		</menu>
 		<menu label="Stwórz" name="Create">
-			<menu_item_call label="Nowy Folder" name="New Folder"/>
-			<menu_item_call label="Nowy Skrypt" name="New Script"/>
-			<menu_item_call label="Nowa Nota" name="New Note"/>
-			<menu_item_call label="NowÄ… GesturkÄ™" name="New Gesture"/>
+			<menu_item_call label="Nowy folder" name="New Folder"/>
+			<menu_item_call label="Nowy skrypt" name="New Script"/>
+			<menu_item_call label="Nowa nota" name="New Note"/>
+			<menu_item_call label="Nowy gest" name="New Gesture"/>
 			<menu label="Nowe Ubranie" name="New Clothes">
-				<menu_item_call label="NowÄ… KoszulkÄ™" name="New Shirt"/>
-				<menu_item_call label="Nowe Spodnie" name="New Pants"/>
-				<menu_item_call label="Nowe Buty" name="New Shoes"/>
-				<menu_item_call label="Nowe Skarpetki" name="New Socks"/>
-				<menu_item_call label="NowÄ… KurtkÄ™" name="New Jacket"/>
-				<menu_item_call label="Nową Spódnicę" name="New Skirt"/>
-				<menu_item_call label="Nowe Rękawiczki" name="New Gloves"/>
-				<menu_item_call label="Nowy Podkoszulek" name="New Undershirt"/>
-				<menu_item_call label="NowÄ… BieliznÄ™" name="New Underpants"/>
-				<menu_item_call label="Nowe Ubranie Przezroczyste" name="New Alpha"/>
-				<menu_item_call label="Nowy Tatuaż" name="New Tattoo"/>
+				<menu_item_call label="NowÄ… kkoszulkÄ™" name="New Shirt"/>
+				<menu_item_call label="Nowe spodnie" name="New Pants"/>
+				<menu_item_call label="Nowe buty" name="New Shoes"/>
+				<menu_item_call label="Nowe skarpetki" name="New Socks"/>
+				<menu_item_call label="NowÄ… kurtkÄ™" name="New Jacket"/>
+				<menu_item_call label="Nową spódnicę" name="New Skirt"/>
+				<menu_item_call label="Nowe rękawiczki" name="New Gloves"/>
+				<menu_item_call label="Nowy podkoszulek" name="New Undershirt"/>
+				<menu_item_call label="NowÄ… bieliznÄ™" name="New Underpants"/>
+				<menu_item_call label="Nowe ubranie Alpha" name="New Alpha"/>
+				<menu_item_call label="Nowy tatuaż" name="New Tattoo"/>
 			</menu>
 			<menu label="Nową Część Ciała" name="New Body Parts">
-				<menu_item_call label="Nowy Kształt" name="New Shape"/>
-				<menu_item_call label="Nową Skórkę" name="New Skin"/>
-				<menu_item_call label="Nowe Włosy" name="New Hair"/>
-				<menu_item_call label="Nowe Oczy" name="New Eyes"/>
+				<menu_item_call label="Nowy kształt" name="New Shape"/>
+				<menu_item_call label="Nową skórkę" name="New Skin"/>
+				<menu_item_call label="Nowe włosy" name="New Hair"/>
+				<menu_item_call label="Nowe oczy" name="New Eyes"/>
 			</menu>
 		</menu>
 		<menu label="UporzÄ…dkuj" name="Sort">
-			<menu_item_check label="Wegług Nazwy" name="By Name"/>
-			<menu_item_check label="Według Daty" name="By Date"/>
+			<menu_item_check label="Wegług bazwy" name="By Name"/>
+			<menu_item_check label="Według daty" name="By Date"/>
 			<menu_item_check label="Foldery zawsze według nazwy" name="Folders Always By Name"/>
-			<menu_item_check label="Foldery Systemowe od Góry" name="System Folders To Top"/>
+			<menu_item_check label="Foldery Systemowe od góry" name="System Folders To Top"/>
 		</menu>
 	</menu_bar>
 	<filter_editor label="Filtr" name="inventory search editor"/>
 	<tab_container name="inventory filter tabs">
-		<inventory_panel label="Wszystkie Obiekty" name="All Items"/>
-		<inventory_panel label="Ostatnio Dodane Obiekty" name="Recent Items"/>
+		<inventory_panel label="Wszystkie obiekty" name="All Items"/>
+		<inventory_panel label="Ostatnio dodane obiekty" name="Recent Items"/>
 	</tab_container>
 	<panel name="bottom_panel">
 		<button name="options_gear_btn" tool_tip="Pokaż dodatkowe opcje"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml
index 4d91c3cdc8c636aba5a98300414de560ad1b0cf7..939bcbbb4273eaf49a2bab4f023aa7d9bbed3853 100644
--- a/indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml
+++ b/indra/newview/skins/default/xui/pl/panel_media_settings_permissions.xml
@@ -11,10 +11,10 @@
 			Mini
 		</combo_item>
 	</combo_box>
-	<check_box initial_value="false" label="Pozwól na Nawigację &amp; Interaktywność" name="perms_owner_interact"/>
+	<check_box initial_value="false" label="Pozwól na nawigację &amp; interaktywność" name="perms_owner_interact"/>
 	<check_box initial_value="false" label="Pokaż Pasek Kontroli" name="perms_owner_control"/>
-	<check_box initial_value="false" label="Pozwól na Nawigację &amp; Interaktywność" name="perms_group_interact"/>
+	<check_box initial_value="false" label="Pozwól na nawigację &amp; Interaktywność" name="perms_group_interact"/>
 	<check_box initial_value="false" label="Pokaż Pasek Kontroli" name="perms_group_control"/>
-	<check_box initial_value="false" label="Pozwól na Nawigację &amp; Interaktywność" name="perms_anyone_interact"/>
+	<check_box initial_value="false" label="Pozwól na nawigację &amp; interaktywność" name="perms_anyone_interact"/>
 	<check_box initial_value="false" label="Pokaż Pasek Kontroli" name="perms_anyone_control"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_media_settings_security.xml b/indra/newview/skins/default/xui/pl/panel_media_settings_security.xml
index a9b5e71a3bfe27f34a12f4be41187cee3c253bcb..da3142b54efc9b1f7ee5d873e1f2c6c3e2c2f47c 100644
--- a/indra/newview/skins/default/xui/pl/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/pl/panel_media_settings_security.xml
@@ -7,6 +7,6 @@
 	<button label="Dodaj" name="whitelist_add"/>
 	<button label="Usuń" name="whitelist_del"/>
 	<text name="home_url_fails_whitelist">
-		UWAGA: WWW  wyszczególnione w Ogólne nie przeszły białej listy. Została ona wyłączona dopóki poprawny zapis nie zostanie dodany.
+		UWAGA: WWW  wyszczególnione w Ogólne nie przeszły Białej Listy. Została ona wyłączona dopóki poprawny zapis nie zostanie dodany.
 	</text>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_my_profile.xml b/indra/newview/skins/default/xui/pl/panel_my_profile.xml
index 4f0b6dc42cb7c44afbc5f75bac302e5c1d6493c7..7ca762b8257b93a846cd477f0a627bbb9e79f3c3 100644
--- a/indra/newview/skins/default/xui/pl/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/pl/panel_my_profile.xml
@@ -10,11 +10,11 @@
 			<scroll_container name="profile_scroll">
 				<panel name="scroll_content_panel">
 					<panel name="second_life_image_panel">
-						<icon label="" name="2nd_life_edit_icon" tool_tip="Kliknij przycisk Edytuj Profil by zmienić zdjecie"/>
+						<icon label="" name="2nd_life_edit_icon" tool_tip="Kliknij przycisk Edytuj Profil by zmienić zdjęcie"/>
 						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
 					</panel>
 					<panel name="first_life_image_panel">
-						<icon label="" name="real_world_edit_icon" tool_tip="Kliknij przycisk Edytuj Profil by zmienić zdjecie"/>
+						<icon label="" name="real_world_edit_icon" tool_tip="Kliknij przycisk Edytuj Profil by zmienić zdjęcie"/>
 						<text name="title_rw_descr_text" value="Życie#1:"/>
 					</panel>
 					<text name="title_member_text" value="Urodziny:"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_navigation_bar.xml b/indra/newview/skins/default/xui/pl/panel_navigation_bar.xml
index 3e6cad59bf0784f069627f395546009181f94033..b01e686c4193476fddda1f038ecd0c9e369d1112 100644
--- a/indra/newview/skins/default/xui/pl/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/pl/panel_navigation_bar.xml
@@ -9,8 +9,8 @@
 			<combo_editor label="Szukaj [SECOND_LIFE]" name="search_combo_editor"/>
 		</search_combo_box>
 	</panel>
-	<favorites_bar name="favorite" tool_tip="Przeciągnij swoje zapisane miejsca tutaj by szybko dostać się do swoich ulubionych miejsc w Second Life!">
-		<label name="favorites_bar_label" tool_tip="Przeciągnij swoje zapisane miejsca tutaj by szybko dostać się do swoich ulubionych miejsc w Second Life!">
+	<favorites_bar name="favorite" tool_tip="Przeciągnij swoje landmarki tutaj by szybko dostać się do swoich ulubionych miejsc w Second Life!">
+		<label name="favorites_bar_label" tool_tip="Przeciągnij swoje landmarki tutaj by szybko dostać się do swoich ulubionych miejsc w Second Life!">
 			Pasek Ulubionych
 		</label>
 		<chevron_button name="&gt;&gt;" tool_tip="Pokaż więcej Moich Ulubionych"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_nearby_media.xml b/indra/newview/skins/default/xui/pl/panel_nearby_media.xml
index 2c47d2a736a8eb326078b9d90b1514bd8aeb5d02..a05c0d856fc25a7d242e2fbc1723e31b6dec06ee 100644
--- a/indra/newview/skins/default/xui/pl/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/pl/panel_nearby_media.xml
@@ -4,10 +4,10 @@
 		&lt;empty&gt;
 	</string>
 	<string name="parcel_media_name">
-		Strumień Mediów Parceli
+		Strumień Mediów Posiadłości
 	</string>
 	<string name="parcel_audio_name">
-		Strumień Audio Parceli
+		Strumień Audio Posiadłości
 	</string>
 	<string name="playing_suffix">
 		(odtwarzanie)
@@ -28,7 +28,7 @@
 		<combo_box name="show_combo">
 			<combo_box.item label="Wszystkie" name="All"/>
 			<combo_box.item label="Na obecnej Parceli" name="WithinParcel"/>
-			<combo_box.item label="Poza ParcelÄ…" name="OutsideParcel"/>
+			<combo_box.item label="Poza Posiadłością" name="OutsideParcel"/>
 			<combo_box.item label="Na innych awatarach" name="OnOthers"/>
 		</combo_box>
 		<scroll_list name="media_list">
diff --git a/indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml
index 8eaf152fb67a3c205c79299ece57f20dbc1e3cdd..5b77c390ca086677d9b596a3de48c60bef534b63 100644
--- a/indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/pl/panel_outfits_inventory_gear_default.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_gear_default">
-	<menu_item_call label="ZastÄ…p Aktualny Stroju" name="wear"/>
-	<menu_item_call label="Dodaj do Aktualnego Stroju" name="add"/>
-	<menu_item_call label="Usuń z Aktualnego Stroju" name="remove"/>
+	<menu_item_call label="ZastÄ…p Obecne Ubranie" name="wear"/>
+	<menu_item_call label="Dodaj do Obecnego Ubrania" name="add"/>
+	<menu_item_call label="Usuń z Obecnego Ubrania" name="remove"/>
 	<menu_item_call label="Zmień nazwę" name="rename"/>
 	<menu_item_call label="Usuń Link" name="remove_link"/>
 	<menu_item_call label="Usuń Ubranie" name="delete"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_people.xml b/indra/newview/skins/default/xui/pl/panel_people.xml
index b92a37907b62f2a5a33d97dec0e8e0fee592f834..5ea5356c60c62b75de522460b9cbd1d95d613f32 100644
--- a/indra/newview/skins/default/xui/pl/panel_people.xml
+++ b/indra/newview/skins/default/xui/pl/panel_people.xml
@@ -3,12 +3,12 @@
 <panel label="Ludzie" name="people_panel">
 	<string name="no_people" value="Brak ludzi"/>
 	<string name="no_one_near" value="Nikogo w pobliżu"/>
-	<string name="no_friends_online" value="Brak dostępnych przyjaciół"/>
-	<string name="no_friends" value="Brak przyjaciół"/>
+	<string name="no_friends_online" value="Brak dostępnych Znajomych"/>
+	<string name="no_friends" value="Brak Znajomych"/>
 	<string name="people_filter_label" value="Filtruj Ludzi"/>
 	<string name="groups_filter_label" value="Filtruj Grupy"/>
-	<string name="no_filtered_groups_msg" value="[secondlife:///app/search/groups Try finding the group in search?]"/>
-	<string name="no_groups_msg" value="[secondlife:///app/search/groups Try searching for some groups to join.]"/>
+	<string name="no_filtered_groups_msg" value="[secondlife:///app/search/groups Może spróbuj odnaleźć Grupę korzystając z Szukaj?]"/>
+	<string name="no_groups_msg" value="[secondlife:///app/search/groups Spróbuj wyszukać grupy aby do nich dołączyć.]"/>
 	<filter_editor label="Filtr" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="W POBLIŻU" name="nearby_panel">
@@ -28,8 +28,8 @@
 				<button name="del_btn" tool_tip="Usuń wybraną osobę ze swojej listy znajomych"/>
 			</panel>
 			<text name="no_friends_msg">
-				By dodać nową znajomość skorzystaj ze strony [secondlife:///app/search/people global search] lub kliknij prawym przyciskiem myszki na Rezydenta by wysłać mu zaproszenie.
-Jeżeli szukasz ludzi, z którymi można się spotkać, kliknij tutaj [secondlife:///app/worldmap try the Map].
+				By dodać nową znajomość skorzystaj ze strony [secondlife:///app/search/people ogólne wyszukiwanie] lub kliknij prawym przyciskiem myszki na Rezydenta by wysłać mu zaproszenie.
+Jeżeli szukasz ludzi, z którymi można się spotkać, kliknij tutaj [secondlife:///app/worldmap skorzystaj z mapy].
 			</text>
 		</panel>
 		<panel label="GRUPY" name="groups_panel">
diff --git a/indra/newview/skins/default/xui/pl/panel_pick_info.xml b/indra/newview/skins/default/xui/pl/panel_pick_info.xml
index 5b6df28883fd53aec1d45c901b5a6bdf59fb1438..0454ecc430fb5ebfb568dc4d5583a5583de7c9de 100644
--- a/indra/newview/skins/default/xui/pl/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/pl/panel_pick_info.xml
@@ -3,9 +3,9 @@
 	<text name="title" value="Info o Ulubionych"/>
 	<scroll_container name="profile_scroll">
 		<panel name="scroll_content_panel">
-			<text name="pick_name" value="[nazwa]"/>
-			<text name="pick_location" value="[ładowanie...]"/>
-			<text name="pick_desc" value="[opis]"/>
+			<text name="pick_name" value="[name]"/>
+			<text name="pick_location" value="[loading...]"/>
+			<text name="pick_desc" value="[description]"/>
 		</panel>
 	</scroll_container>
 	<panel name="buttons">
diff --git a/indra/newview/skins/default/xui/pl/panel_place_profile.xml b/indra/newview/skins/default/xui/pl/panel_place_profile.xml
index 22811cd2a12de4311a56f53a229ee9c05b17dab9..3714a141db89182bd7df7ee5a06b23a7050da8a9 100644
--- a/indra/newview/skins/default/xui/pl/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/pl/panel_place_profile.xml
@@ -99,7 +99,7 @@
 						<text name="traffic_label" value="Ruch:"/>
 						<text name="primitives_label" value="Primy:"/>
 						<text name="parcel_scripts_label" value="Skrypty:"/>
-						<text name="terraform_limits_label" value="Ograniczenia Terraformingu:"/>
+						<text name="terraform_limits_label" value="Ograniczenia terraformingu:"/>
 						<text name="subdivide_label" value="Podziel/Złącz:"/>
 						<text name="resale_label" value="Możliwość sprzedaży:"/>
 						<text name="sale_to_label" value="Na sprzedaż:"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml
index d53a99e8c107764edef0eb232cb92664b7e1f4c5..e843342aa2b5372a14c7e77abddf4aaeccfd007e 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_alerts.xml
@@ -4,7 +4,7 @@
 		Powiadom mnie:
 	</text>
 	<check_box label="Kiedy wydajÄ™ lub otrzymujÄ™ L$" name="notify_money_change_checkbox"/>
-	<check_box label="Kiedy moi znajomi zalogowujÄ… siÄ™ i wylogowujÄ…" name="friends_online_notify_checkbox"/>
+	<check_box label="Kiedy moi Znajomi zalogowujÄ… siÄ™ i wylogowujÄ…" name="friends_online_notify_checkbox"/>
 	<text name="show_label">
 		Zawsze pokazuj:
 	</text>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
index 3fc220976f0c2e810ea5455902767d7c253e0f6f..ae13cf662f615a223453e7e90016a9cb9297bf92 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
@@ -46,7 +46,7 @@
 	<check_box initial_value="true" label="Używaj animacji podczas pisania" name="play_typing_animation"/>
 	<check_box label="Wysyłaj wszystkie wiadomości (IM) na moją skrzynkę pocztową kiedy jestem niedostępny" name="send_im_to_email"/>
 	<text name="show_ims_in_label">
-		Pokaż IMy w:
+		Pokaż wiadomości (IM) w:
 	</text>
 	<text name="requires_restart_label">
 		(restart wymagany)
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml
index 37670d3470962ab47ba3df7a6d04af19dee8d2c0..bc08e025dd6287cbc3eb7cd720c387c659124a2a 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml
@@ -27,14 +27,14 @@
 	</text>
 	<panel label="CustomGraphics" name="CustomGraphics Panel">
 		<text name="ShadersText">
-			Shadery:
+			Cieniowanie pixeli (shadery):
 		</text>
 		<check_box initial_value="true" label="Mapowanie Wypukłości i Połysk" name="BumpShiny"/>
 		<check_box initial_value="true" label="Podstawowe Shadery" name="BasicShaders" tool_tip="Wyłączenie tej opcji może naprawić błędy niektórych sterowników graficznych."/>
 		<check_box initial_value="true" label="Shadery Atmosfery" name="WindLightUseAtmosShaders"/>
-		<check_box initial_value="true" label="Odbicia w Wodzie" name="Reflections"/>
+		<check_box initial_value="true" label="Refleksy w wodzie" name="Reflections"/>
 		<text name="ReflectionDetailText">
-			Ustawienia Odbić:
+			Ustawienia refleksów:
 		</text>
 		<radio_group name="ReflectionDetailRadio">
 			<radio_item label="Teren i drzewa" name="0"/>
@@ -43,22 +43,22 @@
 			<radio_item label="Wszystko" name="3"/>
 		</radio_group>
 		<text name="AvatarRenderingText">
-			Prezentacja Awatarów:
+			Rendering awatarów
 		</text>
 		<check_box initial_value="true" label="Impostoryzacja Awatarowa" name="AvatarImpostors"/>
-		<check_box initial_value="true" label="Skinning" name="AvatarVertexProgram"/>
-		<check_box initial_value="true" label="Ubranie Awatarów" name="AvatarCloth"/>
-		<slider label="Głębia Rysowania:" name="DrawDistance"/>
+		<check_box initial_value="true" label="Rendering awatara przez GPU" name="AvatarVertexProgram"/>
+		<check_box initial_value="true" label="Oddzielne warstwy ubrań" name="AvatarCloth"/>
+		<slider label="Pole widzenia:" name="DrawDistance"/>
 		<text name="DrawDistanceMeterText2">
 			m
 		</text>
-		<slider label="Liczba CzÄ…steczek:" name="MaxParticleCount"/>
+		<slider label="Liczba czÄ…steczek:" name="MaxParticleCount"/>
 		<slider label="Jakość Post-Procesu:" name="RenderPostProcess"/>
 		<text name="MeshDetailText">
-			Szczegóły Meszu:
+			Szczególy obiektów:
 		</text>
-		<slider label="  Obiekty:" name="ObjectMeshDetail"/>
-		<slider label="  Elastyczne:" name="FlexibleMeshDetail"/>
+		<slider label="  Przedmioty:" name="ObjectMeshDetail"/>
+		<slider label="  Obiekty elastyczne:" name="FlexibleMeshDetail"/>
 		<slider label="  Drzewa:" name="TreeMeshDetail"/>
 		<slider label="  Awatary:" name="AvatarMeshDetail"/>
 		<slider label="  Teren:" name="TerrainMeshDetail"/>
@@ -85,14 +85,14 @@
 			Mało
 		</text>
 		<text name="LightingDetailText">
-			Ustawienia Światła:
+			Ustawienia świateł:
 		</text>
 		<radio_group name="LightingDetailRadio">
 			<radio_item label="Tylko Słońce i Księżyc" name="SunMoon" value="0"/>
 			<radio_item label="Tylko Bliskie Światła" name="LocalLights" value="1"/>
 		</radio_group>
 		<text name="TerrainDetailText">
-			Szczgóły Terenu:
+			Szczegóły terenu:
 		</text>
 		<radio_group name="TerrainDetailRadio">
 			<radio_item label="Niska" name="0"/>
@@ -100,7 +100,7 @@
 		</radio_group>
 	</panel>
 	<button label="Zastosuj" label_selected="Zastosuj" name="Apply"/>
-	<button label="Zresetu" name="Defaults"/>
+	<button label="Zresetuj" name="Defaults"/>
 	<button label="Zaawansowane" name="Advanced"/>
 	<button label="Sprzęt" label_selected="Sprzęt" name="GraphicsHardwareButton"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
index abcb989757427804c21b4901d670f4f2140e09ed..04372208d6cc16c1f024d13c96ff24b65b7c3593 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Dźwięki" name="Preference Media panel">
 	<slider label="Główny" name="System Volume"/>
-	<check_box initial_value="true" label="Wycisz dzwięk podczas minimalizacji okna" name="mute_when_minimized"/>
+	<check_box initial_value="true" label="Wycisz podczas minimalizacji" name="mute_when_minimized"/>
 	<slider label="Interfejs" name="UI Volume"/>
 	<slider label="Otoczenie" name="Wind Volume"/>
-	<slider label="Efekty Dźwiękowe" name="SFX Volume"/>
-	<slider label="Muzyka Strumieniowa" name="Music Volume"/>
+	<slider label="Efekty dźwiękowe" name="SFX Volume"/>
+	<slider label="Muzyka strumieniowa" name="Music Volume"/>
 	<check_box label="Odtwarzaj media audio" name="music_enabled"/>
 	<slider label="Media" name="Media Volume"/>
 	<check_box label="Odtwarzaj media" name="enable_media"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_region_covenant.xml b/indra/newview/skins/default/xui/pl/panel_region_covenant.xml
index 2cfe2ca2ce71abaef7cae0cf598ce35c7dc82abc..2b37dd96b724d0fa0ead8ef7ade73376e512e38e 100644
--- a/indra/newview/skins/default/xui/pl/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_covenant.xml
@@ -58,13 +58,13 @@ wszystkich posiadłościach majątku.
 		Odsprzedaj:
 	</text>
 	<text left="115" name="resellable_clause" width="350">
-		Posiadłość zakupiona w tym regionie nie może być odsprzedana.
+		Posiadłość kupiona w tym Regionie nie może być odsprzedana.
 	</text>
 	<text name="changeable_lbl">
 		Podziel:
 	</text>
 	<text left="115" name="changeable_clause" width="350">
-		Posiadłość zakupiona w tym regionie nie może być
+		Posiadłość kupiona w tym Regionie nie może być
 łączona/dzielona.
 	</text>
 	<string name="can_resell">
diff --git a/indra/newview/skins/default/xui/pl/panel_region_debug.xml b/indra/newview/skins/default/xui/pl/panel_region_debug.xml
index 14fa3cd94c960c9e8fcf9ecf37f0a347ab44d65d..c5b08383dcccacab734e57b820fbe839d421094f 100644
--- a/indra/newview/skins/default/xui/pl/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_debug.xml
@@ -6,15 +6,15 @@
 	<text name="region_text">
 		brak danych
 	</text>
-	<check_box label="Zablokuj Skrypty" name="disable_scripts_check" tool_tip="Zablokuj wszystkie skrypty w tym Regionie"/>
+	<check_box label="Zablokuj skrypty" name="disable_scripts_check" tool_tip="Zablokuj wszystkie skrypty w tym Regionie"/>
 	<button label="?" name="disable_scripts_help"/>
-	<check_box label="Zablokuj Kolizje" name="disable_collisions_check" tool_tip="Zablokuj kolizje obiektów (nie Awatarów) w tym Regionie"/>
+	<check_box label="Zablokuj kolizje" name="disable_collisions_check" tool_tip="Zablokuj kolizje obiektów (nie awatarów) w tym Regionie"/>
 	<button label="?" name="disable_collisions_help"/>
-	<check_box label="Zablokuj Fizykę" name="disable_physics_check" tool_tip="Zablokuj wpływ fizyki w tym Regionie"/>
+	<check_box label="Zablokuj fizykę" name="disable_physics_check" tool_tip="Zablokuj wpływ fizyki w tym Regionie"/>
 	<button label="?" name="disable_physics_help"/>
 	<button label="Zastosuj" name="apply_btn"/>
 	<text name="objret_text_lbl">
-		Zwrot Obiektu
+		Zwrot obiektu
 	</text>
 	<text name="resident_text_lbl">
 		Rezydent:
@@ -30,11 +30,11 @@
 	<check_box label="Odeślij wyłącznie obiekty które są na posiadłościach innych osób" name="return_other_land" tool_tip="Odeślij wyłącznie obiekty które są na posiadłościach innych osób"/>
 	<check_box label="W każdym regionie tego majątku" name="return_estate_wide" tool_tip="Odeślij obiekty z wszystkich regionów w tym majątku"/>
 	<button label="Odeślij" name="return_btn"/>
-	<button label="Znajdź Główne Kolizje..." name="top_colliders_btn" tool_tip="Lista obiektów doświadczających najwięcej potencjalnych kolizji"/>
+	<button label="Znajdź główne kolizje..." name="top_colliders_btn" tool_tip="Lista obiektów doświadczających najwięcej potencjalnych kolizji"/>
 	<button label="?" name="top_colliders_help"/>
-	<button label="Główne Skrypty..." name="top_scripts_btn" tool_tip="Lista obiektów najdłużej wykonujących skrypty"/>
+	<button label="Główne skrypty..." name="top_scripts_btn" tool_tip="Lista obiektów najdłużej wykonujących skrypty"/>
 	<button label="?" name="top_scripts_help"/>
 	<button label="Restart Regionu" name="restart_btn" tool_tip="Odliczanie i restart Regionu za dwie minuty"/>
 	<button label="?" name="restart_help"/>
-	<button label="Opóźnij Restart" name="cancel_restart_btn" tool_tip="Opóźnij restart Regionu o godzinę"/>
+	<button label="Opóźnij restart" name="cancel_restart_btn" tool_tip="Opóźnij restart Regionu o godzinę"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_region_estate.xml b/indra/newview/skins/default/xui/pl/panel_region_estate.xml
index 78da6564489eee04df015ca355c2fc37841908e5..a79627473877e365f688c891916881407456334b 100644
--- a/indra/newview/skins/default/xui/pl/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_estate.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="MajÄ…tek" name="Estate">
 	<text name="estate_help_text">
-		Zmiany w tej zakładce będą odczuwalne w całym regionie.
+		Zmiany w tej zakładce będą odczuwalne w całym Regionie.
 	</text>
 	<text name="estate_text">
 		MajÄ…tek:
@@ -15,19 +15,19 @@
 	<text name="estate_owner">
 		(brak danych)
 	</text>
-	<check_box label="Używaj Czasu Światowego" name="use_global_time_check"/>
+	<check_box label="Używaj czasu światowego" name="use_global_time_check"/>
 	<button label="?" name="use_global_time_help"/>
 	<check_box label="Stałe Słońce" name="fixed_sun_check"/>
 	<button label="?" name="fixed_sun_help"/>
-	<slider label="Pora Doby" name="sun_hour_slider"/>
-	<check_box label="Dostęp Publiczny" name="externally_visible_check"/>
+	<slider label="Pora doby" name="sun_hour_slider"/>
+	<check_box label="Dostęp publiczny" name="externally_visible_check"/>
 	<button label="?" name="externally_visible_help"/>
 	<text name="Only Allow">
-		Ogranicz Dostęp dla kont zweryfikowanych przez:
+		Ogranicz dostęp dla kont zweryfikowanych przez:
 	</text>
 	<check_box label="Rezydenci z danymi o koncie" name="limit_payment" tool_tip="Zbanuj niezidentyfikowanych Rezydentów"/>
 	<check_box label="Rezydenci, którzy dokonali weryfikacji wieku" name="limit_age_verified" tool_tip="Zbanuj Rezydentów, którzy nie zweryfikowali swojego wieku. Odwiedź stronę [SUPPORT_SITE] po więcej informacji."/>
-	<check_box label="Rozmowy Dozwolone" name="voice_chat_check"/>
+	<check_box label="Rozmowy dozwolone" name="voice_chat_check"/>
 	<button label="?" name="voice_chat_help"/>
 	<check_box label="Teleportacja Dozwolona" name="allow_direct_teleport"/>
 	<button label="?" name="allow_direct_teleport_help"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_region_general.xml b/indra/newview/skins/default/xui/pl/panel_region_general.xml
index 26076b9a1aae645227562e3ecae7083780c2fbdd..1410a2a88293772505e3107ec77e16dd13b06151 100644
--- a/indra/newview/skins/default/xui/pl/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_general.xml
@@ -18,16 +18,16 @@
 	<text name="region_type">
 		nieznany
 	</text>
-	<check_box label="Zablokuj Zmiany Terenu" name="block_terraform_check"/>
-	<check_box label="Zablokuj Latanie" name="block_fly_check"/>
-	<check_box label="Uszkodzenia Dozwolone" name="allow_damage_check"/>
-	<check_box label="Zablokuj Popychanie" name="restrict_pushobject"/>
-	<check_box label="Odsprzedaż Dozwolona" name="allow_land_resell_check"/>
-	<check_box label="Łączenie/Dzielenie Dozwolone" name="allow_parcel_changes_check"/>
-	<check_box label="Zablokuj Wyszukiwanie" name="block_parcel_search_check" tool_tip="Pozwól na wyświetlanie nazwy regionu i posiadłości w wynikach wyszukiwania"/>
+	<check_box label="Zablokuj zmiany terenu" name="block_terraform_check"/>
+	<check_box label="Zablokuj latanie" name="block_fly_check"/>
+	<check_box label="Uszkodzenia dozwolone" name="allow_damage_check"/>
+	<check_box label="Zablokuj popychanie" name="restrict_pushobject"/>
+	<check_box label="Odsprzedaż dozwolona" name="allow_land_resell_check"/>
+	<check_box label="Łączenie/Dzielenie dozwolone" name="allow_parcel_changes_check"/>
+	<check_box label="Zablokuj wyszukiwanie" name="block_parcel_search_check" tool_tip="Pozwól na wyświetlanie nazwy regionu i posiadłości w wynikach wyszukiwania"/>
 	<spinner label="Limit Gości" name="agent_limit_spin"/>
-	<spinner label="Ekstra Obiekty" name="object_bonus_spin"/>
-	<text label="Ograniczenia Wieku" name="access_text">
+	<spinner label="Ekstra obiekty" name="object_bonus_spin"/>
+	<text label="Ograniczenia wieku" name="access_text">
 		Rodzaj:
 	</text>
 	<icons_combo_box label="&apos;Mature&apos;" name="access_combo">
@@ -36,8 +36,8 @@
 		<icons_combo_box.item label="&apos;PG&apos;" name="PG" value="13"/>
 	</icons_combo_box>
 	<button label="Zastosuj" name="apply_btn"/>
-	<button label="Teleportuj do Miejsca Startu Jednego Rezydenta..." name="kick_btn"/>
-	<button label="Teleportuj do Miejsca Startu Wszystkich Rezydentów..." name="kick_all_btn"/>
-	<button label="Wyślij Wiadomość do Regionu..." name="im_btn"/>
-	<button label="Obsługa Teleportera..." name="manage_telehub_btn"/>
+	<button label="Teleportuj do Miejsca Startu jednego Rezydenta..." name="kick_btn"/>
+	<button label="Teleportuj do Miejsca Startu wszystkich Rezydentów..." name="kick_all_btn"/>
+	<button label="Wyślij wiadomość do Regionu..." name="im_btn"/>
+	<button label="Obsługa teleportera..." name="manage_telehub_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_region_general_layout.xml b/indra/newview/skins/default/xui/pl/panel_region_general_layout.xml
index 6e53e8b7e45515aedeb3bd63df1aae2c35a1de30..ffa8f1e18ad7cc8b683f67e04473977c06f75fa9 100644
--- a/indra/newview/skins/default/xui/pl/panel_region_general_layout.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_general_layout.xml
@@ -18,16 +18,16 @@
 	<text name="region_type">
 		nieznany
 	</text>
-	<check_box label="Zablokuj Zmiany Terenu" name="block_terraform_check"/>
-	<check_box label="Zablokuj Latanie" name="block_fly_check"/>
-	<check_box label="Uszkodzenia Dozwolone" name="allow_damage_check"/>
-	<check_box label="Zablokuj Popychanie" name="restrict_pushobject"/>
-	<check_box label="Odsprzedaż Dozwolona" name="allow_land_resell_check"/>
-	<check_box label="Łączenie/Dzielenie Dozwolone" name="allow_parcel_changes_check"/>
-	<check_box label="Zablokuj Wyszukiwanie" name="block_parcel_search_check" tool_tip="Pozwól na wyświetlanie nazwy regionu i posiadłości w wynikach wyszukiwania"/>
+	<check_box label="Zablokuj zmiany terenu" name="block_terraform_check"/>
+	<check_box label="Zablokuj latanie" name="block_fly_check"/>
+	<check_box label="Uszkodzenia dozwolone" name="allow_damage_check"/>
+	<check_box label="Zablokuj popychanie" name="restrict_pushobject"/>
+	<check_box label="Odsprzedaż dozwolona" name="allow_land_resell_check"/>
+	<check_box label="Łączenie/Dzielenie dozwolone" name="allow_parcel_changes_check"/>
+	<check_box label="Zablokuj wyszukiwanie" name="block_parcel_search_check" tool_tip="Pozwól na wyświetlanie nazwy Regionu i Posiadłości w wynikach wyszukiwania"/>
 	<spinner label="Limit Gości" name="agent_limit_spin"/>
-	<spinner label="Ekstra Obiekty" name="object_bonus_spin"/>
-	<text label="Restrykcje Wieku" name="access_text">
+	<spinner label="Ekstra obiekty" name="object_bonus_spin"/>
+	<text label="Restrykcje wieku" name="access_text">
 		Rodzaj:
 	</text>
 	<combo_box label="Moderuj" name="access_combo">
@@ -36,8 +36,8 @@
 		<combo_box.item label="Ogólne" name="PG"/>
 	</combo_box>
 	<button label="Zastosuj" name="apply_btn"/>
-	<button label="Teleportuj do Miejsca Startu Jednego Rezydenta..." name="kick_btn"/>
-	<button label="Teleportuj do Miejsca Startu Wszystkich Rezydentów..." name="kick_all_btn"/>
-	<button label="Wyślij Wiadomość do Regionu..." name="im_btn"/>
-	<button label="Obsługa Teleportera..." name="manage_telehub_btn"/>
+	<button label="Teleportuj do Miejsca Startu jednego Rezydenta..." name="kick_btn"/>
+	<button label="Teleportuj do Miejsca Startu wszystkich Rezydentów..." name="kick_all_btn"/>
+	<button label="Wyślij wiadomość do Regionu..." name="im_btn"/>
+	<button label="Obsługa teleportera..." name="manage_telehub_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_region_terrain.xml b/indra/newview/skins/default/xui/pl/panel_region_terrain.xml
index b206616e348ae739a801b2f85c8652a569f23b69..917ae917740d4bf7092405897a86f668c4769958 100644
--- a/indra/newview/skins/default/xui/pl/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/pl/panel_region_terrain.xml
@@ -6,22 +6,22 @@
 	<text name="region_text">
 		brak danych
 	</text>
-	<spinner label="Poziom Wody" name="water_height_spin" />
+	<spinner label="Poziom wody" name="water_height_spin" />
 	<button label="?" name="water_height_help" />
-	<spinner label="Górny Limit Terenu" name="terrain_raise_spin" />
+	<spinner label="Górny limit terenu" name="terrain_raise_spin" />
 	<button label="?" name="terrain_raise_help" />
-	<spinner label="Dolny Limit Terenu" name="terrain_lower_spin" />
+	<spinner label="Dolny limit terenu" name="terrain_lower_spin" />
 	<button label="?" name="terrain_lower_help" />
 	<check_box label="Używaj Słońca Majątku" name="use_estate_sun_check" />
 	<button label="?" name="use_estate_sun_help" />
 	<check_box label="Stałe Słońce" name="fixed_sun_check" />
 	<button label="?" name="fixed_sun_help" />
-	<slider label="Pora Doby" name="sun_hour_slider" />
+	<slider label="Pora doby" name="sun_hour_slider" />
 	<button label="Zastosuj" name="apply_btn" />
-	<button label="Zapisz Surowy Teren..." name="download_raw_btn"
+	<button label="Zapisz surowy teren..." name="download_raw_btn"
 	     tool_tip="Dostępne tylko dla Właścicieli Majątku, nie dla Zarządców" />
 	<button label="?" name="download_raw_help" />
-	<button label="Załaduj Surowy Teren..." name="upload_raw_btn"
+	<button label="Załaduj surowy teren..." name="upload_raw_btn"
 	     tool_tip="Dostępne tylko dla Właścicieli Majątku, nie dla Zarządców" />
 	<button label="?" name="upload_raw_help" />
 	<button label="Ustal Teren" name="bake_terrain_btn"
diff --git a/indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml
index 1841e1544e5af876edc16c492085a0f2c2d01f73..e1863517a240d4e62dd1d1222f1f665452c3bac1 100644
--- a/indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml
+++ b/indra/newview/skins/default/xui/pl/panel_script_limits_my_avatar.xml
@@ -12,5 +12,5 @@
 		<scroll_list.columns label="Nazwa Obiektu" name="name"/>
 		<scroll_list.columns label="Lokalizacja" name="location"/>
 	</scroll_list>
-	<button label="Odśwież Listę" name="refresh_list_btn"/>
+	<button label="Odśwież listę" name="refresh_list_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml
index f1de73c84db2e0bb887de3b3233b805bea3b1132..1419a9c9f6184764581a70372f9582098783f22a 100644
--- a/indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml
+++ b/indra/newview/skins/default/xui/pl/panel_script_limits_region_memory.xml
@@ -14,7 +14,7 @@
 		<scroll_list.columns label="Parcela" name="parcel"/>
 		<scroll_list.columns label="Lokalizacja" name="location"/>
 	</scroll_list>
-	<button label="Odśwież Listę" name="refresh_list_btn"/>
+	<button label="Odśwież listę" name="refresh_list_btn"/>
 	<button label="Pokaż" name="highlight_btn"/>
 	<button label="Zwróć" name="return_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml
index e47a15b67a27b51ac86c9bba659649947e0f9fbc..0f99f3911cea1ced9202e8d340fe7e8fce524760 100644
--- a/indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml
+++ b/indra/newview/skins/default/xui/pl/panel_stand_stop_flying.xml
@@ -2,5 +2,5 @@
 <!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml-->
 <panel name="panel_stand_stop_flying">
 	<button label="Wstań" name="stand_btn" tool_tip="Kliknij tutaj by wstać."/>
-	<button label="Zatrzymaj Latanie" name="stop_fly_btn" tool_tip="Zatrzymaj Latanie"/>
+	<button label="Zatrzymaj latanie" name="stop_fly_btn" tool_tip="Zatrzymaj latanie"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_status_bar.xml b/indra/newview/skins/default/xui/pl/panel_status_bar.xml
index 8e03d2a3b95b4b0b3fbbae8e8299b37b660d8c4c..cd2ae14f6ccd75a0e9a8e768ce634b80f4d493f7 100644
--- a/indra/newview/skins/default/xui/pl/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/pl/panel_status_bar.xml
@@ -7,7 +7,7 @@
 		Styczeń:Luty:Marzec:Kwiecień:Maj:Czerwiec:Lipiec:Styczeń:Wrzesień:Październik:Listopad:Grudzień
 	</panel.string>
 	<panel.string name="packet_loss_tooltip">
-		Utracone Pakiety
+		Utracone pakiety
 	</panel.string>
 	<panel.string name="bandwidth_tooltip">
 		Przepustowość
diff --git a/indra/newview/skins/default/xui/pl/panel_world_map.xml b/indra/newview/skins/default/xui/pl/panel_world_map.xml
index 70479fe20906ee4d2c2b0ea7c3a6cf5a232af9e1..849b01a1cef5d2e3b3183296a6f9e4305c008eac 100644
--- a/indra/newview/skins/default/xui/pl/panel_world_map.xml
+++ b/indra/newview/skins/default/xui/pl/panel_world_map.xml
@@ -4,7 +4,7 @@
 		Ładowanie...
 	</panel.string>
 	<panel.string name="InvalidLocation">
-		Niewłaściwa Lokalizacja
+		Niewłaściwa lokalizacja
 	</panel.string>
 	<panel.string name="world_map_north">
 		N
diff --git a/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml b/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml
index c986179377171af3752cb4b8be26e4a6f5c23ff9..3b038a71028a4f8b06f0b24c588250f9982b5528 100644
--- a/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml
@@ -54,7 +54,7 @@
 			</text>
 			<check_box label="Udostępnij" name="CheckShareWithGroup" tool_tip="Pozwól wszystkim członkom ustawionej grupy na dzielenie prawa do modyfikacji dla tego obiektu. Musisz Przypisać aby aktywować ograniczenia wynikające z roli."/>
 			<text name="NextOwnerLabel">
-				Następny właściciel:
+				Następny Właściciel:
 			</text>
 			<check_box label="Modyfikuje" name="CheckNextOwnerModify"/>
 			<check_box label="Kopiuje" name="CheckNextOwnerCopy"/>
diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml
index f01dd9c475b1dd51df0b44a70043422d7367b774..c72f783a5189840a5b01f7efdf7bfa69882578c6 100644
--- a/indra/newview/skins/default/xui/pl/strings.xml
+++ b/indra/newview/skins/default/xui/pl/strings.xml
@@ -1902,25 +1902,25 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Cień o godzinie 5
 	</string>
 	<string name="All White">
-		Wszystko Białe
+		Wszystko białe
 	</string>
 	<string name="Anime Eyes">
-		Animuj Oczy
+		Animuj oczy
 	</string>
 	<string name="Arced">
 		Obrócony
 	</string>
 	<string name="Arm Length">
-		Długość Ramienia
+		Długość ramienia
 	</string>
 	<string name="Attached">
 		Dołączone
 	</string>
 	<string name="Attached Earlobes">
-		Płatki Uszu Dołączone
+		Płatki uszu dołączone
 	</string>
 	<string name="Back Fringe">
-		Tylnia Grzywka
+		Tylnia grzywka
 	</string>
 	<string name="Baggy">
 		Wypchane
@@ -1941,13 +1941,13 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Duży Pośladek
 	</string>
 	<string name="Big Hair Back">
-		Duże Włosy: z Tyłu
+		Duże Włosy: z tyłu
 	</string>
 	<string name="Big Hair Front">
-		Duże Włosy: z Przodu
+		Duże Włosy: z przodu
 	</string>
 	<string name="Big Hair Top">
-		Duże Włosy: z Góry
+		Duże Włosy: z góry
 	</string>
 	<string name="Big Head">
 		Duża Głowa
@@ -1965,22 +1965,22 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Blond
 	</string>
 	<string name="Blonde Hair">
-		Włosy Koloru Blond
+		Włosy Blond
 	</string>
 	<string name="Blush">
 		Rumieniec
 	</string>
 	<string name="Blush Color">
-		Kolor Rumieńca
+		Kolor rumieńca
 	</string>
 	<string name="Blush Opacity">
-		Intensywność Rumieńca
+		Intensywność rumieńca
 	</string>
 	<string name="Body Definition">
-		Detale Ciała
+		Detale ciała
 	</string>
 	<string name="Body Fat">
-		Zawartość Tkanki Tłuszczowej
+		Zawartość tkanki tłuszczowej
 	</string>
 	<string name="Body Freckles">
 		Piegi
@@ -1998,13 +1998,13 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Bow Legged
 	</string>
 	<string name="Breast Buoyancy">
-		Jędrność Piersi
+		Jędrność piersi
 	</string>
 	<string name="Breast Cleavage">
-		Odstęp Między Piersiami
+		Odstęp między piersiami
 	</string>
 	<string name="Breast Size">
-		Rozmiar Piersi
+		Rozmiar piersi
 	</string>
 	<string name="Bridge Width">
 		Szerokość
@@ -2013,7 +2013,7 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Szerokie
 	</string>
 	<string name="Brow Size">
-		Rozmiar Czoła
+		Rozmiar czoła
 	</string>
 	<string name="Bug Eyes">
 		Bug Eyes
@@ -2049,34 +2049,34 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Chaplin
 	</string>
 	<string name="Cheek Bones">
-		Kości Policzkowe
+		Kości policzkowe
 	</string>
 	<string name="Chest Size">
-		Rozmiar Klatki Piersiowej
+		Rozmiar klatki piersiowej
 	</string>
 	<string name="Chin Angle">
-		Kąt Podbródka
+		Kąt podbródka
 	</string>
 	<string name="Chin Cleft">
-		Dołek w Podbródku
+		Dołek w podbródku
 	</string>
 	<string name="Chin Curtains">
-		Zasłonięcie Podbródka
+		Zasłonięcie podbródka
 	</string>
 	<string name="Chin Depth">
-		Długość Podbródka
+		Długość podbródka
 	</string>
 	<string name="Chin Heavy">
-		Ciężar Podbródka
+		Ciężar podbródka
 	</string>
 	<string name="Chin In">
-		Podbródek Wewnątrz
+		Podbródek wewnątrz
 	</string>
 	<string name="Chin Out">
-		Podbródek Zewnętrzny
+		Podbródek zewnętrzny
 	</string>
 	<string name="Chin-Neck">
-		Podwójny Podbródek
+		Podwójny podbródek
 	</string>
 	<string name="Clear">
 		Wyczyść
@@ -2091,25 +2091,25 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Zamknięte
 	</string>
 	<string name="Closed Back">
-		Zamknięte z Tyłu
+		Zamknięte z tyłu
 	</string>
 	<string name="Closed Front">
-		Zamknięte z Przodu
+		Zamknięte z przodu
 	</string>
 	<string name="Closed Left">
-		Lewe Oko Zamknięte
+		Lewe Oko zamknięte
 	</string>
 	<string name="Closed Right">
-		Prawe Oko Zamknięte
+		Prawe Oko zamknięte
 	</string>
 	<string name="Coin Purse">
 		Coin Purse
 	</string>
 	<string name="Collar Back">
-		Kołnierz z Tyłu
+		Kołnierz z tyłu
 	</string>
 	<string name="Collar Front">
-		Kołnierz z Przodu
+		Kołnierz z przodu
 	</string>
 	<string name="Corner Down">
 		Corner Down
@@ -2121,7 +2121,7 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Pognieciony
 	</string>
 	<string name="Crooked Nose">
-		Skrzywienie Nosa
+		Skrzywienie nosa
 	</string>
 	<string name="Cuff Flare">
 		Cuff Flare
@@ -2130,7 +2130,7 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Ciemne
 	</string>
 	<string name="Dark Green">
-		Ciemne Zielone
+		Ciemne zielone
 	</string>
 	<string name="Darker">
 		Ciemniejsze
@@ -2145,7 +2145,7 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Gęstość
 	</string>
 	<string name="Double Chin">
-		Podwójny Podbródek
+		Podwójny podbródek
 	</string>
 	<string name="Downturned">
 		Downturned
@@ -2154,58 +2154,58 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Duffle Bag
 	</string>
 	<string name="Ear Angle">
-		Odstawanie Uszu
+		Odstawanie uszu
 	</string>
 	<string name="Ear Size">
-		Rozmiar Uszu
+		Rozmiar uszu
 	</string>
 	<string name="Ear Tips">
-		Wierzchołki Uszu
+		Wierzchołki uszu
 	</string>
 	<string name="Egg Head">
-		Jajowata Głowa
+		Jajowata głowa
 	</string>
 	<string name="Eye Bags">
-		Woreczek Łzowy
+		Woreczek łzowy
 	</string>
 	<string name="Eye Color">
-		Kolor Oczu
+		Kolor oczu
 	</string>
 	<string name="Eye Depth">
-		Głębokość Osadzenia Oczu
+		Głębokość osadzenia oczu
 	</string>
 	<string name="Eye Lightness">
-		Ustawienie Jasności Oczu
+		Ustawienie jasności oczu
 	</string>
 	<string name="Eye Opening">
-		Oczy Otwarte
+		Oczy otwarte
 	</string>
 	<string name="Eye Pop">
-		Różnica w Wielkości Oczu
+		Różnica w wielkości oczu
 	</string>
 	<string name="Eye Size">
-		Rozmiar Oczu
+		Rozmiar oczu
 	</string>
 	<string name="Eye Spacing">
-		Rozstaw Oczu
+		Rozstaw oczu
 	</string>
 	<string name="Eyebrow Arc">
-		Łuk Brwiowy
+		Łuk brwiowy
 	</string>
 	<string name="Eyebrow Density">
-		Gęstość Brwi
+		Gęstość brwi
 	</string>
 	<string name="Eyebrow Height">
-		Wysokość Brwi
+		Wysokość brwi
 	</string>
 	<string name="Eyebrow Points">
-		Kształt Brwi
+		Kształt brwi
 	</string>
 	<string name="Eyebrow Size">
-		Rozmiar Brwi
+		Rozmiar brwi
 	</string>
 	<string name="Eyelash Length">
-		Długość Rzęs
+		Długość rzęs
 	</string>
 	<string name="Eyeliner">
 		Eyeliner
@@ -2217,16 +2217,16 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Eyes Bugged
 	</string>
 	<string name="Face Shear">
-		Usunięcie Twarzy
+		Usunięcie twarzy
 	</string>
 	<string name="Facial Definition">
-		Detale Twarzy
+		Detale twarzy
 	</string>
 	<string name="Far Set Eyes">
 		Far Set Eyes
 	</string>
 	<string name="Fat Lips">
-		Grube Usta
+		Grube usta
 	</string>
 	<string name="Female">
 		Kobieta
@@ -2238,28 +2238,28 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Palce
 	</string>
 	<string name="Flared Cuffs">
-		Flared Cuffs
+		Rozszerzane rękawy
 	</string>
 	<string name="Flat">
 		Płaskość
 	</string>
 	<string name="Flat Butt">
-		Płaskie Pośladki
+		Płaskie pośladki
 	</string>
 	<string name="Flat Head">
-		Płaska Głowa
+		Płaska głowa
 	</string>
 	<string name="Flat Toe">
-		Płaski Palec
+		Płaski palec
 	</string>
 	<string name="Foot Size">
-		Rozmiar Stopy
+		Rozmiar stopy
 	</string>
 	<string name="Forehead Angle">
-		Kształt Czoła
+		Kształt czoła
 	</string>
 	<string name="Forehead Heavy">
-		Ciężar Czoła
+		Ciężar czoła
 	</string>
 	<string name="Freckles">
 		Piegi
@@ -2268,19 +2268,19 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Przednia Grzywka
 	</string>
 	<string name="Full Back">
-		Gęstość Włosów po Bokach
+		Gęstość włosów po bokach
 	</string>
 	<string name="Full Eyeliner">
-		Gęsty Eyeliner
+		Gęsta kredka do oczu
 	</string>
 	<string name="Full Front">
-		Gęsty Przód
+		Gęsty przód
 	</string>
 	<string name="Full Hair Sides">
-		Gęste Włosy po Bokach
+		Gęste włosy po bokach
 	</string>
 	<string name="Full Sides">
-		Gęste Boki
+		Gęste boki
 	</string>
 	<string name="Glossy">
 		Błyszczące
@@ -2289,64 +2289,64 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Rękawiczki
 	</string>
 	<string name="Glove Length">
-		Długość Rękawiczek
+		Długość rękawiczek
 	</string>
 	<string name="Hair">
 		Włosy
 	</string>
 	<string name="Hair Back">
-		Włosy: z Tyłu
+		Włosy: z tyłu
 	</string>
 	<string name="Hair Front">
-		Włosy: z Przodu
+		Włosy: z przodu
 	</string>
 	<string name="Hair Sides">
-		Hair: Boki
+		Włosy: boki
 	</string>
 	<string name="Hair Sweep">
-		Kierunek Zaczesania
+		Kierunek zaczesania
 	</string>
 	<string name="Hair Thickess">
-		Grubość Włosów
+		Grubość włosów
 	</string>
 	<string name="Hair Thickness">
-		Grubość Włosów
+		Grubość włosów
 	</string>
 	<string name="Hair Tilt">
-		Przesunięcie Fryzury
+		Przes. fryzury
 	</string>
 	<string name="Hair Tilted Left">
-		Przesunięcie Fryzury w Lewo
+		Przes. fryzury L
 	</string>
 	<string name="Hair Tilted Right">
-		Przesunięcie Fryzury w Prawo
+		Przes. fryzury P
 	</string>
 	<string name="Hair Volume">
-		Włosy: Objętość
+		Włosy: objętość
 	</string>
 	<string name="Hand Size">
-		Rozmiar Dłoni
+		Rozmiar dłoni
 	</string>
 	<string name="Handlebars">
 		Handlebars
 	</string>
 	<string name="Head Length">
-		Długość Głowy
+		Długość głowy
 	</string>
 	<string name="Head Shape">
-		Kształt Głowy
+		Kształt głowy
 	</string>
 	<string name="Head Size">
-		Rozmiar Głowy
+		Rozmiar głowy
 	</string>
 	<string name="Head Stretch">
-		Rozciągnięcie Głowy
+		Rozciągnięcie głowy
 	</string>
 	<string name="Heel Height">
-		Wysokość Obcasa
+		Wysokość obcasa
 	</string>
 	<string name="Heel Shape">
-		Ksztalt Obcasa
+		Ksztalt obcasa
 	</string>
 	<string name="Height">
 		Wysokość
@@ -2355,7 +2355,7 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Wysoka
 	</string>
 	<string name="High Heels">
-		Wysokie Obcasy
+		Wysokie obcasy
 	</string>
 	<string name="High Jaw">
 		High Jaw
@@ -2370,34 +2370,34 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Wyżej
 	</string>
 	<string name="Hip Length">
-		Długość Bioder
+		Długość bioder
 	</string>
 	<string name="Hip Width">
-		Szerokość Bioder
+		Szerokość bioder
 	</string>
 	<string name="In">
 		W
 	</string>
 	<string name="In Shdw Color">
-		Wewnętrzny Kolor Cienia
+		Wewnętrzny kolor cienia
 	</string>
 	<string name="In Shdw Opacity">
-		Wewnętrzna Intensywność Cienia
+		Wewnętrzna intensywność cienia
 	</string>
 	<string name="Inner Eye Corner">
-		Wenwętrzny Bok Oka
+		Wenwętrzny bok oka
 	</string>
 	<string name="Inner Eye Shadow">
-		Wewnętrzny Cień Oka
+		Wewnętrzny cień oka
 	</string>
 	<string name="Inner Shadow">
-		Wewnętrzny Cień
+		Wewnętrzny cień
 	</string>
 	<string name="Jacket Length">
-		Długość Kurtki
+		Długość kurtki
 	</string>
 	<string name="Jacket Wrinkles">
-		Zmarszczki na Kurtce
+		Zmarszczki na kurtce
 	</string>
 	<string name="Jaw Angle">
 		Jaw Angle
@@ -2415,7 +2415,7 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Jowls
 	</string>
 	<string name="Knee Angle">
-		KÄ…t Kolana
+		KÄ…t kolana
 	</string>
 	<string name="Knock Kneed">
 		Knock Kneed
@@ -2424,22 +2424,22 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Duże
 	</string>
 	<string name="Large Hands">
-		Duże Dłonie
+		Duże dłonie
 	</string>
 	<string name="Left Part">
 		Left Part
 	</string>
 	<string name="Leg Length">
-		Długość Nogi
+		Długość nogi
 	</string>
 	<string name="Leg Muscles">
-		Umięśnione Nogi
+		Umięśnione nogi
 	</string>
 	<string name="Less">
 		Mniej
 	</string>
 	<string name="Less Body Fat">
-		Mniejsza Zawartości Tkanki Tłuszczowej
+		Mniejsza zawartości tkanki tłuszczowej
 	</string>
 	<string name="Less Curtains">
 		Less Curtains
@@ -2448,7 +2448,7 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Mniej Piegów
 	</string>
 	<string name="Less Full">
-		Less Full
+		Mniej Pełne
 	</string>
 	<string name="Less Gravity">
 		Mniej Ciężaru
@@ -2457,25 +2457,25 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Less Love
 	</string>
 	<string name="Less Muscles">
-		Mniej Mięśni
+		Mniej mięśni
 	</string>
 	<string name="Less Muscular">
-		Mniej Umięśnienia
+		Mniej umięśnienia
 	</string>
 	<string name="Less Rosy">
 		Less Rosy
 	</string>
 	<string name="Less Round">
-		Mniej ZaaokrÄ…glone
+		Mniej zaaokrÄ…glone
 	</string>
 	<string name="Less Saddle">
 		Less Saddle
 	</string>
 	<string name="Less Square">
-		Mniej Kwadratowe
+		Mniej kwadratowe
 	</string>
 	<string name="Less Volume">
-		Mniej Objętości
+		Mniej objętości
 	</string>
 	<string name="Less soul">
 		Less soul
@@ -2484,25 +2484,25 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Lżejsze
 	</string>
 	<string name="Lip Cleft">
-		Szerokość Rozszczepienia Górnej Wargi
+		Szerokość Rozszczepienia górnej wargi
 	</string>
 	<string name="Lip Cleft Depth">
-		Głębokość Rozszczepienia Górnej Wargi
+		Głębokość rozszczepienia górnej wargi
 	</string>
 	<string name="Lip Fullness">
-		Pełność Ust
+		Pełne usta
 	</string>
 	<string name="Lip Pinkness">
-		Róż Ust
+		Róż ust
 	</string>
 	<string name="Lip Ratio">
-		Proporcje Ust
+		Proporcje ust
 	</string>
 	<string name="Lip Thickness">
-		Grubość Ust
+		Grubość ust
 	</string>
 	<string name="Lip Width">
-		Szerokość Ust
+		Szerokość ust
 	</string>
 	<string name="Lipgloss">
 		Połysk
@@ -2511,43 +2511,43 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Szminka
 	</string>
 	<string name="Lipstick Color">
-		Kolor Szminki
+		Kolor szminki
 	</string>
 	<string name="Long">
 		Dlugość
 	</string>
 	<string name="Long Head">
-		Długa Głowa
+		Długa głowa
 	</string>
 	<string name="Long Hips">
-		Długie Biodra
+		Długie biodra
 	</string>
 	<string name="Long Legs">
-		Długie Nogi
+		Długie nogi
 	</string>
 	<string name="Long Neck">
-		Długi Kark
+		Długi kark
 	</string>
 	<string name="Long Pigtails">
-		Długi Warkocz
+		Długi warkocz
 	</string>
 	<string name="Long Ponytail">
-		Długi Kucyk
+		Długi kucyk
 	</string>
 	<string name="Long Torso">
-		Długi Tułów
+		Długi tułów
 	</string>
 	<string name="Long arms">
-		Dlugie Ramiona
+		Dlugie ramiona
 	</string>
 	<string name="Loose Pants">
-		Luźne Spodnie
+		Luźne spodnie
 	</string>
 	<string name="Loose Shirt">
-		Luźna Koszulka
+		Luźna koszulka
 	</string>
 	<string name="Loose Sleeves">
-		Luźne Rękawy
+		Luźne rękawy
 	</string>
 	<string name="Love Handles">
 		Love Handles
@@ -2556,16 +2556,16 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Nisko
 	</string>
 	<string name="Low Heels">
-		Niskie Obcasy
+		Niskie obcasy
 	</string>
 	<string name="Low Jaw">
-		Niska Szczęka
+		Niska szczęka
 	</string>
 	<string name="Low Platforms">
 		Low Platforms
 	</string>
 	<string name="Low and Loose">
-		Niskie i Luźne
+		Niskie i luźne
 	</string>
 	<string name="Lower">
 		Niżej
@@ -2580,7 +2580,7 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Mężczyzna
 	</string>
 	<string name="Middle Part">
-		Część Środkowa
+		Część środkowa
 	</string>
 	<string name="More">
 		Więcej
@@ -2589,7 +2589,7 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		More Blush
 	</string>
 	<string name="More Body Fat">
-		Więcej Zawartości Tkanki Tłuszczowej
+		Więcej zawartości tkanki tłuszczowej
 	</string>
 	<string name="More Curtains">
 		More Curtains
@@ -2598,34 +2598,34 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		More Eyeshadow
 	</string>
 	<string name="More Freckles">
-		Więcej Piegów
+		Więcej piegów
 	</string>
 	<string name="More Full">
 		More Full
 	</string>
 	<string name="More Gravity">
-		Więcej Ciężaru
+		Więcej ciężaru
 	</string>
 	<string name="More Lipstick">
-		Więcej Szminki
+		Więcej szminki
 	</string>
 	<string name="More Love">
 		More Love
 	</string>
 	<string name="More Lower Lip">
-		Więcej Dolnej Wargi
+		Więcej dolnej wargi
 	</string>
 	<string name="More Muscles">
-		Więcej Mięśni
+		Więcej mięśni
 	</string>
 	<string name="More Muscular">
-		Więcej Umięśnienia
+		Więcej umięśnienia
 	</string>
 	<string name="More Rosy">
 		More Rosy
 	</string>
 	<string name="More Round">
-		Więcej Zaokrąglenia
+		Więcej zaokrąglenia
 	</string>
 	<string name="More Saddle">
 		More Saddle
@@ -2634,16 +2634,16 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		More Sloped
 	</string>
 	<string name="More Square">
-		Więcej Kwadratowy
+		Więcej kwadratowy
 	</string>
 	<string name="More Upper Lip">
-		Więcej Górnej Wargi
+		Więcej górnej wargi
 	</string>
 	<string name="More Vertical">
 		More Vertical
 	</string>
 	<string name="More Volume">
-		Więcej Objętości
+		Więcej objętości
 	</string>
 	<string name="More soul">
 		More soul
@@ -2667,10 +2667,10 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Mutton Chops
 	</string>
 	<string name="Nail Polish">
-		Lakier na Paznokciach
+		Lakier na paznokciach
 	</string>
 	<string name="Nail Polish Color">
-		Kolor Lakieru na Paznokciach
+		Kolor lakieru na paznokciach
 	</string>
 	<string name="Narrow">
 		WÄ…skie
@@ -2688,10 +2688,10 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Naturalne
 	</string>
 	<string name="Neck Length">
-		Długość Karku
+		Długość karku
 	</string>
 	<string name="Neck Thickness">
-		Grubość Karku
+		Grubość karku
 	</string>
 	<string name="No Blush">
 		No Blush
@@ -2700,64 +2700,64 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Brak Eyeliner&apos;s
 	</string>
 	<string name="No Eyeshadow">
-		Brak Cienia pod PowiekÄ…
+		Brak cienia pod powiekÄ…
 	</string>
 	<string name="No Lipgloss">
-		Brak Połysku
+		Brak połysku
 	</string>
 	<string name="No Lipstick">
-		Brak Szminki
+		Brak szminki
 	</string>
 	<string name="No Part">
 		No Part
 	</string>
 	<string name="No Polish">
-		Brak Lakieru
+		Brak lakieru
 	</string>
 	<string name="No Red">
-		Brak Czerwieni
+		Brak czerwieni
 	</string>
 	<string name="No Spikes">
-		Brak Szpiców
+		Brak szpiców
 	</string>
 	<string name="No White">
-		Brak Białego
+		Brak białego
 	</string>
 	<string name="No Wrinkles">
-		Brak Zmarszczek
+		Brak zmarszczek
 	</string>
 	<string name="Normal Lower">
-		Dół Normalny
+		Dół normalny
 	</string>
 	<string name="Normal Upper">
-		Góra Normalna
+		Góra normalna
 	</string>
 	<string name="Nose Left">
-		Nos w StronÄ™ LewÄ…
+		Nos w stronÄ™ lewÄ…
 	</string>
 	<string name="Nose Right">
-		Nos w StronÄ™ PrawÄ…
+		Nos w stronÄ™ prawÄ…
 	</string>
 	<string name="Nose Size">
-		Rozmiar Nosa
+		Rozmiar nosa
 	</string>
 	<string name="Nose Thickness">
-		Grubość Nosa
+		Grubość nosa
 	</string>
 	<string name="Nose Tip Angle">
-		KÄ…t Czubka Nosa
+		KÄ…t czubka nosa
 	</string>
 	<string name="Nose Tip Shape">
-		Kształt Czubka Nosa
+		Kształt czubka nosa
 	</string>
 	<string name="Nose Width">
-		Szerokość Nosa
+		Szerokość nosa
 	</string>
 	<string name="Nostril Division">
-		Przegroda Nosa
+		Przegroda nosa
 	</string>
 	<string name="Nostril Width">
-		Wielkość Dziurek w Nosie
+		Wielkość dziurek w nosie
 	</string>
 	<string name="Opaque">
 		Intensywność
@@ -2766,16 +2766,16 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Otwarte
 	</string>
 	<string name="Open Back">
-		Otwarte z Tyłu
+		Otwarte z tyłu
 	</string>
 	<string name="Open Front">
-		Otwarte z Przodu
+		Otwarte z przodu
 	</string>
 	<string name="Open Left">
-		Otwarte z Lewej
+		Otwarte z lewej
 	</string>
 	<string name="Open Right">
-		Otwarte z Prawej
+		Otwarte z prawej
 	</string>
 	<string name="Orange">
 		Pomarańczowe
@@ -2784,19 +2784,19 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Zewnętrznie
 	</string>
 	<string name="Out Shdw Color">
-		Zewnętrzny Kolor Cienia
+		Zewnętrzny kolor cienia
 	</string>
 	<string name="Out Shdw Opacity">
-		Zewnętrzna Grubość Cienia
+		Zewnętrzna grubość cienia
 	</string>
 	<string name="Outer Eye Corner">
-		Zewnętrzny Bok Oka
+		Zewnętrzny bok oka
 	</string>
 	<string name="Outer Eye Shadow">
-		Zewnętrzny Cień Oka
+		Zewnętrzny cień oka
 	</string>
 	<string name="Outer Shadow">
-		Zewnętrzny Cień
+		Zewnętrzny cień
 	</string>
 	<string name="Overbite">
 		Overbite
@@ -2805,25 +2805,25 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Package
 	</string>
 	<string name="Painted Nails">
-		Pomalowane Paznokcie
+		Pomalowane paznokcie
 	</string>
 	<string name="Pale">
 		Pale
 	</string>
 	<string name="Pants Crotch">
-		Krocze Spodni
+		Krocze spodni
 	</string>
 	<string name="Pants Fit">
 		Pants Fit
 	</string>
 	<string name="Pants Length">
-		Długość Spodni
+		Długość spodni
 	</string>
 	<string name="Pants Waist">
-		Talia Spodni
+		Talia spodni
 	</string>
 	<string name="Pants Wrinkles">
-		Zmarszczki Spodni
+		Zmarszczki spodni
 	</string>
 	<string name="Part">
 		Część
@@ -2832,7 +2832,7 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Part Bangs
 	</string>
 	<string name="Pectorals">
-		Mięśnie Klatki Piersiowej
+		Mięśnie klatki piersiowej
 	</string>
 	<string name="Pigment">
 		Pigment
@@ -2886,10 +2886,10 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Regularne
 	</string>
 	<string name="Right Part">
-		Prawa Cześć
+		Prawa część
 	</string>
 	<string name="Rosy Complexion">
-		Kompleksowość Różu
+		Kompleksowość różu
 	</string>
 	<string name="Round">
 		ZaokrÄ…glenie
@@ -2916,34 +2916,34 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Płytkie
 	</string>
 	<string name="Shear Back">
-		Tylne Usunięcie Włosów
+		Tylne usunięcie włosów
 	</string>
 	<string name="Shear Face">
-		Usunięcie Twarzy
+		Usunięcie twarzy
 	</string>
 	<string name="Shear Front">
-		Przednie Usunięcie Włosów
+		Przednie usunięcie włosów
 	</string>
 	<string name="Shear Left Up">
-		Usunięcie od Lewej Strony do Góry
+		Usunięcie od lewej strony do góry
 	</string>
 	<string name="Shear Right Up">
-		Usunięcie od Prawej Strony do Góry
+		Usunięcie od prawej strony do góry
 	</string>
 	<string name="Sheared Back">
-		Tylnie Usunięcie Włosów
+		Tylnie usunięcie włosów
 	</string>
 	<string name="Sheared Front">
-		Przednie Usunięcie Włosów
+		Przednie usunięcie włosów
 	</string>
 	<string name="Shift Left">
-		Przesuń w Lewo
+		Przesuń w lewo
 	</string>
 	<string name="Shift Mouth">
-		Przesuń Usta
+		Przesuń usta
 	</string>
 	<string name="Shift Right">
-		Przesuń w Prawo
+		Przesuń w prawo
 	</string>
 	<string name="Shirt Bottom">
 		Dolna Część Koszulki
@@ -2952,22 +2952,22 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Shirt Fit
 	</string>
 	<string name="Shirt Wrinkles">
-		Zmarszczki na Koszulce
+		Zmarszczki na koszulce
 	</string>
 	<string name="Shoe Height">
-		Wysokość Buta
+		Wysokość buta
 	</string>
 	<string name="Short">
 		Krótkie
 	</string>
 	<string name="Short Arms">
-		Krótkie Ramiona
+		Krótkie ramiona
 	</string>
 	<string name="Short Legs">
-		Krótkie Nogi
+		Krótkie nogi
 	</string>
 	<string name="Short Neck">
-		Krótki Kark
+		Krótki kark
 	</string>
 	<string name="Short Pigtails">
 		Short Pigtails
@@ -2979,16 +2979,16 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Krótkie Baczki
 	</string>
 	<string name="Short Torso">
-		Krótki Tułów
+		Krótki tułów
 	</string>
 	<string name="Short hips">
-		Krótkie Biodra
+		Krótkie biodra
 	</string>
 	<string name="Shoulders">
 		Ramiona
 	</string>
 	<string name="Side Fringe">
-		Boczna Grzywka
+		Boczna grzywka
 	</string>
 	<string name="Sideburns">
 		Baczki
@@ -3009,16 +3009,16 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Skirt Fit
 	</string>
 	<string name="Skirt Length">
-		Długość Spódnicy
+		Długość spódnicy
 	</string>
 	<string name="Slanted Forehead">
-		Ukośne Czoło
+		Ukośne czoło
 	</string>
 	<string name="Sleeve Length">
-		Długość Rękawów
+		Długość rękawów
 	</string>
 	<string name="Sleeve Looseness">
-		Luźność Rękawów
+		Luźność rękawów
 	</string>
 	<string name="Slit Back">
 		Slit: Back
@@ -3036,19 +3036,19 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Małe
 	</string>
 	<string name="Small Hands">
-		Małe Dłonie
+		Małe dłonie
 	</string>
 	<string name="Small Head">
-		Mała Głowa
+		Mała głowa
 	</string>
 	<string name="Smooth">
 		Gładkie
 	</string>
 	<string name="Smooth Hair">
-		Gładkie Włosy
+		Gładkie włosy
 	</string>
 	<string name="Socks Length">
-		Długość Skarpetek
+		Długość skarpetek
 	</string>
 	<string name="Soulpatch">
 		Soulpatch
@@ -3063,13 +3063,13 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Kwadratowe
 	</string>
 	<string name="Square Toe">
-		Kwadratowy Palec
+		Kwadratowy palec
 	</string>
 	<string name="Squash Head">
-		Ściśnięta Głowa
+		Ściśnięta głowa
 	</string>
 	<string name="Stretch Head">
-		Rozciągnięta Głowa
+		Rozciągnięta głowa
 	</string>
 	<string name="Sunken">
 		Sunken
@@ -3096,58 +3096,58 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Taper Front
 	</string>
 	<string name="Thick Heels">
-		Grube Obcasy
+		Grube obcasy
 	</string>
 	<string name="Thick Neck">
-		Gruby Kark
+		Gruby kark
 	</string>
 	<string name="Thick Toe">
-		Gruby Palec
+		Gruby palec
 	</string>
 	<string name="Thin">
 		WÄ…ski
 	</string>
 	<string name="Thin Eyebrows">
-		WÄ…skie Brwi
+		WÄ…skie brwi
 	</string>
 	<string name="Thin Lips">
-		WÄ…skie Usta
+		WÄ…skie usta
 	</string>
 	<string name="Thin Nose">
-		WÄ…ski Nos
+		WÄ…ski nos
 	</string>
 	<string name="Tight Chin">
-		Obcisły Podbródek
+		Obcisły podbródek
 	</string>
 	<string name="Tight Cuffs">
-		Obcisłe Rękawy
+		Obcisłe rękawy
 	</string>
 	<string name="Tight Pants">
-		Obciesłe Spodnie
+		Obciesłe spodnie
 	</string>
 	<string name="Tight Shirt">
-		Obcisły Podkoszulek
+		Obcisły podkoszulek
 	</string>
 	<string name="Tight Skirt">
-		Tight Skirt
+		Wąska spódnica
 	</string>
 	<string name="Tight Sleeves">
-		Obcisłe Rękawy
+		Obcisłe rękawy
 	</string>
 	<string name="Toe Shape">
-		Kształt Palca
+		Kształt palca
 	</string>
 	<string name="Toe Thickness">
-		Grubość Palca
+		Grubość palca
 	</string>
 	<string name="Torso Length">
-		Długość Tułowia
+		Długość tułowia
 	</string>
 	<string name="Torso Muscles">
-		Mięśnie Tułowia
+		Mięśnie tułowia
 	</string>
 	<string name="Torso Scrawny">
-		Wychudzony Tułów
+		Wychudzony tułów
 	</string>
 	<string name="Unattached">
 		Nieprzyłączone
@@ -3162,43 +3162,43 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
 		Nienaturalne
 	</string>
 	<string name="Upper Bridge">
-		Górny Mostek
+		Górny mostek
 	</string>
 	<string name="Upper Cheeks">
-		Górne Policzki
+		Górne policzki
 	</string>
 	<string name="Upper Chin Cleft">
-		Roszczepienie Górnego Podbródka
+		Roszczepienie górnego podbródka
 	</string>
 	<string name="Upper Eyelid Fold">
-		Górna Powieka
+		Górna powieka
 	</string>
 	<string name="Upturned">
 		Zadarta
 	</string>
 	<string name="Very Red">
-		Bardzo Czerwona
+		Bardzo czerwona
 	</string>
 	<string name="Waist Height">
-		Wysokość Tali
+		Wysokość talii
 	</string>
 	<string name="Well-Fed">
 		Well-Fed
 	</string>
 	<string name="White Hair">
-		Białe Włosy
+		Białe włosy
 	</string>
 	<string name="Wide">
 		Szerokie
 	</string>
 	<string name="Wide Back">
-		Szeroki Tył
+		Szeroki tył
 	</string>
 	<string name="Wide Front">
-		Szeroki Przód
+		Szeroki przód
 	</string>
 	<string name="Wide Lips">
-		Szerokie Usta
+		Szerokie usta
 	</string>
 	<string name="Wild">
 		Dzikość
diff --git a/indra/newview/skins/default/xui/pt/floater_about.xml b/indra/newview/skins/default/xui/pt/floater_about.xml
index 39548dc4978cff77921fdf84bdaceac881aaa0dc..f1f6ff9aea581b2c2756acbb8684e8968c95f1cc 100644
--- a/indra/newview/skins/default/xui/pt/floater_about.xml
+++ b/indra/newview/skins/default/xui/pt/floater_about.xml
@@ -38,7 +38,7 @@ Versão Vivox: [VIVOX_VERSION]
 	</floater.string>
 	<tab_container name="about_tab">
 		<panel label="Info" name="support_panel">
-			<button label="Copiar para área de transferência" name="copy_btn"/>
+			<button label="Copiar" name="copy_btn"/>
 		</panel>
 		<panel label="Créditos" name="credits_panel">
 			<text_editor name="credits_editor">
diff --git a/indra/newview/skins/default/xui/pt/floater_about_land.xml b/indra/newview/skins/default/xui/pt/floater_about_land.xml
index 885221997a845d7dc1d3f2a6740e251765ba15d0..252969609a568ba6b7809a664db33b28c84af083 100644
--- a/indra/newview/skins/default/xui/pt/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml
@@ -118,7 +118,7 @@ Vá para o menu Mundo &gt; Sobre a Terra ou selecione outro lote para mostrar se
 			</text>
 			<button label="Cancelar venda do terreno" label_selected="Cancelar venda do terreno" left="275" name="Cancel Land Sale" width="165"/>
 			<text name="Claimed:">
-				Reclamado:
+				Posse em:
 			</text>
 			<text name="DateClaimText">
 				Ter Ago 15 13:47:25 2006
@@ -135,28 +135,28 @@ Vá para o menu Mundo &gt; Sobre a Terra ou selecione outro lote para mostrar se
 			<text name="DwellText">
 				0
 			</text>
-			<button label="Comprar Terra..." label_selected="Comprar Terra..." left="130" name="Buy Land..." width="125"/>
+			<button label="Comprar terreno..." label_selected="Comprar terreno..." left="130" name="Buy Land..." width="125"/>
 			<button label="Dados do script" name="Scripts..."/>
 			<button label="Comprar para o Grupo" name="Buy For Group..."/>
-			<button label="Comprar Passe..." label_selected="Comprar Passe..." left="130" name="Buy Pass..." tool_tip="Um passe concede a você acesso temporário a esta terra." width="125"/>
-			<button label="Abandonar Terra.." label_selected="Abandonar Terra.." name="Abandon Land..."/>
-			<button label="Reclamar Terra" name="Reclaim Land..."/>
-			<button label="Venda Linden" name="Linden Sale..." tool_tip="A terra precisa ser possuída, estar com o conteúdo configurado e não estar pronta para leilão."/>
+			<button label="Comprar passe..." label_selected="Comprar passe..." left="130" name="Buy Pass..." tool_tip="Um passe concede a você acesso temporário a este terreno." width="125"/>
+			<button label="Abandonar terreno..." label_selected="Abandonar terreno..." name="Abandon Land..."/>
+			<button label="Pedir terreno" name="Reclaim Land..."/>
+			<button label="Venda Linden" name="Linden Sale..." tool_tip="O terreno precisa ser possuído, estar com o conteúdo configurado e não estar pronto para leilão."/>
 		</panel>
 		<panel label="CONTRATO" name="land_covenant_panel">
 			<panel.string name="can_resell">
-				Terra comprada nesta região pode ser revendida.
+				Terrenos comprados nesta região podem ser revendidos.
 			</panel.string>
 			<panel.string name="can_not_resell">
-				Terra comprada nesta região não pode ser revendida.
+				Terrenos comprados nesta região não podem ser revendidos.
 			</panel.string>
 			<panel.string name="can_change">
-				Terra comprada nesta região pode ser compartilhada
-ou sub-dividida.
+				Terrenos comprados nesta região podem ser compartilhados
+ou sub-divididos.
 			</panel.string>
 			<panel.string name="can_not_change">
-				Terra comprada nesta região não pode ser compartilhada
-ou sub-dividida.
+				Terrenos comprados nesta região não podem ser compartilhados
+ou sub-divididos.
 			</panel.string>
 			<text name="estate_section_lbl">
 				Propriedade:
@@ -215,7 +215,7 @@ ou sub-dividida.
 				[COUNT] de [MAX] ([DELETED] serão deletados)
 			</panel.string>
 			<text name="parcel_object_bonus">
-				Fator de Bonus para Objetos na Região: [BONUS]
+				Fator de bônus para objetos na região: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
 				Uso de prims:
@@ -224,13 +224,13 @@ ou sub-dividida.
 				[COUNT] de [MAX] ([AVAILABLE] disponíveis)
 			</text>
 			<text name="Primitives parcel supports:" width="200">
-				Primitivas suportadas pelo lote:
+				Prims suportadas pelo lote:
 			</text>
 			<text left="214" name="object_contrib_text" width="152">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				Primitivas no Lote:
+				Prims no Lote:
 			</text>
 			<text left="214" name="total_objects_text" width="48">
 				[COUNT]
@@ -252,7 +252,7 @@ ou sub-dividida.
 			<button label="Mostrar" label_selected="Mostrar" name="ShowGroup" right="-135" width="60"/>
 			<button label="Retornar" name="ReturnGroup..." right="-10" tool_tip="Retornar os objetos para seus donos." width="119"/>
 			<text left="14" name="Owned by others:" width="128">
-				Propriedade de Outros:
+				Propriedade de outros:
 			</text>
 			<text left="214" name="other_objects_text" width="48">
 				[COUNT]
@@ -266,13 +266,13 @@ ou sub-dividida.
 				[COUNT]
 			</text>
 			<text left="4" name="Autoreturn" width="412">
-				Devolver objetos de outros residentes automaticamente (digite 0 para desligar)
+				Devolver objetos de outros residentes (p/ desligar tecle 0)
 			</text>
 			<line_editor name="clean other time" right="-10"/>
 			<text name="Object Owners:">
-				Donos dos Objetos:
+				Donos dos objetos:
 			</text>
-			<button label="Atualizar Lista" label_selected="Atualizar Lista" left="118" name="Refresh List" tool_tip="Refresh Object List"/>
+			<button label="Atualizar lista" label_selected="Atualizar lista" left="118" name="Refresh List" tool_tip="Refresh Object List"/>
 			<button label="Retornar objetos..." label_selected="Retornar objetos..." left="230" name="Return objects..."/>
 			<name_list name="owner list">
 				<name_list.columns label="Tipo" name="type"/>
@@ -293,25 +293,25 @@ Apenas lotes maiores podem ser listados na busca.
 				Esta opção está desabilitada porque você não pode modificar as opções deste lote.
 			</panel.string>
 			<panel.string name="mature_check_mature">
-				Conteúdo Mature
+				Conteúdo Adulto
 			</panel.string>
 			<panel.string name="mature_check_adult">
-				Conteúdo Adult
+				Conteúdo Adulto
 			</panel.string>
 			<panel.string name="mature_check_mature_tooltip">
-				A informação do seu lote ou seu conteúdo são considerados mature.
+				A informação do seu lote ou seu conteúdo são considerados adulto.
 			</panel.string>
 			<panel.string name="mature_check_adult_tooltip">
-				A informação do seu lote ou seu conteúdo são considerados adult.
+				A informação do seu lote ou seu conteúdo são considerados adulto.
 			</panel.string>
 			<panel.string name="landing_point_none">
 				(nenhum)
 			</panel.string>
 			<panel.string name="push_restrict_text">
-				Sem Empurrar
+				Sem empurrar
 			</panel.string>
 			<panel.string name="push_restrict_region_text">
-				Sem Empurrar (Imposição na Região)
+				Sem empurrar (imposição na região)
 			</panel.string>
 			<text name="allow_label">
 				Autorizar outros residentes a:
@@ -319,31 +319,31 @@ Apenas lotes maiores podem ser listados na busca.
 			<check_box label="Editar Terreno" name="edit land check" tool_tip="Se ativado, qualquer um pode modificar a forma da sua terra. É melhor deixar esta opção desativada, uma vez que você sempre pode editar seu próprio terreno."/>
 			<check_box label="Voar" name="check fly" tool_tip="Se ativado, os Residentes podem voar na sua terra. Se desativado, eles podem voar apenas para dentro e por cima de sua terra."/>
 			<text name="allow_label2">
-				Criar Objetos:
+				Criar objetos:
 			</text>
 			<check_box label="Residentes" name="edit objects check"/>
 			<check_box label="Grupo" name="edit group objects check"/>
 			<text name="allow_label3">
-				Entrada do Objeto:
+				Entrada do objeto:
 			</text>
 			<check_box label="Residentes" name="all object entry check"/>
 			<check_box label="Grupo" name="group object entry check"/>
 			<text name="allow_label4">
-				Executar Scripts:
+				Executar scripts:
 			</text>
 			<check_box label="Residentes" name="check other scripts"/>
 			<check_box label="Grupo" name="check group scripts"/>
 			<text name="land_options_label">
-				Opções de Terra:
+				Opções de terra:
 			</text>
 			<check_box label="Salvo (sem dano)" name="check safe" tool_tip="Se ativado, ajusta o terreno para Seguro, desabilitando combate com danos. Se não ativado, o combate com danos é habilitado."/>
 			<check_box label="Sem Empurrar" name="PushRestrictCheck" tool_tip="Evita scripts que empurram. A ativação dessa opção pode ser útil para prevenir comportamentos desordeiros na sua terra."/>
 			<check_box label="Mostrar terreno nos resultados de busca (L$30/semana)" name="ShowDirectoryCheck" tool_tip="Permitir que as pessoas vejam este terreno nos resultados de busca"/>
 			<combo_box left="265" name="land category with adult" width="155">
-				<combo_box.item label="Qualquer Categoria" name="item0"/>
+				<combo_box.item label="Qualquer categoria" name="item0"/>
 				<combo_box.item label="Locação Linden" name="item1"/>
-				<combo_box.item label="Adult" name="item2"/>
-				<combo_box.item label="Artes e Cultura" name="item3"/>
+				<combo_box.item label="Adulto" name="item2"/>
+				<combo_box.item label="Artes e cultura" name="item3"/>
 				<combo_box.item label="Negócios" name="item4"/>
 				<combo_box.item label="Educacional" name="item5"/>
 				<combo_box.item label="Jogos" name="item6"/>
@@ -355,9 +355,9 @@ Apenas lotes maiores podem ser listados na busca.
 				<combo_box.item label="Outros" name="item12"/>
 			</combo_box>
 			<combo_box left="265" name="land category" width="155">
-				<combo_box.item label="Qualquer Categoria" name="item0"/>
+				<combo_box.item label="Qualquer categoria" name="item0"/>
 				<combo_box.item label="Locação Linden" name="item1"/>
-				<combo_box.item label="Artes e Cultura" name="item3"/>
+				<combo_box.item label="Artes e cultura" name="item3"/>
 				<combo_box.item label="Negócios" name="item4"/>
 				<combo_box.item label="Educacional" name="item5"/>
 				<combo_box.item label="Jogos" name="item6"/>
@@ -368,7 +368,7 @@ Apenas lotes maiores podem ser listados na busca.
 				<combo_box.item label="Compras" name="item11"/>
 				<combo_box.item label="Outros" name="item12"/>
 			</combo_box>
-			<check_box label="Conteúdo Mature" name="MatureCheck" tool_tip=""/>
+			<check_box label="Conteúdo adulto" name="MatureCheck" tool_tip=""/>
 			<text name="Snapshot:">
 				Foto:
 			</text>
@@ -379,11 +379,11 @@ Apenas lotes maiores podem ser listados na busca.
 			<button label="Definir" label_selected="Definir" name="Set" tool_tip="Define o ponto de aterrissagem aonde o visitante chega. Define para o ponto em que seu avatar se encontra neste lote."/>
 			<button label="Limpar" label_selected="Limpar" name="Clear" tool_tip="Limpar o ponto de aterrissagem."/>
 			<text name="Teleport Routing: ">
-				Rota de Tele-transporte:
+				Rota de Teletransporte:
 			</text>
-			<combo_box left="140" name="landing type" tool_tip="Rota de Teletransporte -- Selecione como tratar os tele-transportes no seu lote." width="160">
+			<combo_box left="140" name="landing type" tool_tip="Rota de Teletransporte -- Selecione como tratar os teletransportes no seu lote." width="160">
 				<combo_box.item label="Bloqueado" name="Blocked"/>
-				<combo_box.item label="Ponto de Aterrissagem" name="LandingPoint"/>
+				<combo_box.item label="Ponto de aterrissagem" name="LandingPoint"/>
 				<combo_box.item label="Qualquer lugar" name="Anywhere"/>
 			</combo_box>
 		</panel>
@@ -396,8 +396,8 @@ Apenas lotes maiores podem ser listados na busca.
 				Página web:
 			</text>
 			<line_editor left="97" name="media_url"/>
-			<button label="Definir" name="set_media_url"/>
-			<check_box label="Esconder a URL da Mídia" left="97" name="hide_media_url" tool_tip="Ativando esta opção, a URL da mídia se ocultará para quaisquer visualizadores não autorizados a ver esta informação do lote. Notar que isto não está disponível para tipos HTML."/>
+			<button label="Definir..." label_selected="Definir..." name="set_media_url"/>
+			<check_box label="Esconder a URL da mídia" left="97" name="hide_media_url" tool_tip="Ativando esta opção, a URL da mídia se ocultará para quaisquer visualizadores não autorizados a ver esta informação do lote. Notar que isto não está disponível para tipos HTML."/>
 			<text name="Description:">
 				Descrição:
 			</text>
@@ -442,22 +442,22 @@ Mídia:
 				Uma ou mais destas opções está definida no nível de propriedade.
 			</panel.string>
 			<text name="Limit access to this parcel to:">
-				Acesso a Este Lote
+				Acesso a este lote
 			</text>
 			<check_box label="Acesso para público categoria [MATURITY]" name="public_access"/>
 			<text name="Only Allow">
 				Restringir acesso a contas confirmardas por:
 			</text>
 			<check_box label="Dados de pagamento fornecidos [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Banir residentes sem identificação."/>
-			<check_box label="Idade confirmada: [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Banir residentes que não comprovaram a idade. Consulte o [SUPPORT_SITE] para saber mais."/>
-			<check_box label="Permitir Acesso do Grupo: [GROUP]" name="GroupCheck" tool_tip="Definir grupo na aba Geral."/>
+			<check_box label="Idade comprovada: [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Banir residentes que não comprovaram a idade. Consulte o [SUPPORT_SITE] para saber mais."/>
+			<check_box label="Permitir acesso do grupo: [GROUP]" name="GroupCheck" tool_tip="Definir grupo na aba Geral."/>
 			<check_box label="Vender passes para:" name="PassCheck" tool_tip="Permite acesso temporário a este terreno"/>
 			<combo_box name="pass_combo">
 				<combo_box.item label="Qualquer um" name="Anyone"/>
 				<combo_box.item label="Grupo" name="Group"/>
 			</combo_box>
 			<spinner label="Preço em L$:" name="PriceSpin"/>
-			<spinner label="Horas de Acesso:" name="HoursSpin"/>
+			<spinner label="Horas de acesso:" name="HoursSpin"/>
 			<panel name="Allowed_layout_panel">
 				<name_list name="AccessList" tool_tip="(Total [LISTED], máx de [MAX])"/>
 			</panel>
diff --git a/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml b/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml
index 9f34111d8a89de05b53a148b25b4089414b0cc7b..8823d04b624616ec23ad91ca4ba43a8215fd3588 100644
--- a/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml
@@ -7,20 +7,20 @@
 		Definindo permissões em [NAME]
 	</floater.string>
 	<floater.string name="start_text">
-		Iniciando solicitação de mudança de permissão...
+		Solicitando mudança de permissão...
 	</floater.string>
 	<floater.string name="done_text">
 		Solicitação de mudança de permissão concluída.
 	</floater.string>
 	<check_box label="Animação" name="check_animation"/>
 	<icon name="icon_animation" tool_tip="Animação"/>
-	<check_box label="Partes do Corpo" name="check_bodypart"/>
+	<check_box label="Partes do corpo" name="check_bodypart"/>
 	<icon name="icon_bodypart" tool_tip="Partes do corpo"/>
 	<check_box label="Roupas" name="check_clothing"/>
 	<icon name="icon_clothing" tool_tip="Vestuário"/>
 	<check_box label="Gestos" name="check_gesture"/>
 	<icon name="icon_gesture" tool_tip="Gestos"/>
-	<check_box label="Notecards" name="check_notecard"/>
+	<check_box label="Anotações" name="check_notecard"/>
 	<icon name="icon_notecard" tool_tip="Anotações"/>
 	<check_box label="Objetos" name="check_object"/>
 	<icon name="icon_object" tool_tip="Objects"/>
@@ -30,7 +30,7 @@
 	<icon name="icon_sound" tool_tip="Sons"/>
 	<check_box label="Texturas" name="check_texture"/>
 	<icon name="icon_texture" tool_tip="Texturas"/>
-	<button label="√ Tudo" label_selected="Todas" name="check_all"/>
+	<button label="Tudo" label_selected="Todas" name="check_all"/>
 	<button label="Limpar" label_selected="Nenhuma" name="check_none"/>
 	<text name="newperms">
 		Novas autorizações de conteúdo
diff --git a/indra/newview/skins/default/xui/pt/floater_customize.xml b/indra/newview/skins/default/xui/pt/floater_customize.xml
index 318c73e52d84577b094251cb11506a6b1328859d..2a367cb24a5505b9c3fc2affbd3ec0058a23080c 100644
--- a/indra/newview/skins/default/xui/pt/floater_customize.xml
+++ b/indra/newview/skins/default/xui/pt/floater_customize.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater customize" title="APARÊNCIA" width="546">
 	<tab_container name="customize tab container" tab_min_width="115" width="544">
-		<text label="Partes de corpo" name="body_parts_placeholder">
+		<text label="Corpo" name="body_parts_placeholder">
 			Partes do corpo
 		</text>
 		<panel label="Forma" name="Shape">
@@ -43,15 +43,15 @@
 			<text name="Item Action Label">
 				Forma:
 			</text>
-			<button label="Criar Nova Forma" label_selected="Criar Nova Forma" name="Create New"/>
+			<button label="Nova" label_selected="Nova" name="Create New"/>
 			<button label="Salvar" label_selected="Salvar" name="Save"/>
 			<button label="Salvar como..." label_selected="Salvar como..." name="Save As"/>
 		</panel>
 		<panel label="Pele" name="Skin">
-			<button label="Cor de Pele" label_selected="Cor de Pele" name="Skin Color" width="115"/>
-			<button label="Detalhes Faciais" label_selected="Detalhes Faciais" name="Face Detail" width="115"/>
-			<button label="Maquiagem" label_selected="Maquiagem" name="Makeup" width="115"/>
-			<button label="Detalhes do Corpo" label_selected="Detalhes do Corpo" name="Body Detail" width="115"/>
+			<button label="Cor de pele" label_selected="Cor de pele" name="Skin Color" width="115"/>
+			<button label="Detalhes faciais" label_selected="Detalhes faciais" name="Face Detail" width="115"/>
+			<button label="Maquilagem" label_selected="Maquilagem" name="Makeup" width="115"/>
+			<button label="Detalhes do corpo" label_selected="Detalhes do corpo" name="Body Detail" width="115"/>
 			<text name="title">
 				[DESC]
 			</text>
@@ -79,7 +79,7 @@
 			<texture_picker label="Tattoo: cabeça" name="Head Tattoos" tool_tip="Clique para escolher um desenho" width="86"/>
 			<texture_picker label="Tattoo: superior" name="Upper Tattoos" tool_tip="Clique para escolher um desenho" width="86"/>
 			<texture_picker label="Tattoo: inferior" name="Lower Tattoos" tool_tip="Clique para escolher um desenho" width="86"/>
-			<button label="Criar Nova Pele" label_selected="Criar Nova Pele" name="Create New"/>
+			<button label="Novo" label_selected="Novo" name="Create New"/>
 			<button label="Salvar" label_selected="Salvar" name="Save"/>
 			<button label="Salvar como..." label_selected="Salvar como..." name="Save As"/>
 			<button label="Reverter" label_selected="Reverter" name="Revert"/>
@@ -114,7 +114,7 @@
 				Cabelo:
 			</text>
 			<texture_picker label="Texture" name="Texture" tool_tip="Clique para escolher uma imagem"/>
-			<button label="Criar Novo Cabelo" label_selected="Criar Novo Cabelo" name="Create New"/>
+			<button label="Criar novo cabelo" label_selected="Criar novo cabelo" name="Create New"/>
 			<button label="Salvar" label_selected="Salvar" name="Save"/>
 			<button label="Salvar como..." label_selected="Salvar como..." name="Save As"/>
 			<button label="Reverter" label_selected="Reverter" name="Revert"/>
@@ -145,7 +145,7 @@
 				Olhos:
 			</text>
 			<texture_picker label="Íris" name="Iris" tool_tip="Clique para escolher uma imagem"/>
-			<button label="Criar Novos Olhos" label_selected="Criar Novos Olhos" name="Create New"/>
+			<button label="Criar novos olhos" label_selected="Criar novos olhos" name="Create New"/>
 			<button label="Salvar" label_selected="Salvar" name="Save"/>
 			<button label="Salvar como..." label_selected="Salvar como..." name="Save As"/>
 			<button label="Reverter" label_selected="Reverter" name="Revert"/>
@@ -157,7 +157,7 @@
 			<texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/>
 			<color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/>
 			<button label="Remover" label_selected="Remover" name="Take Off"/>
-			<button label="Criar Nova Camisa" label_selected="Criar Nova Camisa" name="Create New"/>
+			<button label="Criar nova camisa" label_selected="Criar nova camisa" name="Create New"/>
 			<button label="Salvar" label_selected="Salvar" name="Save"/>
 			<button label="Salvar como..." label_selected="Salvar como..." name="Save As"/>
 			<button label="Reverter" label_selected="Reverter" name="Revert"/>
@@ -190,7 +190,7 @@
 			<texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/>
 			<color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/>
 			<button label="Remover" label_selected="Remover" name="Take Off"/>
-			<button label="Criar Novas Calças" label_selected="Criar Novas Calças" name="Create New"/>
+			<button label="Criar novas calças" label_selected="Criar novas calças" name="Create New"/>
 			<button label="Salvar" label_selected="Salvar" name="Save"/>
 			<button label="Salvar como..." label_selected="Salvar como..." name="Save As"/>
 			<button label="Reverter" label_selected="Reverter" name="Revert"/>
@@ -238,7 +238,7 @@
 			<text name="not worn instructions">
 				Para obter novos olhos, arraste um tipo de olhos do inventário para o seu avatar. Ou crie olhos novos.
 			</text>
-			<button label="Criar Novos Sapatos" label_selected="Criar Novos Sapatos" name="Create New" width="166"/>
+			<button label="Criar novos sapatos" label_selected="Criar novos sapatos" name="Create New" width="166"/>
 			<text name="no modify instructions">
 				Você não tem permissão para modificar esta vestimenta.
 			</text>
@@ -271,7 +271,7 @@
 			<text name="not worn instructions">
 				Para obter meias novas, arraste um par do inventário para o seu avatar. Ou crie meias novas.
 			</text>
-			<button label="Criar Novas Meias" label_selected="Criar Novas Meias" name="Create New"/>
+			<button label="Criar novas meias" label_selected="Criar novas meias" name="Create New"/>
 			<text name="no modify instructions">
 				Você não tem permissão para modificar essa vestimenta.
 			</text>
@@ -304,14 +304,14 @@
 			<text name="not worn instructions">
 				Para por uma jaqueta nova, arraste uma do inventário para o seu avatar. Ou crie uma jaqueta nova.
 			</text>
-			<button label="Criar Nova Jaqueta" label_selected="Criar Nova Jaqueta" name="Create New"/>
+			<button label="Criar nova jaqueta" label_selected="Criar nova jaqueta" name="Create New"/>
 			<text name="no modify instructions">
 				Você não tem permissão para modificar esta vestimenta.
 			</text>
 			<text name="Item Action Label">
 				Jaqueta:
 			</text>
-			<texture_picker label="Tecido Superior" name="Upper Fabric" tool_tip="Clique para escolher uma imagem." width="84"/>
+			<texture_picker label="Tecido superior" name="Upper Fabric" tool_tip="Clique para escolher uma imagem." width="84"/>
 			<texture_picker label="Tecido Inferior" name="Lower Fabric" tool_tip="Clique para escolher uma imagem." width="84"/>
 			<color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/>
 			<button label="Remover" label_selected="Remover" name="Take Off"/>
@@ -338,7 +338,7 @@
 			<text name="not worn instructions">
 				Para obter luvas novas, arraste um par do inventário para o seu avatar. Ou crie luvas novas.
 			</text>
-			<button label="Criar Novas Luvas" label_selected="Criar Novas Luvas" name="Create New"/>
+			<button label="Criar novas luvas" label_selected="Criar novas luvas" name="Create New"/>
 			<text name="no modify instructions">
 				Você não tem permissão para modificar essa vestimenta.
 			</text>
@@ -371,7 +371,7 @@
 			<text name="not worn instructions">
 				Para obter uma camiseta nova, arraste uma do inventário para o seu avatar. Ou crie uma camiseta nova.
 			</text>
-			<button label="Criar Nova Camiseta" label_selected="Criar Nova Camiseta" name="Create New"/>
+			<button label="Criar nova camiseta" label_selected="Criar nova camiseta" name="Create New"/>
 			<text name="no modify instructions">
 				Você não ter permissão para modificar essa vestimenta.
 			</text>
@@ -404,12 +404,12 @@
 			<text name="not worn instructions">
 				Para obter roupa de baixo nova, arraste um modelo do inventário para o seu avatar. Ou crie uma roupa de baixo nova.
 			</text>
-			<button label="Criar Novas Roupas de Baixo" label_selected="Criar Novas Roupas de Baixo" name="Create New" width="180"/>
+			<button label="Criar novas" label_selected="Criar novas" name="Create New" width="180"/>
 			<text name="no modify instructions">
 				Você não tem permissão para modificar essa vestimenta.
 			</text>
 			<text name="Item Action Label">
-				Roupas de Baixo:
+				Roupas de baixo:
 			</text>
 			<texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/>
 			<color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/>
@@ -437,7 +437,7 @@
 			<text name="not worn instructions">
 				Para obter um saia nova, arraste uma saia do inventário para o seu avatar. Ou crie uma saia nova.
 			</text>
-			<button label="Criar Nova Saia" label_selected="Criar Nova Saia" name="Create New"/>
+			<button label="Criar nova saia" label_selected="Criar nova saia" name="Create New"/>
 			<text name="no modify instructions">
 				Você não tem permissão para modificar esta vestimenta.
 			</text>
diff --git a/indra/newview/skins/default/xui/pt/floater_preferences.xml b/indra/newview/skins/default/xui/pt/floater_preferences.xml
index 803f2f87b86da9b4d522e4ea7f12a6bf3306eddd..2c76a72ca869f4196a98dab25b7bb628691ea322 100644
--- a/indra/newview/skins/default/xui/pt/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/pt/floater_preferences.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater min_width="332" name="Preferences" title="PREFERÊNCIAS" width="628">
+<floater name="Preferences" title="PREFERÊNCIAS">
 	<button label="OK" label_selected="OK" name="OK"/>
 	<button label="Cancelar" label_selected="Cancelar" name="Cancel"/>
-	<tab_container name="pref core" tab_width="128" width="628">
-		<panel label="Público geral" name="general"/>
+	<tab_container name="pref core">
+		<panel label="Geral" name="general"/>
 		<panel label="Vídeo" name="display"/>
 		<panel label="Privacidade" name="im"/>
 		<panel label="Som e mídia" name="audio"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_snapshot.xml b/indra/newview/skins/default/xui/pt/floater_snapshot.xml
index a3934a666744e8da79db7ca600c0ba9ee68922d2..bb852cb11a4850861cb78658889a075a18489b72 100644
--- a/indra/newview/skins/default/xui/pt/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/pt/floater_snapshot.xml
@@ -3,7 +3,7 @@
 	<text name="type_label">
 		Destino da foto
 	</text>
-	<radio_group label="Tipo de Foto" name="snapshot_type_radio">
+	<radio_group label="Tipo de foto" name="snapshot_type_radio">
 		<radio_item label="Email" name="postcard"/>
 		<radio_item label="Meu inventário (L$[AMOUNT])" name="texture"/>
 		<radio_item label="Salvar no meu PC" name="local"/>
@@ -28,21 +28,21 @@
 		Formato
 	</text>
 	<combo_box label="Resolução" name="postcard_size_combo">
-		<combo_box.item label="Janela Atual" name="CurrentWindow"/>
+		<combo_box.item label="Janela atual" name="CurrentWindow"/>
 		<combo_box.item label="640x480" name="640x480"/>
 		<combo_box.item label="800x600" name="800x600"/>
 		<combo_box.item label="1024x768" name="1024x768"/>
 		<combo_box.item label="Customizado" name="Custom"/>
 	</combo_box>
 	<combo_box label="Resolução" name="texture_size_combo">
-		<combo_box.item label="Janela Atual" name="CurrentWindow"/>
+		<combo_box.item label="Janela atual" name="CurrentWindow"/>
 		<combo_box.item label="Pequeno (128x128)" name="Small(128x128)"/>
 		<combo_box.item label="Médio (256x256)" name="Medium(256x256)"/>
 		<combo_box.item label="Grande (512x512)" name="Large(512x512)"/>
 		<combo_box.item label="Customizado" name="Custom"/>
 	</combo_box>
 	<combo_box label="Resolução" name="local_size_combo">
-		<combo_box.item label="Janela Atual" name="CurrentWindow"/>
+		<combo_box.item label="Janela atual" name="CurrentWindow"/>
 		<combo_box.item label="320x240" name="320x240"/>
 		<combo_box.item label="640x480" name="640x480"/>
 		<combo_box.item label="800x600" name="800x600"/>
@@ -63,10 +63,10 @@
 	<text name="layer_type_label">
 		Capturar:
 	</text>
-	<combo_box label="Camadas da Imagem" name="layer_types">
+	<combo_box label="Camadas da imagem" name="layer_types">
 		<combo_box.item label="Cores" name="Colors"/>
 		<combo_box.item label="Formato" name="Depth"/>
-		<combo_box.item label="Decoração do Objeto" name="ObjectMattes"/>
+		<combo_box.item label="Decoração do objeto" name="ObjectMattes"/>
 	</combo_box>
 	<check_box label="Interface" name="ui_check"/>
 	<check_box bottom_delta="-17" label="HUDs" name="hud_check"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml
index fb44c5c3bf53b310ceae45de7e3928e327e6ff4f..958a166dfcc956ffcd412a1b1d9f9d4a4def1064 100644
--- a/indra/newview/skins/default/xui/pt/floater_tools.xml
+++ b/indra/newview/skins/default/xui/pt/floater_tools.xml
@@ -63,7 +63,7 @@
 		<radio_item label="Stretch (Ctrl+Shift)" name="radio stretch"/>
 		<radio_item label="Face selecionada" name="radio select face"/>
 	</radio_group>
-	<check_box label="Editar item linkado" name="checkbox edit linked parts"/>
+	<check_box label="Editar partes linkadas" name="checkbox edit linked parts"/>
 	<text name="RenderingCost" tool_tip="Mostra o cálculo do custo de renderização do objeto">
 		þ: [COUNT]
 	</text>
@@ -91,7 +91,7 @@
 	<button label="" label_selected="" name="ToolRing" tool_tip="Anel"/>
 	<button label="" label_selected="" name="ToolTree" tool_tip="Árvore"/>
 	<button label="" label_selected="" name="ToolGrass" tool_tip="Grama"/>
-	<check_box label="Ficar com ferramenta selecionado" name="checkbox sticky"/>
+	<check_box label="Ficar com ferramenta selecionada" name="checkbox sticky"/>
 	<check_box label="Copiar seleção" name="checkbox copy selection"/>
 	<check_box initial_value="true" label="Copiar parte central" name="checkbox copy centers"/>
 	<check_box label="Girar cópia" name="checkbox copy rotates"/>
diff --git a/indra/newview/skins/default/xui/pt/language_settings.xml b/indra/newview/skins/default/xui/pt/language_settings.xml
index 71418d446ab9fa71c3512f7f3dc17b1ba1d423a2..f25e77574d24c1c41b9e60352c334508aa7fdcb2 100644
--- a/indra/newview/skins/default/xui/pt/language_settings.xml
+++ b/indra/newview/skins/default/xui/pt/language_settings.xml
@@ -3,9 +3,9 @@
 <strings>
 
 	<!-- Locale Information -->
-	<string name="MicrosoftLocale">english</string>
-	<string name="DarwinLocale">C</string>
-	<string name="LinuxLocale">C</string>
+	<string name="MicrosoftLocale">portuguese</string>
+	<string name="DarwinLocale">pt_PT.UTF-8</string>
+	<string name="LinuxLocale">pt_PT.UTF-8</string>
 	
 	<!-- 
 	datetimeToCodes["wkday"]	= "%a";		// Thu
diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml
index 8b565b9645b0f80393b61177c0a5932e16164f19..2691ac81b34453bfc37e58203c6e3ea33c7b64fd 100644
--- a/indra/newview/skins/default/xui/pt/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml
@@ -6,21 +6,21 @@
 	<menu_item_call label="Propriedades" name="Task Properties"/>
 	<menu_item_call label="Renomear" name="Task Rename"/>
 	<menu_item_call label="Apagar" name="Task Remove"/>
-	<menu_item_call label="Limpar Lixeira" name="Empty Trash"/>
-	<menu_item_call label="Limpar Achados e perdidos" name="Empty Lost And Found"/>
-	<menu_item_call label="Nova Pasta" name="New Folder"/>
-	<menu_item_call label="Novo Script" name="New Script"/>
+	<menu_item_call label="Limpar lixeira" name="Empty Trash"/>
+	<menu_item_call label="Limpar Achados &amp; perdidos" name="Empty Lost And Found"/>
+	<menu_item_call label="Nova pasta" name="New Folder"/>
+	<menu_item_call label="Novo script" name="New Script"/>
 	<menu_item_call label="Nova anotação" name="New Note"/>
-	<menu_item_call label="Novo Gesto" name="New Gesture"/>
+	<menu_item_call label="Novo gesto" name="New Gesture"/>
 	<menu label="Novas roupas" name="New Clothes">
-		<menu_item_call label="Nova Camisa" name="New Shirt"/>
-		<menu_item_call label="Nova Calça" name="New Pants"/>
-		<menu_item_call label="Novos Calçados" name="New Shoes"/>
-		<menu_item_call label="Novas Meias" name="New Socks"/>
-		<menu_item_call label="Nova Jaqueta" name="New Jacket"/>
-		<menu_item_call label="Nova Saia" name="New Skirt"/>
-		<menu_item_call label="Novas Luvas" name="New Gloves"/>
-		<menu_item_call label="Nova Anágua" name="New Undershirt"/>
+		<menu_item_call label="Nova camisa" name="New Shirt"/>
+		<menu_item_call label="Nova calça" name="New Pants"/>
+		<menu_item_call label="Novos calçados" name="New Shoes"/>
+		<menu_item_call label="Novas meias" name="New Socks"/>
+		<menu_item_call label="Nova jaqueta" name="New Jacket"/>
+		<menu_item_call label="Nova saia" name="New Skirt"/>
+		<menu_item_call label="Novas luvas" name="New Gloves"/>
+		<menu_item_call label="Nova anágua" name="New Undershirt"/>
 		<menu_item_call label="Nova roupa de baixo" name="New Underpants"/>
 		<menu_item_call label="Nova máscara alfa" name="New Alpha Mask"/>
 		<menu_item_call label="Nova tatuagem" name="New Tattoo"/>
@@ -53,29 +53,29 @@
 	<menu_item_call label="Abrir" name="Open"/>
 	<menu_item_call label="Propriedades" name="Properties"/>
 	<menu_item_call label="Renomear" name="Rename"/>
-	<menu_item_call label="Copy Asset UUID" name="Copy Asset UUID"/>
+	<menu_item_call label="Copiar item UUID" name="Copy Asset UUID"/>
 	<menu_item_call label="Copiar" name="Copy"/>
 	<menu_item_call label="Colar" name="Paste"/>
 	<menu_item_call label="Colar como link" name="Paste As Link"/>
 	<menu_item_call label="Apagar" name="Delete"/>
 	<menu_item_call label="Excluir pasta do sistema" name="Delete System Folder"/>
-	<menu_item_call label="Iniciar conversa em conferência" name="Conference Chat Folder"/>
-	<menu_item_call label="Executar" name="Sound Play"/>
+	<menu_item_call label="Pasta conversa em conferência" name="Conference Chat Folder"/>
+	<menu_item_call label="Executar som" name="Sound Play"/>
 	<menu_item_call label="Sobre o marco" name="About Landmark"/>
-	<menu_item_call label="Tocar inworld" name="Animation Play"/>
-	<menu_item_call label="Executar localmente" name="Animation Audition"/>
-	<menu_item_call label="Mandar Mensagem Instantânea" name="Send Instant Message"/>
+	<menu_item_call label="Executar animação" name="Animation Play"/>
+	<menu_item_call label="Executar áudio" name="Animation Audition"/>
+	<menu_item_call label="Mandar MI" name="Send Instant Message"/>
 	<menu_item_call label="Oferecer teletransporte..." name="Offer Teleport..."/>
-	<menu_item_call label="Iniciar conversa em conferência" name="Conference Chat"/>
+	<menu_item_call label="Bate-papo em conferência" name="Conference Chat"/>
 	<menu_item_call label="Ativar" name="Activate"/>
 	<menu_item_call label="Desativar" name="Deactivate"/>
 	<menu_item_call label="Salvar como" name="Save As"/>
-	<menu_item_call label="Retirar de você" name="Detach From Yourself"/>
-	<menu_item_call label="Vestir" name="Object Wear"/>
+	<menu_item_call label="Retirar de si mesmo" name="Detach From Yourself"/>
+	<menu_item_call label="Vestir objeto" name="Object Wear"/>
 	<menu label="Anexar a" name="Attach To"/>
 	<menu label="Anexar ao HUD" name="Attach To HUD"/>
 	<menu_item_call label="Editar" name="Wearable Edit"/>
 	<menu_item_call label="Vestir" name="Wearable Wear"/>
-	<menu_item_call label="Retirar" name="Take Off"/>
+	<menu_item_call label="Tirar" name="Take Off"/>
 	<menu_item_call label="--Sem opções--" name="--no options--"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_inventory_add.xml b/indra/newview/skins/default/xui/pt/menu_inventory_add.xml
index 81898c63bff9931ae667df359a5da17a3029284a..fc40384891dad3671b8752f3a06103a1bc39664e 100644
--- a/indra/newview/skins/default/xui/pt/menu_inventory_add.xml
+++ b/indra/newview/skins/default/xui/pt/menu_inventory_add.xml
@@ -24,7 +24,7 @@
 		<menu_item_call label="Nova tatuagem" name="New Tattoo"/>
 	</menu>
 	<menu label="Nova parte do corpo" name="New Body Parts">
-		<menu_item_call label="Nova silhueta" name="New Shape"/>
+		<menu_item_call label="Nova forma" name="New Shape"/>
 		<menu_item_call label="Nova pele" name="New Skin"/>
 		<menu_item_call label="Novo cabelo" name="New Hair"/>
 		<menu_item_call label="Novos olhos" name="New Eyes"/>
diff --git a/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml
index b4216b7ddcd5489ad3375cfa9288c3226f93d4e4..ec1e7a0950288a3ad0252f19826f2f10fb83e2eb 100644
--- a/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml
+++ b/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml
@@ -2,5 +2,5 @@
 <context_menu name="Teleport History Item Context Menu">
 	<menu_item_call label="Teletransportar" name="Teleport"/>
 	<menu_item_call label="Mais informações" name="More Information"/>
-	<menu_item_call label="Copiar para área de transferência" name="CopyToClipboard"/>
+	<menu_item_call label="Copiar" name="CopyToClipboard"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml
index 2b83386cad6530e832395edf3266a3c86b38620c..45f7ca1424dae0165009ccaf35bef1c4df569e13 100644
--- a/indra/newview/skins/default/xui/pt/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml
@@ -80,7 +80,7 @@
 		<menu_item_call label="Link" name="Link"/>
 		<menu_item_call label="Desconectar links" name="Unlink"/>
 		<menu_item_check label="Edit Linked Parts" name="Edit Linked Parts"/>
-		<menu_item_call label="Focus on Selection" name="Focus on Selection"/>
+		<menu_item_call label="Enfocar seleção" name="Focus on Selection"/>
 		<menu_item_call label="Ampliar seleção" name="Zoom to Selection"/>
 		<menu label="Objeto:" name="Object">
 			<menu_item_call label="Comprar" name="Menu Object Buy"/>
@@ -92,29 +92,29 @@
 		<menu label="Scripts" name="Scripts">
 			<menu_item_call label="Recompilar scripts (LSL)" name="Mono"/>
 			<menu_item_call label="Recompilar scripts (LSL)" name="LSL"/>
-			<menu_item_call label="Reset Scripts" name="Reset Scripts"/>
+			<menu_item_call label="Resetar scripts" name="Reset Scripts"/>
 			<menu_item_call label="Scripts em modo execução" name="Set Scripts to Running"/>
 			<menu_item_call label="Scripts em modo não execução" name="Set Scripts to Not Running"/>
 		</menu>
 		<menu label="Opções" name="Options">
-			<menu_item_call label="Set Default Upload Permissions" name="perm prefs"/>
+			<menu_item_call label="Definir permissões padrão de upload" name="perm prefs"/>
 			<menu_item_check label="Mostrar permissões avançadas" name="DebugPermissions"/>
 			<menu_item_check label="Só selecionar meus objetos" name="Select Only My Objects"/>
-			<menu_item_check label="Só selecionar meus objetos" name="Select Only Movable Objects"/>
+			<menu_item_check label="Só selecionar objetos móveis" name="Select Only Movable Objects"/>
 			<menu_item_check label="Selecionar contornando" name="Select By Surrounding"/>
 			<menu_item_check label="Mostrar seleção oculta" name="Show Hidden Selection"/>
-			<menu_item_check label="Show Light Radius for Selection" name="Show Light Radius for Selection"/>
-			<menu_item_check label="Show Selection Beam" name="Show Selection Beam"/>
-			<menu_item_check label="Mostrar na grade" name="Snap to Grid"/>
-			<menu_item_call label="Snap Object XY to Grid" name="Snap Object XY to Grid"/>
+			<menu_item_check label="Mostrar alcance de luz da seleção" name="Show Light Radius for Selection"/>
+			<menu_item_check label="Mostrar raio de seleção" name="Show Selection Beam"/>
+			<menu_item_check label="Encaixar em grade" name="Snap to Grid"/>
+			<menu_item_call label="Encaixar objeto XY em grade" name="Snap Object XY to Grid"/>
 			<menu_item_call label="Usar seleção em grade" name="Use Selection for Grid"/>
 			<menu_item_call label="Opções de grade" name="Grid Options"/>
 		</menu>
 		<menu label="Selecionar partes conectadas" name="Select Linked Parts">
-			<menu_item_call label="Select Next Part" name="Select Next Part"/>
-			<menu_item_call label="Select Previous Part" name="Select Previous Part"/>
-			<menu_item_call label="Include Next Part" name="Include Next Part"/>
-			<menu_item_call label="Include Previous Part" name="Include Previous Part"/>
+			<menu_item_call label="Selecionar próxima parte" name="Select Next Part"/>
+			<menu_item_call label="Selecionar parte anterior" name="Select Previous Part"/>
+			<menu_item_call label="Incluir próxima parte" name="Include Next Part"/>
+			<menu_item_call label="Incluir parte anterior" name="Include Previous Part"/>
 		</menu>
 	</menu>
 	<menu label="Ajuda" name="Help">
@@ -133,9 +133,9 @@
 		<menu_item_check label="Compactar fotos para HD" name="QuietSnapshotsToDisk"/>
 		<menu_item_check label="Compactar fotos para HD" name="CompressSnapshotsToDisk"/>
 		<menu label="Ferramentas de desempenho" name="Performance Tools">
-			<menu_item_call label="Lag Meter" name="Lag Meter"/>
+			<menu_item_call label="Medidor de lag" name="Lag Meter"/>
 			<menu_item_check label="Barra de estatísticas" name="Statistics Bar"/>
-			<menu_item_check label="Show Avatar Rendering Cost" name="Avatar Rendering Cost"/>
+			<menu_item_check label="Carga de renderização de avatar" name="Avatar Rendering Cost"/>
 		</menu>
 		<menu label="Realces e visibilidade" name="Highlighting and Visibility">
 			<menu_item_check label="Efeito baliza piscando" name="Cheesy Beacon"/>
@@ -166,13 +166,13 @@
 			<menu_item_check label="Selecionado" name="Selected"/>
 			<menu_item_check label="Realçado" name="Highlighted"/>
 			<menu_item_check label="Texturas dinâmicas" name="Dynamic Textures"/>
-			<menu_item_check label="Foot Shadows" name="Foot Shadows"/>
-			<menu_item_check label="Fog" name="Fog"/>
-			<menu_item_check label="Flexible Objects" name="Flexible Objects"/>
+			<menu_item_check label="Sombras nos pés" name="Foot Shadows"/>
+			<menu_item_check label="Neblina" name="Fog"/>
+			<menu_item_check label="Objetos flexíveis" name="Flexible Objects"/>
 		</menu>
 		<menu_item_check label="Executar diversas instâncias" name="Run Multiple Threads"/>
 		<menu_item_call label="Limpar cache de grupo" name="ClearGroupCache"/>
-		<menu_item_check label="Mouse Smoothing" name="Mouse Smoothing"/>
+		<menu_item_check label="Smoothing de mouse" name="Mouse Smoothing"/>
 		<menu label="Atalhos" name="Shortcuts">
 			<menu_item_call label="Imagem (L$[COST])..." name="Upload Image"/>
 			<menu_item_check label="Busca" name="Search"/>
@@ -205,7 +205,7 @@
 	<menu label="Desenvolver" name="Develop">
 		<menu label="Painéis" name="Consoles">
 			<menu_item_check label="Painel de textura" name="Texture Console"/>
-			<menu_item_check label="Debug Console" name="Debug Console"/>
+			<menu_item_check label="Console de depuração" name="Debug Console"/>
 			<menu_item_call label="Painel de avisos" name="Notifications"/>
 			<menu_item_check label="Painel de tamanho de textura" name="Texture Size"/>
 			<menu_item_check label="Painel de texturas" name="Texture Category"/>
@@ -218,7 +218,7 @@
 		</menu>
 		<menu label="Show Info" name="Display Info">
 			<menu_item_check label="Mostrar hora" name="Show Time"/>
-			<menu_item_check label="Show Render Info" name="Show Render Info"/>
+			<menu_item_check label="Dados de renderização" name="Show Render Info"/>
 			<menu_item_check label="Mostrar cor sob o cursor" name="Show Color Under Cursor"/>
 			<menu_item_check label="Mostrar mudanças a objetos" name="Show Updates"/>
 		</menu>
@@ -239,7 +239,7 @@
 		</menu>
 		<menu label="Rendering" name="Rendering">
 			<menu_item_check label="Axes" name="Axes"/>
-			<menu_item_check label="Contornos" name="Wireframe"/>
+			<menu_item_check label="Wireframe" name="Wireframe"/>
 			<menu_item_check label="Global Illumination" name="Global Illumination"/>
 			<menu_item_check label="Texturas de animação" name="Animation Textures"/>
 			<menu_item_check label="Desativar texturas" name="Disable Textures"/>
@@ -247,11 +247,11 @@
 			<menu_item_check label="Render Attached Particles" name="Render Attached Particles"/>
 			<menu_item_check label="Objetos iridescentes" name="Hover Glow Objects"/>
 		</menu>
-		<menu label="Network" name="Network">
+		<menu label="Rede" name="Network">
 			<menu_item_check label="Pausar avatar" name="AgentPause"/>
 			<menu_item_call label="Drop a Packet" name="Drop a Packet"/>
 		</menu>
-		<menu_item_call label="Bumps, Pushes &amp; Hits" name="Bumps, Pushes &amp;amp; Hits"/>
+		<menu_item_call label="Empurrões, trombadas e tapas" name="Bumps, Pushes &amp;amp; Hits"/>
 		<menu label="Mundo" name="World">
 			<menu_item_check label="Impor sobre sol regional" name="Sim Sun Override"/>
 			<menu_item_check label="Efeito baliza piscando" name="Cheesy Beacon"/>
@@ -261,15 +261,15 @@
 		<menu label="Interface" name="UI">
 			<menu_item_call label="Teste de navegador web" name="Web Browser Test"/>
 			<menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/>
-			<menu_item_call label="Memory Stats" name="Memory Stats"/>
+			<menu_item_call label="Dados de memória" name="Memory Stats"/>
 			<menu_item_check label="Double-Click Auto-Pilot" name="Double-ClickAuto-Pilot"/>
 			<menu_item_check label="Debug Clicks" name="Debug Clicks"/>
 			<menu_item_check label="Debug Mouse Events" name="Debug Mouse Events"/>
 		</menu>
 		<menu label="XUI" name="XUI">
 			<menu_item_call label="Recarregar cores" name="Reload Color Settings"/>
-			<menu_item_call label="Show Font Test" name="Show Font Test"/>
-			<menu_item_call label="Load from XML" name="Load from XML"/>
+			<menu_item_call label="Teste de fonte" name="Show Font Test"/>
+			<menu_item_call label="Carregar de XML" name="Load from XML"/>
 			<menu_item_call label="Salvar para XML" name="Save to XML"/>
 			<menu_item_check label="Mostrar nomes XUI" name="Show XUI Names"/>
 			<menu_item_call label="Enviar MIs de teste" name="Send Test IMs"/>
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index 1480343dc17df5078ab7016143bd33829c0c34e0..5f91ff09e5600faec5767b9a6647b2bf301fbe36 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -1282,8 +1282,8 @@ Salvar na pasta Aplicativos?
 	</notification>
 	<notification name="GroupLeaveConfirmMember">
 		Você é atualmente um membro do grupo [GROUP].
-Deixar este grupo?
-		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Deixar"/>
+Sair do grupo?
+		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sair"/>
 	</notification>
 	<notification name="ConfirmKick">
 		Tem CERTEZA de que deseja expulsar todos os residentes do grid?
@@ -1294,7 +1294,7 @@ Deixar este grupo?
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="CannotStartAuctionAlreadyForSale">
-		Você não pode começar um leilão com um lote que já foi colocado à venda.  Desabilite a venda da terra se você tem certeza que deseja iniciar um leilão.
+		Você não pode começar um leilão com um lote que já foi colocado à venda. Desabilite a venda se você tem certeza que deseja fazer um leilão.
 	</notification>
 	<notification label="Falha ao bloquear objeto por nome" name="MuteByNameFailed">
 		Você já bloqueou este residente.
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml
index c11d8001718ec0a2528fc5dcb7dd58ba67a624e4..23cde50acc3e65f7ebcf9a30809c0cd08157b216 100644
--- a/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_tattoo_panel">
 	<panel name="avatar_tattoo_color_panel">
-		<texture_picker label="Tatoo de cabeça" name="Head Tattoo" tool_tip="Clique para escolher uma foto"/>
-		<texture_picker label="Tatoo da parte superior do corpo" name="Upper Tattoo" tool_tip="Clique para escolher uma foto"/>
-		<texture_picker label="Tatoo da parte inferior do corpo" name="Lower Tattoo" tool_tip="Clique para escolher uma foto"/>
+		<texture_picker label="Tatuagem de cabeça" name="Head Tattoo" tool_tip="Clique para escolher uma foto"/>
+		<texture_picker label="Tatuagem superior" name="Upper Tattoo" tool_tip="Selecione uma foto"/>
+		<texture_picker label="Tatuagem inferior" name="Lower Tattoo" tool_tip="Selecione uma foto"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_general.xml b/indra/newview/skins/default/xui/pt/panel_group_general.xml
index 85488f43af33935067603fdb750e5d6d011b7f73..0b65b4aadeec84a09f2f4f65dabd88261e9916f9 100644
--- a/indra/newview/skins/default/xui/pt/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/pt/panel_group_general.xml
@@ -46,7 +46,7 @@ Para obter mais ajuda, passe o mouse sobre as opções.
 		<check_box label="Qualquer um pode entrar" name="open_enrollement" tool_tip="Controla a entrada de novos membros, com ou sem convite."/>
 		<check_box label="Taxa de inscrição" name="check_enrollment_fee" tool_tip="Controla a cobrança de uma taxa de associação ao grupo."/>
 		<spinner label="L$" left_delta="120" name="spin_enrollment_fee" tool_tip="Se a opção &apos;Taxa de associação&apos; estiver marcada, novos membros precisam pagar o valor definido para entrar no grupo." width="60"/>
-		<combo_box name="group_mature_check" tool_tip="Define se a informação do seu grupo é considerada mature." width="170">
+		<combo_box name="group_mature_check" tool_tip="Define se os dados do seu grupo são conteúdo moderado." width="170">
 			<combo_box.item label="Conteúdo PG" name="pg"/>
 			<combo_box.item label="Conteúdo Mature" name="mature"/>
 		</combo_box>
diff --git a/indra/newview/skins/default/xui/pt/panel_group_notices.xml b/indra/newview/skins/default/xui/pt/panel_group_notices.xml
index 2abc8bc7c8690a3a8a97f63ca47e9edb58a93100..4b5a00c761c70f21dcd7771bb5eb551565e60690 100644
--- a/indra/newview/skins/default/xui/pt/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/pt/panel_group_notices.xml
@@ -19,10 +19,10 @@ Cada grupo pode enviar no máximo 200 avisos/dia
 		Nenhum resultado foi encontrado.
 	</text>
 	<button label="Criar um novo aviso" label_selected="Criar nova notícia" name="create_new_notice" tool_tip="Criar um novo aviso"/>
-	<button label="Atualizar" label_selected="Atualizar Lista" name="refresh_notices" tool_tip="Atualizar lista de avisos"/>
+	<button label="Atualizar" label_selected="Atualizar lista" name="refresh_notices" tool_tip="Atualizar lista de avisos"/>
 	<panel label="Criar nova notícia" name="panel_create_new_notice">
 		<text name="lbl">
-			Criar uma notícia
+			Criar  notícia
 		</text>
 		<text left="20" name="lbl3">
 			Assunto:
@@ -43,7 +43,7 @@ Cada grupo pode enviar no máximo 200 avisos/dia
 		<button label="Enviar" label_selected="Enviar" name="send_notice"/>
 		<group_drop_target name="drop_target" tool_tip="Arrastar um item do inventário para a caixa para enviá-lo com o aviso. É preciso ter autorização de cópia e transferência do item para anexá-lo ao aviso."/>
 	</panel>
-	<panel label="Visualizar Notícia Anterior" name="panel_view_past_notice">
+	<panel label="Visualizar notícia anterior" name="panel_view_past_notice">
 		<text name="lbl">
 			Notícia arquivada
 		</text>
diff --git a/indra/newview/skins/default/xui/pt/panel_groups.xml b/indra/newview/skins/default/xui/pt/panel_groups.xml
index aaea1178a639a5d9ea56c1f63d1cda77ba4da59c..0aea0d53dd90f4cf57cee63672b94686eacc68bd 100644
--- a/indra/newview/skins/default/xui/pt/panel_groups.xml
+++ b/indra/newview/skins/default/xui/pt/panel_groups.xml
@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="groups">
 	<text name="groupdesc" width="268">
-		Seu grupo ativo atual es&apos;ta mostrado em negrito.
+		Seu grupo ativo atual está em negrito.
 	</text>
 	<text name="groupcount" width="300">
-		Você pertence a [COUNT] grupos (de no máximo [MAX]).
+		Você pertence a [COUNT] grupos (máximo [MAX]).
 	</text>
-	<button width="86" label="MI/Chamada" name="IM" tool_tip="Abrir sessão de Mensagem Instantânea"/>
+	<button width="86" label="MI/Ligação" name="IM" tool_tip="Abrir sessão de Mensagem Instantânea"/>
 	<button width="86" label="Informações" name="Info"/>
 	<button width="86" label="Ativar" name="Activate"/>
-	<button width="86" label="Deixar" name="Leave"/>
+	<button width="86" label="Sair" name="Leave"/>
 	<button width="86" label="Criar..." name="Create"/>
 	<button width="86" label="Buscar..." name="Search..."/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_main_inventory.xml b/indra/newview/skins/default/xui/pt/panel_main_inventory.xml
index 4ba67466149cacdbf31eff1f467be4cd5928de91..104c3bface2bb5c7a9eee257fd54567d40a2f76f 100644
--- a/indra/newview/skins/default/xui/pt/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/pt/panel_main_inventory.xml
@@ -44,7 +44,7 @@
 				<menu_item_call label="Nova tatuagem" name="New Tattoo"/>
 			</menu>
 			<menu label="Nova parte do corpo" name="New Body Parts">
-				<menu_item_call label="Nova silhueta" name="New Shape"/>
+				<menu_item_call label="Nova forma" name="New Shape"/>
 				<menu_item_call label="Nova pele" name="New Skin"/>
 				<menu_item_call label="Novo cabelo" name="New Hair"/>
 				<menu_item_call label="Novos olhos" name="New Eyes"/>
diff --git a/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml b/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml
index 9815b8d0b4d345d90429990dc1ba2973f9ffc9ef..43c08200363f00e3f8ea06dcdd0e0eb101c0d8a4 100644
--- a/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Público geral" name="Media Settings General">
+<panel label="Geral" name="Media Settings General">
 	<text name="home_label">
 		Página web:
 	</text>
diff --git a/indra/newview/skins/default/xui/pt/panel_people.xml b/indra/newview/skins/default/xui/pt/panel_people.xml
index 66938e8f6f67b009ae709f3b7d2f3fc396229894..1516a2bb6566d202724ef573452852199023fbc7 100644
--- a/indra/newview/skins/default/xui/pt/panel_people.xml
+++ b/indra/newview/skins/default/xui/pt/panel_people.xml
@@ -48,12 +48,12 @@ Para conhecer mais gente, use [secondlife:///app/worldmap o Mapa].
 	</tab_container>
 	<panel name="button_bar">
 		<button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes"/>
-		<button label="MI" name="im_btn" tool_tip="Abrir sessão de mensagem instantânea"/>
+		<button label="MI" name="im_btn" tool_tip="Iniciar MI"/>
 		<button label="Chamada" name="call_btn" tool_tip="Ligar para este residente"/>
 		<button label="Compartilhar" name="share_btn"/>
 		<button label="Teletransporte" name="teleport_btn" tool_tip="Oferecer teletransporte"/>
 		<button label="Perfil do grupo" name="group_info_btn" tool_tip="Exibir informação de grupo"/>
-		<button label="Bate- papo de grupo" name="chat_btn" tool_tip="abrir sessão de bate- papo"/>
+		<button label="Bate-papo de grupo" name="chat_btn" tool_tip="Iniciar bate-papo"/>
 		<button label="Ligar para o grupo" name="group_call_btn" tool_tip="Ligar para este grupo"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_place_profile.xml b/indra/newview/skins/default/xui/pt/panel_place_profile.xml
index 5c81c7649bb5359e492feecbaacb403e1b897103..03f997f31bd0fb580a90db3c60c7ba64d55888eb 100644
--- a/indra/newview/skins/default/xui/pt/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/pt/panel_place_profile.xml
@@ -6,7 +6,7 @@
 	<string name="available" value="disponível"/>
 	<string name="allocated" value="alocados"/>
 	<string name="title_place" value="Perfil da região"/>
-	<string name="title_teleport_history" value="Histórico de teletransportes"/>
+	<string name="title_teleport_history" value="Teletransportes"/>
 	<string name="not_available" value="(N\A)"/>
 	<string name="unknown" value="(Desconhecido)"/>
 	<string name="public" value="(público)"/>
diff --git a/indra/newview/skins/default/xui/pt/panel_places.xml b/indra/newview/skins/default/xui/pt/panel_places.xml
index d9045e1a3706b59030314434247d6d69106a5f43..9da4201c85fb537288c34e0e71d32b0d250da58a 100644
--- a/indra/newview/skins/default/xui/pt/panel_places.xml
+++ b/indra/newview/skins/default/xui/pt/panel_places.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Lugares" name="places panel">
 	<string name="landmarks_tab_title" value="MEUS MARCOS"/>
-	<string name="teleport_history_tab_title" value="HISTÓRICO DE TELETRANSPORTES"/>
+	<string name="teleport_history_tab_title" value="TELETRANSPORTES"/>
 	<filter_editor label="Filtrar meus lugares" name="Filter"/>
 	<panel name="button_panel">
 		<button label="Teletransportar" name="teleport_btn" tool_tip="Teletransportar para a área selecionada"/>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml
index 95a2e47eba3a03731940c5318dfb4f97013100a1..f30c218c818ce4ac591b0bf53f7c0718a884eece 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml
@@ -16,17 +16,17 @@
 	<check_box label="Mostre-me em visão de mouse" name="first_person_avatar_visible"/>
 	<check_box label="Teclas de seta sempre me movem" name="arrow_keys_move_avatar_check"/>
 	<check_box label="Dê dois toques e pressione para correr" name="tap_tap_hold_to_run"/>
-	<check_box label="Mover os lábios do avatar quando estiver falando" name="enable_lip_sync"/>
+	<check_box label="Mover os lábios do avatar ao falar" name="enable_lip_sync"/>
 	<check_box label="Balão de bate-papo" name="bubble_text_chat"/>
 	<slider label="Opacidade" name="bubble_chat_opacity"/>
-	<color_swatch name="background" tool_tip="Escolha a cor do balão de bate-papo"/>
+	<color_swatch name="background" tool_tip="Cor do balão de bate-papo"/>
 	<check_box label="Mostrar erros de script" name="show_script_errors"/>
 	<radio_group name="show_location">
 		<radio_item label="Bate-papo local" name="0"/>
 		<radio_item label="Janelas separadas" name="1"/>
 	</radio_group>
-	<check_box label="Tecla liga/desliga da minha voz:" name="push_to_talk_toggle_check" tool_tip="Quando em modo de alternância, pressione e solte o botão UMA vez para ligar e desligar o microfone. Quando em modo de alternância, o microfone só transmite sua enquanto o botão estiver pressionado."/>
-	<line_editor label="Botao apertar e falar" name="modifier_combo"/>
-	<button label="Definir chave" name="set_voice_hotkey_button"/>
+	<check_box label="Tecla liga/desliga da minha voz:" name="push_to_talk_toggle_check" tool_tip="Quando em modo de alternância, pressione e solte o botão UMA vez para ligar e desligar o microfone. Quando em modo de alternância, o microfone só transmite sua voz quando o botão estiver pressionado."/>
+	<line_editor label="Botão apertar e falar" name="modifier_combo"/>
+	<button label="Definir tecla" name="set_voice_hotkey_button"/>
 	<button label="Botão do meio do mouse" name="set_voice_middlemouse_button" tool_tip="Redefinir como botão do meio do mouse"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
index 0c2e67b4d50ad13771d6be22e46afb16f5874a81..e566fde27cfefe63abceda442c5683b89ad57083 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
@@ -5,7 +5,7 @@
 	</text>
 	<radio_group name="chat_font_size">
 		<radio_item label="Pequeno" name="radio" value="0"/>
-		<radio_item label="Média" name="radio2" value="1"/>
+		<radio_item label="Médio" name="radio2" value="1"/>
 		<radio_item label="Grande" name="radio3" value="2"/>
 	</radio_group>
 	<text name="font_colors">
@@ -44,14 +44,14 @@
 		URLs
 	</text>
 	<check_box initial_value="true" label="Executar animação digitada quando estiver conversando" name="play_typing_animation"/>
-	<check_box label="Envie MIs por email quando eu estiver desconectado" name="send_im_to_email"/>
+	<check_box label="Enviar MIs por email se estiver desconectado" name="send_im_to_email"/>
 	<text name="show_ims_in_label">
 		Mostrar MIs em:
 	</text>
 	<text name="requires_restart_label">
 		(Reinicie para ativar)
 	</text>
-	<radio_group name="chat_window" tool_tip="Exibir cada bate-papo em uma janela separada, ou exibir todos em uma única janela com uma aba para cada pessoa (requer reinício)">
+	<radio_group name="chat_window" tool_tip="Exibir cada bate-papo em uma janela separada ou exibir todos em uma única janela com uma aba para cada pessoa (requer reinício)">
 		<radio_item label="Janelas separadas" name="radio" value="0"/>
 		<radio_item label="Guias" name="radio2" value="1"/>
 	</radio_group>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
index 7a3e69c988c6b2196c49242d5dfb6ab9790801e1..5c69fa8de1342627f16dc737ec88049d2e815440 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Geral" name="general_panel">
 	<text name="language_textbox">
-		Linguagem:
+		Idioma:
 	</text>
 	<combo_box name="language_combobox">
 		<combo_box.item label="Padrão" name="System Default Language"/>
@@ -20,20 +20,20 @@
 		(Reinicie para mostrar o novo idioma)
 	</text>
 	<text name="maturity_desired_prompt">
-		Eu quero acessar conteúdo classificado:
+		Quero acessar conteúdo:
 	</text>
 	<text name="maturity_desired_textbox"/>
 	<combo_box name="maturity_desired_combobox">
-		<combo_box.item label="PG, Mature e Adult" name="Desired_Adult"/>
-		<combo_box.item label="PG e Mature" name="Desired_Mature"/>
-		<combo_box.item label="PG" name="Desired_PG"/>
+		<combo_box.item label="Geral, Moderado e Adulto" name="Desired_Adult"/>
+		<combo_box.item label="Geral e Moderado" name="Desired_Mature"/>
+		<combo_box.item label="Geral" name="Desired_PG"/>
 	</combo_box>
 	<text name="start_location_textbox">
-		Ponto de partida:
+		Posição inicial:
 	</text>
 	<combo_box name="start_location_combo">
-		<combo_box.item label="Minha Última Localidade" name="MyLastLocation" tool_tip="Por padrão, registrar na minha última localidade."/>
-		<combo_box.item label="Minha Casa" name="MyHome" tool_tip="Como padrão, registrar na minha casa."/>
+		<combo_box.item label="Última localização" name="MyLastLocation" tool_tip="Voltar ao lugar onde estava antes."/>
+		<combo_box.item label="Meu início" name="MyHome" tool_tip="Voltar ao meu início."/>
 	</combo_box>
 	<check_box initial_value="true" label="Mostrar ao entrar" name="show_location_checkbox"/>
 	<text name="name_tags_textbox">
@@ -45,7 +45,7 @@
 		<radio_item label="Brevemente" name="radio3" value="2"/>
 	</radio_group>
 	<check_box label="Mostrar meu nome" name="show_my_name_checkbox1"/>
-	<check_box initial_value="true" label="Nomes pequenos" name="small_avatar_names_checkbox"/>
+	<check_box initial_value="true" label="Nome curto" name="small_avatar_names_checkbox"/>
 	<check_box label="Mostrar cargo" name="show_all_title_checkbox1"/>
 	<text name="effects_color_textbox">
 		Meus efeitos:
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
index 7f6439d1e741c3c4f73bedf7cf1a38fcc8119663..f03063d05b20509a33345231a9a8f48504339dbf 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
@@ -28,7 +28,7 @@
 	<text name="Cache location">
 		Localização do cache:
 	</text>
-	<button label="Navegar" label_selected="Navegar" name="set_cache"/>
+	<button label="Procurar" label_selected="Procurar" name="set_cache"/>
 	<button label="Redefinir" label_selected="Redefinir" name="reset_cache"/>
 	<text name="Web:">
 		Web:
@@ -45,5 +45,5 @@
 		Localização do proxy:
 	</text>
 	<line_editor name="web_proxy_editor" tool_tip="O nome ou endereço IP do proxy da sua preferência"/>
-	<spinner label="Número da porta:" name="web_proxy_port"/>
+	<spinner label="Porta:" name="web_proxy_port"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index 393478de08d7d805eaf000547b367728772c4c4e..773aea58480f1a7fa9a23ee3d8c48dcdb7f0c2d6 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -8,7 +8,7 @@
 		SECOND LIFE
 	</string>
 	<string name="SUPPORT_SITE">
-		Portal de Apoio do Second Life
+		Portal de Supporte Second Life
 	</string>
 	<string name="StartupDetectingHardware">
 		Detectando hardware...
@@ -32,7 +32,7 @@
 		Alterando a resolução...
 	</string>
 	<string name="LoginInProgress">
-		Fazendo Login. [APP_NAME] pode parecer congelado. Por favor, aguarde.
+		Fazendo login. [APP_NAME] pode parecer congelado. Por favor, aguarde.
 	</string>
 	<string name="LoginInProgressNoFrozen">
 		Logando...
@@ -44,7 +44,7 @@
 		Executando manutenção da conta...
 	</string>
 	<string name="LoginAttempt">
-		Falha na tentativa anterior de login. Fazendo Login, tentativa [NUMBER]
+		Falha na tentativa anterior de login. Login, tentativa [NUMBER]
 	</string>
 	<string name="LoginPrecaching">
 		Carregando mundo...
@@ -62,10 +62,10 @@
 		Verificando arquivos cache (pode levar de 60-90 segundos)...
 	</string>
 	<string name="LoginProcessingResponse">
-		Processando Resposta...
+		Processando resposta...
 	</string>
 	<string name="LoginInitializingWorld">
-		Inicializando Mundo...
+		Inicializando mundo...
 	</string>
 	<string name="LoginDecodingImages">
 		Decodificando imagens...
@@ -74,13 +74,13 @@
 		Inicializando o QuickTime...
 	</string>
 	<string name="LoginQuicktimeNotFound">
-		O QuickTime não foi encontrado - incapaz de inicializar.
+		O QuickTime não foi encontrado - falha ao iniciar.
 	</string>
 	<string name="LoginQuicktimeOK">
 		O QuickTime foi inicializado com sucesso.
 	</string>
 	<string name="LoginWaitingForRegionHandshake">
-		Aguardando o handshake com a região...
+		Aguardando handshake com a região...
 	</string>
 	<string name="LoginConnectingToRegion">
 		Conectando à região...
@@ -89,7 +89,7 @@
 		Baixando roupas...
 	</string>
 	<string name="LoginFailedNoNetwork">
-		Erro de Rede: Não foi possível estabelecer a conexão, verifique sua conexão de rede.
+		Erro de rede: Não foi possível estabelecer a conexão, verifique sua conexão de rede.
 	</string>
 	<string name="LoginFailed">
 		Falha do login.
@@ -143,22 +143,22 @@
 		Construído por Grupo
 	</string>
 	<string name="TooltipFlagNoBuild">
-		Não é Permitido Construir
+		Não é permitido construir
 	</string>
 	<string name="TooltipFlagNoEdit">
 		Construído por Grupo
 	</string>
 	<string name="TooltipFlagNotSafe">
-		Não é Seguro
+		Não é seguro
 	</string>
 	<string name="TooltipFlagNoFly">
-		Não é Permitido Voar
+		Não é permitido voar
 	</string>
 	<string name="TooltipFlagGroupScripts">
 		Scripts de Grupo
 	</string>
 	<string name="TooltipFlagNoScripts">
-		Não são Permitidos Scripts
+		Não são permitidos scripts
 	</string>
 	<string name="TooltipLand">
 		Terreno:
@@ -167,10 +167,10 @@
 		Apenas um item único pode ser arrastado para este local
 	</string>
 	<string name="TooltipHttpUrl">
-		Clique para ver essa página web
+		Clique para ver a página web
 	</string>
 	<string name="TooltipSLURL">
-		Clique para ver a informação desta localização
+		Clique para ver os dados desta localização
 	</string>
 	<string name="TooltipAgentUrl">
 		Clique para ver o perfil deste residente
@@ -200,7 +200,7 @@
 		Clique para ver a descrição deste evento
 	</string>
 	<string name="TooltipClassifiedUrl">
-		Clique para ver este classificado
+		Clique para ver este anúncio
 	</string>
 	<string name="TooltipParcelUrl">
 		Clique para ver a descrição desta parcela
@@ -215,7 +215,7 @@
 		Clique para ver esta localização no mapa
 	</string>
 	<string name="TooltipSLAPP">
-		Clique para ativar no secondlife:// commando
+		Clique para ativar no secondlife:// comando
 	</string>
 	<string name="CurrentURL" value="URL atual: [CurrentURL]"/>
 	<string name="TooltipPrice" value="L$[PRICE]-"/>
@@ -274,7 +274,7 @@
 		Buscando...
 	</string>
 	<string name="ReleaseNotes">
-		Notas de Distribuição
+		Notas de versão
 	</string>
 	<string name="LoadingData">
 		Carregando...
@@ -343,7 +343,7 @@
 		objeto
 	</string>
 	<string name="note card">
-		notecard
+		anotação
 	</string>
 	<string name="folder">
 		pasta
@@ -430,7 +430,7 @@
 		Entediado
 	</string>
 	<string name="anim_bow">
-		Saudar curvando
+		Reverência
 	</string>
 	<string name="anim_clap">
 		Aplaudir
@@ -490,10 +490,10 @@
 		Impaciente
 	</string>
 	<string name="anim_jumpforjoy">
-		Pular de Alegria
+		Pular de alegria
 	</string>
 	<string name="anim_kissmybutt">
-		Beije meu Bumbum
+		Beije meu bumbum
 	</string>
 	<string name="anim_express_kiss">
 		Beijar
@@ -514,7 +514,7 @@
 		Nya-nya-nya
 	</string>
 	<string name="anim_punch_onetwo">
-		Soco Um-Dois
+		Soco um-dois
 	</string>
 	<string name="anim_express_open_mouth">
 		Abrir a boca
@@ -529,10 +529,10 @@
 		Apontar para si
 	</string>
 	<string name="anim_punch_l">
-		Socar Esquerda
+		Soco esquerdo
 	</string>
 	<string name="anim_punch_r">
-		Socar Direita
+		Soco direito
 	</string>
 	<string name="anim_rps_countdown">
 		RPS contar
@@ -571,16 +571,16 @@
 		Fumar à toa
 	</string>
 	<string name="anim_smoke_inhale">
-		Inalar Fumaça
+		Inalar fumaça
 	</string>
 	<string name="anim_smoke_throw_down">
-		Expelir Fumaça
+		Expelir fumaça
 	</string>
 	<string name="anim_express_surprise">
 		Surpresa
 	</string>
 	<string name="anim_sword_strike_r">
-		Golpe de Espada
+		Golpe de espada
 	</string>
 	<string name="anim_angry_tantrum">
 		Enraivecer
@@ -637,7 +637,7 @@
 		grita:
 	</string>
 	<string name="ringing">
-		Conectando à conversa de Voz no mundo
+		Conectando à conversa de voz no mundo
 	</string>
 	<string name="connected">
 		Conectado
@@ -691,13 +691,13 @@
 		Controle sua camera
 	</string>
 	<string name="SIM_ACCESS_PG">
-		PG
+		Público geral
 	</string>
 	<string name="SIM_ACCESS_MATURE">
-		Mature
+		Moderado
 	</string>
 	<string name="SIM_ACCESS_ADULT">
-		Adult
+		Adulto
 	</string>
 	<string name="SIM_ACCESS_DOWN">
 		Desconectado
@@ -709,7 +709,7 @@
 		(desconhecido)
 	</string>
 	<string name="all_files">
-		Todos os Arquivos
+		Todos os arquivos
 	</string>
 	<string name="sound_files">
 		Sons
@@ -733,10 +733,10 @@
 		Imagens Bitmap
 	</string>
 	<string name="avi_movie_file">
-		Arquivo de filme AVI
+		Arquivo de vídeo AVI
 	</string>
 	<string name="xaf_animation_file">
-		Arquivo de Animação XAF
+		Arquivo de animação XAF
 	</string>
 	<string name="xml_file">
 		Arquivo XML
@@ -745,25 +745,25 @@
 		Arquivo RAW
 	</string>
 	<string name="compressed_image_files">
-		Imagens Compactadas
+		Imagens compactadas
 	</string>
 	<string name="load_files">
-		Carregar Arquivos
+		Carregar arquivos
 	</string>
 	<string name="choose_the_directory">
-		Escolher Diretório
+		Selecionar pasta
 	</string>
 	<string name="AvatarSetNotAway">
-		deixar como não away
+		deixar como ausente
 	</string>
 	<string name="AvatarSetAway">
-		deixar como Away
+		deixar como ausente
 	</string>
 	<string name="AvatarSetNotBusy">
-		deixar como não Ocupado
+		deixar como não ocupado
 	</string>
 	<string name="AvatarSetBusy">
-		Deixar como Busy
+		Deixar como ocupado
 	</string>
 	<string name="shape">
 		Silhueta
@@ -781,7 +781,7 @@
 		Camisa
 	</string>
 	<string name="pants">
-		calças
+		Calças
 	</string>
 	<string name="shoes">
 		Sapatos
@@ -796,22 +796,22 @@
 		Luvas
 	</string>
 	<string name="undershirt">
-		camiseta
+		Camiseta
 	</string>
 	<string name="underpants">
-		roupa debaixo
+		Roupa de baixo
 	</string>
 	<string name="skirt">
-		saia
+		Saia
 	</string>
 	<string name="alpha">
 		Alpha
 	</string>
 	<string name="tattoo">
-		Tattoo
+		Tatuagem
 	</string>
 	<string name="invalid">
-		inválido
+		Inválido
 	</string>
 	<string name="NewWearable">
 		Novo [WEARABLE_ITEM]
@@ -905,32 +905,32 @@
 	</string>
 	<string name="WornOnAttachmentPoint" value="(vestido em [ATTACHMENT_POINT])"/>
 	<string name="ActiveGesture" value="[GESLABEL] (ativado)"/>
-	<string name="Chat" value="Bate papo :"/>
-	<string name="Sound" value="Som :"/>
-	<string name="Wait" value="--- Aguarde :"/>
-	<string name="AnimFlagStop" value="Parar animação :"/>
-	<string name="AnimFlagStart" value="Iniciar animação :"/>
-	<string name="Wave" value="Aceno"/>
+	<string name="Chat" value="Bate papo"/>
+	<string name="Sound" value="Som"/>
+	<string name="Wait" value="--- Aguarde"/>
+	<string name="AnimFlagStop" value="Parar animação"/>
+	<string name="AnimFlagStart" value="Iniciar animação"/>
+	<string name="Wave" value="Acenar"/>
 	<string name="HelloAvatar" value="Olá, avatar!"/>
-	<string name="ViewAllGestures" value="Ver tudo &gt;&gt;"/>
+	<string name="ViewAllGestures" value="Ver todos&gt;&gt;"/>
 	<string name="Animations" value="Animações,"/>
 	<string name="Calling Cards" value="Cartões de visitas,"/>
 	<string name="Clothing" value="Vestuário,"/>
 	<string name="Gestures" value="Gestos,"/>
-	<string name="Landmarks" value="Landmarks,"/>
-	<string name="Notecards" value="Notecards,"/>
+	<string name="Landmarks" value="Marcos"/>
+	<string name="Notecards" value="Anotações"/>
 	<string name="Objects" value="Objetos,"/>
 	<string name="Scripts" value="Scripts,"/>
-	<string name="Sounds" value="Sons,"/>
-	<string name="Textures" value="Texturas,"/>
-	<string name="Snapshots" value="Fotografias,"/>
+	<string name="Sounds" value="Sons"/>
+	<string name="Textures" value="Texturas"/>
+	<string name="Snapshots" value="Fotografias"/>
 	<string name="No Filters" value="Não"/>
-	<string name="Since Logoff" value="- desde desligado"/>
+	<string name="Since Logoff" value="- Desde desligado"/>
 	<string name="InvFolder My Inventory">
-		Meu Inventorio
+		Meu inventário
 	</string>
 	<string name="InvFolder My Favorites">
-		Meus Favoritos
+		Meus favoritos
 	</string>
 	<string name="InvFolder Library">
 		Biblioteca
@@ -942,10 +942,10 @@
 		Sons
 	</string>
 	<string name="InvFolder Calling Cards">
-		Cartões de Visitas
+		Cartões de visitas
 	</string>
 	<string name="InvFolder Landmarks">
-		Landmarks
+		Marcos
 	</string>
 	<string name="InvFolder Scripts">
 		Scripts
@@ -957,31 +957,31 @@
 		Objetos
 	</string>
 	<string name="InvFolder Notecards">
-		Notecards
+		Anotações
 	</string>
 	<string name="InvFolder New Folder">
-		Nova Pasta
+		Nova pasta
 	</string>
 	<string name="InvFolder Inventory">
 		Inventário
 	</string>
 	<string name="InvFolder Uncompressed Images">
-		Imagens Descompactadas
+		Imagens descompactadas
 	</string>
 	<string name="InvFolder Body Parts">
-		Partes do Corpo
+		Corpo
 	</string>
 	<string name="InvFolder Trash">
 		Lixo
 	</string>
 	<string name="InvFolder Photo Album">
-		Álbum de Fotografias
+		Álbum de fotografias
 	</string>
 	<string name="InvFolder Lost And Found">
 		Achados e Perdidos
 	</string>
 	<string name="InvFolder Uncompressed Sounds">
-		Sons Descompactados
+		Sons descompactados
 	</string>
 	<string name="InvFolder Animations">
 		Animações
@@ -993,10 +993,10 @@
 		Favoritos
 	</string>
 	<string name="InvFolder Current Outfit">
-		Vestimanta Atual
+		Look atual
 	</string>
 	<string name="InvFolder My Outfits">
-		Minhas Vestimentas
+		Meus looks
 	</string>
 	<string name="InvFolder Accessories">
 		Acessórios
@@ -1071,7 +1071,7 @@
 		Espinha
 	</string>
 	<string name="Pelvis">
-		Pelvis
+		Pélvis
 	</string>
 	<string name="Mouth">
 		Boca
@@ -1128,10 +1128,10 @@
 		Estômago
 	</string>
 	<string name="Left Pec">
-		Pec esquerdo
+		Peitoral E
 	</string>
 	<string name="Right Pec">
-		Pec direito
+		Peitoral D
 	</string>
 	<string name="YearsMonthsOld">
 		[AGEYEARS] [AGEMONTHS] de idade
@@ -1209,19 +1209,19 @@
 		Empregado da Linden Lab
 	</string>
 	<string name="PaymentInfoUsed">
-		Info de Pagamento usada
+		Dados de pagamento usados
 	</string>
 	<string name="PaymentInfoOnFile">
-		Info de Pagamento no Arquivo
+		Dados de pagamento fornecidos
 	</string>
 	<string name="NoPaymentInfoOnFile">
-		Nenhuma Info de Pagamento no Arquivo
+		Nenhum dado de pagamento
 	</string>
 	<string name="AgeVerified">
-		Idade-verificada
+		Idade comprovada
 	</string>
 	<string name="NotAgeVerified">
-		Idade não-verificada
+		Idade não comprovada
 	</string>
 	<string name="Center 2">
 		Centro 2
@@ -1248,16 +1248,16 @@
 		Inferior direito
 	</string>
 	<string name="CompileQueueDownloadedCompiling">
-		Downloaded, agora compilando
+		Baixado, agora compilando
 	</string>
 	<string name="CompileQueueScriptNotFound">
 		Script não encontrado no servidor.
 	</string>
 	<string name="CompileQueueProblemDownloading">
-		Problema no  download
+		Problema no download
 	</string>
 	<string name="CompileQueueInsufficientPermDownload">
-		Permissões insuficientes para  fazer o download do script.
+		Permissões insuficientes para fazer o download do script.
 	</string>
 	<string name="CompileQueueInsufficientPermFor">
 		Permissões insuficientes para
@@ -1266,7 +1266,7 @@
 		Falha desconhecida para download
 	</string>
 	<string name="CompileQueueTitle">
-		Progresso do Recompilamento
+		Progresso do recompilamento
 	</string>
 	<string name="CompileQueueStart">
 		recompilar
@@ -1275,7 +1275,7 @@
 		Reset Progresso
 	</string>
 	<string name="ResetQueueStart">
-		reset
+		Zerar
 	</string>
 	<string name="RunQueueTitle">
 		Definir funcionamento do progresso
@@ -1299,7 +1299,7 @@
 		Salvo.
 	</string>
 	<string name="ObjectOutOfRange">
-		Script (objecto fora de alcance)
+		Script (objeto fora de alcance)
 	</string>
 	<string name="GodToolsObjectOwnedBy">
 		Objeto [OBJECT] de propriedade de [OWNER]
@@ -1327,10 +1327,10 @@
 		Total
 	</string>
 	<string name="NoGroupDataFound">
-		Não ha dados de grupo para o grupo
+		Não há dados de grupo
 	</string>
 	<string name="IMParentEstate">
-		propriedade dos pais
+		Propriedade-pai
 	</string>
 	<string name="IMMainland">
 		continente
@@ -1522,7 +1522,7 @@
 		Conteúdo do objeto
 	</string>
 	<string name="BusyModeResponseDefault">
-		O residente para o qual escreveu está no modo &apos;ocupado&apos;, ou seja, ele prefere não receber nada no momento.   Sua mensagem será exibida como uma MI mais tarde.
+		O residente para o qual escreveu está no modo &apos;ocupado&apos;, ou seja, ele prefere não receber nada no momento. Sua mensagem será exibida como uma MI mais tarde.
 	</string>
 	<string name="MuteByName">
 		(por nome)
@@ -1537,10 +1537,10 @@
 		(grupo)
 	</string>
 	<string name="RegionNoCovenant">
-		Não ha Contrato fornecido para essa Região.
+		Não foi definido um contrato para essa região.
 	</string>
 	<string name="RegionNoCovenantOtherOwner">
-		Não ha Contrato fornecido para essa Região. O terreno nesta região está sendo vendido pelo Proprietário, não pela Linden Lab. Favor contatar o Proprietário da região para detalhes de venda.
+		Não foi definido um contrato para essa Região. O terreno nesta região está sendo vendido pelo Proprietário, não pela Linden Lab. Favor contatar o Proprietário da região para detalhes de venda.
 	</string>
 	<string name="covenant_last_modified">
 		Última modificação:
@@ -1560,7 +1560,7 @@
 		(vai atualizar depois de publicado)
 	</string>
 	<string name="NoPicksClassifiedsText">
-		Você não criou nenhum Destaque ou Anúncio.  Clique no botão &quot;+&quot; para criar um Destaque ou Anúncio.
+		Você não criou nenhum Destaque ou Anúncio. Clique no botão &quot;+&quot; para criar um Destaque ou Anúncio.
 	</string>
 	<string name="NoAvatarPicksClassifiedsText">
 		O usuário não tem nenhum destaque ou anúncio
@@ -1581,19 +1581,19 @@
 		possuído pelo grupo
 	</string>
 	<string name="InvOfferOwnedByUnknownGroup">
-		possuído por um grupo desconhecido
+		de um grupo desconhecido
 	</string>
 	<string name="InvOfferOwnedBy">
-		possuído por
+		de
 	</string>
 	<string name="InvOfferOwnedByUnknownUser">
-		possuído por usuário desconhecido
+		de usuário desconhecido
 	</string>
 	<string name="InvOfferGaveYou">
 		deu a você
 	</string>
 	<string name="InvOfferYouDecline">
-		Você declina
+		Você recusa
 	</string>
 	<string name="InvOfferFrom">
 		de
@@ -1620,7 +1620,7 @@
 		pagou prêmio para o evento
 	</string>
 	<string name="GroupMoneyBalance">
-		Balanço
+		Saldo
 	</string>
 	<string name="GroupMoneyCredits">
 		Créditos
@@ -1651,10 +1651,10 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
 		Bloquear
 	</string>
 	<string name="AddLandmarkNavBarMenu">
-		Adicionar Landmark...
+		Adicionar marco...
 	</string>
 	<string name="EditLandmarkNavBarMenu">
-		Editar Landmark...
+		Editar marco...
 	</string>
 	<string name="accel-mac-control">
 		⌃
@@ -1762,7 +1762,7 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
 		Locação Linden
 	</string>
 	<string name="Adult">
-		Adult
+		Adulto
 	</string>
 	<string name="Arts&amp;Culture">
 		Artes e Cultura
@@ -1774,13 +1774,13 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
 		Educacional
 	</string>
 	<string name="Gaming">
-		Jogos
+		Games
 	</string>
 	<string name="Hangout">
 		Moradia
 	</string>
 	<string name="Newcomer Friendly">
-		Amigável a Novos Usuários
+		Para recém-chegados
 	</string>
 	<string name="Parks&amp;Nature">
 		Parques &amp; Natureza
@@ -1822,10 +1822,10 @@ Se a mensagem persistir, reinicie o computador e tente novamente.
 Se o error persistir, pode ser necessário desinstalar completamente [APP_NAME] e reinstalá-lo.
 	</string>
 	<string name="MBFatalError">
-		Erro Fatal
+		Erro fatal
 	</string>
 	<string name="MBRequiresAltiVec">
-		[APP_NAME] exige um processador com AltiVec (G4 ou superior).
+		[APP_NAME] exige processador com AltiVec (G4 ou superior).
 	</string>
 	<string name="MBAlreadyRunning">
 		[APP_NAME] já está em execução.
@@ -1833,7 +1833,7 @@ Verifique a sua barra de tarefas para obter uma cópia do programa minimizado.
 Se a mensagem persistir, reinicie o computador.
 	</string>
 	<string name="MBFrozenCrashed">
-		[APP_NAME] parece ter congelado ou falhado na execução anterior. Você gostaria de enviar um relatório de falha?
+		[APP_NAME] parece ter congelado ou falhado na execução anterior. Enviar relatório de falha?
 	</string>
 	<string name="MBAlert">
 		Alerta
@@ -1887,7 +1887,7 @@ Também não se esqueça de definir seu monitor para True Color (32-bit), em pai
 Se você continuar a receber esta mensagem, contate o [SUPPORT_SITE].
 	</string>
 	<string name="MBPixelFmtSetErr">
-		ão é possível definir o formato de pixel
+		Não é possível definir o formato de pixel
 	</string>
 	<string name="MBGLContextErr">
 		Não é possível criar o contexto de renderização GL
@@ -1901,7 +1901,7 @@ Se você continuar a receber esta mensagem, contate o [SUPPORT_SITE].
 If you continue to receive this message, contact the [SUPPORT_SITE].
 	</string>
 	<string name="5 O&apos;Clock Shadow">
-		Sombra descuidada
+		Barba por fazer
 	</string>
 	<string name="All White">
 		Todo branco
@@ -1910,10 +1910,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Olhos de Anime
 	</string>
 	<string name="Arced">
-		arqueado
+		Arqueados
 	</string>
 	<string name="Arm Length">
-		Comprimento do Braço
+		Comprimento do braço
 	</string>
 	<string name="Attached">
 		Anexado
@@ -1931,7 +1931,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Franja
 	</string>
 	<string name="Beady Eyes">
-		Olhos malévolos
+		Olhos pequenos
 	</string>
 	<string name="Belly Size">
 		Tamanho da barriga
@@ -1940,7 +1940,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Grande
 	</string>
 	<string name="Big Butt">
-		Traseiro Grande
+		Bunda grande
 	</string>
 	<string name="Big Hair Back">
 		Cabelo volumoso: Trás
@@ -1949,7 +1949,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Cabelo volumoso: Frente
 	</string>
 	<string name="Big Hair Top">
-		cabelo volumoso: Topo
+		Cabelo volumoso: Topo
 	</string>
 	<string name="Big Head">
 		cabeça grande
@@ -1958,7 +1958,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Peitorais grandes
 	</string>
 	<string name="Big Spikes">
-		espinhos grandes
+		Pontas grandes
 	</string>
 	<string name="Black">
 		Negro
@@ -1967,40 +1967,40 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Loiro
 	</string>
 	<string name="Blonde Hair">
-		Cabelo Loiro
+		Cabelo loiro
 	</string>
 	<string name="Blush">
 		Blush
 	</string>
 	<string name="Blush Color">
-		cor do Blush
+		Cor do blush
 	</string>
 	<string name="Blush Opacity">
-		Opacidade do Blush
+		Opacidade do blush
 	</string>
 	<string name="Body Definition">
-		definição do Corpo
+		Definição do corpo
 	</string>
 	<string name="Body Fat">
-		Gordura corporal
+		Gordura
 	</string>
 	<string name="Body Freckles">
-		Sardas do corpo
+		Sardas
 	</string>
 	<string name="Body Thick">
 		Corpo cheio
 	</string>
 	<string name="Body Thickness">
-		Espessura do corpo
+		Ossatura
 	</string>
 	<string name="Body Thin">
 		Corpo magro
 	</string>
 	<string name="Bow Legged">
-		pernas arqueadas
+		Pernas arqueadas
 	</string>
 	<string name="Breast Buoyancy">
-		Flexibilidade dos seios
+		Caimento dos seios
 	</string>
 	<string name="Breast Cleavage">
 		Separação dos seios
@@ -2015,7 +2015,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Largo
 	</string>
 	<string name="Brow Size">
-		tamanho da sobrancelha
+		Tamanho da sobrancelha
 	</string>
 	<string name="Bug Eyes">
 		Olhos saltados
@@ -2039,25 +2039,25 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Tamanho do traseiro
 	</string>
 	<string name="bustle skirt">
-		Movimentação de saia
+		Saia armada
 	</string>
 	<string name="no bustle">
-		Sem movimento
+		Saia reta
 	</string>
 	<string name="more bustle">
-		Mais movimento
+		Mais
 	</string>
 	<string name="Chaplin">
 		Chaplin
 	</string>
 	<string name="Cheek Bones">
-		Maças do rosto
+		Maçãs do rosto
 	</string>
 	<string name="Chest Size">
 		Tamanho do peito
 	</string>
 	<string name="Chin Angle">
-		ângulo do queixo
+		Ângulo do queixo
 	</string>
 	<string name="Chin Cleft">
 		Fissura do queixo
@@ -2105,7 +2105,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Direita fechada
 	</string>
 	<string name="Coin Purse">
-		Pubis
+		Pouco volume
 	</string>
 	<string name="Collar Back">
 		Colarinho posterior
@@ -2126,7 +2126,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Nariz torto
 	</string>
 	<string name="Cuff Flare">
-		bainha larga
+		Bainha larga
 	</string>
 	<string name="Dark">
 		Escuro
@@ -2135,13 +2135,13 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Verde escuro
 	</string>
 	<string name="Darker">
-		mais escuro
+		Mais escuro
 	</string>
 	<string name="Deep">
 		Profundidade
 	</string>
 	<string name="Default Heels">
-		Salto Padrão
+		Salto padrão
 	</string>
 	<string name="Dense">
 		Densidade
@@ -2153,10 +2153,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Curvado para baixo
 	</string>
 	<string name="Duffle Bag">
-		pubis
+		Mais volume
 	</string>
 	<string name="Ear Angle">
-		ângulo da orelha
+		Ângulo da orelha
 	</string>
 	<string name="Ear Size">
 		Tamanho da orelha
@@ -2183,7 +2183,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Abertura dos olhos
 	</string>
 	<string name="Eye Pop">
-		Olho Saltado
+		Olho saltado
 	</string>
 	<string name="Eye Size">
 		Tamanho dos olhos
@@ -2195,7 +2195,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Arco da sobrancelha
 	</string>
 	<string name="Eyebrow Density">
-		densidade da sobrancelha
+		Densidade da sobrancelha
 	</string>
 	<string name="Eyebrow Height">
 		Altura da sobrancelha
@@ -2258,7 +2258,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Tamanho dos pés
 	</string>
 	<string name="Forehead Angle">
-		ângulo da testa
+		Ângulo da testa
 	</string>
 	<string name="Forehead Heavy">
 		Testa pronunciada
@@ -2291,7 +2291,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Dedos da luva
 	</string>
 	<string name="Glove Length">
-		comprimento das luvas
+		Comprimento das luvas
 	</string>
 	<string name="Hair">
 		Cabelo
@@ -2330,7 +2330,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Tamanho das mãos
 	</string>
 	<string name="Handlebars">
-		bigode
+		Bigode
 	</string>
 	<string name="Head Length">
 		Comprimento da cabeça
@@ -2354,7 +2354,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Altura
 	</string>
 	<string name="High">
-		alto
+		Alto
 	</string>
 	<string name="High Heels">
 		Salto alto
@@ -2363,7 +2363,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Maxilar alto
 	</string>
 	<string name="High Platforms">
-		Plataformas alta
+		Plataformas altas
 	</string>
 	<string name="High and Tight">
 		Alto e justo
@@ -2399,7 +2399,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Comprimento da blusa
 	</string>
 	<string name="Jacket Wrinkles">
-		Dobras da Blusa
+		Dobras da jaqueta
 	</string>
 	<string name="Jaw Angle">
 		Ângulo da mandíbula
@@ -2441,7 +2441,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Menos
 	</string>
 	<string name="Less Body Fat">
-		Menos gordura corporal
+		Menos gordura
 	</string>
 	<string name="Less Curtains">
 		Menos barba
@@ -2456,7 +2456,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Menos gravidade
 	</string>
 	<string name="Less Love">
-		Menos cintura
+		Menos excesso
 	</string>
 	<string name="Less Muscles">
 		Menos músculos
@@ -2489,7 +2489,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Fenda dos lábios
 	</string>
 	<string name="Lip Cleft Depth">
-		Prfundidade da fenda dos lábios
+		Profundidade da fenda dos lábios
 	</string>
 	<string name="Lip Fullness">
 		Volume dos lábios
@@ -2546,37 +2546,37 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Pantalonas
 	</string>
 	<string name="Loose Shirt">
-		Saia folgada
+		Camisa folgada
 	</string>
 	<string name="Loose Sleeves">
-		Manga longa
+		Mangas folgadas
 	</string>
 	<string name="Love Handles">
 		Pneu
 	</string>
 	<string name="Low">
-		baixo
+		Baixo
 	</string>
 	<string name="Low Heels">
 		Salto baixo
 	</string>
 	<string name="Low Jaw">
-		maxilar baixo
+		Maxilar baixo
 	</string>
 	<string name="Low Platforms">
 		Plataformas baixas
 	</string>
 	<string name="Low and Loose">
-		baixo e solto
+		Baixo e solto
 	</string>
 	<string name="Lower">
-		diminuir
+		Mais baixo
 	</string>
 	<string name="Lower Bridge">
-		nariz baixo
+		Mais baixa
 	</string>
 	<string name="Lower Cheeks">
-		bochechas abaixadas
+		Bochechas abaixadas
 	</string>
 	<string name="Male">
 		Masculino
@@ -2591,7 +2591,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Mais blush
 	</string>
 	<string name="More Body Fat">
-		Mais gordura corporal
+		Mais gordura
 	</string>
 	<string name="More Curtains">
 		Mais barba
@@ -2645,7 +2645,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Mais vertical
 	</string>
 	<string name="More Volume">
-		Mais Volume
+		Mais volume
 	</string>
 	<string name="More soul">
 		Mais alma
@@ -2696,16 +2696,16 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Espessura do pescoço
 	</string>
 	<string name="No Blush">
-		Sem Blush
+		Sem blush
 	</string>
 	<string name="No Eyeliner">
 		Sem delineador
 	</string>
 	<string name="No Eyeshadow">
-		Sem Sombra dos olhos
+		Sem sombra
 	</string>
 	<string name="No Lipgloss">
-		Sem brilho labial
+		Sem brilho
 	</string>
 	<string name="No Lipstick">
 		Sem batom
@@ -2720,7 +2720,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Sem vermelho
 	</string>
 	<string name="No Spikes">
-		Sem espinhos
+		Sem pontas
 	</string>
 	<string name="No White">
 		Sem branco
@@ -2801,10 +2801,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Sombra externa
 	</string>
 	<string name="Overbite">
-		Overbite
+		Má oclusão
 	</string>
 	<string name="Package">
-		Pubis
+		Púbis
 	</string>
 	<string name="Painted Nails">
 		Unhas pintadas
@@ -2816,7 +2816,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Cavalo da calça
 	</string>
 	<string name="Pants Fit">
-		Pants Fit
+		Caimento das calças
 	</string>
 	<string name="Pants Length">
 		Comprimento das calças
@@ -2831,10 +2831,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Parte
 	</string>
 	<string name="Part Bangs">
-		Parts da franja
+		Divisão da franja
 	</string>
 	<string name="Pectorals">
-		Peitoral
+		Peitorais
 	</string>
 	<string name="Pigment">
 		Pigmento
@@ -2879,7 +2879,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Pálpebras inchadas
 	</string>
 	<string name="Rainbow Color">
-		Cor do arco iris
+		Cor do arco íris
 	</string>
 	<string name="Red Hair">
 		Cabelo ruivo
@@ -2906,7 +2906,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Cabelo desalinhado
 	</string>
 	<string name="Saddle Bags">
-		Saddle Bags
+		Culote
 	</string>
 	<string name="Scrawny Leg">
 		Pernas magricelas
@@ -2915,7 +2915,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Separar
 	</string>
 	<string name="Shallow">
-		raso
+		Raso
 	</string>
 	<string name="Shear Back">
 		Trás rente
@@ -2939,22 +2939,22 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Rente frente
 	</string>
 	<string name="Shift Left">
-		Deslocar  à esquerda
+		Deslocar p/ esquerda
 	</string>
 	<string name="Shift Mouth">
 		Deslocar boca
 	</string>
 	<string name="Shift Right">
-		Deslocar direita
+		Deslocar p/ direita
 	</string>
 	<string name="Shirt Bottom">
-		Deslocar inferior
+		Barra da camisa
 	</string>
 	<string name="Shirt Fit">
-		Deslocar ajuste
+		Ajuste da camisa
 	</string>
 	<string name="Shirt Wrinkles">
-		Deslocar dobras
+		+/- amassada
 	</string>
 	<string name="Shoe Height">
 		Altura do sapato
@@ -3218,7 +3218,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Ver mais informações sobre a localização atual
 	</string>
 	<string name="LocationCtrlComboBtnTooltip">
-		Meu histórico de localizações
+		Histórico de localizações
 	</string>
 	<string name="UpdaterWindowTitle">
 		[APP_NAME] Atualização
@@ -3418,7 +3418,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 Denunciar abuso
 	</string>
 	<string name="New Shape">
-		Nova silhueta
+		Nova forma
 	</string>
 	<string name="New Skin">
 		Nova pele
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 3f379fcf75bb9aae6b078194e3e5231a9612467e..18ac10fe389ef2f91ae46f89605914d8d7056ee0 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -479,8 +479,8 @@ def package_finish(self):
                 grid_vars_template = """
                 OutFile "%(installer_file)s"
                 !define INSTFLAGS "%(flags)s"
-                !define INSTNAME   "SecondLife"
-                !define SHORTCUT   "Second Life"
+                !define INSTNAME   "SecondLifeViewer2"
+                !define SHORTCUT   "Second Life Viewer 2"
                 !define URLNAME   "secondlife"
                 Caption "Second Life ${VERSION}"
                 """
@@ -686,7 +686,7 @@ def construct(self):
 
 
     def package_finish(self):
-        channel_standin = 'Second Life'  # hah, our default channel is not usable on its own
+        channel_standin = 'Second Life Viewer 2'  # hah, our default channel is not usable on its own
         if not self.default_channel():
             channel_standin = self.channel()
 
diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp
index 5677308fb0bf2b135fe50f18e235f1e2f12414cf..7e9a8336e77c6f0972cea5f6ee88d7f72c4720ee 100644
--- a/indra/test_apps/llplugintest/llmediaplugintest.cpp
+++ b/indra/test_apps/llplugintest/llmediaplugintest.cpp
@@ -1955,7 +1955,7 @@ void LLMediaPluginTest::updateStatusBar()
 		 cached_distance == mDistanceCameraToSelectedGeometry
 	   )
 	{
-		// nothing changed so don't spend time in this shitty function
+		// nothing changed so don't spend time here
 		return;
 	};
 
diff --git a/install.xml b/install.xml
index 0f4ab373f56f02c7a19db06a5b62e1df1b3cb59f..899bd0a6cc53902fa245404bbc01d28da000174e 100644
--- a/install.xml
+++ b/install.xml
@@ -948,23 +948,23 @@ anguage Infrstructure (CLI) international standard</string>
           <key>darwin</key>
           <map>
             <key>md5sum</key>
-            <string>ada82d41467cdb7f8e25a442f58b6963</string>
+            <string>7d75751cbd8786ea4d710b50b5931b9b</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20100318.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6+cookies-darwin-20100402.tar.bz2</uri>
           </map>
           <key>linux</key>
           <map>
             <key>md5sum</key>
-            <string>7e7cd450525da133a459c659ea19207d</string>
+            <string>455d9ce60837366a7e744751bdc8b6c3</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20100322.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20100329.tar.bz2</uri>
           </map>
           <key>windows</key>
           <map>
             <key>md5sum</key>
-            <string>93b49cfea365fe082eda3e466a9beec3</string>
+            <string>b873755dff5f4221b5a3ba63129435a7</string>
             <key>url</key>
-            <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100318.tar.bz2</uri>
+            <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-cookies-20100402.tar.bz2</uri>
           </map>
         </map>
       </map>