diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 1f578eec5fd90c3a571ef6c3bbb25125f5a82630..592e9fc901b5dbd73581320c256c33c77823df6c 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -171,8 +171,8 @@ if (LINUX)
     if (NOT STANDALONE)
       # this stops us requiring a really recent glibc at runtime
       add_definitions(-fno-stack-protector)
-      # linking can be so slow - give us a chance to figure out why
-      set(CMAKE_CXX_LINK_FLAGS "-Wl,--stats,--no-keep-memory")
+      # linking can be very memory-hungry, especially the final viewer link
+      set(CMAKE_CXX_LINK_FLAGS "-Wl,--no-keep-memory")
     endif (NOT STANDALONE)
   endif (VIEWER)
 
diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp
index 528a7bb4a5f51f9b11b29739502a6738e9f08b8b..40a975226843f9fd7f4b89324cf8c8930b44aa02 100644
--- a/indra/llcharacter/llcharacter.cpp
+++ b/indra/llcharacter/llcharacter.cpp
@@ -181,16 +181,18 @@ void LLCharacter::requestStopMotion( LLMotion* motion)
 // updateMotions()
 //-----------------------------------------------------------------------------
 static LLFastTimer::DeclareTimer FTM_UPDATE_ANIMATION("Update Animation");
+static LLFastTimer::DeclareTimer FTM_UPDATE_HIDDEN_ANIMATION("Update Hidden Anim");
 
 void LLCharacter::updateMotions(e_update_t update_type)
 {
-	LLFastTimer t(FTM_UPDATE_ANIMATION);
 	if (update_type == HIDDEN_UPDATE)
 	{
+		LLFastTimer t(FTM_UPDATE_HIDDEN_ANIMATION);
 		mMotionController.updateMotionsMinimal();
 	}
 	else
 	{
+		LLFastTimer t(FTM_UPDATE_ANIMATION);
 		// unpause if the number of outstanding pause requests has dropped to the initial one
 		if (mMotionController.isPaused() && mPauseRequest->getNumRefs() == 1)
 		{
diff --git a/indra/llcharacter/lleditingmotion.cpp b/indra/llcharacter/lleditingmotion.cpp
index 381d19e6142c47698e6896386a9abeb33cf6777f..57554bdc35557406134c5d5a139b825f32cf4522 100644
--- a/indra/llcharacter/lleditingmotion.cpp
+++ b/indra/llcharacter/lleditingmotion.cpp
@@ -221,7 +221,7 @@ BOOL LLEditingMotion::onUpdate(F32 time, U8* joint_mask)
 	if (!target.isFinite())
 	{
 		llerrs << "Non finite target in editing motion with target distance of " << target_dist << 
-			" and focus point " << focus_pt << " and pointAtPt: " << *pointAtPt << llendl;
+			" and focus point " << focus_pt << llendl;
 	}
 	
 	mTarget.setPosition( target + mParentJoint.getPosition());
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 9ead183a9e043cc5de702403426dc2fb816d8661..4481d334b27b82b5c6748247b5598e77b6d077d8 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -50,6 +50,7 @@ set(llcommon_SOURCE_FILES
     lleventdispatcher.cpp
     lleventfilter.cpp
     llevents.cpp
+    lleventtimer.cpp
     llfasttimer_class.cpp
     llfile.cpp
     llfindlocale.cpp
@@ -164,7 +165,6 @@ set(llcommon_HEADER_FILES
     llhttpstatuscodes.h
     llindexedqueue.h
     llinstancetracker.h
-    llinstancetracker.h
     llkeythrottle.h
     lllazy.h
     lllistenerwrapper.h
diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp
index 968b92d1e7ad94b5f21ee45665cf9e32ba9ff073..6b2d1b7c201f0937a52aab2cebdc00fa23c3c173 100644
--- a/indra/llcommon/llapp.cpp
+++ b/indra/llcommon/llapp.cpp
@@ -41,7 +41,7 @@
 #include "lllivefile.h"
 #include "llmemory.h"
 #include "llstl.h" // for DeletePointer()
-#include "lltimer.h"
+#include "lleventtimer.h"
 
 //
 // Signal handling
diff --git a/indra/llcommon/lleventtimer.cpp b/indra/llcommon/lleventtimer.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d44e7ec1e6875022c66f586c3d6c9cae7ff86794
--- /dev/null
+++ b/indra/llcommon/lleventtimer.cpp
@@ -0,0 +1,95 @@
+/** 
+ * @file lleventtimer.cpp
+ * @brief Cross-platform objects for doing timing 
+ *
+ * $LicenseInfo:firstyear=2000&license=viewergpl$
+ * 
+ * Copyright (c) 2000-2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "lleventtimer.h"
+
+#include "u64.h"
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+//		LLEventTimer Implementation
+//
+//////////////////////////////////////////////////////////////////////////////
+
+LLEventTimer::LLEventTimer(F32 period)
+: mEventTimer()
+{
+	mPeriod = period;
+}
+
+LLEventTimer::LLEventTimer(const LLDate& time)
+: mEventTimer()
+{
+	mPeriod = (F32)(time.secondsSinceEpoch() - LLDate::now().secondsSinceEpoch());
+}
+
+
+LLEventTimer::~LLEventTimer()
+{
+}
+
+//static
+void LLEventTimer::updateClass() 
+{
+	std::list<LLEventTimer*> completed_timers;
+
+	{
+		LLInstanceTrackerScopedGuard guard;
+		for (instance_iter iter = guard.beginInstances(); iter != guard.endInstances(); ) 
+		{
+			LLEventTimer& timer = *iter++;
+			F32 et = timer.mEventTimer.getElapsedTimeF32();
+			if (timer.mEventTimer.getStarted() && et > timer.mPeriod) {
+				timer.mEventTimer.reset();
+				if ( timer.tick() )
+				{
+					completed_timers.push_back( &timer );
+				}
+			}
+		}
+	}
+
+	if ( completed_timers.size() > 0 )
+	{
+		for (std::list<LLEventTimer*>::iterator completed_iter = completed_timers.begin(); 
+			 completed_iter != completed_timers.end(); 
+			 completed_iter++ ) 
+		{
+			delete *completed_iter;
+		}
+	}
+}
+
+
diff --git a/indra/llcommon/lleventtimer.h b/indra/llcommon/lleventtimer.h
new file mode 100644
index 0000000000000000000000000000000000000000..5181cce52d6ca1de45ef5c055506b829d13a6a7e
--- /dev/null
+++ b/indra/llcommon/lleventtimer.h
@@ -0,0 +1,60 @@
+/** 
+ * @file lleventtimer.h
+ * @brief Cross-platform objects for doing timing 
+ *
+ * $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_EVENTTIMER_H					
+#define LL_EVENTTIMER_H
+
+#include "stdtypes.h"
+#include "lldate.h"
+#include "llinstancetracker.h"
+#include "lltimer.h"
+
+// class for scheduling a function to be called at a given frequency (approximate, inprecise)
+class LL_COMMON_API LLEventTimer : protected LLInstanceTracker<LLEventTimer>
+{
+public:
+	LLEventTimer(F32 period);	// period is the amount of time between each call to tick() in seconds
+	LLEventTimer(const LLDate& time);
+	virtual ~LLEventTimer();
+	
+	//function to be called at the supplied frequency
+	// Normally return FALSE; TRUE will delete the timer after the function returns.
+	virtual BOOL tick() = 0;
+
+	static void updateClass();
+
+protected:
+	LLTimer mEventTimer;
+	F32 mPeriod;
+};
+
+#endif //LL_EVENTTIMER_H
diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp
index 6d8d81e114ebae2515af71832a50236d29f715b0..2e5edb1f3b54827aa892aa13b06c82678af30064 100644
--- a/indra/llcommon/llfasttimer_class.cpp
+++ b/indra/llcommon/llfasttimer_class.cpp
@@ -218,9 +218,10 @@ LLFastTimer::DeclareTimer::DeclareTimer(const std::string& name)
 // static
 void LLFastTimer::DeclareTimer::updateCachedPointers()
 {
+	DeclareTimer::LLInstanceTrackerScopedGuard guard;
 	// propagate frame state pointers to timer declarations
-	for (DeclareTimer::instance_iter it = DeclareTimer::beginInstances();
-		it != DeclareTimer::endInstances();
+	for (DeclareTimer::instance_iter it = guard.beginInstances();
+		it != guard.endInstances();
 		++it)
 	{
 		// update cached pointer
@@ -371,20 +372,23 @@ void LLFastTimer::NamedTimer::buildHierarchy()
 	if (sCurFrameIndex < 0 ) return;
 
 	// set up initial tree
-    for (instance_iter it = NamedTimer::beginInstances();
-		it != endInstances();
-		++it)
 	{
-		NamedTimer& timer = *it;
-		if (&timer == NamedTimerFactory::instance().getRootTimer()) continue;
-
-		// bootstrap tree construction by attaching to last timer to be on stack
-		// when this timer was called
-		if (timer.getFrameState().mLastCaller && timer.mParent == NamedTimerFactory::instance().getRootTimer())
+		NamedTimer::LLInstanceTrackerScopedGuard guard;
+		for (instance_iter it = guard.beginInstances();
+		     it != guard.endInstances();
+		     ++it)
 		{
-			timer.setParent(timer.getFrameState().mLastCaller->mTimer);
-			// no need to push up tree on first use, flag can be set spuriously
-			timer.getFrameState().mMoveUpTree = false;
+			NamedTimer& timer = *it;
+			if (&timer == NamedTimerFactory::instance().getRootTimer()) continue;
+			
+			// bootstrap tree construction by attaching to last timer to be on stack
+			// when this timer was called
+			if (timer.getFrameState().mLastCaller && timer.mParent == NamedTimerFactory::instance().getRootTimer())
+			{
+				timer.setParent(timer.getFrameState().mLastCaller->mTimer);
+				// no need to push up tree on first use, flag can be set spuriously
+				timer.getFrameState().mMoveUpTree = false;
+			}
 		}
 	}
 
@@ -486,18 +490,21 @@ void LLFastTimer::NamedTimer::resetFrame()
 		F64 total_time = 0;
 		LLSD sd;
 
-		for (NamedTimer::instance_iter it = NamedTimer::beginInstances();
-					it != NamedTimer::endInstances();
-					++it)
 		{
-			NamedTimer& timer = *it;
-			FrameState& info = timer.getFrameState();
-			sd[timer.getName()]["Time"] = (LLSD::Real) (info.mSelfTimeCounter*iclock_freq);	
-			sd[timer.getName()]["Calls"] = (LLSD::Integer) info.mCalls;
-			
-			// computing total time here because getting the root timer's getCountHistory
-			// doesn't work correctly on the first frame
-			total_time = total_time + info.mSelfTimeCounter * iclock_freq;
+			NamedTimer::LLInstanceTrackerScopedGuard guard;
+			for (NamedTimer::instance_iter it = guard.beginInstances();
+			     it != guard.endInstances();
+			     ++it)
+			{
+				NamedTimer& timer = *it;
+				FrameState& info = timer.getFrameState();
+				sd[timer.getName()]["Time"] = (LLSD::Real) (info.mSelfTimeCounter*iclock_freq);	
+				sd[timer.getName()]["Calls"] = (LLSD::Integer) info.mCalls;
+				
+				// computing total time here because getting the root timer's getCountHistory
+				// doesn't work correctly on the first frame
+				total_time = total_time + info.mSelfTimeCounter * iclock_freq;
+			}
 		}
 
 		sd["Total"]["Time"] = (LLSD::Real) total_time;
@@ -531,21 +538,24 @@ void LLFastTimer::NamedTimer::resetFrame()
 	DeclareTimer::updateCachedPointers();
 
 	// reset for next frame
-	for (NamedTimer::instance_iter it = NamedTimer::beginInstances();
-		it != NamedTimer::endInstances();
-		++it)
 	{
-		NamedTimer& timer = *it;
-
-		FrameState& info = timer.getFrameState();
-		info.mSelfTimeCounter = 0;
-		info.mCalls = 0;
-		info.mLastCaller = NULL;
-		info.mMoveUpTree = false;
-		// update parent pointer in timer state struct
-		if (timer.mParent)
+		NamedTimer::LLInstanceTrackerScopedGuard guard;
+		for (NamedTimer::instance_iter it = guard.beginInstances();
+		     it != guard.endInstances();
+		     ++it)
 		{
-			info.mParent = &timer.mParent->getFrameState();
+			NamedTimer& timer = *it;
+			
+			FrameState& info = timer.getFrameState();
+			info.mSelfTimeCounter = 0;
+			info.mCalls = 0;
+			info.mLastCaller = NULL;
+			info.mMoveUpTree = false;
+			// update parent pointer in timer state struct
+			if (timer.mParent)
+			{
+				info.mParent = &timer.mParent->getFrameState();
+			}
 		}
 	}
 
@@ -575,20 +585,23 @@ void LLFastTimer::NamedTimer::reset()
 	}
 
 	// reset all history
-	for (NamedTimer::instance_iter it = NamedTimer::beginInstances();
-		it != NamedTimer::endInstances();
-		++it)
 	{
-		NamedTimer& timer = *it;
-		if (&timer != NamedTimerFactory::instance().getRootTimer()) 
+		NamedTimer::LLInstanceTrackerScopedGuard guard;
+		for (NamedTimer::instance_iter it = guard.beginInstances();
+		     it != guard.endInstances();
+		     ++it)
 		{
-			timer.setParent(NamedTimerFactory::instance().getRootTimer());
+			NamedTimer& timer = *it;
+			if (&timer != NamedTimerFactory::instance().getRootTimer()) 
+			{
+				timer.setParent(NamedTimerFactory::instance().getRootTimer());
+			}
+			
+			timer.mCountAverage = 0;
+			timer.mCallAverage = 0;
+			memset(timer.mCountHistory, 0, sizeof(U32) * HISTORY_NUM);
+			memset(timer.mCallHistory, 0, sizeof(U32) * HISTORY_NUM);
 		}
-
-		timer.mCountAverage = 0;
-		timer.mCallAverage = 0;
-		memset(timer.mCountHistory, 0, sizeof(U32) * HISTORY_NUM);
-		memset(timer.mCallHistory, 0, sizeof(U32) * HISTORY_NUM);
 	}
 
 	sLastFrameIndex = 0;
diff --git a/indra/llcommon/llinstancetracker.cpp b/indra/llcommon/llinstancetracker.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c962cb5be1496fba7deb05cecfa4d0afa75c9077
--- /dev/null
+++ b/indra/llcommon/llinstancetracker.cpp
@@ -0,0 +1,20 @@
+/**
+ * @file   lllinstancetracker.cpp
+ * 
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * Copyright (c) 2009, Linden Research, Inc.
+ * $/LicenseInfo$
+ */
+
+// Precompiled header
+#include "linden_common.h"
+// associated header
+#include "llinstancetracker.h"
+// STL headers
+// std headers
+// external library headers
+// other Linden headers
+
+// llinstancetracker.h is presently header-only. This file exists only because our CMake
+// test macro ADD_BUILD_TEST requires it.
+int dummy = 0;
diff --git a/indra/llcommon/llinstancetracker.h b/indra/llcommon/llinstancetracker.h
index 11fe5236519f3e35f6bbfc720e06b8c15c6e80d3..9df799827338df8592996e23eca511e8ac5f4488 100644
--- a/indra/llcommon/llinstancetracker.h
+++ b/indra/llcommon/llinstancetracker.h
@@ -98,7 +98,10 @@ class LLInstanceTracker : boost::noncopyable
 		mKey = key; 
 		getMap_()[key] = static_cast<T*>(this); 
 	}
-	void remove_() { getMap_().erase(mKey); }
+	void remove_()
+	{
+		getMap_().erase(mKey);
+	}
 
     static InstanceMap& getMap_()
     {
@@ -129,31 +132,65 @@ class LLInstanceTracker<T, T*>
 
 	/// for completeness of analogy with the generic implementation
 	static T* getInstance(T* k) { return k; }
-	static key_iter beginKeys() { return getSet_().begin(); }
-	static key_iter endKeys()   { return getSet_().end(); }
-	static instance_iter beginInstances() { return instance_iter(getSet_().begin()); }
-	static instance_iter endInstances()   { return instance_iter(getSet_().end()); }
 	static S32 instanceCount() { return getSet_().size(); }
 
+	// Instantiate this to get access to iterators for this type.  It's a 'guard' in the sense
+	// that it treats deletes of this type as errors as long as there is an instance of
+	// this class alive in scope somewhere (i.e. deleting while iterating is bad).
+	class LLInstanceTrackerScopedGuard
+	{
+	public:
+		LLInstanceTrackerScopedGuard()
+		{
+			++sIterationNestDepth;
+		}
+
+		~LLInstanceTrackerScopedGuard()
+		{
+			--sIterationNestDepth;
+		}
+
+		static instance_iter beginInstances() {	return instance_iter(getSet_().begin()); }
+		static instance_iter endInstances() { return instance_iter(getSet_().end()); }
+		static key_iter beginKeys() { return getSet_().begin(); }
+		static key_iter endKeys()   { return getSet_().end(); }
+	};
+
 protected:
-	LLInstanceTracker() { getSet_().insert(static_cast<T*>(this)); }
-	virtual ~LLInstanceTracker() { getSet_().erase(static_cast<T*>(this)); }
+	LLInstanceTracker()
+	{
+		// it's safe but unpredictable to create instances of this type while all instances are being iterated over.  I hate unpredictable.  This assert will probably be turned on early in the next development cycle.
+		//llassert(sIterationNestDepth == 0);
+		getSet_().insert(static_cast<T*>(this));
+	}
+	virtual ~LLInstanceTracker()
+	{
+		// it's unsafe to delete instances of this type while all instances are being iterated over.
+		llassert(sIterationNestDepth == 0);
+		getSet_().erase(static_cast<T*>(this));
+	}
 
-	LLInstanceTracker(const LLInstanceTracker& other) { getSet_().insert(static_cast<T*>(this)); }
+	LLInstanceTracker(const LLInstanceTracker& other)
+	{
+		//llassert(sIterationNestDepth == 0);
+		getSet_().insert(static_cast<T*>(this));
+	}
 
-    static InstanceSet& getSet_()   // called after getReady() but before go()
-    {
-        if (! sInstances)
-        {
-            sInstances = new InstanceSet;
-        }
-        return *sInstances;
-    }
+	static InstanceSet& getSet_()
+	{
+		if (! sInstances)
+		{
+			sInstances = new InstanceSet;
+		}
+		return *sInstances;
+	}
 
 	static InstanceSet* sInstances;
+	static S32 sIterationNestDepth;
 };
 
 template <typename T, typename KEY> typename LLInstanceTracker<T, KEY>::InstanceMap* LLInstanceTracker<T, KEY>::sInstances = NULL;
 template <typename T> typename LLInstanceTracker<T, T*>::InstanceSet* LLInstanceTracker<T, T*>::sInstances = NULL;
+template <typename T> S32 LLInstanceTracker<T, T*>::sIterationNestDepth = 0;
 
 #endif
diff --git a/indra/llcommon/lllivefile.cpp b/indra/llcommon/lllivefile.cpp
index effda6c49c281faeebdb77b39152c9c70a474df9..5ca90d82ba782f02d9199ba537716b34f95580eb 100644
--- a/indra/llcommon/lllivefile.cpp
+++ b/indra/llcommon/lllivefile.cpp
@@ -33,7 +33,7 @@
 
 #include "lllivefile.h"
 #include "llframetimer.h"
-#include "lltimer.h"
+#include "lleventtimer.h"
 
 const F32 DEFAULT_CONFIG_FILE_REFRESH = 5.0f;
 
diff --git a/indra/llcommon/lltimer.cpp b/indra/llcommon/lltimer.cpp
index ef3e8dbc946396353fa014978d3898900cba06a5..25b768079ba96ac211d8731da1ae46528146dec0 100644
--- a/indra/llcommon/lltimer.cpp
+++ b/indra/llcommon/lltimer.cpp
@@ -555,54 +555,3 @@ void secondsToTimecodeString(F32 current_time, std::string& tcstring)
 }
 
 
-//////////////////////////////////////////////////////////////////////////////
-//
-//		LLEventTimer Implementation
-//
-//////////////////////////////////////////////////////////////////////////////
-
-LLEventTimer::LLEventTimer(F32 period)
-: mEventTimer()
-{
-	mPeriod = period;
-}
-
-LLEventTimer::LLEventTimer(const LLDate& time)
-: mEventTimer()
-{
-	mPeriod = (F32)(time.secondsSinceEpoch() - LLDate::now().secondsSinceEpoch());
-}
-
-
-LLEventTimer::~LLEventTimer()
-{
-}
-
-void LLEventTimer::updateClass() 
-{
-	std::list<LLEventTimer*> completed_timers;
-	for (instance_iter iter = beginInstances(); iter != endInstances(); ) 
-	{
-		LLEventTimer& timer = *iter++;
-		F32 et = timer.mEventTimer.getElapsedTimeF32();
-		if (timer.mEventTimer.getStarted() && et > timer.mPeriod) {
-			timer.mEventTimer.reset();
-			if ( timer.tick() )
-			{
-				completed_timers.push_back( &timer );
-			}
-		}
-	}
-
-	if ( completed_timers.size() > 0 )
-	{
-		for (std::list<LLEventTimer*>::iterator completed_iter = completed_timers.begin(); 
-			 completed_iter != completed_timers.end(); 
-			 completed_iter++ ) 
-		{
-			delete *completed_iter;
-		}
-	}
-}
-
-
diff --git a/indra/llcommon/lltimer.h b/indra/llcommon/lltimer.h
index d009c0f5f7dfc7b05dadac715b195c33eddd99ee..baba95bfa1fe1c5324810099cddb5f7e54118e33 100644
--- a/indra/llcommon/lltimer.h
+++ b/indra/llcommon/lltimer.h
@@ -39,8 +39,6 @@
 #include <limits.h>
 
 #include "stdtypes.h"
-#include "lldate.h"
-#include "llinstancetracker.h"
 
 #include <string>
 #include <list>
@@ -171,25 +169,6 @@ LL_COMMON_API struct tm* utc_to_pacific_time(time_t utc_time, BOOL pacific_dayli
 LL_COMMON_API void microsecondsToTimecodeString(U64 current_time, std::string& tcstring);
 LL_COMMON_API void secondsToTimecodeString(F32 current_time, std::string& tcstring);
 
-// class for scheduling a function to be called at a given frequency (approximate, inprecise)
-class LL_COMMON_API LLEventTimer : protected LLInstanceTracker<LLEventTimer>
-{
-public:
-	LLEventTimer(F32 period);	// period is the amount of time between each call to tick() in seconds
-	LLEventTimer(const LLDate& time);
-	virtual ~LLEventTimer();
-	
-	//function to be called at the supplied frequency
-	// Normally return FALSE; TRUE will delete the timer after the function returns.
-	virtual BOOL tick() = 0;
-
-	static void updateClass();
-
-protected:
-	LLTimer mEventTimer;
-	F32 mPeriod;
-};
-
 U64 LL_COMMON_API totalTime();					// Returns current system time in microseconds
 
 #endif
diff --git a/indra/llcommon/tests/llinstancetracker_test.cpp b/indra/llcommon/tests/llinstancetracker_test.cpp
index 7415f2d33b1eb31eb27853c3abe103b781b9103b..4bb3ec2922b6aef7025a58db440606310667dd7d 100644
--- a/indra/llcommon/tests/llinstancetracker_test.cpp
+++ b/indra/llcommon/tests/llinstancetracker_test.cpp
@@ -138,23 +138,29 @@ namespace tut
         keys.insert(&one);
         keys.insert(&two);
         keys.insert(&three);
-        for (Unkeyed::key_iter ki(Unkeyed::beginKeys()), kend(Unkeyed::endKeys());
-             ki != kend; ++ki)
-        {
-            ensure_equals("spurious key", keys.erase(*ki), 1);
-        }
+	{
+		Unkeyed::LLInstanceTrackerScopedGuard guard;
+		for (Unkeyed::key_iter ki(guard.beginKeys()), kend(guard.endKeys());
+		     ki != kend; ++ki)
+		{
+			ensure_equals("spurious key", keys.erase(*ki), 1);
+		}
+	}
         ensure_equals("unreported key", keys.size(), 0);
 
         KeySet instances;
         instances.insert(&one);
         instances.insert(&two);
         instances.insert(&three);
-        for (Unkeyed::instance_iter ii(Unkeyed::beginInstances()), iend(Unkeyed::endInstances());
-             ii != iend; ++ii)
-        {
-            Unkeyed& ref = *ii;
-            ensure_equals("spurious instance", instances.erase(&ref), 1);
-        }
+	{
+		Unkeyed::LLInstanceTrackerScopedGuard guard;
+		for (Unkeyed::instance_iter ii(guard.beginInstances()), iend(guard.endInstances());
+		     ii != iend; ++ii)
+		{
+			Unkeyed& ref = *ii;
+			ensure_equals("spurious instance", instances.erase(&ref), 1);
+		}
+	}
         ensure_equals("unreported instance", instances.size(), 0);
     }
 } // namespace tut
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index e02be6c8c1495f7a6f287270292807e305ab3e65..5649b4cab7e7eaac7576de253008041cf873174d 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -676,9 +676,6 @@ void LLImageRaw::copy(LLImageRaw* src)
 
 	LLImageRaw* dst = this;  // Just for clarity.
 
-	llassert( (3 == src->getComponents()) || (4 == src->getComponents()) );
-	llassert( (3 == dst->getComponents()) || (4 == dst->getComponents()) );
-
 	if( (src->getWidth() == dst->getWidth()) && (src->getHeight() == dst->getHeight()) )
 	{
 		// No scaling needed
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index df4c618ac10e187cad7aee71b970e880b970baae..192c6157a8f1ce67342bdfec554b6a101ccce5c2 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -3822,6 +3822,7 @@ BOOL LLVolume::cleanupTriangleData( const S32 num_input_vertices,
 
 	// Generate the vertex mapping and the list of vertices without
 	// duplicates.  This will crash if there are no vertices.
+	llassert(num_input_vertices > 0); // check for no vertices!
 	S32 *vertex_mapping = new S32[num_input_vertices];
 	LLVector3 *new_vertices = new LLVector3[num_input_vertices];
 	LLVertexIndexPair *prev_pairp = NULL;
diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp
index 91c796a9e6a8d43cbf9ee9674937a42fd36dc912..6a2449cf4b33c0f8009c6b91b024cd3e4d855f9e 100644
--- a/indra/llplugin/llpluginclassmedia.cpp
+++ b/indra/llplugin/llpluginclassmedia.cpp
@@ -471,7 +471,7 @@ void LLPluginClassMedia::mouseEvent(EMouseEventType type, int button, int x, int
 	sendMessage(message);
 }
 
-bool LLPluginClassMedia::keyEvent(EKeyEventType type, int key_code, MASK modifiers)
+bool LLPluginClassMedia::keyEvent(EKeyEventType type, int key_code, MASK modifiers, LLSD native_key_data)
 {
 	bool result = true;
 	
@@ -528,6 +528,7 @@ bool LLPluginClassMedia::keyEvent(EKeyEventType type, int key_code, MASK modifie
 		message.setValueS32("key", key_code);
 
 		message.setValue("modifiers", translateModifiers(modifiers));
+		message.setValueLLSD("native_key_data", native_key_data);
 		
 		sendMessage(message);
 	}
@@ -546,12 +547,13 @@ void LLPluginClassMedia::scrollEvent(int x, int y, MASK modifiers)
 	sendMessage(message);
 }
 	
-bool LLPluginClassMedia::textInput(const std::string &text, MASK modifiers)
+bool LLPluginClassMedia::textInput(const std::string &text, MASK modifiers, LLSD native_key_data)
 {
 	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "text_event");
 
 	message.setValue("text", text);
 	message.setValue("modifiers", translateModifiers(modifiers));
+	message.setValueLLSD("native_key_data", native_key_data);
 	
 	sendMessage(message);
 	
@@ -682,13 +684,13 @@ LLPluginClassMedia::ETargetType getTargetTypeFromLLQtWebkit(int target_type)
 	// so that we don't expose the llqtwebkit header in viewer code
 	switch (target_type)
 	{
-	case LinkTargetType::LTT_TARGET_NONE:
+	case LLQtWebKit::LTT_TARGET_NONE:
 		return LLPluginClassMedia::TARGET_NONE;
 
-	case LinkTargetType::LTT_TARGET_BLANK:
+	case LLQtWebKit::LTT_TARGET_BLANK:
 		return LLPluginClassMedia::TARGET_BLANK;
 
-	case LinkTargetType::LTT_TARGET_EXTERNAL:
+	case LLQtWebKit::LTT_TARGET_EXTERNAL:
 		return LLPluginClassMedia::TARGET_EXTERNAL;
 
 	default:
diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h
index ebb9099576699d217b0e76dcf6d9287d05c59135..58e91fa0b433bae23ab10b404ce62cf4ad1affb0 100644
--- a/indra/llplugin/llpluginclassmedia.h
+++ b/indra/llplugin/llpluginclassmedia.h
@@ -114,12 +114,12 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner
 		KEY_EVENT_REPEAT
 	}EKeyEventType;
 	
-	bool keyEvent(EKeyEventType type, int key_code, MASK modifiers);
+	bool keyEvent(EKeyEventType type, int key_code, MASK modifiers, LLSD native_key_data);
 
 	void scrollEvent(int x, int y, MASK modifiers);
 	
 	// Text may be unicode (utf8 encoded)
-	bool textInput(const std::string &text, MASK modifiers);
+	bool textInput(const std::string &text, MASK modifiers, LLSD native_key_data);
 	
 	void loadURI(const std::string &uri);
 	
diff --git a/indra/llplugin/llpluginmessagepipe.cpp b/indra/llplugin/llpluginmessagepipe.cpp
index cc193fca4210c1c8997534a3a86c72fc83b33841..1d7ddc55924c02f1728a8694a2db6cdbf9b8ba19 100644
--- a/indra/llplugin/llpluginmessagepipe.cpp
+++ b/indra/llplugin/llpluginmessagepipe.cpp
@@ -304,7 +304,14 @@ void LLPluginMessagePipe::processInput(void)
 	while((delim = mInput.find(MESSAGE_DELIMITER, start)) != std::string::npos)
 	{	
 		// Let the owner process this message
-		mOwner->receiveMessageRaw(mInput.substr(start, delim - start));
+		if (mOwner)
+		{
+			mOwner->receiveMessageRaw(mInput.substr(start, delim - start));
+		}
+		else
+		{
+			LL_WARNS("Plugin") << "!mOwner" << LL_ENDL;
+		}
 		
 		start = delim + 1;
 	}
diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp
index 0f3254d78d2dc60e3b4f76d3325cc10b0d7bc040..52b5a319ecbc5aff9da0bd546ccf88c50b24e80c 100644
--- a/indra/llplugin/llpluginprocesschild.cpp
+++ b/indra/llplugin/llpluginprocesschild.cpp
@@ -278,14 +278,21 @@ bool LLPluginProcessChild::isDone(void)
 
 void LLPluginProcessChild::sendMessageToPlugin(const LLPluginMessage &message)
 {
-	std::string buffer = message.generate();
-
-	LL_DEBUGS("Plugin") << "Sending to plugin: " << buffer << LL_ENDL;
-	LLTimer elapsed;
-	
-	mInstance->sendMessage(buffer);
-
-	mCPUElapsed += elapsed.getElapsedTimeF64();
+	if (mInstance)
+	{
+		std::string buffer = message.generate();
+		
+		LL_DEBUGS("Plugin") << "Sending to plugin: " << buffer << LL_ENDL;
+		LLTimer elapsed;
+		
+		mInstance->sendMessage(buffer);
+		
+		mCPUElapsed += elapsed.getElapsedTimeF64();
+	}
+	else
+	{
+		LL_WARNS("Plugin") << "mInstance == NULL" << LL_ENDL;
+	}
 }
 
 void LLPluginProcessChild::sendMessageToParent(const LLPluginMessage &message)
diff --git a/indra/llprimitive/tests/llmediaentry_test.cpp b/indra/llprimitive/tests/llmediaentry_test.cpp
index 277e370ca4b4e47cd9e455b336237d2ab4a14b2a..88cd96ebe4dc4dc0ac165ac1157c76e3db4b749e 100644
--- a/indra/llprimitive/tests/llmediaentry_test.cpp
+++ b/indra/llprimitive/tests/llmediaentry_test.cpp
@@ -157,14 +157,9 @@ namespace
 
 namespace tut
 {
-    bool llsd_equals(const LLSD& a, const LLSD& b) {
-        // cheesy, brute force, but it works
-        return std::string(ll_pretty_print_sd(a)) == std::string(ll_pretty_print_sd(b));
-    }
-
     void ensure_llsd_equals(const std::string& msg, const LLSD& expected, const LLSD& actual)
     {
-        if (!tut::llsd_equals(expected, actual))
+        if (!llsd_equals(expected, actual))
         {
             std::string message = msg;
             message += ": actual: ";
diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp
index 59e7d890f43229e039427915a517d462cdc2daec..22fad792da32c6fb4974bf3d3d7c1c0dcb73ddad 100644
--- a/indra/llrender/llfontfreetype.cpp
+++ b/indra/llrender/llfontfreetype.cpp
@@ -504,8 +504,13 @@ void LLFontFreetype::resetBitmapCache()
 	mCharGlyphInfoMap.clear();
 	mFontBitmapCachep->reset();
 
-	// Add the empty glyph
-	addGlyphFromFont(this, 0, 0);
+	// Adding default glyph is skipped for fallback fonts here as well as in loadFace(). 
+	// This if was added as fix for EXT-4971.
+	if(!mIsFallback)
+	{
+		// Add the empty glyph
+		addGlyphFromFont(this, 0, 0);
+	}
 }
 
 void LLFontFreetype::destroyGL()
diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
index 1de1d6ded4a0df1a244bb949f3ddae5cfe649e1b..b6a6b448eee7cbe9c13f022104366dac07618d3e 100644
--- a/indra/llrender/llfontgl.cpp
+++ b/indra/llrender/llfontgl.cpp
@@ -601,14 +601,20 @@ S32	LLFontGL::firstDrawableChar(const llwchar* wchars, F32 max_pixels, S32 text_
 	{
 		llwchar wch = wchars[i];
 
-		F32 char_width = mFontFreetype->getXAdvance(wch);
+		const LLFontGlyphInfo* fgi= mFontFreetype->getGlyphInfo(wch);
+
+		// last character uses character width, since the whole character needs to be visible
+		// other characters just use advance
+		F32 width = (i == start) 
+			? (F32)(fgi->mWidth + fgi->mXBearing)  	// use actual width for last character
+			: fgi->mXAdvance;						// use advance for all other characters										
 
-		if( scaled_max_pixels < (total_width + char_width) )
+		if( scaled_max_pixels < (total_width + width) )
 		{
 			break;
 		}
 
-		total_width += char_width;
+		total_width += width;
 		drawable_chars++;
 
 		if( max_chars >= 0 && drawable_chars >= max_chars )
@@ -626,7 +632,17 @@ S32	LLFontGL::firstDrawableChar(const llwchar* wchars, F32 max_pixels, S32 text_
 		total_width = llround(total_width);
 	}
 
-	return start_pos - drawable_chars;
+	if (drawable_chars == 0)
+	{
+		return start_pos; // just draw last character
+	}
+	else
+	{
+		// if only 1 character is drawable, we want to return start_pos as the first character to draw
+		// if 2 are drawable, return start_pos and character before start_pos, etc.
+		return start_pos + 1 - drawable_chars;
+	}
+	
 }
 
 S32 LLFontGL::charFromPixelOffset(const llwchar* wchars, S32 begin_offset, F32 target_x, F32 max_pixels, S32 max_chars, BOOL round) const
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index ce068618e20c5caf1fe891456b9d4d04472362ee..853f6f173d825bc6a44a03243a634bb4984f420b 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -90,6 +90,7 @@ set(llui_SOURCE_FILES
     lltextbox.cpp
     lltexteditor.cpp
     lltextparser.cpp
+    lltextvalidate.cpp
     lltransutil.cpp
     lltoggleablemenu.cpp
     lltooltip.cpp
@@ -182,6 +183,7 @@ set(llui_HEADER_FILES
     lltextbox.h
     lltexteditor.h
     lltextparser.h
+    lltextvalidate.h
     lltoggleablemenu.h
     lltooltip.h
     lltransutil.h
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 4944ed4fe722f58bfd1002a002ee2ad5a2aab2f6..1d4dc35cee457becd5df32ef4f859bfcaedcbb58 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -81,10 +81,9 @@ LLButton::Params::Params()
 	image_pressed_selected("image_pressed_selected"),
 	image_overlay("image_overlay"),
 	image_overlay_alignment("image_overlay_alignment", std::string("center")),
-	image_left_pad("image_left_pad"),
-	image_right_pad("image_right_pad"),
 	image_top_pad("image_top_pad"),
 	image_bottom_pad("image_bottom_pad"),
+	imgoverlay_label_space("imgoverlay_label_space", 1),
 	label_color("label_color"),
 	label_color_selected("label_color_selected"),	// requires is_toggle true
 	label_color_disabled("label_color_disabled"),
@@ -144,10 +143,9 @@ LLButton::LLButton(const LLButton::Params& p)
 	mImageOverlay(p.image_overlay()),
 	mImageOverlayColor(p.image_overlay_color()),
 	mImageOverlayAlignment(LLFontGL::hAlignFromName(p.image_overlay_alignment)),
-	mImageOverlayLeftPad(p.image_left_pad),
-	mImageOverlayRightPad(p.image_right_pad),
 	mImageOverlayTopPad(p.image_top_pad),
 	mImageOverlayBottomPad(p.image_bottom_pad),
+	mImgOverlayLabelSpace(p.imgoverlay_label_space),
 	mIsToggle(p.is_toggle),
 	mScaleImage(p.scale_image),
 	mDropShadowedText(p.label_shadow),
@@ -771,12 +769,7 @@ void LLButton::draw()
 			center_x++;
 		}
 
-		S32 text_width_delta = overlay_width + 1;
-		// if image paddings set, they should participate in scaling process
-		S32 image_size_delta = mImageOverlayTopPad + mImageOverlayBottomPad;
-		overlay_width = overlay_width - image_size_delta;
-		overlay_height = overlay_height - image_size_delta;
-
+		center_y += (mImageOverlayBottomPad - mImageOverlayTopPad);
 		// fade out overlay images on disabled buttons
 		LLColor4 overlay_color = mImageOverlayColor.get();
 		if (!enabled)
@@ -788,10 +781,9 @@ void LLButton::draw()
 		switch(mImageOverlayAlignment)
 		{
 		case LLFontGL::LEFT:
-			text_left += overlay_width + mImageOverlayRightPad + 1;
-			text_width -= text_width_delta;
+			text_left += overlay_width + mImgOverlayLabelSpace;
 			mImageOverlay->draw(
-				mLeftHPad, 
+				mLeftHPad,
 				center_y - (overlay_height / 2), 
 				overlay_width, 
 				overlay_height, 
@@ -806,10 +798,9 @@ void LLButton::draw()
 				overlay_color);
 			break;
 		case LLFontGL::RIGHT:
-			text_right -= overlay_width + mImageOverlayLeftPad+ 1;
-			text_width -= text_width_delta;
+			text_right -= overlay_width + mImgOverlayLabelSpace;
 			mImageOverlay->draw(
-				getRect().getWidth() - mRightHPad - overlay_width, 
+				getRect().getWidth() - mRightHPad - overlay_width,
 				center_y - (overlay_height / 2), 
 				overlay_width, 
 				overlay_height, 
diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
index 8e5f19602f792875c272191e14768ea25f4d2791..8f35db1007e3fa94206dc491ca47f49b1d0ef56e 100644
--- a/indra/llui/llbutton.h
+++ b/indra/llui/llbutton.h
@@ -107,11 +107,14 @@ class LLButton
 		Optional<S32>			pad_bottom; // under text label
 		
 		//image overlay paddings
-		Optional<S32>			image_left_pad;
-		Optional<S32>			image_right_pad;
 		Optional<S32>			image_top_pad;
 		Optional<S32>			image_bottom_pad;
 
+		/**
+		 * Space between image_overlay and label
+		 */
+		Optional<S32>			imgoverlay_label_space;
+
 		// callbacks
 		Optional<CommitCallbackParam>	click_callback, // alias -> commit_callback
 										mouse_down_callback,
@@ -192,10 +195,6 @@ class LLButton
 	void			setLeftHPad( S32 pad )					{ mLeftHPad = pad; }
 	void			setRightHPad( S32 pad )					{ mRightHPad = pad; }
 
-	void 			setImageOverlayLeftPad( S32 pad )			{ mImageOverlayLeftPad = pad; }
-	S32 			getImageOverlayLeftPad() const				{ return mImageOverlayLeftPad; }
-	void 			setImageOverlayRightPad( S32 pad )			{ mImageOverlayRightPad = pad; }
-	S32 			getImageOverlayRightPad() const				{ return mImageOverlayRightPad; }
 	void 			setImageOverlayTopPad( S32 pad )			{ mImageOverlayTopPad = pad; }
 	S32 			getImageOverlayTopPad() const				{ return mImageOverlayTopPad; }
 	void 			setImageOverlayBottomPad( S32 pad )			{ mImageOverlayBottomPad = pad; }
@@ -328,11 +327,14 @@ class LLButton
 	S32							mRightHPad;
 	S32							mBottomVPad;	// under text label
 
-	S32							mImageOverlayLeftPad;
-	S32							mImageOverlayRightPad;
 	S32							mImageOverlayTopPad;
 	S32							mImageOverlayBottomPad;
 
+	/*
+	 * Space between image_overlay and label
+	 */
+	S32							mImgOverlayLabelSpace;
+
 	F32							mHoverGlowStrength;
 	F32							mCurGlowStrength;
 
diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp
index 0237c80efa7e5557fa35d0aed105f2f46a86c605..a4f69e7ac1bbf68fa4be5c01fc99bfe8814ed10c 100644
--- a/indra/llui/llconsole.cpp
+++ b/indra/llui/llconsole.cpp
@@ -244,23 +244,6 @@ void LLConsole::draw()
 	}
 }
 
-void LLConsole::addLine(const std::string& utf8line)
-{
-	LLWString wline = utf8str_to_wstring(utf8line);
-	addLine(wline, 0.f, LLColor4(1.f, 1.f, 1.f, 1.f));
-}
-
-void LLConsole::addLine(const LLWString& wline)
-{
-	addLine(wline, 0.f, LLColor4(1.f, 1.f, 1.f, 1.f));
-}
-
-void LLConsole::addLine(const std::string& utf8line, F32 size, const LLColor4 &color)
-{
-	LLWString wline = utf8str_to_wstring(utf8line);
-	addLine(wline, size, color);
-}
-
 //Generate highlight color segments for this paragraph.  Pass in default color of paragraph.
 void LLConsole::Paragraph::makeParagraphColorSegments (const LLColor4 &color) 
 {
@@ -383,21 +366,45 @@ void LLConsole::Paragraph::updateLines(F32 screen_width, const LLFontGL* font, b
 
 //Pass in the string and the default color for this block of text.
 LLConsole::Paragraph::Paragraph (LLWString str, const LLColor4 &color, F32 add_time, const LLFontGL* font, F32 screen_width) 
-						: mParagraphText(str), mAddTime(add_time), mMaxWidth(-1)
+:	mParagraphText(str), mAddTime(add_time), mMaxWidth(-1)
 {
 	makeParagraphColorSegments(color);
 	updateLines( screen_width, font );
 }
 	
-void LLConsole::addLine(const LLWString& wline, F32 size, const LLColor4 &color)
+// called once per frame regardless of console visibility
+// static
+void LLConsole::updateClass()
 {	
-	Paragraph paragraph(wline, color, mTimer.getElapsedTimeF32(), mFont,  (F32)getRect().getWidth() );
-	
-	mParagraphs.push_back ( paragraph );
+	LLInstanceTrackerScopedGuard guard;
+
+	for (instance_iter it = guard.beginInstances(); it != guard.endInstances(); ++it)
+	{
+		it->update();
+	} 
+}
+
+void LLConsole::update()
+{
+	{
+		LLMutexLock lock(&mMutex);
+
+		while (!mLines.empty())
+		{
+			mParagraphs.push_back(
+				Paragraph(	mLines.front(), 
+							LLColor4::white, 
+							mTimer.getElapsedTimeF32(), 
+							mFont, 
+							(F32)getRect().getWidth()));
+			mLines.pop_front();
+		}
+	}
 
 	// remove old paragraphs which can't possibly be visible any more.  ::draw() will do something similar but more conservative - we do this here because ::draw() isn't guaranteed to ever be called!  (i.e. the console isn't visible)
-        while ((S32)mParagraphs.size() > llmax((S32)0, (S32)(mMaxLines)))
-        {
-                mParagraphs.pop_front();
-        }
+	while ((S32)mParagraphs.size() > llmax((S32)0, (S32)(mMaxLines)))
+	{
+			mParagraphs.pop_front();
+	}
 }
+
diff --git a/indra/llui/llconsole.h b/indra/llui/llconsole.h
index 4719950f280779061543550eb7c23b83815a03cb..f38e2bc9c2bf2e185dc2987852bc5be058b7904a 100644
--- a/indra/llui/llconsole.h
+++ b/indra/llui/llconsole.h
@@ -40,7 +40,7 @@
 
 class LLSD;
 
-class LLConsole : public LLFixedBuffer, public LLUICtrl
+class LLConsole : public LLFixedBuffer, public LLUICtrl, public LLInstanceTracker<LLConsole>
 {
 public:
 	typedef enum e_font_size
@@ -68,6 +68,9 @@ class LLConsole : public LLFixedBuffer, public LLUICtrl
 	friend class LLUICtrlFactory;
 
 public:
+	// call once per frame to pull data out of LLFixedBuffer
+	static void updateClass();
+
 	//A paragraph color segment defines the color of text in a line 
 	//of text that was received for console display.  It has no 
 	//notion of line wraps, screen position, or the text it contains.
@@ -139,14 +142,12 @@ class LLConsole : public LLFixedBuffer, public LLUICtrl
 	// -1 = monospace, 0 means small, font size = 1 means big
 	void			setFontSize(S32 size_index);
 
-	void			addLine(const std::string& utf8line, F32 size, const LLColor4 &color);
-	void			addLine(const LLWString& wline, F32 size, const LLColor4 &color);
 	
 	// Overrides
 	/*virtual*/ void	draw();
-	/*virtual*/ void	addLine(const std::string& utf8line);
-	/*virtual*/ void	addLine(const LLWString& line);
 private:
+	void		update();
+
 	F32			mLinePersistTime; // Age at which to stop drawing.
 	F32			mFadeTime; // Age at which to start fading
 	const LLFontGL*	mFont;
diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp
index 92993650a79dcbc861136204a67fb283ab055a07..2481249f91dfd1859bf54dddd5b60358e9ebd0b1 100644
--- a/indra/llui/llflatlistview.cpp
+++ b/indra/llui/llflatlistview.cpp
@@ -42,8 +42,6 @@ static const LLDefaultChildRegistry::Register<LLFlatListView> flat_list_view("fl
 const LLSD SELECTED_EVENT	= LLSD().with("selected", true);
 const LLSD UNSELECTED_EVENT	= LLSD().with("selected", false);
 
-static const std::string COMMENT_TEXTBOX = "comment_text";
-
 //forward declaration
 bool llsds_are_equal(const LLSD& llsd_1, const LLSD& llsd_2);
 
@@ -51,7 +49,8 @@ LLFlatListView::Params::Params()
 :	item_pad("item_pad"),
 	allow_select("allow_select"),
 	multi_select("multi_select"),
-	keep_one_selected("keep_one_selected")
+	keep_one_selected("keep_one_selected"),
+	no_items_text("no_items_text")
 {};
 
 void LLFlatListView::reshape(S32 width, S32 height, BOOL called_from_parent /* = TRUE */)
@@ -295,19 +294,6 @@ void LLFlatListView::resetSelection(bool no_commit_on_deselection /*= false*/)
 
 void LLFlatListView::setNoItemsCommentText(const std::string& comment_text)
 {
-	if (NULL == mNoItemsCommentTextbox)
-	{
-		LLRect comment_rect = getRect();
-		comment_rect.setOriginAndSize(0, 0, comment_rect.getWidth(), comment_rect.getHeight());
-		comment_rect.stretch(-getBorderWidth());
-		LLTextBox::Params text_p;
-		text_p.name(COMMENT_TEXTBOX);
-		text_p.border_visible(false);
-		text_p.rect(comment_rect);
-		text_p.follows.flags(FOLLOWS_ALL);
-		mNoItemsCommentTextbox = LLUICtrlFactory::create<LLTextBox>(text_p, this);
-	}
-
 	mNoItemsCommentTextbox->setValue(comment_text);
 }
 
@@ -361,7 +347,6 @@ bool LLFlatListView::updateValue(const LLSD& old_value, const LLSD& new_value)
 // PROTECTED STUFF
 //////////////////////////////////////////////////////////////////////////
 
-
 LLFlatListView::LLFlatListView(const LLFlatListView::Params& p)
 :	LLScrollContainer(p)
   , mItemComparator(NULL)
@@ -398,6 +383,25 @@ LLFlatListView::LLFlatListView(const LLFlatListView::Params& p)
 	params.bevel_style(LLViewBorder::BEVEL_IN);
 	mSelectedItemsBorder = LLUICtrlFactory::create<LLViewBorder> (params);
 	mItemsPanel->addChild( mSelectedItemsBorder );
+
+	{
+		// create textbox for "No Items" comment text
+		LLTextBox::Params text_p = p.no_items_text;
+		if (!text_p.rect.isProvided())
+		{
+			LLRect comment_rect = getRect();
+			comment_rect.setOriginAndSize(0, 0, comment_rect.getWidth(), comment_rect.getHeight());
+			comment_rect.stretch(-getBorderWidth());
+			text_p.rect(comment_rect);
+		}
+		text_p.border_visible(false);
+
+		if (!text_p.follows.isProvided())
+		{
+			text_p.follows.flags(FOLLOWS_ALL);
+		}
+		mNoItemsCommentTextbox = LLUICtrlFactory::create<LLTextBox>(text_p, this);
+	}
 };
 
 // virtual
@@ -861,7 +865,11 @@ void LLFlatListView::notifyParentItemsRectChanged()
 	// take into account comment text height if exists
 	if (mNoItemsCommentTextbox && mNoItemsCommentTextbox->getVisible())
 	{
+		// top text padding inside the textbox is included into the height
 		comment_height = mNoItemsCommentTextbox->getTextPixelHeight();
+
+		// take into account a distance from parent's top border to textbox's top
+		comment_height += getRect().getHeight() - mNoItemsCommentTextbox->getRect().mTop;
 	}
 
 	LLRect req_rect =  getItemsRect();
@@ -892,6 +900,10 @@ void LLFlatListView::setNoItemsCommentVisible(bool visible) const
 	{
 		if (visible)
 		{
+/*
+// *NOTE: MA 2010-02-04
+// Deprecated after params of the comment text box were moved into widget (flat_list_view.xml)
+// can be removed later if nothing happened.
 			// We have to update child rect here because of issues with rect after reshaping while creating LLTextbox
 			// It is possible to have invalid LLRect if Flat List is in LLAccordionTab
 			LLRect comment_rect = getLocalRect();
@@ -903,6 +915,7 @@ void LLFlatListView::setNoItemsCommentVisible(bool visible) const
 			LLViewBorder* scroll_border = getChild<LLViewBorder>("scroll border");
 			comment_rect.stretch(-scroll_border->getBorderWidth());
 			mNoItemsCommentTextbox->setRect(comment_rect);
+*/
 		}
 		mNoItemsCommentTextbox->setVisible(visible);
 	}
diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h
index 949a731507f7356f5bcdc61ea92de0d2db122768..92cb40332e5bb81714b9e6569e8fbc4881b49091 100644
--- a/indra/llui/llflatlistview.h
+++ b/indra/llui/llflatlistview.h
@@ -35,8 +35,8 @@
 
 #include "llpanel.h"
 #include "llscrollcontainer.h"
+#include "lltextbox.h"
 
-class LLTextBox;
 
 /**
  * LLFlatListView represents a flat list ui control that operates on items in a form of LLPanel's.
@@ -108,6 +108,9 @@ class LLFlatListView : public LLScrollContainer
 		/** padding between items */
 		Optional<U32> item_pad; 
 
+		/** textbox with info message when list is empty*/
+		Optional<LLTextBox::Params> no_items_text;
+
 		Params();
 	};
 	
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
index 1aaba88c49c771501bccd66b34b5e8de8d49a842..dc79550eb47e30703ab6f7424a409232b0e5a8de 100644
--- a/indra/llui/lllayoutstack.cpp
+++ b/indra/llui/lllayoutstack.cpp
@@ -816,7 +816,10 @@ void LLLayoutStack::calcMinExtents()
 //static 
 void LLLayoutStack::updateClass()
 {
-	for (LLLayoutStack::instance_iter it = beginInstances(); it != endInstances(); ++it)
+	LLInstanceTrackerScopedGuard guard;
+	for (LLLayoutStack::instance_iter it = guard.beginInstances();
+	     it != guard.endInstances();
+	     ++it)
 	{
 		it->updateLayout();
 	}
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index eb2b4f7705dd2511b23da3b058f1814578553320..483a394bbdbcbb55069dfdbbfe623340fe4ec1d4 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -55,6 +55,7 @@
 #include "llui.h"
 #include "lluictrlfactory.h"
 #include "llclipboard.h"
+#include "llmenugl.h"
 
 //
 // Imported globals
@@ -82,19 +83,6 @@ template class LLLineEditor* LLView::getChild<class LLLineEditor>(
 // Member functions
 //
 
-void LLLineEditor::PrevalidateNamedFuncs::declareValues()
-{
-	declare("ascii", LLLineEditor::prevalidateASCII);
-	declare("float", LLLineEditor::prevalidateFloat);
-	declare("int", LLLineEditor::prevalidateInt);
-	declare("positive_s32", LLLineEditor::prevalidatePositiveS32);
-	declare("non_negative_s32", LLLineEditor::prevalidateNonNegativeS32);
-	declare("alpha_num", LLLineEditor::prevalidateAlphaNum);
-	declare("alpha_num_space", LLLineEditor::prevalidateAlphaNumSpace);
-	declare("ascii_printable_no_pipe", LLLineEditor::prevalidateASCIIPrintableNoPipe);
-	declare("ascii_printable_no_space", LLLineEditor::prevalidateASCIIPrintableNoSpace);
-}
-
 LLLineEditor::Params::Params()
 :	max_length_bytes("max_length", 254),
     keystroke_callback("keystroke_callback"),
@@ -164,7 +152,8 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p)
 	mTentativeFgColor(p.text_tentative_color()),
 	mHighlightColor(p.highlight_color()),
 	mPreeditBgColor(p.preedit_bg_color()),
-	mGLFont(p.font)
+	mGLFont(p.font),
+	mContextMenuHandle()
 {
 	llassert( mMaxLengthBytes > 0 );
 
@@ -191,6 +180,12 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p)
 	setCursor(mText.length());
 
 	setPrevalidate(p.prevalidate_callback());
+
+	LLContextMenu* menu = LLUICtrlFactory::instance().createFromFile<LLContextMenu>
+		("menu_text_editor.xml",
+		 LLMenuGL::sMenuContainer,
+		 LLMenuHolderGL::child_registry_t::instance());
+	setContextMenu(menu);
 }
  
 LLLineEditor::~LLLineEditor()
@@ -422,12 +417,16 @@ void LLLineEditor::setCursor( S32 pos )
 	S32 old_cursor_pos = getCursor();
 	mCursorPos = llclamp( pos, 0, mText.length());
 
+	// position of end of next character after cursor
 	S32 pixels_after_scroll = findPixelNearestPos();
 	if( pixels_after_scroll > mTextRightEdge )
 	{
 		S32 width_chars_to_left = mGLFont->getWidth(mText.getWString().c_str(), 0, mScrollHPos);
 		S32 last_visible_char = mGLFont->maxDrawableChars(mText.getWString().c_str(), llmax(0.f, (F32)(mTextRightEdge - mTextLeftEdge + width_chars_to_left))); 
-		S32 min_scroll = mGLFont->firstDrawableChar(mText.getWString().c_str(), (F32)(mTextRightEdge - mTextLeftEdge), mText.length(), getCursor());
+		// character immediately to left of cursor should be last one visible (SCROLL_INCREMENT_ADD will scroll in more characters)
+		// or first character if cursor is at beginning
+		S32 new_last_visible_char = llmax(0, getCursor() - 1);
+		S32 min_scroll = mGLFont->firstDrawableChar(mText.getWString().c_str(), (F32)(mTextRightEdge - mTextLeftEdge), mText.length(), new_last_visible_char);
 		if (old_cursor_pos == last_visible_char)
 		{
 			mScrollHPos = llmin(mText.length(), llmax(min_scroll, mScrollHPos + SCROLL_INCREMENT_ADD));
@@ -663,6 +662,16 @@ BOOL LLLineEditor::handleMiddleMouseDown(S32 x, S32 y, MASK mask)
 	return TRUE;
 }
 
+BOOL LLLineEditor::handleRightMouseDown(S32 x, S32 y, MASK mask)
+{
+	setFocus(TRUE);
+	if (!LLUICtrl::handleRightMouseDown(x, y, mask))
+	{
+		showContextMenu(x, y);
+	}
+	return TRUE;
+}
+
 BOOL LLLineEditor::handleHover(S32 x, S32 y, MASK mask)
 {
 	BOOL handled = FALSE;
@@ -1962,51 +1971,12 @@ void LLLineEditor::setRect(const LLRect& rect)
 	}
 }
 
-void LLLineEditor::setPrevalidate(LLLinePrevalidateFunc func)
+void LLLineEditor::setPrevalidate(LLTextValidate::validate_func_t func)
 {
 	mPrevalidateFunc = func;
 	updateAllowingLanguageInput();
 }
 
-// Limits what characters can be used to [1234567890.-] with [-] only valid in the first position.
-// Does NOT ensure that the string is a well-formed number--that's the job of post-validation--for
-// the simple reasons that intermediate states may be invalid even if the final result is valid.
-// 
-// static
-BOOL LLLineEditor::prevalidateFloat(const LLWString &str)
-{
-	LLLocale locale(LLLocale::USER_LOCALE);
-
-	BOOL success = TRUE;
-	LLWString trimmed = str;
-	LLWStringUtil::trim(trimmed);
-	S32 len = trimmed.length();
-	if( 0 < len )
-	{
-		// May be a comma or period, depending on the locale
-		llwchar decimal_point = (llwchar)LLResMgr::getInstance()->getDecimalPoint();
-
-		S32 i = 0;
-
-		// First character can be a negative sign
-		if( '-' == trimmed[0] )
-		{
-			i++;
-		}
-
-		for( ; i < len; i++ )
-		{
-			if( (decimal_point != trimmed[i] ) && !LLStringOps::isDigit( trimmed[i] ) )
-			{
-				success = FALSE;
-				break;
-			}
-		}
-	}		
-
-	return success;
-}
-
 // static
 BOOL LLLineEditor::postvalidateFloat(const std::string &str)
 {
@@ -2066,223 +2036,6 @@ BOOL LLLineEditor::postvalidateFloat(const std::string &str)
 	return success;
 }
 
-// Limits what characters can be used to [1234567890-] with [-] only valid in the first position.
-// Does NOT ensure that the string is a well-formed number--that's the job of post-validation--for
-// the simple reasons that intermediate states may be invalid even if the final result is valid.
-//
-// static
-BOOL LLLineEditor::prevalidateInt(const LLWString &str)
-{
-	LLLocale locale(LLLocale::USER_LOCALE);
-
-	BOOL success = TRUE;
-	LLWString trimmed = str;
-	LLWStringUtil::trim(trimmed);
-	S32 len = trimmed.length();
-	if( 0 < len )
-	{
-		S32 i = 0;
-
-		// First character can be a negative sign
-		if( '-' == trimmed[0] )
-		{
-			i++;
-		}
-
-		for( ; i < len; i++ )
-		{
-			if( !LLStringOps::isDigit( trimmed[i] ) )
-			{
-				success = FALSE;
-				break;
-			}
-		}
-	}		
-
-	return success;
-}
-
-// static
-BOOL LLLineEditor::prevalidatePositiveS32(const LLWString &str)
-{
-	LLLocale locale(LLLocale::USER_LOCALE);
-
-	LLWString trimmed = str;
-	LLWStringUtil::trim(trimmed);
-	S32 len = trimmed.length();
-	BOOL success = TRUE;
-	if(0 < len)
-	{
-		if(('-' == trimmed[0]) || ('0' == trimmed[0]))
-		{
-			success = FALSE;
-		}
-		S32 i = 0;
-		while(success && (i < len))
-		{
-			if(!LLStringOps::isDigit(trimmed[i++]))
-			{
-				success = FALSE;
-			}
-		}
-	}
-	if (success)
-	{
-		S32 val = strtol(wstring_to_utf8str(trimmed).c_str(), NULL, 10);
-		if (val <= 0)
-		{
-			success = FALSE;
-		}
-	}
-	return success;
-}
-
-BOOL LLLineEditor::prevalidateNonNegativeS32(const LLWString &str)
-{
-	LLLocale locale(LLLocale::USER_LOCALE);
-
-	LLWString trimmed = str;
-	LLWStringUtil::trim(trimmed);
-	S32 len = trimmed.length();
-	BOOL success = TRUE;
-	if(0 < len)
-	{
-		if('-' == trimmed[0])
-		{
-			success = FALSE;
-		}
-		S32 i = 0;
-		while(success && (i < len))
-		{
-			if(!LLStringOps::isDigit(trimmed[i++]))
-			{
-				success = FALSE;
-			}
-		}
-	}
-	if (success)
-	{
-		S32 val = strtol(wstring_to_utf8str(trimmed).c_str(), NULL, 10);
-		if (val < 0)
-		{
-			success = FALSE;
-		}
-	}
-	return success;
-}
-
-BOOL LLLineEditor::prevalidateAlphaNum(const LLWString &str)
-{
-	LLLocale locale(LLLocale::USER_LOCALE);
-
-	BOOL rv = TRUE;
-	S32 len = str.length();
-	if(len == 0) return rv;
-	while(len--)
-	{
-		if( !LLStringOps::isAlnum((char)str[len]) )
-		{
-			rv = FALSE;
-			break;
-		}
-	}
-	return rv;
-}
-
-// static
-BOOL LLLineEditor::prevalidateAlphaNumSpace(const LLWString &str)
-{
-	LLLocale locale(LLLocale::USER_LOCALE);
-
-	BOOL rv = TRUE;
-	S32 len = str.length();
-	if(len == 0) return rv;
-	while(len--)
-	{
-		if(!(LLStringOps::isAlnum((char)str[len]) || (' ' == str[len])))
-		{
-			rv = FALSE;
-			break;
-		}
-	}
-	return rv;
-}
-
-// Used for most names of things stored on the server, due to old file-formats
-// that used the pipe (|) for multiline text storage.  Examples include
-// inventory item names, parcel names, object names, etc.
-// static
-BOOL LLLineEditor::prevalidateASCIIPrintableNoPipe(const LLWString &str)
-{
-	BOOL rv = TRUE;
-	S32 len = str.length();
-	if(len == 0) return rv;
-	while(len--)
-	{
-		llwchar wc = str[len];
-		if (wc < 0x20
-			|| wc > 0x7f
-			|| wc == '|')
-		{
-			rv = FALSE;
-			break;
-		}
-		if(!(wc == ' '
-			 || LLStringOps::isAlnum((char)wc)
-			 || LLStringOps::isPunct((char)wc) ) )
-		{
-			rv = FALSE;
-			break;
-		}
-	}
-	return rv;
-}
-
-
-// Used for avatar names
-// static
-BOOL LLLineEditor::prevalidateASCIIPrintableNoSpace(const LLWString &str)
-{
-	BOOL rv = TRUE;
-	S32 len = str.length();
-	if(len == 0) return rv;
-	while(len--)
-	{
-		llwchar wc = str[len];
-		if (wc < 0x20
-			|| wc > 0x7f
-			|| LLStringOps::isSpace(wc))
-		{
-			rv = FALSE;
-			break;
-		}
-		if( !(LLStringOps::isAlnum((char)str[len]) ||
-		      LLStringOps::isPunct((char)str[len]) ) )
-		{
-			rv = FALSE;
-			break;
-		}
-	}
-	return rv;
-}
-
-
-// static
-BOOL LLLineEditor::prevalidateASCII(const LLWString &str)
-{
-	BOOL rv = TRUE;
-	S32 len = str.length();
-	while(len--)
-	{
-		if (str[len] < 0x20 || str[len] > 0x7f)
-		{
-			rv = FALSE;
-			break;
-		}
-	}
-	return rv;
-}
-
 void LLLineEditor::onMouseCaptureLost()
 {
 	endSelection();
@@ -2560,3 +2313,25 @@ LLWString LLLineEditor::getConvertedText() const
 	}
 	return text;
 }
+
+void LLLineEditor::showContextMenu(S32 x, S32 y)
+{
+	LLContextMenu* menu = static_cast<LLContextMenu*>(mContextMenuHandle.get());
+
+	if (menu)
+	{
+		gEditMenuHandler = this;
+
+		S32 screen_x, screen_y;
+		localPointToScreen(x, y, &screen_x, &screen_y);
+		menu->show(screen_x, screen_y);
+	}
+}
+
+void LLLineEditor::setContextMenu(LLContextMenu* new_context_menu)
+{
+	if (new_context_menu)
+		mContextMenuHandle = new_context_menu->getHandle();
+	else
+		mContextMenuHandle.markDead();
+}
diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h
index 49e9539b16d7265ccc81bca3277a23f43477f392..b62138426b9428d7b100298ec2491a34610697ef 100644
--- a/indra/llui/lllineeditor.h
+++ b/indra/llui/lllineeditor.h
@@ -51,26 +51,18 @@
 #include "llviewborder.h"
 
 #include "llpreeditor.h"
-#include <boost/function.hpp>
+#include "lltextvalidate.h"
 
 class LLFontGL;
 class LLLineEditorRollback;
 class LLButton;
-
-typedef boost::function<BOOL (const LLWString &wstr)> LLLinePrevalidateFunc;
+class LLContextMenu;
 
 class LLLineEditor
 : public LLUICtrl, public LLEditMenuHandler, protected LLPreeditor
 {
 public:
 
-	struct PrevalidateNamedFuncs
-	:	public LLInitParam::TypeValuesHelper<LLLinePrevalidateFunc, PrevalidateNamedFuncs>
-
-	{
-		static void declareValues();
-	};
-	
 	typedef boost::function<void (LLLineEditor* caller)> keystroke_callback_t;
 	
 	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
@@ -80,7 +72,7 @@ class LLLineEditor
 
 		Optional<keystroke_callback_t>	keystroke_callback;
 
-		Optional<LLLinePrevalidateFunc, PrevalidateNamedFuncs>	prevalidate_callback;
+		Optional<LLTextValidate::validate_func_t, LLTextValidate::ValidateTextNamedFuncs>	prevalidate_callback;
 		
 		Optional<LLViewBorder::Params>	border;
 
@@ -113,6 +105,7 @@ class LLLineEditor
 	LLLineEditor(const Params&);
 	friend class LLUICtrlFactory;
 	friend class LLFloaterEditUI;
+	void showContextMenu(S32 x, S32 y);
 public:
 	virtual ~LLLineEditor();
 
@@ -122,6 +115,7 @@ class LLLineEditor
 	/*virtual*/ BOOL	handleHover(S32 x, S32 y, MASK mask);
 	/*virtual*/ BOOL	handleDoubleClick(S32 x,S32 y,MASK mask);
 	/*virtual*/ BOOL	handleMiddleMouseDown(S32 x,S32 y,MASK mask);
+	/*virtual*/ BOOL	handleRightMouseDown(S32 x, S32 y, MASK mask);
 	/*virtual*/ BOOL	handleKeyHere(KEY key, MASK mask );
 	/*virtual*/ BOOL	handleUnicodeCharHere(llwchar uni_char);
 	/*virtual*/ void	onMouseCaptureLost();
@@ -204,6 +198,8 @@ class LLLineEditor
 	const LLColor4& getReadOnlyFgColor() const	{ return mReadOnlyFgColor.get(); }
 	const LLColor4& getTentativeFgColor() const { return mTentativeFgColor.get(); }
 
+	const LLFontGL* getFont() const { return mGLFont; }
+
 	void			setIgnoreArrowKeys(BOOL b)		{ mIgnoreArrowKeys = b; }
 	void			setIgnoreTab(BOOL b)			{ mIgnoreTab = b; }
 	void			setPassDelete(BOOL b)			{ mPassDelete = b; }
@@ -231,17 +227,7 @@ class LLLineEditor
 	void setTextPadding(S32 left, S32 right);
 
 	// Prevalidation controls which keystrokes can affect the editor
-	void			setPrevalidate( LLLinePrevalidateFunc func );
-	static BOOL		prevalidateFloat(const LLWString &str );
-	static BOOL		prevalidateInt(const LLWString &str );
-	static BOOL		prevalidatePositiveS32(const LLWString &str);
-	static BOOL		prevalidateNonNegativeS32(const LLWString &str);
-	static BOOL		prevalidateAlphaNum(const LLWString &str );
-	static BOOL		prevalidateAlphaNumSpace(const LLWString &str );
-	static BOOL		prevalidateASCIIPrintableNoPipe(const LLWString &str); 
-	static BOOL		prevalidateASCIIPrintableNoSpace(const LLWString &str);
-	static BOOL		prevalidateASCII(const LLWString &str);
-
+	void			setPrevalidate( LLTextValidate::validate_func_t func );
 	static BOOL		postvalidateFloat(const std::string &str);
 
 	// line history support:
@@ -249,7 +235,9 @@ class LLLineEditor
 	void			updateHistory(); // stores current line in history
 
 	void			setReplaceNewlinesWithSpaces(BOOL replace);
-	
+
+	void			setContextMenu(LLContextMenu* new_context_menu);
+
 private:
 	// private helper methods
 
@@ -319,7 +307,7 @@ class LLLineEditor
 	S32			mLastSelectionStart;
 	S32			mLastSelectionEnd;
 
-	LLLinePrevalidateFunc mPrevalidateFunc;
+	LLTextValidate::validate_func_t mPrevalidateFunc;
 
 	LLFrameTimer mKeystrokeTimer;
 	LLTimer		mTripleClickTimer;
@@ -348,6 +336,8 @@ class LLLineEditor
 	std::vector<S32> mPreeditPositions;
 	LLPreeditor::standouts_t mPreeditStandouts;
 
+	LLHandle<LLView> mContextMenuHandle;
+
 private:
 	// Instances that by default point to the statics but can be overidden in XML.
 	LLPointer<LLUIImage> mBgImage;
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 7fa9a880591032c54e794a0afc5556bf876f6651..d18abbfb2fc04732d969da2c51d79f1b1c0a7c54 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -3941,7 +3941,6 @@ BOOL LLContextMenu::appendContextSubMenu(LLContextMenu *menu)
 	
 	item = LLUICtrlFactory::create<LLContextMenuBranch>(p);
 	LLMenuGL::sMenuContainer->addChild(item->getBranch());
-	item->setFont( LLFontGL::getFontSansSerif() );
 
 	return append( item );
 }
diff --git a/indra/llui/llmultifloater.cpp b/indra/llui/llmultifloater.cpp
index 78738c826dd08a9e3bbd5bc87729716bde4d115a..33d47a3f0e3a955170d42d59b685c2fb34d4b452 100644
--- a/indra/llui/llmultifloater.cpp
+++ b/indra/llui/llmultifloater.cpp
@@ -92,14 +92,6 @@ void LLMultiFloater::draw()
 	}
 	else
 	{
-		for (S32 i = 0; i < mTabContainer->getTabCount(); i++)
-		{
-			LLFloater* floaterp = (LLFloater*)mTabContainer->getPanelByIndex(i);
-			if (floaterp->getShortTitle() != mTabContainer->getPanelTitle(i))
-			{
-				mTabContainer->setPanelTitle(i, floaterp->getShortTitle());
-			}
-		}
 		LLFloater::draw();
 	}
 }
diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp
index f4434a0f7805501b4b0d63d6639e74da2f9fd2b5..50942e55cab80ae610c8f917c5bc76ffb6dd35cd 100644
--- a/indra/llui/llmultisliderctrl.cpp
+++ b/indra/llui/llmultisliderctrl.cpp
@@ -138,7 +138,7 @@ LLMultiSliderCtrl::LLMultiSliderCtrl(const LLMultiSliderCtrl::Params& p)
 			params.font(p.font);
 			params.max_length_bytes(MAX_STRING_LENGTH);
 			params.commit_callback.function(LLMultiSliderCtrl::onEditorCommit);
-			params.prevalidate_callback(&LLLineEditor::prevalidateFloat);
+			params.prevalidate_callback(&LLTextValidate::validateFloat);
 			params.follows.flags(FOLLOWS_LEFT | FOLLOWS_BOTTOM);
 			mEditor = LLUICtrlFactory::create<LLLineEditor> (params);
 			mEditor->setFocusReceivedCallback( boost::bind(LLMultiSliderCtrl::onEditorGainFocus, _1, this) );
@@ -331,6 +331,10 @@ void LLMultiSliderCtrl::updateText()
 void LLMultiSliderCtrl::onEditorCommit( LLUICtrl* ctrl, const LLSD& userdata)
 {
 	LLMultiSliderCtrl* self = dynamic_cast<LLMultiSliderCtrl*>(ctrl->getParent());
+	llassert(self);
+	if (!self) // cast failed - wrong type! :O
+		return;
+
 	if (!ctrl)
 		return;
 	
diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp
index 7f23fe2671f4ef033dc8e5326a5577f7518c028f..7b406e090abe144cb626081853ef38e49388c28c 100644
--- a/indra/llui/llpanel.cpp
+++ b/indra/llui/llpanel.cpp
@@ -936,7 +936,7 @@ LLPanel *LLPanel::childGetVisiblePanelWithHelp()
 	return ::childGetVisiblePanelWithHelp(this);
 }
 
-void LLPanel::childSetPrevalidate(const std::string& id, BOOL (*func)(const LLWString &) )
+void LLPanel::childSetPrevalidate(const std::string& id, bool (*func)(const LLWString &) )
 {
 	LLLineEditor* child = findChild<LLLineEditor>(id);
 	if (child)
diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h
index 6de83fe3a79ff5ae3caf1fc0a5bf20b8969ff164..4e53fd7ea3779971aec7c6d14d49495bcb8e12f1 100644
--- a/indra/llui/llpanel.h
+++ b/indra/llui/llpanel.h
@@ -226,7 +226,7 @@ class LLPanel : public LLUICtrl
 	std::string childGetText(const std::string& id) const { return childGetValue(id).asString(); }
 
 	// LLLineEditor
-	void childSetPrevalidate(const std::string& id, BOOL (*func)(const LLWString &) );
+	void childSetPrevalidate(const std::string& id, bool (*func)(const LLWString &) );
 
 	// LLButton
 	void childSetAction(const std::string& id, boost::function<void(void*)> function, void* value = NULL);
diff --git a/indra/llui/llsliderctrl.cpp b/indra/llui/llsliderctrl.cpp
index 01c274bb4eb62cb683fd5357a9df50ad43561241..80ee5d098437b40373a4cd15d120b9f4b8451e75 100644
--- a/indra/llui/llsliderctrl.cpp
+++ b/indra/llui/llsliderctrl.cpp
@@ -141,7 +141,7 @@ LLSliderCtrl::LLSliderCtrl(const LLSliderCtrl::Params& p)
 			line_p.rect.setIfNotProvided(text_rect);
 			line_p.font.setIfNotProvided(p.font);
 			line_p.commit_callback.function(&LLSliderCtrl::onEditorCommit);
-			line_p.prevalidate_callback(&LLLineEditor::prevalidateFloat);
+			line_p.prevalidate_callback(&LLTextValidate::validateFloat);
 			mEditor = LLUICtrlFactory::create<LLLineEditor>(line_p);
 
 			mEditor->setFocusReceivedCallback( boost::bind(&LLSliderCtrl::onEditorGainFocus, _1, this ));
diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp
index 28f3788817a2bc54452e84f240bb7d1fb3ffd042..491cd7b6f37564bd8690e895737e9e6fd7566bbe 100644
--- a/indra/llui/llspinctrl.cpp
+++ b/indra/llui/llspinctrl.cpp
@@ -127,7 +127,7 @@ LLSpinCtrl::LLSpinCtrl(const LLSpinCtrl::Params& p)
 	}
 	params.max_length_bytes(MAX_STRING_LENGTH);
 	params.commit_callback.function((boost::bind(&LLSpinCtrl::onEditorCommit, this, _2)));
-	params.prevalidate_callback(&LLLineEditor::prevalidateFloat);
+	params.prevalidate_callback(&LLTextValidate::validateFloat);
 	params.follows.flags(FOLLOWS_LEFT | FOLLOWS_BOTTOM);
 	mEditor = LLUICtrlFactory::create<LLLineEditor> (params);
 	mEditor->setFocusReceivedCallback( boost::bind(&LLSpinCtrl::onEditorGainFocus, _1, this ));
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index 6be76605fdf3881ac82dab7f49cfec02e267cc07..13340e7ded7714b142bd41814dfefc95338c44bf 100644
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -35,7 +35,6 @@
 #include "lltabcontainer.h"
 
 #include "llfocusmgr.h"
-#include "llbutton.h"
 #include "lllocalcliprect.h"
 #include "llrect.h"
 #include "llresizehandle.h"
@@ -96,6 +95,91 @@ class LLTabTuple
 
 //----------------------------------------------------------------------------
 
+//============================================================================
+/*
+ * @file lltabcontainer.cpp
+ * @brief class implements LLButton with LLIconCtrl on it
+ */
+class LLCustomButtonIconCtrl : public LLButton
+{
+public:
+	struct Params
+	: public LLInitParam::Block<Params, LLButton::Params>
+	{
+		// LEFT, RIGHT, TOP, BOTTOM paddings of LLIconCtrl in this class has same value
+		Optional<S32>					icon_ctrl_pad;
+
+		Params():
+		icon_ctrl_pad("icon_ctrl_pad", 1)
+		{}
+	};
+
+protected:
+	friend class LLUICtrlFactory;
+	LLCustomButtonIconCtrl(const Params& p):
+		LLButton(p),
+		mIcon(NULL),
+		mIconAlignment(LLFontGL::HCENTER),
+		mIconCtrlPad(p.icon_ctrl_pad)
+		{}
+
+public:
+
+	void updateLayout()
+	{
+		LLRect button_rect = getRect();
+		LLRect icon_rect = mIcon->getRect();
+
+		S32 icon_size = button_rect.getHeight() - 2*mIconCtrlPad;
+
+		switch(mIconAlignment)
+		{
+		case LLFontGL::LEFT:
+			icon_rect.setLeftTopAndSize(button_rect.mLeft + mIconCtrlPad, button_rect.mTop - mIconCtrlPad, 
+				icon_size, icon_size);
+			setLeftHPad(icon_size + mIconCtrlPad * 2);
+			break;
+		case LLFontGL::HCENTER:
+			icon_rect.setLeftTopAndSize(button_rect.mRight - (button_rect.getWidth() + mIconCtrlPad - icon_size)/2, button_rect.mTop - mIconCtrlPad, 
+				icon_size, icon_size);
+			setRightHPad(icon_size + mIconCtrlPad * 2);
+			break;
+		case LLFontGL::RIGHT:
+			icon_rect.setLeftTopAndSize(button_rect.mRight - mIconCtrlPad - icon_size, button_rect.mTop - mIconCtrlPad, 
+				icon_size, icon_size);
+			setRightHPad(icon_size + mIconCtrlPad * 2);
+			break;
+		default:
+			break;
+		}
+		mIcon->setRect(icon_rect);
+	}
+
+	void setIcon(LLIconCtrl* icon, LLFontGL::HAlign alignment = LLFontGL::LEFT)
+	{
+		if(icon)
+		{
+			if(mIcon)
+			{
+				removeChild(mIcon);
+				mIcon->die();
+			}
+			mIcon = icon;
+			mIconAlignment = alignment;
+
+			addChild(mIcon);
+			updateLayout();
+		}
+	}
+
+
+private:
+	LLIconCtrl* mIcon;
+	LLFontGL::HAlign mIconAlignment;
+	S32 mIconCtrlPad;
+};
+//============================================================================
+
 struct LLPlaceHolderPanel : public LLPanel
 {
 	// create dummy param block to register with "placeholder" nane
@@ -127,7 +211,10 @@ LLTabContainer::Params::Params()
 	tab_padding_right("tab_padding_right"),
 	first_tab("first_tab"),
 	middle_tab("middle_tab"),
-	last_tab("last_tab")
+	last_tab("last_tab"),
+	use_custom_icon_ctrl("use_custom_icon_ctrl", false),
+	tab_icon_ctrl_pad("tab_icon_ctrl_pad", 0),
+	use_ellipses("use_ellipses")
 {
 	name(std::string("tab_container"));
 	mouse_opaque = false;
@@ -162,7 +249,10 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)
 	mFont(p.font),
 	mFirstTabParams(p.first_tab),
 	mMiddleTabParams(p.middle_tab),
-	mLastTabParams(p.last_tab)
+	mLastTabParams(p.last_tab),
+	mCustomIconCtrlUsed(p.use_custom_icon_ctrl),
+	mTabIconCtrlPad(p.tab_icon_ctrl_pad),
+	mUseTabEllipses(p.use_ellipses)
 {
 	static LLUICachedControl<S32> tabcntr_vert_tab_min_width ("UITabCntrVertTabMinWidth", 0);
 
@@ -905,6 +995,11 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
 
 	LLTextBox* textbox = NULL;
 	LLButton* btn = NULL;
+	LLCustomButtonIconCtrl::Params custom_btn_params;
+	{
+		custom_btn_params.icon_ctrl_pad(mTabIconCtrlPad);
+	}
+	LLButton::Params normal_btn_params;
 	
 	if (placeholder)
 	{
@@ -924,7 +1019,9 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
 	{
 		if (mIsVertical)
 		{
-			LLButton::Params p;
+			LLButton::Params& p = (mCustomIconCtrlUsed)?
+					custom_btn_params:normal_btn_params;
+
 			p.name(std::string("vert tab button"));
 			p.rect(btn_rect);
 			p.follows.flags(FOLLOWS_TOP | FOLLOWS_LEFT);
@@ -942,11 +1039,22 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
 			{
 				p.pad_left(indent);
 			}
-			btn = LLUICtrlFactory::create<LLButton>(p);
+			
+			
+			if(mCustomIconCtrlUsed)
+			{
+				btn = LLUICtrlFactory::create<LLCustomButtonIconCtrl>(custom_btn_params);
+				
+			}
+			else
+			{
+				btn = LLUICtrlFactory::create<LLButton>(p);
+			}
 		}
 		else
 		{
-			LLButton::Params p;
+			LLButton::Params& p = (mCustomIconCtrlUsed)?
+					custom_btn_params:normal_btn_params;
 			p.name(std::string(child->getName()) + " tab");
 			p.rect(btn_rect);
 			p.click_callback.function(boost::bind(&LLTabContainer::onTabBtn, this, _2, child));
@@ -980,7 +1088,14 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
 				p.follows.flags = p.follows.flags() | FOLLOWS_BOTTOM;
 			}
 
-++			btn = LLUICtrlFactory::create<LLButton>(p);
+			if(mCustomIconCtrlUsed)
+			{
+				btn = LLUICtrlFactory::create<LLCustomButtonIconCtrl>(custom_btn_params);
+			}
+			else
+			{
+				btn = LLUICtrlFactory::create<LLButton>(p);
+			}
 		}
 	}
 	
@@ -1373,8 +1488,8 @@ BOOL LLTabContainer::setTab(S32 which)
 		{
 			LLTabTuple* tuple = *iter;
 			BOOL is_selected = ( tuple == selected_tuple );
-			tuple->mButton->setUseEllipses(TRUE);
-			tuple->mButton->setHAlign(LLFontGL::LEFT);
+			tuple->mButton->setUseEllipses(mUseTabEllipses);
+			tuple->mButton->setHAlign(mFontHalign);
 			tuple->mTabPanel->setVisible( is_selected );
 // 			tuple->mTabPanel->setFocus(is_selected); // not clear that we want to do this here.
 			tuple->mButton->setToggleState( is_selected );
@@ -1484,7 +1599,7 @@ void LLTabContainer::setTabImage(LLPanel* child, std::string image_name, const L
 	if( tuple )
 	{
 		tuple->mButton->setImageOverlay(image_name, LLFontGL::LEFT, color);
-		reshape_tuple(tuple);
+		reshapeTuple(tuple);
 	}
 }
 
@@ -1494,25 +1609,31 @@ void LLTabContainer::setTabImage(LLPanel* child, const LLUUID& image_id, const L
 	if( tuple )
 	{
 		tuple->mButton->setImageOverlay(image_id, LLFontGL::LEFT, color);
-		reshape_tuple(tuple);
+		reshapeTuple(tuple);
 	}
 }
 
-void LLTabContainer::reshape_tuple(LLTabTuple* tuple)
+void LLTabContainer::setTabImage(LLPanel* child, LLIconCtrl* icon)
+{
+	LLTabTuple* tuple = getTabByPanel(child);
+	LLCustomButtonIconCtrl* button;
+
+	if(tuple)
+	{
+		button = dynamic_cast<LLCustomButtonIconCtrl*>(tuple->mButton);
+		if(button)
+		{
+			button->setIcon(icon);
+		}
+	}
+}
+
+void LLTabContainer::reshapeTuple(LLTabTuple* tuple)
 {
 	static LLUICachedControl<S32> tab_padding ("UITabPadding", 0);
-	static LLUICachedControl<S32> image_left_padding ("UIButtonImageLeftPadding", 4);
-	static LLUICachedControl<S32> image_right_padding ("UIButtonImageRightPadding", 4);
-	static LLUICachedControl<S32> image_top_padding ("UIButtonImageTopPadding", 2);
-	static LLUICachedControl<S32> image_bottom_padding ("UIButtonImageBottomPadding", 2);
 
 	if (!mIsVertical)
 	{
-		tuple->mButton->setImageOverlayLeftPad(image_left_padding);
-		tuple->mButton->setImageOverlayRightPad(image_right_padding);
-		tuple->mButton->setImageOverlayTopPad(image_top_padding);
-		tuple->mButton->setImageOverlayBottomPad(image_bottom_padding);
-
 		// remove current width from total tab strip width
 		mTotalTabWidth -= tuple->mButton->getRect().getWidth();
 
diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h
index 2a55877d3ca0552bced932bc5ee79b08502efa88..50ec2679f6be6ae877854b2e2fea31bde5b2e736 100644
--- a/indra/llui/lltabcontainer.h
+++ b/indra/llui/lltabcontainer.h
@@ -36,6 +36,8 @@
 #include "llpanel.h"
 #include "lltextbox.h"
 #include "llframetimer.h"
+#include "lliconctrl.h"
+#include "llbutton.h"
 
 class LLTabTuple;
 
@@ -90,6 +92,26 @@ class LLTabContainer : public LLPanel
 											middle_tab,
 											last_tab;
 
+		/**
+		 * Tab label horizontal alignment
+		 */
+		Optional<LLFontGL::HAlign>			font_halign;
+
+		/**
+		 * Tab label ellipses
+		 */
+		Optional<bool>						use_ellipses;
+
+		/**
+		 * Use LLCustomButtonIconCtrl or LLButton in LLTabTuple
+		 */
+		Optional<bool>						use_custom_icon_ctrl;
+
+		/**
+		 *  Paddings for LLIconCtrl in case of LLCustomButtonIconCtrl usage(use_custom_icon_ctrl = true)
+		 */
+		Optional<S32>						tab_icon_ctrl_pad;
+
 		Params();
 	};
 
@@ -173,6 +195,7 @@ class LLTabContainer : public LLPanel
 	void		setTabPanelFlashing(LLPanel* child, BOOL state);
 	void 		setTabImage(LLPanel* child, std::string img_name, const LLColor4& color = LLColor4::white);
 	void 		setTabImage(LLPanel* child, const LLUUID& img_id, const LLColor4& color = LLColor4::white);
+	void		setTabImage(LLPanel* child, LLIconCtrl* icon);
 	void		setTitle( const std::string& title );
 	const std::string getPanelTitle(S32 index);
 
@@ -228,7 +251,7 @@ class LLTabContainer : public LLPanel
 
 	// updates tab button images given the tuple, tab position and the corresponding params
 	void update_images(LLTabTuple* tuple, TabParams params, LLTabContainer::TabPosition pos);
-	void reshape_tuple(LLTabTuple* tuple);
+	void reshapeTuple(LLTabTuple* tuple);
 
 	// Variables
 	
@@ -278,6 +301,10 @@ class LLTabContainer : public LLPanel
 	TabParams						mFirstTabParams;
 	TabParams						mMiddleTabParams;
 	TabParams						mLastTabParams;
+
+	bool							mCustomIconCtrlUsed;
+	S32								mTabIconCtrlPad;
+	bool							mUseTabEllipses;
 };
 
 #endif  // LL_TABCONTAINER_H
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index e923e60db4fbaa3e2653c4abbff11e156d76daea..ef422dbdc5d78e7a1479c8dbaf011076f5155150 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1137,6 +1137,7 @@ void LLTextBase::reflow()
 			line_list_t::iterator iter = std::upper_bound(mLineInfoList.begin(), mLineInfoList.end(), start_index, line_end_compare());
 			line_start_index = iter->mDocIndexStart;
 			line_count = iter->mLineNum;
+			cur_top = iter->mRect.mTop;
 			getSegmentAndOffset(iter->mDocIndexStart, &seg_iter, &seg_offset);
 			mLineInfoList.erase(iter, mLineInfoList.end());
 		}
@@ -1577,7 +1578,7 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c
 					// Text will be replaced during rendering with the icon,
 					// but string cannot be empty or the segment won't be
 					// added (or drawn).
-					appendAndHighlightText(" ", prepend_newline, part, icon);
+					appendAndHighlightText("   ", prepend_newline, part, icon);
 					prepend_newline = false;
 				}
 			}
@@ -2311,7 +2312,7 @@ F32 LLNormalTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selec
 			image->draw(draw_rect.mLeft, image_bottom, 
 				style_image_width, style_image_height, color);
 			
-			const S32 IMAGE_HPAD = 2;
+			const S32 IMAGE_HPAD = 3;
 			return draw_rect.mLeft + style_image_width + IMAGE_HPAD;
 		}
 
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 62aeb50011f88a3d021489b43a7e045a5f35fa1c..ce5f1bd08264926cccfd19d053593f12d70f1138 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -237,13 +237,17 @@ class LLTextEditor::TextCmdRemove : public LLTextBase::TextCmd
 ///////////////////////////////////////////////////////////////////
 LLTextEditor::Params::Params()
 :	default_text("default_text"),
+	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)
-{}
+    commit_on_focus_lost("commit_on_focus_lost", false),
+	show_context_menu("show_context_menu")
+{
+	addSynonym(prevalidate_callback, "text_type");
+}
 
 LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) :
 	LLTextBase(p),
@@ -258,7 +262,9 @@ LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) :
 	mMouseDownX(0),
 	mMouseDownY(0),
 	mTabsToNextField(p.ignore_tab),
-	mContextMenu(NULL)
+	mPrevalidateFunc(p.prevalidate_callback()),
+	mContextMenu(NULL),
+	mShowContextMenu(p.show_context_menu)
 {
 	mDefaultFont = p.font;
 
@@ -318,6 +324,17 @@ LLTextEditor::~LLTextEditor()
 
 void LLTextEditor::setText(const LLStringExplicit &utf8str, const LLStyle::Params& input_params)
 {
+	// validate incoming text if necessary
+	if (mPrevalidateFunc)
+	{
+		LLWString test_text = utf8str_to_wstring(utf8str);
+		if (!mPrevalidateFunc(test_text))
+		{
+			// not valid text, nothing to do
+			return;
+		}
+	}
+
 	blockUndo();
 	deselect();
 
@@ -720,7 +737,10 @@ BOOL LLTextEditor::handleRightMouseDown(S32 x, S32 y, MASK mask)
 	}
 	if (!LLTextBase::handleRightMouseDown(x, y, mask))
 	{
-		showContextMenu(x, y);
+		if(getShowContextMenu())
+		{
+			showContextMenu(x, y);
+		}
 	}
 	return TRUE;
 }
@@ -906,6 +926,21 @@ S32 LLTextEditor::execute( TextCmd* cmd )
 		// Push the new command is now on the top (front) of the undo stack.
 		mUndoStack.push_front(cmd);
 		mLastCmd = cmd;
+
+		bool need_to_rollback = mPrevalidateFunc 
+								&& !mPrevalidateFunc(getViewModel()->getDisplay());
+		if (need_to_rollback)
+		{
+			// get rid of this last command and clean up undo stack
+			undo();
+
+			// remove any evidence of this command from redo history
+			mUndoStack.pop_front();
+			delete cmd;
+
+			// failure, nothing changed
+			delta = 0;
+		}
 	}
 	else
 	{
@@ -1029,7 +1064,21 @@ S32 LLTextEditor::addChar(S32 pos, llwchar wc)
 	if (mLastCmd && mLastCmd->canExtend(pos))
 	{
 		S32 delta = 0;
+		if (mPrevalidateFunc)
+		{
+			// get a copy of current text contents
+			LLWString test_string(getViewModel()->getDisplay());
+
+			// modify text contents as if this addChar succeeded
+			llassert(pos <= (S32)test_string.size());
+			test_string.insert(pos, 1, wc);
+			if (!mPrevalidateFunc( test_string))
+			{
+				return 0;
+			}
+		}
 		mLastCmd->extendAndExecute(this, pos, wc, &delta);
+
 		return delta;
 	}
 	else
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index a136f9ccce787d887c4cb9df06d172547a5c90d8..71d937b2c451253a7bcd39aaf6492211fa2cecbe 100644
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -44,6 +44,7 @@
 #include "lldarray.h"
 #include "llviewborder.h" // for params
 #include "lltextbase.h"
+#include "lltextvalidate.h"
 
 #include "llpreeditor.h"
 #include "llcontrol.h"
@@ -63,12 +64,14 @@ class LLTextEditor :
 	struct Params : public LLInitParam::Block<Params, LLTextBase::Params>
 	{
 		Optional<std::string>	default_text;
+		Optional<LLTextValidate::validate_func_t, LLTextValidate::ValidateTextNamedFuncs>	prevalidate_callback;
 
 		Optional<bool>			embedded_items,
 								ignore_tab,
 								handle_edit_keys_directly,
 								show_line_numbers,
-								commit_on_focus_lost;
+								commit_on_focus_lost,
+								show_context_menu;
 
 		//colors
 		Optional<LLUIColor>		default_color;
@@ -200,6 +203,9 @@ class LLTextEditor :
 	const LLTextSegmentPtr	getPreviousSegment() const;
 	void getSelectedSegments(segment_vec_t& segments) const;
 
+	void			setShowContextMenu(bool show) { mShowContextMenu = show; }
+	bool			getShowContextMenu() const { return mShowContextMenu; }
+
 protected:
 	void			showContextMenu(S32 x, S32 y);
 	void			drawPreeditMarker();
@@ -319,6 +325,7 @@ class LLTextEditor :
 	BOOL			mTakesFocus;
 
 	BOOL			mAllowEmbeddedItems;
+	bool			mShowContextMenu;
 
 	LLUUID			mSourceID;
 
@@ -329,6 +336,7 @@ class LLTextEditor :
 	LLCoordGL		mLastIMEPosition;		// Last position of the IME editor
 
 	keystroke_signal_t mKeystrokeSignal;
+	LLTextValidate::validate_func_t mPrevalidateFunc;
 
 	LLContextMenu* mContextMenu;
 }; // end class LLTextEditor
diff --git a/indra/llui/lltextvalidate.cpp b/indra/llui/lltextvalidate.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8b6bc5bd7da9b3de864526319991511a09ba4dbb
--- /dev/null
+++ b/indra/llui/lltextvalidate.cpp
@@ -0,0 +1,302 @@
+/** 
+ * @file lltextvalidate.cpp
+ * @brief Text validation helper functions
+ *
+ * $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$
+ */
+
+// Text editor widget to let users enter a single line.
+
+#include "linden_common.h"
+ 
+#include "lltextvalidate.h"
+#include "llresmgr.h" // for LLLocale
+
+namespace LLTextValidate
+{
+	void ValidateTextNamedFuncs::declareValues()
+	{
+		declare("ascii", validateASCII);
+		declare("float", validateFloat);
+		declare("int", validateInt);
+		declare("positive_s32", validatePositiveS32);
+		declare("non_negative_s32", validateNonNegativeS32);
+		declare("alpha_num", validateAlphaNum);
+		declare("alpha_num_space", validateAlphaNumSpace);
+		declare("ascii_printable_no_pipe", validateASCIIPrintableNoPipe);
+		declare("ascii_printable_no_space", validateASCIIPrintableNoSpace);
+	}
+
+	// Limits what characters can be used to [1234567890.-] with [-] only valid in the first position.
+	// Does NOT ensure that the string is a well-formed number--that's the job of post-validation--for
+	// the simple reasons that intermediate states may be invalid even if the final result is valid.
+	// 
+	bool validateFloat(const LLWString &str)
+	{
+		LLLocale locale(LLLocale::USER_LOCALE);
+
+		bool success = TRUE;
+		LLWString trimmed = str;
+		LLWStringUtil::trim(trimmed);
+		S32 len = trimmed.length();
+		if( 0 < len )
+		{
+			// May be a comma or period, depending on the locale
+			llwchar decimal_point = (llwchar)LLResMgr::getInstance()->getDecimalPoint();
+
+			S32 i = 0;
+
+			// First character can be a negative sign
+			if( '-' == trimmed[0] )
+			{
+				i++;
+			}
+
+			for( ; i < len; i++ )
+			{
+				if( (decimal_point != trimmed[i] ) && !LLStringOps::isDigit( trimmed[i] ) )
+				{
+					success = FALSE;
+					break;
+				}
+			}
+		}		
+
+		return success;
+	}
+
+	// Limits what characters can be used to [1234567890-] with [-] only valid in the first position.
+	// Does NOT ensure that the string is a well-formed number--that's the job of post-validation--for
+	// the simple reasons that intermediate states may be invalid even if the final result is valid.
+	//
+	bool validateInt(const LLWString &str)
+	{
+		LLLocale locale(LLLocale::USER_LOCALE);
+
+		bool success = TRUE;
+		LLWString trimmed = str;
+		LLWStringUtil::trim(trimmed);
+		S32 len = trimmed.length();
+		if( 0 < len )
+		{
+			S32 i = 0;
+
+			// First character can be a negative sign
+			if( '-' == trimmed[0] )
+			{
+				i++;
+			}
+
+			for( ; i < len; i++ )
+			{
+				if( !LLStringOps::isDigit( trimmed[i] ) )
+				{
+					success = FALSE;
+					break;
+				}
+			}
+		}		
+
+		return success;
+	}
+
+	bool validatePositiveS32(const LLWString &str)
+	{
+		LLLocale locale(LLLocale::USER_LOCALE);
+
+		LLWString trimmed = str;
+		LLWStringUtil::trim(trimmed);
+		S32 len = trimmed.length();
+		bool success = TRUE;
+		if(0 < len)
+		{
+			if(('-' == trimmed[0]) || ('0' == trimmed[0]))
+			{
+				success = FALSE;
+			}
+			S32 i = 0;
+			while(success && (i < len))
+			{
+				if(!LLStringOps::isDigit(trimmed[i++]))
+				{
+					success = FALSE;
+				}
+			}
+		}
+		if (success)
+		{
+			S32 val = strtol(wstring_to_utf8str(trimmed).c_str(), NULL, 10);
+			if (val <= 0)
+			{
+				success = FALSE;
+			}
+		}
+		return success;
+	}
+
+	bool validateNonNegativeS32(const LLWString &str)
+	{
+		LLLocale locale(LLLocale::USER_LOCALE);
+
+		LLWString trimmed = str;
+		LLWStringUtil::trim(trimmed);
+		S32 len = trimmed.length();
+		bool success = TRUE;
+		if(0 < len)
+		{
+			if('-' == trimmed[0])
+			{
+				success = FALSE;
+			}
+			S32 i = 0;
+			while(success && (i < len))
+			{
+				if(!LLStringOps::isDigit(trimmed[i++]))
+				{
+					success = FALSE;
+				}
+			}
+		}
+		if (success)
+		{
+			S32 val = strtol(wstring_to_utf8str(trimmed).c_str(), NULL, 10);
+			if (val < 0)
+			{
+				success = FALSE;
+			}
+		}
+		return success;
+	}
+
+	bool validateAlphaNum(const LLWString &str)
+	{
+		LLLocale locale(LLLocale::USER_LOCALE);
+
+		bool rv = TRUE;
+		S32 len = str.length();
+		if(len == 0) return rv;
+		while(len--)
+		{
+			if( !LLStringOps::isAlnum((char)str[len]) )
+			{
+				rv = FALSE;
+				break;
+			}
+		}
+		return rv;
+	}
+
+	bool validateAlphaNumSpace(const LLWString &str)
+	{
+		LLLocale locale(LLLocale::USER_LOCALE);
+
+		bool rv = TRUE;
+		S32 len = str.length();
+		if(len == 0) return rv;
+		while(len--)
+		{
+			if(!(LLStringOps::isAlnum((char)str[len]) || (' ' == str[len])))
+			{
+				rv = FALSE;
+				break;
+			}
+		}
+		return rv;
+	}
+
+	// Used for most names of things stored on the server, due to old file-formats
+	// that used the pipe (|) for multiline text storage.  Examples include
+	// inventory item names, parcel names, object names, etc.
+	bool validateASCIIPrintableNoPipe(const LLWString &str)
+	{
+		bool rv = TRUE;
+		S32 len = str.length();
+		if(len == 0) return rv;
+		while(len--)
+		{
+			llwchar wc = str[len];
+			if (wc < 0x20
+				|| wc > 0x7f
+				|| wc == '|')
+			{
+				rv = FALSE;
+				break;
+			}
+			if(!(wc == ' '
+				 || LLStringOps::isAlnum((char)wc)
+				 || LLStringOps::isPunct((char)wc) ) )
+			{
+				rv = FALSE;
+				break;
+			}
+		}
+		return rv;
+	}
+
+
+	// Used for avatar names
+	bool validateASCIIPrintableNoSpace(const LLWString &str)
+	{
+		bool rv = TRUE;
+		S32 len = str.length();
+		if(len == 0) return rv;
+		while(len--)
+		{
+			llwchar wc = str[len];
+			if (wc < 0x20
+				|| wc > 0x7f
+				|| LLStringOps::isSpace(wc))
+			{
+				rv = FALSE;
+				break;
+			}
+			if( !(LLStringOps::isAlnum((char)str[len]) ||
+				  LLStringOps::isPunct((char)str[len]) ) )
+			{
+				rv = FALSE;
+				break;
+			}
+		}
+		return rv;
+	}
+
+	bool validateASCII(const LLWString &str)
+	{
+		bool rv = TRUE;
+		S32 len = str.length();
+		while(len--)
+		{
+			if (str[len] < 0x20 || str[len] > 0x7f)
+			{
+				rv = FALSE;
+				break;
+			}
+		}
+		return rv;
+	}
+}
diff --git a/indra/llui/lltextvalidate.h b/indra/llui/lltextvalidate.h
new file mode 100644
index 0000000000000000000000000000000000000000..ffb4e85e7ccf90c898313c79dc0fa55a2a8ab1eb
--- /dev/null
+++ b/indra/llui/lltextvalidate.h
@@ -0,0 +1,63 @@
+/** 
+ * @file lltextbase.h
+ * @author Martin Reddy
+ * @brief The base class of text box/editor, providing Url handling support
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * 
+ * Copyright (c) 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_LLTEXTVALIDATE_H
+#define LL_LLTEXTVALIDATE_H
+
+#include "llstring.h"
+#include "llinitparam.h"
+#include <boost/function.hpp>
+
+namespace LLTextValidate
+{
+	typedef boost::function<BOOL (const LLWString &wstr)> validate_func_t;
+
+	struct ValidateTextNamedFuncs
+	:	public LLInitParam::TypeValuesHelper<validate_func_t, ValidateTextNamedFuncs>
+	{
+		static void declareValues();
+	};
+
+	bool	validateFloat(const LLWString &str );
+	bool	validateInt(const LLWString &str );
+	bool	validatePositiveS32(const LLWString &str);
+	bool	validateNonNegativeS32(const LLWString &str);
+	bool	validateAlphaNum(const LLWString &str );
+	bool	validateAlphaNumSpace(const LLWString &str );
+	bool	validateASCIIPrintableNoPipe(const LLWString &str); 
+	bool	validateASCIIPrintableNoSpace(const LLWString &str);
+	bool	validateASCII(const LLWString &str);
+}
+
+
+#endif
diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h
index 7978b6a583a0e36a7b6fcff1c1fd7d8dc935517c..c0811c56c38d112b624eac64d7511f406c3d8f69 100644
--- a/indra/llui/lltooltip.h
+++ b/indra/llui/lltooltip.h
@@ -129,7 +129,8 @@ class LLToolTip : public LLPanel
 class LLInspector : public LLToolTip
 {
 public:
-	struct Params : public LLInitParam::Block<Params, LLToolTip::Params> {};
+	struct Params : public LLInitParam::Block<Params, LLToolTip::Params> 
+	{};
 };
 
 class LLToolTipMgr : public LLSingleton<LLToolTipMgr>
diff --git a/indra/llui/lluicolortable.cpp b/indra/llui/lluicolortable.cpp
index 9be33483d0b0762d660122963057214d3f54941b..1b64ef3abeaea97a533eb76463d2eac2cc6b8090 100644
--- a/indra/llui/lluicolortable.cpp
+++ b/indra/llui/lluicolortable.cpp
@@ -56,7 +56,7 @@ LLUIColorTable::Params::Params()
 {
 }
 
-void LLUIColorTable::insertFromParams(const Params& p)
+void LLUIColorTable::insertFromParams(const Params& p, string_color_map_t& table)
 {
 	// this map will contain all color references after the following loop
 	typedef std::map<std::string, std::string> string_string_map_t;
@@ -69,14 +69,7 @@ void LLUIColorTable::insertFromParams(const Params& p)
 		ColorEntryParams color_entry = *it;
 		if(color_entry.color.value.isChosen())
 		{
-			if(mUserSetColors.find(color_entry.name)!=mUserSetColors.end())
-			{
-				setColor(color_entry.name, color_entry.color.value);
-			}
-			else
-			{
-				setColor(color_entry.name, color_entry.color.value, mLoadedColors);
-			}
+			setColor(color_entry.name, color_entry.color.value, table);
 		}
 		else
 		{
@@ -220,16 +213,16 @@ bool LLUIColorTable::loadFromSettings()
 	bool result = false;
 
 	std::string default_filename = gDirUtilp->getExpandedFilename(LL_PATH_DEFAULT_SKIN, "colors.xml");
-	result |= loadFromFilename(default_filename);
+	result |= loadFromFilename(default_filename, mLoadedColors);
 
 	std::string current_filename = gDirUtilp->getExpandedFilename(LL_PATH_TOP_SKIN, "colors.xml");
 	if(current_filename != default_filename)
 	{
-		result |= loadFromFilename(current_filename);
+		result |= loadFromFilename(current_filename, mLoadedColors);
 	}
 
 	std::string user_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "colors.xml");
-	loadFromFilename(user_filename);
+	loadFromFilename(user_filename, mUserSetColors);
 
 	return result;
 }
@@ -299,7 +292,7 @@ void LLUIColorTable::setColor(const std::string& name, const LLColor4& color, st
 	}
 }
 
-bool LLUIColorTable::loadFromFilename(const std::string& filename)
+bool LLUIColorTable::loadFromFilename(const std::string& filename, string_color_map_t& table)
 {
 	LLXMLNodePtr root;
 
@@ -320,7 +313,7 @@ bool LLUIColorTable::loadFromFilename(const std::string& filename)
 
 	if(params.validateBlock())
 	{
-		insertFromParams(params);
+		insertFromParams(params, table);
 	}
 	else
 	{
@@ -330,3 +323,11 @@ bool LLUIColorTable::loadFromFilename(const std::string& filename)
 
 	return true;
 }
+
+void LLUIColorTable::insertFromParams(const Params& p)
+{
+	insertFromParams(p, mUserSetColors);
+}
+
+// EOF
+
diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h
index c87695f456ad58018df616436036150e0941b9db..d401e5e72484369f1e55095571602a669e04dd44 100644
--- a/indra/llui/lluicolortable.h
+++ b/indra/llui/lluicolortable.h
@@ -45,6 +45,10 @@ class LLUIColor;
 class LLUIColorTable : public LLSingleton<LLUIColorTable>
 {
 LOG_CLASS(LLUIColorTable);
+
+	// consider using sorted vector, can be much faster
+	typedef std::map<std::string, LLUIColor>  string_color_map_t;
+
 public:
 	struct ColorParams : LLInitParam::Choice<ColorParams>
 	{
@@ -91,10 +95,9 @@ LOG_CLASS(LLUIColorTable);
 	void saveUserSettings() const;
 
 private:
-	bool loadFromFilename(const std::string& filename);
+	bool loadFromFilename(const std::string& filename, string_color_map_t& table);
 
-	// consider using sorted vector, can be much faster
-	typedef std::map<std::string, LLUIColor>  string_color_map_t;
+	void insertFromParams(const Params& p, string_color_map_t& table);
 	
 	void clearTable(string_color_map_t& table);
 	void setColor(const std::string& name, const LLColor4& color, string_color_map_t& table);
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index f1b08c380b5ff79f9c2907ffea1162f193e820e9..63e627ceb5aa7080ed071d971c95e163d8167b5c 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -1720,6 +1720,7 @@ LLView* LLView::findChildView(const std::string& name, BOOL recurse) const
 	for ( child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
 	{
 		LLView* childp = *child_it;
+		llassert(childp);
 		if (childp->getName() == name)
 		{
 			return childp;
@@ -1731,6 +1732,7 @@ LLView* LLView::findChildView(const std::string& name, BOOL recurse) const
 		for ( child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
 		{
 			LLView* childp = *child_it;
+			llassert(childp);
 			LLView* viewp = childp->findChildView(name, recurse);
 			if ( viewp )
 			{
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index 77c6fa57b6c7185e8bb3d5c826db0bf55638b2cf..bf3233f3862635f5872d7b12ba30b6bd45bc2362 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -113,6 +113,7 @@ if (WINDOWS)
        )
   list(APPEND llwindow_LINK_LIBRARIES
        comdlg32     # Common Dialogs for ChooseColor
+       ole32
        )
 endif (WINDOWS)
 
diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index 9b80fe0a84c0ac93c24df61fc52ec53aa96d1dac..b85960be10ebe20e57124e756ba3335245a7e4d5 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -50,7 +50,8 @@ class LLDragDropWin32Target:
 		LLDragDropWin32Target( HWND  hWnd ) :
 			mRefCount( 1 ),
 			mAppWindowHandle( hWnd ),
-			mAllowDrop( false)
+			mAllowDrop(false),
+			mIsSlurl(false)
 		{
 		};
 
diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h
index 127dbf45e0a5f16244c2aadb435eacdb19a1316b..55b221e7161fe6a6682ded12a40b63ab9fe341d6 100644
--- a/indra/llwindow/llwindow.h
+++ b/indra/llwindow/llwindow.h
@@ -37,6 +37,7 @@
 #include "llcoord.h"
 #include "llstring.h"
 #include "llcursortypes.h"
+#include "llsd.h"
 
 class LLSplashScreen;
 class LLPreeditor;
@@ -162,6 +163,9 @@ class LLWindow
 	virtual void spawnWebBrowser(const std::string& escaped_url) {};
 
 	static std::vector<std::string> getDynamicFallbackFontList();
+	
+	// Provide native key event data
+	virtual LLSD getNativeKeyData() { return LLSD::emptyMap(); }
 
 protected:
 	LLWindow(LLWindowCallbacks* callbacks, BOOL fullscreen, U32 flags);
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index 9ccd4c7f97d4a8833415a6527f477024c018b26b..ad97bc45fc782370e0eb7e113ef498391926cdaa 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -260,6 +260,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
 	mTSMScriptCode = 0;
 	mTSMLangCode = 0;
 	mPreeditor = NULL;
+	mRawKeyEvent = NULL;
 	mFSAASamples = fsaa_samples;
 	mForceRebuild = FALSE;
 	
@@ -2140,10 +2141,11 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 				{
 					UInt32 modifiers = 0;
 
+
 					// First, process the raw event.
 					{
-						EventRef rawEvent;
-
+						EventRef rawEvent = NULL;
+						
 						// Get the original event and extract the modifier keys, so we can ignore command-key events.
 						if (GetEventParameter(event, kEventParamTextInputSendKeyboardEvent, typeEventRef, NULL, sizeof(rawEvent), NULL, &rawEvent) == noErr)
 						{
@@ -2152,6 +2154,9 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 
 							// and call this function recursively to handle the raw key event.
 							eventHandler (myHandler, rawEvent);
+							
+							// save the raw event until we're done processing the unicode input as well.
+							mRawKeyEvent = rawEvent;
 						}
 					}
 
@@ -2202,6 +2207,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 						delete[] buffer;
 					}
 
+					mRawKeyEvent = NULL;
 					result = err;
 				}
 				break;
@@ -2276,6 +2282,9 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 			GetEventParameter (event, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &keyCode);
 			GetEventParameter (event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers);
 
+			// save the raw event so getNativeKeyData can use it.
+			mRawKeyEvent = event;
+
 			//			printf("key event, key code = 0x%08x, char code = 0x%02x (%c), modifiers = 0x%08x\n", keyCode, charCode, (char)charCode, modifiers);
 			//			fflush(stdout);
 
@@ -2371,6 +2380,8 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 				result = eventNotHandledErr;
 				break;
 			}
+			
+			mRawKeyEvent = NULL;
 		}
 		break;
 
@@ -3211,6 +3222,60 @@ void LLWindowMacOSX::spawnWebBrowser(const std::string& escaped_url)
 	}
 }
 
+LLSD LLWindowMacOSX::getNativeKeyData()
+{
+	LLSD result = LLSD::emptyMap();
+	
+	if(mRawKeyEvent)
+	{
+		char char_code = 0;
+		UInt32 key_code = 0;
+		UInt32 modifiers = 0;
+		UInt32 keyboard_type = 0;
+		
+		GetEventParameter (mRawKeyEvent, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &char_code);
+		GetEventParameter (mRawKeyEvent, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &key_code);
+		GetEventParameter (mRawKeyEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers);
+		GetEventParameter (mRawKeyEvent, kEventParamKeyboardType, typeUInt32, NULL, sizeof(UInt32), NULL, &keyboard_type);
+
+		result["char_code"] = (S32)char_code;
+		result["key_code"] = (S32)key_code;
+		result["modifiers"] = (S32)modifiers;
+		result["keyboard_type"] = (S32)keyboard_type;
+		
+#if 0
+		// This causes trouble for control characters -- apparently character codes less than 32 (escape, control-A, etc)
+		// cause llsd serialization to create XML that the llsd deserializer won't parse!
+		std::string unicode;
+		OSStatus err = noErr;
+		EventParamType actualType = typeUTF8Text;
+		UInt32 actualSize = 0;
+		char *buffer = NULL;
+		
+		err = GetEventParameter (mRawKeyEvent, kEventParamKeyUnicodes, typeUTF8Text, &actualType, 0, &actualSize, NULL);
+		if(err == noErr)
+		{
+			// allocate a buffer and get the actual data.
+			buffer = new char[actualSize];
+			err = GetEventParameter (mRawKeyEvent, kEventParamKeyUnicodes, typeUTF8Text, &actualType, actualSize, &actualSize, buffer);
+			if(err == noErr)
+			{
+				unicode.assign(buffer, actualSize);
+			}
+			delete[] buffer;
+		}
+		
+		result["unicode"] = unicode;
+#endif
+
+	}
+
+
+	lldebugs << "native key data is: " << result << llendl;
+	
+	return result;
+}
+
 
 BOOL LLWindowMacOSX::dialogColorPicker( F32 *r, F32 *g, F32 *b)
 {
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index 377f10b6d481f297bff9db844ff222e439b25b04..7c6b32402960b161d7ca22bc8857b052b0f931c5 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -120,6 +120,10 @@ class LLWindowMacOSX : public LLWindow
 
 	static std::vector<std::string> getDynamicFallbackFontList();
 
+	// Provide native key event data
+	/*virtual*/ LLSD getNativeKeyData();
+
+
 protected:
 	LLWindowMacOSX(LLWindowCallbacks* callbacks,
 		const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags,
@@ -218,6 +222,7 @@ class LLWindowMacOSX : public LLWindow
 
 	friend class LLWindowManager;
 	static WindowRef sMediaWindow;
+	EventRef 	mRawKeyEvent;
 
 };
 
diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index bfdf1147a1e48f9c499f93d6c2f7d18026228704..7cd06c9c371148bb6a0e26d241a06ccdc89ad511 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -251,6 +251,10 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
 #if LL_X11
 	mFlashing = FALSE;
 #endif // LL_X11
+
+	mKeyScanCode = 0;
+	mKeyVirtualKey = 0;
+	mKeyModifiers = KMOD_NONE;
 }
 
 static SDL_Surface *Load_BMP_Resource(const char *basename)
@@ -1617,7 +1621,7 @@ void LLWindowSDL::processMiscNativeEvents()
 	    pump_timer.setTimerExpirySec(1.0f / 15.0f);
 	    do {
 		     // Always do at least one non-blocking pump
-		    gtk_main_iteration_do(0);
+		    gtk_main_iteration_do(FALSE);
 	    } while (gtk_events_pending() &&
 		     !pump_timer.hasExpired());
 
@@ -1651,24 +1655,32 @@ void LLWindowSDL::gatherInput()
             }
 
             case SDL_KEYDOWN:
-                gKeyboard->handleKeyDown(event.key.keysym.sym, event.key.keysym.mod);
-		// part of the fix for SL-13243
-		if (SDLCheckGrabbyKeys(event.key.keysym.sym, TRUE) != 0)
-			SDLReallyCaptureInput(TRUE);
-
-                if (event.key.keysym.unicode)
-				{
-					handleUnicodeUTF16(event.key.keysym.unicode,
-									   gKeyboard->currentMask(FALSE));
-				}
+		    mKeyScanCode = event.key.keysym.scancode;
+		    mKeyVirtualKey = event.key.keysym.unicode;
+		    mKeyModifiers = event.key.keysym.mod;
+
+		    gKeyboard->handleKeyDown(event.key.keysym.sym, event.key.keysym.mod);
+		    // part of the fix for SL-13243
+		    if (SDLCheckGrabbyKeys(event.key.keysym.sym, TRUE) != 0)
+			    SDLReallyCaptureInput(TRUE);
+
+		    if (event.key.keysym.unicode)
+		    {
+			    handleUnicodeUTF16(event.key.keysym.unicode,
+					       gKeyboard->currentMask(FALSE));
+		    }
                 break;
 
             case SDL_KEYUP:
-		if (SDLCheckGrabbyKeys(event.key.keysym.sym, FALSE) == 0)
-			SDLReallyCaptureInput(FALSE); // part of the fix for SL-13243
+		    mKeyScanCode = event.key.keysym.scancode;
+		    mKeyVirtualKey = event.key.keysym.unicode;
+		    mKeyModifiers = event.key.keysym.mod;
 
-		gKeyboard->handleKeyUp(event.key.keysym.sym, event.key.keysym.mod);
-                break;
+		    if (SDLCheckGrabbyKeys(event.key.keysym.sym, FALSE) == 0)
+			    SDLReallyCaptureInput(FALSE); // part of the fix for SL-13243
+
+		    gKeyboard->handleKeyUp(event.key.keysym.sym, event.key.keysym.mod);
+		    break;
 
             case SDL_MOUSEBUTTONDOWN:
             {
@@ -2224,6 +2236,39 @@ static void color_changed_callback(GtkWidget *widget,
 	gtk_color_selection_get_current_color(colorsel, colorp);
 }
 
+
+/*
+        Make the raw keyboard data available - used to poke through to LLQtWebKit so
+        that Qt/Webkit has access to the virtual keycodes etc. that it needs
+*/
+LLSD LLWindowSDL::getNativeKeyData()
+{
+        LLSD result = LLSD::emptyMap();
+
+	U32 modifiers = 0; // pretend-native modifiers... oh what a tangled web we weave!
+
+	// we go through so many levels of device abstraction that I can't really guess
+	// what a plugin under GDK under Qt under SL under SDL under X11 considers
+	// a 'native' modifier mask.  this has been sort of reverse-engineered... they *appear*
+	// to match GDK consts, but that may be co-incidence.
+	modifiers |= (mKeyModifiers & KMOD_LSHIFT) ? 0x0001 : 0;
+	modifiers |= (mKeyModifiers & KMOD_RSHIFT) ? 0x0001 : 0;// munge these into the same shift
+	modifiers |= (mKeyModifiers & KMOD_CAPS)   ? 0x0002 : 0;
+	modifiers |= (mKeyModifiers & KMOD_LCTRL)  ? 0x0004 : 0;
+	modifiers |= (mKeyModifiers & KMOD_RCTRL)  ? 0x0004 : 0;// munge these into the same ctrl
+	modifiers |= (mKeyModifiers & KMOD_LALT)   ? 0x0008 : 0;// untested
+	modifiers |= (mKeyModifiers & KMOD_RALT)   ? 0x0008 : 0;// untested
+	// *todo: test ALTs - I don't have a case for testing these.  Do you?
+	// *todo: NUM? - I don't care enough right now (and it's not a GDK modifier).
+
+        result["scan_code"] = (S32)mKeyScanCode;
+        result["virtual_key"] = (S32)mKeyVirtualKey;
+	result["modifiers"] = (S32)modifiers;
+
+        return result;
+}
+
+
 BOOL LLWindowSDL::dialogColorPicker( F32 *r, F32 *g, F32 *b)
 {
 	BOOL rtn = FALSE;
diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h
index 0ba1c861da883d2dcd63c91afdffc5008d680bc6..e6bdd46a77f204fd232da297663fde2985ee1b71 100644
--- a/indra/llwindow/llwindowsdl.h
+++ b/indra/llwindow/llwindowsdl.h
@@ -102,7 +102,7 @@ class LLWindowSDL : public LLWindow
 	/*virtual*/ void gatherInput();
 	/*virtual*/ void swapBuffers();
 
-    /*virtual*/ void delayInputProcessing() { };
+	/*virtual*/ void delayInputProcessing() { };
 
 	// handy coordinate space conversion routines
 	/*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to);
@@ -155,12 +155,13 @@ class LLWindowSDL : public LLWindow
 		BOOL ignore_pixel_depth, U32 fsaa_samples);
 	~LLWindowSDL();
 
+	/*virtual*/ BOOL	isValid();
+	/*virtual*/ LLSD    getNativeKeyData();
+
 	void	initCursors();
 	void	quitCursors();
-	BOOL	isValid();
 	void	moveWindow(const LLCoordScreen& position,const LLCoordScreen& size);
 
-
 	// Changes display resolution. Returns true if successful
 	BOOL	setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh);
 
@@ -204,12 +205,16 @@ class LLWindowSDL : public LLWindow
 
 	friend class LLWindowManager;
 
-#if LL_X11
 private:
+#if LL_X11
 	void x11_set_urgent(BOOL urgent);
 	BOOL mFlashing;
 	LLTimer mFlashTimer;
 #endif //LL_X11
+	
+	U32 mKeyScanCode;
+        U32 mKeyVirtualKey;
+	SDLMod mKeyModifiers;
 };
 
 
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 57a4921d92c29b34216f96b31515c5d0f99c60ec..c80392ad4562808ab67af244135acc83b3868239 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -378,6 +378,9 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks,
 	mMousePositionModified = FALSE;
 	mInputProcessingPaused = FALSE;
 	mPreeditor = NULL;
+	mKeyCharCode = 0;
+	mKeyScanCode = 0;
+	mKeyVirtualKey = 0;
 	mhDC = NULL;
 	mhRC = NULL;
 
@@ -1872,6 +1875,10 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
 			// allow system keys, such as ALT-F4 to be processed by Windows
 			eat_keystroke = FALSE;
 		case WM_KEYDOWN:
+			window_imp->mKeyCharCode = 0; // don't know until wm_char comes in next
+			window_imp->mKeyScanCode = ( l_param >> 16 ) & 0xff;
+			window_imp->mKeyVirtualKey = w_param;
+
 			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN");
 			{
 				if (gDebugWindowProc)
@@ -1891,6 +1898,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
 			eat_keystroke = FALSE;
 		case WM_KEYUP:
 		{
+			window_imp->mKeyScanCode = ( l_param >> 16 ) & 0xff;
+			window_imp->mKeyVirtualKey = w_param;
+
 			window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP");
 			LLFastTimer t2(FTM_KEYHANDLER);
 
@@ -1976,6 +1986,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
 			break;
 
 		case WM_CHAR:
+			window_imp->mKeyCharCode = w_param;
+
 			// Should really use WM_UNICHAR eventually, but it requires a specific Windows version and I need
 			// to figure out how that works. - Doug
 			//
@@ -3051,6 +3063,19 @@ void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url )
 	*/
 }
 
+/*
+	Make the raw keyboard data available - used to poke through to LLQtWebKit so
+	that Qt/Webkit has access to the virtual keycodes etc. that it needs
+*/
+LLSD LLWindowWin32::getNativeKeyData()
+{
+	LLSD result = LLSD::emptyMap();
+
+	result["scan_code"] = (S32)mKeyScanCode;
+	result["virtual_key"] = (S32)mKeyVirtualKey;
+
+	return result;
+}
 
 BOOL LLWindowWin32::dialogColorPicker( F32 *r, F32 *g, F32 *b )
 {
diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h
index 6aca31b63e34f57e53642969210aeaae91f5d039..9d5773577202a06547903ac686cb112ebf1b2ed3 100644
--- a/indra/llwindow/llwindowwin32.h
+++ b/indra/llwindow/llwindowwin32.h
@@ -132,7 +132,7 @@ class LLWindowWin32 : public LLWindow
 	HCURSOR loadColorCursor(LPCTSTR name);
 	BOOL	isValid();
 	void	moveWindow(const LLCoordScreen& position,const LLCoordScreen& size);
-
+	LLSD	getNativeKeyData();
 
 	// Changes display resolution. Returns true if successful
 	BOOL	setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh);
@@ -211,6 +211,10 @@ class LLWindowWin32 : public LLWindow
 
 	LLDragDropWin32* mDragDrop;
 
+	U32				mKeyCharCode;
+	U32				mKeyScanCode;
+	U32				mKeyVirtualKey;
+
 	friend class LLWindowManager;
 };
 
diff --git a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
index dbc44c833453681e2aa7f2e1a122b16ae0fead17..e230fcc280e2cbd6e4bc335ca671cc0caab69395 100644
--- a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
+++ b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp
@@ -724,8 +724,8 @@ class MediaPluginQuickTime : public MediaPluginBase
 			return false;
 
 		// allocate some space and grab it
-		UInt8* item_data = new UInt8( size + 1 );
-		memset( item_data, 0, ( size + 1 ) * sizeof( UInt8* ) );
+		UInt8* item_data = new UInt8[ size + 1 ];
+		memset( item_data, 0, ( size + 1 ) * sizeof( UInt8 ) );
 		result = QTMetaDataGetItemValue( media_data_ref, item, item_data, size, NULL );
 		if ( noErr != result ) 
 		{
diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt
index 5bccd589d80de18d27311d7591971814997f087d..4512c22b5d062177582194748f53e3a3befaeb72 100644
--- a/indra/media_plugins/webkit/CMakeLists.txt
+++ b/indra/media_plugins/webkit/CMakeLists.txt
@@ -9,6 +9,7 @@ include(LLPlugin)
 include(LLMath)
 include(LLRender)
 include(LLWindow)
+include(UI)
 include(Linking)
 include(PluginAPI)
 include(MediaPluginBase)
@@ -38,7 +39,7 @@ add_library(media_plugin_webkit
     ${media_plugin_webkit_SOURCE_FILES}
 )
 
-target_link_libraries(media_plugin_webkit
+set(media_plugin_webkit_LINK_LIBRARIES
   ${LLPLUGIN_LIBRARIES}
   ${MEDIA_PLUGIN_BASE_LIBRARIES}
   ${LLCOMMON_LIBRARIES}
@@ -46,6 +47,14 @@ target_link_libraries(media_plugin_webkit
   ${PLUGIN_API_WINDOWS_LIBRARIES}
 )
 
+if (LINUX)
+  list(APPEND media_plugin_webkit_LINK_LIBRARIES
+       ${UI_LIBRARIES}     # for glib/GTK
+       )
+endif (LINUX)
+
+target_link_libraries(media_plugin_webkit ${media_plugin_webkit_LINK_LIBRARIES})
+
 add_dependencies(media_plugin_webkit
   ${LLPLUGIN_LIBRARIES}
   ${MEDIA_PLUGIN_BASE_LIBRARIES}
@@ -79,4 +88,5 @@ if (DARWIN)
     DEPENDS media_plugin_webkit ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib
     )
     
-endif (DARWIN)
\ No newline at end of file
+endif (DARWIN)
+
diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp
index 3c24b4ed22b24c7cbae6a84a1a7b901ec295e28f..688d3bcd3d1f67486f065bb98cce878adcd80343 100644
--- a/indra/media_plugins/webkit/media_plugin_webkit.cpp
+++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp
@@ -470,92 +470,96 @@ class MediaPluginWebKit :
 		return (LLQtWebKit::EKeyboardModifier)result;
 	}
 	
-
 	////////////////////////////////////////////////////////////////////////////////
 	//
-	void keyEvent(LLQtWebKit::EKeyEvent key_event, int key, LLQtWebKit::EKeyboardModifier modifiers)
+	void deserializeKeyboardData( LLSD native_key_data, uint32_t& native_scan_code, uint32_t& native_virtual_key, uint32_t& native_modifiers )
 	{
-		int llqt_key;
+		native_scan_code = 0;
+		native_virtual_key = 0;
+		native_modifiers = 0;
 		
+		if( native_key_data.isMap() )
+		{
+#if LL_DARWIN
+			native_scan_code = (uint32_t)(native_key_data["char_code"].asInteger());
+			native_virtual_key = (uint32_t)(native_key_data["key_code"].asInteger());
+			native_modifiers = (uint32_t)(native_key_data["modifiers"].asInteger());
+#elif LL_WINDOWS
+			native_scan_code = (uint32_t)(native_key_data["scan_code"].asInteger());
+			native_virtual_key = (uint32_t)(native_key_data["virtual_key"].asInteger());
+			// TODO: I don't think we need to do anything with native modifiers here -- please verify
+#elif LL_LINUX
+			native_scan_code = (uint32_t)(native_key_data["scan_code"].asInteger());
+			native_virtual_key = (uint32_t)(native_key_data["virtual_key"].asInteger());
+			native_modifiers = (uint32_t)(native_key_data["modifiers"].asInteger());
+#else
+			// Add other platforms here as needed
+#endif
+		};
+	};
+
+	////////////////////////////////////////////////////////////////////////////////
+	//
+	void keyEvent(LLQtWebKit::EKeyEvent key_event, int key, LLQtWebKit::EKeyboardModifier modifiers, LLSD native_key_data = LLSD::emptyMap())
+	{
 		// The incoming values for 'key' will be the ones from indra_constants.h
-		// the outgoing values are the ones from llqtwebkit.h
+		std::string utf8_text;
+		
+		if(key < KEY_SPECIAL)
+		{
+			// Low-ascii characters need to get passed through.
+			utf8_text = (char)key;
+		}
 		
+		// Any special-case handling we want to do for particular keys...
 		switch((KEY)key)
 		{
-			// This is the list that the llqtwebkit implementation actually maps into Qt keys.
-//			case KEY_XXX:			llqt_key = LL_DOM_VK_CANCEL;			break;
-//			case KEY_XXX:			llqt_key = LL_DOM_VK_HELP;			break;
-			case KEY_BACKSPACE:		llqt_key = LL_DOM_VK_BACK_SPACE;		break;
-			case KEY_TAB:			llqt_key = LL_DOM_VK_TAB;			break;
-//			case KEY_XXX:			llqt_key = LL_DOM_VK_CLEAR;			break;
-			case KEY_RETURN:		llqt_key = LL_DOM_VK_RETURN;			break;
-			case KEY_PAD_RETURN:	llqt_key = LL_DOM_VK_ENTER;			break;
-			case KEY_SHIFT:			llqt_key = LL_DOM_VK_SHIFT;			break;
-			case KEY_CONTROL:		llqt_key = LL_DOM_VK_CONTROL;		break;
-			case KEY_ALT:			llqt_key = LL_DOM_VK_ALT;			break;
-//			case KEY_XXX:			llqt_key = LL_DOM_VK_PAUSE;			break;
-			case KEY_CAPSLOCK:		llqt_key = LL_DOM_VK_CAPS_LOCK;		break;
-			case KEY_ESCAPE:		llqt_key = LL_DOM_VK_ESCAPE;			break;
-			case KEY_PAGE_UP:		llqt_key = LL_DOM_VK_PAGE_UP;		break;
-			case KEY_PAGE_DOWN:		llqt_key = LL_DOM_VK_PAGE_DOWN;		break;
-			case KEY_END:			llqt_key = LL_DOM_VK_END;			break;
-			case KEY_HOME:			llqt_key = LL_DOM_VK_HOME;			break;
-			case KEY_LEFT:			llqt_key = LL_DOM_VK_LEFT;			break;
-			case KEY_UP:			llqt_key = LL_DOM_VK_UP;				break;
-			case KEY_RIGHT:			llqt_key = LL_DOM_VK_RIGHT;			break;
-			case KEY_DOWN:			llqt_key = LL_DOM_VK_DOWN;			break;
-//			case KEY_XXX:			llqt_key = LL_DOM_VK_PRINTSCREEN;	break;
-			case KEY_INSERT:		llqt_key = LL_DOM_VK_INSERT;			break;
-			case KEY_DELETE:		llqt_key = LL_DOM_VK_DELETE;			break;
-//			case KEY_XXX:			llqt_key = LL_DOM_VK_CONTEXT_MENU;	break;
+			// ASCII codes for some standard keys
+			case LLQtWebKit::KEY_BACKSPACE:		utf8_text = (char)8;		break;
+			case LLQtWebKit::KEY_TAB:			utf8_text = (char)9;		break;
+			case LLQtWebKit::KEY_RETURN:		utf8_text = (char)13;		break;
+			case LLQtWebKit::KEY_PAD_RETURN:	utf8_text = (char)13;		break;
+			case LLQtWebKit::KEY_ESCAPE:		utf8_text = (char)27;		break;
 			
-			default:
-				if(key < KEY_SPECIAL)
-				{
-					// Pass the incoming key through -- it should be regular ASCII, which should be correct for webkit.
-					llqt_key = key;
-				}
-				else
-				{
-					// Don't pass through untranslated special keys -- they'll be all wrong.
-					llqt_key = 0;
-				}
+			default:  
 			break;
 		}
 		
-//		std::cerr << "keypress, original code = 0x" << std::hex << key << ", converted code = 0x" << std::hex << llqt_key << std::dec << std::endl;
+//		std::cerr << "key event " << (int)key_event << ", native_key_data = " << native_key_data << std::endl;
 		
-		if(llqt_key != 0)
-		{
-			LLQtWebKit::getInstance()->keyEvent( mBrowserWindowId, key_event, llqt_key, modifiers);
-		}
+		uint32_t native_scan_code = 0;
+		uint32_t native_virtual_key = 0;
+		uint32_t native_modifiers = 0;
+		deserializeKeyboardData( native_key_data, native_scan_code, native_virtual_key, native_modifiers );
+		
+		LLQtWebKit::getInstance()->keyboardEvent( mBrowserWindowId, key_event, (uint32_t)key, utf8_text.c_str(), modifiers, native_scan_code, native_virtual_key, native_modifiers);
 
 		checkEditState();
 	};
 
 	////////////////////////////////////////////////////////////////////////////////
 	//
-	void unicodeInput( const std::string &utf8str, LLQtWebKit::EKeyboardModifier modifiers)
-	{
-		LLWString wstr = utf8str_to_wstring(utf8str);
+	void unicodeInput( const std::string &utf8str, LLQtWebKit::EKeyboardModifier modifiers, LLSD native_key_data = LLSD::emptyMap())
+	{		
+		uint32_t key = LLQtWebKit::KEY_NONE;
+		
+//		std::cerr << "unicode input, native_key_data = " << native_key_data << std::endl;
 		
-		unsigned int i;
-		for(i=0; i < wstr.size(); i++)
+		if(utf8str.size() == 1)
 		{
-//			std::cerr << "unicode input, code = 0x" << std::hex << (unsigned long)(wstr[i]) << std::dec << std::endl;
-			
-			if(wstr[i] == 32)
-			{
-				// For some reason, the webkit plugin really wants the space bar to come in through the key-event path, not the unicode path.
-				LLQtWebKit::getInstance()->keyEvent( mBrowserWindowId, LLQtWebKit::KE_KEY_DOWN, 32, modifiers);
-				LLQtWebKit::getInstance()->keyEvent( mBrowserWindowId, LLQtWebKit::KE_KEY_UP, 32, modifiers);
-			}
-			else
-			{
-				LLQtWebKit::getInstance()->unicodeInput(mBrowserWindowId, wstr[i], modifiers);
-			}
+			// The only way a utf8 string can be one byte long is if it's actually a single 7-bit ascii character.
+			// In this case, use it as the key value.
+			key = utf8str[0];
 		}
 
+		uint32_t native_scan_code = 0;
+		uint32_t native_virtual_key = 0;
+		uint32_t native_modifiers = 0;
+		deserializeKeyboardData( native_key_data, native_scan_code, native_virtual_key, native_modifiers );
+		
+		LLQtWebKit::getInstance()->keyboardEvent( mBrowserWindowId, LLQtWebKit::KE_KEY_DOWN, (uint32_t)key, utf8str.c_str(), modifiers, native_scan_code, native_virtual_key, native_modifiers);
+		LLQtWebKit::getInstance()->keyboardEvent( mBrowserWindowId, LLQtWebKit::KE_KEY_UP, (uint32_t)key, utf8str.c_str(), modifiers, native_scan_code, native_virtual_key, native_modifiers);
+
 		checkEditState();
 	};
 	
@@ -855,6 +859,7 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
 				std::string event = message_in.getValue("event");
 				S32 key = message_in.getValueS32("key");
 				std::string modifiers = message_in.getValue("modifiers");
+				LLSD native_key_data = message_in.getValueLLSD("native_key_data");
 				
 				// Treat unknown events as key-up for safety.
 				LLQtWebKit::EKeyEvent key_event = LLQtWebKit::KE_KEY_UP;
@@ -867,14 +872,15 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
 					key_event = LLQtWebKit::KE_KEY_REPEAT;
 				}
 				
-				keyEvent(key_event, key, decodeModifiers(modifiers));
+				keyEvent(key_event, key, decodeModifiers(modifiers), native_key_data);
 			}
 			else if(message_name == "text_event")
 			{
 				std::string text = message_in.getValue("text");
 				std::string modifiers = message_in.getValue("modifiers");
+				LLSD native_key_data = message_in.getValueLLSD("native_key_data");
 				
-				unicodeInput(text, decodeModifiers(modifiers));
+				unicodeInput(text, decodeModifiers(modifiers), native_key_data);
 			}
 			if(message_name == "edit_cut")
 			{
diff --git a/indra/newview/app_settings/ignorable_dialogs.xml b/indra/newview/app_settings/ignorable_dialogs.xml
index e825f13e82995eb4457e17839ed684029f892c49..d0e1f62a84a0abdadf453e6d358539cb6d1cac8c 100644
--- a/indra/newview/app_settings/ignorable_dialogs.xml
+++ b/indra/newview/app_settings/ignorable_dialogs.xml
@@ -177,17 +177,6 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
-    <key>FirstStreamingMedia</key>
-    <map>
-      <key>Comment</key>
-      <string>Enables FirstStreamingMedia warning dialog</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
     <key>FirstTeleport</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 793d7b62071e9eb6524b87a391e337e51a2cbdaa..d0c2f3cb34716a29e05b50314f4514f8ac21da67 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -4633,6 +4633,17 @@
       <key>Value</key>
       <integer>410</integer>
     </map>
+    <key>MePanelOpened</key>
+    <map>
+      <key>Comment</key>
+      <string>Indicates that Me Panel was opened at least once after Viewer was installed</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <real>0</real>
+    </map>
     <key>MigrateCacheDirectory</key>
     <map>
       <key>Comment</key>
@@ -8399,7 +8410,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>1</integer>
+      <integer>0</integer>
     </map>
     <key>ShowTangentBasis</key>
     <map>
@@ -8445,6 +8456,17 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>ShowVoiceVisualizersInCalls</key>
+    <map>
+      <key>Comment</key>
+      <string>Enables in-world voice visualizers, voice gestures and lip-sync while in group or P2P calls.</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>ShowVolumeSettingsPopup</key>
     <map>
       <key>Comment</key>
@@ -9937,50 +9959,6 @@
       <string>S32</string>
       <key>Value</key>
       <integer>15</integer>
-    </map>
-    <key>UIButtonImageLeftPadding</key>
-    <map>
-      <key>Comment</key>
-      <string>Button Overlay Image Left Padding</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <integer>4</integer>
-    </map>
-    <key>UIButtonImageRightPadding</key>
-    <map>
-      <key>Comment</key>
-      <string>Button Overlay Image Right Padding</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <integer>4</integer>
-    </map>
-    <key>UIButtonImageTopPadding</key>
-    <map>
-      <key>Comment</key>
-      <string>Button Overlay Image Top Padding</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <integer>2</integer>
-    </map>
-    <key>UIButtonImageBottomPadding</key>
-    <map>
-      <key>Comment</key>
-      <string>Button Overlay Image Bottom Padding</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <integer>2</integer>
     </map>
 	<key>UploadBakedTexOld</key>
     <map>
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 2354323a66d82006316ee8c8738d2146c1acf4bc..59f61dfdfb77f7ca0e931e16274ef0cd274f6071 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -956,6 +956,7 @@ void LLAgent::sendMessage()
 	if (!mRegionp)
 	{
 		llerrs << "No region for agent yet!" << llendl;
+		return;
 	}
 	gMessageSystem->sendMessage(mRegionp->getHost());
 }
@@ -4482,7 +4483,9 @@ void LLAgent::setCameraPosAndFocusGlobal(const LLVector3d& camera_pos, const LLV
 	{
 		const F64 ANIM_METERS_PER_SECOND = 10.0;
 		const F64 MIN_ANIM_SECONDS = 0.5;
+		const F64 MAX_ANIM_SECONDS = 10.0;
 		F64 anim_duration = llmax( MIN_ANIM_SECONDS, sqrt(focus_delta_squared) / ANIM_METERS_PER_SECOND );
+		anim_duration = llmin( anim_duration, MAX_ANIM_SECONDS );
 		setAnimationDuration( (F32)anim_duration );
 	}
 
diff --git a/indra/newview/llagentui.cpp b/indra/newview/llagentui.cpp
index 1bc9aa0f2b327dce825c78e1166d43abb2565de1..c89098893007a353c596879ac1e3519f9f79a2a8 100644
--- a/indra/newview/llagentui.cpp
+++ b/indra/newview/llagentui.cpp
@@ -125,11 +125,17 @@ BOOL LLAgentUI::buildLocationString(std::string& str, ELocationFormat fmt,const
 				sim_access_string.c_str());
 			break;
 		case LOCATION_FORMAT_NO_MATURITY:
-		case LOCATION_FORMAT_FULL:
 			buffer = llformat("%s (%d, %d, %d)",
 				region_name.c_str(),
 				pos_x, pos_y, pos_z);
 			break;
+		case LOCATION_FORMAT_FULL:
+			buffer = llformat("%s (%d, %d, %d)%s%s",
+				region_name.c_str(),
+				pos_x, pos_y, pos_z,
+				sim_access_string.empty() ? "" : " - ",
+				sim_access_string.c_str());
+			break;
 		}
 	}
 	else
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 41f2ff29e60cde0dbd097355991c30a09ca8d466..6078620e87e8f75c225ab01d2f79dc83d51dae82 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -310,21 +310,24 @@ void LLAgentWearables::addWearabletoAgentInventoryDone(const S32 type,
 		return;
 
 	LLUUID old_item_id = getWearableItemID((EWearableType)type,index);
+
 	if (wearable)
 	{
 		wearable->setItemID(item_id);
-	}
 
-	if (old_item_id.notNull())
-	{	
-		gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id);
-		setWearable((EWearableType)type,index,wearable);
-	}
-	else
-	{
-		pushWearable((EWearableType)type,wearable);
+		if (old_item_id.notNull())
+		{	
+			gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id);
+			setWearable((EWearableType)type,index,wearable);
+		}
+		else
+		{
+			pushWearable((EWearableType)type,wearable);
+		}
 	}
+
 	gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
+
 	LLViewerInventoryItem* item = gInventory.getItem(item_id);
 	if (item && wearable)
 	{
@@ -761,6 +764,8 @@ void LLAgentWearables::wearableUpdated(LLWearable *wearable)
 	wearable->refreshName();
 	wearable->setLabelUpdated();
 
+	wearable->pullCrossWearableValues();
+
 	// Hack pt 2. If the wearable we just loaded has definition version 24,
 	// then force a re-save of this wearable after slamming the version number to 22.
 	// This number was incorrectly incremented for internal builds before release, and
@@ -927,13 +932,6 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
 	if (mInitialWearablesUpdateReceived)
 		return;
 	mInitialWearablesUpdateReceived = true;
-	
-	// If this is the very first time the user has logged into viewer2+ (from a legacy viewer, or new account)
-	// then auto-populate outfits from the library into the My Outfits folder.
-	if (LLInventoryModel::getIsFirstTimeInViewer2() || gSavedSettings.getBOOL("MyOutfitsAutofill"))
-	{
-		gAgentWearables.populateMyOutfitsFolder();
-	}
 
 	LLUUID agent_id;
 	gMessageSystem->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id);
@@ -1292,25 +1290,29 @@ void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name,
 							j,
 							new_wearable,
 							todo);
-					if (isWearableCopyable((EWearableType)type, j))
+					llassert(item);
+					if (item)
 					{
-						copy_inventory_item(
-							gAgent.getID(),
-							item->getPermissions().getOwner(),
-							item->getUUID(),
-							folder_id,
-							new_name,
-							cb);
-					}
-					else
-					{
-						move_inventory_item(
-							gAgent.getID(),
-							gAgent.getSessionID(),
-							item->getUUID(),
-							folder_id,
-							new_name,
-							cb);
+						if (isWearableCopyable((EWearableType)type, j))
+						{
+							copy_inventory_item(
+									    gAgent.getID(),
+									    item->getPermissions().getOwner(),
+									    item->getUUID(),
+									    folder_id,
+									    new_name,
+									    cb);
+						}
+						else
+						{
+							move_inventory_item(
+									    gAgent.getID(),
+									    gAgent.getSessionID(),
+									    item->getUUID(),
+									    folder_id,
+									    new_name,
+									    cb);
+						}
 					}
 				}
 			}
@@ -1417,7 +1419,7 @@ LLUUID LLAgentWearables::makeNewOutfitLinks(const std::string& new_folder_name)
 		new_folder_name);
 
 	LLPointer<LLInventoryCallback> cb = new LLShowCreatedOutfit(folder_id);
-	LLAppearanceManager::instance().shallowCopyCategory(LLAppearanceManager::instance().getCOF(),folder_id, cb);
+	LLAppearanceManager::instance().shallowCopyCategoryContents(LLAppearanceManager::instance().getCOF(),folder_id, cb);
 	LLAppearanceManager::instance().createBaseOutfitLink(folder_id, cb);
 
 	return folder_id;
@@ -1623,8 +1625,10 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it
 		}
 
 		if (new_wearable)
+		{
 			new_wearable->setItemID(new_item->getUUID());
-		setWearable(type,0,new_wearable);
+			setWearable(type,0,new_wearable);
+		}
 	}
 
 	std::vector<LLWearable*> wearables_being_removed;
@@ -2334,7 +2338,7 @@ void LLLibraryOutfitsFetch::libraryDone(void)
 			LLUUID folder_id = gInventory.createNewCategory(mImportedClothingID,
 															LLFolderType::FT_NONE,
 															iter->second);
-			LLAppearanceManager::getInstance()->shallowCopyCategory(iter->first, folder_id, copy_waiter);
+			LLAppearanceManager::getInstance()->shallowCopyCategoryContents(iter->first, folder_id, copy_waiter);
 		}
 	}
 	else
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 585d42f66d1251a2656d67986967e0e46cf0753d..018e9a92a08b3f7d445dc0fe21acba1beaa71456 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -48,6 +48,31 @@
 #include "llviewerregion.h"
 #include "llwearablelist.h"
 
+LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id,const std::string& name)
+{
+	LLInventoryModel::cat_array_t cat_array;
+	LLInventoryModel::item_array_t item_array;
+	LLNameCategoryCollector has_name(name);
+	gInventory.collectDescendentsIf(parent_id,
+									cat_array,
+									item_array,
+									LLInventoryModel::EXCLUDE_TRASH,
+									has_name);
+	if (0 == cat_array.count())
+		return LLUUID();
+	else
+	{
+		LLViewerInventoryCategory *cat = cat_array.get(0);
+		if (cat)
+			return cat->getUUID();
+		else
+		{
+			llwarns << "null cat" << llendl;
+			return LLUUID();
+		}
+	}
+}
+
 // support for secondlife:///app/appearance SLapps
 class LLAppearanceHandler : public LLCommandHandler
 {
@@ -321,7 +346,7 @@ class LLWearableHoldingPattern
 	~LLWearableHoldingPattern();
 
 	bool pollCompletion();
-	bool isDone();
+	bool isFetchCompleted();
 	bool isTimedOut();
 	
 	typedef std::list<LLFoundData> found_list_t;
@@ -330,10 +355,12 @@ class LLWearableHoldingPattern
 	LLInventoryModel::item_array_t mGestItems;
 	S32 mResolved;
 	LLTimer mWaitTime;
+	bool mFired;
 };
 
 LLWearableHoldingPattern::LLWearableHoldingPattern():
-	mResolved(0)
+	mResolved(0),
+	mFired(false)
 {
 }
 
@@ -341,31 +368,34 @@ LLWearableHoldingPattern::~LLWearableHoldingPattern()
 {
 }
 
-bool LLWearableHoldingPattern::isDone()
+bool LLWearableHoldingPattern::isFetchCompleted()
 {
-	if (mResolved >= (S32)mFoundList.size())
-		return true; // have everything we were waiting for
-	else if (isTimedOut())
-	{
-		llwarns << "Exceeded max wait time, updating appearance based on what has arrived" << llendl;
-		return true;
-	}
-	return false;
-
+	return (mResolved >= (S32)mFoundList.size()); // have everything we were waiting for?
 }
 
 bool LLWearableHoldingPattern::isTimedOut()
 {
-	static F32 max_wait_time = 15.0;  // give up if wearable fetches haven't completed in max_wait_time seconds.
+	static F32 max_wait_time = 20.0;  // give up if wearable fetches haven't completed in max_wait_time seconds.
 	return mWaitTime.getElapsedTimeF32() > max_wait_time; 
 }
 
 bool LLWearableHoldingPattern::pollCompletion()
 {
-	bool done = isDone();
-	llinfos << "polling, done status: " << done << " elapsed " << mWaitTime.getElapsedTimeF32() << llendl;
+	bool completed = isFetchCompleted();
+	bool timed_out = isTimedOut();
+	bool done = completed || timed_out;
+	
+	llinfos << "polling, done status: " << completed << " timed out? " << timed_out << " elapsed " << mWaitTime.getElapsedTimeF32() << llendl;
+
 	if (done)
 	{
+		mFired = true;
+		
+		if (timed_out)
+		{
+			llwarns << "Exceeded max wait time for wearables, updating appearance based on what has arrived" << llendl;
+		}
+
 		// Activate all gestures in this folder
 		if (mGestItems.count() > 0)
 		{
@@ -397,7 +427,11 @@ bool LLWearableHoldingPattern::pollCompletion()
 			LLAgentWearables::userUpdateAttachments(mObjItems);
 		}
 
-		delete this;
+		if (completed)
+		{
+			// Only safe to delete if all wearable callbacks completed.
+			delete this;
+		}
 	}
 	return done;
 }
@@ -432,7 +466,11 @@ static void removeDuplicateItems(LLInventoryModel::item_array_t& items)
 static void onWearableAssetFetch(LLWearable* wearable, void* data)
 {
 	LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data;
-	
+	if (holder->mFired)
+	{
+		llwarns << "called after holder fired" << llendl;
+	}
+
 	if(wearable)
 	{
 		for (LLWearableHoldingPattern::found_list_t::iterator iter = holder->mFoundList.begin();
@@ -506,8 +544,32 @@ void LLAppearanceManager::changeOutfit(bool proceed, const LLUUID& category, boo
 	LLAppearanceManager::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,
 											  LLPointer<LLInventoryCallback> cb)
+{
+	LLInventoryCategory *src_cat = gInventory.getCategory(src_id);
+	if (!src_cat)
+	{
+		llwarns << "folder not found for src " << src_id.asString() << llendl;
+		return;
+	}
+	LLUUID parent_id = dst_id;
+	if(parent_id.isNull())
+	{
+		parent_id = gInventory.getRootFolderID();
+	}
+	LLUUID subfolder_id = gInventory.createNewCategory( parent_id,
+														LLFolderType::FT_NONE,
+														src_cat->getName());
+	shallowCopyCategoryContents(src_id, subfolder_id, cb);
+
+	gInventory.notifyObservers();
+}
+
+// Copy contents of src_id to dst_id.
+void LLAppearanceManager::shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id,
+													  LLPointer<LLInventoryCallback> cb)
 {
 	LLInventoryModel::cat_array_t cats;
 	LLInventoryModel::item_array_t items;
@@ -604,6 +666,11 @@ void LLAppearanceManager::filterWearableItems(
 		if (!item->isWearableType())
 			continue;
 		EWearableType type = item->getWearableType();
+		if(type < 0 || type >= WT_COUNT)
+		{
+			LL_WARNS("Appearance") << "Invalid wearable type. Inventory type does not match wearable flag bitfield." << LL_ENDL;
+			continue;
+		}
 		items_by_type[type].push_back(item);
 	}
 
@@ -1340,6 +1407,11 @@ BOOL LLAppearanceManager::getIsInCOF(const LLUUID& obj_id) const
 BOOL LLAppearanceManager::getIsProtectedCOFItem(const LLUUID& obj_id) const
 {
 	if (!getIsInCOF(obj_id)) return FALSE;
+
+	// For now, don't allow direct deletion from the COF.  Instead, force users
+	// to choose "Detach" or "Take Off".
+	return TRUE;
+	/*
 	const LLInventoryObject *obj = gInventory.getObject(obj_id);
 	if (!obj) return FALSE;
 
@@ -1350,4 +1422,5 @@ BOOL LLAppearanceManager::getIsProtectedCOFItem(const LLUUID& obj_id) const
 	if (obj->getActualType() == LLAssetType::AT_LINK_FOLDER) return TRUE;
 
 	return FALSE;
+	*/
 }
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 38d1e01d08521e0309b2432744bde7c909773b33..5fdff45735c37aeb4684c2ddb9ed8a30b0dba93e 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -35,6 +35,8 @@
 
 #include "llsingleton.h"
 #include "llinventorymodel.h"
+#include "llinventoryobserver.h"
+#include "llviewerinventory.h"
 #include "llcallbacklist.h"
 
 class LLWearable;
@@ -54,10 +56,14 @@ class LLAppearanceManager: public LLSingleton<LLAppearanceManager>
 	void wearOutfitByName(const std::string& name);
 	void changeOutfit(bool proceed, const LLUUID& category, bool append);
 
-	// Copy all items in a category.
+	// Copy all items and the src category itself.
 	void shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id,
 							 LLPointer<LLInventoryCallback> cb);
 
+	// Copy all items in a category.
+	void shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id,
+									 LLPointer<LLInventoryCallback> cb);
+
 	// Find the Current Outfit folder.
 	const LLUUID getCOF() const;
 
@@ -144,6 +150,8 @@ class LLAppearanceManager: public LLSingleton<LLAppearanceManager>
 
 #define SUPPORT_ENSEMBLES 0
 
+LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id,const std::string& name);
+
 // Shim class and template function to allow arbitrary boost::bind
 // expressions to be run as one-time idle callbacks.
 template <typename T>
@@ -212,4 +220,103 @@ void doOnIdleRepeating(T callable)
 	gIdleCallbacks.addFunction(&OnIdleCallbackRepeating<T>::onIdle,cb_functor);
 }
 
+template <class T>
+class CallAfterCategoryFetchStage2: public LLInventoryFetchObserver
+{
+public:
+	CallAfterCategoryFetchStage2(T callable):
+		mCallable(callable)
+	{
+	}
+	~CallAfterCategoryFetchStage2()
+	{
+	}
+	virtual void done()
+	{
+		gInventory.removeObserver(this);
+		doOnIdle(mCallable);
+		delete this;
+	}
+protected:
+	T mCallable;
+};
+
+template <class T>
+class CallAfterCategoryFetchStage1: public LLInventoryFetchDescendentsObserver
+{
+public:
+	CallAfterCategoryFetchStage1(T callable):
+		mCallable(callable)
+	{
+	}
+	~CallAfterCategoryFetchStage1()
+	{
+	}
+	virtual void 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.
+		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;
+		}
+
+		CallAfterCategoryFetchStage2<T> *stage2 = new CallAfterCategoryFetchStage2<T>(mCallable);
+		LLInventoryFetchObserver::item_ref_t ids;
+		for(S32 i = 0; i < count; ++i)
+		{
+			ids.push_back(item_array.get(i)->getUUID());
+		}
+		
+		gInventory.removeObserver(this);
+		
+		// do the fetch
+		stage2->fetchItems(ids);
+		if(stage2->isEverythingComplete())
+		{
+			// everything is already here - call done.
+			stage2->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(stage2);
+		}
+		delete this;
+	}
+protected:
+	T mCallable;
+};
+
+template <class T> 
+void callAfterCategoryFetch(const LLUUID& cat_id, T callable)
+{
+	CallAfterCategoryFetchStage1<T> *stage1 = new CallAfterCategoryFetchStage1<T>(callable);
+	LLInventoryFetchDescendentsObserver::folder_ref_t folders;
+	folders.push_back(cat_id);
+	stage1->fetchDescendents(folders);
+	if (stage1->isEverythingComplete())
+	{
+		stage1->done();
+	}
+	else
+	{
+		gInventory.addObserver(stage1);
+	}
+}
+
 #endif
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 2d694eefd350a8ab2e71f114463c4700b0c00cc5..00a9e4d7450a73c85d4e48a84ac357d7457b8aad 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -40,6 +40,7 @@
 #include "lluictrlfactory.h"
 #include "lltexteditor.h"
 #include "llerrorcontrol.h"
+#include "lleventtimer.h"
 #include "llviewertexturelist.h"
 #include "llgroupmgr.h"
 #include "llagent.h"
@@ -1353,9 +1354,6 @@ bool LLAppViewer::cleanup()
 
 	llinfos << "Cache files removed" << llendflush;
 
-
-	cleanup_menus();
-
 	// Wait for any pending VFS IO
 	while (1)
 	{
@@ -1681,7 +1679,7 @@ bool LLAppViewer::initThreads()
 	// Image decoding
 	LLAppViewer::sImageDecodeThread = new LLImageDecodeThread(enable_threads && true);
 	LLAppViewer::sTextureCache = new LLTextureCache(enable_threads && true);
-	LLAppViewer::sTextureFetch = new LLTextureFetch(LLAppViewer::getTextureCache(), sImageDecodeThread, enable_threads && false);
+	LLAppViewer::sTextureFetch = new LLTextureFetch(LLAppViewer::getTextureCache(), sImageDecodeThread, enable_threads && true);
 	LLImage::initClass();
 
 	if (LLFastTimer::sLog || LLFastTimer::sMetricLog)
@@ -1935,7 +1933,6 @@ bool LLAppViewer::initConfiguration()
 //	LLFirstUse::addConfigVariable("FirstSandbox");
 //	LLFirstUse::addConfigVariable("FirstFlexible");
 //	LLFirstUse::addConfigVariable("FirstDebugMenus");
-//	LLFirstUse::addConfigVariable("FirstStreamingMedia");
 //	LLFirstUse::addConfigVariable("FirstSculptedPrim");
 //	LLFirstUse::addConfigVariable("FirstVoice");
 //	LLFirstUse::addConfigVariable("FirstMedia");
@@ -2365,9 +2362,6 @@ bool LLAppViewer::initWindow()
 	// store setting in a global for easy access and modification
 	gNoRender = gSavedSettings.getBOOL("DisableRendering");
 
-	// Hide the splash screen
-	LLSplashScreen::hide();
-
 	// always start windowed
 	BOOL ignorePixelDepth = gSavedSettings.getBOOL("IgnorePixelDepth");
 	gViewerWindow = new LLViewerWindow(gWindowTitle, 
@@ -3010,7 +3004,7 @@ bool LLAppViewer::initCache()
 	// Purge cache if it belongs to an old version
 	else
 	{
-		static const S32 cache_version = 5;
+		static const S32 cache_version = 6;
 		if (gSavedSettings.getS32("LocalCacheVersion") != cache_version)
 		{
 			mPurgeCache = true;
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index a011c5ebfd6f60683b50b37f20161a8ae6b60f84..a915b7fa50c8da0dc88223b4b9d4ed5fce9cc1a8 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -36,6 +36,7 @@
 #include "llallocator.h"
 #include "llcontrol.h"
 #include "llsys.h"			// for LLOSInfo
+#include "lltimer.h"
 
 class LLCommandLineParser;
 class LLFrameTimer;
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 7f20eb02ea7f77e42e7febe70d6946eb611fc44b..9e136b7cfbf7a7cd22caeb3dc94ec4ad483e3586 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -181,7 +181,12 @@ void LLAvatarActions::startIM(const LLUUID& id)
 		return;
 
 	std::string name;
-	gCacheName->getFullName(id, name);
+	if (!gCacheName->getFullName(id, name))
+	{
+		gCacheName->get(id, FALSE, boost::bind(&LLAvatarActions::startIM, id));
+		return;
+	}
+
 	LLUUID session_id = gIMMgr->addSession(name, IM_NOTHING_SPECIAL, id);
 	if (session_id != LLUUID::null)
 	{
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 4c8cec3d30665cdf37df9c2d79073005cdf1622c..93b708f29945db03a13205076f99fc0102dfad41 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -80,6 +80,14 @@ class LLBottomTrayLite
 	{
 		mNearbyChatBar = getChild<LLNearbyChatBar>("chat_bar");
 		mGesturePanel = getChild<LLPanel>("gesture_panel");
+
+		// Hide "show_nearby_chat" button 
+		LLLineEditor* chat_box = mNearbyChatBar->getChatBox();
+		LLUICtrl* show_btn = mNearbyChatBar->getChild<LLUICtrl>("show_nearby_chat");
+		S32 delta_width = show_btn->getRect().getWidth();
+		show_btn->setVisible(FALSE);
+		chat_box->reshape(chat_box->getRect().getWidth() + delta_width, chat_box->getRect().getHeight());
+
 		return TRUE;
 	}
 
@@ -433,6 +441,8 @@ BOOL LLBottomTray::postBuild()
 	mObjectDefaultWidthMap[RS_BUTTON_CAMERA]   = mCamPanel->getRect().getWidth();
 	mObjectDefaultWidthMap[RS_BUTTON_SPEAK]	   = mSpeakPanel->getRect().getWidth();
 
+	mNearbyChatBar->getChatBox()->setContextMenu(NULL);
+
 	return TRUE;
 }
 
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 8cb240c7c2618025aa99f915ce685037456c6adb..0aaaa8e70533cac0d3adcb2e9181346f44ce650a 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -303,8 +303,8 @@ void LLCallFloater::updateSession()
 	refreshParticipantList();
 	updateAgentModeratorState();
 
-	//show floater for voice calls
-	if (!is_local_chat)
+	//show floater for voice calls & only in CONNECTED to voice channel state
+	if (!is_local_chat && LLVoiceChannel::STATE_CONNECTED == voice_channel->getState())
 	{
 		LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
 		bool show_me = !(im_floater && im_floater->getVisible());
@@ -720,7 +720,15 @@ void LLCallFloater::connectToChannel(LLVoiceChannel* channel)
 
 void LLCallFloater::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state)
 {
-	updateState(new_state);
+	// check is voice operational and if it doesn't work hide VCP (EXT-4397)
+	if(LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking())
+	{
+		updateState(new_state);
+	}
+	else
+	{
+		closeFloater();
+	}
 }
 
 void LLCallFloater::updateState(const LLVoiceChannel::EState& new_state)
@@ -749,18 +757,26 @@ void LLCallFloater::reset(const LLVoiceChannel::EState& new_state)
 	mParticipants = NULL;
 	mAvatarList->clear();
 
-	// "loading" is shown in parcel with disabled voice only when state is "ringing"
-	// to avoid showing it in nearby chat vcp all the time- "no_one_near" is now shown there (EXT-4648)
-	bool show_loading = LLVoiceChannel::STATE_RINGING == new_state;
-	if(!show_loading && !LLViewerParcelMgr::getInstance()->allowAgentVoice() && mVoiceType ==  VC_LOCAL_CHAT)
+	// These ifs were added instead of simply showing "loading" to make VCP work correctly in parcels
+	// with disabled voice (EXT-4648 and EXT-4649)
+	if (!LLViewerParcelMgr::getInstance()->allowAgentVoice() && LLVoiceChannel::STATE_HUNG_UP == new_state)
 	{
+		// hides "Leave Call" when call is ended in parcel with disabled voice- hiding usually happens in
+		// updateSession() which won't be called here because connect to nearby voice never happens 
+		childSetVisible("leave_call_btn_panel", false);
+		// setting title to nearby chat an "no one near..." text- because in region with disabled
+		// voice we won't have chance to really connect to nearby, so VCP is changed here manually
+		setTitle(getString("title_nearby"));
 		mAvatarList->setNoItemsCommentText(getString("no_one_near"));
 	}
-	else
+	// "loading" is shown  only when state is "ringing" to avoid showing it in nearby chat vcp
+	// of parcels with disabled voice all the time- "no_one_near" is now shown there (EXT-4648)
+	else if (new_state == LLVoiceChannel::STATE_RINGING)
 	{
 		// update floater to show Loading while waiting for data.
 		mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData"));
 	}
+
 	mAvatarList->setVisible(TRUE);
 	mNonAvatarCaller->setVisible(FALSE);
 
diff --git a/indra/newview/llcallingcard.cpp b/indra/newview/llcallingcard.cpp
index c4b7cee0d564a8a27ab2d4b11bebf4c2993eef8d..cbd9097dba0675dcba4c74679369e509210479b1 100644
--- a/indra/newview/llcallingcard.cpp
+++ b/indra/newview/llcallingcard.cpp
@@ -56,6 +56,7 @@
 #include "llnotifications.h"
 #include "llnotificationsutil.h"
 #include "llresmgr.h"
+#include "llslurl.h"
 #include "llimview.h"
 #include "llviewercontrol.h"
 #include "llviewernetwork.h"
@@ -690,12 +691,8 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online)
 				setBuddyOnline(agent_id,online);
 				if(chat_notify)
 				{
-					std::string full_name;
-					if(gCacheName->getFullName(agent_id, full_name))
-					{
-						notify = TRUE;
-						args["NAME"] = full_name;
-					}
+					notify = TRUE;
+					args["NAME_SLURL"] = LLSLURL::buildCommand("agent", agent_id, "about");
 				}
 			}
 			else
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 855d109784de3fe6c370ec86523042e0fabc016f..6004c9f309beb2c45e481780cdf14e19a3237c6c 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -66,6 +66,8 @@ static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");
 
 const static std::string NEW_LINE(rawstr_to_utf8("\n"));
 
+const static U32 LENGTH_OF_TIME_STR = std::string("12:00").length();
+
 // support for secondlife:///app/objectim/{UUID}/ SLapps
 class LLObjectIMHandler : public LLCommandHandler
 {
@@ -116,7 +118,7 @@ class LLChatHistoryHeader: public LLPanel
 	//*TODO remake it using mouse enter/leave and static LLHandle<LLIconCtrl> to add/remove as a child
 	BOOL handleToolTip(S32 x, S32 y, MASK mask)
 	{
-		LLViewerTextEditor* name = getChild<LLViewerTextEditor>("user_name");
+		LLTextBase* name = getChild<LLTextBase>("user_name");
 		if (name && name->parentPointInView(x, y) && mAvatarID.notNull() && SYSTEM_FROM != mFrom)
 		{
 
@@ -257,7 +259,7 @@ class LLChatHistoryHeader: public LLPanel
 			mSourceType = CHAT_SOURCE_SYSTEM;
 		}
 
-		LLTextEditor* userName = getChild<LLTextEditor>("user_name");
+		LLTextBox* userName = getChild<LLTextBox>("user_name");
 
 		userName->setReadOnlyColor(style_params.readonly_color());
 		userName->setColor(style_params.color());
@@ -284,7 +286,12 @@ class LLChatHistoryHeader: public LLPanel
 
 		if(!chat.mFromID.isNull())
 		{
+			if(mSourceType != CHAT_SOURCE_AGENT)
+				icon->setValue(LLSD("OBJECT_Icon"));
+			else
 			icon->setValue(chat.mFromID);
+
+			
 		}
 		else if (userName->getValue().asString()==LLTrans::getString("SECOND_LIFE"))
 		{
@@ -295,7 +302,7 @@ class LLChatHistoryHeader: public LLPanel
 
 	/*virtual*/ void draw()
 	{
-		LLTextEditor* user_name = getChild<LLTextEditor>("user_name");
+		LLTextBox* user_name = getChild<LLTextBox>("user_name");
 		LLTextBox* time_box = getChild<LLTextBox>("time_box");
 
 		LLRect user_name_rect = user_name->getRect();
@@ -437,6 +444,7 @@ LLChatHistory::LLChatHistory(const LLChatHistory::Params& p)
 	editor_params.rect = getLocalRect();
 	editor_params.follows.flags = FOLLOWS_ALL;
 	editor_params.enabled = false; // read only
+	editor_params.show_context_menu = "true";
 	mEditor = LLUICtrlFactory::create<LLTextEditor>(editor_params, this);
 }
 
@@ -531,6 +539,7 @@ void LLChatHistory::clear()
 void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LLStyle::Params& input_append_params)
 {
 	bool use_plain_text_chat_history = args["use_plain_text_chat_history"].asBoolean();
+
 	if (!mEditor->scrolledToEnd() && chat.mFromID != gAgent.getID() && !chat.mFromName.empty())
 	{
 		mUnreadChatSources.insert(chat.mFromName);
@@ -578,9 +587,16 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
 	bool irc_me = prefix == "/me " || prefix == "/me'";
 
 	// Delimiter after a name in header copy/past and in plain text mode
-	std::string delimiter = (chat.mChatType != CHAT_TYPE_SHOUT && chat.mChatType != CHAT_TYPE_WHISPER)
-		? ": "
-		: " ";
+	std::string delimiter = ": ";
+	std::string shout = LLTrans::getString("shout");
+	std::string whisper = LLTrans::getString("whisper");
+	if (chat.mChatType == CHAT_TYPE_SHOUT || 
+		chat.mChatType == CHAT_TYPE_WHISPER ||
+		chat.mText.compare(0, shout.length(), shout) == 0 ||
+		chat.mText.compare(0, whisper.length(), whisper) == 0)
+	{
+		delimiter = " ";
+	}
 
 	// Don't add any delimiter after name in irc styled messages
 	if (irc_me || chat.mChatStyle == CHAT_STYLE_IRC)
@@ -589,6 +605,14 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
 		style_params.font.style = "ITALIC";
 	}
 
+	//*HACK we graying out chat history by graying out messages that contains full date in a time string
+	bool message_from_log = chat.mTimeStr.length() > LENGTH_OF_TIME_STR; 
+	if (message_from_log)
+	{
+		style_params.color(LLColor4::grey);
+		style_params.readonly_color(LLColor4::grey);
+	}
+
 	if (use_plain_text_chat_history)
 	{
 		mEditor->appendText("[" + chat.mTimeStr + "] ", mEditor->getText().size() != 0, style_params);
@@ -624,10 +648,10 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
 				mEditor->appendText("<nolink>" + chat.mFromName + "</nolink>"  + delimiter,
 									false, link_params);
 			}
-			else if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() )
+			else if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() && !message_from_log)
 			{
 				LLStyle::Params link_params(style_params);
-				link_params.fillFrom(LLStyleMap::instance().lookupAgent(chat.mFromID));
+				link_params.overwriteFrom(LLStyleMap::instance().lookupAgent(chat.mFromID));
 				// Convert the name to a hotlink and add to message.
 				mEditor->appendText(chat.mFromName + delimiter, false, link_params);
 			}
diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp
index f772aea4bd846d8ed8915fbed5f6ea192f68bb9b..e164aa8fc45f6cdcc8c9af0659b9f4b6617e95bf 100644
--- a/indra/newview/llchatitemscontainerctrl.cpp
+++ b/indra/newview/llchatitemscontainerctrl.cpp
@@ -321,7 +321,10 @@ void LLNearbyChatToastPanel::draw()
 		if(icon)
 		{
 			icon->setDrawTooltip(mSourceType == CHAT_SOURCE_AGENT);
-			icon->setValue(mFromID);
+			if(mSourceType == CHAT_SOURCE_AGENT)
+				icon->setValue(mFromID);
+			else
+				icon->setValue(LLSD("OBJECT_Icon"));
 		}
 		mIsDirty = false;
 	}
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index f646bcccb581b85fa9d7708cca7aee261925230e..8efa814a2eb1b95f38eda7f252634e73571610ad 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -36,6 +36,7 @@
 #include "llagent.h"
 #include "llavataractions.h"
 #include "llbottomtray.h"
+#include "lleventtimer.h"
 #include "llgroupactions.h"
 #include "lliconctrl.h"
 #include "llimfloater.h"
@@ -545,6 +546,7 @@ void LLIMChiclet::toggleSpeakerControl()
 	}
 
 	setRequiredWidth();
+	mSpeakerCtrl->setSpeakerId(LLUUID::null);
 	mSpeakerCtrl->setVisible(getShowSpeaker());
 }
 
@@ -954,7 +956,10 @@ LLIMGroupChiclet::~LLIMGroupChiclet()
 
 void LLIMGroupChiclet::draw()
 {
-	switchToCurrentSpeaker();
+	if(getShowSpeaker())
+	{
+		switchToCurrentSpeaker();
+	}
 	LLIMChiclet::draw();
 }
 
@@ -1154,10 +1159,10 @@ void im_chiclet_callback(LLChicletPanel* panel, const LLSD& data){
 
 void object_chiclet_callback(const LLSD& data)
 {
-	LLUUID object_id = data["object_id"];
+	LLUUID notification_id = data["notification_id"];
 	bool new_message = data["new_message"];
 
-	std::list<LLChiclet*> chiclets = LLIMChiclet::sFindChicletsSignal(object_id);
+	std::list<LLChiclet*> chiclets = LLIMChiclet::sFindChicletsSignal(notification_id);
 	std::list<LLChiclet *>::iterator iter;
 	for (iter = chiclets.begin(); iter != chiclets.end(); iter++)
 	{
@@ -1889,12 +1894,8 @@ void LLScriptChiclet::setSessionId(const LLUUID& session_id)
 	setShowNewMessagesIcon( getSessionId() != session_id );
 
 	LLIMChiclet::setSessionId(session_id);
-	LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(session_id);
-	LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id);
-	if(notification)
-	{
-		setToolTip(notification->getSubstitutions()["TITLE"].asString());
-	}
+
+	setToolTip(LLScriptFloaterManager::getObjectName(session_id));
 }
 
 void LLScriptChiclet::setCounter(S32 counter)
@@ -1943,13 +1944,10 @@ void LLInvOfferChiclet::setSessionId(const LLUUID& session_id)
 {
 	setShowNewMessagesIcon( getSessionId() != session_id );
 
+	setToolTip(LLScriptFloaterManager::getObjectName(session_id));
+
 	LLIMChiclet::setSessionId(session_id);
-	LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(session_id);
-	LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id);
-	if(notification)
-	{
-		setToolTip(notification->getSubstitutions()["TITLE"].asString());
-	}
+	LLNotificationPtr notification = LLNotifications::getInstance()->find(session_id);
 
 	if ( notification && notification->getName() == INVENTORY_USER_OFFER )
 	{
diff --git a/indra/newview/llcurrencyuimanager.cpp b/indra/newview/llcurrencyuimanager.cpp
index 00c05445e1a632276e4d5e0bc4243e625e7a1866..be6c15eab4a036be7548f0913d48c09aaf8f4a2e 100644
--- a/indra/newview/llcurrencyuimanager.cpp
+++ b/indra/newview/llcurrencyuimanager.cpp
@@ -426,7 +426,7 @@ void LLCurrencyUIManager::Impl::prepare()
 	LLLineEditor* lindenAmount = mPanel.getChild<LLLineEditor>("currency_amt");
 	if (lindenAmount)
 	{
-		lindenAmount->setPrevalidate(LLLineEditor::prevalidateNonNegativeS32);
+		lindenAmount->setPrevalidate(LLTextValidate::validateNonNegativeS32);
 		lindenAmount->setKeystrokeCallback(onCurrencyKey, this);
 	}
 }
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp
index d60330024afedf42cb35e2dd6e08c7a19c141c29..9fbc3408d77ac3461f7b6d5c212b91b5cf5588d0 100644
--- a/indra/newview/lldrawable.cpp
+++ b/indra/newview/lldrawable.cpp
@@ -1049,9 +1049,13 @@ LLSpatialBridge::LLSpatialBridge(LLDrawable* root, BOOL render_by_group, U32 dat
 
 	llassert(mDrawable);
 	llassert(mDrawable->getRegion());
-	llassert(mDrawable->getRegion()->getSpatialPartition(mPartitionType));
+	LLSpatialPartition *part = mDrawable->getRegion()->getSpatialPartition(mPartitionType);
+	llassert(part);
 	
-	mDrawable->getRegion()->getSpatialPartition(mPartitionType)->put(this);
+	if (part)
+	{
+		part->put(this);
+	}
 }
 
 LLSpatialBridge::~LLSpatialBridge()
@@ -1367,10 +1371,14 @@ BOOL LLSpatialBridge::updateMove()
 {
 	llassert(mDrawable);
 	llassert(mDrawable->getRegion());
-	llassert(mDrawable->getRegion()->getSpatialPartition(mPartitionType));
+	LLSpatialPartition* part = mDrawable->getRegion()->getSpatialPartition(mPartitionType);
+	llassert(part);
 
 	mOctree->balance();
-	mDrawable->getRegion()->getSpatialPartition(mPartitionType)->move(this, getSpatialGroup(), TRUE);
+	if (part)
+	{
+		part->move(this, getSpatialGroup(), TRUE);
+	}
 	return TRUE;
 }
 
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index 6d7736141494967cfee8e6aa2aab8f54e5aad250..7be6e82251717b97f76ac671609d28e5dba20fc6 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -180,6 +180,7 @@ void LLDrawPoolAlpha::render(S32 pass)
 
 	if (LLPipeline::sFastAlpha && !deferred_render)
 	{
+		LLGLDisable blend_disable(GL_BLEND);
 		gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.33f);
 		if (mVertexShaderLevel > 0)
 		{
diff --git a/indra/newview/lldriverparam.cpp b/indra/newview/lldriverparam.cpp
index 3961afe9af22546b381d92bded3da2db159a2a82..830e975e8abded870bde30607d96cb91daea75ea 100644
--- a/indra/newview/lldriverparam.cpp
+++ b/indra/newview/lldriverparam.cpp
@@ -39,6 +39,7 @@
 #include "llvoavatarself.h"
 #include "llagent.h"
 #include "llwearable.h"
+#include "llagentwearables.h"
 
 //-----------------------------------------------------------------------------
 // LLDriverParamInfo
@@ -431,6 +432,12 @@ const LLVector3*	LLDriverParam::getNextDistortion(U32 *index, LLPolyMesh **poly_
 		}
 	}
 
+	llassert(driven);
+	if (!driven)
+	{
+		return NULL; // shouldn't happen, but...
+	}
+
 	// We're already in the middle of a param's distortions, so get the next one.
 	const LLVector3* v = driven->mParam->getNextDistortion( index, poly_mesh );
 	if( (!v) && (iter != mDriven.end()) )
@@ -528,6 +535,38 @@ void LLDriverParam::resetDrivenParams()
 	mDriven.reserve(getInfo()->mDrivenInfoList.size());
 }
 
+void LLDriverParam::updateCrossDrivenParams(EWearableType driven_type)
+{
+	bool needs_update = (getWearableType()==driven_type);
+
+	// if the driver has a driven entry for the passed-in wearable type, we need to refresh the value
+	for( entry_list_t::iterator iter = mDriven.begin(); iter != mDriven.end(); iter++ )
+	{
+		LLDrivenEntry* driven = &(*iter);
+		if (driven && driven->mParam && driven->mParam->getCrossWearable() && driven->mParam->getWearableType() == driven_type)
+		{
+			needs_update = true;
+		}
+	}
+
+
+	if (needs_update)
+	{
+		EWearableType driver_type = (EWearableType)getWearableType();
+		
+		// If we've gotten here, we've added a new wearable of type "type"
+		// Thus this wearable needs to get updates from the driver wearable.
+		// The call to setVisualParamWeight seems redundant, but is necessary
+		// as the number of driven wearables has changed since the last update. -Nyx
+		LLWearable *wearable = gAgentWearables.getTopWearable(driver_type);
+		if (wearable)
+		{
+			wearable->setVisualParamWeight(mID, wearable->getVisualParamWeight(mID), false);
+		}
+	}
+}
+
+
 //-----------------------------------------------------------------------------
 // getDrivenWeight()
 //-----------------------------------------------------------------------------
diff --git a/indra/newview/lldriverparam.h b/indra/newview/lldriverparam.h
index 4e2daf5ba79409a76976257e8ea90ff750289c60..e963a2d55a4faba13292a29791d6812a0f46e07e 100644
--- a/indra/newview/lldriverparam.h
+++ b/indra/newview/lldriverparam.h
@@ -34,6 +34,7 @@
 #define LL_LLDRIVERPARAM_H
 
 #include "llviewervisualparam.h"
+#include "llwearabledictionary.h"
 
 class LLVOAvatar;
 class LLWearable;
@@ -93,6 +94,7 @@ class LLDriverParam : public LLViewerVisualParam
 
 	void					setWearable(LLWearable *wearablep);
 	void					setAvatar(LLVOAvatar *avatarp);
+	void					updateCrossDrivenParams(EWearableType driven_type);
 
 	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable) const;
 
@@ -112,6 +114,7 @@ class LLDriverParam : public LLViewerVisualParam
 	/*virtual*/ LLVector3			getVertexDistortion(S32 index, LLPolyMesh *poly_mesh);
 	/*virtual*/ const LLVector3*	getFirstDistortion(U32 *index, LLPolyMesh **poly_mesh);
 	/*virtual*/ const LLVector3*	getNextDistortion(U32 *index, LLPolyMesh **poly_mesh);
+
 protected:
 	F32 getDrivenWeight(const LLDrivenEntry* driven, F32 input_weight);
 	void setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool upload_bake);
diff --git a/indra/newview/lleventpoll.cpp b/indra/newview/lleventpoll.cpp
index eca9f8aba258295e5fb1236970d3cff9b414d15f..cc4e1a186844eecbea764f29df89cd1cb87f50ff 100644
--- a/indra/newview/lleventpoll.cpp
+++ b/indra/newview/lleventpoll.cpp
@@ -39,7 +39,7 @@
 #include "llhttpclient.h"
 #include "llhttpstatuscodes.h"
 #include "llsdserialize.h"
-#include "lltimer.h"
+#include "lleventtimer.h"
 #include "llviewerregion.h"
 #include "message.h"
 #include "lltrans.h"
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 965ac1cad0b11cf40ca5833be8446d0ac57e6f8a..c0a3eb131604af8fe393d4d5b1afa88a22f719ab 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -301,7 +301,8 @@ void LLFace::switchTexture(LLViewerTexture* new_texture)
 
 	if(!new_texture)
 	{
-		llerrs << "Can not switch to a null texture." << llendl ;
+		llerrs << "Can not switch to a null texture." << llendl;
+		return;
 	}
 	new_texture->addTextureStats(mTexture->getMaxVirtualSize()) ;
 
@@ -1040,17 +1041,20 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 
 	if (rebuild_color)
 	{
-		GLfloat alpha[4] =
-		{
-			0.00f,
-			0.25f,
-			0.5f,
-			0.75f
-		};
-
-		if (getPoolType() != LLDrawPool::POOL_ALPHA && (LLPipeline::sRenderDeferred || (LLPipeline::sRenderBump && tep->getShiny())))
+		if (tep)
 		{
-			color.mV[3] = U8 (alpha[tep->getShiny()] * 255);
+			GLfloat alpha[4] =
+			{
+				0.00f,
+				0.25f,
+				0.5f,
+				0.75f
+			};
+			
+			if (getPoolType() != LLDrawPool::POOL_ALPHA && (LLPipeline::sRenderDeferred || (LLPipeline::sRenderBump && tep->getShiny())))
+			{
+				color.mV[3] = U8 (alpha[tep->getShiny()] * 255);
+			}
 		}
 	}
 
@@ -1323,6 +1327,21 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 	return TRUE;
 }
 
+//check if the face has a media
+BOOL LLFace::hasMedia() const 
+{
+	if(mHasMedia)
+	{
+		return TRUE ;
+	}
+	if(mTexture.notNull()) 
+	{
+		return mTexture->hasParcelMedia() ;  //if has a parcel media
+	}
+
+	return FALSE ; //no media.
+}
+
 const F32 LEAST_IMPORTANCE = 0.05f ;
 const F32 LEAST_IMPORTANCE_FOR_LARGE_IMAGE = 0.3f ;
 
@@ -1332,7 +1351,7 @@ F32 LLFace::getTextureVirtualSize()
 	F32 cos_angle_to_view_dir;
 	mPixelArea = calcPixelArea(cos_angle_to_view_dir, radius);
 
-	if (mPixelArea <= 0)
+	if (mPixelArea < 0.0001f)
 	{
 		return 0.f;
 	}
@@ -1377,14 +1396,38 @@ F32 LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius)
 {
 	//get area of circle around face
 	LLVector3 center = getPositionAgent();
-	LLVector3 size = (mExtents[1] - mExtents[0]) * 0.5f;
-	
+	LLVector3 size = (mExtents[1] - mExtents[0]) * 0.5f;	
 	LLViewerCamera* camera = LLViewerCamera::getInstance();
+
+	//if has media, check if the face is out of the view frustum.
+	BOOL has_media = hasMedia() ;
+	if(has_media && !camera->AABBInFrustum(center, size)) 
+	{
+		mImportanceToCamera = 0.f ;
+		return 0.f ;
+	}
+
+	F32 size_squared = size.lengthSquared() ;
 	LLVector3 lookAt = center - camera->getOrigin();
 	F32 dist = lookAt.normVec() ;
+	cos_angle_to_view_dir = lookAt * camera->getXAxis() ;	
+	if(has_media)
+	{
+		if(cos_angle_to_view_dir > camera->getCosHalfFov()) //the center is within the view frustum
+		{
+			cos_angle_to_view_dir = 1.0f ;
+		}
+		else
+		{		
+			if(dist * dist * (lookAt - camera->getXAxis()).lengthSquared() < size_squared)
+			{
+				cos_angle_to_view_dir = 1.0f ;
+			}
+		}
+	}
 
 	//get area of circle around node
-	F32 app_angle = atanf(size.length()/dist);
+	F32 app_angle = atanf(fsqrtf(size_squared) / dist);
 	radius = app_angle*LLDrawable::sCurPixelAngle;
 	F32 face_area = radius*radius * 3.14159f;
 
@@ -1394,8 +1437,7 @@ F32 LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius)
 		mImportanceToCamera = 1.0f ;
 	}
 	else
-	{
-		cos_angle_to_view_dir = lookAt * camera->getXAxis() ;	
+	{		
 		mImportanceToCamera = LLFace::calcImportanceToCamera(cos_angle_to_view_dir, dist) ;
 	}
 
diff --git a/indra/newview/llface.h b/indra/newview/llface.h
index e12b64a2f2945da478e56c67adc458247c4e4e2b..bf658dc00c0a3e98052b39bdda724d2372fa4d89 100644
--- a/indra/newview/llface.h
+++ b/indra/newview/llface.h
@@ -194,6 +194,9 @@ class LLFace
 	F32         getTextureVirtualSize() ;
 	F32         getImportanceToCamera()const {return mImportanceToCamera ;}
 
+	void        setHasMedia(bool has_media)  { mHasMedia = has_media ;}
+	BOOL        hasMedia() const ;
+
 	//for atlas
 	LLTextureAtlasSlot*   getAtlasInfo() ;
 	void                  setAtlasInUse(BOOL flag);
@@ -262,7 +265,7 @@ class LLFace
 	//based on the distance from the face to the view point and the angle from the face center to the view direction.
 	F32         mImportanceToCamera ; 
 	F32         mBoundingSphereRadius ;
-
+	bool        mHasMedia ;
 
 	//atlas
 	LLPointer<LLTextureAtlasSlot> mAtlasInfop ;
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index a5b62439f44606a873801441b900ca1b01e4c301..bf7c73548833c360e999392861a6a858d483f363 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -34,7 +34,6 @@
 
 #include "llfavoritesbar.h"
 
-#include "llbutton.h"
 #include "llfloaterreg.h"
 #include "llfocusmgr.h"
 #include "llinventory.h"
@@ -48,7 +47,6 @@
 #include "llclipboard.h"
 #include "llinventoryclipboard.h"
 #include "llinventorybridge.h"
-#include "llinventorymodel.h"
 #include "llfloaterworldmap.h"
 #include "lllandmarkactions.h"
 #include "llnotificationsutil.h"
@@ -300,6 +298,20 @@ class LLFavoriteLandmarkToggleableMenu : public LLToggleableMenu
 		return TRUE;
 	}
 
+	void setVisible(BOOL b)
+	{
+		// Overflow menu shouldn't hide when it still has focus. See EXT-4217.
+		if (!b && hasFocus())
+			return;
+		LLToggleableMenu::setVisible(b);
+		setFocus(b);
+	}
+
+	void onFocusLost()
+	{
+		setVisible(FALSE);
+	}
+
 protected:
 	LLFavoriteLandmarkToggleableMenu(const LLToggleableMenu::Params& p):
 		LLToggleableMenu(p)
@@ -630,8 +642,8 @@ void LLFavoritesBarCtrl::draw()
 
 	if (mShowDragMarker)
 	{
-		S32 w = mImageDragIndication->getWidth() / 2;
-		S32 h = mImageDragIndication->getHeight() / 2;
+		S32 w = mImageDragIndication->getWidth();
+		S32 h = mImageDragIndication->getHeight();
 
 		if (mLandingTab)
 		{
@@ -674,7 +686,14 @@ void LLFavoritesBarCtrl::updateButtons()
 	{
 		return;
 	}
-
+	if(mItems.empty())
+	{
+		mBarLabel->setVisible(TRUE);
+	}
+	else
+	{
+		mBarLabel->setVisible(FALSE);
+	}
 	const child_list_t* childs = getChildList();
 	child_list_const_iter_t child_it = childs->begin();
 	int first_changed_item_index = 0;
@@ -720,14 +739,22 @@ void LLFavoritesBarCtrl::updateButtons()
 			}
 		}
 		// we have to remove ChevronButton to make sure that the last item will be LandmarkButton to get the right aligning
+		// keep in mind that we are cutting all buttons in space between the last visible child of favbar and ChevronButton
 		if (mChevronButton->getParent() == this)
 		{
 			removeChild(mChevronButton);
 		}
 		int last_right_edge = 0;
+		//calculate new buttons offset
 		if (getChildList()->size() > 0)
 		{
-			last_right_edge = getChildList()->back()->getRect().mRight;
+			//find last visible child to get the rightest button offset
+			child_list_const_reverse_iter_t last_visible_it = std::find_if(childs->rbegin(), childs->rend(), 
+					std::mem_fun(&LLView::getVisible));
+			if(last_visible_it != childs->rend())
+			{
+				last_right_edge = (*last_visible_it)->getRect().mRight;
+			}
 		}
 		//last_right_edge is saving coordinates
 		LLButton* last_new_button = NULL;
@@ -764,6 +791,15 @@ void LLFavoritesBarCtrl::updateButtons()
 			mChevronButton->setRect(rect);
 			mChevronButton->setVisible(TRUE);
 		}
+		// Update overflow menu
+		LLToggleableMenu* overflow_menu = static_cast <LLToggleableMenu*> (mPopupMenuHandle.get());
+		if (overflow_menu && overflow_menu->getVisible())
+		{
+			overflow_menu->setFocus(FALSE);
+			overflow_menu->setVisible(FALSE);
+			if (mUpdateDropDownItems)
+				showDropDownMenu();
+		}
 	}
 	else
 	{
@@ -879,6 +915,8 @@ void LLFavoritesBarCtrl::showDropDownMenu()
 
 	if (menu)
 	{
+		// Release focus to allow changing of visibility.
+		menu->setFocus(FALSE);
 		if (!menu->toggleVisibility())
 			return;
 
@@ -1226,8 +1264,11 @@ LLInventoryModel::item_array_t::iterator LLFavoritesBarCtrl::findItemByUUID(LLIn
 void LLFavoritesBarCtrl::insertBeforeItem(LLInventoryModel::item_array_t& items, const LLUUID& beforeItemId, LLViewerInventoryItem* insertedItem)
 {
 	LLViewerInventoryItem* beforeItem = gInventory.getItem(beforeItemId);
-
-	items.insert(findItemByUUID(items, beforeItem->getUUID()), insertedItem);
+	llassert(beforeItem);
+	if (beforeItem)
+	{
+		items.insert(findItemByUUID(items, beforeItem->getUUID()), insertedItem);
+	}
 }
 
 // EOF
diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp
index fb724f30e072b604995307db09fa685d0d2fd723..fbb90c69f3880b321d75a6618eeb03addbc6e5c8 100644
--- a/indra/newview/llfeaturemanager.cpp
+++ b/indra/newview/llfeaturemanager.cpp
@@ -287,6 +287,7 @@ BOOL LLFeatureManager::loadFeatureTables()
 			if (!flp)
 			{
 				LL_ERRS("RenderInit") << "Specified parameter before <list> keyword!" << LL_ENDL;
+				return FALSE;
 			}
 			S32 available;
 			F32 recommended;
diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp
index 9496e947803d3d4db8f48dd419ab7928263337e4..ecb6254f8a6e0817349c4ad493dde983bb914022 100644
--- a/indra/newview/llfloatercamera.cpp
+++ b/indra/newview/llfloatercamera.cpp
@@ -65,7 +65,7 @@ class LLPanelCameraZoom
 	LLPanelCameraZoom();
 
 	/* virtual */ BOOL	postBuild();
-	/* virtual */ void	onOpen(const LLSD& key);
+	/* virtual */ void	draw();
 
 protected:
 	void	onZoomPlusHeldDown();
@@ -73,7 +73,6 @@ class LLPanelCameraZoom
 	void	onSliderValueChanged();
 
 private:
-	F32			mSavedSliderVal;
 	LLButton*	mPlusBtn;
 	LLButton*	mMinusBtn;
 	LLSlider*	mSlider;
@@ -88,8 +87,7 @@ static LLRegisterPanelClassWrapper<LLPanelCameraZoom> t_camera_zoom_panel("camer
 LLPanelCameraZoom::LLPanelCameraZoom()
 :	mPlusBtn( NULL ),
 	mMinusBtn( NULL ),
-	mSlider( NULL ),
-	mSavedSliderVal(0.f)
+	mSlider( NULL )
 {
 	mCommitCallbackRegistrar.add("Zoom.minus", boost::bind(&LLPanelCameraZoom::onZoomPlusHeldDown, this));
 	mCommitCallbackRegistrar.add("Zoom.plus", boost::bind(&LLPanelCameraZoom::onZoomMinusHeldDown, this));
@@ -101,16 +99,13 @@ BOOL LLPanelCameraZoom::postBuild()
 	mPlusBtn  = getChild <LLButton> ("zoom_plus_btn");
 	mMinusBtn = getChild <LLButton> ("zoom_minus_btn");
 	mSlider   = getChild <LLSlider> ("zoom_slider");
-	mSlider->setMinValue(.0f);
-	mSlider->setMaxValue(8.f);
 	return LLPanel::postBuild();
 }
 
-void LLPanelCameraZoom::onOpen(const LLSD& key)
+void LLPanelCameraZoom::draw()
 {
-	LLVector3d to_focus = gAgent.getPosGlobalFromAgent(LLViewerCamera::getInstance()->getOrigin()) - gAgent.calcFocusPositionTargetGlobal();
-	mSavedSliderVal = 8.f - (F32)to_focus.magVec(); // maximum minus current
-	mSlider->setValue( mSavedSliderVal );
+	mSlider->setValue(gAgent.getCameraZoomFraction());
+	LLPanel::draw();
 }
 
 void LLPanelCameraZoom::onZoomPlusHeldDown()
@@ -135,13 +130,8 @@ void LLPanelCameraZoom::onZoomMinusHeldDown()
 
 void  LLPanelCameraZoom::onSliderValueChanged()
 {
-	F32 val	 = mSlider->getValueF32();
-	F32 rate = val - mSavedSliderVal;
-
-	gAgent.unlockView();
-	gAgent.cameraOrbitIn(rate);
-
-	mSavedSliderVal = val;
+	F32 zoom_level = mSlider->getValueF32();
+	gAgent.setCameraZoomFraction(zoom_level);
 }
 
 void activate_camera_tool()
diff --git a/indra/newview/llfloatercolorpicker.cpp b/indra/newview/llfloatercolorpicker.cpp
index 73b79d8e132db5b1144a78e0beaab372a8f88017..b65457c4ebe040bfd75eddc3b97eae8c9ac1212a 100644
--- a/indra/newview/llfloatercolorpicker.cpp
+++ b/indra/newview/llfloatercolorpicker.cpp
@@ -586,7 +586,7 @@ void LLFloaterColorPicker::draw()
 	gl_triangle_2d ( startX, startY,
 			startX + mLumMarkerSize, startY - mLumMarkerSize,
 				startX + mLumMarkerSize, startY + mLumMarkerSize,
-					LLColor4 ( 0.0f, 0.0f, 0.0f, 1.0f ), TRUE );
+					LLColor4 ( 0.75f, 0.75f, 0.75f, 1.0f ), TRUE );
 
 	// draw luminance slider outline
 	gl_rect_2d ( mLumRegionLeft,
diff --git a/indra/newview/llfloaterfriends.cpp b/indra/newview/llfloaterfriends.cpp
index ccc5cab85a52a3c7e3c022a10e58dcb87c712dd9..4e2633d750a5f4b34ec37b42b39ba7da9f75e45f 100644
--- a/indra/newview/llfloaterfriends.cpp
+++ b/indra/newview/llfloaterfriends.cpp
@@ -58,7 +58,7 @@
 #include "llmenucommands.h"
 #include "llviewercontrol.h"
 #include "llviewermessage.h"
-#include "lltimer.h"
+#include "lleventtimer.h"
 #include "lltextbox.h"
 #include "llvoiceclient.h"
 
diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
index b684e1f98558cdd47d30f177cef82a7e3de2d572..90617a337a15f6aaa2f962a9d2bb949ee0aa1a47 100644
--- a/indra/newview/llfloatergesture.cpp
+++ b/indra/newview/llfloatergesture.cpp
@@ -427,8 +427,13 @@ void LLFloaterGesture::onClickPlay()
 		BOOL inform_server = TRUE;
 		BOOL deactivate_similar = FALSE;
 		LLGestureManager::instance().setGestureLoadedCallback(item_id, boost::bind(&LLFloaterGesture::playGesture, this, item_id));
-		LLGestureManager::instance().activateGestureWithAsset(item_id, gInventory.getItem(item_id)->getAssetUUID(), inform_server, deactivate_similar);
-		LL_DEBUGS("Gesture")<< "Activating gesture with inventory ID: " << item_id <<LL_ENDL;
+		LLViewerInventoryItem *item = gInventory.getItem(item_id);
+		llassert(item);
+		if (item)
+		{
+			LLGestureManager::instance().activateGestureWithAsset(item_id, item->getAssetUUID(), inform_server, deactivate_similar);
+			LL_DEBUGS("Gesture")<< "Activating gesture with inventory ID: " << item_id <<LL_ENDL;
+		}
 	}
 	else
 	{
@@ -510,15 +515,16 @@ void LLFloaterGesture::onCopyPasteAction(const LLSD& command)
 		if(ids.empty() || !gInventory.isCategoryComplete(mGestureFolderID))
 			return;
 		LLInventoryCategory* gesture_dir = gInventory.getCategory(mGestureFolderID);
+		llassert(gesture_dir);
 		LLPointer<GestureCopiedCallback> cb = new GestureCopiedCallback(this);
 
 		for(LLDynamicArray<LLUUID>::iterator it = ids.begin(); it != ids.end(); it++)
 		{
 			LLInventoryItem* item = gInventory.getItem(*it);
-			LLStringUtil::format_map_t string_args;
-			string_args["[COPY_NAME]"] = item->getName();
-			if(item && item->getInventoryType() == LLInventoryType::IT_GESTURE)
+			if(gesture_dir && item && item->getInventoryType() == LLInventoryType::IT_GESTURE)
 			{
+				LLStringUtil::format_map_t string_args;
+				string_args["[COPY_NAME]"] = item->getName();
 				LL_DEBUGS("Gesture")<< "Copying gesture " << item->getName() << "  "<< item->getUUID() << " into "
 										<< gesture_dir->getName() << "  "<< gesture_dir->getUUID() << LL_ENDL;
 				copy_inventory_item(gAgent.getID(), item->getPermissions().getOwner(), item->getUUID(), 
diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp
index c2b0bd18faf2e4e1149f484d2383e1a7d319d942..5294f09e64812195a5f89cb9a48fd3b644e03b26 100644
--- a/indra/newview/llfloatergodtools.cpp
+++ b/indra/newview/llfloatergodtools.cpp
@@ -414,17 +414,17 @@ LLPanelRegionTools::LLPanelRegionTools()
 BOOL LLPanelRegionTools::postBuild()
 {
 	getChild<LLLineEditor>("region name")->setKeystrokeCallback(onChangeSimName, this);
-	childSetPrevalidate("region name", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
-	childSetPrevalidate("estate", &LLLineEditor::prevalidatePositiveS32);
-	childSetPrevalidate("parentestate", &LLLineEditor::prevalidatePositiveS32);
+	childSetPrevalidate("region name", &LLTextValidate::validateASCIIPrintableNoPipe);
+	childSetPrevalidate("estate", &LLTextValidate::validatePositiveS32);
+	childSetPrevalidate("parentestate", &LLTextValidate::validatePositiveS32);
 	childDisable("parentestate");
-	childSetPrevalidate("gridposx", &LLLineEditor::prevalidatePositiveS32);
+	childSetPrevalidate("gridposx", &LLTextValidate::validatePositiveS32);
 	childDisable("gridposx");
-	childSetPrevalidate("gridposy", &LLLineEditor::prevalidatePositiveS32);
+	childSetPrevalidate("gridposy", &LLTextValidate::validatePositiveS32);
 	childDisable("gridposy");
 	
-	childSetPrevalidate("redirectx", &LLLineEditor::prevalidatePositiveS32);
-	childSetPrevalidate("redirecty", &LLLineEditor::prevalidatePositiveS32);
+	childSetPrevalidate("redirectx", &LLTextValidate::validatePositiveS32);
+	childSetPrevalidate("redirecty", &LLTextValidate::validatePositiveS32);
 			 
 	return TRUE;
 }
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 4f73146085c5d7b799bfde99fb0ef56207dc0a7a..f09459d5dbf26d74f5f30659ce0035599531e09a 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -353,7 +353,7 @@ BOOL LLPanelLandGeneral::postBuild()
 {
 	mEditName = getChild<LLLineEditor>("Name");
 	mEditName->setCommitCallback(onCommitAny, this);	
-	childSetPrevalidate("Name", LLLineEditor::prevalidateASCIIPrintableNoPipe);
+	childSetPrevalidate("Name", LLTextValidate::validateASCIIPrintableNoPipe);
 
 	mEditDesc = getChild<LLTextEditor>("Description");
 	mEditDesc->setCommitOnFocusLost(TRUE);
@@ -1111,7 +1111,7 @@ BOOL LLPanelLandObjects::postBuild()
 
 	mCleanOtherObjectsTime->setFocusLostCallback(boost::bind(onLostFocus, _1, this));
 	mCleanOtherObjectsTime->setCommitCallback(onCommitClean, this);
-	childSetPrevalidate("clean other time", LLLineEditor::prevalidateNonNegativeS32);
+	childSetPrevalidate("clean other time", LLTextValidate::validateNonNegativeS32);
 	
 	mBtnRefresh = getChild<LLButton>("Refresh List");
 	mBtnRefresh->setClickedCallback(onClickRefresh, this);
diff --git a/indra/newview/llfloatermediasettings.cpp b/indra/newview/llfloatermediasettings.cpp
index 976af121aedb853bb3f1997ca3bd7d37c13363fc..62ec17f89a06b808623620cbba420fdead7f54c8 100644
--- a/indra/newview/llfloatermediasettings.cpp
+++ b/indra/newview/llfloatermediasettings.cpp
@@ -149,13 +149,14 @@ void LLFloaterMediaSettings::apply()
 	{
 		LLSD settings;
 		sInstance->mPanelMediaSettingsGeneral->preApply();
-		sInstance->mPanelMediaSettingsGeneral->getValues( settings );
+		sInstance->mPanelMediaSettingsGeneral->getValues( settings, false );
 		sInstance->mPanelMediaSettingsSecurity->preApply();
-		sInstance->mPanelMediaSettingsSecurity->getValues( settings );
+		sInstance->mPanelMediaSettingsSecurity->getValues( settings, false );
 		sInstance->mPanelMediaSettingsPermissions->preApply();
-		sInstance->mPanelMediaSettingsPermissions->getValues( settings );
-		LLSelectMgr::getInstance()->selectionSetMedia( LLTextureEntry::MF_HAS_MEDIA );
-		LLSelectMgr::getInstance()->selectionSetMediaData(settings);
+		sInstance->mPanelMediaSettingsPermissions->getValues( settings, false );
+			
+		LLSelectMgr::getInstance()->selectionSetMedia( LLTextureEntry::MF_HAS_MEDIA, settings );
+
 		sInstance->mPanelMediaSettingsGeneral->postApply();
 		sInstance->mPanelMediaSettingsSecurity->postApply();
 		sInstance->mPanelMediaSettingsPermissions->postApply();
@@ -176,6 +177,8 @@ void LLFloaterMediaSettings::onClose(bool app_quitting)
 //static 
 void LLFloaterMediaSettings::initValues( const LLSD& media_settings, bool editable )
 {
+	if (sInstance->hasFocus()) return;
+	
 	sInstance->clearValues(editable);
 	// update all panels with values from simulator
 	sInstance->mPanelMediaSettingsGeneral->
@@ -204,7 +207,7 @@ void LLFloaterMediaSettings::commitFields()
 	if (hasFocus())
 	{
 		LLUICtrl* cur_focus = dynamic_cast<LLUICtrl*>(gFocusMgr.getKeyboardFocus());
-		if (cur_focus->acceptsTextInput())
+		if (cur_focus && cur_focus->acceptsTextInput())
 		{
 			cur_focus->onCommit();
 		};
diff --git a/indra/newview/llfloaternamedesc.cpp b/indra/newview/llfloaternamedesc.cpp
index 810761e034d4b4e694e21aed522cd841addffc97..159ce41b790053ab015009dad22cca20c3fbc623 100644
--- a/indra/newview/llfloaternamedesc.cpp
+++ b/indra/newview/llfloaternamedesc.cpp
@@ -111,7 +111,7 @@ BOOL LLFloaterNameDesc::postBuild()
 	if (NameEditor)
 	{
 		NameEditor->setMaxTextLength(DB_INV_ITEM_NAME_STR_LEN);
-		NameEditor->setPrevalidate(&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+		NameEditor->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
 	}
 
 	y -= llfloor(PREVIEW_LINE_HEIGHT * 1.2f);
@@ -123,7 +123,7 @@ BOOL LLFloaterNameDesc::postBuild()
 	if (DescEditor)
 	{
 		DescEditor->setMaxTextLength(DB_INV_ITEM_DESC_STR_LEN);
-		DescEditor->setPrevalidate(&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+		DescEditor->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
 	}
 
 	y -= llfloor(PREVIEW_LINE_HEIGHT * 1.2f);
diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp
index 90db8988b2015877c661c5a4324cbcf1dac75a22..94b5ebba00410fd13d1f68201f2871a0c7b492bc 100644
--- a/indra/newview/llfloaternotificationsconsole.cpp
+++ b/indra/newview/llfloaternotificationsconsole.cpp
@@ -112,10 +112,15 @@ void LLNotificationChannelPanel::onClickNotification(void* user_data)
 {
 	LLNotificationChannelPanel* self = (LLNotificationChannelPanel*)user_data;
 	if (!self) return;
-	void* data = self->getChild<LLScrollListCtrl>("notifications_list")->getFirstSelected()->getUserdata();
-	if (data)
+	LLScrollListItem* firstselected = self->getChild<LLScrollListCtrl>("notifications_list")->getFirstSelected();
+	llassert(firstselected);
+	if (firstselected)
 	{
-		gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE);
+		void* data = firstselected->getUserdata();
+		if (data)
+		{
+			gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE);
+		}
 	}
 }
 
@@ -124,10 +129,15 @@ void LLNotificationChannelPanel::onClickNotificationReject(void* user_data)
 {
 	LLNotificationChannelPanel* self = (LLNotificationChannelPanel*)user_data;
 	if (!self) return;
-	void* data = self->getChild<LLScrollListCtrl>("notification_rejects_list")->getFirstSelected()->getUserdata();
-	if (data)
+	LLScrollListItem* firstselected = self->getChild<LLScrollListCtrl>("notification_rejects_list")->getFirstSelected();
+	llassert(firstselected);
+	if (firstselected)
 	{
-		gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE);
+		void* data = firstselected->getUserdata();
+		if (data)
+		{
+			gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE);
+		}
 	}
 }
 
diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp
index bdfce36737a2ab72ff9b55866bef743853fa7f9c..7dbcc9555c1cfefec9c6b3e4bbc1c7c02a2cbc71 100644
--- a/indra/newview/llfloaterpay.cpp
+++ b/indra/newview/llfloaterpay.cpp
@@ -201,7 +201,7 @@ BOOL LLFloaterPay::postBuild()
 
 	getChild<LLLineEditor>("amount")->setKeystrokeCallback(&LLFloaterPay::onKeystroke, this);
 	childSetText("amount", last_amount);
-	childSetPrevalidate("amount", LLLineEditor::prevalidateNonNegativeS32);
+	childSetPrevalidate("amount", LLTextValidate::validateNonNegativeS32);
 
 	info = new LLGiveMoneyInfo(this, 0);
 	mCallbackData.push_back(info);
@@ -438,7 +438,7 @@ void LLFloaterPay::finishPayUI(const LLUUID& target_id, BOOL is_group)
 		slurl = LLSLURL::buildCommand("agent", target_id, "inspect");
 	}
 	childSetText("payee_name", slurl);
-
+	
 	// Make sure the amount field has focus
 
 	childSetFocus("amount", TRUE);
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index ef444c8ba443450315b395758d84c9daa0a62bc0..43111d76f713c7f324277e6eb46ff2f0c2b33a6d 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -110,8 +110,6 @@
 const F32 MAX_USER_FAR_CLIP = 512.f;
 const F32 MIN_USER_FAR_CLIP = 64.f;
 
-const S32 ASPECT_RATIO_STR_LEN = 100;
-
 class LLVoiceSetKeyDialog : public LLModalDialog
 {
 public:
@@ -283,7 +281,6 @@ void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator)
 }
 // static
 std::string LLFloaterPreference::sSkin = "";
-F32 LLFloaterPreference::sAspectRatio = 0.0;
 //////////////////////////////////////////////
 // LLFloaterPreference
 
@@ -324,11 +321,9 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
 	mCommitCallbackRegistrar.add("Pref.VertexShaderEnable",     boost::bind(&LLFloaterPreference::onVertexShaderEnable, this));	
 	mCommitCallbackRegistrar.add("Pref.WindowedMod",            boost::bind(&LLFloaterPreference::onCommitWindowedMode, this));	
 	mCommitCallbackRegistrar.add("Pref.UpdateSliderText",       boost::bind(&LLFloaterPreference::onUpdateSliderText,this, _1,_2));	
-	mCommitCallbackRegistrar.add("Pref.AutoDetectAspect",       boost::bind(&LLFloaterPreference::onCommitAutoDetectAspect, this));	
 	mCommitCallbackRegistrar.add("Pref.ParcelMediaAutoPlayEnable",       boost::bind(&LLFloaterPreference::onCommitParcelMediaAutoPlayEnable, this));	
 	mCommitCallbackRegistrar.add("Pref.MediaEnabled",           boost::bind(&LLFloaterPreference::onCommitMediaEnabled, this));	
 	mCommitCallbackRegistrar.add("Pref.MusicEnabled",           boost::bind(&LLFloaterPreference::onCommitMusicEnabled, this));	
-	mCommitCallbackRegistrar.add("Pref.onSelectAspectRatio",    boost::bind(&LLFloaterPreference::onKeystrokeAspectRatio, this));	
 	mCommitCallbackRegistrar.add("Pref.QualityPerformance",     boost::bind(&LLFloaterPreference::onChangeQuality, this, _2));	
 	mCommitCallbackRegistrar.add("Pref.applyUIColor",			boost::bind(&LLFloaterPreference::applyUIColor, this ,_1, _2));
 	mCommitCallbackRegistrar.add("Pref.getUIColor",				boost::bind(&LLFloaterPreference::getUIColor, this ,_1, _2));
@@ -359,12 +354,7 @@ BOOL LLFloaterPreference::postBuild()
 LLFloaterPreference::~LLFloaterPreference()
 {
 	// clean up user data
-	LLComboBox* ctrl_aspect_ratio = getChild<LLComboBox>( "aspect_ratio");
 	LLComboBox* ctrl_window_size = getChild<LLComboBox>("windowsize combo");
-	for (S32 i = 0; i < ctrl_aspect_ratio->getItemCount(); i++)
-	{
-		ctrl_aspect_ratio->setCurrentByIndex(i);
-	}
 	for (S32 i = 0; i < ctrl_window_size->getItemCount(); i++)
 	{
 		ctrl_window_size->setCurrentByIndex(i);
@@ -514,8 +504,6 @@ void LLFloaterPreference::cancel()
 	
 	LLFloaterReg::hideInstance("pref_voicedevicesettings");
 	
-	gSavedSettings.setF32("FullScreenAspectRatio", sAspectRatio);
-
 }
 
 void LLFloaterPreference::onOpen(const LLSD& key)
@@ -571,6 +559,16 @@ void LLFloaterPreference::setHardwareDefaults()
 {
 	LLFeatureManager::getInstance()->applyRecommendedSettings();
 	refreshEnabledGraphics();
+	LLTabContainer* tabcontainer = getChild<LLTabContainer>("pref core");
+	child_list_t::const_iterator iter = tabcontainer->getChildList()->begin();
+	child_list_t::const_iterator end = tabcontainer->getChildList()->end();
+	for ( ; iter != end; ++iter)
+	{
+		LLView* view = *iter;
+		LLPanelPreference* panel = dynamic_cast<LLPanelPreference*>(view);
+		if (panel)
+			panel->setHardwareDefaults();
+	}
 }
 
 //virtual
@@ -592,7 +590,7 @@ void LLFloaterPreference::onBtnOK()
 	if (hasFocus())
 	{
 		LLUICtrl* cur_focus = dynamic_cast<LLUICtrl*>(gFocusMgr.getKeyboardFocus());
-		if (cur_focus->acceptsTextInput())
+		if (cur_focus && cur_focus->acceptsTextInput())
 		{
 			cur_focus->onCommit();
 		}
@@ -625,7 +623,7 @@ void LLFloaterPreference::onBtnApply( )
 	if (hasFocus())
 	{
 		LLUICtrl* cur_focus = dynamic_cast<LLUICtrl*>(gFocusMgr.getKeyboardFocus());
-		if (cur_focus->acceptsTextInput())
+		if (cur_focus && cur_focus->acceptsTextInput())
 		{
 			cur_focus->onCommit();
 		}
@@ -642,7 +640,7 @@ void LLFloaterPreference::onBtnCancel()
 	if (hasFocus())
 	{
 		LLUICtrl* cur_focus = dynamic_cast<LLUICtrl*>(gFocusMgr.getKeyboardFocus());
-		if (cur_focus->acceptsTextInput())
+		if (cur_focus && cur_focus->acceptsTextInput())
 		{
 			cur_focus->onCommit();
 		}
@@ -958,37 +956,6 @@ void LLFloaterPreference::disableUnavailableSettings()
 	}
 }
 
-void LLFloaterPreference::onCommitAutoDetectAspect()
-{
-	BOOL auto_detect = getChild<LLCheckBoxCtrl>("aspect_auto_detect")->get();
-	F32 ratio;
-	
-	if (auto_detect)
-	{
-		S32 numerator = 0;
-		S32 denominator = 0;
-		
-		// clear any aspect ratio override
-		gViewerWindow->mWindow->setNativeAspectRatio(0.f);
-		fractionFromDecimal(gViewerWindow->mWindow->getNativeAspectRatio(), numerator, denominator);
-		
-		std::string aspect;
-		if (numerator != 0)
-		{
-			aspect = llformat("%d:%d", numerator, denominator);
-		}
-		else
-		{
-			aspect = llformat("%.3f", gViewerWindow->mWindow->getNativeAspectRatio());
-		}
-		
-		getChild<LLComboBox>( "aspect_ratio")->setLabel(aspect);
-		
-		ratio = gViewerWindow->mWindow->getNativeAspectRatio();
-		gSavedSettings.setF32("FullScreenAspectRatio", ratio);
-	}
-}
-
 void LLFloaterPreference::onCommitParcelMediaAutoPlayEnable()
 {
 	BOOL autoplay = getChild<LLCheckBoxCtrl>("autoplay_enabled")->get();
@@ -1256,56 +1223,9 @@ void LLFloaterPreference::updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_b
 	}
 }
 
-void LLFloaterPreference::onKeystrokeAspectRatio()
-{
-	getChild<LLCheckBoxCtrl>("aspect_auto_detect")->set(FALSE);
-}
-
 void LLFloaterPreference::applyResolution()
 {
-	LLComboBox* ctrl_aspect_ratio = getChild<LLComboBox>( "aspect_ratio");
 	gGL.flush();
-	char aspect_ratio_text[ASPECT_RATIO_STR_LEN];		/*Flawfinder: ignore*/
-	if (ctrl_aspect_ratio->getCurrentIndex() == -1)
-	{
-		// *Can't pass const char* from c_str() into strtok
-		strncpy(aspect_ratio_text, ctrl_aspect_ratio->getSimple().c_str(), sizeof(aspect_ratio_text) -1);	/*Flawfinder: ignore*/
-		aspect_ratio_text[sizeof(aspect_ratio_text) -1] = '\0';
-		char *element = strtok(aspect_ratio_text, ":/\\");
-		if (!element)
-		{
-			sAspectRatio = 0.f; // will be clamped later
-		}
-		else
-		{
-			LLLocale locale(LLLocale::USER_LOCALE);
-			sAspectRatio = (F32)atof(element);
-		}
-		
-		// look for denominator
-		element = strtok(NULL, ":/\\");
-		if (element)
-		{
-			LLLocale locale(LLLocale::USER_LOCALE);
-			
-			F32 denominator = (F32)atof(element);
-			if (denominator != 0.f)
-			{
-				sAspectRatio /= denominator;
-			}
-		}
-	}
-	else
-	{
-		sAspectRatio = (F32)ctrl_aspect_ratio->getValue().asReal();
-	}
-	
-	// presumably, user entered a non-numeric value if aspect_ratio == 0.f
-	if (sAspectRatio != 0.f)
-	{
-		sAspectRatio = llclamp(sAspectRatio, 0.2f, 5.f);
-		gSavedSettings.setF32("FullScreenAspectRatio", sAspectRatio);
-	}
 	
 	// Screen resolution
 	S32 num_resolutions;
@@ -1383,48 +1303,6 @@ BOOL LLPanelPreference::postBuild()
 		childSetText("email_address",getString("log_in_to_change") );
 //		childSetText("busy_response", getString("log_in_to_change"));		
 	}
-
-
-	if(hasChild("aspect_ratio"))
-	{
-		// We used to set up fullscreen resolution and window size
-		// controls here, see LLFloaterWindowSize::initWindowSizeControls()
-		
-		if (gSavedSettings.getBOOL("FullScreenAutoDetectAspectRatio"))
-		{
-			LLFloaterPreference::sAspectRatio = gViewerWindow->getDisplayAspectRatio();
-		}
-		else
-		{
-			LLFloaterPreference::sAspectRatio = gSavedSettings.getF32("FullScreenAspectRatio");
-		}
-
-		getChild<LLComboBox>("aspect_ratio")->setTextEntryCallback(boost::bind(&LLPanelPreference::setControlFalse, this, LLSD("FullScreenAutoDetectAspectRatio") ));	
-		
-
-		S32 numerator = 0;
-		S32 denominator = 0;
-		fractionFromDecimal(LLFloaterPreference::sAspectRatio, numerator, denominator);		
-		
-		LLUIString aspect_ratio_text = getString("aspect_ratio_text");
-		if (numerator != 0)
-		{
-			aspect_ratio_text.setArg("[NUM]", llformat("%d",  numerator));
-			aspect_ratio_text.setArg("[DEN]", llformat("%d",  denominator));
-		}	
-		else
-		{
-			aspect_ratio_text = llformat("%.3f", LLFloaterPreference::sAspectRatio);
-		}
-		
-		LLComboBox* ctrl_aspect_ratio = getChild<LLComboBox>( "aspect_ratio");
-		//mCtrlAspectRatio->setCommitCallback(onSelectAspectRatio, this);
-		// add default aspect ratios
-		ctrl_aspect_ratio->add(aspect_ratio_text, &LLFloaterPreference::sAspectRatio, ADD_TOP);
-		ctrl_aspect_ratio->setCurrentByIndex(0);
-		
-		refresh();
-	}
 	
 	//////////////////////PanelPrivacy ///////////////////
 	if (hasChild("media_enabled"))
@@ -1525,3 +1403,93 @@ void LLPanelPreference::setControlFalse(const LLSD& user_data)
 	if (control)
 		control->set(LLSD(FALSE));
 }
+
+static LLRegisterPanelClassWrapper<LLPanelPreferenceGraphics> t_pref_graph("panel_preference_graphics");
+
+BOOL LLPanelPreferenceGraphics::postBuild()
+{
+	return LLPanelPreference::postBuild();
+}
+void LLPanelPreferenceGraphics::draw()
+{
+	LLPanelPreference::draw();
+	
+	LLButton* button_apply = findChild<LLButton>("Apply");
+	
+	if(button_apply && button_apply->getVisible())
+	{
+		bool enable = hasDirtyChilds();
+
+		button_apply->setEnabled(enable);
+
+	}
+}
+bool LLPanelPreferenceGraphics::hasDirtyChilds()
+{
+	std::list<LLView*> view_stack;
+	view_stack.push_back(this);
+	while(!view_stack.empty())
+	{
+		// Process view on top of the stack
+		LLView* curview = view_stack.front();
+		view_stack.pop_front();
+
+		LLUICtrl* ctrl = dynamic_cast<LLUICtrl*>(curview);
+		if (ctrl)
+		{
+			if(ctrl->isDirty())
+				return true;
+		}
+		// Push children onto the end of the work stack
+		for (child_list_t::const_iterator iter = curview->getChildList()->begin();
+			 iter != curview->getChildList()->end(); ++iter)
+		{
+			view_stack.push_back(*iter);
+		}
+	}	
+	return false;
+}
+
+void LLPanelPreferenceGraphics::resetDirtyChilds()
+{
+	std::list<LLView*> view_stack;
+	view_stack.push_back(this);
+	while(!view_stack.empty())
+	{
+		// Process view on top of the stack
+		LLView* curview = view_stack.front();
+		view_stack.pop_front();
+
+		LLUICtrl* ctrl = dynamic_cast<LLUICtrl*>(curview);
+		if (ctrl)
+		{
+			ctrl->resetDirty();
+		}
+		// Push children onto the end of the work stack
+		for (child_list_t::const_iterator iter = curview->getChildList()->begin();
+			 iter != curview->getChildList()->end(); ++iter)
+		{
+			view_stack.push_back(*iter);
+		}
+	}	
+}
+void LLPanelPreferenceGraphics::apply()
+{
+	resetDirtyChilds();
+	LLPanelPreference::apply();
+}
+void LLPanelPreferenceGraphics::cancel()
+{
+	resetDirtyChilds();
+	LLPanelPreference::cancel();
+}
+void LLPanelPreferenceGraphics::saveSettings()
+{
+	resetDirtyChilds();
+	LLPanelPreference::saveSettings();
+}
+void LLPanelPreferenceGraphics::setHardwareDefaults()
+{
+	resetDirtyChilds();
+	LLPanelPreference::setHardwareDefaults();
+}
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index 8778d76a5aa3e911390b5ced95f88953ca340127..93b39d72bc8f54ac175f524d55001616871bfabd 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -128,10 +128,8 @@ class LLFloaterPreference : public LLFloater
 	
 	void updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box);
 	void onUpdateSliderText(LLUICtrl* ctrl, const LLSD& name);
-	void onKeystrokeAspectRatio();
 //	void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator);
 
-	void onCommitAutoDetectAspect();
 	void onCommitParcelMediaAutoPlayEnable();
 	void onCommitMediaEnabled();
 	void onCommitMusicEnabled();
@@ -142,7 +140,6 @@ class LLFloaterPreference : public LLFloater
 	void buildPopupLists();
 	static void refreshSkin(void* data);
 	static void cleanupBadSetting();
-	static F32 sAspectRatio;	
 private:
 	static std::string sSkin;
 	bool mGotPersonalInfo;
@@ -161,6 +158,7 @@ class LLPanelPreference : public LLPanel
 	virtual void apply();
 	virtual void cancel();
 	void setControlFalse(const LLSD& user_data);
+	virtual void setHardwareDefaults(){};
 
 	// This function squirrels away the current values of the controls so that
 	// cancel() can restore them.
@@ -177,4 +175,19 @@ class LLPanelPreference : public LLPanel
 	string_color_map_t mSavedColors;
 };
 
+class LLPanelPreferenceGraphics : public LLPanelPreference
+{
+public:
+	BOOL postBuild();
+	void draw();
+	void apply();
+	void cancel();
+	void saveSettings();
+	void setHardwareDefaults();
+protected:
+	bool hasDirtyChilds();
+	void resetDirtyChilds();
+	
+};
+
 #endif  // LL_LLPREFERENCEFLOATER_H
diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp
index ff9002787ce859df3a36e5ce54cefd15c770bfa1..5c0593ad29c3e413624c1a953af7115711064f2c 100644
--- a/indra/newview/llfloaterproperties.cpp
+++ b/indra/newview/llfloaterproperties.cpp
@@ -130,9 +130,9 @@ BOOL LLFloaterProperties::postBuild()
 {
 	// build the UI
 	// item name & description
-	childSetPrevalidate("LabelItemName",&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+	childSetPrevalidate("LabelItemName",&LLTextValidate::validateASCIIPrintableNoPipe);
 	getChild<LLUICtrl>("LabelItemName")->setCommitCallback(boost::bind(&LLFloaterProperties::onCommitName,this));
-	childSetPrevalidate("LabelItemDesc",&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+	childSetPrevalidate("LabelItemDesc",&LLTextValidate::validateASCIIPrintableNoPipe);
 	getChild<LLUICtrl>("LabelItemDesc")->setCommitCallback(boost::bind(&LLFloaterProperties:: onCommitDescription, this));
 	// Creator information
 	getChild<LLUICtrl>("BtnCreator")->setCommitCallback(boost::bind(&LLFloaterProperties::onClickCreator,this));
@@ -880,7 +880,11 @@ void LLFloaterProperties::dirtyAll()
 		 iter != inst_list.end(); ++iter)
 	{
 		LLFloaterProperties* floater = dynamic_cast<LLFloaterProperties*>(*iter);
-		floater->dirty();
+		llassert(floater); // else cast failed - wrong type D:
+		if (floater)
+		{
+			floater->dirty();
+		}
 	}
 }
 
diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp
index f2827919ce6736d67e84ca30b214ce537af1e568..2fce50007eece6bfb38d98af6030e01107aa67c8 100644
--- a/indra/newview/llfloaterscriptlimits.cpp
+++ b/indra/newview/llfloaterscriptlimits.cpp
@@ -671,7 +671,7 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
 					    // an AVATAR name?  JC
 					    const bool is_group = true;
 						gCacheName->get(owner_id, is_group,
-						    boost::bind(&LLPanelScriptLimitsRegionMemory::onNameCache,
+						boost::bind(&LLPanelScriptLimitsRegionMemory::onNameCache,
 							    this, _1, _2));
 					}
 				}
@@ -744,13 +744,13 @@ void LLPanelScriptLimitsRegionMemory::setRegionSummary(LLSD content)
 	{
 		mParcelMemoryUsed = content["summary"]["used"][0]["amount"].asInteger() / SIZE_OF_ONE_KB;
 		mParcelMemoryMax = content["summary"]["available"][0]["amount"].asInteger() / SIZE_OF_ONE_KB;
-		mGotParcelMemoryUsed = TRUE;
+		mGotParcelMemoryUsed = true;
 	}
 	else if(content["summary"]["used"][1]["type"].asString() == std::string("memory"))
 	{
 		mParcelMemoryUsed = content["summary"]["used"][1]["amount"].asInteger() / SIZE_OF_ONE_KB;
 		mParcelMemoryMax = content["summary"]["available"][1]["amount"].asInteger() / SIZE_OF_ONE_KB;
-		mGotParcelMemoryUsed = TRUE;
+		mGotParcelMemoryUsed = true;
 	}
 	else
 	{
@@ -762,13 +762,13 @@ void LLPanelScriptLimitsRegionMemory::setRegionSummary(LLSD content)
 	{
 		mParcelURLsUsed = content["summary"]["used"][0]["amount"].asInteger();
 		mParcelURLsMax = content["summary"]["available"][0]["amount"].asInteger();
-		mGotParcelURLsUsed = TRUE;
+		mGotParcelURLsUsed = true;
 	}
 	else if(content["summary"]["used"][1]["type"].asString() == std::string("urls"))
 	{
 		mParcelURLsUsed = content["summary"]["used"][1]["amount"].asInteger();
 		mParcelURLsMax = content["summary"]["available"][1]["amount"].asInteger();
-		mGotParcelURLsUsed = TRUE;
+		mGotParcelURLsUsed = true;
 	}
 	else
 	{
@@ -902,10 +902,10 @@ void LLPanelScriptLimitsRegionMemory::clearList()
 		list->operateOnAll(LLCtrlListInterface::OP_DELETE);
 	}
 
-	mGotParcelMemoryUsed = FALSE;
-	mGotParcelMemoryMax = FALSE;
-	mGotParcelURLsUsed = FALSE;
-	mGotParcelURLsMax = FALSE;
+	mGotParcelMemoryUsed = false;
+	mGotParcelMemoryMax = false;
+	mGotParcelURLsUsed = false;
+	mGotParcelURLsMax = false;
 	
 	LLStringUtil::format_map_t args_parcel_memory;
 	std::string msg_empty_string("");
@@ -1208,13 +1208,13 @@ void LLPanelScriptLimitsAttachment::setAttachmentSummary(LLSD content)
 	{
 		mAttachmentMemoryUsed = content["summary"]["used"][0]["amount"].asInteger() / SIZE_OF_ONE_KB;
 		mAttachmentMemoryMax = content["summary"]["available"][0]["amount"].asInteger() / SIZE_OF_ONE_KB;
-		mGotAttachmentMemoryUsed = TRUE;
+		mGotAttachmentMemoryUsed = true;
 	}
 	else if(content["summary"]["used"][1]["type"].asString() == std::string("memory"))
 	{
 		mAttachmentMemoryUsed = content["summary"]["used"][1]["amount"].asInteger() / SIZE_OF_ONE_KB;
 		mAttachmentMemoryMax = content["summary"]["available"][1]["amount"].asInteger() / SIZE_OF_ONE_KB;
-		mGotAttachmentMemoryUsed = TRUE;
+		mGotAttachmentMemoryUsed = true;
 	}
 	else
 	{
@@ -1226,13 +1226,13 @@ void LLPanelScriptLimitsAttachment::setAttachmentSummary(LLSD content)
 	{
 		mAttachmentURLsUsed = content["summary"]["used"][0]["amount"].asInteger();
 		mAttachmentURLsMax = content["summary"]["available"][0]["amount"].asInteger();
-		mGotAttachmentURLsUsed = TRUE;
+		mGotAttachmentURLsUsed = true;
 	}
 	else if(content["summary"]["used"][1]["type"].asString() == std::string("urls"))
 	{
 		mAttachmentURLsUsed = content["summary"]["used"][1]["amount"].asInteger();
 		mAttachmentURLsMax = content["summary"]["available"][1]["amount"].asInteger();
-		mGotAttachmentURLsUsed = TRUE;
+		mGotAttachmentURLsUsed = true;
 	}
 	else
 	{
diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h
index cbcd64e82c226c19bd1d6fbad9ea3896f75eba86..ce49209039b525af0810e0e60d6bf5b06dfbb461 100644
--- a/indra/newview/llfloaterscriptlimits.h
+++ b/indra/newview/llfloaterscriptlimits.h
@@ -148,8 +148,8 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote
 		: LLPanelScriptLimitsInfo(), LLRemoteParcelInfoObserver(),
 
 		mParcelId(LLUUID()),
-		mGotParcelMemoryUsed(FALSE),
-		mGotParcelMemoryMax(FALSE),
+		mGotParcelMemoryUsed(false),
+		mGotParcelMemoryMax(false),
 		mParcelMemoryMax(0),
 		mParcelMemoryUsed(0) {};
 
@@ -173,21 +173,21 @@ class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemote
 	void returnObjects();
 
 private:
-	void onNameCache(	 const LLUUID& id,
+	void onNameCache(const LLUUID& id,
 						 const std::string& name);
 
 	LLSD mContent;
 	LLUUID mParcelId;
-	BOOL mGotParcelMemoryUsed;
-	BOOL mGotParcelMemoryUsedDetails;
-	BOOL mGotParcelMemoryMax;
+	bool mGotParcelMemoryUsed;
+	bool mGotParcelMemoryUsedDetails;
+	bool mGotParcelMemoryMax;
 	S32 mParcelMemoryMax;
 	S32 mParcelMemoryUsed;
 	S32 mParcelMemoryUsedDetails;
 	
-	BOOL mGotParcelURLsUsed;
-	BOOL mGotParcelURLsUsedDetails;
-	BOOL mGotParcelURLsMax;
+	bool mGotParcelURLsUsed;
+	bool mGotParcelURLsUsedDetails;
+	bool mGotParcelURLsMax;
 	S32 mParcelURLsMax;
 	S32 mParcelURLsUsed;
 	S32 mParcelURLsUsedDetails;
@@ -215,7 +215,21 @@ class LLPanelScriptLimitsAttachment : public LLPanelScriptLimitsInfo
 	
 public:
 	LLPanelScriptLimitsAttachment()
-		:	LLPanelScriptLimitsInfo() {};
+		:	LLPanelScriptLimitsInfo(),
+		mGotAttachmentMemoryUsed(false),
+		mGotAttachmentMemoryUsedDetails(false),
+		mGotAttachmentMemoryMax(false),
+		mAttachmentMemoryMax(0),
+		mAttachmentMemoryUsed(0),
+		mAttachmentMemoryUsedDetails(0),
+		mGotAttachmentURLsUsed(false),
+		mGotAttachmentURLsUsedDetails(false),
+		mGotAttachmentURLsMax(false),
+		mAttachmentURLsMax(0),
+		mAttachmentURLsUsed(0),
+		mAttachmentURLsUsedDetails(0)
+		{};
+
 	~LLPanelScriptLimitsAttachment()
 	{
 	};
@@ -231,16 +245,16 @@ class LLPanelScriptLimitsAttachment : public LLPanelScriptLimitsInfo
 
 private:
 
-	BOOL mGotAttachmentMemoryUsed;
-	BOOL mGotAttachmentMemoryUsedDetails;
-	BOOL mGotAttachmentMemoryMax;
+	bool mGotAttachmentMemoryUsed;
+	bool mGotAttachmentMemoryUsedDetails;
+	bool mGotAttachmentMemoryMax;
 	S32 mAttachmentMemoryMax;
 	S32 mAttachmentMemoryUsed;
 	S32 mAttachmentMemoryUsedDetails;
 	
-	BOOL mGotAttachmentURLsUsed;
-	BOOL mGotAttachmentURLsUsedDetails;
-	BOOL mGotAttachmentURLsMax;
+	bool mGotAttachmentURLsUsed;
+	bool mGotAttachmentURLsUsedDetails;
+	bool mGotAttachmentURLsMax;
 	S32 mAttachmentURLsMax;
 	S32 mAttachmentURLsUsed;
 	S32 mAttachmentURLsUsedDetails;
diff --git a/indra/newview/llfloatersellland.cpp b/indra/newview/llfloatersellland.cpp
index e2b0c4b66f89d5a367465f6055f257f273c715cc..98956650261d4b068b6a3bc53101c977d07c671b 100644
--- a/indra/newview/llfloatersellland.cpp
+++ b/indra/newview/llfloatersellland.cpp
@@ -163,7 +163,7 @@ BOOL LLFloaterSellLandUI::postBuild()
 {
 	childSetCommitCallback("sell_to", onChangeValue, this);
 	childSetCommitCallback("price", onChangeValue, this);
-	childSetPrevalidate("price", LLLineEditor::prevalidateNonNegativeS32);
+	childSetPrevalidate("price", LLTextValidate::validateNonNegativeS32);
 	childSetCommitCallback("sell_objects", onChangeValue, this);
 	childSetAction("sell_to_select_agent", boost::bind( &LLFloaterSellLandUI::doSelectAgent, this));
 	childSetAction("cancel_btn", doCancel, this);
@@ -268,7 +268,7 @@ void LLFloaterSellLandUI::refreshUI()
 
 	std::string price_str = childGetValue("price").asString();
 	bool valid_price = false;
-	valid_price = (price_str != "") && LLLineEditor::prevalidateNonNegativeS32(utf8str_to_wstring(price_str));
+	valid_price = (price_str != "") && LLTextValidate::validateNonNegativeS32(utf8str_to_wstring(price_str));
 
 	if (valid_price && mParcelActualArea > 0)
 	{
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index b6e9fb3f6ceee4086335366c8b3cedd629895d3e..a0031f019321a0ffa7085b364b03168dc25d4dc2 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -2084,10 +2084,6 @@ void LLFloaterSnapshot::draw()
 
 			S32 offset_x = (getRect().getWidth() - previewp->getThumbnailWidth()) / 2 ;
 			S32 offset_y = thumbnail_rect.mBottom + (thumbnail_rect.getHeight() - previewp->getThumbnailHeight()) / 2 ;
-			if (! gSavedSettings.getBOOL("AdvanceSnapshot"))
-			{
-				offset_y += getUIWinHeightShort() - getUIWinHeightLong();
-			}
 
 			glMatrixMode(GL_MODELVIEW);
 			gl_draw_scaled_image(offset_x, offset_y, 
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index 241497aeafd3a7a087294bac15446c59759af7af..e2b083a29b1977a6c3a5037ea8c814aea1454524 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -666,8 +666,8 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
 	if (mCheckCopyCenters) mCheckCopyCenters	->setVisible( create_visible );
 	if (mCheckCopyRotates) mCheckCopyRotates	->setVisible( create_visible );
 
-	if (mCheckCopyCenters) mCheckCopyCenters->setEnabled( mCheckCopySelection->get() );
-	if (mCheckCopyRotates) mCheckCopyRotates->setEnabled( mCheckCopySelection->get() );
+	if (mCheckCopyCenters && mCheckCopySelection) mCheckCopyCenters->setEnabled( mCheckCopySelection->get() );
+	if (mCheckCopyRotates && mCheckCopySelection) mCheckCopyRotates->setEnabled( mCheckCopySelection->get() );
 
 	// Land buttons
 	BOOL land_visible = (tool == LLToolBrushLand::getInstance() || tool == LLToolSelectLand::getInstance() );
@@ -1321,7 +1321,7 @@ bool LLFloaterTools::deleteMediaConfirm(const LLSD& notification, const LLSD& re
 	switch( option )
 	{
 		case 0:  // "Yes"
-			LLSelectMgr::getInstance()->selectionSetMedia( 0 );
+			LLSelectMgr::getInstance()->selectionSetMedia( 0, LLSD() );
 			if(LLFloaterReg::instanceVisible("media_settings"))
 			{
 				LLFloaterReg::hideInstance("media_settings");
diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
index c6e12476bd6ea5c34ee756415d584ab058016fcf..f61c86db1406743f537eaca02ce9a0f15425617f 100644
--- a/indra/newview/llfloateruipreview.cpp
+++ b/indra/newview/llfloateruipreview.cpp
@@ -41,6 +41,7 @@
 #include "llfloateruipreview.h"			// Own header
 
 // Internal utility
+#include "lleventtimer.h"
 #include "llrender.h"
 #include "llsdutil.h"
 #include "llxmltree.h"
@@ -91,7 +92,6 @@ static std::string get_xui_dir()
 }
 
 // Forward declarations to avoid header dependencies
-class LLEventTimer;
 class LLColor;
 class LLScrollListCtrl;
 class LLComboBox;
@@ -362,8 +362,7 @@ BOOL LLFadeEventTimer::tick()
 
 	if(NULL == mParent)	// no more need to tick, so suicide
 	{
-		delete this;
-		return FALSE;
+		return TRUE;
 	}
 
 	// Set up colors
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index c6135d3bc3c4fbda9f491d5abc3e46bc108153db..8dbdfff6352f5fbf0b64eafbc05323b7c708ec50 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -195,7 +195,8 @@ LLFolderView::LLFolderView(const Params& p)
 	mCallbackRegistrar(NULL),
 	mParentPanel(p.parent_panel),
 	mUseEllipses(false),
-	mDraggingOverItem(NULL)
+	mDraggingOverItem(NULL),
+	mStatusTextBox(NULL)
 {
 	LLRect rect = p.rect;
 	LLRect new_rect(rect.mLeft, rect.mBottom + getRect().getHeight(), rect.mLeft + getRect().getWidth(), rect.mBottom);
@@ -225,12 +226,24 @@ LLFolderView::LLFolderView(const Params& p)
 	params.font(getLabelFontForStyle(LLFontGL::NORMAL));
 	params.max_length_bytes(DB_INV_ITEM_NAME_STR_LEN);
 	params.commit_callback.function(boost::bind(&LLFolderView::commitRename, this, _2));
-	params.prevalidate_callback(&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+	params.prevalidate_callback(&LLTextValidate::validateASCIIPrintableNoPipe);
 	params.commit_on_focus_lost(true);
 	params.visible(false);
 	mRenamer = LLUICtrlFactory::create<LLLineEditor> (params);
 	addChild(mRenamer);
 
+	// Textbox
+	LLTextBox::Params text_p;
+	LLRect new_r(5, 13-50, 300, 0-50);
+	text_p.name(std::string(p.name));
+	text_p.rect(new_r);
+	text_p.font(getLabelFontForStyle(mLabelStyle));
+	text_p.visible(false);
+	text_p.allow_html(true);
+	mStatusTextBox = LLUICtrlFactory::create<LLTextBox> (text_p);
+	//addChild(mStatusTextBox);
+
+
 	// make the popup menu available
 	LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_inventory.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
 	if (!menu)
@@ -253,6 +266,7 @@ LLFolderView::~LLFolderView( void )
 	mScrollContainer = NULL;
 	mRenameItem = NULL;
 	mRenamer = NULL;
+	mStatusTextBox = NULL;
 
 	if( gEditMenuHandler == this )
 	{
@@ -874,7 +888,7 @@ void LLFolderView::draw()
 			LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );
 	}
 
-	LLFontGL* font = getLabelFontForStyle(mLabelStyle);
+	//LLFontGL* font = getLabelFontForStyle(mLabelStyle);
 
 	// if cursor has moved off of me during drag and drop
 	// close all auto opened folders
@@ -911,19 +925,23 @@ void LLFolderView::draw()
 		|| mFilter->getShowFolderState() == LLInventoryFilter::SHOW_ALL_FOLDERS)
 	{
 		mStatusText.clear();
+		mStatusTextBox->setVisible( FALSE );
 	}
 	else
 	{
 		if (gInventory.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 );
+			//font->renderUTF8(mStatusText, 0, 2, 1, sSearchStatusColor, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::NORMAL,  LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );
 		}
 		else
 		{
 			mStatusText = LLTrans::getString(getFilter()->getEmptyLookupMessage());
-			font->renderUTF8(mStatusText, 0, 2, 1, sSearchStatusColor, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::NORMAL,  LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );
+			//font->renderUTF8(mStatusText, 0, 2, 1, sSearchStatusColor, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::NORMAL,  LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );
 		}
+		mStatusTextBox->setValue(mStatusText);
+		mStatusTextBox->setVisible( TRUE );
+		
 	}
 
 	LLFolderViewFolder::draw();
@@ -1272,8 +1290,7 @@ BOOL LLFolderView::canCut() const
 		const LLFolderViewItem* item = *selected_it;
 		const LLFolderViewEventListener* listener = item->getListener();
 
-		// *WARKAROUND: it is too many places where the "isItemRemovable" method should be changed with "const" modifier
-		if (!listener || !(const_cast<LLFolderViewEventListener*>(listener))->isItemRemovable())
+		if (!listener || !listener->isItemRemovable())
 		{
 			return FALSE;
 		}
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 56ebdfcf79d5a5b9d18e29144026536d537e0526..faf6a9cf233f40cb9697d854464829b325d31959 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -62,6 +62,7 @@ class LLLineEditor;
 class LLMenuGL;
 class LLScrollContainer;
 class LLUICtrl;
+class LLTextBox;
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // Class LLFolderViewFunctor
@@ -327,7 +328,7 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler
 	
 	LLUUID							mSelectThisID; // if non null, select this item
 	
-	LLPanel*				mParentPanel;
+	LLPanel*						mParentPanel;
 
 	/**
 	 * Is used to determine if we need to cut text In LLFolderViewItem to avoid horizontal scroll.
@@ -344,6 +345,8 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler
 	
 public:
 	static F32 sAutoOpenTime;
+	LLTextBox*						mStatusTextBox;
+
 };
 
 bool sort_item_name(LLFolderViewItem* a, LLFolderViewItem* b);
diff --git a/indra/newview/llfoldervieweventlistener.h b/indra/newview/llfoldervieweventlistener.h
index d6c4459e6fac30e23706d130fe20372a2b1abcc3..12e100caf4fe82cc1a48d5b95257b541787afa9d 100644
--- a/indra/newview/llfoldervieweventlistener.h
+++ b/indra/newview/llfoldervieweventlistener.h
@@ -73,7 +73,8 @@ class LLFolderViewEventListener
 	virtual BOOL isItemRenameable() const = 0;
 	virtual BOOL renameItem(const std::string& new_name) = 0;
 	virtual BOOL isItemMovable( void ) const = 0;		// Can be moved to another folder
-	virtual BOOL isItemRemovable( void ) = 0;	// Can be destroyed
+	virtual BOOL isItemRemovable( void ) const = 0;		// Can be destroyed
+	virtual BOOL isItemInTrash( void) const { return FALSE; } // TODO: make into pure virtual.
 	virtual BOOL removeItem() = 0;
 	virtual void removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batch) = 0;
 	virtual void move( LLFolderViewEventListener* parent_listener ) = 0;
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index f154de39c92df1d27f391c841dbc9fab8a42e693..3946224c0c5a56fa0835ca5e7c558ba40b26e225 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -1339,10 +1339,6 @@ void LLFolderViewFolder::filter( LLInventoryFilter& filter)
 			if (folder->getFiltered() || folder->hasFilteredDescendants(filter.getMinRequiredGeneration()))
 			{
 				mMostFilteredDescendantGeneration = filter_generation;
-				if (getRoot()->needsAutoSelect() && autoopen_folders)
-				{
-					folder->setOpenArrangeRecursively(TRUE);
-				}
 			}
 			// just skip it, it has already been filtered
 			continue;
@@ -2548,8 +2544,12 @@ bool LLInventorySort::operator()(const LLFolderViewItem* const& a, const LLFolde
 		{
 			// *TODO: mantipov: probably it is better to add an appropriate method to LLFolderViewItem
 			// or to LLInvFVBridge
-			S32 a_sort = (static_cast<const LLItemBridge*>(a->getListener()))->getItem()->getSortField();
-			S32 b_sort = (static_cast<const LLItemBridge*>(b->getListener()))->getItem()->getSortField();
+			LLViewerInventoryItem* aitem = (static_cast<const LLItemBridge*>(a->getListener()))->getItem();
+			LLViewerInventoryItem* bitem = (static_cast<const LLItemBridge*>(b->getListener()))->getItem();
+			if (!aitem || !bitem)
+				return false;
+			S32 a_sort = aitem->getSortField();
+			S32 b_sort = bitem->getSortField();
 			return a_sort < b_sort;
 		}
 	}
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index 3653371d7668d80042244d6d78123793edf59b96..00e2365ffde5e5d0a31a182aa7ac6f07cdccfc1d 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -161,12 +161,17 @@ void LLGroupActions::join(const LLUUID& group_id)
 		S32 cost = gdatap->mMembershipFee;
 		LLSD args;
 		args["COST"] = llformat("%d", cost);
+		args["NAME"] = gdatap->mName;
 		LLSD payload;
 		payload["group_id"] = group_id;
 
 		if (can_afford_transaction(cost))
 		{
-			LLNotificationsUtil::add("JoinGroupCanAfford", args, payload, onJoinGroup);
+			if(cost > 0)
+				LLNotificationsUtil::add("JoinGroupCanAfford", args, payload, onJoinGroup);
+			else
+				LLNotificationsUtil::add("JoinGroupNoCost", args, payload, onJoinGroup);
+				
 		}
 		else
 		{
diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index 4c1019a882000bd8e867b2cdf33d304127d66e2d..4db75bbd8a6d3f2de187035b03f6b14b9614a2c3 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -677,9 +677,12 @@ void LLGroupMgrGroupData::sendRoleChanges()
 				break;
 			}
 			case RC_UPDATE_ALL:
+				// fall through
 			case RC_UPDATE_POWERS:
 				need_power_recalc = true;
+				// fall through
 			case RC_UPDATE_DATA:
+				// fall through
 			default: 
 			{
 				LLGroupRoleData* group_role_data = (*role_it).second;
@@ -762,7 +765,7 @@ void LLGroupMgr::addObserver(LLGroupMgrObserver* observer)
 		mObservers.insert(std::pair<LLUUID, LLGroupMgrObserver*>(observer->getID(), observer));
 }
 
-void LLGroupMgr::addObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer)
+void LLGroupMgr::addObserver(const LLUUID& group_id, LLParticularGroupObserver* observer)
 {
 	if(group_id.notNull() && observer)
 	{
@@ -792,7 +795,7 @@ void LLGroupMgr::removeObserver(LLGroupMgrObserver* observer)
 	}
 }
 
-void LLGroupMgr::removeObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer)
+void LLGroupMgr::removeObserver(const LLUUID& group_id, LLParticularGroupObserver* observer)
 {
 	if(group_id.isNull() || !observer)
 	{
@@ -1364,7 +1367,7 @@ void LLGroupMgr::notifyObservers(LLGroupChange gc)
 			gi->second->mChanged = FALSE;
 
 
-			// notify LLParticularGroupMgrObserver
+			// notify LLParticularGroupObserver
 		    observer_map_t::iterator obs_it = mParticularObservers.find(group_id);
 		    if(obs_it == mParticularObservers.end())
 		        return;
diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h
index 588b4a9034487a03121bc3368c7a46659561a692..2c86de8b9706c5a8fd940f6605fcf39a13ad1ad2 100644
--- a/indra/newview/llgroupmgr.h
+++ b/indra/newview/llgroupmgr.h
@@ -53,10 +53,10 @@ class LLGroupMgrObserver
 	LLUUID	mID;
 };
 
-class LLParticularGroupMgrObserver
+class LLParticularGroupObserver
 {
 public:
-	virtual ~LLParticularGroupMgrObserver(){}
+	virtual ~LLParticularGroupObserver(){}
 	virtual void changed(const LLUUID& group_id, LLGroupChange gc) = 0;
 };
 
@@ -313,9 +313,9 @@ class LLGroupMgr : public LLSingleton<LLGroupMgr>
 	~LLGroupMgr();
 
 	void addObserver(LLGroupMgrObserver* observer);
-	void addObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer);
+	void addObserver(const LLUUID& group_id, LLParticularGroupObserver* observer);
 	void removeObserver(LLGroupMgrObserver* observer);
-	void removeObserver(const LLUUID& group_id, LLParticularGroupMgrObserver* observer);
+	void removeObserver(const LLUUID& group_id, LLParticularGroupObserver* observer);
 	LLGroupMgrGroupData* getGroupData(const LLUUID& id);
 
 	void sendGroupPropertiesRequest(const LLUUID& group_id);
@@ -374,7 +374,7 @@ class LLGroupMgr : public LLSingleton<LLGroupMgr>
 	typedef std::map<LLUUID, LLGroupMgrGroupData*> group_map_t;
 	group_map_t mGroups;
 
-	typedef std::set<LLParticularGroupMgrObserver*> observer_set_t;
+	typedef std::set<LLParticularGroupObserver*> observer_set_t;
 	typedef std::map<LLUUID,observer_set_t> observer_map_t;
 	observer_map_t mParticularObservers;
 };
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 1eac90371d89a5fca59a8b59241c2ccad3fff7b1..53cdfcc9b284370bfff4e2df3e79d3ab22de33e3 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -407,12 +407,7 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
 			}
 		}
 
-		if (floater_container)
-		{
-			//selecting the panel resets a chiclet's counter
-			floater_container->selectFloater(floater);
-			floater_container->setVisible(TRUE);
-		}
+		floater->openFloater(floater->getKey());
 	}
 	else
 	{
@@ -515,8 +510,11 @@ BOOL LLIMFloater::getVisible()
 	if(isChatMultiTab())
 	{
 		LLIMFloaterContainer* im_container = LLIMFloaterContainer::getInstance();
+		
+		// Treat inactive floater as invisible.
+		bool is_active = im_container->getActiveFloater() == this;
 		// getVisible() returns TRUE when Tabbed IM window is minimized.
-		return !im_container->isMinimized() && im_container->getVisible();
+		return is_active && !im_container->isMinimized() && im_container->getVisible();
 	}
 	else
 	{
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index 22eb9a51d2c545d930d486981304a0c1b1cc2d6a..7162386d082a17a2be6a43f0f9e7132777ccc368 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -37,6 +37,7 @@
 #include "llfloaterreg.h"
 #include "llimview.h"
 #include "llavatariconctrl.h"
+#include "llgroupiconctrl.h"
 #include "llagent.h"
 
 //
@@ -90,80 +91,34 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp,
 
 	LLUUID session_id = floaterp->getKey();
 
+	LLIconCtrl* icon = 0;
+
 	if(gAgent.isInGroup(session_id))
 	{
+		LLGroupIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams<LLGroupIconCtrl>();
+		icon_params.group_id = session_id;
+		icon = LLUICtrlFactory::instance().createWidget<LLGroupIconCtrl>(icon_params);
+
 		mSessions[session_id] = floaterp;
-		LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(session_id);
-		LLGroupMgr* gm = LLGroupMgr::getInstance();
-		gm->addObserver(session_id, this);
 		floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id));
-
-		if (group_data && group_data->mInsigniaID.notNull())
-		{
-			mTabContainer->setTabImage(get_ptr_in_map(mSessions, session_id), group_data->mInsigniaID);
-		}
-		else
-		{
-			mTabContainer->setTabImage(floaterp, "Generic_Group");
-			gm->sendGroupPropertiesRequest(session_id);
-		}
 	}
 	else
 	{
 		LLUUID avatar_id = LLIMModel::getInstance()->getOtherParticipantID(session_id);
-		LLAvatarPropertiesProcessor& app = LLAvatarPropertiesProcessor::instance();
-		app.addObserver(avatar_id, this);
-		floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, avatar_id));
-		mSessions[avatar_id] = floaterp;
 
-		LLUUID* icon_id_ptr = LLAvatarIconIDCache::getInstance()->get(avatar_id);
-		if(icon_id_ptr && icon_id_ptr->notNull())
-		{
-			mTabContainer->setTabImage(floaterp, *icon_id_ptr);
-		}
-		else
-		{
-			mTabContainer->setTabImage(floaterp, "Generic_Person");
-			app.sendAvatarPropertiesRequest(avatar_id);
-		}
-	}
-}
+		LLAvatarIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams<LLAvatarIconCtrl>();
+		icon_params.avatar_id = avatar_id;
+		icon = LLUICtrlFactory::instance().createWidget<LLAvatarIconCtrl>(icon_params);
 
-void LLIMFloaterContainer::processProperties(void* data, enum EAvatarProcessorType type)
-{
-	if (APT_PROPERTIES == type)
-	{
-		LLAvatarData* avatar_data = static_cast<LLAvatarData*>(data);
-		if (avatar_data)
-		{
-			LLUUID avatar_id = avatar_data->avatar_id;
-			LLUUID* cached_avatarId = LLAvatarIconIDCache::getInstance()->get(avatar_id);
-			if(cached_avatarId && cached_avatarId->notNull() && avatar_data->image_id != *cached_avatarId)
-			{
-				LLAvatarIconIDCache::getInstance()->add(avatar_id,avatar_data->image_id);
-				mTabContainer->setTabImage(get_ptr_in_map(mSessions, avatar_id), avatar_data->image_id);
-			}
-		}
-	}
-}
-
-void LLIMFloaterContainer::changed(const LLUUID& group_id, LLGroupChange gc)
-{
-	if (GC_PROPERTIES == gc)
-	{
-		LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(group_id);
-		if (group_data && group_data->mInsigniaID.notNull())
-		{
-			mTabContainer->setTabImage(get_ptr_in_map(mSessions, group_id), group_data->mInsigniaID);
-		}
+		mSessions[avatar_id] = floaterp;
+		floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, avatar_id));
 	}
+	mTabContainer->setTabImage(floaterp, icon);
 }
 
-void LLIMFloaterContainer::onCloseFloater(LLUUID id)
+void LLIMFloaterContainer::onCloseFloater(LLUUID& id)
 {
-	LLAvatarPropertiesProcessor::instance().removeObserver(id, this);
-	LLGroupMgr::instance().removeObserver(id, this);
-
+	mSessions.erase(id);
 }
 
 void LLIMFloaterContainer::onNewMessageReceived(const LLSD& data)
diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h
index bc06f0cbd31232b333973ae0a282385d984ec13b..46c0617c017f5d7e2d3e263603baaf368f333344 100644
--- a/indra/newview/llimfloatercontainer.h
+++ b/indra/newview/llimfloatercontainer.h
@@ -43,7 +43,7 @@
 
 class LLTabContainer;
 
-class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObserver, public LLParticularGroupMgrObserver
+class LLIMFloaterContainer : public LLMultiFloater
 {
 public:
 	LLIMFloaterContainer(const LLSD& seed);
@@ -51,14 +51,12 @@ class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObs
 	
 	/*virtual*/ BOOL postBuild();
 	/*virtual*/ void onOpen(const LLSD& key);
+	void onCloseFloater(LLUUID& id);
 
 	/*virtual*/ void addFloater(LLFloater* floaterp, 
 								BOOL select_added_floater, 
 								LLTabContainer::eInsertionPoint insertion_point = LLTabContainer::END);
 
-	void processProperties(void* data, EAvatarProcessorType type);
-	void changed(const LLUUID& group_id, LLGroupChange gc);
-
 	static LLFloater* getCurrentVoiceFloater();
 
 	static LLIMFloaterContainer* findInstance();
@@ -69,7 +67,6 @@ class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObs
 	typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t;
 	avatarID_panel_map_t mSessions;
 
-	void onCloseFloater(LLUUID avatar_id);
 
 	void onNewMessageReceived(const LLSD& data);
 };
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 6338fbd0919b8db10b0c336ba33489d52daed210..8999aab50a4726ba3a11e235e2cbb80207994531 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -77,6 +77,9 @@ const static std::string IM_FROM_ID("from_id");
 const static std::string NO_SESSION("(IM Session Doesn't Exist)");
 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");
+
 std::string LLCallDialogManager::sPreviousSessionlName = "";
 LLIMModel::LLIMSession::SType LLCallDialogManager::sPreviousSessionType = LLIMModel::LLIMSession::P2P_SESSION;
 std::string LLCallDialogManager::sCurrentSessionlName = "";
@@ -1372,7 +1375,7 @@ void LLCallDialogManager::onVoiceChannelChanged(const LLUUID &session_id)
 	}
 
 	sSession = session;
-	sSession->mVoiceChannel->setStateChangedCallback(boost::bind(LLCallDialogManager::onVoiceChannelStateChanged, _1, _2, _3));
+	sSession->mVoiceChannel->setStateChangedCallback(boost::bind(LLCallDialogManager::onVoiceChannelStateChanged, _1, _2, _3, _4));
 	if(sCurrentSessionlName != session->mName)
 	{
 		sPreviousSessionlName = sCurrentSessionlName;
@@ -1403,7 +1406,7 @@ void LLCallDialogManager::onVoiceChannelChanged(const LLUUID &session_id)
 
 }
 
-void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction)
+void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction, bool ended_by_agent)
 {
 	LLSD mCallDialogPayload;
 	LLOutgoingCallDialog* ocd = NULL;
@@ -1423,6 +1426,7 @@ void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EStat
 	mCallDialogPayload["state"] = new_state;
 	mCallDialogPayload["disconnected_channel_name"] = sSession->mName;
 	mCallDialogPayload["session_type"] = sSession->mSessionType;
+	mCallDialogPayload["ended_by_agent"] = ended_by_agent;
 
 	switch(new_state)
 	{			
@@ -1517,6 +1521,15 @@ void LLCallDialog::draw()
 	}
 }
 
+// virtual
+void LLCallDialog::onOpen(const LLSD& key)
+{
+	LLDockableFloater::onOpen(key);
+
+	// it should be over the all floaters. EXT-5116
+	gFloaterView->bringToFront(this);
+}
+
 void LLCallDialog::setIcon(const LLSD& session_id, const LLSD& participant_id)
 {
 	// *NOTE: 12/28/2009: check avaline calls: LLVoiceClient::isParticipantAvatar returns false for them
@@ -1609,7 +1622,16 @@ void LLOutgoingCallDialog::show(const LLSD& key)
 			channel_name = LLTextUtil::formatPhoneNumber(channel_name);
 		}
 		childSetTextArg("nearby", "[VOICE_CHANNEL_NAME]", channel_name);
-		childSetTextArg("nearby_P2P", "[VOICE_CHANNEL_NAME]", mPayload["disconnected_channel_name"].asString());
+		childSetTextArg("nearby_P2P_by_other", "[VOICE_CHANNEL_NAME]", mPayload["disconnected_channel_name"].asString());
+
+		// skipping "You will now be reconnected to nearby" in notification when call is ended by disabling voice,
+		// so no reconnection to nearby chat happens (EXT-4397)
+		bool voice_works = LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking();
+		std::string reconnect_nearby = voice_works ? LLTrans::getString("reconnect_nearby") : std::string();
+		childSetTextArg("nearby", "[RECONNECT_NEARBY]", reconnect_nearby);
+
+		const std::string& nearby_str = mPayload["ended_by_agent"] ? NEARBY_P2P_BY_AGENT : NEARBY_P2P_BY_OTHER;
+		childSetTextArg(nearby_str, "[RECONNECT_NEARBY]", reconnect_nearby);
 	}
 
 	std::string callee_name = mPayload["session_name"].asString();
@@ -1643,6 +1665,7 @@ void LLOutgoingCallDialog::show(const LLSD& key)
 	{
 	case LLVoiceChannel::STATE_CALL_STARTED :
 		getChild<LLTextBox>("calling")->setVisible(true);
+		getChild<LLButton>("Cancel")->setVisible(true);
 		if(show_oldchannel)
 		{
 			getChild<LLTextBox>("leaving")->setVisible(true);
@@ -1664,7 +1687,8 @@ void LLOutgoingCallDialog::show(const LLSD& key)
 	case LLVoiceChannel::STATE_HUNG_UP :
 		if (mPayload["session_type"].asInteger() == LLIMModel::LLIMSession::P2P_SESSION)
 		{
-			getChild<LLTextBox>("nearby_P2P")->setVisible(true);
+			const std::string& nearby_str = mPayload["ended_by_agent"] ? NEARBY_P2P_BY_AGENT : NEARBY_P2P_BY_OTHER;
+			getChild<LLTextBox>(nearby_str)->setVisible(true);
 		} 
 		else
 		{
@@ -1683,7 +1707,8 @@ void LLOutgoingCallDialog::hideAllText()
 	getChild<LLTextBox>("calling")->setVisible(false);
 	getChild<LLTextBox>("leaving")->setVisible(false);
 	getChild<LLTextBox>("connecting")->setVisible(false);
-	getChild<LLTextBox>("nearby_P2P")->setVisible(false);
+	getChild<LLTextBox>("nearby_P2P_by_other")->setVisible(false);
+	getChild<LLTextBox>("nearby_P2P_by_agent")->setVisible(false);
 	getChild<LLTextBox>("nearby")->setVisible(false);
 	getChild<LLTextBox>("noanswer")->setVisible(false);
 }
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index 8ad8632c9974d716c504f4f5bae11e46f421ebe6..a6c839407156c4d1e4807f08af4e619c83ac79a5 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -452,7 +452,7 @@ class LLCallDialogManager : public LLInitClass<LLCallDialogManager>
 
 	static void initClass();
 	static void onVoiceChannelChanged(const LLUUID &session_id);
-	static void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction);
+	static void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction, bool ended_by_agent);
 
 protected:
 	static std::string sPreviousSessionlName;
@@ -472,6 +472,7 @@ class LLCallDialog : public LLDockableFloater
 
 	// check timer state
 	/*virtual*/ void draw();
+	/*virtual*/ void onOpen(const LLSD& key);
 
 protected:
 	// lifetime timer for a notification
diff --git a/indra/newview/llinspect.cpp b/indra/newview/llinspect.cpp
index c7b651f37cd2ff5cec75a5a3fad2f1f023ec293d..81cfce53b199ce0e2ab04ba891f6864eefb6a15a 100644
--- a/indra/newview/llinspect.cpp
+++ b/indra/newview/llinspect.cpp
@@ -32,6 +32,7 @@
 
 #include "llinspect.h"
 
+#include "lltooltip.h"
 #include "llcontrol.h"	// LLCachedControl
 #include "llui.h"		// LLUI::sSettingsGroups
 #include "llviewermenu.h"
@@ -104,6 +105,26 @@ BOOL LLInspect::handleHover(S32 x, S32 y, MASK mask)
 	return LLView::handleHover(x, y, mask);
 }
 
+BOOL LLInspect::handleToolTip(S32 x, S32 y, MASK mask)
+{
+	BOOL handled = FALSE;
+
+
+	//delegate handling of tooltip to the hovered child
+	LLView* child_handler = childFromPoint(x,y);
+	if (child_handler && !child_handler->getToolTip().empty())// show tooltip if a view has non-empty tooltip message
+	{
+		//build LLInspector params to get correct tooltip setting, etc. background image
+		LLInspector::Params params;
+		params.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>());
+		params.message = child_handler->getToolTip();
+		//set up delay if there is no visible tooltip at this moment
+		params.delay_time =  LLToolTipMgr::instance().toolTipVisible() ? 0.f : LLUI::sSettingGroups["config"]->getF32( "ToolTipDelay" );
+		LLToolTipMgr::instance().show(params);
+		handled = TRUE;
+	}
+	return handled;
+}
 // virtual
 void LLInspect::onMouseLeave(S32 x, S32 y, MASK mask)
 {
diff --git a/indra/newview/llinspect.h b/indra/newview/llinspect.h
index f8c86618d264814c851491eedc373ce797fec518..6d994a8d7c4d20646cab69ecc35696678df65001 100644
--- a/indra/newview/llinspect.h
+++ b/indra/newview/llinspect.h
@@ -47,6 +47,7 @@ class LLInspect : public LLFloater
 	/*virtual*/ void draw();
 	
 	/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
+	/*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask);
 	/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
 	
 	/// Start open animation
diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp
index 1a5795a2ae49479e1ea7b2727c6aecc60f39bcf8..91cbbbf43060093ed96b3c6dba6af5c14b1d4e7d 100644
--- a/indra/newview/llinspectobject.cpp
+++ b/indra/newview/llinspectobject.cpp
@@ -51,6 +51,7 @@
 #include "llmenubutton.h"
 #include "llresmgr.h"			// getMonetaryString
 #include "llsafehandle.h"
+#include "llsidetray.h"
 #include "lltextbox.h"			// for description truncation
 #include "lltrans.h"
 #include "llui.h"				// positionViewNearMouse()
@@ -643,8 +644,9 @@ void LLInspectObject::onClickOpen()
 
 void LLInspectObject::onClickMoreInfo()
 {
-	// *TODO: Show object info side panel, once that is implemented.
-	LLNotificationsUtil::add("ClickUnimplemented");
+	LLSD key;
+	key["task"] = "task";
+	LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);	
 	closeFloater();
 }
 
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index f68550d8fdadba917edaf4abdaa2877cb279f431..da95eaefca2ed5b0633077f0c14ad01b8509faa7 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -174,17 +174,21 @@ time_t LLInvFVBridge::getCreationDate() const
 }
 
 // Can be destroyed (or moved to trash)
-BOOL LLInvFVBridge::isItemRemovable()
+BOOL LLInvFVBridge::isItemRemovable() const
 {
 	const LLInventoryModel* model = getInventoryModel();
 	if(!model) 
 	{
 		return FALSE;
 	}
+
+	// Can't delete an item that's in the library.
 	if(!model->isObjectDescendentOf(mUUID, gInventory.getRootFolderID()))
 	{
 		return FALSE;
 	}
+
+	// Disable delete from COF folder; have users explicitly choose "detach/take off".
 	if (LLAppearanceManager::instance().getIsProtectedCOFItem(mUUID))
 	{
 		return FALSE;
@@ -461,11 +465,15 @@ BOOL LLInvFVBridge::isClipboardPasteableAsLink() const
 }
 
 void hide_context_entries(LLMenuGL& menu, 
-						const std::vector<std::string> &entries_to_show,
-						const std::vector<std::string> &disabled_entries)
+						const menuentry_vec_t &entries_to_show,
+						const menuentry_vec_t &disabled_entries)
 {
 	const LLView::child_list_t *list = menu.getChildList();
 
+	// For removing double separators or leading separator.  Start at true so that
+	// if the first element is a separator, it will not be shown.
+	BOOL is_previous_entry_separator = TRUE;
+
 	LLView::child_list_t::const_iterator itor;
 	for (itor = list->begin(); itor != list->end(); ++itor)
 	{
@@ -480,7 +488,7 @@ void hide_context_entries(LLMenuGL& menu,
 
 
 		bool found = false;
-		std::vector<std::string>::const_iterator itor2;
+		menuentry_vec_t::const_iterator itor2;
 		for (itor2 = entries_to_show.begin(); itor2 != entries_to_show.end(); ++itor2)
 		{
 			if (*itor2 == name)
@@ -488,6 +496,17 @@ void hide_context_entries(LLMenuGL& menu,
 				found = true;
 			}
 		}
+
+		// Don't allow multiple separators in a row (e.g. such as if there are no items
+		// between two separators).
+		if (found)
+		{
+			const BOOL is_entry_separator = (dynamic_cast<LLMenuItemSeparatorGL *>(*itor) != NULL);
+			if (is_entry_separator && is_previous_entry_separator)
+				found = false;
+			is_previous_entry_separator = is_entry_separator;
+		}
+		
 		if (!found)
 		{
 			(*itor)->setVisible(FALSE);
@@ -508,8 +527,8 @@ void hide_context_entries(LLMenuGL& menu,
 
 // Helper for commonly-used entries
 void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
-										std::vector<std::string> &items,
-										std::vector<std::string> &disabled_items, U32 flags)
+										menuentry_vec_t &items,
+										menuentry_vec_t &disabled_items, U32 flags)
 {
 	const LLInventoryObject *obj = getInventoryObject();
 
@@ -565,8 +584,12 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
 		}
 	}
 
-	items.push_back(std::string("Paste"));
-	if (!isClipboardPasteable() || (flags & FIRST_SELECTED_ITEM) == 0)
+	// Don't allow items to be pasted directly into the COF.
+	if (!isCOFFolder())
+	{
+		items.push_back(std::string("Paste"));
+	}
+	if (!isClipboardPasteable() || ((flags & FIRST_SELECTED_ITEM) == 0))
 	{
 		disabled_items.push_back(std::string("Paste"));
 	}
@@ -582,16 +605,7 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
 
 	items.push_back(std::string("Paste Separator"));
 
-	if (obj && obj->getIsLinkType() && !get_is_item_worn(mUUID))
-	{
-		items.push_back(std::string("Remove Link"));
-	}
-
-	items.push_back(std::string("Delete"));
-	if (!isItemRemovable())
-	{
-		disabled_items.push_back(std::string("Delete"));
-	}
+	addDeleteContextMenuOptions(items, disabled_items);
 
 	// If multiple items are selected, disable properties (if it exists).
 	if ((flags & FIRST_SELECTED_ITEM) == 0)
@@ -603,16 +617,11 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
 void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 {
 	lldebugs << "LLInvFVBridge::buildContextMenu()" << llendl;
-	std::vector<std::string> items;
-	std::vector<std::string> disabled_items;
-	if(isInTrash())
+	menuentry_vec_t items;
+	menuentry_vec_t disabled_items;
+	if(isItemInTrash())
 	{
-		items.push_back(std::string("PurgeItem"));
-		if (!isItemRemovable())
-		{
-			disabled_items.push_back(std::string("PurgeItem"));
-		}
-		items.push_back(std::string("RestoreItem"));
+		addTrashContextMenuOptions(items, disabled_items);
 	}
 	else
 	{
@@ -624,6 +633,53 @@ void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 	hide_context_entries(menu, items, disabled_items);
 }
 
+void LLInvFVBridge::addTrashContextMenuOptions(menuentry_vec_t &items,
+											   menuentry_vec_t &disabled_items)
+{
+	const LLInventoryObject *obj = getInventoryObject();
+	if (obj && obj->getIsLinkType())
+	{
+		items.push_back(std::string("Find Original"));
+		if (isLinkedObjectMissing())
+		{
+			disabled_items.push_back(std::string("Find Original"));
+		}
+	}
+	items.push_back(std::string("Purge Item"));
+	if (!isItemRemovable())
+	{
+		disabled_items.push_back(std::string("Purge Item"));
+	}
+	items.push_back(std::string("Restore Item"));
+}
+
+void LLInvFVBridge::addDeleteContextMenuOptions(menuentry_vec_t &items,
+												menuentry_vec_t &disabled_items)
+{
+	// Don't allow delete as a direct option from COF folder.
+	if (isCOFFolder())
+	{
+		return;
+	}
+
+	const LLInventoryObject *obj = getInventoryObject();
+
+	// "Remove link" and "Delete" are the same operation.
+	if (obj && obj->getIsLinkType() && !get_is_item_worn(mUUID))
+	{
+		items.push_back(std::string("Remove Link"));
+	}
+	else
+	{
+		items.push_back(std::string("Delete"));
+	}
+
+	if (!isItemRemovable())
+	{
+		disabled_items.push_back(std::string("Delete"));
+	}
+}
+
 // *TODO: remove this
 BOOL LLInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const
 {
@@ -670,7 +726,7 @@ LLInventoryModel* LLInvFVBridge::getInventoryModel() const
 	return panel ? panel->getModel() : NULL;
 }
 
-BOOL LLInvFVBridge::isInTrash() const
+BOOL LLInvFVBridge::isItemInTrash() const
 {
 	LLInventoryModel* model = getInventoryModel();
 	if(!model) return FALSE;
@@ -680,7 +736,7 @@ BOOL LLInvFVBridge::isInTrash() const
 
 BOOL LLInvFVBridge::isLinkedObjectInTrash() const
 {
-	if (isInTrash()) return TRUE;
+	if (isItemInTrash()) return TRUE;
 
 	const LLInventoryObject *obj = getInventoryObject();
 	if (obj && obj->getIsLinkType())
@@ -731,7 +787,7 @@ void LLInvFVBridge::changeItemParent(LLInventoryModel* model,
 									 const LLUUID& new_parent_id,
 									 BOOL restamp)
 {
-	if(item->getParentUUID() != new_parent_id)
+	if (item->getParentUUID() != new_parent_id)
 	{
 		LLInventoryModel::update_list_t update;
 		LLInventoryModel::LLCategoryUpdate old_folder(item->getParentUUID(),-1);
@@ -1057,6 +1113,9 @@ void LLItemBridge::restoreItem()
 
 void LLItemBridge::restoreToWorld()
 {
+	//Similar functionality to the drag and drop rez logic
+	bool remove_from_inventory = false;
+
 	LLViewerInventoryItem* itemp = (LLViewerInventoryItem*)getItem();
 	if (itemp)
 	{
@@ -1069,23 +1128,20 @@ void LLItemBridge::restoreToWorld()
 		msg->nextBlockFast(_PREHASH_InventoryData);
 		itemp->packMessage(msg);
 		msg->sendReliable(gAgent.getRegion()->getHost());
-	}
 
-	//Similar functionality to the drag and drop rez logic
-	BOOL remove_from_inventory = FALSE;
-
-	//remove local inventory copy, sim will deal with permissions and removing the item
-	//from the actual inventory if its a no-copy etc
-	if(!itemp->getPermissions().allowCopyBy(gAgent.getID()))
-	{
-		remove_from_inventory = TRUE;
-	}
-
-	// Check if it's in the trash. (again similar to the normal rez logic)
-	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
-	if(gInventory.isObjectDescendentOf(itemp->getUUID(), trash_id))
-	{
-		remove_from_inventory = TRUE;
+		//remove local inventory copy, sim will deal with permissions and removing the item
+		//from the actual inventory if its a no-copy etc
+		if(!itemp->getPermissions().allowCopyBy(gAgent.getID()))
+		{
+			remove_from_inventory = true;
+		}
+		
+		// Check if it's in the trash. (again similar to the normal rez logic)
+		const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
+		if(gInventory.isObjectDescendentOf(itemp->getUUID(), trash_id))
+		{
+			remove_from_inventory = true;
+		}
 	}
 
 	if(remove_from_inventory)
@@ -1412,7 +1468,7 @@ class LLIsItemRemovable : public LLFolderViewFunctor
 };
 
 // Can be destroyed (or moved to trash)
-BOOL LLFolderBridge::isItemRemovable()
+BOOL LLFolderBridge::isItemRemovable() const
 {
 	LLInventoryModel* model = getInventoryModel();
 	if(!model)
@@ -1471,7 +1527,7 @@ BOOL LLFolderBridge::isUpToDate() const
 
 BOOL LLFolderBridge::isItemCopyable() const
 {
-	return TRUE;
+	return FALSE;
 }
 
 BOOL LLFolderBridge::copyToClipboard() const
@@ -2176,7 +2232,10 @@ void LLFolderBridge::determineFolderType()
 	{
 		LLInventoryModel* model = getInventoryModel();
 		LLViewerInventoryCategory* category = model->getCategory(mUUID);
-		category->determineFolderType();
+		if (category)
+		{
+			category->determineFolderType();
+		}
 	}
 }
 
@@ -2373,7 +2432,9 @@ void LLFolderBridge::pasteFromClipboard()
 				{
 					// move_inventory_item() is not enough,
 					//we have to update inventory locally too
-					changeItemParent(model, dynamic_cast<LLViewerInventoryItem*>(item), parent_id, FALSE);
+					LLViewerInventoryItem* viitem = dynamic_cast<LLViewerInventoryItem*>(item);
+					llassert(viitem);
+					changeItemParent(model, viitem, parent_id, FALSE);
 				}
 				else
 				{
@@ -2439,17 +2500,19 @@ void LLFolderBridge::staticFolderOptionsMenu()
 
 void LLFolderBridge::folderOptionsMenu()
 {
-	std::vector<std::string> disabled_items;
+	menuentry_vec_t disabled_items;
 
 	LLInventoryModel* model = getInventoryModel();
 	if(!model) return;
 
 	const LLInventoryCategory* category = model->getCategory(mUUID);
+	if(!category) return;
+
 	LLFolderType::EType type = category->getPreferredType();
-	const bool is_system_folder = category && LLFolderType::lookupIsProtectedType(type);
+	const bool is_system_folder = LLFolderType::lookupIsProtectedType(type);
 	// BAP change once we're no longer treating regular categories as ensembles.
-	const bool is_ensemble = category && (type == LLFolderType::FT_NONE ||
-										  LLFolderType::lookupIsEnsembleType(type));
+	const bool is_ensemble = (type == LLFolderType::FT_NONE ||
+				  LLFolderType::lookupIsEnsembleType(type));
 
 	// calling card related functionality for folders.
 
@@ -2457,7 +2520,7 @@ void LLFolderBridge::folderOptionsMenu()
 	if (is_sidepanel)
 	{
 		mItems.push_back("Rename");
-		mItems.push_back("Delete");
+		addDeleteContextMenuOptions(mItems, disabled_items);
 	}
 
 	// Only enable calling-card related options for non-system folders.
@@ -2572,7 +2635,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 
 	lldebugs << "LLFolderBridge::buildContextMenu()" << llendl;
 
-//	std::vector<std::string> disabled_items;
+//	menuentry_vec_t disabled_items;
 	LLInventoryModel* model = getInventoryModel();
 	if(!model) return;
 	const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
@@ -2589,17 +2652,11 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 		// This is the trash.
 		mItems.push_back(std::string("Empty Trash"));
 	}
-	else if(model->isObjectDescendentOf(mUUID, trash_id))
+	else if(isItemInTrash())
 	{
 		// This is a folder in the trash.
 		mItems.clear(); // clear any items that used to exist
-		mItems.push_back(std::string("Purge Item"));
-		if (!isItemRemovable())
-		{
-			mDisabledItems.push_back(std::string("Purge Item"));
-		}
-
-		mItems.push_back(std::string("Restore Item"));
+		addTrashContextMenuOptions(mItems, mDisabledItems);
 	}
 	else if(isAgentInventory()) // do not allow creating in library
 	{
@@ -2617,24 +2674,27 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 			mItems.push_back(std::string("New Gesture"));
 			mItems.push_back(std::string("New Clothes"));
 			mItems.push_back(std::string("New Body Parts"));
-			mItems.push_back(std::string("Change Type"));
 
-			LLViewerInventoryCategory *cat = getCategory();
+			// Changing folder types is just a debug feature; this is fairly unsupported
+			// and can lead to unexpected behavior if enabled.
+#if !LL_RELEASE_FOR_DOWNLOAD
+			mItems.push_back(std::string("Change Type"));
+			const LLViewerInventoryCategory *cat = getCategory();
 			if (cat && LLFolderType::lookupIsProtectedType(cat->getPreferredType()))
 			{
 				mDisabledItems.push_back(std::string("Change Type"));
 			}
-
+#endif
 			getClipboardEntries(false, mItems, mDisabledItems, flags);
 		}
 		else
 		{
 			// Want some but not all of the items from getClipboardEntries for outfits.
-			if (cat && cat->getPreferredType()==LLFolderType::FT_OUTFIT)
+			if (cat && (cat->getPreferredType() == LLFolderType::FT_OUTFIT))
 			{
 				mItems.push_back(std::string("Rename"));
-				mItems.push_back(std::string("Delete"));
 
+				addDeleteContextMenuOptions(mItems, mDisabledItems);
 				// EXT-4030: disallow deletion of currently worn outfit
 				const LLViewerInventoryItem *base_outfit_link = LLAppearanceManager::instance().getBaseOutfitLink();
 				if (base_outfit_link && (cat == base_outfit_link->getLinkedCategory()))
@@ -2949,7 +3009,6 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 	LLViewerObject* object = NULL;
 	if(LLToolDragAndDrop::SOURCE_AGENT == source)
 	{
-
 		BOOL is_movable = TRUE;
 		switch( inv_item->getActualType() )
 		{
@@ -2961,11 +3020,18 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 		}
 
 		const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
-		BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id);
+		const BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id);
 		const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
-		BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
-		BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_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());
 
+		// Can't explicitly drag things out of the COF.
+		if (move_is_outof_current_outfit)
+		{
+			is_movable = FALSE;
+		}
+		
 		if(is_movable && move_is_into_trash)
 		{
 			is_movable = inv_item->getIsLinkType() || !get_is_item_worn(inv_item->getUUID());
@@ -3203,17 +3269,11 @@ bool LLTextureBridge::canSaveTexture(void)
 void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 {
 	lldebugs << "LLTextureBridge::buildContextMenu()" << llendl;
-	std::vector<std::string> items;
-	std::vector<std::string> disabled_items;
-	if(isInTrash())
+	menuentry_vec_t items;
+	menuentry_vec_t disabled_items;
+	if(isItemInTrash())
 	{
-		items.push_back(std::string("Purge Item"));
-		if (!isItemRemovable())
-		{
-			disabled_items.push_back(std::string("Purge Item"));
-		}
-
-		items.push_back(std::string("Restore Item"));
+		addTrashContextMenuOptions(items, disabled_items);
 	}
 	else
 	{
@@ -3296,18 +3356,12 @@ void LLSoundBridge::openSoundPreview(void* which)
 void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 {
 	lldebugs << "LLSoundBridge::buildContextMenu()" << llendl;
-	std::vector<std::string> items;
-	std::vector<std::string> disabled_items;
+	menuentry_vec_t items;
+	menuentry_vec_t disabled_items;
 
-	if(isInTrash())
+	if(isItemInTrash())
 	{
-		items.push_back(std::string("Purge Item"));
-		if (!isItemRemovable())
-		{
-			disabled_items.push_back(std::string("Purge Item"));
-		}
-
-		items.push_back(std::string("Restore Item"));
+		addTrashContextMenuOptions(items, disabled_items);
 	}
 	else
 	{
@@ -3344,19 +3398,13 @@ LLUIImagePtr LLLandmarkBridge::getIcon() const
 
 void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 {
-	std::vector<std::string> items;
-	std::vector<std::string> disabled_items;
+	menuentry_vec_t items;
+	menuentry_vec_t disabled_items;
 
 	lldebugs << "LLLandmarkBridge::buildContextMenu()" << llendl;
-	if(isInTrash())
+	if(isItemInTrash())
 	{
-		items.push_back(std::string("Purge Item"));
-		if (!isItemRemovable())
-		{
-			disabled_items.push_back(std::string("Purge Item"));
-		}
-
-		items.push_back(std::string("Restore Item"));
+		addTrashContextMenuOptions(items, disabled_items);
 	}
 	else
 	{
@@ -3570,18 +3618,12 @@ void LLCallingCardBridge::openItem()
 void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 {
 	lldebugs << "LLCallingCardBridge::buildContextMenu()" << llendl;
-	std::vector<std::string> items;
-	std::vector<std::string> disabled_items;
+	menuentry_vec_t items;
+	menuentry_vec_t disabled_items;
 
-	if(isInTrash())
+	if(isItemInTrash())
 	{
-		items.push_back(std::string("Purge Item"));
-		if (!isItemRemovable())
-		{
-			disabled_items.push_back(std::string("Purge Item"));
-		}
-
-		items.push_back(std::string("Restore Item"));
+		addTrashContextMenuOptions(items, disabled_items);
 	}
 	else
 	{
@@ -3592,9 +3634,13 @@ void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 
 		LLInventoryItem* item = getItem();
 		BOOL good_card = (item
-						  && (LLUUID::null != item->getCreatorUUID())
-						  && (item->getCreatorUUID() != gAgent.getID()));
-		BOOL user_online = (LLAvatarTracker::instance().isBuddyOnline(item->getCreatorUUID()));
+				  && (LLUUID::null != item->getCreatorUUID())
+				  && (item->getCreatorUUID() != gAgent.getID()));
+		BOOL user_online = FALSE;
+		if (item)
+		{
+			user_online = (LLAvatarTracker::instance().isBuddyOnline(item->getCreatorUUID()));
+		}
 		items.push_back(std::string("Send Instant Message Separator"));
 		items.push_back(std::string("Send Instant Message"));
 		items.push_back(std::string("Offer Teleport..."));
@@ -3781,7 +3827,12 @@ void LLGestureBridge::performAction(LLFolderView* folder, LLInventoryModel* mode
 			BOOL inform_server = TRUE;
 			BOOL deactivate_similar = FALSE;
 			LLGestureManager::instance().setGestureLoadedCallback(mUUID, boost::bind(&LLGestureBridge::playGesture, mUUID));
-			LLGestureManager::instance().activateGestureWithAsset(mUUID, gInventory.getItem(mUUID)->getAssetUUID(), inform_server, deactivate_similar);
+			LLViewerInventoryItem* item = gInventory.getItem(mUUID);
+			llassert(item);
+			if (item)
+			{
+				LLGestureManager::instance().activateGestureWithAsset(mUUID, item->getAssetUUID(), inform_server, deactivate_similar);
+			}
 		}
 		else
 		{
@@ -3836,17 +3887,11 @@ BOOL LLGestureBridge::removeItem()
 void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 {
 	lldebugs << "LLGestureBridge::buildContextMenu()" << llendl;
-	std::vector<std::string> items;
-	std::vector<std::string> disabled_items;
-	if(isInTrash())
+	menuentry_vec_t items;
+	menuentry_vec_t disabled_items;
+	if(isItemInTrash())
 	{
-		items.push_back(std::string("Purge Item"));
-		if (!isItemRemovable())
-		{
-			disabled_items.push_back(std::string("Purge Item"));
-		}
-
-		items.push_back(std::string("Restore Item"));
+		addTrashContextMenuOptions(items, disabled_items);
 	}
 	else
 	{
@@ -3898,19 +3943,13 @@ LLUIImagePtr LLAnimationBridge::getIcon() const
 
 void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 {
-	std::vector<std::string> items;
-	std::vector<std::string> disabled_items;
+	menuentry_vec_t items;
+	menuentry_vec_t disabled_items;
 
 	lldebugs << "LLAnimationBridge::buildContextMenu()" << llendl;
-	if(isInTrash())
+	if(isItemInTrash())
 	{
-		items.push_back(std::string("Purge Item"));
-		if (!isItemRemovable())
-		{
-			disabled_items.push_back(std::string("Purge Item"));
-		}
-
-		items.push_back(std::string("Restore Item"));
+		addTrashContextMenuOptions(items, disabled_items);
 	}
 	else
 	{
@@ -4036,12 +4075,13 @@ void LLObjectBridge::performAction(LLFolderView* folder, LLInventoryModel* model
 			gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
 			gMessageSystem->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID());
 			gMessageSystem->sendReliable( gAgent.getRegion()->getHost());
-		}
-		// this object might have been selected, so let the selection manager know it's gone now
-		LLViewerObject *found_obj = gObjectList.findObject(item->getLinkedUUID());
-		if (found_obj)
-		{
-			LLSelectMgr::getInstance()->remove(found_obj);
+
+			// this object might have been selected, so let the selection manager know it's gone now
+			LLViewerObject *found_obj = gObjectList.findObject(item->getLinkedUUID());
+			if (found_obj)
+			{
+				LLSelectMgr::getInstance()->remove(found_obj);
+			}
 		}
 	}
 	else LLItemBridge::performAction(folder, model, action);
@@ -4179,17 +4219,11 @@ static LLNotificationFunctorRegistration confirm_replace_attachment_rez_reg("Rep
 
 void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 {
-	std::vector<std::string> items;
-	std::vector<std::string> disabled_items;
-	if(isInTrash())
+	menuentry_vec_t items;
+	menuentry_vec_t disabled_items;
+	if(isItemInTrash())
 	{
-		items.push_back(std::string("Purge Item"));
-		if (!isItemRemovable())
-		{
-			disabled_items.push_back(std::string("Purge Item"));
-		}
-
-		items.push_back(std::string("Restore Item"));
+		addTrashContextMenuOptions(items, disabled_items);
 	}
 	else
 	{
@@ -4215,9 +4249,10 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 
 			if( get_is_item_worn( mUUID ) )
 			{
+				items.push_back(std::string("Attach Separator"));
 				items.push_back(std::string("Detach From Yourself"));
 			}
-			else if (!isInTrash() && !isLinkedObjectInTrash() && !isLinkedObjectMissing())
+			else if (!isItemInTrash() && !isLinkedObjectInTrash() && !isLinkedObjectMissing())
 			{
 				items.push_back(std::string("Attach Separator"));
 				items.push_back(std::string("Object Wear"));
@@ -4555,7 +4590,7 @@ void LLWearableBridge::openItem()
 		LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel());
 	}
 	/*
-	if( isInTrash() )
+	if( isItemInTrash() )
 	{
 		LLNotificationsUtil::add("CannotWearTrash");
 	}
@@ -4595,17 +4630,11 @@ void LLWearableBridge::openItem()
 void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 {
 	lldebugs << "LLWearableBridge::buildContextMenu()" << llendl;
-	std::vector<std::string> items;
-	std::vector<std::string> disabled_items;
-	if(isInTrash())
+	menuentry_vec_t items;
+	menuentry_vec_t disabled_items;
+	if(isItemInTrash())
 	{
-		items.push_back(std::string("Purge Item"));
-		if (!isItemRemovable())
-		{
-			disabled_items.push_back(std::string("Purge Item"));
-		}
-
-		items.push_back(std::string("Restore Item"));
+		addTrashContextMenuOptions(items, disabled_items);
 	}
 	else
 	{	// FWIW, it looks like SUPPRESS_OPEN_ITEM is not set anywhere
@@ -4913,8 +4942,12 @@ void LLWearableBridge::onRemoveFromAvatarArrived(LLWearable* wearable,
 	}
 
 	// 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());
-	llassert(items.size() == 1); // Should always have one and only one item linked to this in the COF.
+	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)
@@ -4950,7 +4983,10 @@ void LLWearableBridge::removeAllClothesFromAvatar()
 		// Find and remove this item from the COF.
 		LLInventoryModel::item_array_t items = gInventory.collectLinkedItems(
 			item_id, LLAppearanceManager::instance().getCOF());
-		llassert(items.size() == 1); // Should always have one and only one item linked to this in the COF.
+		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)
@@ -5192,7 +5228,7 @@ void	LLLSLTextBridgeAction::doIt()
 }
 
 
-BOOL LLWearableBridgeAction::isInTrash() const
+BOOL LLWearableBridgeAction::isItemInTrash() const
 {
 	if(!mModel) return FALSE;
 	const LLUUID trash_id = mModel->findCategoryUUIDForType(LLFolderType::FT_TRASH);
@@ -5240,7 +5276,7 @@ void LLWearableBridgeAction::wearOnAvatar()
 //virtual
 void LLWearableBridgeAction::doIt()
 {
-	if(isInTrash())
+	if(isItemInTrash())
 	{
 		LLNotificationsUtil::add("CannotWearTrash");
 	}
@@ -5299,30 +5335,20 @@ void LLLinkItemBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 {
 	// *TODO: Translate
 	lldebugs << "LLLink::buildContextMenu()" << llendl;
-	std::vector<std::string> items;
-	std::vector<std::string> disabled_items;
+	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(isInTrash())
+	if(isItemInTrash())
 	{
-		items.push_back(std::string("Purge Item"));
-		if (!isItemRemovable())
-		{
-			disabled_items.push_back(std::string("Purge Item"));
-		}
-
-		items.push_back(std::string("Restore Item"));
+		addTrashContextMenuOptions(items, disabled_items);
 	}
 	else
 	{
 		items.push_back(std::string("Properties"));
-		items.push_back(std::string("Delete"));
-		if (!isItemRemovable())
-		{
-			disabled_items.push_back(std::string("Delete"));
-		}
+		addDeleteContextMenuOptions(items, disabled_items);
 	}
 	hide_context_entries(menu, items, disabled_items);
 }
@@ -5353,27 +5379,17 @@ void LLLinkFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 {
 	// *TODO: Translate
 	lldebugs << "LLLink::buildContextMenu()" << llendl;
-	std::vector<std::string> items;
-	std::vector<std::string> disabled_items;
+	menuentry_vec_t items;
+	menuentry_vec_t disabled_items;
 
-	if(isInTrash())
+	if (isItemInTrash())
 	{
-		items.push_back(std::string("Purge Item"));
-		if (!isItemRemovable())
-		{
-			disabled_items.push_back(std::string("Purge Item"));
-		}
-
-		items.push_back(std::string("Restore Item"));
+		addTrashContextMenuOptions(items, disabled_items);
 	}
 	else
 	{
 		items.push_back(std::string("Find Original"));
-		items.push_back(std::string("Delete"));
-		if (!isItemRemovable())
-		{
-			disabled_items.push_back(std::string("Delete"));
-		}
+		addDeleteContextMenuOptions(items, disabled_items);
 	}
 	hide_context_entries(menu, items, disabled_items);
 }
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index 6fffec96a07839500d0d92c925e62cac49893ebf..32504091cb9ca273288efc565421b7b7c8f011bf 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -107,13 +107,15 @@ struct LLAttachmentRezAction
 	S32		mAttachPt;
 };
 
+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 std::vector<std::string> &entries_to_show,
-						const std::vector<std::string> &disabled_entries);
+						  const menuentry_vec_t &entries_to_show,
+						  const menuentry_vec_t &disabled_entries);
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLInvFVBridge (& it's derived classes)
+// Class LLInvFVBridge (& its derived classes)
 //
 // Short for Inventory-Folder-View-Bridge. This is an
 // implementation class to be able to view inventory items.
@@ -158,8 +160,10 @@ class LLInvFVBridge : public LLFolderViewEventListener
 	virtual void showProperties();
 	virtual BOOL isItemRenameable() const { return TRUE; }
 	//virtual BOOL renameItem(const std::string& new_name) {}
-	virtual BOOL isItemRemovable();
+	virtual BOOL isItemRemovable() const;
 	virtual BOOL isItemMovable() const;
+	virtual BOOL isItemInTrash() const;
+
 	//virtual BOOL removeItem() = 0;
 	virtual void removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batch);
 	virtual void move(LLFolderViewEventListener* new_parent_bridge) {}
@@ -170,8 +174,8 @@ class LLInvFVBridge : public LLFolderViewEventListener
 	virtual BOOL isClipboardPasteableAsLink() const;
 	virtual void pasteFromClipboard() {}
 	virtual void pasteLinkFromClipboard() {}
-	void getClipboardEntries(bool show_asset_id, std::vector<std::string> &items, 
-		std::vector<std::string> &disabled_items, U32 flags);
+	void getClipboardEntries(bool show_asset_id, menuentry_vec_t &items, 
+		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,
@@ -185,13 +189,21 @@ class LLInvFVBridge : public LLFolderViewEventListener
 	// Allow context menus to be customized for side panel.
 	bool isInOutfitsSidePanel() const;
 
+	//--------------------------------------------------------------------
+	// Convenience functions for adding various common menu options.
+	//--------------------------------------------------------------------
+protected:
+	virtual void addTrashContextMenuOptions(menuentry_vec_t &items,
+											menuentry_vec_t &disabled_items);
+	virtual void addDeleteContextMenuOptions(menuentry_vec_t &items,
+											 menuentry_vec_t &disabled_items);
+
 protected:
 	LLInvFVBridge(LLInventoryPanel* inventory, const LLUUID& uuid);
 
 	LLInventoryObject* getInventoryObject() const;
 	LLInventoryModel* getInventoryModel() const;
 	
-	BOOL isInTrash() const;
 	BOOL isLinkedObjectInTrash() const; // Is this obj or its baseobj in the trash?
 	BOOL isLinkedObjectMissing() const; // Is this a linked obj whose baseobj is not in inventory?
 
@@ -306,7 +318,7 @@ class LLFolderBridge : public LLInvFVBridge
 							EDragAndDropType cargo_type,
 							void* cargo_data);
 
-	virtual BOOL isItemRemovable();
+	virtual BOOL isItemRemovable() const;
 	virtual BOOL isItemMovable() const ;
 	virtual BOOL isUpToDate() const;
 	virtual BOOL isItemCopyable() const;
@@ -359,8 +371,8 @@ class LLFolderBridge : public LLInvFVBridge
 	BOOL			mCallingCards;
 	BOOL			mWearables;
 	LLMenuGL*		mMenu;
-	std::vector<std::string> mItems;
-	std::vector<std::string> mDisabledItems;
+	menuentry_vec_t mItems;
+	menuentry_vec_t mDisabledItems;
 };
 
 // DEPRECATED
@@ -786,7 +798,7 @@ class LLWearableBridgeAction: public LLInvFVBridgeAction
 	LLWearableBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){}
 
 
-	BOOL isInTrash() const;
+	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;
@@ -814,7 +826,7 @@ 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 std::vector<std::string> &entries_to_show, 
-		const std::vector<std::string> &disabled_entries);
+		const menuentry_vec_t &entries_to_show, 
+		const menuentry_vec_t &disabled_entries);
 
 #endif // LL_LLINVENTORYBRIDGE_H
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 12a2c370d2f3108083c44210cd0847cf73c27e74..ca9b94262955348cfc543c7fbc016f9fc85d9769 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -143,6 +143,7 @@ BOOL LLInventoryPanel::postBuild()
 		addChild(mScroller);
 		mScroller->addChild(mFolders);
 		mFolders->setScrollContainer(mScroller);
+		mFolders->addChild(mFolders->mStatusTextBox);
 	}
 
 	// Set up the callbacks from the inventory we're viewing, and then build everything.
@@ -432,7 +433,26 @@ void LLInventoryPanel::initializeViews()
 	rebuildViewsFor(mStartFolderID);
 
 	mViewsInitialized = true;
+	
 	openStartFolderOrMyInventory();
+	
+	// Special case for new user login
+	if (gAgent.isFirstLogin())
+	{
+		// Auto open the user's library
+		LLFolderViewFolder* lib_folder = mFolders->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());
+		if (my_inv_folder)
+		{
+			my_inv_folder->setOpenArrangeRecursively(FALSE, LLFolderViewFolder::RECURSE_DOWN);
+		}
+	}
 }
 
 void LLInventoryPanel::rebuildViewsFor(const LLUUID& id)
@@ -503,6 +523,11 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
 				{
 					folderp->setHidden(TRUE);
 				}
+				const LLViewerInventoryCategory *cat = dynamic_cast<LLViewerInventoryCategory *>(objectp);
+				if (cat && getIsHiddenFolderType(cat->getPreferredType()))
+				{
+					folderp->setHidden(TRUE);
+				}
 			}
 		}
 		else 
@@ -534,6 +559,12 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id)
 		if (itemp)
 		{
 			itemp->addToFolder(parent_folder, mFolders);
+
+			// Don't add children of hidden folders unless this is the panel's root folder.
+			if (itemp->getHidden() && (id != mStartFolderID))
+			{
+				return;
+			}
 		}
 	}
 
@@ -935,3 +966,16 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)
 
 	return NULL;
 }
+
+void LLInventoryPanel::addHideFolderType(LLFolderType::EType folder_type)
+{
+	if (!getIsHiddenFolderType(folder_type))
+	{
+		mHiddenFolderTypes.push_back(folder_type);
+	}
+}
+
+BOOL LLInventoryPanel::getIsHiddenFolderType(LLFolderType::EType folder_type) const
+{
+	return (std::find(mHiddenFolderTypes.begin(), mHiddenFolderTypes.end(), folder_type) != mHiddenFolderTypes.end());
+}
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index ccff795a51920db3f29329a79a1a495982a0db47..f312b588b934a55ddc938d08e2b136f0008c4760 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -61,6 +61,9 @@ class LLTabContainer;
 
 class LLInventoryPanel : public LLPanel
 {
+	//--------------------------------------------------------------------
+	// Data
+	//--------------------------------------------------------------------
 public:
 	static const std::string DEFAULT_SORT_ORDER;
 	static const std::string RECENTITEMS_SORT_ORDER;
@@ -97,13 +100,16 @@ class LLInventoryPanel : public LLPanel
 		{}
 	};
 
+	//--------------------------------------------------------------------
+	// Initialization
+	//--------------------------------------------------------------------
 protected:
 	LLInventoryPanel(const Params&);
 	friend class LLUICtrlFactory;
-
 public:
 	virtual ~LLInventoryPanel();
 
+public:
 	LLInventoryModel* getModel() { return mInventory; }
 
 	BOOL postBuild();
@@ -186,6 +192,16 @@ class LLInventoryPanel : public LLPanel
 	 */
 	const LLInventoryFVBridgeBuilder* mInvFVBridgeBuilder;
 
+	//--------------------------------------------------------------------
+	// Hidden folders
+	//--------------------------------------------------------------------
+public:
+	void addHideFolderType(LLFolderType::EType folder_type);
+protected:
+	BOOL getIsHiddenFolderType(LLFolderType::EType folder_type) const;
+private:
+	std::vector<LLFolderType::EType> mHiddenFolderTypes;
+
 	//--------------------------------------------------------------------
 	// Initialization routines for building up the UI ("views")
 	//--------------------------------------------------------------------
diff --git a/indra/newview/lllocaltextureobject.cpp b/indra/newview/lllocaltextureobject.cpp
index 69eb5fce2fc559a08faf8a8e07aedd13eedd56af..116d9bc446b08fe7346db20dabbad577e34adcd1 100644
--- a/indra/newview/lllocaltextureobject.cpp
+++ b/indra/newview/lllocaltextureobject.cpp
@@ -70,6 +70,7 @@ LLLocalTextureObject::LLLocalTextureObject(const LLLocalTextureObject& lto) :
 		if (!original_layer)
 		{
 			llerrs << "could not clone Local Texture Object: unable to extract texlayer!" << llendl;
+			continue;
 		}
 
 		LLTexLayer* new_layer = new LLTexLayer(*original_layer);
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 4f40a0a532262933b30748ce97c4c4d919b69c0a..f48c96190fda4d087337abee386d2c97d9bd869a 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -176,7 +176,9 @@ class LLParcelChangeObserver : public LLParcelObserver
 static LLDefaultChildRegistry::Register<LLLocationInputCtrl> r("location_input");
 
 LLLocationInputCtrl::Params::Params()
-:	add_landmark_image_enabled("add_landmark_image_enabled"),
+:	icon_maturity_general("icon_maturity_general"),
+	icon_maturity_adult("icon_maturity_adult"),
+	add_landmark_image_enabled("add_landmark_image_enabled"),
 	add_landmark_image_disabled("add_landmark_image_disabled"),
 	add_landmark_image_hover("add_landmark_image_hover"),
 	add_landmark_image_selected("add_landmark_image_selected"),
@@ -185,6 +187,7 @@ LLLocationInputCtrl::Params::Params()
 	add_landmark_button("add_landmark_button"),
 	for_sale_button("for_sale_button"),
 	info_button("info_button"),
+	maturity_icon("maturity_icon"),
 	voice_icon("voice_icon"),
 	fly_icon("fly_icon"),
 	push_icon("push_icon"),
@@ -204,7 +207,9 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
 	mForSaleBtn(NULL),
 	mInfoBtn(NULL),
 	mLandmarkImageOn(NULL),
-	mLandmarkImageOff(NULL)
+	mLandmarkImageOff(NULL),
+	mIconMaturityGeneral(NULL),
+	mIconMaturityAdult(NULL)
 {
 	// Lets replace default LLLineEditor with LLLocationLineEditor
 	// to make needed escaping while copying and cutting url
@@ -227,6 +232,7 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
 	params.commit_on_focus_lost(false);
 	params.follows.flags(FOLLOWS_ALL);
 	mTextEntry = LLUICtrlFactory::create<LLURLLineEditor>(params);
+	mTextEntry->setContextMenu(NULL);
 	addChild(mTextEntry);
 	// LLLineEditor is replaced with LLLocationLineEditor
 
@@ -263,7 +269,20 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
 	mAddLandmarkBtn = LLUICtrlFactory::create<LLButton>(al_params);
 	enableAddLandmarkButton(true);
 	addChild(mAddLandmarkBtn);
-	
+
+	if (p.icon_maturity_general())
+	{
+		mIconMaturityGeneral = p.icon_maturity_general;
+	}
+	if (p.icon_maturity_adult())
+	{
+		mIconMaturityAdult = p.icon_maturity_adult;
+	}
+
+	LLIconCtrl::Params maturity_icon = p.maturity_icon;
+	mMaturityIcon = LLUICtrlFactory::create<LLIconCtrl>(maturity_icon);
+	addChild(mMaturityIcon);
+
 	LLButton::Params for_sale_button = p.for_sale_button;
 	for_sale_button.tool_tip = LLTrans::getString("LocationCtrlForSaleTooltip");
 	for_sale_button.click_callback.function(
@@ -470,7 +489,10 @@ void LLLocationInputCtrl::onTextEntry(LLLineEditor* line_editor)
  */
 void LLLocationInputCtrl::setText(const LLStringExplicit& text)
 {
-	mTextEntry->setText(text);
+	if (mTextEntry)
+	{
+		mTextEntry->setText(text);
+	}
 	mHasAutocompletedText = FALSE;
 }
 
@@ -479,7 +501,9 @@ void LLLocationInputCtrl::setFocus(BOOL b)
 	LLComboBox::setFocus(b);
 
 	if (mTextEntry && b && !mList->getVisible())
+	{
 		mTextEntry->setFocus(TRUE);
+	}
 }
 
 void LLLocationInputCtrl::handleLoginComplete()
@@ -521,6 +545,25 @@ void LLLocationInputCtrl::draw()
 	LLComboBox::draw();
 }
 
+void LLLocationInputCtrl::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+	LLComboBox::reshape(width, height, called_from_parent);
+
+	// Setting cursor to 0  to show the left edge of the text. See EXT-4967.
+	mTextEntry->setCursor(0);
+	if (mTextEntry->hasSelection())
+	{
+		// Deselecting because selection position is changed together with
+		// cursor position change.
+		mTextEntry->deselect();
+	}
+
+	if (isHumanReadableLocationVisible)
+	{
+		positionMaturityIcon();
+	}
+}
+
 void LLLocationInputCtrl::onInfoButtonClicked()
 {
 	LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent"));
@@ -650,8 +693,8 @@ void LLLocationInputCtrl::refreshLocation()
 {
 	// Is one of our children focused?
 	if (LLUICtrl::hasFocus() || mButton->hasFocus() || mList->hasFocus() ||
-		(mTextEntry && mTextEntry->hasFocus()) || (mAddLandmarkBtn->hasFocus()))
-
+	    (mTextEntry && mTextEntry->hasFocus()) ||
+	    (mAddLandmarkBtn->hasFocus()))
 	{
 		llwarns << "Location input should not be refreshed when having focus" << llendl;
 		return;
@@ -671,6 +714,34 @@ void LLLocationInputCtrl::refreshLocation()
 	// store human-readable location to compare it in changeLocationPresentation()
 	mHumanReadableLocation = location_name;
 	setText(location_name);
+	isHumanReadableLocationVisible = true;
+
+	// Updating maturity rating icon.
+	LLViewerRegion* region = gAgent.getRegion();
+	if (!region)
+		return;
+
+	U8 sim_access = region->getSimAccess();
+	switch(sim_access)
+	{
+	case SIM_ACCESS_PG:
+		mMaturityIcon->setValue(mIconMaturityGeneral->getName());
+		mMaturityIcon->setVisible(TRUE);
+		break;
+
+	case SIM_ACCESS_ADULT:
+		mMaturityIcon->setValue(mIconMaturityAdult->getName());
+		mMaturityIcon->setVisible(TRUE);
+		break;
+
+	default:
+		mMaturityIcon->setVisible(FALSE);
+	}
+
+	if (mMaturityIcon->getVisible())
+	{
+		positionMaturityIcon();
+	}
 }
 
 // returns new right edge
@@ -691,7 +762,7 @@ void LLLocationInputCtrl::refreshParcelIcons()
 {
 	// Our "cursor" moving right to left
 	S32 x = mAddLandmarkBtn->getRect().mLeft;
-	
+
 	static LLUICachedControl<bool> show_properties("NavBarShowParcelProperties", false);
 	if (show_properties)
 	{
@@ -761,7 +832,7 @@ void LLLocationInputCtrl::refreshParcelIcons()
 		}
 		mDamageText->setVisible(false);
 	}
-	
+
 	S32 left_pad, right_pad;
 	mTextEntry->getTextPadding(&left_pad, &right_pad);
 	right_pad = mTextEntry->getRect().mRight - x;
@@ -784,6 +855,25 @@ void LLLocationInputCtrl::refreshHealth()
 	}
 }
 
+void LLLocationInputCtrl::positionMaturityIcon()
+{
+	const LLFontGL* font = mTextEntry->getFont();
+	if (!font)
+		return;
+
+	S32 left_pad, right_pad;
+	mTextEntry->getTextPadding(&left_pad, &right_pad);
+
+	// Calculate the right edge of rendered text + a whitespace.
+	left_pad = left_pad + font->getWidth(mTextEntry->getText()) + font->getWidth(" ");
+
+	LLRect rect = mMaturityIcon->getRect();
+	mMaturityIcon->setRect(rect.setOriginAndSize(left_pad, rect.mBottom, rect.getWidth(), rect.getHeight()));
+
+	// Hide icon if it text area is not width enough to display it, show otherwise.
+	mMaturityIcon->setVisible(rect.mRight < mTextEntry->getRect().getWidth() - right_pad);
+}
+
 void LLLocationInputCtrl::rebuildLocationHistory(std::string filter)
 {
 	LLLocationHistory::location_list_t filtered_items;
@@ -884,16 +974,23 @@ void LLLocationInputCtrl::updateWidgetlayout()
 
 void LLLocationInputCtrl::changeLocationPresentation()
 {
-	//change location presentation only if user does not  select/past anything and 
-	//human-readable region name  is being displayed
+	if (!mTextEntry)
+		return;
+
+	//change location presentation only if user does not select/paste anything and 
+	//human-readable region name is being displayed
 	std::string text = mTextEntry->getText();
 	LLStringUtil::trim(text);
-	if(mTextEntry && !mTextEntry->hasSelection() && text == mHumanReadableLocation )
+	if(!mTextEntry->hasSelection() && text == mHumanReadableLocation)
 	{
 		//needs unescaped one
 		mTextEntry->setText(LLAgentUI::buildSLURL(false));
 		mTextEntry->selectAll();
-	}	
+
+		mMaturityIcon->setVisible(FALSE);
+
+		isHumanReadableLocationVisible = false;
+	}
 }
 
 void LLLocationInputCtrl::onLocationContextMenuItemClicked(const LLSD& userdata)
diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h
index a830b33f6f91929fb7decb1c224f13c1ffd34f2e..caa62daa1b0399ff5e9171199b42bd90ab7c21bf 100644
--- a/indra/newview/lllocationinputctrl.h
+++ b/indra/newview/lllocationinputctrl.h
@@ -63,7 +63,9 @@ class LLLocationInputCtrl
 	struct Params 
 	:	public LLInitParam::Block<Params, LLComboBox::Params>
 	{
-		Optional<LLUIImage*>				add_landmark_image_enabled,
+		Optional<LLUIImage*>				icon_maturity_general,
+											icon_maturity_adult,
+											add_landmark_image_enabled,
 											add_landmark_image_disabled,
 											add_landmark_image_hover,
 											add_landmark_image_selected;
@@ -72,7 +74,8 @@ class LLLocationInputCtrl
 		Optional<LLButton::Params>			add_landmark_button,
 											for_sale_button,
 											info_button;
-		Optional<LLIconCtrl::Params>		voice_icon,
+		Optional<LLIconCtrl::Params>		maturity_icon,
+											voice_icon,
 											fly_icon,
 											push_icon,
 											build_icon,
@@ -89,6 +92,7 @@ class LLLocationInputCtrl
 	/*virtual*/ void		onFocusReceived();
 	/*virtual*/ void		onFocusLost();
 	/*virtual*/ void		draw();
+	/*virtual*/ void		reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
 	//========================================================================
 
 	// LLUICtrl interface
@@ -131,6 +135,7 @@ class LLLocationInputCtrl
 	void					refreshParcelIcons();
 	// Refresh the value in the health percentage text field
 	void					refreshHealth();
+	void					positionMaturityIcon();
 	
 	void					rebuildLocationHistory(std::string filter = "");
 	bool 					findTeleportItemsByTitle(const LLTeleportHistoryItem& item, const std::string& filter);
@@ -160,7 +165,8 @@ class LLLocationInputCtrl
 	LLButton*				mInfoBtn;
 	S32						mIconHPad;			// pad between all icons
 	S32						mAddLandmarkHPad;	// pad to left of landmark star
-	
+
+	LLIconCtrl*	mMaturityIcon;
 	LLIconCtrl*	mParcelIcon[ICON_COUNT];
 	LLTextBox* mDamageText;
 
@@ -172,11 +178,14 @@ class LLLocationInputCtrl
 	boost::signals2::connection	mLocationHistoryConnection;
 	LLUIImage* mLandmarkImageOn;
 	LLUIImage* mLandmarkImageOff;
+	LLUIImage* mIconMaturityGeneral;
+	LLUIImage* mIconMaturityAdult;
 
 	std::string mAddLandmarkTooltip;
 	std::string mEditLandmarkTooltip;
 	// this field holds a human-readable form of the location string, it is needed to be able to compare copy-pated value and real location
 	std::string mHumanReadableLocation;
+	bool isHumanReadableLocationVisible;
 };
 
 #endif
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index d464862eedcf1c9c5a2b1d0e040b3da7c5fc99aa..501a137b4253ac49f8397a2460864371f2fa9b5b 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -542,9 +542,9 @@ void LLMediaCtrl::navigateToLocalPage( const std::string& subdir, const std::str
 
 	if (! gDirUtilp->fileExists(expanded_filename))
 	{
-		if (language != "en-us")
+		if (language != "en")
 		{
-			expanded_filename = gDirUtilp->findSkinnedFilename("html", "en-us", filename);
+			expanded_filename = gDirUtilp->findSkinnedFilename("html", "en", filename);
 			if (! gDirUtilp->fileExists(expanded_filename))
 			{
 				llwarns << "File " << subdir << delim << filename_in << "not found" << llendl;
@@ -982,16 +982,20 @@ void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self )
 	U32 target_type = self->getClickTargetType();
 	
 	// is there is a target specified for the link?
-	if (gSavedSettings.getBOOL("UseExternalBrowser") || target_type == LLPluginClassMedia::TARGET_EXTERNAL)
+	if (target_type == LLPluginClassMedia::TARGET_EXTERNAL ||
+		target_type == LLPluginClassMedia::TARGET_BLANK )
 	{
-		LLSD payload;
-		payload["url"] = url;
-		payload["target_type"] = LLSD::Integer(target_type);
-		LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, onClickLinkExternalTarget);
-	}
-	else if (target_type == LLPluginClassMedia::TARGET_BLANK)
-	{
-		clickLinkWithTarget(url, target_type);
+		if (gSavedSettings.getBOOL("UseExternalBrowser"))
+		{
+			LLSD payload;
+			payload["url"] = url;
+			payload["target_type"] = LLSD::Integer(target_type);
+			LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, onClickLinkExternalTarget);
+		}
+		else
+		{
+			clickLinkWithTarget(url, target_type);
+		}
 	}
 	else {
 		const std::string protocol1( "http://" );
@@ -1042,7 +1046,7 @@ bool LLMediaCtrl::onClickLinkExternalTarget(const LLSD& notification, const LLSD
 // static 
 void LLMediaCtrl::clickLinkWithTarget(const std::string& url, const S32& target_type )
 {
-	if (gSavedSettings.getBOOL("UseExternalBrowser") || target_type == LLPluginClassMedia::TARGET_EXTERNAL)
+	if (target_type == LLPluginClassMedia::TARGET_EXTERNAL)
 	{
 		// load target in an external browser
 		LLWeb::loadURLExternal(url);
diff --git a/indra/newview/llmediadataclient.h b/indra/newview/llmediadataclient.h
index 75d32e707b49cc7f8801d4902ca7ac0353c8b5cb..8dd72cb5952c85c7fd96bdc87bac7ca0c1ab0512 100755
--- a/indra/newview/llmediadataclient.h
+++ b/indra/newview/llmediadataclient.h
@@ -37,7 +37,7 @@
 #include <queue>
 #include "llrefcount.h"
 #include "llpointer.h"
-#include "lltimer.h"
+#include "lleventtimer.h"
 
 
 // Link seam for LLVOVolume
diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp
index 73d5fccfbdbad9343ebeb08b16d89a307aa3ef43..5058939b0ad5abf7d5c3e4b0ef6b5a8772049bba 100644
--- a/indra/newview/llnamelistctrl.cpp
+++ b/indra/newview/llnamelistctrl.cpp
@@ -152,6 +152,7 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
 		if (avatar_id.notNull())
 		{
 			// ...valid avatar id
+
 			LLScrollListCell* hit_cell = hit_item->getColumn(column_index);
 			if (hit_cell)
 			{
@@ -162,8 +163,8 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask)
 				localRectToScreen(cell_rect, &sticky_rect);
 
 				// Spawn at right side of cell
-				LLCoordGL pos( sticky_rect.mRight - 16, sticky_rect.mTop + (sticky_rect.getHeight()-16)/2 );
 				LLPointer<LLUIImage> icon = LLUI::getUIImage("Info_Small");
+				LLCoordGL pos( sticky_rect.mRight - 16, sticky_rect.mTop - (sticky_rect.getHeight() - icon->getHeight())/2 );
 
 				// Should we show a group or an avatar inspector?
 				bool is_group = hit_item->getValue()["is_group"].asBoolean();
@@ -327,8 +328,7 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& full_name, boo
 		LLScrollListItem* item = *iter;
 		if (item->getUUID() == id)
 		{
-			LLScrollListCell* cell = (LLScrollListCell*)item->getColumn(0);
-			cell = item->getColumn(mNameColumnIndex);
+			LLScrollListCell* cell = item->getColumn(mNameColumnIndex);
 			if (cell)
 			{
 				cell->setValue(full_name);
@@ -343,8 +343,9 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& full_name, boo
 // static
 void LLNameListCtrl::refreshAll(const LLUUID& id, const std::string& full_name, bool is_group)
 {
+	LLInstanceTrackerScopedGuard guard;
 	LLInstanceTracker<LLNameListCtrl>::instance_iter it;
-	for (it = beginInstances(); it != endInstances(); ++it)
+	for (it = guard.beginInstances(); it != guard.endInstances(); ++it)
 	{
 		LLNameListCtrl& ctrl = *it;
 		ctrl.refresh(id, full_name, is_group);
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index 59708fcfb52a15e524c3289fd2a904b4d7b32c2e..46cab0d86872fbde234e123292e1bebebe25e34c 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -185,43 +185,46 @@ void LLTeleportHistoryMenuItem::onMouseLeave(S32 x, S32 y, MASK mask)
 
 static LLDefaultChildRegistry::Register<LLPullButton> menu_button("pull_button");
 
-LLPullButton::LLPullButton(const LLPullButton::Params& params):
-		LLButton(params)
-	,	mClickDraggingSignal(NULL)
+LLPullButton::LLPullButton(const LLPullButton::Params& params) :
+	LLButton(params)
 {
 	setDirectionFromName(params.direction);
 }
-boost::signals2::connection LLPullButton::setClickDraggingCallback( const commit_signal_t::slot_type& cb ) 
-{ 
-	if (!mClickDraggingSignal) mClickDraggingSignal = new commit_signal_t();
-	return mClickDraggingSignal->connect(cb); 
+boost::signals2::connection LLPullButton::setClickDraggingCallback(const commit_signal_t::slot_type& cb)
+{
+	return mClickDraggingSignal.connect(cb);
 }
 
 /*virtual*/
 void LLPullButton::onMouseLeave(S32 x, S32 y, MASK mask)
 {
 	LLButton::onMouseLeave(x, y, mask);
-	
-	if(mMouseDownTimer.getStarted() )
+
+	if (mMouseDownTimer.getStarted()) //an user have done a mouse down, if the timer started. see LLButton::handleMouseDown for details
 	{
-		const LLVector2 cursor_direction = LLVector2(F32(x),F32(y)) - mLastMouseDown;
-		if( angle_between(mDraggingDirection, cursor_direction) < 0.5 * F_PI_BY_TWO)//call if angle < pi/4 
-			{
-				if(mClickDraggingSignal)
-				{
-					(*mClickDraggingSignal)(this, LLSD());
-				}
-			}
+		const LLVector2 cursor_direction = LLVector2(F32(x), F32(y)) - mLastMouseDown;
+		/* For now cursor_direction points to the direction of mouse movement
+		 * Need to decide whether should we fire a signal. 
+		 * We fire if angle between mDraggingDirection and cursor_direction is less that 45 degree
+		 * Note:
+		 * 0.5 * F_PI_BY_TWO equals to PI/4 radian that equals to angle of 45 degrees
+		 */
+		if (angle_between(mDraggingDirection, cursor_direction) < 0.5 * F_PI_BY_TWO)//call if angle < pi/4 
+		{
+			mClickDraggingSignal(this, LLSD());
+		}
 	}
 
 }
 
 /*virtual*/
 BOOL LLPullButton::handleMouseDown(S32 x, S32 y, MASK mask)
+{
+	BOOL handled = LLButton::handleMouseDown(x, y, mask);
+	if (handled)
 	{
-	BOOL handled = LLButton::handleMouseDown(x,y, mask);
-	if(handled)
-	{
+		//if mouse down was handled by button, 
+		//capture mouse position to calculate the direction of  mouse move  after mouseLeave event 
 		mLastMouseDown.set(F32(x), F32(y));
 	}
 	return handled;
@@ -230,27 +233,31 @@ BOOL LLPullButton::handleMouseDown(S32 x, S32 y, MASK mask)
 /*virtual*/
 BOOL LLPullButton::handleMouseUp(S32 x, S32 y, MASK mask)
 {
+	// reset data to get ready for next circle 
 	mLastMouseDown.clear();
 	return LLButton::handleMouseUp(x, y, mask);
 }
-
+/**
+ * this function is setting up dragging direction vector. 
+ * Last one is just unit vector. It points to direction of mouse drag that we need to handle   
+ */
 void LLPullButton::setDirectionFromName(const std::string& name)
 {
 	if (name == "left")
 	{
-		mDraggingDirection.set(F32(-1), F32(0)); 
+		mDraggingDirection.set(F32(-1), F32(0));
 	}
 	else if (name == "right")
 	{
-		mDraggingDirection.set(F32(0), F32(1)); 
+		mDraggingDirection.set(F32(0), F32(1));
 	}
 	else if (name == "down")
 	{
-		 mDraggingDirection.set(F32(0), F32(-1)); 
+		mDraggingDirection.set(F32(0), F32(-1));
 	}
 	else if (name == "up")
 	{
-		 mDraggingDirection.set(F32(0), F32(1)); 
+		mDraggingDirection.set(F32(0), F32(1));
 	}
 }
 
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index 9d0abc7a3a78c281f306ee7f866272fa3ff1ceaf..b512f2a79c7b32294d8515f72e6cb715714b9bda 100644
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -44,46 +44,41 @@ class LLSearchComboBox;
 /**
  * This button is able to handle click-dragging mouse event.
  * It has appropriated signal for this event.
- * Dragging direction can be set from xml by attribute called 'direction'
+ * Dragging direction can be set from xml attribute called 'direction'
  * 
  * *TODO: move to llui?  
  */
 
-class LLPullButton : public LLButton
+class LLPullButton: public LLButton
 {
 	LOG_CLASS(LLPullButton);
-	
+
 public:
-	
-	struct Params : public LLInitParam::Block<Params, LLButton::Params>
+	struct Params: public LLInitParam::Block<Params, LLButton::Params>
 	{
-		Optional<std::string>	direction; // left, right, down, up
-		
-		Params()
-		:	direction("direction","down")
-		{}
+		Optional<std::string> direction; // left, right, down, up
+
+		Params() 
+		:	direction("direction", "down")
+		{
+		}
 	};
 	
 	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
-	
+
 	/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
-	
+
 	/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
 
-	boost::signals2::connection setClickDraggingCallback( const commit_signal_t::slot_type& cb );
-	
-	/* virtual*/ ~LLPullButton()
-	{
-		delete mClickDraggingSignal;
-	}
-	
+	boost::signals2::connection setClickDraggingCallback(const commit_signal_t::slot_type& cb);
+
 protected:
 	friend class LLUICtrlFactory;
 	// convert string name into direction vector
 	void setDirectionFromName(const std::string& name);
 	LLPullButton(const LLPullButton::Params& params);
-	
-	commit_signal_t* mClickDraggingSignal;	
+
+	commit_signal_t mClickDraggingSignal;
 	LLVector2 mLastMouseDown;
 	LLVector2 mDraggingDirection;
 };
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 6de47fccd2ce08555b0a62c86a5057402d6b7260..8fc11d3929b2db6816e24ed87366eef4a3c86a4e 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -200,18 +200,16 @@ void	LLNearbyChat::addMessage(const LLChat& chat,bool archive,const LLSD &args)
 		mMessageArchive.push_back(chat);
 		if(mMessageArchive.size()>200)
 			mMessageArchive.erase(mMessageArchive.begin());
+	}
 
-		if (gSavedPerAccountSettings.getBOOL("LogChat")) 
-		{
-			if (chat.mChatType != CHAT_TYPE_WHISPER && chat.mChatType != CHAT_TYPE_SHOUT)
-			{
-				LLLogChat::saveHistory("chat", chat.mFromName, chat.mFromID, chat.mText);
-			}
-			else
-			{
-				LLLogChat::saveHistory("chat", "", chat.mFromID, chat.mFromName + " " + chat.mText);
-			}
-		}
+	if (args["do_not_log"].asBoolean()) 
+	{
+		return;
+	}
+
+	if (gSavedPerAccountSettings.getBOOL("LogChat")) 
+	{
+		LLLogChat::saveHistory("chat", chat.mFromName, chat.mFromID, chat.mText);
 	}
 }
 
@@ -282,6 +280,9 @@ void LLNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue)
 
 void LLNearbyChat::loadHistory()
 {
+	LLSD do_not_log;
+	do_not_log["do_not_log"] = true;
+
 	std::list<LLSD> history;
 	LLLogChat::loadAllHistory("chat", history);
 
@@ -302,7 +303,7 @@ void LLNearbyChat::loadHistory()
 		chat.mFromID = from_id;
 		chat.mText = msg[IM_TEXT].asString();
 		chat.mTimeStr = msg[IM_TIME].asString();
-		addMessage(chat);
+		addMessage(chat, true, do_not_log);
 
 		it++;
 	}
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index c08ca30babec38c30f5b5f395249ecd0b095c939..29e3c66684a7b30a1d3c1ddb0fcaaafc82c569ec 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -274,6 +274,13 @@ void LLNearbyChatScreenChannel::showToastsBottom()
 			toast->setRect(toast_rect);
 			toast->setIsHidden(false);
 			toast->setVisible(TRUE);
+
+			if(!toast->hasFocus())
+			{
+				// Fixing Z-order of toasts (EXT-4862)
+				// Next toast will be positioned under this one.
+				gFloaterView->sendChildToBack(toast);
+			}
 			
 			bottom = toast->getRect().mTop;
 		}		
@@ -338,8 +345,10 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args)
 		//	tmp_chat.mFromName = tmp_chat.mFromID.asString();
 	}
 	nearby_chat->addMessage(chat_msg, true, args);
-	if(nearby_chat->getVisible())
-		return;//no need in toast if chat is visible
+	if( nearby_chat->getVisible()
+		|| ( chat_msg.mSourceType == CHAT_SOURCE_AGENT
+			&& gSavedSettings.getBOOL("UseChatBubbles") ) )
+		return;//no need in toast if chat is visible or if bubble chat is enabled
 
 	// Handle irc styled messages for toast panel
 	if (tmp_chat.mChatStyle == CHAT_STYLE_IRC)
diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp
index 388fdeea7af729ff21a45faee0f3181dd9704a23..9857e37bc37b37d59c88812dc7a80bdd085e2776 100644
--- a/indra/newview/lloutputmonitorctrl.cpp
+++ b/indra/newview/lloutputmonitorctrl.cpp
@@ -249,6 +249,11 @@ void LLOutputMonitorCtrl::draw()
 
 void LLOutputMonitorCtrl::setSpeakerId(const LLUUID& speaker_id)
 {
+	if (speaker_id.isNull() && mSpeakerId.notNull())
+	{
+		LLSpeakingIndicatorManager::unregisterSpeakingIndicator(mSpeakerId, this);
+	}
+
 	if (speaker_id.isNull() || speaker_id == mSpeakerId) return;
 
 	if (mSpeakerId.notNull())
@@ -256,6 +261,7 @@ void LLOutputMonitorCtrl::setSpeakerId(const LLUUID& speaker_id)
 		// Unregister previous registration to avoid crash. EXT-4782.
 		LLSpeakingIndicatorManager::unregisterSpeakingIndicator(mSpeakerId, this);
 	}
+
 	mSpeakerId = speaker_id;
 	LLSpeakingIndicatorManager::registerSpeakingIndicator(mSpeakerId, this);
 
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 500142aa677bd05d517d789caf45300c9df8ae2d..1cc16a14bb70f1e529b7bfaf4fd505f578295202 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -196,10 +196,9 @@ void LLPanelAvatarNotes::fillRightsData()
 		childSetValue("map_check",LLRelationship::GRANT_MAP_LOCATION & rights ? TRUE : FALSE);
 		childSetValue("objects_check",LLRelationship::GRANT_MODIFY_OBJECTS & rights ? TRUE : FALSE);
 
-		childSetEnabled("status_check",TRUE);
-		childSetEnabled("map_check",TRUE);
-		childSetEnabled("objects_check",TRUE);
 	}
+
+	enableCheckboxes(NULL != relation);
 }
 
 void LLPanelAvatarNotes::onCommitNotes()
@@ -249,6 +248,17 @@ void LLPanelAvatarNotes::confirmModifyRights(bool grant, S32 rights)
 
 void LLPanelAvatarNotes::onCommitRights()
 {
+	const LLRelationship* buddy_relationship =
+		LLAvatarTracker::instance().getBuddyInfo(getAvatarId());
+
+	if (NULL == buddy_relationship)
+	{
+		// Lets have a warning log message instead of having a crash. EXT-4947.
+		llwarns << "Trying to modify rights for non-friend avatar. Skipped." << llendl;
+		return;
+	}
+
+
 	S32 rights = 0;
 
 	if(childGetValue("status_check").asBoolean())
@@ -258,8 +268,6 @@ void LLPanelAvatarNotes::onCommitRights()
 	if(childGetValue("objects_check").asBoolean())
 		rights |= LLRelationship::GRANT_MODIFY_OBJECTS;
 
-	const LLRelationship* buddy_relationship =
-			LLAvatarTracker::instance().getBuddyInfo(getAvatarId());
 	bool allow_modify_objects = childGetValue("objects_check").asBoolean();
 
 	// if modify objects checkbox clicked
@@ -303,9 +311,7 @@ void LLPanelAvatarNotes::resetControls()
 	//Disable "Add Friend" button for friends.
 	childSetEnabled("add_friend", TRUE);
 
-	childSetEnabled("status_check",FALSE);
-	childSetEnabled("map_check",FALSE);
-	childSetEnabled("objects_check",FALSE);
+	enableCheckboxes(false);
 }
 
 void LLPanelAvatarNotes::onAddFriendButtonClick()
@@ -333,6 +339,13 @@ void LLPanelAvatarNotes::onShareButtonClick()
 	//*TODO not implemented.
 }
 
+void LLPanelAvatarNotes::enableCheckboxes(bool enable)
+{
+	childSetEnabled("status_check", enable);
+	childSetEnabled("map_check", enable);
+	childSetEnabled("objects_check", enable);
+}
+
 LLPanelAvatarNotes::~LLPanelAvatarNotes()
 {
 	if(getAvatarId().notNull())
@@ -347,6 +360,9 @@ LLPanelAvatarNotes::~LLPanelAvatarNotes()
 void LLPanelAvatarNotes::changed(U32 mask)
 {
 	childSetEnabled("teleport", LLAvatarTracker::instance().isBuddyOnline(getAvatarId()));
+
+	// update rights to avoid have checkboxes enabled when friendship is terminated. EXT-4947.
+	fillRightsData();
 }
 
 // virtual
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h
index 632590aa279ad945bfc4c1a4e8086b1a635d077c..52b4255e341444361b1c1621cc58fcf60c0b42af 100644
--- a/indra/newview/llpanelavatar.h
+++ b/indra/newview/llpanelavatar.h
@@ -259,8 +259,8 @@ class LLPanelMyProfile
 };
 
 /**
-* Panel for displaying Avatar's notes and modifying friend's rights.
-*/
+ * Panel for displaying Avatar's notes and modifying friend's rights.
+ */
 class LLPanelAvatarNotes 
 	: public LLPanelProfileTab
 	, public LLFriendObserver
@@ -311,6 +311,7 @@ class LLPanelAvatarNotes
 	void onCallButtonClick();
 	void onTeleportButtonClick();
 	void onShareButtonClick();
+	void enableCheckboxes(bool enable);
 };
 
 #endif // LL_LLPANELAVATAR_H
diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index 1e46827c1ae1d6f326f80f1f3b159c5340aa60ce..8ca044f72b4fd210a9d0198a5c330b7689104248 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -242,7 +242,7 @@ BOOL LLPanelClassified::postBuild()
 	mNameEditor->setCommitOnFocusLost(TRUE);
 	mNameEditor->setFocusReceivedCallback(boost::bind(focusReceived, _1, this));
 	mNameEditor->setCommitCallback(onCommitAny, this);
-	mNameEditor->setPrevalidate( LLLineEditor::prevalidateASCII );
+	mNameEditor->setPrevalidate( LLTextValidate::validateASCII );
 
     mDescEditor = getChild<LLTextEditor>("desc_editor");
 	mDescEditor->setCommitOnFocusLost(TRUE);
@@ -1072,7 +1072,7 @@ BOOL LLFloaterPriceForListing::postBuild()
 	LLLineEditor* edit = getChild<LLLineEditor>("price_edit");
 	if (edit)
 	{
-		edit->setPrevalidate(LLLineEditor::prevalidateNonNegativeS32);
+		edit->setPrevalidate(LLTextValidate::validateNonNegativeS32);
 		std::string min_price = llformat("%d", MINIMUM_PRICE_FOR_LISTING);
 		edit->setText(min_price);
 		edit->selectAll();
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 469f1c1739a9dafc96a6378bf23bf56ed5e734fa..ce4078409ab8d004a21a9ab215eee9a868a0f696 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -90,6 +90,7 @@ LLPanelGroup::LLPanelGroup()
 :	LLPanel(),
 	LLGroupMgrObserver( LLUUID() ),
 	mSkipRefresh(FALSE),
+	mButtonJoin(NULL),
 	mShowingNotifyDialog(false)
 {
 	// Set up the factory callbacks.
@@ -159,10 +160,6 @@ BOOL LLPanelGroup::postBuild()
 	button = getChild<LLButton>("btn_chat");
 	button->setClickedCallback(onBtnGroupChatClicked, this);
 
-	button = getChild<LLButton>("btn_join");
-	button->setVisible(false);
-	button->setEnabled(true);
-
 	button = getChild<LLButton>("btn_cancel");
 	button->setVisible(false);	button->setEnabled(true);
 
@@ -174,7 +171,7 @@ BOOL LLPanelGroup::postBuild()
 	childSetCommitCallback("back",boost::bind(&LLPanelGroup::onBackBtnClick,this),NULL);
 
 	childSetCommitCallback("btn_create",boost::bind(&LLPanelGroup::onBtnCreate,this),NULL);
-	childSetCommitCallback("btn_join",boost::bind(&LLPanelGroup::onBtnJoin,this),NULL);
+	
 	childSetCommitCallback("btn_cancel",boost::bind(&LLPanelGroup::onBtnCancel,this),NULL);
 
 	LLPanelGroupTab* panel_general = findChild<LLPanelGroupTab>("group_general_tab_panel");
@@ -188,7 +185,17 @@ BOOL LLPanelGroup::postBuild()
 	if(panel_land)		mTabs.push_back(panel_land);
 
 	if(panel_general)
+	{
 		panel_general->setupCtrls(this);
+		button = panel_general->getChild<LLButton>("btn_join");
+		button->setVisible(false);
+		button->setEnabled(true);
+		
+		mButtonJoin = button;
+		mButtonJoin->setCommitCallback(boost::bind(&LLPanelGroup::onBtnJoin,this));
+
+		mJoinText = panel_general->getChild<LLUICtrl>("join_cost_text");
+	}
 
 	gVoiceClient->addObserver(this);
 	
@@ -326,16 +333,13 @@ void LLPanelGroup::update(LLGroupChange gc)
 	{
 		childSetValue("group_name", gdatap->mName);
 		childSetToolTip("group_name",gdatap->mName);
-
-		LLButton* btn_join = getChild<LLButton>("btn_join");
-		LLUICtrl* join_text = getChild<LLUICtrl>("join_cost_text");
-
+		
 		LLGroupData agent_gdatap;
 		bool is_member = gAgent.getGroupData(mID,agent_gdatap);
 		bool join_btn_visible = !is_member && gdatap->mOpenEnrollment;
 		
-		btn_join->setVisible(join_btn_visible);
-		join_text->setVisible(join_btn_visible);
+		mButtonJoin->setVisible(join_btn_visible);
+		mJoinText->setVisible(join_btn_visible);
 
 		if(join_btn_visible)
 		{
@@ -351,7 +355,7 @@ void LLPanelGroup::update(LLGroupChange gc)
 			{
 				fee_buff = getString("group_join_free", string_args);
 			}
-			childSetValue("join_cost_text",fee_buff);
+			mJoinText->setValue(fee_buff);
 		}
 	}
 }
@@ -380,7 +384,7 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
 	LLButton* button_apply = findChild<LLButton>("btn_apply");
 	LLButton* button_refresh = findChild<LLButton>("btn_refresh");
 	LLButton* button_create = findChild<LLButton>("btn_create");
-	LLButton* button_join = findChild<LLButton>("btn_join");
+	
 	LLButton* button_cancel = findChild<LLButton>("btn_cancel");
 	LLButton* button_call = findChild<LLButton>("btn_call");
 	LLButton* button_chat = findChild<LLButton>("btn_chat");
@@ -417,8 +421,8 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
 	if(!tab_general || !tab_roles || !tab_notices || !tab_land)
 		return;
 	
-	if(button_join)
-		button_join->setVisible(false);
+	if(mButtonJoin)
+		mButtonJoin->setVisible(false);
 
 
 	if(is_null_group_id)//creating new group
@@ -478,6 +482,7 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
 	}
 
 	reposButtons();
+	update(GC_ALL);//show/hide "join" button if data is already ready
 }
 
 bool LLPanelGroup::apply(LLPanelGroupTab* tab)
diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h
index 6e23eedffbe454c2136dbd1598f7fb9663a5d9e8..136868a60d26e98230de5eb134f7b7011a1f08cd 100644
--- a/indra/newview/llpanelgroup.h
+++ b/indra/newview/llpanelgroup.h
@@ -130,6 +130,9 @@ class LLPanelGroup : public LLPanel,
 
 	std::vector<LLPanelGroupTab* > mTabs;
 
+	LLButton*		mButtonJoin;
+	LLUICtrl*		mJoinText;
+
 };
 
 class LLPanelGroupTab : public LLPanel
diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp
index 51fc670d877a92c529eb4f1d8051f0dda86f9f7f..555e277ce55fcb09b832a7ad231cbd47def7bd6e 100644
--- a/indra/newview/llpanelgroupgeneral.cpp
+++ b/indra/newview/llpanelgroupgeneral.cpp
@@ -206,15 +206,19 @@ BOOL LLPanelGroupGeneral::postBuild()
 
 void LLPanelGroupGeneral::setupCtrls(LLPanel* panel_group)
 {
-	mInsignia = panel_group->getChild<LLTextureCtrl>("insignia");
+	mInsignia = getChild<LLTextureCtrl>("insignia");
 	if (mInsignia)
 	{
 		mInsignia->setCommitCallback(onCommitAny, this);
 		mDefaultIconID = mInsignia->getImageAssetID();
 	}
-	mFounderName = panel_group->getChild<LLNameBox>("founder_name");
+	mFounderName = getChild<LLNameBox>("founder_name");
+
+
 	mGroupNameEditor = panel_group->getChild<LLLineEditor>("group_name_editor");
-	mGroupNameEditor->setPrevalidate( LLLineEditor::prevalidateASCII );
+	mGroupNameEditor->setPrevalidate( LLTextValidate::validateASCII );
+	
+
 }
 
 // static
diff --git a/indra/newview/llpanellandaudio.cpp b/indra/newview/llpanellandaudio.cpp
index 6a4c9097592b805c67182df247a52d532f0c0538..a92b4357ed7294b472e4c91e40c3106b4db2a8ed 100644
--- a/indra/newview/llpanellandaudio.cpp
+++ b/indra/newview/llpanellandaudio.cpp
@@ -153,6 +153,13 @@ void LLPanelLandAudio::refresh()
 		mCheckParcelEnableVoice->set(allow_voice);
 		mCheckParcelVoiceLocal->set(!parcel->getParcelFlagUseEstateVoiceChannel());
 
+		// don't display urls if you're not able to change it
+		// much requested change in forums so people can't 'steal' urls
+		// NOTE: bug#2009 means this is still vunerable - however, bug
+		// should be closed since this bug opens up major security issues elsewhere.
+		bool obscure_music = ! can_change_media && parcel->getObscureMusic();
+		
+		mMusicURLEdit->setDrawAsterixes(obscure_music);
 		mMusicURLEdit->setText(parcel->getMusicURL());
 		mMusicURLEdit->setEnabled( can_change_media );
 	}
diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp
index ff27282cbf9419ab45112a4b9c77345f6163eb1f..3f292dc4169c13334cb16c13f115df8a0965744e 100644
--- a/indra/newview/llpanellandmarkinfo.cpp
+++ b/indra/newview/llpanellandmarkinfo.cpp
@@ -413,21 +413,24 @@ void LLPanelLandmarkInfo::populateFoldersList()
 
 	// Put the "Landmarks" folder first in list.
 	LLUUID landmarks_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK);
-	const LLViewerInventoryCategory* cat = gInventory.getCategory(landmarks_id);
-	if (!cat)
+	const LLViewerInventoryCategory* lmcat = gInventory.getCategory(landmarks_id);
+	if (!lmcat)
 	{
 		llwarns << "Cannot find the landmarks folder" << llendl;
 	}
-	std::string cat_full_name = getFullFolderName(cat);
-	mFolderCombo->add(cat_full_name, cat->getUUID());
+	else
+	{
+		std::string cat_full_name = getFullFolderName(lmcat);
+		mFolderCombo->add(cat_full_name, lmcat->getUUID());
+	}
 
 	typedef std::vector<folder_pair_t> folder_vec_t;
 	folder_vec_t folders;
 	// Sort the folders by their full name.
 	for (S32 i = 0; i < cats.count(); i++)
 	{
-		cat = cats.get(i);
-		cat_full_name = getFullFolderName(cat);
+		const LLViewerInventoryCategory* cat = cats.get(i);
+		std::string cat_full_name = getFullFolderName(cat);
 		folders.push_back(folder_pair_t(cat->getUUID(), cat_full_name));
 	}
 	sort(folders.begin(), folders.end(), cmp_folders);
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 47feef496af1f99033e172b0d73559d921595221..f1cb6e87a3da191c006b94b28b0f028990c6d452 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -171,8 +171,6 @@ BOOL LLLandmarksPanel::postBuild()
 	initLandmarksInventoryPanel();
 	initMyInventoryPanel();
 	initLibraryInventoryPanel();
-	getChild<LLAccordionCtrlTab>("tab_favorites")->setDisplayChildren(true);
-	getChild<LLAccordionCtrlTab>("tab_landmarks")->setDisplayChildren(true);
 
 	return TRUE;
 }
@@ -462,7 +460,7 @@ void LLLandmarksPanel::initFavoritesInventoryPanel()
 	initLandmarksPanel(mFavoritesInventoryPanel);
 	mFavoritesInventoryPanel->getFilter()->setEmptyLookupMessage("FavoritesNoMatchingItems");
 
-	initAccordion("tab_favorites", mFavoritesInventoryPanel);
+	initAccordion("tab_favorites", mFavoritesInventoryPanel, true);
 }
 
 void LLLandmarksPanel::initLandmarksInventoryPanel()
@@ -481,7 +479,7 @@ void LLLandmarksPanel::initLandmarksInventoryPanel()
 	// subscribe to have auto-rename functionality while creating New Folder
 	mLandmarksInventoryPanel->setSelectCallback(boost::bind(&LLInventoryPanel::onSelectionChange, mLandmarksInventoryPanel, _1, _2));
 
-	initAccordion("tab_landmarks", mLandmarksInventoryPanel);
+	initAccordion("tab_landmarks", mLandmarksInventoryPanel, true);
 }
 
 void LLLandmarksPanel::initMyInventoryPanel()
@@ -490,7 +488,7 @@ void LLLandmarksPanel::initMyInventoryPanel()
 
 	initLandmarksPanel(mMyInventoryPanel);
 
-	initAccordion("tab_inventory", mMyInventoryPanel);
+	initAccordion("tab_inventory", mMyInventoryPanel, false);
 }
 
 void LLLandmarksPanel::initLibraryInventoryPanel()
@@ -499,7 +497,15 @@ void LLLandmarksPanel::initLibraryInventoryPanel()
 
 	initLandmarksPanel(mLibraryInventoryPanel);
 
-	initAccordion("tab_library", mLibraryInventoryPanel);
+	// We want to fetch only "Landmarks" category from the library.
+	const LLUUID &landmarks_cat = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK, false, true);
+	if (landmarks_cat.notNull())
+	{
+		gInventory.startBackgroundFetch(landmarks_cat);
+	}
+
+	// Expanding "Library" tab for new users who have no landmarks in "My Inventory".
+	initAccordion("tab_library", mLibraryInventoryPanel, true);
 }
 
 void LLLandmarksPanel::initLandmarksPanel(LLPlacesInventoryPanel* inventory_list)
@@ -520,20 +526,21 @@ void LLLandmarksPanel::initLandmarksPanel(LLPlacesInventoryPanel* inventory_list
 	{
 		root_folder->setupMenuHandle(LLInventoryType::IT_CATEGORY, mGearFolderMenu->getHandle());
 		root_folder->setupMenuHandle(LLInventoryType::IT_LANDMARK, mGearLandmarkMenu->getHandle());
+
+		root_folder->setParentLandmarksPanel(this);
 	}
 
-	root_folder->setParentLandmarksPanel(this);
 	inventory_list->saveFolderState();
 }
 
-void LLLandmarksPanel::initAccordion(const std::string& accordion_tab_name, LLPlacesInventoryPanel* inventory_list)
+void LLLandmarksPanel::initAccordion(const std::string& accordion_tab_name, LLPlacesInventoryPanel* inventory_list,	bool expand_tab)
 {
 	LLAccordionCtrlTab* accordion_tab = getChild<LLAccordionCtrlTab>(accordion_tab_name);
 
 	mAccordionTabs.push_back(accordion_tab);
 	accordion_tab->setDropDownStateChangedCallback(
 		boost::bind(&LLLandmarksPanel::onAccordionExpandedCollapsed, this, _2, inventory_list));
-	accordion_tab->setDisplayChildren(false);
+	accordion_tab->setDisplayChildren(expand_tab);
 }
 
 void LLLandmarksPanel::onAccordionExpandedCollapsed(const LLSD& param, LLPlacesInventoryPanel* inventory_list)
diff --git a/indra/newview/llpanellandmarks.h b/indra/newview/llpanellandmarks.h
index 96b790844ca12e1f9ab84fc22f1457cc5af2b51e..cbbd10ac26a6ea1b63cde5000b1f293f45b4ba56 100644
--- a/indra/newview/llpanellandmarks.h
+++ b/indra/newview/llpanellandmarks.h
@@ -110,7 +110,7 @@ class LLLandmarksPanel : public LLPanelPlacesTab, LLRemoteParcelInfoObserver
 	void initMyInventoryPanel();
 	void initLibraryInventoryPanel();
 	void initLandmarksPanel(LLPlacesInventoryPanel* inventory_list);
-	void initAccordion(const std::string& accordion_tab_name, LLPlacesInventoryPanel* inventory_list);
+	void initAccordion(const std::string& accordion_tab_name, LLPlacesInventoryPanel* inventory_list, bool expand_tab);
 	void onAccordionExpandedCollapsed(const LLSD& param, LLPlacesInventoryPanel* inventory_list);
 	void deselectOtherThan(const LLPlacesInventoryPanel* inventory_list);
 
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index 55b6249fd9181db424429296efc292ac0616a50b..04fefe58741b7db64e717ae41a1c1331169804d2 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -213,8 +213,8 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
 	}
 
 #if !USE_VIEWER_AUTH
-	//childSetPrevalidate("login_id_edit", LLLineEditor::prevalidateASCIIPrintableNoSpace);
-	childSetPrevalidate("last_name_edit", LLLineEditor::prevalidateASCIIPrintableNoSpace);
+	//childSetPrevalidate("login_id_edit", LLTextValidate::validateASCIIPrintableNoSpace);
+	childSetPrevalidate("last_name_edit", LLTextValidate::validateASCIIPrintableNoSpace);
 
 	childSetCommitCallback("password_edit", mungePassword, this);
 	getChild<LLLineEditor>("password_edit")->setKeystrokeCallback(onPassKey, this);
@@ -696,8 +696,7 @@ void LLPanelLogin::refreshLocation( bool force_visible )
 	{
 		// Don't show on first run after install
 		// Otherwise ShowStartLocation defaults to true.
-		show_start = gSavedSettings.getBOOL("ShowStartLocation")
-					&& !gSavedSettings.getBOOL("FirstRunThisInstall");
+		show_start = gSavedSettings.getBOOL("ShowStartLocation");
 	}
 
 	sInstance->childSetVisible("start_location_combo", show_start);
@@ -867,8 +866,7 @@ void LLPanelLogin::loadLoginPage()
 	{
 		oStr << "&auto_login=TRUE";
 	}
-	if (gSavedSettings.getBOOL("ShowStartLocation")
-		&& !gSavedSettings.getBOOL("FirstRunThisInstall"))
+	if (gSavedSettings.getBOOL("ShowStartLocation"))
 	{
 		oStr << "&show_start_location=TRUE";
 	}	
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index a5a61f0c7ba7b32b6c7c411eab2a0d0c2b8a3152..1895993a8e1c89e151d7909adb5bee761e469de6 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -1071,7 +1071,11 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)
 			{
 				const LLUUID &item_id = (*iter);
 				LLFolderViewItem *item = folder->getItemByID(item_id);
-				can_delete &= item->getListener()->isItemRemovable();
+				const LLFolderViewEventListener *listener = item->getListener();
+				llassert(listener);
+				if (!listener) return FALSE;
+				can_delete &= listener->isItemRemovable();
+				can_delete &= !listener->isItemInTrash();
 			}
 			return can_delete;
 		}
diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index 75b93ad2c2cea7ebabe6a73738177a47f5260364..77a2ac3a8cc3dcebbf4417f82fb9e2fd2540636c 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -41,6 +41,7 @@
 #include "llsidetray.h"
 #include "lltabcontainer.h"
 #include "lltexturectrl.h"
+#include "llviewercontrol.h"
 
 #define PICKER_SECOND_LIFE "2nd_life_pic"
 #define PICKER_FIRST_LIFE "real_world_pic"
@@ -69,6 +70,18 @@ BOOL LLPanelMe::postBuild()
 void LLPanelMe::onOpen(const LLSD& key)
 {
 	LLPanelProfile::onOpen(key);
+
+	// Force Edit My Profile if this is the first time when user is opening Me Panel (EXT-5068)
+	bool opened = gSavedSettings.getBOOL("MePanelOpened");
+	// In some cases Side Tray my call onOpen() twice, check getCollapsed() to be sure this
+	// is the last time onOpen() is called
+	if( !opened && !LLSideTray::getInstance()->getCollapsed() )
+	{
+		buildEditPanel();
+		openPanel(mEditPanel, getAvatarId());
+
+		gSavedSettings.setBOOL("MePanelOpened", true);
+	}
 }
 
 bool LLPanelMe::notifyChildren(const LLSD& info)
diff --git a/indra/newview/llpanelmediasettingsgeneral.cpp b/indra/newview/llpanelmediasettingsgeneral.cpp
index f574f55bebf063c3f41b4ce8da3186ac5c5c7096..64a265219b4906677f7ebb8136e7fd17a2a281e3 100644
--- a/indra/newview/llpanelmediasettingsgeneral.cpp
+++ b/indra/newview/llpanelmediasettingsgeneral.cpp
@@ -206,7 +206,7 @@ void LLPanelMediaSettingsGeneral::clearValues( void* userdata, bool editable)
 {	
 	LLPanelMediaSettingsGeneral *self =(LLPanelMediaSettingsGeneral *)userdata;
 	self->mAutoLoop->clear();
-	self->mAutoPlay->clear();
+	self->mAutoPlay->setValue(LLSD(TRUE)); // set default value for auto play to true;
 	self->mAutoScale->clear();
 	self->mAutoZoom ->clear();
 	self->mCurrentURL->clear();
@@ -250,18 +250,18 @@ bool LLPanelMediaSettingsGeneral::isMultiple()
 
 ////////////////////////////////////////////////////////////////////////////////
 // static 
-void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& media_settings ,bool editable)
+void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& _media_settings, bool editable)
 {
 	LLPanelMediaSettingsGeneral *self =(LLPanelMediaSettingsGeneral *)userdata;
 	self->mMediaEditable = editable;
 
+	LLSD media_settings = _media_settings;
+	
 	if ( LLPanelMediaSettingsGeneral::isMultiple() )
 	{
-		self->clearValues(self, self->mMediaEditable);
-		// only show multiple 
-		self->mHomeURL->setText(LLTrans::getString("Multiple Media"));
-		self->mCurrentURL->setText(LLTrans::getString("Multiple Media"));
-		return;
+		// *HACK:  "edit" the incoming media_settings
+		media_settings[LLMediaEntry::CURRENT_URL_KEY] = LLTrans::getString("Multiple Media");
+		media_settings[LLMediaEntry::HOME_URL_KEY] = LLTrans::getString("Multiple Media");
 	}
 	
 	std::string base_key( "" );
@@ -286,7 +286,7 @@ void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& media_
 		{ LLMediaEntry::WIDTH_PIXELS_KEY,			self->mWidthPixels,		"LLSpinCtrl" },
 		{ "", NULL , "" }
 	};
-
+	
 	for( int i = 0; data_set[ i ].key_name.length() > 0; ++i )
 	{
 		base_key = std::string( data_set[ i ].key_name );
@@ -405,20 +405,21 @@ void LLPanelMediaSettingsGeneral::preApply()
 
 ////////////////////////////////////////////////////////////////////////////////
 //
-void LLPanelMediaSettingsGeneral::getValues( LLSD &fill_me_in )
+void LLPanelMediaSettingsGeneral::getValues( LLSD &fill_me_in, bool include_tentative )
 {
-	fill_me_in[LLMediaEntry::AUTO_LOOP_KEY] = (LLSD::Boolean)mAutoLoop->getValue();
-	fill_me_in[LLMediaEntry::AUTO_PLAY_KEY] = (LLSD::Boolean)mAutoPlay->getValue();
-	fill_me_in[LLMediaEntry::AUTO_SCALE_KEY] = (LLSD::Boolean)mAutoScale->getValue();
-	fill_me_in[LLMediaEntry::AUTO_ZOOM_KEY] = (LLSD::Boolean)mAutoZoom->getValue();
+	if (include_tentative || !mAutoLoop->getTentative()) fill_me_in[LLMediaEntry::AUTO_LOOP_KEY] = (LLSD::Boolean)mAutoLoop->getValue();
+	if (include_tentative || !mAutoPlay->getTentative()) fill_me_in[LLMediaEntry::AUTO_PLAY_KEY] = (LLSD::Boolean)mAutoPlay->getValue();
+	if (include_tentative || !mAutoScale->getTentative()) fill_me_in[LLMediaEntry::AUTO_SCALE_KEY] = (LLSD::Boolean)mAutoScale->getValue();
+	if (include_tentative || !mAutoZoom->getTentative()) fill_me_in[LLMediaEntry::AUTO_ZOOM_KEY] = (LLSD::Boolean)mAutoZoom->getValue();
 	//Don't fill in current URL: this is only supposed to get changed via navigate
-	// fill_me_in[LLMediaEntry::CURRENT_URL_KEY] = mCurrentURL->getValue();
-	fill_me_in[LLMediaEntry::HEIGHT_PIXELS_KEY] = (LLSD::Integer)mHeightPixels->getValue();
+	// if (include_tentative || !mCurrentURL->getTentative()) fill_me_in[LLMediaEntry::CURRENT_URL_KEY] = mCurrentURL->getValue();
+	if (include_tentative || !mHeightPixels->getTentative()) fill_me_in[LLMediaEntry::HEIGHT_PIXELS_KEY] = (LLSD::Integer)mHeightPixels->getValue();
 	// Don't fill in the home URL if it is the special "Multiple Media" string!
-	if (LLTrans::getString("Multiple Media") != mHomeURL->getValue())
-		fill_me_in[LLMediaEntry::HOME_URL_KEY] = (LLSD::String)mHomeURL->getValue();
-	fill_me_in[LLMediaEntry::FIRST_CLICK_INTERACT_KEY] = (LLSD::Boolean)mFirstClick->getValue();
-	fill_me_in[LLMediaEntry::WIDTH_PIXELS_KEY] = (LLSD::Integer)mWidthPixels->getValue();
+	if ((include_tentative || !mHomeURL->getTentative())
+		&& LLTrans::getString("Multiple Media") != mHomeURL->getValue())
+			fill_me_in[LLMediaEntry::HOME_URL_KEY] = (LLSD::String)mHomeURL->getValue();
+	if (include_tentative || !mFirstClick->getTentative()) fill_me_in[LLMediaEntry::FIRST_CLICK_INTERACT_KEY] = (LLSD::Boolean)mFirstClick->getValue();
+	if (include_tentative || !mWidthPixels->getTentative()) fill_me_in[LLMediaEntry::WIDTH_PIXELS_KEY] = (LLSD::Integer)mWidthPixels->getValue();
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llpanelmediasettingsgeneral.h b/indra/newview/llpanelmediasettingsgeneral.h
index 5f9032136253ffd76f5e8c72fcc5c122812e8b46..a3f0990f35bb1e69ae6531e53c51c264da8dca9e 100644
--- a/indra/newview/llpanelmediasettingsgeneral.h
+++ b/indra/newview/llpanelmediasettingsgeneral.h
@@ -54,7 +54,8 @@ class LLPanelMediaSettingsGeneral : public LLPanel
 	// Hook that the floater calls before applying changes from the panel
 	void preApply();
 	// Function that asks the panel to fill in values associated with the panel
-    void getValues(LLSD &fill_me_in);
+	// 'include_tentative' means fill in tentative values as well, otherwise do not
+	void getValues(LLSD &fill_me_in, bool include_tentative = true);
 	// Hook that the floater calls after applying changes to the panel
 	void postApply();
 	
diff --git a/indra/newview/llpanelmediasettingspermissions.cpp b/indra/newview/llpanelmediasettingspermissions.cpp
index dcc052f15ee55259fb372307f6284f5b9584712f..227dbb3da727cf817343ce5605a28ccc38767cdb 100644
--- a/indra/newview/llpanelmediasettingspermissions.cpp
+++ b/indra/newview/llpanelmediasettingspermissions.cpp
@@ -149,27 +149,6 @@ void LLPanelMediaSettingsPermissions::clearValues( void* userdata, bool editable
 void LLPanelMediaSettingsPermissions::initValues( void* userdata, const LLSD& media_settings ,  bool editable)
 {
     LLPanelMediaSettingsPermissions *self =(LLPanelMediaSettingsPermissions *)userdata;
-
-	if ( LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo )
-	{
-		if(LLFloaterMediaSettings::getInstance()->mMultipleMedia) 
-		{
-			self->clearValues(self, editable);
-			// only show multiple 
-			return;
-		}
-		
-	}
-	else
-	{
-		if(LLFloaterMediaSettings::getInstance()->mMultipleValidMedia) 
-		{
-			self->clearValues(self, editable);
-			// only show multiple 
-			return;
-		}			
-		
-	}
     std::string base_key( "" );
     std::string tentative_key( "" );
 
@@ -216,6 +195,28 @@ void LLPanelMediaSettingsPermissions::initValues( void* userdata, const LLSD& me
         };
     };
 
+	// *NOTE: If any of a particular flavor is tentative, we have to disable 
+	// them all because of an architectural issue: namely that we represent 
+	// these as a bit field, and we can't selectively apply only one bit to all selected
+	// faces if they don't match.  Also see the *NOTE below.
+	if ( self->mPermsOwnerInteract->getTentative() ||
+		 self->mPermsGroupInteract->getTentative() ||
+		 self->mPermsWorldInteract->getTentative())
+	{
+		self->mPermsOwnerInteract->setEnabled(false);
+		self->mPermsGroupInteract->setEnabled(false);
+		self->mPermsWorldInteract->setEnabled(false);
+	}	
+	if ( self->mPermsOwnerControl->getTentative() ||
+		 self->mPermsGroupControl->getTentative() ||
+		 self->mPermsWorldControl->getTentative())
+	{
+		self->mPermsOwnerControl->setEnabled(false);
+		self->mPermsGroupControl->setEnabled(false);
+		self->mPermsWorldControl->setEnabled(false);
+	}
+	
+	
 	self->childSetEnabled("media_perms_label_owner", editable );
 	self->childSetText("media_perms_label_owner",  LLTrans::getString("Media Perms Owner") );
 	self->childSetEnabled("media_perms_label_group", editable );
@@ -233,10 +234,10 @@ void LLPanelMediaSettingsPermissions::preApply()
 
 ////////////////////////////////////////////////////////////////////////////////
 //
-void LLPanelMediaSettingsPermissions::getValues( LLSD &fill_me_in )
+void LLPanelMediaSettingsPermissions::getValues( LLSD &fill_me_in, bool include_tentative )
 {
 	// moved over from the 'General settings' tab
-	fill_me_in[LLMediaEntry::CONTROLS_KEY] = (LLSD::Integer)mControls->getCurrentIndex();
+	if (include_tentative || !mControls->getTentative()) fill_me_in[LLMediaEntry::CONTROLS_KEY] = (LLSD::Integer)mControls->getCurrentIndex();
 
     // *NOTE: For some reason, gcc does not like these symbol references in the 
     // expressions below (inside the static_casts).  I have NO idea why :(.
@@ -254,9 +255,27 @@ void LLPanelMediaSettingsPermissions::getValues( LLSD &fill_me_in )
 		(mPermsOwnerInteract->getValue() ? owner: none  ) |
 		(mPermsGroupInteract->getValue() ? group : none ) |
 		(mPermsWorldInteract->getValue() ? anyone : none ));
+	
+	// *TODO: This will fill in the values of all permissions values, even if
+	// one or more is tentative.  This is not quite the user expectation...what
+	// it should do is only change the bit that was made "untentative", but in
+	// a multiple-selection situation, this isn't possible given the architecture
+	// for how settings are applied.
+	if (include_tentative || 
+		!mPermsOwnerControl->getTentative() || 
+		!mPermsGroupControl->getTentative() || 
+		!mPermsWorldControl->getTentative())
+	{
     fill_me_in[LLMediaEntry::PERMS_CONTROL_KEY] = control;
+	}
+	if (include_tentative || 
+		!mPermsOwnerInteract->getTentative() || 
+		!mPermsGroupInteract->getTentative() || 
+		!mPermsWorldInteract->getTentative())
+	{
     fill_me_in[LLMediaEntry::PERMS_INTERACT_KEY] = interact;
 }
+}
 
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llpanelmediasettingspermissions.h b/indra/newview/llpanelmediasettingspermissions.h
index bd0c3b8ab58312af35a483619bd5c55449ced646..858544605cd183b07669bc5f68aacac0d88711b4 100644
--- a/indra/newview/llpanelmediasettingspermissions.h
+++ b/indra/newview/llpanelmediasettingspermissions.h
@@ -57,7 +57,8 @@ class LLPanelMediaSettingsPermissions : public LLPanel
 	// Hook that the floater calls before applying changes from the panel
 	void preApply();
 	// Function that asks the panel to fill in values associated with the panel
-    void getValues(LLSD &fill_me_in);
+	// 'include_tentative' means fill in tentative values as well, otherwise do not
+	void getValues(LLSD &fill_me_in, bool include_tentative = true);
 	// Hook that the floater calls after applying changes to the panel
 	void postApply();
 	
diff --git a/indra/newview/llpanelmediasettingssecurity.cpp b/indra/newview/llpanelmediasettingssecurity.cpp
index 81842e385136e828e62111e0ffc1e3871dd456d4..1b1346c41a76790eb303c4a56c67ab6877600083 100644
--- a/indra/newview/llpanelmediasettingssecurity.cpp
+++ b/indra/newview/llpanelmediasettingssecurity.cpp
@@ -94,27 +94,6 @@ void LLPanelMediaSettingsSecurity::draw()
 void LLPanelMediaSettingsSecurity::initValues( void* userdata, const LLSD& media_settings , bool editable)
 {
 	LLPanelMediaSettingsSecurity *self =(LLPanelMediaSettingsSecurity *)userdata;
-
-	if ( LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo )
-	{
-		if(LLFloaterMediaSettings::getInstance()->mMultipleMedia) 
-		{
-			self->clearValues(self, editable);
-			// only show multiple 
-			return;
-		}
-		
-	}
-	else
-	{
-		if(LLFloaterMediaSettings::getInstance()->mMultipleValidMedia) 
-		{
-			self->clearValues(self, editable);
-			// only show multiple 
-			return;
-		}			
-		
-	}
 	std::string base_key( "" );
 	std::string tentative_key( "" );
 
@@ -136,6 +115,8 @@ void LLPanelMediaSettingsSecurity::initValues( void* userdata, const LLSD& media
 		base_key = std::string( data_set[ i ].key_name );
         tentative_key = base_key + std::string( LLPanelContents::TENTATIVE_SUFFIX );
 
+		bool enabled_overridden = false;
+		
 		// TODO: CP - I bet there is a better way to do this using Boost
 		if ( media_settings[ base_key ].isDefined() )
 		{
@@ -150,20 +131,31 @@ void LLPanelMediaSettingsSecurity::initValues( void* userdata, const LLSD& media
 				// get control 
 				LLScrollListCtrl* list = static_cast< LLScrollListCtrl* >( data_set[ i ].ctrl_ptr );
 				list->deleteAllItems();
-
+				
 				// points to list of white list URLs
 				LLSD url_list = media_settings[ base_key ];
-
-				// iterate over them and add to scroll list
-				LLSD::array_iterator iter = url_list.beginArray();
-				while( iter != url_list.endArray() )
+				
+				// better be the whitelist
+				llassert(data_set[ i ].ctrl_ptr == self->mWhiteListList);
+				
+				// If tentative, don't add entries
+				if (media_settings[ tentative_key ].asBoolean())
 				{
-					std::string entry = *iter;
-					self->addWhiteListEntry( entry );
-					++iter;
-				};
+					self->mWhiteListList->setEnabled(false);
+					enabled_overridden = true;
+				}
+				else {
+					// iterate over them and add to scroll list
+					LLSD::array_iterator iter = url_list.beginArray();
+					while( iter != url_list.endArray() )
+					{
+						std::string entry = *iter;
+						self->addWhiteListEntry( entry );
+						++iter;
+					}
+				}
 			};
-			data_set[ i ].ctrl_ptr->setEnabled(editable);
+			if ( ! enabled_overridden) data_set[ i ].ctrl_ptr->setEnabled(editable);
 			data_set[ i ].ctrl_ptr->setTentative( media_settings[ tentative_key ].asBoolean() );
 		};
 	};
@@ -192,25 +184,29 @@ void LLPanelMediaSettingsSecurity::preApply()
 
 ////////////////////////////////////////////////////////////////////////////////
 //
-void LLPanelMediaSettingsSecurity::getValues( LLSD &fill_me_in )
+void LLPanelMediaSettingsSecurity::getValues( LLSD &fill_me_in, bool include_tentative )
 {
-    fill_me_in[LLMediaEntry::WHITELIST_ENABLE_KEY] = (LLSD::Boolean)mEnableWhiteList->getValue();
-
-    // iterate over white list and extract items
-    std::vector< LLScrollListItem* > whitelist_items = mWhiteListList->getAllData();
-    std::vector< LLScrollListItem* >::iterator iter = whitelist_items.begin();
-
-	// *NOTE: need actually set the key to be an emptyArray(), or the merge
-	// we do with this LLSD will think there's nothing to change.
-    fill_me_in[LLMediaEntry::WHITELIST_KEY] = LLSD::emptyArray();
-    while( iter != whitelist_items.end() )
-    {
-		LLScrollListCell* cell = (*iter)->getColumn( ENTRY_COLUMN );
-		std::string whitelist_url = cell->getValue().asString();
-
-        fill_me_in[ LLMediaEntry::WHITELIST_KEY ].append( whitelist_url );
-        ++iter;
-    };
+    if (include_tentative || !mEnableWhiteList->getTentative()) 
+		fill_me_in[LLMediaEntry::WHITELIST_ENABLE_KEY] = (LLSD::Boolean)mEnableWhiteList->getValue();
+	
+	if (include_tentative || !mWhiteListList->getTentative())
+	{
+		// iterate over white list and extract items
+		std::vector< LLScrollListItem* > whitelist_items = mWhiteListList->getAllData();
+		std::vector< LLScrollListItem* >::iterator iter = whitelist_items.begin();
+		
+		// *NOTE: need actually set the key to be an emptyArray(), or the merge
+		// we do with this LLSD will think there's nothing to change.
+		fill_me_in[LLMediaEntry::WHITELIST_KEY] = LLSD::emptyArray();
+		while( iter != whitelist_items.end() )
+		{
+			LLScrollListCell* cell = (*iter)->getColumn( ENTRY_COLUMN );
+			std::string whitelist_url = cell->getValue().asString();
+			
+			fill_me_in[ LLMediaEntry::WHITELIST_KEY ].append( whitelist_url );
+			++iter;
+		};
+	}
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -247,6 +243,10 @@ const std::string LLPanelMediaSettingsSecurity::makeValidUrl( const std::string&
 // white list list box widget and build a list to test against. 
 bool LLPanelMediaSettingsSecurity::urlPassesWhiteList( const std::string& test_url )
 {
+	// If the whitlelist list is tentative, it means we have multiple settings.
+	// In that case, we have no choice but to return true
+	if ( mWhiteListList->getTentative() ) return true;
+	
 	// the checkUrlAgainstWhitelist(..) function works on a vector
 	// of strings for the white list entries - in this panel, the white list
 	// is stored in the widgets themselves so we need to build something compatible.
@@ -330,7 +330,7 @@ void LLPanelMediaSettingsSecurity::addWhiteListEntry( const std::string& entry )
 	// always add in the entry itself
 	row[ "columns" ][ ENTRY_COLUMN ][ "type" ] = "text";
 	row[ "columns" ][ ENTRY_COLUMN ][ "value" ] = entry;
-
+	
 	// add to the white list scroll box
 	mWhiteListList->addElement( row );
 };
diff --git a/indra/newview/llpanelmediasettingssecurity.h b/indra/newview/llpanelmediasettingssecurity.h
index 66ccb23f4654494ebbb1a635c28e7b479a24120b..94f2fdc89c2a91c5629f598423136676e0bd2085 100644
--- a/indra/newview/llpanelmediasettingssecurity.h
+++ b/indra/newview/llpanelmediasettingssecurity.h
@@ -53,11 +53,12 @@ class LLPanelMediaSettingsSecurity : public LLPanel
 	// Hook that the floater calls before applying changes from the panel
 	void preApply();
 	// Function that asks the panel to fill in values associated with the panel
-    void getValues(LLSD &fill_me_in);
+	// 'include_tentative' means fill in tentative values as well, otherwise do not
+	void getValues(LLSD &fill_me_in, bool include_tentative = true);
 	// Hook that the floater calls after applying changes to the panel
 	void postApply();
 	
-	static void initValues( void* userdata, const LLSD& media_settings,bool editable );
+	static void initValues( void* userdata, const LLSD& media_settings, bool editable);
 	static void clearValues( void* userdata, bool editable);
 	void addWhiteListEntry( const std::string& url );
 	void setParent( LLFloaterMediaSettings* parent );
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 5c5c35141eaab4d7bf89905ef7bc43bd297f8ed4..e8ae006968018287f632311fd9f7f82e612aa2e9 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -117,7 +117,7 @@ class LLTaskInvFVBridge : public LLFolderViewEventListener
 	virtual BOOL isItemRenameable() const;
 	virtual BOOL renameItem(const std::string& new_name);
 	virtual BOOL isItemMovable() const;
-	virtual BOOL isItemRemovable();
+	virtual BOOL isItemRemovable() const;
 	virtual BOOL removeItem();
 	virtual void removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batch);
 	virtual void move(LLFolderViewEventListener* parent_listener);
@@ -412,9 +412,9 @@ BOOL LLTaskInvFVBridge::isItemMovable() const
 	return TRUE;
 }
 
-BOOL LLTaskInvFVBridge::isItemRemovable()
+BOOL LLTaskInvFVBridge::isItemRemovable() const
 {
-	LLViewerObject* object = gObjectList.findObject(mPanel->getTaskUUID());
+	const LLViewerObject* object = gObjectList.findObject(mPanel->getTaskUUID());
 	if(object
 	   && (object->permModify() || object->permYouOwner()))
 	{
@@ -710,7 +710,7 @@ class LLTaskCategoryBridge : public LLTaskInvFVBridge
 	virtual BOOL isItemRenameable() const;
 	// virtual BOOL isItemCopyable() const { return FALSE; }
 	virtual BOOL renameItem(const std::string& new_name);
-	virtual BOOL isItemRemovable();
+	virtual BOOL isItemRemovable() const;
 	virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
 	virtual BOOL hasChildren() const;
 	virtual BOOL startDrag(EDragAndDropType* type, LLUUID* id) const;
@@ -742,7 +742,7 @@ BOOL LLTaskCategoryBridge::renameItem(const std::string& new_name)
 	return FALSE;
 }
 
-BOOL LLTaskCategoryBridge::isItemRemovable()
+BOOL LLTaskCategoryBridge::isItemRemovable() const
 {
 	return FALSE;
 }
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index cf903958ee67fb17a58d795b8b0c3c477674d915..c2f2d32142d18b33016c27f8b50e0daad562016e 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -159,6 +159,27 @@ void LLPanelOutfitsInventory::onOpen(const LLSD& key)
 	// Make sure we know which tab is selected, update the filter,
 	// and update verbs.
 	onTabChange();
+	
+	// Auto open the first outfit newly created so new users can see sample outfit contents
+	static bool should_open_outfit = true;
+	if (should_open_outfit && gAgent.isFirstLogin())
+	{
+		LLInventoryPanel* outfits_panel = getChild<LLInventoryPanel>(OUTFITS_TAB_NAME);
+		if (outfits_panel)
+		{
+			LLUUID my_outfits_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS);
+			LLFolderViewFolder* my_outfits_folder = outfits_panel->getRootFolder()->getFolderByID(my_outfits_id);
+			if (my_outfits_folder)
+			{
+				LLFolderViewFolder* first_outfit = dynamic_cast<LLFolderViewFolder*>(my_outfits_folder->getFirstChild());
+				if (first_outfit)
+				{
+					first_outfit->setOpen(TRUE);
+				}
+			}
+		}
+	}
+	should_open_outfit = false;
 }
 
 void LLPanelOutfitsInventory::updateVerbs()
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 423ee61e25f3078bf9c8f674eba1090a30085b7d..36fab862808da1b0a20f390ca9c900640f6d7b4c 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -36,6 +36,7 @@
 #include "llfloaterreg.h"
 #include "llmenugl.h"
 #include "llnotificationsutil.h"
+#include "lleventtimer.h"
 #include "llfiltereditor.h"
 #include "lltabcontainer.h"
 #include "lluictrlfactory.h"
diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp
index b820adeaf3ec0482f4e4bb7243b0e261692d860c..78a0a5cface655e6935f74cdbe35a34d86b4cbbb 100644
--- a/indra/newview/llpanelpermissions.cpp
+++ b/indra/newview/llpanelpermissions.cpp
@@ -142,9 +142,9 @@ LLPanelPermissions::LLPanelPermissions() :
 BOOL LLPanelPermissions::postBuild()
 {
 	childSetCommitCallback("Object Name",LLPanelPermissions::onCommitName,this);
-	childSetPrevalidate("Object Name",LLLineEditor::prevalidateASCIIPrintableNoPipe);
+	childSetPrevalidate("Object Name",LLTextValidate::validateASCIIPrintableNoPipe);
 	childSetCommitCallback("Object Description",LLPanelPermissions::onCommitDesc,this);
-	childSetPrevalidate("Object Description",LLLineEditor::prevalidateASCIIPrintableNoPipe);
+	childSetPrevalidate("Object Description",LLTextValidate::validateASCIIPrintableNoPipe);
 
 	
 	getChild<LLUICtrl>("button set group")->setCommitCallback(boost::bind(&LLPanelPermissions::onClickGroup,this));
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index 87ac5f20ff429521efc11942b0c66dc3b37d3ea0..c867a2c64b1444a87a67a1c08e4513e84aec5f20 100644
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -843,13 +843,16 @@ void LLPanelPicks::onPanelClassifiedClose(LLPanelClassifiedInfo* panel)
 			{
 				LLClassifiedItem* c_item = dynamic_cast<LLClassifiedItem*>(
 					mClassifiedsList->getItemByValue(values[n]));
-
+				llassert(c_item);
+				if (c_item)
+				{
 				c_item->setClassifiedName(panel->getClassifiedName());
 				c_item->setDescription(panel->getDescription());
 				c_item->setSnapshotId(panel->getSnapshotId());
 			}
 		}
 	}
+	}
 
 	onPanelPickClose(panel);
 	updateButtons();
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index a49386cb5ce0c311f1ff6caf2c6cec6914c2e3b9..26b57c003b6c045fbf08eb5dc7f58db0eb8ae514 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -1015,7 +1015,8 @@ void LLPanelPlaces::showAddedLandmarkInfo(const std::vector<LLUUID>& items)
 
 		LLInventoryItem* item = gInventory.getItem(item_id);
 
-		if (LLAssetType::AT_LANDMARK == item->getType())
+		llassert(item);
+		if (item && (LLAssetType::AT_LANDMARK == item->getType()) )
 		{
 			// Created landmark is passed to Places panel to allow its editing.
 			// If the panel is closed we don't reopen it until created landmark is loaded.
@@ -1023,7 +1024,6 @@ void LLPanelPlaces::showAddedLandmarkInfo(const std::vector<LLUUID>& items)
 			{
 				setItem(item);
 			}
-			break;
 		}
 	}
 }
@@ -1048,14 +1048,13 @@ void LLPanelPlaces::updateVerbs()
 
 	mTeleportBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn);
 	mShowOnMapBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn);
-	mOverflowBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn);
+	mOverflowBtn->setVisible(is_place_info_visible && !is_create_landmark_visible && !isLandmarkEditModeOn);
 	mEditBtn->setVisible(mPlaceInfoType == LANDMARK_INFO_TYPE && !isLandmarkEditModeOn);
 	mSaveBtn->setVisible(isLandmarkEditModeOn);
 	mCancelBtn->setVisible(isLandmarkEditModeOn);
 	mCloseBtn->setVisible(is_create_landmark_visible && !isLandmarkEditModeOn);
 
 	mShowOnMapBtn->setEnabled(!is_create_landmark_visible && !isLandmarkEditModeOn && have_3d_pos);
-	mOverflowBtn->setEnabled(is_place_info_visible && !is_create_landmark_visible);
 
 	if (is_place_info_visible)
 	{
diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp
index 2dc3a626376954924f2189bea64a7be4e62ea189..479769ee20941f0ac156e1a28367ea19dd4647e2 100644
--- a/indra/newview/llpanelprimmediacontrols.cpp
+++ b/indra/newview/llpanelprimmediacontrols.cpp
@@ -1036,8 +1036,9 @@ void LLPanelPrimMediaControls::updateZoom()
 	}
 
 	if (zoom_padding > 0.0f)
-	{
-		LLViewerMediaFocus::setCameraZoom(getTargetObject(), mTargetObjectNormal, zoom_padding);
+	{	
+		// since we only zoom into medium for now, always set zoom_in constraint to true
+		LLViewerMediaFocus::setCameraZoom(getTargetObject(), mTargetObjectNormal, zoom_padding, true);
 	}
 	
 	// Remember the object ID/face we zoomed into, so we can update the zoom icon appropriately
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index c73ade53c8fc3d58fab1d63560316984456743e4..b5d85dfd4bf7cfcc71958588c17b1565a29a8fc7 100644
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -197,11 +197,7 @@ void LLPanelProfile::togglePanel(LLPanel* panel, const LLSD& key)
 	}
 	else 
 	{
-		panel->setVisible(FALSE);
-		if (panel->getParent() == this) 
-		{
-			removeChild(panel);
-		}
+		closePanel(panel);
 
 		getTabCtrl()->getCurrentPanel()->onOpen(getAvatarId());
 	}
@@ -248,6 +244,16 @@ void LLPanelProfile::openPanel(LLPanel* panel, const LLSD& params)
 	panel->setRect(new_rect);
 }
 
+void LLPanelProfile::closePanel(LLPanel* panel)
+{
+	panel->setVisible(FALSE);
+
+	if (panel->getParent() == this) 
+	{
+		removeChild(panel);
+	}
+}
+
 S32 LLPanelProfile::notifyParent(const LLSD& info)
 {
 	std::string action = info["action"];
diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h
index bcf4bdd0ec27fb7d9030d74ba8342edf43571757..f1aa3f10f86ef86bbdefe5450c08c25343e59634 100644
--- a/indra/newview/llpanelprofile.h
+++ b/indra/newview/llpanelprofile.h
@@ -55,6 +55,8 @@ class LLPanelProfile : public LLPanel
 
 	virtual void openPanel(LLPanel* panel, const LLSD& params);
 
+	virtual void closePanel(LLPanel* panel);
+
 	S32 notifyParent(const LLSD& info);
 
 protected:
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index ad47e351ee0ba700caa5ee7f53694e71bc7bed2a..1c4004c37a660b67de38f99e7e9c3aa676d8d02e 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -584,7 +584,7 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD&
 {
 	std::string item = userdata.asString();
 	if (item == "can_mute_text" || "can_block" == item || "can_share" == item || "can_im" == item 
-		|| "can_pay" == item || "can_add" == item)
+		|| "can_pay" == item)
 	{
 		return mUUIDs.front() != gAgentID;
 	}
@@ -619,7 +619,7 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD&
 
 		for (;id != uuids_end; ++id)
 		{
-			if ( LLAvatarActions::isFriend(*id) )
+			if ( *id == gAgentID || LLAvatarActions::isFriend(*id) )
 			{
 				result = false;
 				break;
diff --git a/indra/newview/llplacesinventorybridge.cpp b/indra/newview/llplacesinventorybridge.cpp
index 83443687c92646a86af29f0205ec2dc01516ee3a..4fe69f295c172c8a3f8b1a523974a736acd8f8f7 100644
--- a/indra/newview/llplacesinventorybridge.cpp
+++ b/indra/newview/llplacesinventorybridge.cpp
@@ -66,7 +66,7 @@ void LLPlacesLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 	std::vector<std::string> items;
 	std::vector<std::string> disabled_items;
 
-	if(isInTrash())
+	if(isItemInTrash())
 	{
 		items.push_back(std::string("Purge Item"));
 		if (!isItemRemovable())
diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp
index 8edeebaeebec3d28605df95e79716e35833b10cb..f1e450a083a5c2fcfb557e8cf41f8b71cad0a2f1 100644
--- a/indra/newview/llplacesinventorypanel.cpp
+++ b/indra/newview/llplacesinventorypanel.cpp
@@ -118,6 +118,7 @@ BOOL LLPlacesInventoryPanel::postBuild()
 	mScroller->addChild(mFolders);
 
 	mFolders->setScrollContainer(mScroller);
+	mFolders->addChild(mFolders->mStatusTextBox);
 
 
 	// cut subitems
@@ -174,6 +175,15 @@ S32	LLPlacesInventoryPanel::notify(const LLSD& info)
 //  PUBLIC METHODS
 //////////////////////////////////////////////////////////////////////////
 
+LLPlacesFolderView::LLPlacesFolderView(const LLFolderView::Params& p)
+: LLFolderView(p)
+{
+	// we do not need auto select functionality in places landmarks, so override default behavior.
+	// this disables applying of the LLSelectFirstFilteredItem in LLFolderView::doIdle.
+	// Fixed issues: EXT-1631, EXT-4994.
+	mAutoSelectOverride = TRUE;
+}
+
 BOOL LLPlacesFolderView::handleRightMouseDown(S32 x, S32 y, MASK mask)
 {
 	// let children to change selection first
diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h
index 86937e7c7fc72ffe1b2573e1bfc257efceb2bd12..04c6758eae9cc6297817bbb1d56b36fa8ca65342 100644
--- a/indra/newview/llplacesinventorypanel.h
+++ b/indra/newview/llplacesinventorypanel.h
@@ -67,7 +67,7 @@ class LLPlacesInventoryPanel : public LLInventoryPanel
 class LLPlacesFolderView : public LLFolderView
 {
 public:
-	LLPlacesFolderView(const LLFolderView::Params& p) : LLFolderView(p) {};
+	LLPlacesFolderView(const LLFolderView::Params& p);
 	/**
 	 *	Handles right mouse down
 	 *
diff --git a/indra/newview/llpreview.h b/indra/newview/llpreview.h
index 3b9f7f988274a74043eeb17c9606dfc546ef6e5b..551e247d8cc748bb07a8e68f4702fa1db1483208 100644
--- a/indra/newview/llpreview.h
+++ b/indra/newview/llpreview.h
@@ -74,7 +74,7 @@ class LLPreview : public LLFloater, LLInventoryObserver
 		
 	/*virtual*/ BOOL postBuild();
 	
-	void setObjectID(const LLUUID& object_id);
+	virtual void setObjectID(const LLUUID& object_id);
 	void setItem( LLInventoryItem* item );
 	
 	void setAssetId(const LLUUID& asset_id);
diff --git a/indra/newview/llpreviewanim.cpp b/indra/newview/llpreviewanim.cpp
index 92bd4dc62b11eba1e3ad289477eae69092b12838..0cc747f789f06af87302ef44f716ae4d72e7061f 100644
--- a/indra/newview/llpreviewanim.cpp
+++ b/indra/newview/llpreviewanim.cpp
@@ -79,7 +79,7 @@ BOOL LLPreviewAnim::postBuild()
 	childSetAction("Anim audition btn",auditionAnim, this);
 
 	childSetCommitCallback("desc", LLPreview::onText, this);
-	childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
+	childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
 	
 	return LLPreview::postBuild();
 }
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 53e351e66e14fd3065597654b39ffa07cd8c1683..57a8ca3d122ca6621b280cfbaa7729bd42bba534 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -472,7 +472,7 @@ BOOL LLPreviewGesture::postBuild()
 	edit = getChild<LLLineEditor>("wait_time_editor");
 	edit->setEnabled(FALSE);
 	edit->setVisible(FALSE);
-	edit->setPrevalidate(LLLineEditor::prevalidateFloat);
+	edit->setPrevalidate(LLTextValidate::validateFloat);
 //	edit->setKeystrokeCallback(onKeystrokeCommit, this);
 	edit->setCommitOnFocusLost(TRUE);
 	edit->setCommitCallback(onCommitWaitTime, this);
@@ -504,10 +504,10 @@ BOOL LLPreviewGesture::postBuild()
 	if (item) 
 	{
 		childSetText("desc", item->getDescription());
-		childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
+		childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
 		
 		childSetText("name", item->getName());
-		childSetPrevalidate("name", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
+		childSetPrevalidate("name", &LLTextValidate::validateASCIIPrintableNoPipe);
 	}
 
 	return LLPreview::postBuild();
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp
index cc7036052826e0e1ab0a09d0a70b5da1e95f530e..ee8e3f1db6a49d731bed3fbf199da11f95f81a1b 100644
--- a/indra/newview/llpreviewnotecard.cpp
+++ b/indra/newview/llpreviewnotecard.cpp
@@ -95,7 +95,7 @@ BOOL LLPreviewNotecard::postBuild()
 	childSetCommitCallback("desc", LLPreview::onText, this);
 	if (item)
 		childSetText("desc", item->getDescription());
-	childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
+	childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
 
 	return LLPreview::postBuild();
 }
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index 7bcbe334fff0e1949fda8e1453528792854f1a75..3221745fa37a9ae1e4efc75ec484e3e1d51c4760 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -661,7 +661,9 @@ void LLScriptEdCore::onBtnDynamicHelp()
 		live_help_floater = new LLFloater(LLSD());
 		LLUICtrlFactory::getInstance()->buildFloater(live_help_floater, "floater_lsl_guide.xml", NULL);
 		LLFloater* parent = dynamic_cast<LLFloater*>(getParent());
-		parent->addDependentFloater(live_help_floater, TRUE);
+		llassert(parent);
+		if (parent)
+			parent->addDependentFloater(live_help_floater, TRUE);
 		live_help_floater->childSetCommitCallback("lock_check", onCheckLock, this);
 		live_help_floater->childSetValue("lock_check", gSavedSettings.getBOOL("ScriptHelpFollowsCursor"));
 		live_help_floater->childSetCommitCallback("history_combo", onHelpComboCommit, this);
@@ -955,7 +957,7 @@ BOOL LLPreviewLSL::postBuild()
 
 	childSetCommitCallback("desc", LLPreview::onText, this);
 	childSetText("desc", item->getDescription());
-	childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
+	childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
 
 	return LLPreview::postBuild();
 }
diff --git a/indra/newview/llpreviewsound.cpp b/indra/newview/llpreviewsound.cpp
index d7fd252fb67f26e2bb9b6dddb6e1a261e94f420b..44b828854bdc99c89381f70793a429cb0cd536ae 100644
--- a/indra/newview/llpreviewsound.cpp
+++ b/indra/newview/llpreviewsound.cpp
@@ -75,7 +75,7 @@ BOOL	LLPreviewSound::postBuild()
 	button->setSoundFlags(LLView::SILENT);
 
 	childSetCommitCallback("desc", LLPreview::onText, this);
-	childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe);	
+	childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);	
 
 	return LLPreview::postBuild();
 }
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index 028807a6bdf48e3819e282812ea4f45ac7a2c1ff..0ed6bea74f6fcee3289da03d8d6d46679858802c 100644
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -74,22 +74,10 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key)
 	  mLastHeight(0),
 	  mLastWidth(0),
 	  mAspectRatio(0.f),
-	  mPreviewToSave(FALSE)
+	  mPreviewToSave(FALSE),
+	  mImage(NULL)
 {
-	const LLViewerInventoryItem *item = static_cast<const LLViewerInventoryItem*>(getItem());
-	if(item)
-	{
-		mShowKeepDiscard = item->getPermissions().getCreator() != gAgent.getID();
-		mImageID = item->getAssetUUID();
-		mIsCopyable = item->checkPermissionsSet(PERM_ITEM_UNRESTRICTED);
-	}
-	else // not an item, assume it's an asset id
-	{
-		mImageID = mItemUUID;
-		mCopyToInv = TRUE;
-		mIsCopyable = TRUE;
-	}
-
+	updateImageID();
 	if (key.has("save_as"))
 	{
 		mPreviewToSave = TRUE;
@@ -97,7 +85,6 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key)
 	//Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_texture.xml", FALSE);
 }
 
-
 LLPreviewTexture::~LLPreviewTexture()
 {
 	if( mLoadingFullImage )
@@ -139,7 +126,7 @@ BOOL LLPreviewTexture::postBuild()
 		{
 			childSetCommitCallback("desc", LLPreview::onText, this);
 			childSetText("desc", item->getDescription());
-			childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
+			childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe);
 		}
 	}
 	
@@ -493,3 +480,42 @@ LLPreview::EAssetStatus LLPreviewTexture::getAssetStatus()
 	}
 	return mAssetStatus;
 }
+
+void LLPreviewTexture::updateImageID()
+{
+	const LLViewerInventoryItem *item = static_cast<const LLViewerInventoryItem*>(getItem());
+	if(item)
+	{
+		mImageID = item->getAssetUUID();
+		mShowKeepDiscard = item->getPermissions().getCreator() != gAgent.getID();
+		mCopyToInv = FALSE;
+		mIsCopyable = item->checkPermissionsSet(PERM_ITEM_UNRESTRICTED);
+	}
+	else // not an item, assume it's an asset id
+	{
+		mImageID = mItemUUID;
+		mShowKeepDiscard = FALSE;
+		mCopyToInv = TRUE;
+		mIsCopyable = TRUE;
+	}
+
+}
+
+/* virtual */
+void LLPreviewTexture::setObjectID(const LLUUID& object_id)
+{
+	mObjectUUID = object_id;
+
+	const LLUUID old_image_id = mImageID;
+
+	// Update what image we're pointing to, such as if we just specified the mObjectID
+	// that this mItemID is part of.
+	updateImageID();
+
+	// If the imageID has changed, start over and reload the new image.
+	if (mImageID != old_image_id)
+	{
+		mAssetStatus = PREVIEW_ASSET_UNLOADED;
+		loadAsset();
+	}
+}
diff --git a/indra/newview/llpreviewtexture.h b/indra/newview/llpreviewtexture.h
index 980aecee6d63f8a3b9d946a156377da37b119d55..7cd2adad56f574438869481bfc19f8f534775e2c 100644
--- a/indra/newview/llpreviewtexture.h
+++ b/indra/newview/llpreviewtexture.h
@@ -69,6 +69,8 @@ class LLPreviewTexture : public LLPreview
 	void 				openToSave();
 	
 	static void			onSaveAsBtn(void* data);
+
+	/*virtual*/ void setObjectID(const LLUUID& object_id);
 protected:
 	void				init();
 	/* virtual */ BOOL	postBuild();
@@ -76,6 +78,7 @@ class LLPreviewTexture : public LLPreview
 	static void			onAspectRatioCommit(LLUICtrl*,void* userdata);
 	
 private:
+	void				updateImageID(); // set what image is being uploaded.
 	void				updateDimensions();
 	LLUUID				mImageID;
 	LLPointer<LLViewerFetchedTexture>		mImage;
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index 8f36c0e88aba0fdcabdd9cd640b6536e2d5167cd..7c2e7e3319ebcba88b31771821869f27eb2d5ba6 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -533,9 +533,13 @@ void LLScreenChannel::showToastsBottom()
 			// HACK
 			// EXT-2653: it is necessary to prevent overlapping for secondary showed toasts
 			(*it).toast->setVisible(TRUE);
-			// Show toast behind floaters. (EXT-3089)
-			gFloaterView->sendChildToBack((*it).toast);
 		}		
+		if(!(*it).toast->hasFocus())
+		{
+			// Fixing Z-order of toasts (EXT-4862)
+			// Next toast will be positioned under this one.
+			gFloaterView->sendChildToBack((*it).toast);
+		}
 	}
 
 	if(it != mToastList.rend())
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index 0d9cf06bc340b56cab57929a8d594262c8704bd3..a81ec61263d6bafd4b54f727591383a67e3ee4cc 100644
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -38,9 +38,11 @@
 #include "llchiclet.h"
 #include "llfloaterreg.h"
 #include "llnotifications.h"
+#include "llnotificationsutil.h"
 #include "llscreenchannel.h"
 #include "llsyswellwindow.h"
 #include "lltoastnotifypanel.h"
+#include "lltrans.h"
 #include "llviewerwindow.h"
 #include "llimfloater.h"
 
@@ -70,12 +72,8 @@ LLScriptFloater::LLScriptFloater(const LLSD& key)
 	setOverlapsScreenChannel(true);
 }
 
-bool LLScriptFloater::toggle(const LLUUID& object_id)
+bool LLScriptFloater::toggle(const LLUUID& notification_id)
 {
-	// Force chiclet toggle on here because first onFocusReceived() will not toggle it on.
-	LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(object_id, true);
-
-	LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id);
 	LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id);
 
 	// show existing floater
@@ -90,28 +88,28 @@ bool LLScriptFloater::toggle(const LLUUID& object_id)
 		{
 			floater->setVisible(TRUE);
 			floater->setFocus(TRUE);
-			return true;
 		}
 	}
 	// create and show new floater
 	else
 	{
-		show(object_id);
-		return true;
+		show(notification_id);
 	}
+
+	LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(notification_id, true);
+	return true;
 }
 
-LLScriptFloater* LLScriptFloater::show(const LLUUID& object_id)
+LLScriptFloater* LLScriptFloater::show(const LLUUID& notification_id)
 {
-	LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id);
-	
-	LLScriptFloater* floater = LLFloaterReg::showTypedInstance<LLScriptFloater>("script_floater", notification_id);
-	floater->setObjectId(object_id);
-	floater->createForm(object_id);
+	LLScriptFloater* floater = LLFloaterReg::getTypedInstance<LLScriptFloater>("script_floater", notification_id);
+	floater->setNotificationId(notification_id);
+	floater->createForm(notification_id);
+	LLFloaterReg::showTypedInstance<LLScriptFloater>("script_floater", notification_id, TRUE);
 
 	if (floater->getDockControl() == NULL)
 	{
-		LLChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(object_id);
+		LLChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(notification_id);
 		if (chiclet == NULL)
 		{
 			llerror("Dock chiclet for LLScriptFloater doesn't exist", 0);
@@ -133,7 +131,7 @@ void LLScriptFloater::getAllowedRect(LLRect& rect)
 	rect = gViewerWindow->getWorldViewRectRaw();
 }
 
-void LLScriptFloater::createForm(const LLUUID& object_id)
+void LLScriptFloater::createForm(const LLUUID& notification_id)
 {
 	// delete old form
 	if(mScriptForm)
@@ -142,8 +140,7 @@ void LLScriptFloater::createForm(const LLUUID& object_id)
 		mScriptForm->die();
 	}
 
-	LLNotificationPtr notification = LLNotifications::getInstance()->find(
-		LLScriptFloaterManager::getInstance()->findNotificationId(object_id));
+	LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id);
 	if(NULL == notification)
 	{
 		return;
@@ -165,9 +162,9 @@ void LLScriptFloater::createForm(const LLUUID& object_id)
 
 void LLScriptFloater::onClose(bool app_quitting)
 {
-	if(getObjectId().notNull())
+	if(getNotificationId().notNull())
 	{
-		LLScriptFloaterManager::getInstance()->removeNotificationByObjectId(getObjectId());
+		LLScriptFloaterManager::getInstance()->onRemoveNotification(getNotificationId());
 	}
 }
 
@@ -186,7 +183,7 @@ void LLScriptFloater::setVisible(BOOL visible)
 
 	if(!visible)
 	{
-		LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getObjectId());
+		LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
 		if(chiclet)
 		{
 			chiclet->setToggleState(false);
@@ -196,10 +193,10 @@ void LLScriptFloater::setVisible(BOOL visible)
 
 void LLScriptFloater::onMouseDown()
 {
-	if(getObjectId().notNull())
+	if(getNotificationId().notNull())
 	{
 		// Remove new message icon
-		LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getObjectId());
+		LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
 		if (chiclet == NULL)
 		{
 			llerror("Dock chiclet for LLScriptFloater doesn't exist", 0);
@@ -213,15 +210,18 @@ void LLScriptFloater::onMouseDown()
 
 void LLScriptFloater::onFocusLost()
 {
-	LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getObjectId(), false);
+	if(getNotificationId().notNull())
+	{
+		LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), false);
+	}
 }
 
 void LLScriptFloater::onFocusReceived()
 {
 	// first focus will be received before setObjectId() call - don't toggle chiclet
-	if(getObjectId().notNull())
+	if(getNotificationId().notNull())
 	{
-		LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getObjectId(), true);
+		LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), true);
 	}
 }
 
@@ -246,200 +246,203 @@ void LLScriptFloater::hideToastsIfNeeded()
 
 void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
 {
-	// get scripted Object's ID
-	LLUUID object_id = notification_id_to_object_id(notification_id);
-	if(object_id.isNull())
+	if(notification_id.isNull())
 	{
-		llwarns << "Invalid notification, no object id" << llendl;
+		llwarns << "Invalid notification ID" << llendl;
 		return;
 	}
 
+	// get scripted Object's ID
+	LLUUID object_id = notification_id_to_object_id(notification_id);
+	
 	// Need to indicate of "new message" for object chiclets according to requirements
 	// specified in the Message Bar design specification. See EXT-3142.
 	bool set_new_message = false;
+	EObjectType obj_type = getObjectType(notification_id);
 
-	// If an Object spawns more-than-one floater, only the newest one is shown. 
-	// The previous is automatically closed.
-	script_notification_map_t::iterator it = mNotifications.find(object_id);
-	if(it != mNotifications.end())
+	// LLDialog can spawn only one instance, LLLoadURL and LLGiveInventory can spawn unlimited number of instances
+	if(OBJ_SCRIPT == obj_type)
 	{
-		LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(object_id);
-		if(chiclet)
+		// If an Object spawns more-than-one floater, only the newest one is shown. 
+		// The previous is automatically closed.
+		script_notification_map_t::const_iterator it = findUsingObjectId(object_id);
+		if(it != mNotifications.end())
 		{
-			// Pass the new_message icon state further.
-			set_new_message = chiclet->getShowNewMessagesIcon();
-		}
+			LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(it->first);
+			if(chiclet)
+			{
+				// Pass the new_message icon state further.
+				set_new_message = chiclet->getShowNewMessagesIcon();
+			}
 
-		LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", it->second.notification_id);
-		if(floater)
-		{
-			// Generate chiclet with a "new message" indicator if a docked window was opened but not in focus. See EXT-3142.
-			set_new_message |= !floater->hasFocus();
-		}
+			LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", it->first);
+			if(floater)
+			{
+				// Generate chiclet with a "new message" indicator if a docked window was opened but not in focus. See EXT-3142.
+				set_new_message |= !floater->hasFocus();
+			}
 
-		onRemoveNotification(it->second.notification_id);
+			onRemoveNotification(it->first);
+		}
 	}
 
-	LLNotificationData nd = {notification_id};
-	mNotifications.insert(std::make_pair(object_id, nd));
+	mNotifications.insert(std::make_pair(notification_id, object_id));
 
 	// Create inventory offer chiclet for offer type notifications
-	LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id);
-	if( notification && notification->getType() == "offer" )
+	if( OBJ_GIVE_INVENTORY == obj_type )
 	{
-		LLBottomTray::instance().getChicletPanel()->createChiclet<LLInvOfferChiclet>(object_id);
+		LLBottomTray::instance().getChicletPanel()->createChiclet<LLInvOfferChiclet>(notification_id);
 	}
 	else
 	{
-		LLBottomTray::getInstance()->getChicletPanel()->createChiclet<LLScriptChiclet>(object_id);
+		LLBottomTray::getInstance()->getChicletPanel()->createChiclet<LLScriptChiclet>(notification_id);
 	}
 
-	LLIMWellWindow::getInstance()->addObjectRow(object_id, set_new_message);
+	LLIMWellWindow::getInstance()->addObjectRow(notification_id, set_new_message);
 
 	LLSD data;
-	data["object_id"] = object_id;
+	data["notification_id"] = notification_id;
 	data["new_message"] = set_new_message;
 	data["unread"] = 1; // each object has got only one floater
 	mNewObjectSignal(data);
 
-	toggleScriptFloater(object_id, set_new_message);
+	toggleScriptFloater(notification_id, set_new_message);
 }
 
 void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
 {
-	LLUUID object_id = findObjectId(notification_id);
-	if(object_id.isNull())
+	if(notification_id.isNull())
 	{
-		llwarns << "Invalid notification, no object id" << llendl;
+		llwarns << "Invalid notification ID" << llendl;
 		return;
 	}
 
-	using namespace LLNotificationsUI;
-
-	// remove related toast
-	LLUUID channel_id(gSavedSettings.getString("NotificationChannelUUID"));
-	LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>
-		(LLChannelManager::getInstance()->findChannelByID(channel_id));
-	LLUUID n_toast_id = findNotificationToastId(object_id);
-	if(channel && n_toast_id.notNull())
-	{
-		channel->killToastByNotificationID(n_toast_id);
-	}
-
 	// remove related chiclet
-	LLBottomTray::getInstance()->getChicletPanel()->removeChiclet(object_id);
+	LLBottomTray::getInstance()->getChicletPanel()->removeChiclet(notification_id);
 
-	LLIMWellWindow::getInstance()->removeObjectRow(object_id);
+	LLIMWellWindow::getInstance()->removeObjectRow(notification_id);
 
 	// close floater
 	LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id);
 	if(floater)
 	{
-		floater->setObjectId(LLUUID::null);
+		floater->setNotificationId(LLUUID::null);
 		floater->closeFloater();
 	}
 
-	mNotifications.erase(object_id);
-}
-
-void LLScriptFloaterManager::removeNotificationByObjectId(const LLUUID& object_id)
-{
-	// Check we have not removed notification yet
-	LLNotificationPtr notification = LLNotifications::getInstance()->find(
-		findNotificationId(object_id));
-	if(notification)
-	{
-		onRemoveNotification(notification->getID());
-	}
+	mNotifications.erase(notification_id);
 }
 
-void LLScriptFloaterManager::toggleScriptFloater(const LLUUID& object_id, bool set_new_message)
+void LLScriptFloaterManager::toggleScriptFloater(const LLUUID& notification_id, bool set_new_message)
 {
-	// kill toast
-	using namespace LLNotificationsUI;
-	LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(LLChannelManager::getInstance()->findChannelByID(
-		LLUUID(gSavedSettings.getString("NotificationChannelUUID"))));
-	if(channel)
-	{
-		channel->killToastByNotificationID(findNotificationToastId(object_id));
-	}
-
 	LLSD data;
-	data["object_id"] = object_id;
+	data["notification_id"] = notification_id;
 	data["new_message"] = set_new_message;
 	mToggleFloaterSignal(data);
 
 	// toggle floater
-	LLScriptFloater::toggle(object_id);
+	LLScriptFloater::toggle(notification_id);
 }
 
-void LLScriptFloaterManager::setNotificationToastId(const LLUUID& object_id, const LLUUID& notification_id)
+LLUUID LLScriptFloaterManager::findObjectId(const LLUUID& notification_id)
 {
-	script_notification_map_t::iterator it = mNotifications.find(object_id);
+	script_notification_map_t::const_iterator it = mNotifications.find(notification_id);
 	if(mNotifications.end() != it)
 	{
-		it->second.toast_notification_id = notification_id;
+		return it->second;
 	}
+	return LLUUID::null;
 }
 
-LLUUID LLScriptFloaterManager::findObjectId(const LLUUID& notification_id)
+LLUUID LLScriptFloaterManager::findNotificationId(const LLUUID& object_id)
 {
-	if(notification_id.notNull())
+	if(object_id.notNull())
 	{
-		script_notification_map_t::const_iterator it = mNotifications.begin();
-		for(; mNotifications.end() != it; ++it)
+		script_notification_map_t::const_iterator it = findUsingObjectId(object_id);
+		if(mNotifications.end() != it)
 		{
-			if(notification_id == it->second.notification_id)
-			{
-				return it->first;
-			}
+			return it->first;
 		}
 	}
 	return LLUUID::null;
 }
 
-LLUUID LLScriptFloaterManager::findNotificationId(const LLUUID& object_id)
+// static
+LLScriptFloaterManager::EObjectType LLScriptFloaterManager::getObjectType(const LLUUID& notification_id)
 {
-	script_notification_map_t::const_iterator it = mNotifications.find(object_id);
-	if(mNotifications.end() != it)
+	if(notification_id.isNull())
 	{
-		return it->second.notification_id;
+		llwarns << "Invalid notification ID" << llendl;
+		return OBJ_UNKNOWN;
 	}
-	return LLUUID::null;
-}
 
-LLUUID LLScriptFloaterManager::findNotificationToastId(const LLUUID& object_id)
-{
-	script_notification_map_t::const_iterator it = mNotifications.find(object_id);
-	if(mNotifications.end() != it)
+	static const object_type_map TYPE_MAP = initObjectTypeMap();
+
+	LLNotificationPtr notification = LLNotificationsUtil::find(notification_id);
+	object_type_map::const_iterator it = TYPE_MAP.find(notification->getName());
+	if(it != TYPE_MAP.end())
 	{
-		return it->second.toast_notification_id;
+		return it->second;
 	}
-	return LLUUID::null;
+
+	llwarns << "Unknown object type" << llendl;
+	return OBJ_UNKNOWN;
 }
 
-//static
-void LLScriptFloaterManager::onToastButtonClick(const LLSD&notification, const LLSD&response)
+// static
+std::string LLScriptFloaterManager::getObjectName(const LLUUID& notification_id)
 {
-	S32 option = LLNotification::getSelectedOption(notification, response);
-	LLUUID object_id = notification["payload"]["object_id"].asUUID();
+	using namespace LLNotificationsUI;
+	LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id);
+	if(!notification)
+	{
+		llwarns << "Invalid notification" << llendl;
+		return LLStringUtil::null;
+	}
 
-	switch(option)
+	std::string text;
+
+	switch(LLScriptFloaterManager::getObjectType(notification_id))
 	{
-	case 0: // "Open"
-		LLScriptFloaterManager::getInstance()->toggleScriptFloater(object_id);
+	case LLScriptFloaterManager::OBJ_SCRIPT:
+		text = notification->getSubstitutions()["TITLE"].asString();
 		break;
-	case 1: // "Ignore"
-		LLScriptFloaterManager::getInstance()->removeNotificationByObjectId(object_id);
+	case LLScriptFloaterManager::OBJ_LOAD_URL:
+		text = notification->getSubstitutions()["OBJECTNAME"].asString();
 		break;
-	case 2: // "Block"
-		LLMuteList::getInstance()->add(LLMute(object_id, notification["substitutions"]["TITLE"], LLMute::OBJECT));
-		LLScriptFloaterManager::getInstance()->removeNotificationByObjectId(object_id);
+	case LLScriptFloaterManager::OBJ_GIVE_INVENTORY:
+		text = notification->getSubstitutions()["NAME"].asString();
 		break;
 	default:
-		llwarns << "Unexpected value" << llendl;
+		text = LLTrans::getString("object");
 		break;
 	}
+
+	return text;
+}
+
+//static
+LLScriptFloaterManager::object_type_map LLScriptFloaterManager::initObjectTypeMap()
+{
+	object_type_map type_map;
+	type_map["ScriptDialog"] = OBJ_SCRIPT;
+	type_map["ScriptDialogGroup"] = OBJ_SCRIPT;
+	type_map["LoadWebPage"] = OBJ_LOAD_URL;
+	type_map["ObjectGiveItem"] = OBJ_GIVE_INVENTORY;
+	return type_map;
+}
+
+LLScriptFloaterManager::script_notification_map_t::const_iterator LLScriptFloaterManager::findUsingObjectId(const LLUUID& object_id)
+{
+	script_notification_map_t::const_iterator it = mNotifications.begin();
+	for(; mNotifications.end() != it; ++it)
+	{
+		if(object_id == it->second)
+		{
+			return it;
+		}
+	}
+	return mNotifications.end();
 }
 
 // EOF
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index f86605c5d1d702de45b1f3aab989f8174aaf7a48..f7efff83f953dc32536a9ffc8a52b009c101155e 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -48,6 +48,15 @@ class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
 	// know how script notifications should look like.
 public:
 
+	typedef enum e_object_type
+	{
+		OBJ_SCRIPT,
+		OBJ_GIVE_INVENTORY,
+		OBJ_LOAD_URL,
+
+		OBJ_UNKNOWN
+	}EObjectType;
+
 	/**
 	 * Handles new notifications.
 	 * Saves notification and object ids, removes old notification if needed, creates script chiclet
@@ -61,11 +70,6 @@ class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
 	 */
 	void onRemoveNotification(const LLUUID& notification_id);
 
-	/**
-	 * Wrapper for onRemoveNotification, removes notification by object id.
-	 */
-	void removeNotificationByObjectId(const LLUUID& object_id);
-
 	/**
 	 * Toggles script floater.
 	 * Removes "new message" icon from chiclet and removes notification toast.
@@ -76,12 +80,9 @@ class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
 
 	LLUUID findNotificationId(const LLUUID& object_id);
 
-	LLUUID findNotificationToastId(const LLUUID& object_id);
+	static EObjectType getObjectType(const LLUUID& notification_id);
 
-	/**
-	 * Associate notification toast id with object id.
-	 */
-	void setNotificationToastId(const LLUUID& object_id, const LLUUID& notification_id);
+	static std::string getObjectName(const LLUUID& notification_id);
 
 	/**
 	* Callback for notification toast buttons.
@@ -93,16 +94,18 @@ class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager>
 	boost::signals2::connection addNewObjectCallback(const object_signal_t::slot_type& cb) { return mNewObjectSignal.connect(cb); }
 	boost::signals2::connection addToggleObjectFloaterCallback(const object_signal_t::slot_type& cb) { return mToggleFloaterSignal.connect(cb); }
 
-private:
+protected:
 
-	struct LLNotificationData
-	{
-		LLUUID notification_id;
-		LLUUID toast_notification_id;
-	};
+	typedef std::map<std::string, EObjectType> object_type_map;
+
+	static object_type_map initObjectTypeMap();
 
-	// <object_id, notification_data>
-	typedef std::map<LLUUID, LLNotificationData> script_notification_map_t;
+	// <notification_id, object_id>
+	typedef std::map<LLUUID, LLUUID> script_notification_map_t;
+
+	script_notification_map_t::const_iterator findUsingObjectId(const LLUUID& object_id);
+
+private:
 
 	script_notification_map_t mNotifications;
 
@@ -136,9 +139,9 @@ class LLScriptFloater : public LLDockableFloater
 	 */
 	static LLScriptFloater* show(const LLUUID& object_id);
 
-	const LLUUID& getObjectId() { return mObjectId; }
+	const LLUUID& getNotificationId() { return mNotificationId; }
 
-	void setObjectId(const LLUUID& id) { mObjectId = id; }
+	void setNotificationId(const LLUUID& id) { mNotificationId = id; }
 
 	/**
 	 * Close notification if script floater is closed.
@@ -180,7 +183,7 @@ class LLScriptFloater : public LLDockableFloater
 
 private:
 	LLToastNotifyPanel* mScriptForm;
-	LLUUID mObjectId;
+	LLUUID mNotificationId;
 };
 
 #endif //LL_SCRIPTFLOATER_H
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index bf08756051047d57650a132eb00791e4ca523ea2..95408946468c8520b0398782287f276f72846234 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -41,6 +41,7 @@
 #include "lldbstrings.h"
 #include "lleconomy.h"
 #include "llgl.h"
+#include "llmediaentry.h"
 #include "llrender.h"
 #include "llnotifications.h"
 #include "llpermissions.h"
@@ -1739,70 +1740,70 @@ void LLSelectMgr::selectionSetFullbright(U8 fullbright)
 	getSelection()->applyToObjects(&sendfunc);
 }
 
-void LLSelectMgr::selectionSetMedia(U8 media_type)
-{
-	
-	struct f : public LLSelectedTEFunctor
-	{
-		U8 mMediaFlags;
-		f(const U8& t) : mMediaFlags(t) {}
-		bool apply(LLViewerObject* object, S32 te)
-		{
-			if (object->permModify())
-			{
-				// update viewer has media
-				object->setTEMediaFlags(te, mMediaFlags);
-			}
-			return true;
-		}
-	} setfunc(media_type);
-	getSelection()->applyToTEs(&setfunc);
-	struct f2 : public LLSelectedObjectFunctor
-	{
-		virtual bool apply(LLViewerObject* object)
-		{
-			if (object->permModify())
-			{
-				object->sendTEUpdate();
-			}
-			return true;
-		}
-	} func2;
-	mSelectedObjects->applyToObjects( &func2 );
-}
-
 // This function expects media_data to be a map containing relevant
 // media data name/value pairs (e.g. home_url, etc.)
-void LLSelectMgr::selectionSetMediaData(const LLSD &media_data)
-{
-
+void LLSelectMgr::selectionSetMedia(U8 media_type, const LLSD &media_data)
+{	
 	struct f : public LLSelectedTEFunctor
 	{
+		U8 mMediaFlags;
 		const LLSD &mMediaData;
-		f(const LLSD& t) : mMediaData(t) {}
+		f(const U8& t, const LLSD& d) : mMediaFlags(t), mMediaData(d) {}
 		bool apply(LLViewerObject* object, S32 te)
 		{
 			if (object->permModify())
 			{
-                LLVOVolume *vo = dynamic_cast<LLVOVolume*>(object);
-                if (NULL != vo) 
-                {
-                    vo->syncMediaData(te, mMediaData, true/*merge*/, true/*ignore_agent*/);
-                }                
+				// If we are adding media, then check the current state of the
+				// media data on this face.  
+				//  - If it does not have media, AND we are NOT setting the HOME URL, then do NOT add media to this
+				// face.
+				//  - If it does not have media, and we ARE setting the HOME URL, add media to this face.
+				//  - If it does already have media, add/update media to/on this face
+				// If we are removing media, just do it (ignore the passed-in LLSD).
+				if (mMediaFlags & LLTextureEntry::MF_HAS_MEDIA)
+				{
+					llassert(mMediaData.isMap());
+					const LLTextureEntry *texture_entry = object->getTE(te);
+					if (!mMediaData.isMap() ||
+						(NULL != texture_entry) && !texture_entry->hasMedia() && !mMediaData.has(LLMediaEntry::HOME_URL_KEY))
+					{
+						// skip adding/updating media
+					}
+					else {
+						// Add/update media
+						object->setTEMediaFlags(te, mMediaFlags);
+						LLVOVolume *vo = dynamic_cast<LLVOVolume*>(object);
+						llassert(NULL != vo);
+						if (NULL != vo) 
+						{
+							vo->syncMediaData(te, mMediaData, true/*merge*/, true/*ignore_agent*/);
+						}
+					}
+				}
+				else
+				{
+					// delete media (or just set the flags)
+					object->setTEMediaFlags(te, mMediaFlags);
+				}
 			}
 			return true;
 		}
-	} setfunc(media_data);
+	} setfunc(media_type, media_data);
 	getSelection()->applyToTEs(&setfunc);
-
+	
 	struct f2 : public LLSelectedObjectFunctor
 	{
 		virtual bool apply(LLViewerObject* object)
 		{
 			if (object->permModify())
 			{
-                LLVOVolume *vo = dynamic_cast<LLVOVolume*>(object);
-                if (NULL != vo) 
+				object->sendTEUpdate();
+				LLVOVolume *vo = dynamic_cast<LLVOVolume*>(object);
+				llassert(NULL != vo);
+				// It's okay to skip this object if hasMedia() is false...
+				// the sendTEUpdate() above would remove all media data if it were
+				// there.
+                if (NULL != vo && vo->hasMedia())
                 {
                     // Send updated media data FOR THE ENTIRE OBJECT
                     vo->sendMediaDataUpdate();
@@ -1811,11 +1812,9 @@ void LLSelectMgr::selectionSetMediaData(const LLSD &media_data)
 			return true;
 		}
 	} func2;
-	getSelection()->applyToObjects(&func2);
+	mSelectedObjects->applyToObjects( &func2 );
 }
 
-
-
 void LLSelectMgr::selectionSetGlow(F32 glow)
 {
 	struct f1 : public LLSelectedTEFunctor
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index f8ecfd067499dba70b6ae03d6e711972b818990a..00474827ca19c2682709c2b0c8f54916b89caef8 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -502,8 +502,7 @@ class LLSelectMgr : public LLEditMenuHandler, public LLSingleton<LLSelectMgr>
 	void selectionSetTexGen( U8 texgen );
 	void selectionSetShiny( U8 shiny );
 	void selectionSetFullbright( U8 fullbright );
-	void selectionSetMedia( U8 media_type );
-	void selectionSetMediaData(const LLSD &media_data); // NOTE: modifies media_data!!!
+	void selectionSetMedia( U8 media_type, const LLSD &media_data );
 	void selectionSetClickAction(U8 action);
 	void selectionSetIncludeInSearch(bool include_in_search);
 	void selectionSetGlow(const F32 glow);
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 43215f86bd27772b8e2c20956f10a0a0a7a6b0d8..cd4a821774c095b8593ba3d3a215c1ddf887223f 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -278,7 +278,7 @@ void LLSidepanelAppearance::toggleLookInfoPanel(BOOL visible)
 		return;
 
 	mLookInfo->setVisible(visible);
-	mPanelOutfitsInventory->setVisible(!visible);
+	if (mPanelOutfitsInventory) mPanelOutfitsInventory->setVisible(!visible);
 	mFilterEditor->setVisible(!visible);
 	mEditBtn->setVisible(!visible);
 	mNewOutfitBtn->setVisible(!visible);
@@ -305,7 +305,7 @@ void LLSidepanelAppearance::updateVerbs()
 {
 	bool is_look_info_visible = mLookInfo->getVisible();
 
-	if (!is_look_info_visible)
+	if (mPanelOutfitsInventory && !is_look_info_visible)
 	{
 		const bool is_correct_type = (mPanelOutfitsInventory->getCorrectListenerForAction() != NULL);
 		mEditBtn->setEnabled(is_correct_type);
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 3fd5309947593211ba68b1ec39d88765d73072a5..73880563d7d286e5e8e8595da6bca18965bac0b9 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -62,7 +62,7 @@ BOOL LLSidepanelInventory::postBuild()
 	// UI elements from inventory panel
 	{
 		mInventoryPanel = getChild<LLPanel>("sidepanel__inventory_panel");
-		
+
 		mInfoBtn = mInventoryPanel->getChild<LLButton>("info_btn");
 		mInfoBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onInfoButtonClicked, this));
 		
@@ -83,6 +83,14 @@ BOOL LLSidepanelInventory::postBuild()
 		
 		mPanelMainInventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
 		mPanelMainInventory->setSelectCallback(boost::bind(&LLSidepanelInventory::onSelectionChange, this, _1, _2));
+
+		/* 
+		   EXT-4846 : "Can we suppress the "Landmarks" and "My Favorites" folder since they have their own Task Panel?"
+		   Deferring this until 2.1.
+		LLInventoryPanel *my_inventory_panel = mPanelMainInventory->getChild<LLInventoryPanel>("All Items");
+		my_inventory_panel->addHideFolderType(LLFolderType::FT_LANDMARK);
+		my_inventory_panel->addHideFolderType(LLFolderType::FT_FAVORITE);
+		*/
 	}
 
 	// UI elements from item panel
diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp
index 94fe95d215a8ffadc44553836444275c7eca688d..0275736f6dc9ca1150e53abf1493e271279b302f 100644
--- a/indra/newview/llsidepaneliteminfo.cpp
+++ b/indra/newview/llsidepaneliteminfo.cpp
@@ -109,9 +109,9 @@ BOOL LLSidepanelItemInfo::postBuild()
 {
 	LLSidepanelInventorySubpanel::postBuild();
 
-	childSetPrevalidate("LabelItemName",&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+	childSetPrevalidate("LabelItemName",&LLTextValidate::validateASCIIPrintableNoPipe);
 	getChild<LLUICtrl>("LabelItemName")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitName,this));
-	childSetPrevalidate("LabelItemDesc",&LLLineEditor::prevalidateASCIIPrintableNoPipe);
+	childSetPrevalidate("LabelItemDesc",&LLTextValidate::validateASCIIPrintableNoPipe);
 	getChild<LLUICtrl>("LabelItemDesc")->setCommitCallback(boost::bind(&LLSidepanelItemInfo:: onCommitDescription, this));
 	// Creator information
 	getChild<LLUICtrl>("BtnCreator")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onClickCreator,this));
@@ -231,20 +231,23 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
 	// PERMISSIONS LOOKUP //
 	////////////////////////
 
+	llassert(item);
+	if (!item) return;
+
 	// do not enable the UI for incomplete items.
 	BOOL is_complete = item->isComplete();
 	const BOOL cannot_restrict_permissions = LLInventoryType::cannotRestrictPermissions(item->getInventoryType());
 	const BOOL is_calling_card = (item->getInventoryType() == LLInventoryType::IT_CALLINGCARD);
 	const LLPermissions& perm = item->getPermissions();
 	const BOOL can_agent_manipulate = gAgent.allowOperation(PERM_OWNER, perm, 
-															GP_OBJECT_MANIPULATE);
+								GP_OBJECT_MANIPULATE);
 	const BOOL can_agent_sell = gAgent.allowOperation(PERM_OWNER, perm, 
-													  GP_OBJECT_SET_SALE) &&
+							  GP_OBJECT_SET_SALE) &&
 		!cannot_restrict_permissions;
 	const BOOL is_link = item->getIsLinkType();
 	
 	const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH);
-	bool not_in_trash = item && (item->getUUID() != trash_id) && !gInventory.isObjectDescendentOf(item->getUUID(), trash_id);
+	bool not_in_trash = (item->getUUID() != trash_id) && !gInventory.isObjectDescendentOf(item->getUUID(), trash_id);
 
 	// You need permission to modify the object to modify an inventory
 	// item in it.
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index 1da6fc516d3035c5093713c090140431b6878291..b0cdbe74dd47816cf67b708e6cfc3f52e11876ad 100644
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -104,9 +104,9 @@ BOOL LLSidepanelTaskInfo::postBuild()
 	mLabelGroupName = getChild<LLNameBox>("Group Name Proxy");
 
 	childSetCommitCallback("Object Name",						LLSidepanelTaskInfo::onCommitName,this);
-	childSetPrevalidate("Object Name",							LLLineEditor::prevalidateASCIIPrintableNoPipe);
+	childSetPrevalidate("Object Name",							LLTextValidate::validateASCIIPrintableNoPipe);
 	childSetCommitCallback("Object Description",				LLSidepanelTaskInfo::onCommitDesc,this);
-	childSetPrevalidate("Object Description",					LLLineEditor::prevalidateASCIIPrintableNoPipe);
+	childSetPrevalidate("Object Description",					LLTextValidate::validateASCIIPrintableNoPipe);
 	getChild<LLUICtrl>("button set group")->setCommitCallback(boost::bind(&LLSidepanelTaskInfo::onClickGroup,this));
 	childSetCommitCallback("checkbox share with group",			&LLSidepanelTaskInfo::onCommitGroupShare,this);
 	childSetAction("button deed",								&LLSidepanelTaskInfo::onClickDeedToGroup,this);
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h
index b1c8675793c296170aa71b6afc2e24c24f66652e..140a9c818a7a7b6f8b6e021091aeedad3e5ffd70 100644
--- a/indra/newview/llsidetray.h
+++ b/indra/newview/llsidetray.h
@@ -139,6 +139,8 @@ class LLSideTray : public LLPanel, private LLDestroyClass<LLSideTray>
 
 	LLPanel*	getButtonsPanel() { return mButtonsPanel; }
 
+	bool		getCollapsed() { return mCollapsed; }
+
 public:
 	virtual ~LLSideTray(){};
 
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp
index 2d4f3ff3c672ee26fdb09d6003aeb48e909807aa..4e121021fcccea85fd2729610bb74eaa987e21de 100644
--- a/indra/newview/llspeakers.cpp
+++ b/indra/newview/llspeakers.cpp
@@ -176,6 +176,11 @@ BOOL LLSpeakerActionTimer::tick()
 	return TRUE;
 }
 
+void LLSpeakerActionTimer::unset()
+{
+	mActionCallback = 0;
+}
+
 LLSpeakersDelayActionsStorage::LLSpeakersDelayActionsStorage(LLSpeakerActionTimer::action_callback_t action_cb, F32 action_delay)
 : mActionCallback(action_cb)
 , mActionDelay(action_delay)
@@ -214,7 +219,7 @@ void LLSpeakersDelayActionsStorage::unsetActionTimer(const LLUUID& speaker_id)
 
 	if (it_speaker != mActionTimersMap.end())
 	{
-		delete it_speaker->second;
+		it_speaker->second->unset();
 		mActionTimersMap.erase(it_speaker);
 	}
 }
@@ -238,9 +243,7 @@ bool LLSpeakersDelayActionsStorage::onTimerActionCallback(const LLUUID& speaker_
 		mActionCallback(speaker_id);
 	}
 
-	// do not return true to avoid deleting of an timer twice:
-	// in LLSpeakersDelayActionsStorage::unsetActionTimer() & LLEventTimer::updateClass()
-	return false;
+	return true;
 }
 
 
@@ -293,7 +296,6 @@ LLPointer<LLSpeaker> LLSpeakerMgr::setSpeaker(const LLUUID& id, const std::strin
 	}
 
 	mSpeakerDelayRemover->unsetActionTimer(speakerp->mID);
-
 	return speakerp;
 }
 
diff --git a/indra/newview/llspeakers.h b/indra/newview/llspeakers.h
index cf236f4fe8780ce9987f20e8854df87f2008c745..8c9e85dd147f337e268e7252ccbfda16195560c3 100644
--- a/indra/newview/llspeakers.h
+++ b/indra/newview/llspeakers.h
@@ -34,6 +34,7 @@
 #define LL_LLSPEAKERS_H
 
 #include "llevent.h"
+#include "lleventtimer.h"
 #include "llspeakers.h"
 #include "llvoicechannel.h"
 
@@ -155,6 +156,13 @@ class LLSpeakerActionTimer : public LLEventTimer
 	 */
 	virtual BOOL tick();
 
+	/**
+	 * Clears the callback.
+	 *
+	 * Use this instead of deleteing this object. 
+	 * The next call to tick() will return true and that will destroy this object.
+	 */
+	void unset();
 private:
 	action_callback_t	mActionCallback;
 	LLUUID				mSpeakerId;
@@ -176,7 +184,7 @@ class LLSpeakersDelayActionsStorage
 	void setActionTimer(const LLUUID& speaker_id);
 
 	/**
-	 * Removes stored LLSpeakerActionTimer for passed speaker UUID from internal map and deletes it.
+	 * Removes stored LLSpeakerActionTimer for passed speaker UUID from internal map and optionally deletes it.
 	 *
 	 * @see onTimerActionCallback()
 	 */
@@ -188,7 +196,6 @@ class LLSpeakersDelayActionsStorage
 	 * Callback of the each instance of LLSpeakerActionTimer.
 	 *
 	 * Unsets an appropriate timer instance and calls action callback for specified speacker_id.
-	 * It always returns false to not use LLEventTimer::updateClass functionality of timer deleting.
 	 *
 	 * @see unsetActionTimer()
 	 */
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 15c564084182b806b0bcf518b5e8bacd84d6478a..cfad29df89a14ba41339801dd1dee15512c6746d 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -135,13 +135,14 @@
 #include "llsecondlifeurls.h"
 #include "llselectmgr.h"
 #include "llsky.h"
+#include "llsidetray.h"
 #include "llstatview.h"
-#include "lltrans.h"
 #include "llstatusbar.h"		// sendMoneyBalanceRequest(), owns L$ balance
 #include "llsurface.h"
 #include "lltexturecache.h"
 #include "lltexturefetch.h"
 #include "lltoolmgr.h"
+#include "lltrans.h"
 #include "llui.h"
 #include "llurldispatcher.h"
 #include "llurlsimstring.h"
@@ -800,6 +801,9 @@ bool idle_startup()
 		gLoginMenuBarView->setVisible( TRUE );
 		gLoginMenuBarView->setEnabled( TRUE );
 
+		// Hide the splash screen
+		LLSplashScreen::hide();
+
 		// Push our window frontmost
 		gViewerWindow->getWindow()->show();
 		display_startup();
@@ -1198,6 +1202,7 @@ bool idle_startup()
 
 		display_startup();
 		LLStartUp::setStartupState( STATE_MULTIMEDIA_INIT );
+		
 		return FALSE;
 	}
 
@@ -1700,6 +1705,13 @@ bool idle_startup()
 					<< " kbps" << LL_ENDL;
 				gViewerThrottle.setMaxBandwidth(FAST_RATE_BPS / 1024.f);
 			}
+
+			// Set the show start location to true, now that the user has logged
+			// on with this install.
+			gSavedSettings.setBOOL("ShowStartLocation", TRUE);
+			
+			LLSideTray::getInstance()->showPanel("panel_home", LLSD());
+
 		}
 
 		// We're successfully logged in.
@@ -1879,6 +1891,17 @@ bool idle_startup()
 			}
 		}
 
+		// 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.
+		static bool check_populate_my_outfits = true;
+		if (check_populate_my_outfits && 
+			(LLInventoryModel::getIsFirstTimeInViewer2() 
+			 || gSavedSettings.getBOOL("MyOutfitsAutofill")))
+		{
+			gAgentWearables.populateMyOutfitsFolder();
+		}
+		check_populate_my_outfits = false;
+
 		return TRUE;
 	}
 
@@ -2541,27 +2564,53 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 
 	// try to find the outfit - if not there, create some default
 	// wearables.
-	LLInventoryModel::cat_array_t cat_array;
-	LLInventoryModel::item_array_t item_array;
-	LLNameCategoryCollector has_name(outfit_folder_name);
-	gInventory.collectDescendentsIf(gInventory.getLibraryRootFolderID(),
-									cat_array,
-									item_array,
-									LLInventoryModel::EXCLUDE_TRASH,
-									has_name);
-	if (0 == cat_array.count())
+	LLUUID cat_id = findDescendentCategoryIDByName(
+		gInventory.getLibraryRootFolderID(),
+		outfit_folder_name);
+	if (cat_id.isNull())
 	{
 		gAgentWearables.createStandardWearables(gender);
 	}
 	else
 	{
-		LLInventoryCategory* cat = cat_array.get(0);
 		bool do_copy = true;
 		bool do_append = false;
+		LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id);
 		LLAppearanceManager::instance().wearInventoryCategory(cat, do_copy, do_append);
 	}
-	LLAppearanceManager::instance().wearOutfitByName(gestures);
-	LLAppearanceManager::instance().wearOutfitByName(COMMON_GESTURES_FOLDER);
+
+	// Copy gestures
+	LLUUID dst_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);
+	LLPointer<LLInventoryCallback> cb(NULL);
+	LLAppearanceManager *app_mgr = &(LLAppearanceManager::instance());
+
+	// - Copy gender-specific gestures.
+	LLUUID gestures_cat_id = findDescendentCategoryIDByName( 
+		gInventory.getLibraryRootFolderID(),
+		gestures);
+	if (gestures_cat_id.notNull())
+	{
+		callAfterCategoryFetch(gestures_cat_id,
+							   boost::bind(&LLAppearanceManager::shallowCopyCategory,
+										   app_mgr,
+										   gestures_cat_id,
+										   dst_id,
+										   cb));
+	}
+
+	// - Copy common gestures.
+	LLUUID common_gestures_cat_id = findDescendentCategoryIDByName( 
+		gInventory.getLibraryRootFolderID(),
+		COMMON_GESTURES_FOLDER);
+	if (common_gestures_cat_id.notNull())
+	{
+		callAfterCategoryFetch(common_gestures_cat_id,
+							   boost::bind(&LLAppearanceManager::shallowCopyCategory,
+										   app_mgr,
+										   common_gestures_cat_id,
+										   dst_id,
+										   cb));
+	}
 
 	// This is really misnamed -- it means we have started loading
 	// an outfit/shape that will give the avatar a gender eventually. JC
diff --git a/indra/newview/llstylemap.cpp b/indra/newview/llstylemap.cpp
index 2485563cbc6ac15c60436828d13125fba0fccd7c..61705c4eb31390b527cb1efdf121fcd7a2c39b9b 100644
--- a/indra/newview/llstylemap.cpp
+++ b/indra/newview/llstylemap.cpp
@@ -49,6 +49,7 @@ const LLStyle::Params &LLStyleMap::lookupAgent(const LLUUID &source)
 		if (source != LLUUID::null && source != gAgent.getID() )
 		{
 			style_params.color.control = "HTMLLinkColor";
+			style_params.readonly_color.control = "HTMLLinkColor";
 			style_params.link_href = 
 					LLSLURL::buildCommand("agent", source, "inspect");
 		}
@@ -56,6 +57,7 @@ const LLStyle::Params &LLStyleMap::lookupAgent(const LLUUID &source)
 		{
 			// Make the resident's own name white and don't make the name clickable.
 			style_params.color = LLColor4::white;
+			style_params.readonly_color = LLColor4::white;
 		}
 
 		mMap[source] = style_params;
@@ -75,11 +77,13 @@ const LLStyle::Params &LLStyleMap::lookup(const LLUUID& id, const std::string& l
 		if (id != LLUUID::null && !link.empty())
 		{
 			style_params.color.control = "HTMLLinkColor";
+			style_params.readonly_color.control = "HTMLLinkColor";
 			style_params.link_href = link;
 		}
 		else
 		{
 			style_params.color = LLColor4::white;
+			style_params.readonly_color = LLColor4::white;
 		}
 		mMap[id] = style_params;
 	}
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index ba15053381cf97e2013e03cffaf7a818c56b4a8b..127b4265cacbf69622b974e38e3128c660c23895 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -404,7 +404,10 @@ BOOL LLIMWellWindow::RowPanel::handleMouseDown(S32 x, S32 y, MASK mask)
 {
 	// Pass the mouse down event to the chiclet (EXT-596).
 	if (!mChiclet->pointInView(x, y) && !mCloseBtn->getRect().pointInRect(x, y)) // prevent double call of LLIMChiclet::onMouseDown()
+	{
 		mChiclet->onMouseDown();
+		return TRUE;
+	}
 
 	return LLPanel::handleMouseDown(x, y, mask);
 }
@@ -418,16 +421,16 @@ BOOL LLIMWellWindow::RowPanel::handleRightMouseDown(S32 x, S32 y, MASK mask)
 /*         ObjectRowPanel implementation                                */
 /************************************************************************/
 
-LLIMWellWindow::ObjectRowPanel::ObjectRowPanel(const LLUUID& object_id, bool new_message/* = false*/)
+LLIMWellWindow::ObjectRowPanel::ObjectRowPanel(const LLUUID& notification_id, bool new_message/* = false*/)
  : LLPanel()
  , mChiclet(NULL)
 {
 	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_active_object_row.xml", NULL);
 
-	initChiclet(object_id);
+	initChiclet(notification_id);
 
 	LLTextBox* obj_name = getChild<LLTextBox>("object_name");
-	obj_name->setValue(getObjectName(object_id));
+	obj_name->setValue(LLScriptFloaterManager::getObjectName(notification_id));
 
 	mCloseBtn = getChild<LLButton>("hide_btn");
 	mCloseBtn->setCommitCallback(boost::bind(&LLIMWellWindow::ObjectRowPanel::onClosePanel, this));
@@ -438,90 +441,18 @@ LLIMWellWindow::ObjectRowPanel::~ObjectRowPanel()
 {
 }
 
-std::string LLIMWellWindow::ObjectRowPanel::getObjectName(const LLUUID& object_id)
-{
-	using namespace LLNotificationsUI;
-	LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id);
-	LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id);
-	if(!notification)
-	{
-		llwarns << "Invalid notification" << llendl;
-		return LLStringUtil::null;
-	}
-
-	std::string text;
-
-	switch(getObjectType(notification))
-	{
-	case OBJ_SCRIPT:
-		text = notification->getSubstitutions()["TITLE"].asString();
-		break;
-	case OBJ_LOAD_URL:
-		text = notification->getSubstitutions()["OBJECTNAME"].asString();
-		break;
-	case OBJ_GIVE_INVENTORY:
-		text = notification->getSubstitutions()["NAME"].asString();
-		break;
-	default:
-		text = getString("unknown_obj");
-		break;
-	}
-
-	return text;
-}
-
 //---------------------------------------------------------------------------------
 void LLIMWellWindow::ObjectRowPanel::onClosePanel()
 {
-	LLScriptFloaterManager::getInstance()->removeNotificationByObjectId(mChiclet->getSessionId());
-}
-
-//static
-LLIMWellWindow::ObjectRowPanel::object_type_map LLIMWellWindow::ObjectRowPanel::initObjectTypeMap()
-{
-	object_type_map type_map;
-	type_map["ScriptDialog"] = OBJ_SCRIPT;
-	type_map["LoadWebPage"] = OBJ_LOAD_URL;
-	type_map["ObjectGiveItem"] = OBJ_GIVE_INVENTORY;
-	return type_map;
-}
-
-// static
-LLIMWellWindow::ObjectRowPanel::EObjectType LLIMWellWindow::ObjectRowPanel::getObjectType(const LLNotificationPtr& notification)
-{
-	if(!notification)
-	{
-		llwarns << "Invalid notification" << llendl;
-		return OBJ_UNKNOWN;
-	}
-
-	static object_type_map type_map = initObjectTypeMap();
-	std::string name = notification->getName();
-	object_type_map::const_iterator it = type_map.find(name);
-	if(it != type_map.end())
-	{
-		return it->second;
-	}
-
-	llwarns << "Unknown object type" << llendl;
-	return OBJ_UNKNOWN;
+	LLScriptFloaterManager::getInstance()->onRemoveNotification(mChiclet->getSessionId());
 }
 
-void LLIMWellWindow::ObjectRowPanel::initChiclet(const LLUUID& object_id, bool new_message/* = false*/)
+void LLIMWellWindow::ObjectRowPanel::initChiclet(const LLUUID& notification_id, bool new_message/* = false*/)
 {
-	using namespace LLNotificationsUI;
-	LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id);
-	LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id);
-	if(!notification)
-	{
-		llwarns << "Invalid notification" << llendl;
-		return;
-	}
-
 	// Choose which of the pre-created chiclets to use.
-	switch(getObjectType(notification))
+	switch(LLScriptFloaterManager::getObjectType(notification_id))
 	{
-	case OBJ_GIVE_INVENTORY:
+	case LLScriptFloaterManager::OBJ_GIVE_INVENTORY:
 		mChiclet = getChild<LLInvOfferChiclet>("inv_offer_chiclet");
 		break;
 	default:
@@ -530,8 +461,7 @@ void LLIMWellWindow::ObjectRowPanel::initChiclet(const LLUUID& object_id, bool n
 	}
 
 	mChiclet->setVisible(true);
-	mChiclet->setSessionId(object_id);
-//	mChiclet->setShowNewMessagesIcon(new_message);
+	mChiclet->setSessionId(notification_id);
 }
 
 //---------------------------------------------------------------------------------
@@ -552,7 +482,10 @@ BOOL LLIMWellWindow::ObjectRowPanel::handleMouseDown(S32 x, S32 y, MASK mask)
 {
 	// Pass the mouse down event to the chiclet (EXT-596).
 	if (!mChiclet->pointInView(x, y) && !mCloseBtn->getRect().pointInRect(x, y)) // prevent double call of LLIMChiclet::onMouseDown()
+	{
 		mChiclet->onMouseDown();
+		return TRUE;
+	}
 
 	return LLPanel::handleMouseDown(x, y, mask);
 }
@@ -780,10 +713,10 @@ void LLIMWellWindow::sessionIDUpdated(const LLUUID& old_session_id, const LLUUID
 	}
 }
 
-LLChiclet* LLIMWellWindow::findObjectChiclet(const LLUUID& object_id)
+LLChiclet* LLIMWellWindow::findObjectChiclet(const LLUUID& notification_id)
 {
 	LLChiclet* res = NULL;
-	ObjectRowPanel* panel = mMessageList->getTypedItemByValue<ObjectRowPanel>(object_id);
+	ObjectRowPanel* panel = mMessageList->getTypedItemByValue<ObjectRowPanel>(notification_id);
 	if (panel != NULL)
 	{
 		res = panel->mChiclet;
@@ -861,33 +794,33 @@ void LLIMWellWindow::delIMRow(const LLUUID& sessionId)
 	}
 }
 
-void LLIMWellWindow::addObjectRow(const LLUUID& object_id, bool new_message/* = false*/)
+void LLIMWellWindow::addObjectRow(const LLUUID& notification_id, bool new_message/* = false*/)
 {
-	if (mMessageList->getItemByValue(object_id) == NULL)
+	if (mMessageList->getItemByValue(notification_id) == NULL)
 	{
-		ObjectRowPanel* item = new ObjectRowPanel(object_id, new_message);
-		if (mMessageList->insertItemAfter(mSeparator, item, object_id))
+		ObjectRowPanel* item = new ObjectRowPanel(notification_id, new_message);
+		if (mMessageList->insertItemAfter(mSeparator, item, notification_id))
 		{
 			handleItemAdded(IT_INSTANT_MESSAGE);
 		}
 		else
 		{
-			llwarns << "Unable to add Object Row into the list, objectID: " << object_id << llendl;
+			llwarns << "Unable to add Object Row into the list, notificationID: " << notification_id << llendl;
 			item->die();
 		}
 		reshapeWindow();
 	}
 }
 
-void LLIMWellWindow::removeObjectRow(const LLUUID& object_id)
+void LLIMWellWindow::removeObjectRow(const LLUUID& notification_id)
 {
-	if (mMessageList->removeItemByValue(object_id))
+	if (mMessageList->removeItemByValue(notification_id))
 	{
 		handleItemRemoved(IT_INSTANT_MESSAGE);
 	}
 	else
 	{
-		llwarns << "Unable to remove Object Row from the list, objectID: " << object_id << llendl;
+		llwarns << "Unable to remove Object Row from the list, notificationID: " << notification_id << llendl;
 	}
 
 	reshapeWindow();
@@ -967,8 +900,7 @@ void LLIMWellWindow::closeAllImpl()
 		ObjectRowPanel* obj_panel = dynamic_cast <ObjectRowPanel*> (panel);
 		if (obj_panel)
 		{
-			LLScriptFloaterManager::instance()
-				.removeNotificationByObjectId(*iter);
+			LLScriptFloaterManager::instance().onRemoveNotification(*iter);
 		}
 	}
 }
diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h
index 0c81d1f369bcee27e16ff028cb93b7229819824c..3790aa3ea9d8f978e262680c31dde63e55a8efea 100644
--- a/indra/newview/llsyswellwindow.h
+++ b/indra/newview/llsyswellwindow.h
@@ -188,8 +188,8 @@ class LLIMWellWindow : public LLSysWellWindow, LLIMSessionObserver, LLInitClass<
 	/*virtual*/ void sessionRemoved(const LLUUID& session_id);
 	/*virtual*/ void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id);
 
-	void addObjectRow(const LLUUID& object_id, bool new_message = false);
-	void removeObjectRow(const LLUUID& object_id);
+	void addObjectRow(const LLUUID& notification_id, bool new_message = false);
+	void removeObjectRow(const LLUUID& notification_id);
 
 	void addIMRow(const LLUUID& session_id);
 	bool hasIMRow(const LLUUID& session_id);
@@ -201,7 +201,7 @@ class LLIMWellWindow : public LLSysWellWindow, LLIMSessionObserver, LLInitClass<
 
 private:
 	LLChiclet * findIMChiclet(const LLUUID& sessionId);
-	LLChiclet* findObjectChiclet(const LLUUID& object_id);
+	LLChiclet* findObjectChiclet(const LLUUID& notification_id);
 
 	void addIMRow(const LLUUID& sessionId, S32 chicletCounter, const std::string& name, const LLUUID& otherParticipantId);
 	void delIMRow(const LLUUID& sessionId);
@@ -235,17 +235,8 @@ class LLIMWellWindow : public LLSysWellWindow, LLIMSessionObserver, LLInitClass<
 
 	class ObjectRowPanel: public LLPanel
 	{
-		typedef enum e_object_type
-		{
-			OBJ_UNKNOWN,
-
-			OBJ_SCRIPT,
-			OBJ_GIVE_INVENTORY,
-			OBJ_LOAD_URL
-		}EObjectType;
-
 	public:
-		ObjectRowPanel(const LLUUID& object_id, bool new_message = false);
+		ObjectRowPanel(const LLUUID& notification_id, bool new_message = false);
 		virtual ~ObjectRowPanel();
 		/*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
 		/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
@@ -254,12 +245,8 @@ class LLIMWellWindow : public LLSysWellWindow, LLIMSessionObserver, LLInitClass<
 
 	private:
 		void onClosePanel();
-		static EObjectType getObjectType(const LLNotificationPtr& notification);
-		void initChiclet(const LLUUID& object_id, bool new_message = false);
-		std::string getObjectName(const LLUUID& object_id);
+		void initChiclet(const LLUUID& notification_id, bool new_message = false);
 
-		typedef std::map<std::string, EObjectType> object_type_map;
-		static object_type_map initObjectTypeMap();
 	public:
 		LLIMChiclet* mChiclet;
 	private:
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index a7f26f1df15b4f56cdb6bce292a63f4da5212a72..91c303c79e7c308cb884209b09d942a66e93e1c8 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -51,7 +51,8 @@
 // cache/textures/[0-F]/UUID.texture
 //  Actual texture body files
 
-const S32 TEXTURE_CACHE_ENTRY_SIZE = 1024;
+//note: there is no good to define 1024 for TEXTURE_CACHE_ENTRY_SIZE while FIRST_PACKET_SIZE is 600 on sim side.
+const S32 TEXTURE_CACHE_ENTRY_SIZE = FIRST_PACKET_SIZE;//1024;
 const F32 TEXTURE_CACHE_PURGE_AMOUNT = .20f; // % amount to reduce the cache by when it exceeds its limit
 const F32 TEXTURE_CACHE_LRU_SIZE = .10f; // % amount for LRU list (low overhead to regenerate)
 
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 404b79bfaf9193400e2cce312abf4bf81b08c251..4a6113078530f4e850f4b2e4ed8522a4b316aa3d 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -73,13 +73,11 @@ class LLTextureFetchWorker : public LLWorkerClass
 		}
 		virtual void completed(bool success)
 		{
-			mFetcher->lockQueue();
 			LLTextureFetchWorker* worker = mFetcher->getWorker(mID);
 			if (worker)
 			{
  				worker->callbackCacheRead(success, mFormattedImage, mImageSize, mImageLocal);
 			}
-			mFetcher->unlockQueue();
 		}
 	private:
 		LLTextureFetch* mFetcher;
@@ -95,13 +93,11 @@ class LLTextureFetchWorker : public LLWorkerClass
 		}
 		virtual void completed(bool success)
 		{
-			mFetcher->lockQueue();
 			LLTextureFetchWorker* worker = mFetcher->getWorker(mID);
 			if (worker)
 			{
 				worker->callbackCacheWrite(success);
 			}
-			mFetcher->unlockQueue();
 		}
 	private:
 		LLTextureFetch* mFetcher;
@@ -117,13 +113,11 @@ class LLTextureFetchWorker : public LLWorkerClass
 		}
 		virtual void completed(bool success, LLImageRaw* raw, LLImageRaw* aux)
 		{
-			mFetcher->lockQueue();
 			LLTextureFetchWorker* worker = mFetcher->getWorker(mID);
 			if (worker)
 			{
  				worker->callbackDecoded(success, raw, aux);
 			}
-			mFetcher->unlockQueue();
 		}
 	private:
 		LLTextureFetch* mFetcher;
@@ -166,6 +160,8 @@ class LLTextureFetchWorker : public LLWorkerClass
 	
 	void setGetStatus(U32 status, const std::string& reason)
 	{
+		LLMutexLock lock(&mWorkMutex);
+
 		mGetStatus = status;
 		mGetReason = reason;
 	}
@@ -307,7 +303,6 @@ class HTTPGetResponder : public LLCurl::Responder
 		}
 
 		lldebugs << "HTTP COMPLETE: " << mID << llendl;
-		mFetcher->lockQueue();
 		LLTextureFetchWorker* worker = mFetcher->getWorker(mID);
 		if (worker)
 		{
@@ -339,7 +334,6 @@ class HTTPGetResponder : public LLCurl::Responder
 			mFetcher->removeFromHTTPQueue(mID);
  			llwarns << "Worker not found: " << mID << llendl;
 		}
-		mFetcher->unlockQueue();
 	}
 	
 private:
@@ -494,8 +488,9 @@ void LLTextureFetchWorker::setupPacketData()
 
 U32 LLTextureFetchWorker::calcWorkPriority()
 {
-// 	llassert_always(mImagePriority >= 0 && mImagePriority <= LLViewerTexture::maxDecodePriority());
-	static F32 PRIORITY_SCALE = (F32)LLWorkerThread::PRIORITY_LOWBITS / LLViewerFetchedTexture::maxDecodePriority();
+ 	//llassert_always(mImagePriority >= 0 && mImagePriority <= LLViewerFetchedTexture::maxDecodePriority());
+	static const F32 PRIORITY_SCALE = (F32)LLWorkerThread::PRIORITY_LOWBITS / LLViewerFetchedTexture::maxDecodePriority();
+
 	mWorkPriority = (U32)(mImagePriority * PRIORITY_SCALE);
 	return mWorkPriority;
 }
@@ -1440,12 +1435,9 @@ bool LLTextureFetch::createRequest(const std::string& url, const LLUUID& id, con
 		return false;
 	}
 	
-	LLTextureFetchWorker* worker = NULL;
-	LLMutexLock lock(&mQueueMutex);
-	map_t::iterator iter = mRequestMap.find(id);
-	if (iter != mRequestMap.end())
+	LLTextureFetchWorker* worker = getWorker(id) ;
+	if (worker)
 	{
-		worker = iter->second;
 		if (worker->mHost != host)
 		{
 			llwarns << "LLTextureFetch::createRequest " << id << " called with multiple hosts: "
@@ -1494,41 +1486,48 @@ bool LLTextureFetch::createRequest(const std::string& url, const LLUUID& id, con
 			return false; // need to wait for previous aborted request to complete
 		}
 		worker->lockWorkMutex();
+		worker->mActiveCount++;
+		worker->mNeedsAux = needs_aux;
 		worker->setImagePriority(priority);
 		worker->setDesiredDiscard(desired_discard, desired_size);
-		worker->unlockWorkMutex();
 		if (!worker->haveWork())
 		{
 			worker->mState = LLTextureFetchWorker::INIT;
+			worker->unlockWorkMutex();
+
 			worker->addWork(0, LLWorkerThread::PRIORITY_HIGH | worker->mWorkPriority);
 		}
+		else
+		{
+			worker->unlockWorkMutex();
+		}
 	}
 	else
 	{
 		worker = new LLTextureFetchWorker(this, url, id, host, priority, desired_discard, desired_size);
+		lockQueue() ;
 		mRequestMap[id] = worker;
-	}
+		unlockQueue() ;
+
+		worker->lockWorkMutex();
 	worker->mActiveCount++;
 	worker->mNeedsAux = needs_aux;
+		worker->unlockWorkMutex();
+	}
+	
 // 	llinfos << "REQUESTED: " << id << " Discard: " << desired_discard << llendl;
 	return true;
 }
 
-void LLTextureFetch::deleteRequest(const LLUUID& id, bool cancel)
-{
-	LLMutexLock lock(&mQueueMutex);
-	LLTextureFetchWorker* worker = getWorker(id);
-	if (worker)
-	{		
-		removeRequest(worker, cancel);
-	}
-}
-
 // protected
 void LLTextureFetch::addToNetworkQueue(LLTextureFetchWorker* worker)
 {
+	lockQueue() ;
+	bool in_request_map = (mRequestMap.find(worker->mID) != mRequestMap.end()) ;
+	unlockQueue() ;
+
 	LLMutexLock lock(&mNetworkQueueMutex);
-	if (mRequestMap.find(worker->mID) != mRequestMap.end())
+	if (in_request_map)
 	{
 		// only add to the queue if in the request map
 		// i.e. a delete has not been requested
@@ -1564,10 +1563,34 @@ void LLTextureFetch::removeFromHTTPQueue(const LLUUID& id)
 	mHTTPTextureQueue.erase(id);
 }
 
-// call lockQueue() first!
+void LLTextureFetch::deleteRequest(const LLUUID& id, bool cancel)
+{
+	lockQueue() ;
+	LLTextureFetchWorker* worker = getWorkerAfterLock(id);
+	if (worker)
+	{		
+		size_t erased_1 = mRequestMap.erase(worker->mID);
+		unlockQueue() ;
+
+		llassert_always(erased_1 > 0) ;
+
+		removeFromNetworkQueue(worker, cancel);
+		llassert_always(!(worker->getFlags(LLWorkerClass::WCF_DELETE_REQUESTED))) ;
+
+		worker->scheduleDelete();	
+	}
+	else
+	{
+		unlockQueue() ;
+	}
+}
+
 void LLTextureFetch::removeRequest(LLTextureFetchWorker* worker, bool cancel)
 {
+	lockQueue() ;
 	size_t erased_1 = mRequestMap.erase(worker->mID);
+	unlockQueue() ;
+
 	llassert_always(erased_1 > 0) ;
 	removeFromNetworkQueue(worker, cancel);
 	llassert_always(!(worker->getFlags(LLWorkerClass::WCF_DELETE_REQUESTED))) ;
@@ -1575,8 +1598,26 @@ void LLTextureFetch::removeRequest(LLTextureFetchWorker* worker, bool cancel)
 	worker->scheduleDelete();	
 }
 
+S32 LLTextureFetch::getNumRequests() 
+{ 
+	lockQueue() ;
+	S32 size = (S32)mRequestMap.size(); 
+	unlockQueue() ;
+
+	return size ;
+}
+
+S32 LLTextureFetch::getNumHTTPRequests() 
+{ 
+	mNetworkQueueMutex.lock() ;
+	S32 size = (S32)mHTTPTextureQueue.size(); 
+	mNetworkQueueMutex.unlock() ;
+
+	return size ;
+}
+
 // call lockQueue() first!
-LLTextureFetchWorker* LLTextureFetch::getWorker(const LLUUID& id)
+LLTextureFetchWorker* LLTextureFetch::getWorkerAfterLock(const LLUUID& id)
 {
 	LLTextureFetchWorker* res = NULL;
 	map_t::iterator iter = mRequestMap.find(id);
@@ -1587,12 +1628,18 @@ LLTextureFetchWorker* LLTextureFetch::getWorker(const LLUUID& id)
 	return res;
 }
 
+LLTextureFetchWorker* LLTextureFetch::getWorker(const LLUUID& id)
+{
+	LLMutexLock lock(&mQueueMutex) ;
+
+	return getWorkerAfterLock(id) ;
+}
+
 
 bool LLTextureFetch::getRequestFinished(const LLUUID& id, S32& discard_level,
 										LLPointer<LLImageRaw>& raw, LLPointer<LLImageRaw>& aux)
 {
 	bool res = false;
-	LLMutexLock lock(&mQueueMutex);
 	LLTextureFetchWorker* worker = getWorker(id);
 	if (worker)
 	{
@@ -1644,7 +1691,6 @@ bool LLTextureFetch::getRequestFinished(const LLUUID& id, S32& discard_level,
 bool LLTextureFetch::updateRequestPriority(const LLUUID& id, F32 priority)
 {
 	bool res = false;
-	LLMutexLock lock(&mQueueMutex);
 	LLTextureFetchWorker* worker = getWorker(id);
 	if (worker)
 	{
@@ -1760,8 +1806,6 @@ void LLTextureFetch::sendRequestListToSimulators()
 	}
 	timer.reset();
 	
-	LLMutexLock lock(&mQueueMutex);
-
 	// Send requests
 	typedef std::set<LLTextureFetchWorker*,LLTextureFetchWorker::Compare> request_list_t;
 	typedef std::map< LLHost, request_list_t > work_request_map_t;
@@ -1970,7 +2014,6 @@ bool LLTextureFetchWorker::insertPacket(S32 index, U8* data, S32 size)
 bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8 codec, U16 packets, U32 totalbytes,
 										U16 data_size, U8* data)
 {
-	LLMutexLock lock(&mQueueMutex);
 	LLTextureFetchWorker* worker = getWorker(id);
 	bool res = true;
 
@@ -2003,7 +2046,9 @@ bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8
 	if (!res)
 	{
 		++mBadPacketCount;
+		mNetworkQueueMutex.lock() ;
 		mCancelQueue[host].insert(id);
+		mNetworkQueueMutex.unlock() ;
 		return false;
 	}
 
@@ -2024,7 +2069,6 @@ bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8
 
 bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U16 packet_num, U16 data_size, U8* data)
 {
-	LLMutexLock lock(&mQueueMutex);
 	LLTextureFetchWorker* worker = getWorker(id);
 	bool res = true;
 
@@ -2048,7 +2092,9 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1
 	if (!res)
 	{
 		++mBadPacketCount;
+		mNetworkQueueMutex.lock() ;
 		mCancelQueue[host].insert(id);
+		mNetworkQueueMutex.unlock() ;
 		return false;
 	}
 
@@ -2088,7 +2134,6 @@ BOOL LLTextureFetch::isFromLocalCache(const LLUUID& id)
 {
 	BOOL from_cache = FALSE ;
 
-	LLMutexLock lock(&mQueueMutex);
 	LLTextureFetchWorker* worker = getWorker(id);
 	if (worker)
 	{
@@ -2110,7 +2155,6 @@ S32 LLTextureFetch::getFetchState(const LLUUID& id, F32& data_progress_p, F32& r
 	F32 request_dtime = 999999.f;
 	U32 fetch_priority = 0;
 	
-	LLMutexLock lock(&mQueueMutex);
 	LLTextureFetchWorker* worker = getWorker(id);
 	if (worker && worker->haveWork())
 	{
diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h
index 373e38a83cbd399326d7ccf881d6dcba06f33b8d..5213c4f4883d1d5d4df1bc14394ef5962d51ee05 100644
--- a/indra/newview/lltexturefetch.h
+++ b/indra/newview/lltexturefetch.h
@@ -77,13 +77,14 @@ class LLTextureFetch : public LLWorkerThread
 	S32 getFetchState(const LLUUID& id, F32& decode_progress_p, F32& requested_priority_p,
 					  U32& fetch_priority_p, F32& fetch_dtime_p, F32& request_dtime_p);
 	void dump();
-	S32 getNumRequests() { return mRequestMap.size(); }
-	S32 getNumHTTPRequests() { return mHTTPTextureQueue.size(); }
+	S32 getNumRequests() ;
+	S32 getNumHTTPRequests() ;
 	
 	// Public for access by callbacks
 	void lockQueue() { mQueueMutex.lock(); }
 	void unlockQueue() { mQueueMutex.unlock(); }
 	LLTextureFetchWorker* getWorker(const LLUUID& id);
+	LLTextureFetchWorker* getWorkerAfterLock(const LLUUID& id);
 
 	LLTextureInfo* getTextureInfo() { return &mTextureInfo; }
 	
@@ -92,7 +93,7 @@ class LLTextureFetch : public LLWorkerThread
 	void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel);
 	void addToHTTPQueue(const LLUUID& id);
 	void removeFromHTTPQueue(const LLUUID& id);
-	S32 getHTTPQueueSize() { return (S32)mHTTPTextureQueue.size(); }
+	S32 getHTTPQueueSize() { return getNumHTTPRequests(); }
 	void removeRequest(LLTextureFetchWorker* worker, bool cancel);
 	// Called from worker thread (during doWork)
 	void processCurlRequests();	
@@ -111,8 +112,8 @@ class LLTextureFetch : public LLWorkerThread
 	S32 mBadPacketCount;
 	
 private:
-	LLMutex mQueueMutex;
-	LLMutex mNetworkQueueMutex;
+	LLMutex mQueueMutex;        //to protect mRequestMap only
+	LLMutex mNetworkQueueMutex; //to protect mNetworkQueue, mHTTPTextureQueue and mCancelQueue.
 
 	LLTextureCache* mTextureCache;
 	LLImageDecodeThread* mImageDecodeThread;
diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp
index 7ae2404203695f276f427297e7f0b2e181c0069d..cb43beb81981829aba510d0c64f3bd9bda93da39 100644
--- a/indra/newview/lltoastimpanel.cpp
+++ b/indra/newview/lltoastimpanel.cpp
@@ -141,32 +141,6 @@ BOOL LLToastIMPanel::handleToolTip(S32 x, S32 y, MASK mask)
 	return LLToastPanel::handleToolTip(x, y, mask);
 }
 
-void LLToastIMPanel::showInspector()
-{
-	LLIMModel::LLIMSession* im_session = LLIMModel::getInstance()->findIMSession(mSessionID);
-	if(!im_session)
-	{
-		llwarns << "Invalid IM session" << llendl;
-		return;
-	}
-
-	switch(im_session->mSessionType)
-	{
-	case LLIMModel::LLIMSession::P2P_SESSION:
-		LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarID));
-		break;
-	case LLIMModel::LLIMSession::GROUP_SESSION:
-		LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", mSessionID));
-		break;
-	case LLIMModel::LLIMSession::ADHOC_SESSION:
-		LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", im_session->mOtherParticipantID));
-		break;
-	default:
-		llwarns << "Unknown IM session type" << llendl;
-		break;
-	}
-}
-
 void LLToastIMPanel::spawnNameToolTip()
 {
 	// Spawn at right side of the name textbox.
@@ -176,7 +150,7 @@ void LLToastIMPanel::spawnNameToolTip()
 
 	LLToolTip::Params params;
 	params.background_visible(false);
-	params.click_callback(boost::bind(&LLToastIMPanel::showInspector, this));
+	params.click_callback(boost::bind(&LLFloaterReg::showInstance, "inspect_avatar", LLSD().with("avatar_id", mAvatarID), FALSE));
 	params.delay_time(0.0f);		// spawn instantly on hover
 	params.image(LLUI::getUIImage("Info_Small"));
 	params.message("");
@@ -201,7 +175,7 @@ void LLToastIMPanel::spawnGroupIconToolTip()
 
 	LLInspector::Params params;
 	params.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>());
-	params.click_callback(boost::bind(&LLToastIMPanel::showInspector, this));
+	params.click_callback(boost::bind(&LLFloaterReg::showInstance, "inspect_group", LLSD().with("group_id", mSessionID), FALSE));
 	params.delay_time(0.100f);
 	params.image(LLUI::getUIImage("Info_Small"));
 	params.message(g_data.mName);
@@ -214,16 +188,15 @@ void LLToastIMPanel::spawnGroupIconToolTip()
 
 void LLToastIMPanel::initIcon()
 {
-	LLIconCtrl* sys_msg_icon = getChild<LLIconCtrl>("sys_msg_icon");
-
 	mAvatarIcon->setVisible(FALSE);
 	mGroupIcon->setVisible(FALSE);
-	sys_msg_icon->setVisible(FALSE);
 	mAdhocIcon->setVisible(FALSE);
 
 	if(mAvatarName->getValue().asString() == SYSTEM_FROM)
 	{
-		sys_msg_icon->setVisible(TRUE);
+		// "sys_msg_icon" was disabled by Erica in the changeset: 5109 (85181bc92cbe)
+		// and "dummy widget" warnings appeared in log.
+		// It does not make sense to have such image with empty name. Removed for EXT-5057.
 	}
 	else
 	{
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index fa1c99ece7528995dfaa9ebbbce80219c0c47504..4a61bed475bc4a865fc2df567c4af29443e7c870 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -859,10 +859,10 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
 			std::string full_name;
 			if (!gCacheName->getFullName(hover_object->getID(), full_name))
 			{
-				LLNameValue* firstname = hover_object->getNVPair("FirstName");
-				LLNameValue* lastname =  hover_object->getNVPair("LastName");
-				if (firstname && lastname)
-				{
+			LLNameValue* firstname = hover_object->getNVPair("FirstName");
+			LLNameValue* lastname =  hover_object->getNVPair("LastName");
+			if (firstname && lastname)
+			{
 					full_name = LLCacheName::buildFullName(
 						firstname->getString(), lastname->getString());
 				}
@@ -880,7 +880,7 @@ BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string l
 			{
 				final_name = full_name;
 			}
-
+			
 			// *HACK: We may select this object, so pretend it was clicked
 			mPick = mHoverPick;
 			LLInspector::Params p;
@@ -1500,6 +1500,12 @@ BOOL LLToolPie::pickRightMouseDownCallback()
 			while( object && object->isAttachment())
 			{
 				object = (LLViewerObject*)object->getParent();
+				llassert(object);
+			}
+
+			if (!object)
+			{
+				return TRUE; // unexpected, but escape
 			}
 
 			// Object is an avatar, so check for mute by id.
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 9ced0194a27da99713e599c5169f6842ef6b94a7..0e133f8729f039d93fa72dcb3cbd092b3e085a5a 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -57,6 +57,7 @@
 #include "llkeyboard.h"
 #include "llmutelist.h"
 //#include "llfirstuse.h"
+#include "llwindow.h"
 
 #include <boost/bind.hpp>	// for SkinFolder listener
 #include <boost/signals2.hpp>
@@ -712,7 +713,6 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
 	std::vector<LLViewerMediaImpl*> proximity_order;
 	
 	bool inworld_media_enabled = gSavedSettings.getBOOL("AudioStreamingMedia");
-	bool needs_first_run = LLViewerMedia::needsMediaFirstRun();
 	U32 max_instances = gSavedSettings.getU32("PluginInstancesTotal");
 	U32 max_normal = gSavedSettings.getU32("PluginInstancesNormal");
 	U32 max_low = gSavedSettings.getU32("PluginInstancesLow");
@@ -838,12 +838,6 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
 			if(!pimpl->getUsedInUI())
 			{
 				new_priority = LLPluginClassMedia::PRIORITY_UNLOADED;
-				if(needs_first_run)
-				{
-					// Don't do this more than once in this loop.
-					needs_first_run = false;
-					LLViewerMedia::displayMediaFirstRun();
-				}
 			}
 		}
 		
@@ -913,59 +907,6 @@ void LLViewerMedia::cleanupClass()
 	gIdleCallbacks.deleteFunction(LLViewerMedia::updateMedia, NULL);
 }
 
-
-//////////////////////////////////////////////////////////////////////////////////////////
-// static
-bool LLViewerMedia::needsMediaFirstRun()
-{
-	return gWarningSettings.getBOOL("FirstStreamingMedia");
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////
-// static
-void LLViewerMedia::displayMediaFirstRun()
-{
-	gWarningSettings.setBOOL("FirstStreamingMedia", FALSE);
-
-	LLNotificationsUtil::add("ParcelCanPlayMedia", LLSD(), LLSD(),
-		boost::bind(firstRunCallback, _1, _2));
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////
-// static
-bool LLViewerMedia::firstRunCallback(const LLSD& notification, const LLSD& response)
-{
-	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-	if (option == 0)
-	{
-		// user has elected to automatically play media.
-		gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, TRUE);
-		gSavedSettings.setBOOL("AudioStreamingMusic", TRUE);
-		gSavedSettings.setBOOL("AudioStreamingMedia", TRUE);
-
-		LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
-				
-		if (parcel)
-		{
-			// play media right now, if available
-			LLViewerParcelMedia::play(parcel);
-		
-			// play music right now, if available
-			std::string music_url = parcel->getMusicURL();
-			if (gAudiop && !music_url.empty())
-				gAudiop->startInternetStream(music_url);
-		}
-	}
-	else
-	{
-		gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, FALSE);
-		gSavedSettings.setBOOL("AudioStreamingMedia", FALSE);
-		gSavedSettings.setBOOL("AudioStreamingMusic", FALSE);
-	}
-	return false;
-}
-
-
 //////////////////////////////////////////////////////////////////////////////////////////
 // LLViewerMediaImpl
 //////////////////////////////////////////////////////////////////////////////////////////
@@ -1839,9 +1780,12 @@ bool LLViewerMediaImpl::handleKeyHere(KEY key, MASK mask)
 		
 		if(!result)
 		{
-			result = mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_DOWN ,key, mask);
+			
+			LLSD native_key_data = gViewerWindow->getWindow()->getNativeKeyData();
+			
+			result = mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_DOWN ,key, mask, native_key_data);
 			// Since the viewer internal event dispatching doesn't give us key-up events, simulate one here.
-			(void)mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_UP ,key, mask);
+			(void)mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_UP ,key, mask, native_key_data);
 		}
 	}
 	
@@ -1859,7 +1803,9 @@ bool LLViewerMediaImpl::handleUnicodeCharHere(llwchar uni_char)
 		if (uni_char >= 32 // discard 'control' characters
 			&& uni_char != 127) // SDL thinks this is 'delete' - yuck.
 		{
-			mMediaSource->textInput(wstring_to_utf8str(LLWString(1, uni_char)), gKeyboard->currentMask(FALSE));
+			LLSD native_key_data = gViewerWindow->getWindow()->getNativeKeyData();
+			
+			mMediaSource->textInput(wstring_to_utf8str(LLWString(1, uni_char)), gKeyboard->currentMask(FALSE), native_key_data);
 		}
 	}
 	
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index ff18ed605a2063bc2cf3e8ec683dee7a64b88a62..daad70f14f347d7e7686a93f353c19a4d0a32893 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -117,11 +117,6 @@ class LLViewerMedia
 		// This is the comparitor used to sort the list.
 		static bool priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2);
 		
-		// For displaying the media first-run dialog.
-		static bool needsMediaFirstRun();
-		static void displayMediaFirstRun();
-		static bool firstRunCallback(const LLSD& notification, const LLSD& response);
-
 };
 
 // Implementation functions not exported into header file
diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp
index a0ac9c209175a636e87b84e834de24358bd61e1d..f508a3462ab2b2701bb517946faf53ab770e48b1 100644
--- a/indra/newview/llviewermediafocus.cpp
+++ b/indra/newview/llviewermediafocus.cpp
@@ -157,7 +157,6 @@ void LLViewerMediaFocus::setFocusFace(LLPointer<LLViewerObject> objectp, S32 fac
 			mFocusedObjectFace = 0;
 		}
 	}
-	
 }
 
 void LLViewerMediaFocus::clearFocus()
@@ -198,7 +197,7 @@ bool LLViewerMediaFocus::getFocus()
 }
 
 // This function selects an ideal viewing distance based on the focused object, pick normal, and padding value
-void LLViewerMediaFocus::setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor)
+void LLViewerMediaFocus::setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor, bool zoom_in_only)
 {
 	if (object)
 	{
@@ -269,7 +268,16 @@ void LLViewerMediaFocus::setCameraZoom(LLViewerObject* object, LLVector3 normal,
             camera_pos += 0.01 * len * delta;
         }
 
+		// If we are not allowing zooming out and the old camera position is closer to 
+		// the center then the new intended camera position, don't move camera and return
+		if (zoom_in_only &&
+		    (dist_vec_squared(gAgent.getCameraPositionGlobal(), target_pos) < dist_vec_squared(camera_pos, target_pos)))
+		{
+			return;
+		}
+
 		gAgent.setCameraPosAndFocusGlobal(camera_pos, target_pos, object->getID() );
+
 	}
 	else
 	{
diff --git a/indra/newview/llviewermediafocus.h b/indra/newview/llviewermediafocus.h
index 89ee0ae283176a110d97b3b47bee4c773e821d81..002044ea2e354237cdece69584b7674c7ec17ae2 100644
--- a/indra/newview/llviewermediafocus.h
+++ b/indra/newview/llviewermediafocus.h
@@ -66,7 +66,7 @@ class LLViewerMediaFocus :
 
 	void update();
 	
-	static void setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor);
+	static void setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor, bool zoom_in_only = false);
 	static F32 getBBoxAspectRatio(const LLBBox& bbox, const LLVector3& normal, F32* height, F32* width, F32* depth);
 
 	bool isFocusedOnFace(LLPointer<LLViewerObject> objectp, S32 face);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 6f6932367f1d6486373de5e52bcc09a2320586ef..7fc7f2101a679fd2dfc4db12f58988986cdd84b6 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -603,6 +603,10 @@ class LLAdvancedToggleHUDInfo : public view_listener_t
 		{
 			gDisplayFOV = !(gDisplayFOV);
 		}
+		else if ("badge" == info_type)
+		{
+			gDisplayBadge = !(gDisplayBadge);
+		}
 		return true;
 	}
 };
@@ -625,6 +629,10 @@ class LLAdvancedCheckHUDInfo : public view_listener_t
 		{
 			new_value = gDisplayFOV;
 		}
+		else if ("badge" == info_type)
+		{
+			new_value = gDisplayBadge;
+		}
 		return new_value;
 	}
 };
@@ -5267,7 +5275,7 @@ class LLWorldCreateLandmark : public view_listener_t
 
 void handle_look_at_selection(const LLSD& param)
 {
-	const F32 PADDING_FACTOR = 2.f;
+	const F32 PADDING_FACTOR = 1.75f;
 	BOOL zoom = (param.asString() == "zoom");
 	if (!LLSelectMgr::getInstance()->getSelection()->isEmpty())
 	{
@@ -5287,9 +5295,14 @@ void handle_look_at_selection(const LLSD& param)
 		}
 		if (zoom)
 		{
+			// Make sure we are not increasing the distance between the camera and object
+			LLVector3d orig_distance = gAgent.getCameraPositionGlobal() - LLSelectMgr::getInstance()->getSelectionCenterGlobal();
+			distance = llmin(distance, (F32) orig_distance.length());
+				
 			gAgent.setCameraPosAndFocusGlobal(LLSelectMgr::getInstance()->getSelectionCenterGlobal() + LLVector3d(obj_to_cam * distance), 
 											LLSelectMgr::getInstance()->getSelectionCenterGlobal(), 
 											object_id );
+			
 		}
 		else
 		{
@@ -5529,50 +5542,55 @@ void handle_buy_currency()
 	LLFloaterBuyCurrency::buyCurrency();
 }
 
-
-
-class LLFloaterVisible : public view_listener_t
+class LLShowHelp : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
 	{
-		std::string floater_name = userdata.asString();
-		bool new_value = false;
-		{
-			new_value = LLFloaterReg::instanceVisible(floater_name);
-		}
-		return new_value;
+		std::string help_topic = userdata.asString();
+		LLViewerHelp* vhelp = LLViewerHelp::getInstance();
+		vhelp->showTopic(help_topic);
+		return true;
 	}
 };
 
-class LLShowHelp : public view_listener_t
+class LLShowSidetrayPanel : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
 	{
-		std::string help_topic = userdata.asString();
-		LLViewerHelp* vhelp = LLViewerHelp::getInstance();
-		vhelp->showTopic(help_topic);
+		std::string panel_name = userdata.asString();
+		// Toggle the panel
+		if (!LLSideTray::getInstance()->isPanelActive(panel_name))
+		{
+			// LLFloaterInventory::showAgentInventory();
+			LLSideTray::getInstance()->showPanel(panel_name, LLSD());
+		}
+		else
+		{
+			LLSideTray::getInstance()->collapseSideBar();
+		}
 		return true;
 	}
 };
 
-class LLShowSidetrayPanel : public view_listener_t
+class LLSidetrayPanelVisible : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
 	{
 		std::string panel_name = userdata.asString();
-		// Open up either the sidepanel or new floater.
+		// Toggle the panel
 		if (LLSideTray::getInstance()->isPanelActive(panel_name))
 		{
-			LLFloaterInventory::showAgentInventory();
+			return true;
 		}
 		else
 		{
-			LLSideTray::getInstance()->showPanel(panel_name, LLSD());
+			return false;
 		}
-		return true;
+		
 	}
 };
 
+
 bool callback_show_url(const LLSD& notification, const LLSD& response)
 {
 	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
@@ -7122,25 +7140,7 @@ void handle_buy_currency_test(void*)
 	LLStringUtil::format_map_t replace;
 	replace["[AGENT_ID]"] = gAgent.getID().asString();
 	replace["[SESSION_ID]"] = gAgent.getSecureSessionID().asString();
-
-	// *TODO: Replace with call to LLUI::getLanguage() after windows-setup
-	// branch merges in. JC
-	std::string language = "en";
-	language = gSavedSettings.getString("Language");
-	if (language.empty() || language == "default")
-	{
-		language = gSavedSettings.getString("InstallLanguage");
-	}
-	if (language.empty() || language == "default")
-	{
-		language = gSavedSettings.getString("SystemLanguage");
-	}
-	if (language.empty() || language == "default")
-	{
-		language = "en";
-	}
-
-	replace["[LANGUAGE]"] = language;
+	replace["[LANGUAGE]"] = LLUI::getLanguage();
 	LLStringUtil::format(url, replace);
 
 	llinfos << "buy currency url " << url << llendl;
@@ -7972,8 +7972,8 @@ void initialize_menus()
 	enable.add("EnableEdit", boost::bind(&enable_object_edit));
 	enable.add("VisibleBuild", boost::bind(&enable_object_build));
 
-	view_listener_t::addMenu(new LLFloaterVisible(), "FloaterVisible");
 	view_listener_t::addMenu(new LLShowSidetrayPanel(), "ShowSidetrayPanel");
+	view_listener_t::addMenu(new LLSidetrayPanelVisible(), "SidetrayPanelVisible");
 	view_listener_t::addMenu(new LLSomethingSelected(), "SomethingSelected");
 	view_listener_t::addMenu(new LLSomethingSelectedNoHUD(), "SomethingSelectedNoHUD");
 	view_listener_t::addMenu(new LLEditableSelected(), "EditableSelected");
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index 6bad8843fd86c92382b2ca7d80b954878a9eecc5..84b270f8cc7a8b24ff2875b458eaf71159566dfd 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -796,84 +796,88 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt
 	//LLAssetType::EType pref_loc = data->mPreferredLocation;
 	BOOL is_balance_sufficient = TRUE;
 
-	if(result >= 0)
+	if(data)
 	{
-		LLFolderType::EType dest_loc = (data->mPreferredLocation == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(data->mAssetInfo.mType) : data->mPreferredLocation;
-
-		if (LLAssetType::AT_SOUND == data->mAssetInfo.mType ||
-			LLAssetType::AT_TEXTURE == data->mAssetInfo.mType ||
-			LLAssetType::AT_ANIMATION == data->mAssetInfo.mType)
+		if (result >= 0)
 		{
-			// Charge the user for the upload.
-			LLViewerRegion* region = gAgent.getRegion();
-
-			if(!(can_afford_transaction(expected_upload_cost)))
-			{
-				LLFloaterBuyCurrency::buyCurrency(
-					llformat(LLTrans::getString("UploadingCosts").c_str(),
-							 data->mAssetInfo.getName().c_str()),
-					         expected_upload_cost);
-				is_balance_sufficient = FALSE;
-			}
-			else if(region)
+			LLFolderType::EType dest_loc = (data->mPreferredLocation == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(data->mAssetInfo.mType) : data->mPreferredLocation;
+			
+			if (LLAssetType::AT_SOUND == data->mAssetInfo.mType ||
+			    LLAssetType::AT_TEXTURE == data->mAssetInfo.mType ||
+			    LLAssetType::AT_ANIMATION == data->mAssetInfo.mType)
 			{
-				// Charge user for upload
-				gStatusBar->debitBalance(expected_upload_cost);
+				// Charge the user for the upload.
+				LLViewerRegion* region = gAgent.getRegion();
 				
-				LLMessageSystem* msg = gMessageSystem;
-				msg->newMessageFast(_PREHASH_MoneyTransferRequest);
-				msg->nextBlockFast(_PREHASH_AgentData);
-				msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
-				msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
-				msg->nextBlockFast(_PREHASH_MoneyData);
-				msg->addUUIDFast(_PREHASH_SourceID, gAgent.getID());
-				msg->addUUIDFast(_PREHASH_DestID, LLUUID::null);
-				msg->addU8("Flags", 0);
-				// we tell the sim how much we were expecting to pay so it
-				// can respond to any discrepancy
-				msg->addS32Fast(_PREHASH_Amount, expected_upload_cost);
-				msg->addU8Fast(_PREHASH_AggregatePermNextOwner, (U8)LLAggregatePermissions::AP_EMPTY);
-				msg->addU8Fast(_PREHASH_AggregatePermInventory, (U8)LLAggregatePermissions::AP_EMPTY);
-				msg->addS32Fast(_PREHASH_TransactionType, TRANS_UPLOAD_CHARGE);
-				msg->addStringFast(_PREHASH_Description, NULL);
-				msg->sendReliable(region->getHost());
+				if(!(can_afford_transaction(expected_upload_cost)))
+				{
+					LLFloaterBuyCurrency::buyCurrency(
+									  llformat(LLTrans::getString("UploadingCosts").c_str(),
+										   data->mAssetInfo.getName().c_str()),
+									  expected_upload_cost);
+					is_balance_sufficient = FALSE;
+				}
+				else if(region)
+				{
+					// Charge user for upload
+					gStatusBar->debitBalance(expected_upload_cost);
+					
+					LLMessageSystem* msg = gMessageSystem;
+					msg->newMessageFast(_PREHASH_MoneyTransferRequest);
+					msg->nextBlockFast(_PREHASH_AgentData);
+					msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+					msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+					msg->nextBlockFast(_PREHASH_MoneyData);
+					msg->addUUIDFast(_PREHASH_SourceID, gAgent.getID());
+					msg->addUUIDFast(_PREHASH_DestID, LLUUID::null);
+					msg->addU8("Flags", 0);
+					// we tell the sim how much we were expecting to pay so it
+					// can respond to any discrepancy
+					msg->addS32Fast(_PREHASH_Amount, expected_upload_cost);
+					msg->addU8Fast(_PREHASH_AggregatePermNextOwner, (U8)LLAggregatePermissions::AP_EMPTY);
+					msg->addU8Fast(_PREHASH_AggregatePermInventory, (U8)LLAggregatePermissions::AP_EMPTY);
+					msg->addS32Fast(_PREHASH_TransactionType, TRANS_UPLOAD_CHARGE);
+					msg->addStringFast(_PREHASH_Description, NULL);
+					msg->sendReliable(region->getHost());
+				}
 			}
-		}
 
-		if(is_balance_sufficient)
-		{
-			// Actually add the upload to inventory
-			llinfos << "Adding " << uuid << " to inventory." << llendl;
-			const LLUUID folder_id = gInventory.findCategoryUUIDForType(dest_loc);
-			if(folder_id.notNull())
+			if(is_balance_sufficient)
 			{
-				U32 next_owner_perms = data->mNextOwnerPerm;
-				if(PERM_NONE == next_owner_perms)
+				// Actually add the upload to inventory
+				llinfos << "Adding " << uuid << " to inventory." << llendl;
+				const LLUUID folder_id = gInventory.findCategoryUUIDForType(dest_loc);
+				if(folder_id.notNull())
 				{
-					next_owner_perms = PERM_MOVE | PERM_TRANSFER;
+					U32 next_owner_perms = data->mNextOwnerPerm;
+					if(PERM_NONE == next_owner_perms)
+					{
+						next_owner_perms = PERM_MOVE | PERM_TRANSFER;
+					}
+					create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
+							      folder_id, data->mAssetInfo.mTransactionID, data->mAssetInfo.getName(),
+							      data->mAssetInfo.getDescription(), data->mAssetInfo.mType,
+							      data->mInventoryType, NOT_WEARABLE, next_owner_perms,
+							      LLPointer<LLInventoryCallback>(NULL));
+				}
+				else
+				{
+					llwarns << "Can't find a folder to put it in" << llendl;
 				}
-				create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
-					folder_id, data->mAssetInfo.mTransactionID, data->mAssetInfo.getName(),
-					data->mAssetInfo.getDescription(), data->mAssetInfo.mType,
-					data->mInventoryType, NOT_WEARABLE, next_owner_perms,
-					LLPointer<LLInventoryCallback>(NULL));
-			}
-			else
-			{
-				llwarns << "Can't find a folder to put it in" << llendl;
 			}
 		}
-	}
-	else // 	if(result >= 0)
-	{
-		LLSD args;
-		args["FILE"] = LLInventoryType::lookupHumanReadable(data->mInventoryType);
-		args["REASON"] = std::string(LLAssetStorage::getErrorString(result));
-		LLNotificationsUtil::add("CannotUploadReason", args);
+		else // 	if(result >= 0)
+		{
+			LLSD args;
+			args["FILE"] = LLInventoryType::lookupHumanReadable(data->mInventoryType);
+			args["REASON"] = std::string(LLAssetStorage::getErrorString(result));
+			LLNotificationsUtil::add("CannotUploadReason", args);
+		}
 	}
 
 	LLUploadDialog::modalUploadFinished();
 	delete data;
+	data = NULL;
 
 	// *NOTE: This is a pretty big hack. What this does is check the
 	// file picker if there are any more pending uploads. If so,
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 3cc6b9b59132f71dcf2384e415b6883604fbf2b3..10d5d002cda902ed8c40a0dd66f09cf423f92fb9 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -38,6 +38,7 @@
 #include "llavataractions.h"
 #include "lscript_byteformat.h"
 #include "lleconomy.h"
+#include "lleventtimer.h"
 #include "llfloaterreg.h"
 #include "llfollowcamparams.h"
 #include "llregionhandle.h"
@@ -866,6 +867,10 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
 		}
 
 		LLInventoryItem* item = gInventory.getItem(item_id);
+		llassert(item);
+		if (!item) {
+			continue;
+		}
 
 		////////////////////////////////////////////////////////////////////////////////
 		// Special handling for various types.
@@ -914,12 +919,13 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f
 						{
 							// Landmark creation handling is moved to LLPanelPlaces::showAddedLandmarkInfo()
 							// TODO* LLPanelPlaces dependency is going to be removed. See EXT-4347.
-							if("create_landmark" == places_panel->getPlaceInfoType() && !places_panel->getItem())
-							{
+							//if("create_landmark" == places_panel->getPlaceInfoType() && !places_panel->getItem())
+							//{
 								//places_panel->setItem(item);
-							}
+							//}
+							//else
 							// we are opening a group notice attachment
-							else
+							if("create_landmark" != places_panel->getPlaceInfoType())
 							{
 								LLSD args;
 								args["type"] = "landmark";
@@ -1257,10 +1263,6 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 		gInventory.addObserver(opener);
 	}
 
-	// Remove script dialog because there is no need in it no more.
-	LLUUID object_id = notification["payload"]["object_id"].asUUID();
-	LLScriptFloaterManager::instance().removeNotificationByObjectId(object_id);
-
 	delete this;
 	return false;
 }
@@ -1300,13 +1302,6 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
 	msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null);
 	msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent());
 	LLInventoryObserver* opener = NULL;
-	LLViewerInventoryCategory* catp = NULL;
-	catp = (LLViewerInventoryCategory*)gInventory.getCategory(mObjectID);
-	LLViewerInventoryItem* itemp = NULL;
-	if(!catp)
-	{
-		itemp = (LLViewerInventoryItem*)gInventory.getItem(mObjectID);
-	}
 	
 	std::string from_string; // Used in the pop-up.
 	std::string chatHistory_string;  // Used in chat history.
@@ -1434,10 +1429,6 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
 		gInventory.addObserver(opener);
 	}
 
-	// Remove script dialog because there is no need in it no more.
-	LLUUID object_id = notification["payload"]["object_id"].asUUID();
-	LLScriptFloaterManager::instance().removeNotificationByObjectId(object_id);
-
 	delete this;
 	return false;
 }
@@ -1571,7 +1562,6 @@ void inventory_offer_handler(LLOfferInfo* info)
 		{
 			payload["give_inventory_notification"] = TRUE;
 			LLNotificationPtr notification = LLNotifications::instance().add(p.payload(payload)); 
-			LLScriptFloaterManager::getInstance()->setNotificationToastId(object_id, notification->getID());
 		}
 	}
 }
@@ -1884,6 +1874,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			}
 			else
 			{
+				/*
+				EXT-5099
+				currently there is no way to store in history only...
+				using  LLNotificationsUtil::add will add message to Nearby Chat
+
 				// muted user, so don't start an IM session, just record line in chat
 				// history.  Pretend the chat is from a local agent,
 				// so it will go into the history but not be shown on screen.
@@ -1891,6 +1886,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 				LLSD args;
 				args["MESSAGE"] = buffer;
 				LLNotificationsUtil::add("SystemMessageTip", args);
+				*/
 			}
 		}
 		break;
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 886f1d9ef54fa35e62cb156ba0c688d85430b80c..d0afa9d9de4015e3615187469f543090f28ce419 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -4019,9 +4019,14 @@ LLBBox LLViewerObject::getBoundingBoxAgent() const
 {
 	LLVector3 position_agent;
 	LLQuaternion rot;
+	LLViewerObject* avatar_parent = NULL;
 	LLViewerObject* root_edit = (LLViewerObject*)getRootEdit();
-	LLViewerObject* avatar_parent = (LLViewerObject*)root_edit->getParent();
-	if (avatar_parent && avatar_parent->isAvatar() && root_edit->mDrawable.notNull())
+	if (root_edit)
+	{
+		avatar_parent = (LLViewerObject*)root_edit->getParent();
+	}
+	
+	if (avatar_parent && avatar_parent->isAvatar() && root_edit && root_edit->mDrawable.notNull())
 	{
 		LLXform* parent_xform = root_edit->mDrawable->getXform()->getParent();
 		position_agent = (getPositionEdit() * parent_xform->getWorldRotation()) + parent_xform->getWorldPosition();
diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp
index c4fc2e5cabf73e7abb8ad58ba5e172c2d5a72317..2c5c0a37e8f3c8d3898f78bbbd82ccbaf041cef4 100644
--- a/indra/newview/llviewerparcelmedia.cpp
+++ b/indra/newview/llviewerparcelmedia.cpp
@@ -105,15 +105,6 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
 			std::string mediaUrl = std::string ( parcel->getMediaURL () );
 			std::string mediaCurrentUrl = std::string( parcel->getMediaCurrentURL());
 
-			// First use warning
-			if( (!mediaUrl.empty() ||
-			     !parcel->getMusicURL().empty())
-			    && LLViewerMedia::needsMediaFirstRun())
-			{
-				LLViewerMedia::displayMediaFirstRun();
-				return;
-			}
-
 			// if we have a current (link sharing) url, use it instead
 			if (mediaCurrentUrl != "" && parcel->getMediaType() == "text/html")
 			{
diff --git a/indra/newview/llviewerparcelmediaautoplay.h b/indra/newview/llviewerparcelmediaautoplay.h
index 1d80b4756cad6e9b918703cdfb77d8d4c6260ae1..40142c1dd100e30b11691dd39407581d920741cf 100644
--- a/indra/newview/llviewerparcelmediaautoplay.h
+++ b/indra/newview/llviewerparcelmediaautoplay.h
@@ -33,7 +33,7 @@
 #ifndef LLVIEWERPARCELMEDIAAUTOPLAY_H
 #define LLVIEWERPARCELMEDIAAUTOPLAY_H
 
-#include "lltimer.h"
+#include "lleventtimer.h"
 #include "lluuid.h"
 
 // timer to automatically play media
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 3f27453370b60d6eb541695161517fc9785ed7f6..ba1e7ed89bcca5562e6c122b90c4aace872df34b 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -1762,6 +1762,12 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 						{
 							optionally_start_music(music_url);
 						}
+						else
+						{
+							llinfos << "Stopping parcel music (invalid audio stream URL)" << llendl;
+							// clears the URL 
+							gAudiop->startInternetStream(LLStringUtil::null); 
+						}
 					}
 					else if (!gAudiop->getInternetStreamURL().empty())
 					{
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 0ad269392d178f2c31c72271c9ec4759c768e3d0..984f003411268415656fe7754e992915e75fdc21 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -715,7 +715,7 @@ void LLViewerTexture::generateGLTexture()
 
 LLImageGL* LLViewerTexture::getGLTexture() const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 	
 	return mGLTexturep ;
 }
@@ -732,7 +732,7 @@ BOOL LLViewerTexture::createGLTexture()
 
 BOOL LLViewerTexture::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename, BOOL to_create, S32 category)
 {
-	llassert_always(mGLTexturep.notNull()) ;	
+	llassert(mGLTexturep.notNull()) ;	
 
 	BOOL ret = mGLTexturep->createGLTexture(discard_level, imageraw, usename, to_create, category) ;
 	
@@ -748,55 +748,55 @@ BOOL LLViewerTexture::createGLTexture(S32 discard_level, const LLImageRaw* image
 
 void LLViewerTexture::setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format, BOOL swap_bytes)
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 	
 	mGLTexturep->setExplicitFormat(internal_format, primary_format, type_format, swap_bytes) ;
 }
 void LLViewerTexture::setAddressMode(LLTexUnit::eTextureAddressMode mode)
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 	mGLTexturep->setAddressMode(mode) ;
 }
 void LLViewerTexture::setFilteringOption(LLTexUnit::eTextureFilterOptions option)
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 	mGLTexturep->setFilteringOption(option) ;
 }
 
 //virtual
 S32	LLViewerTexture::getWidth(S32 discard_level) const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 	return mGLTexturep->getWidth(discard_level) ;
 }
 
 //virtual
 S32	LLViewerTexture::getHeight(S32 discard_level) const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 	return mGLTexturep->getHeight(discard_level) ;
 }
 
 S32 LLViewerTexture::getMaxDiscardLevel() const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 	return mGLTexturep->getMaxDiscardLevel() ;
 }
 S32 LLViewerTexture::getDiscardLevel() const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 	return mGLTexturep->getDiscardLevel() ;
 }
 S8  LLViewerTexture::getComponents() const 
 { 
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 	
 	return mGLTexturep->getComponents() ;
 }
 
 LLGLuint LLViewerTexture::getTexName() const 
 { 
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->getTexName() ; 
 }
@@ -821,124 +821,124 @@ BOOL LLViewerTexture::getBoundRecently() const
 
 LLTexUnit::eTextureType LLViewerTexture::getTarget(void) const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 	return mGLTexturep->getTarget() ;
 }
 
 BOOL LLViewerTexture::setSubImage(const LLImageRaw* imageraw, S32 x_pos, S32 y_pos, S32 width, S32 height)
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->setSubImage(imageraw, x_pos, y_pos, width, height) ;
 }
 
 BOOL LLViewerTexture::setSubImage(const U8* datap, S32 data_width, S32 data_height, S32 x_pos, S32 y_pos, S32 width, S32 height)
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->setSubImage(datap, data_width, data_height, x_pos, y_pos, width, height) ;
 }
 
 void LLViewerTexture::setGLTextureCreated (bool initialized)
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	mGLTexturep->setGLTextureCreated (initialized) ;
 }
 
 void  LLViewerTexture::setCategory(S32 category) 
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	mGLTexturep->setCategory(category) ;
 }
 
 LLTexUnit::eTextureAddressMode LLViewerTexture::getAddressMode(void) const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->getAddressMode() ;
 }
 
 S32 LLViewerTexture::getTextureMemory() const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->mTextureMemory ;
 }
 
 LLGLenum LLViewerTexture::getPrimaryFormat() const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->getPrimaryFormat() ;
 }
 
 BOOL LLViewerTexture::getIsAlphaMask() const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->getIsAlphaMask() ;
 }
 
 BOOL LLViewerTexture::getMask(const LLVector2 &tc)
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->getMask(tc) ;
 }
 
 F32 LLViewerTexture::getTimePassedSinceLastBound()
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->getTimePassedSinceLastBound() ;
 }
 BOOL LLViewerTexture::getMissed() const 
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->getMissed() ;
 }
 
 BOOL LLViewerTexture::isJustBound() const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->isJustBound() ;
 }
 
 void LLViewerTexture::forceUpdateBindStats(void) const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->forceUpdateBindStats() ;
 }
 
 U32 LLViewerTexture::getTexelsInAtlas() const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->getTexelsInAtlas() ;
 }
 
 U32 LLViewerTexture::getTexelsInGLTexture() const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->getTexelsInGLTexture() ;
 }
 
 BOOL LLViewerTexture::isGLTextureCreated() const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->isGLTextureCreated() ;
 }
 
 S32  LLViewerTexture::getDiscardLevelInAtlas() const
 {
-	llassert_always(mGLTexturep.notNull()) ;
+	llassert(mGLTexturep.notNull()) ;
 
 	return mGLTexturep->getDiscardLevelInAtlas() ;
 }
@@ -974,12 +974,6 @@ void LLViewerTexture::updateBindStatsForTester()
 //start of LLViewerFetchedTexture
 //----------------------------------------------------------------------------------------------
 
-//static
-F32 LLViewerFetchedTexture::maxDecodePriority()
-{
-	return 6000000.f;
-}
-
 LLViewerFetchedTexture::LLViewerFetchedTexture(const LLUUID& id, const LLHost& host, BOOL usemipmaps)
 	: LLViewerTexture(id, usemipmaps),
 	mTargetHost(host)
@@ -1426,6 +1420,13 @@ void LLViewerFetchedTexture::processTextureStats()
 	}
 }
 
+const F32 MAX_PRIORITY_PIXEL                         = 999.f ;     //pixel area
+const F32 PRIORITY_BOOST_LEVEL_FACTOR                = 1000.f ;    //boost level
+const F32 PRIORITY_DELTA_DISCARD_LEVEL_FACTOR        = 100000.f ;  //delta discard
+const S32 MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY       = 4 ;
+const F32 PRIORITY_ADDITIONAL_FACTOR                 = 1000000.f ; //additional 
+const S32 MAX_ADDITIONAL_LEVEL_FOR_PRIORITY          = 8 ;
+const F32 PRIORITY_BOOST_HIGH_FACTOR                 = 10000000.f ;//boost high
 F32 LLViewerFetchedTexture::calcDecodePriority()
 {
 #ifndef LL_RELEASE_FOR_DOWNLOAD
@@ -1453,7 +1454,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
 	bool have_all_data = (cur_discard >= 0 && (cur_discard <= mDesiredDiscardLevel));
 	F32 pixel_priority = fsqrtf(mMaxVirtualSize);
 
-	F32 priority;
+	F32 priority = 0.f;
 	if (mIsMissingAsset)
 	{
 		priority = 0.0f;
@@ -1496,8 +1497,8 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
 		static const F64 log_2 = log(2.0);
 		F32 desired = (F32)(log(32.0/pixel_priority) / log_2);
 		S32 ddiscard = MAX_DISCARD_LEVEL - (S32)desired;
-		ddiscard = llclamp(ddiscard, 0, 4);
-		priority = (ddiscard+1)*100000.f;
+		ddiscard = llclamp(ddiscard, 0, MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY);
+		priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR;
 	}
 	else if ((mMinDiscardLevel > 0) && (cur_discard <= mMinDiscardLevel))
 	{
@@ -1523,42 +1524,53 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
 				// We haven't rendered this in a while, de-prioritize it
 				desired_discard += 2;
 			}
-			//else
-			//{
-			//	// We haven't rendered this in the last half second, and we have a cached raw image, leave the desired discard as-is
-			//	desired_discard = cur_discard;
-			//}
+			else
+			{
+				// We haven't rendered this in the last half second, and we have a cached raw image, leave the desired discard as-is
+				desired_discard = cur_discard;
+			}
 		}
 
 		S32 ddiscard = cur_discard - desired_discard;
-		ddiscard = llclamp(ddiscard, 0, 4);
-		priority = (ddiscard+1)*100000.f;
+		ddiscard = llclamp(ddiscard, 0, MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY);
+		priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR;
 	}
 
 	// Priority Formula:
 	// BOOST_HIGH  +  ADDITIONAL PRI + DELTA DISCARD + BOOST LEVEL + PIXELS
-	// [10,000,000] + [1-9,000,000]  + [1-400,000]   + [1-20,000]  + [0-999]
+	// [10,000,000] + [1,000,000-9,000,000]  + [100,000-500,000]   + [1-20,000]  + [0-999]
 	if (priority > 0.0f)
 	{
-		pixel_priority = llclamp(pixel_priority, 0.0f, 999.f); 
+		pixel_priority = llclamp(pixel_priority, 0.0f, MAX_PRIORITY_PIXEL); 
 
-		priority = pixel_priority + 1000.f * mBoostLevel;
+		priority += pixel_priority + PRIORITY_BOOST_LEVEL_FACTOR * mBoostLevel;
 
 		if ( mBoostLevel > BOOST_HIGH)
 		{
-			priority += 10000000.f;
+			priority += PRIORITY_BOOST_HIGH_FACTOR;
 		}		
 
 		if(mAdditionalDecodePriority > 0.0f)
 		{
-			// 1-9
-			S32 additional_priority = (S32)(1.0f + mAdditionalDecodePriority*8.0f + .5f); // round
-			// priority range += 0-9,000,000
-			priority += 1000000.f * (F32)additional_priority;
+			// priority range += 1,000,000.f-9,000,000.f
+			priority += PRIORITY_ADDITIONAL_FACTOR * (1.0 + mAdditionalDecodePriority * MAX_ADDITIONAL_LEVEL_FOR_PRIORITY);
 		}
 	}
 	return priority;
 }
+
+//static
+F32 LLViewerFetchedTexture::maxDecodePriority()
+{
+	static const F32 max_priority = PRIORITY_BOOST_HIGH_FACTOR +                           //boost_high
+		PRIORITY_ADDITIONAL_FACTOR * (MAX_ADDITIONAL_LEVEL_FOR_PRIORITY + 1) +             //additional (view dependent factors)
+		PRIORITY_DELTA_DISCARD_LEVEL_FACTOR * (MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY + 1) + //delta discard
+		PRIORITY_BOOST_LEVEL_FACTOR * (BOOST_MAX_LEVEL - 1) +                              //boost level
+		MAX_PRIORITY_PIXEL + 1.0f ;                                                        //pixel area.
+	
+	return max_priority ;
+}
+
 //============================================================================
 
 void LLViewerFetchedTexture::setDecodePriority(F32 priority)
@@ -2983,6 +2995,10 @@ void LLViewerMediaTexture::initVirtualSize()
 
 void LLViewerMediaTexture::addMediaToFace(LLFace* facep) 
 {
+	if(facep)
+	{
+		facep->setHasMedia(true) ;
+	}
 	if(!mIsPlaying)
 	{
 		return ; //no need to add the face because the media is not in playing.
@@ -2993,14 +3009,16 @@ void LLViewerMediaTexture::addMediaToFace(LLFace* facep)
 	
 void LLViewerMediaTexture::removeMediaFromFace(LLFace* facep) 
 {
-	if(!mIsPlaying)
-	{
-		return ; //no need to remove the face because the media is not in playing.
-	}
 	if(!facep)
 	{
 		return ;
 	}
+	facep->setHasMedia(false) ;
+
+	if(!mIsPlaying)
+	{
+		return ; //no need to remove the face because the media is not in playing.
+	}	
 
 	mIsPlaying = FALSE ; //set to remove the media from the face.
 	switchTexture(facep) ;
diff --git a/indra/newview/llviewervisualparam.h b/indra/newview/llviewervisualparam.h
index 3550a46fbfee92c4f831b47d3445f4b84e38b325..1a3975eb99c4bfd24633b90245471634faaeb14b 100644
--- a/indra/newview/llviewervisualparam.h
+++ b/indra/newview/llviewervisualparam.h
@@ -111,6 +111,7 @@ class LLViewerVisualParam : public LLVisualParam
 	F32					getSimpleMax() const		{ return getInfo()->mSimpleMax; }
 
 	BOOL				getCrossWearable() const 	{ return getInfo()->mCrossWearable; }
+
 };
 
 #endif // LL_LLViewerVisualParam_H
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 3f815314f0253061977614325b91f23e9af3bb56..c09f8e46b057452d8bbf96bb3c8a78a5c2d8a0e0 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -233,6 +233,7 @@ S32				gDebugRaycastFaceHit;
 BOOL				gDisplayWindInfo = FALSE;
 BOOL				gDisplayCameraPos = FALSE;
 BOOL				gDisplayFOV = FALSE;
+BOOL				gDisplayBadge = FALSE;
 
 S32 CHAT_BAR_HEIGHT = 28; 
 S32 OVERLAY_BAR_HEIGHT = 20;
@@ -422,6 +423,11 @@ class LLDebugText
 			addText(xpos, ypos, llformat("FOV: %2.1f deg", RAD_TO_DEG * LLViewerCamera::getInstance()->getView()));
 			ypos += y_inc;
 		}
+		if (gDisplayBadge)
+		{
+			addText(xpos, ypos+(y_inc/2), llformat("Hippos!", RAD_TO_DEG * LLViewerCamera::getInstance()->getView()));
+			ypos += y_inc * 2;
+		}
 		
 		/*if (LLViewerJoystick::getInstance()->getOverrideCamera())
 		{
@@ -1717,6 +1723,10 @@ void LLViewerWindow::shutdownViews()
 	// *TODO: Make LLNavigationBar part of gViewerWindow
 	delete LLNavigationBar::getInstance();
 	
+	// destroy menus after instantiating navbar above, as it needs
+	// access to gMenuHolder
+	cleanup_menus();
+
 	// Delete all child views.
 	delete mRootView;
 	mRootView = NULL;
@@ -2449,6 +2459,8 @@ void LLViewerWindow::updateUI()
 {
 	static std::string last_handle_msg;
 
+	LLConsole::updateClass();
+
 	// animate layout stacks so we have up to date rect for world view
 	LLLayoutStack::updateClass();
 
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 98d2958d9a34544ee2d5dd1821fd8a5c0eb48d0e..bfce65f2ba069654ef67c53646f2e8b4cb5a8a49 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -506,5 +506,6 @@ extern S32 CHAT_BAR_HEIGHT;
 extern BOOL			gDisplayCameraPos;
 extern BOOL			gDisplayWindInfo;
 extern BOOL			gDisplayFOV;
+extern BOOL			gDisplayBadge;
 
 #endif
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 124851144a708fd64618b1656bdcc88cd7494ac4..265adb3e7f2faa7567091946b9a95798c5655af9 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -1496,9 +1496,9 @@ BOOL LLVOAvatar::parseSkeletonFile(const std::string& filename)
 	//-------------------------------------------------------------------------
 	// parse the file
 	//-------------------------------------------------------------------------
-	BOOL success = sSkeletonXMLTree.parseFile( filename, FALSE );
+	BOOL parsesuccess = sSkeletonXMLTree.parseFile( filename, FALSE );
 
-	if (!success)
+	if (!parsesuccess)
 	{
 		llerrs << "Can't parse skeleton file: " << filename << llendl;
 		return FALSE;
@@ -1509,11 +1509,13 @@ BOOL LLVOAvatar::parseSkeletonFile(const std::string& filename)
 	if (!root) 
 	{
 		llerrs << "No root node found in avatar skeleton file: " << filename << llendl;
+		return FALSE;
 	}
 
 	if( !root->hasName( "linden_skeleton" ) )
 	{
 		llerrs << "Invalid avatar skeleton file header: " << filename << llendl;
+		return FALSE;
 	}
 
 	std::string version;
@@ -1521,6 +1523,7 @@ BOOL LLVOAvatar::parseSkeletonFile(const std::string& filename)
 	if( !root->getFastAttributeString( version_string, version ) || (version != "1.0") )
 	{
 		llerrs << "Invalid avatar skeleton file version: " << version << " in file: " << filename << llendl;
+		return FALSE;
 	}
 
 	return TRUE;
@@ -2196,13 +2199,16 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
 	// store off last frame's root position to be consistent with camera position
 	LLVector3 root_pos_last = mRoot.getWorldPosition();
 	BOOL detailed_update = updateCharacter(agent);
-	BOOL voice_enabled = gVoiceClient->getVoiceEnabled( mID ) && gVoiceClient->inProximalChannel();
 
 	if (gNoRender)
 	{
 		return TRUE;
 	}
 
+	static LLUICachedControl<bool> visualizers_in_calls("ShowVoiceVisualizersInCalls", false);
+	bool voice_enabled = (visualizers_in_calls || gVoiceClient->inProximalChannel()) &&
+						 gVoiceClient->getVoiceEnabled(mID);
+
 	idleUpdateVoiceVisualizer( voice_enabled );
 	idleUpdateMisc( detailed_update );
 	idleUpdateAppearanceAnimation();
@@ -2734,9 +2740,9 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
 		sNumVisibleChatBubbles++;
 		new_name = TRUE;
 	}
-
+				
 	idleUpdateNameTagColor(new_name, alpha);
-	
+
 	LLVector3 name_position = idleUpdateNameTagPosition(root_pos_last);
 	mNameText->setPositionAgent(name_position);
 	
@@ -2973,10 +2979,10 @@ LLVector3 LLVOAvatar::idleUpdateNameTagPosition(const LLVector3& root_pos_last)
 		(projected_vec(local_camera_at * root_rot, camera_to_av));
 	name_position += pixel_up_vec * 15.f;
 	return name_position;
-}
+	}
 
 void LLVOAvatar::idleUpdateNameTagColor(BOOL new_name, F32 alpha)
-{
+	{
 	llassert(mNameText);
 
 	bool is_friend = LLAvatarTracker::instance().isBuddy(getID());
@@ -3130,7 +3136,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 
 	if (!visible)
 	{
-		//updateMotions(LLCharacter::HIDDEN_UPDATE);
+		updateMotions(LLCharacter::HIDDEN_UPDATE);
 		return FALSE;
 	}
 
@@ -4099,6 +4105,7 @@ void LLVOAvatar::updateTextures()
 			// Spam if this is a baked texture, not set to default image, without valid host info
 			if (isIndexBakedTexture((ETextureIndex)texture_index)
 				&& imagep->getID() != IMG_DEFAULT_AVATAR
+				&& imagep->getID() != IMG_INVISIBLE
 				&& !imagep->getTargetHost().isOk())
 			{
 				LL_WARNS_ONCE("Texture") << "LLVOAvatar::updateTextures No host for texture "
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 5cc4aaa52e538d91fca108de4dfe9fcbd8458dfa..cf3f40979b5e05ddc6f64219ce17960f88fdac7b 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -567,7 +567,7 @@ class LLVOAvatar :
 	void 			updateMeshData();
 protected:
 	void 			releaseMeshData();
-	/*virtual*/ void restoreMeshData();
+	virtual void restoreMeshData();
 private:
 	BOOL 			mDirtyMesh;
 	BOOL			mMeshTexturesDirty;
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index ecd6b05ded23b911a70b372391bea3a50f7ddee2..00998b300a1c15b6d9551f9bc3f92c14b98548a7 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -510,8 +510,12 @@ BOOL LLVOAvatarSelf::buildMenus()
 
 LLVOAvatarSelf::~LLVOAvatarSelf()
 {
-	gAgent.setAvatarObject(NULL);
-	gAgentWearables.setAvatarObject(NULL);
+	// 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;
 }
@@ -928,6 +932,13 @@ void LLVOAvatarSelf::wearableUpdated( EWearableType type, BOOL upload_result )
 	{
 		const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second;
 		const LLVOAvatarDefines::EBakedTextureIndex index = baked_iter->first;
+
+		// if we're editing our appearance, ensure that we're not using baked textures
+		// The baked texture for alpha masks is set explicitly when you hit "save"
+		if (gAgent.cameraCustomizeAvatar())
+		{
+			setNewBakedTexture(index,IMG_DEFAULT_AVATAR);
+		}
 		if (baked_dict)
 		{
 			for (LLVOAvatarDefines::wearables_vec_t::const_iterator type_iter = baked_dict->mWearables.begin();
@@ -1966,6 +1977,7 @@ void LLVOAvatarSelf::forceBakeAllTextures(bool slam_for_debug)
 
 	// Don't know if this is needed
 	updateMeshTextures();
+
 }
 
 //-----------------------------------------------------------------------------
diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
index bb09a18cc3188e0896e26674ec9cd69d19503d97..dfd67d0c3801f198c8e587da1f29f060a90eed12 100644
--- a/indra/newview/llvoicechannel.cpp
+++ b/indra/newview/llvoicechannel.cpp
@@ -122,7 +122,8 @@ LLVoiceChannel::LLVoiceChannel(const LLUUID& session_id, const std::string& sess
 	mState(STATE_NO_CHANNEL_INFO), 
 	mSessionName(session_name),
 	mCallDirection(OUTGOING_CALL),
-	mIgnoreNextSessionLeave(FALSE)
+	mIgnoreNextSessionLeave(FALSE),
+	mCallEndedByAgent(false)
 {
 	mNotifyArgs["VOICE_CHANNEL_NAME"] = mSessionName;
 
@@ -412,7 +413,7 @@ void LLVoiceChannel::doSetState(const EState& new_state)
 	EState old_state = mState;
 	mState = new_state;
 	if (!mStateChangedCallback.empty())
-		mStateChangedCallback(old_state, mState, mCallDirection);
+		mStateChangedCallback(old_state, mState, mCallDirection, mCallEndedByAgent);
 }
 
 //static
@@ -779,7 +780,8 @@ void LLVoiceChannelP2P::handleStatusChange(EStatusType type)
 			}
 			else
 			{
-				// other user hung up				
+				// other user hung up, so we didn't end the call				
+				mCallEndedByAgent = false;			
 			}
 			deactivate();
 		}
@@ -810,6 +812,9 @@ void LLVoiceChannelP2P::activate()
 {
 	if (callStarted()) return;
 
+	//call will be counted as ended by user unless this variable is changed in handleStatusChange()
+	mCallEndedByAgent = true;
+
 	LLVoiceChannel::activate();
 
 	if (callStarted())
diff --git a/indra/newview/llvoicechannel.h b/indra/newview/llvoicechannel.h
index cb866713051e9d0f94dbbd6de8dbdfa9535a371d..941cccacc3ab9771ba29ad1a1568068c7c879d9e 100644
--- a/indra/newview/llvoicechannel.h
+++ b/indra/newview/llvoicechannel.h
@@ -58,7 +58,7 @@ class LLVoiceChannel : public LLVoiceClientStatusObserver
 		OUTGOING_CALL
 	} EDirection;
 
-	typedef boost::signals2::signal<void(const EState& old_state, const EState& new_state, const EDirection& direction)> state_changed_signal_t;
+	typedef boost::signals2::signal<void(const EState& old_state, const EState& new_state, const EDirection& direction, bool ended_by_agent)> state_changed_signal_t;
 
 	// on current channel changed signal
 	typedef boost::function<void(const LLUUID& session_id)> channel_changed_callback_t;
@@ -122,6 +122,8 @@ class LLVoiceChannel : public LLVoiceClientStatusObserver
 	std::string	mSessionName;
 	LLSD mNotifyArgs;
 	LLSD mCallDialogPayload;
+	// true if call was ended by agent
+	bool mCallEndedByAgent;
 	BOOL		mIgnoreNextSessionLeave;
 	LLHandle<LLPanel> mLoginNotificationHandle;
 
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 13735071af922933775061c2118214a43389ff46..b57e33fd0816461ae31a30cbcd13af995088dc7a 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -1107,16 +1107,17 @@ class LLSpeakerVolumeStorage : public LLSingleton<LLSpeakerVolumeStorage>
 	 * Sets internal voluem level for specified user.
 	 *
 	 * @param[in] speaker_id - LLUUID of user to store volume level for
-	 * @param[in] volume - internal volume level to be stored for user.
+	 * @param[in] volume - external (vivox) volume level to be stored for user.
 	 */
-	void storeSpeakerVolume(const LLUUID& speaker_id, S32 volume);
+	void storeSpeakerVolume(const LLUUID& speaker_id, F32 volume);
 
 	/**
-	 * Gets stored internal volume level for specified speaker.
+	 * Gets stored external (vivox) volume level for specified speaker and
+	 * transforms it into internal (viewer) level.
 	 *
 	 * If specified user is not found default level will be returned. It is equivalent of 
 	 * external level 0.5 from the 0.0..1.0 range.
-	 * Default internal level is calculated as: internal = 400 * external^2
+	 * Internal level is calculated as: internal = 400 * external^2
 	 * Maps 0.0 to 1.0 to internal values 0-400 with default 0.5 == 100
 	 *
 	 * @param[in] speaker_id - LLUUID of user to get his volume level
@@ -1133,7 +1134,7 @@ class LLSpeakerVolumeStorage : public LLSingleton<LLSpeakerVolumeStorage>
 	void load();
 	void save();
 
-	typedef std::map<LLUUID, S32> speaker_data_map_t;
+	typedef std::map<LLUUID, F32> speaker_data_map_t;
 	speaker_data_map_t mSpeakersData;
 };
 
@@ -1149,7 +1150,7 @@ LLSpeakerVolumeStorage::~LLSpeakerVolumeStorage()
 	save();
 }
 
-void LLSpeakerVolumeStorage::storeSpeakerVolume(const LLUUID& speaker_id, S32 volume)
+void LLSpeakerVolumeStorage::storeSpeakerVolume(const LLUUID& speaker_id, F32 volume)
 {
 	mSpeakersData[speaker_id] = volume;
 }
@@ -1163,7 +1164,10 @@ S32 LLSpeakerVolumeStorage::getSpeakerVolume(const LLUUID& speaker_id)
 	
 	if (it != mSpeakersData.end())
 	{
-		ret_val = it->second;
+		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);
 	}
 	return ret_val;
 }
@@ -1184,7 +1188,7 @@ 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), (S32)iter->second.asInteger()));
+		mSpeakersData.insert(std::make_pair(LLUUID(iter->first), (F32)iter->second.asReal()));
 	}
 }
 
@@ -6288,14 +6292,14 @@ void LLVoiceClient::setUserVolume(const LLUUID& id, F32 volume)
 		participantState *participant = findParticipantByID(id);
 		if (participant)
 		{
+			// store this volume setting for future sessions
+			LLSpeakerVolumeStorage::getInstance()->storeSpeakerVolume(id, volume);
+
 			// 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;
-
-			// store this volume setting for future sessions
-			LLSpeakerVolumeStorage::getInstance()->storeSpeakerVolume(id, participant->mUserVolume);
 		}
 	}
 }
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index d093031beae1fc786e92d29e350c694531a6a63e..acfbc23f62e1015c051124511ecf511a796437df 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -625,7 +625,9 @@ void LLWearable::writeToAvatar()
 	// Pull params
 	for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() )
 	{
-		if( (((LLViewerVisualParam*)param)->getWearableType() == mType) )
+		// 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.
+		if( (((LLViewerVisualParam*)param)->getWearableType() == mType) && (!((LLViewerVisualParam*)param)->getCrossWearable()) )
 		{
 			S32 param_id = param->getID();
 			F32 weight = getVisualParamWeight(param_id);
@@ -1085,6 +1087,26 @@ void LLWearable::destroyTextures()
 	mSavedTEMap.clear();
 }
 
+void LLWearable::pullCrossWearableValues()
+{
+	// scan through all of the avatar's visual parameters
+	LLVOAvatar* avatar = gAgent.getAvatarObject();
+	for (LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam(); 
+		 param;
+		 param = (LLViewerVisualParam*) avatar->getNextVisualParam())
+	{
+		if( param )
+		{
+			LLDriverParam *driver_param = dynamic_cast<LLDriverParam*>(param);
+			if(driver_param)
+			{
+				// parameter is a driver parameter, have it update its 
+				driver_param->updateCrossDrivenParams(getType());
+			}
+		}
+	}
+}
+
 
 void LLWearable::setLabelUpdated() const
 { 
diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h
index dae983bcf33787b1f59dd10c660c57edae02c0a5..7bd5305079f8d84cae301b169f2552c936463fcc 100644
--- a/indra/newview/llwearable.h
+++ b/indra/newview/llwearable.h
@@ -128,6 +128,7 @@ class LLWearable
 
 	void				revertValues();
 	void				saveValues();
+	void				pullCrossWearableValues();		
 
 	BOOL				isOnTop() const;
 
@@ -145,7 +146,7 @@ class LLWearable
 	void 				createLayers(S32 te);
 	void 				createVisualParams();
 	void				syncImages(te_map_t &src, te_map_t &dst);
-	void				destroyTextures();			
+	void				destroyTextures();	
 
 	static S32			sCurrentDefinitionVersion;	// Depends on the current state of the avatar_lad.xml.
 	S32					mDefinitionVersion;			// Depends on the state of the avatar_lad.xml when this asset was created.
diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp
index 7866f735c56760d584eb8108d8a56f723dc1c650..100ec0bb69a2aaa7191ec126455dab00a128b4d8 100644
--- a/indra/newview/llweb.cpp
+++ b/indra/newview/llweb.cpp
@@ -145,11 +145,20 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url,
 	substitution["VERSION_PATCH"] = LLVersionInfo::getPatch();
 	substitution["VERSION_BUILD"] = LLVersionInfo::getBuild();
 	substitution["CHANNEL"] = LLVersionInfo::getChannel();
-	substitution["LANGUAGE"] = LLUI::getLanguage();
 	substitution["GRID"] = LLViewerLogin::getInstance()->getGridLabel();
 	substitution["OS"] = LLAppViewer::instance()->getOSInfo().getOSStringSimple();
 	substitution["SESSION_ID"] = gAgent.getSessionID();
 
+	// work out the current language
+	std::string lang = LLUI::getLanguage();
+	if (lang == "en-us")
+	{
+		// *HACK: the correct fix is to change English.lproj/language.txt,
+		// but we're late in the release cycle and this is a less risky fix
+		lang = "en";
+	}
+	substitution["LANGUAGE"] = lang;
+
 	// find the region ID
 	LLUUID region_id;
 	LLViewerRegion *region = gAgent.getRegion();
@@ -159,14 +168,14 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url,
 	}
 	substitution["REGION_ID"] = region_id;
 
-	// find the parcel ID
-	LLUUID parcel_id;
+	// find the parcel local ID
+	S32 parcel_id = 0;
 	LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
 	if (parcel)
 	{
-		parcel_id = parcel->getID();
+		parcel_id = parcel->getLocalID();
 	}
-	substitution["PARCEL_ID"] = parcel_id;
+	substitution["PARCEL_ID"] = llformat("%d", parcel_id);
 
 	// expand all of the substitution strings and escape the url
 	std::string expanded_url = url;
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index 1940d65ae4d9ec5ee4b07a1ecb1b40eb4d029722..5edf72d4ae22055d6a67dd14670013007610e180 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -128,10 +128,10 @@ void LLWorldMapView::initClass()
 	sHomeImage =			LLUI::getUIImage("map_home.tga");
 	sTelehubImage = 		LLUI::getUIImage("map_telehub.tga");
 	sInfohubImage = 		LLUI::getUIImage("map_infohub.tga");
-	sEventImage =			LLUI::getUIImage("map_event.tga");
-	sEventMatureImage =		LLUI::getUIImage("map_event_mature.tga");
+	sEventImage =			LLUI::getUIImage("Parcel_PG_Dark");
+	sEventMatureImage =		LLUI::getUIImage("Parcel_M_Dark");
 	// To Do: update the image resource for adult events.
-	sEventAdultImage =		LLUI::getUIImage("map_event_adult.tga");
+	sEventAdultImage =		LLUI::getUIImage("Parcel_R_Dark");
 
 	sTrackCircleImage =		LLUI::getUIImage("map_track_16.tga");
 	sTrackArrowImage =		LLUI::getUIImage("direction_arrow.tga");
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 4f4fc838191bb0fe9922e6e8931b3a931001ba58..dd9634a2348077eaf113ce75cfe3d15783c1d27b 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -1355,6 +1355,7 @@ void LLPipeline::updateMoveNormalAsync(LLDrawable* drawablep)
 	if (!drawablep)
 	{
 		llerrs << "updateMove called with NULL drawablep" << llendl;
+		return;
 	}
 	if (drawablep->isState(LLDrawable::EARLY_MOVE))
 	{
@@ -1970,7 +1971,7 @@ void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera)
 		if (root && root->getParent() && root->getVObj() && root->getVObj()->isAttachment())
 		{
 			LLVOAvatar* av = root->getParent()->getVObj()->asAvatar();
-			if (av->isImpostor())
+			if (av && av->isImpostor())
 			{
 				return;
 			}
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index cbc69f5c04176ea0ba8f566f17426a1b4b796bcc..93dafcf2c1d807350b508781d7fd3a0e51803307 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -293,7 +293,7 @@
      reference="Black" />
     <color
      name="ContextSilhouetteColor"
-     value="0.94 0.61 0 1" />
+     reference="EmphasisColor" />
     <color
      name="DefaultHighlightDark"
      reference="White_10" />
@@ -557,7 +557,7 @@
      reference="White" />
     <color
      name="ObjectChatColor"
-     reference="EmphasisColor_35" />
+     reference="EmphasisColor" />
     <color
      name="OverdrivenColor"
      reference="Red" />
@@ -605,7 +605,7 @@
      value="0.39 0.39 0.39 1" />
     <color
      name="ScriptErrorColor"
-     value="Red" />
+     reference="Red" />
     <color
      name="ScrollBGStripeColor"
      reference="Transparent" />
diff --git a/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png
index 6343ddf035a738440af60dbc13317f33587e39db..e8fe243dc7a04f70f6dd45432309e21ee716606c 100644
Binary files a/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png and b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png differ
diff --git a/indra/newview/skins/default/textures/icons/object_icon.png b/indra/newview/skins/default/textures/icons/object_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..223874e631ad021ce7617e6dcb4399d171081b09
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/object_icon.png differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index ea66897b356723b1aa90b3869d8f25b5a8ec763d..18d1779702f0e5e506142b60494e6f325ff74b4f 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -143,12 +143,12 @@ with the same filename but different name
 
   <texture name="DownArrow" file_name="bottomtray/DownArrow.png" preload="false" />
 
-  <texture name="DropDown_Disabled" file_name="widgets/DropDown_Disabled.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
-  <texture name="DropDown_Over" file_name="widgets/DropDown_Over.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
-  <texture name="DropDown_Press" file_name="widgets/DropDown_Press.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
-  <texture name="DropDown_Selected" file_name="widgets/DropDown_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
-  <texture name="DropDown_On" file_name="widgets/DropDown_On.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
-  <texture name="DropDown_Off" file_name="widgets/DropDown_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
+  <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" />
 
@@ -265,8 +265,8 @@ with the same filename but different name
   <texture name="Linden_Dollar_Alert" file_name="widgets/Linden_Dollar_Alert.png"/>
   <texture name="Linden_Dollar_Background" file_name="widgets/Linden_Dollar_Background.png"/>
 
-  <texture name="ListItem_Select" file_name="widgets/ListItem_Select.png" preload="true" />
-  <texture name="ListItem_Over" file_name="widgets/ListItem_Over.png" preload="true" />
+  <texture name="ListItem_Select" file_name="widgets/ListItem_Select.png" preload="true" scale.left="2" scale.bottom="2" scale.top="22" scale.right="278" />
+  <texture name="ListItem_Over" file_name="widgets/ListItem_Over.png" preload="true" scale.left="2" scale.bottom="2" scale.top="22" scale.right="278" />
 
   <texture name="Lock" file_name="icons/Lock.png" preload="false" />
   <texture name="Lock2" file_name="navbar/Lock.png" preload="false" />
@@ -368,7 +368,7 @@ with the same filename but different name
 
  <texture name="Parcel_Build_Dark" file_name="icons/Parcel_Build_Dark.png" preload="false" />
  <texture name="Parcel_BuildNo_Dark" file_name="icons/Parcel_BuildNo_Dark.png" preload="false" />
- <texture name="Parcel_Damage_Dark" file_name="icons/Parcel_Health_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" />
@@ -376,6 +376,7 @@ with the same filename but different name
  <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" />
  <texture name="Parcel_Push_Dark" file_name="icons/Parcel_Push_Dark.png" preload="false" />
@@ -514,6 +515,7 @@ with the same filename but different name
   <texture name="SliderThumb_Press" file_name="widgets/SliderThumb_Press.png" />
 
   <texture name="SL_Logo" file_name="icons/SL_Logo.png" preload="true" />
+  <texture name="OBJECT_Icon" file_name="icons/object_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" />
diff --git a/indra/newview/skins/default/textures/world/BeaconArrow.png b/indra/newview/skins/default/textures/world/BeaconArrow.png
index 12dc246d51ccd4caac7779db3962c60a6fa5ba29..54934f738a90bb8615af7108b062a3c8ac39278a 100644
Binary files a/indra/newview/skins/default/textures/world/BeaconArrow.png and b/indra/newview/skins/default/textures/world/BeaconArrow.png differ
diff --git a/indra/newview/skins/default/xui/da/floater_about_land.xml b/indra/newview/skins/default/xui/da/floater_about_land.xml
index cb5d618dde2945f9ae972c265b74bd179299e795..b4af42753899a9715432fe313bbca7167af109f5 100644
--- a/indra/newview/skins/default/xui/da/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/da/floater_about_land.xml
@@ -1,7 +1,59 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floaterland" title="OM LAND">
+	<floater.string name="Minutes">
+		[MINUTES] minutter
+	</floater.string>
+	<floater.string name="Minute">
+		minut
+	</floater.string>
+	<floater.string name="Seconds">
+		[SECONDS] sekunder
+	</floater.string>
+	<floater.string name="Remaining">
+		mangler
+	</floater.string>
 	<tab_container name="landtab">
-		<panel label="Generelt" name="land_general_panel">
+		<panel label="GENERELT" name="land_general_panel">
+			<panel.string name="new users only">
+				Kun nye brugere
+			</panel.string>
+			<panel.string name="anyone">
+				Alle
+			</panel.string>
+			<panel.string name="area_text">
+				Størrelse
+			</panel.string>
+			<panel.string name="area_size_text">
+				[AREA] m²
+			</panel.string>
+			<panel.string name="auction_id_text">
+				Auktion nr: [ID]
+			</panel.string>
+			<panel.string name="need_tier_to_modify">
+				Du skal godkende dit køb for at kunne æmdre på dette land.
+			</panel.string>
+			<panel.string name="group_owned_text">
+				(Gruppe ejet)
+			</panel.string>
+			<panel.string name="profile_text">
+				Profil...
+			</panel.string>
+			<panel.string name="info_text">
+				Info...
+			</panel.string>
+			<panel.string name="public_text">
+				(offentlig)
+			</panel.string>
+			<panel.string name="none_text">
+				(ingen)
+			</panel.string>
+			<panel.string name="sale_pending_text">
+				(Salg i gang)
+			</panel.string>
+			<panel.string name="no_selection_text">
+				Pacel ikke valgt.
+Gå til &apos;Verden&apos; &gt; &apos;Om land&apos; eller vælg en anden parcel for at se detaljer.
+			</panel.string>
 			<text name="Name:">
 				Navn:
 			</text>
@@ -26,7 +78,6 @@
 			<text name="OwnerText">
 				Leyla Linden
 			</text>
-			<button label="Profil..." label_selected="Profil..." name="Profile..."/>
 			<text name="Group:">
 				Gruppe:
 			</text>
@@ -78,54 +129,23 @@
 			<button label="Efterlad land..." label_selected="Efterlad land..." name="Abandon Land..."/>
 			<button label="Kræv tilbage..." label_selected="Kræv tilbage..." name="Reclaim Land..."/>
 			<button label="Linden salg..." label_selected="Linden salg..." name="Linden Sale..." tool_tip="Land skal være ejet, indholdsrating sat og ikke allerede på auktion."/>
-			<panel.string name="new users only">
-				Kun nye brugere
-			</panel.string>
-			<panel.string name="anyone">
-				Alle
-			</panel.string>
-			<panel.string name="area_text">
-				Størrelse
-			</panel.string>
-			<panel.string name="area_size_text">
-				[AREA] m²
-			</panel.string>
-			<panel.string name="auction_id_text">
-				Auktion nr: [ID]
-			</panel.string>
-			<panel.string name="need_tier_to_modify">
-				Du skal godkende dit køb for at kunne æmdre på dette land.
-			</panel.string>
-			<panel.string name="group_owned_text">
-				(Gruppe ejet)
-			</panel.string>
-			<panel.string name="profile_text">
-				Profil...
-			</panel.string>
-			<panel.string name="info_text">
-				Info...
-			</panel.string>
-			<panel.string name="public_text">
-				(offentlig)
+		</panel>
+		<panel label="REGLER" name="land_covenant_panel">
+			<panel.string name="can_resell">
+				Købt land i denne region må sælges videre
 			</panel.string>
-			<panel.string name="none_text">
-				(ingen)
+			<panel.string name="can_not_resell">
+				Købt land i denne region må ikke sælges videre
 			</panel.string>
-			<panel.string name="sale_pending_text">
-				(Salg i gang)
+			<panel.string name="can_change">
+				Købt jord i denne region må gerne samles eller opdeles.
 			</panel.string>
-			<panel.string name="no_selection_text">
-				Pacel ikke valgt.
-Gå til &apos;Verden&apos; &gt; &apos;Om land&apos; eller vælg en anden parcel for at se detaljer.
+			<panel.string name="can_not_change">
+				Købt jord i denne region må íkke samles eller opdeles.
 			</panel.string>
-		</panel>
-		<panel label="Regler" name="land_covenant_panel">
 			<text name="estate_section_lbl">
 				Estate:
 			</text>
-			<text name="estate_name_lbl">
-				Navn:
-			</text>
 			<text name="estate_name_text">
 				Hovedland
 			</text>
@@ -144,9 +164,6 @@ Gå til &apos;Verden&apos; &gt; &apos;Om land&apos; eller vælg en anden parcel
 			<text name="region_section_lbl">
 				Region:
 			</text>
-			<text name="region_name_lbl">
-				Navn:
-			</text>
 			<text name="region_name_text">
 				leyla
 			</text>
@@ -174,35 +191,23 @@ Gå til &apos;Verden&apos; &gt; &apos;Om land&apos; eller vælg en anden parcel
 			<text name="changeable_clause">
 				Land i denne region må ikke samles/opdeles.
 			</text>
-			<panel.string name="can_resell">
-				Købt land i denne region må sælges videre
-			</panel.string>
-			<panel.string name="can_not_resell">
-				Købt land i denne region må ikke sælges videre
-			</panel.string>
-			<panel.string name="can_change">
-				Købt jord i denne region må gerne samles eller opdeles.
+		</panel>
+		<panel label="OBJEKTER" name="land_objects_panel">
+			<panel.string name="objects_available_text">
+				[COUNT] ud af [MAX] ([AVAILABLE] ledige)
 			</panel.string>
-			<panel.string name="can_not_change">
-				Købt jord i denne region må íkke samles eller opdeles.
+			<panel.string name="objects_deleted_text">
+				[COUNT] ud af [MAX] ([DELETED] bliver slettet)
 			</panel.string>
-		</panel>
-		<panel label="Objekter" name="land_objects_panel">
 			<text name="parcel_object_bonus">
 				Region objekt bonus faktor: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				Prims brugt i denne Sim:
+				Prim forbrug:
 			</text>
 			<text name="objects_available">
 				[COUNT] ud af [MAX] ([AVAILABLE] ledige)
 			</text>
-			<panel.string name="objects_available_text">
-				[COUNT] ud af [MAX] ([AVAILABLE] ledige)
-			</panel.string>
-			<panel.string name="objects_deleted_text">
-				[COUNT] ud af [MAX] ([DELETED] bliver slettet)
-			</panel.string>
 			<text name="Primitives parcel supports:">
 				Prims til rådighed:
 			</text>
@@ -251,33 +256,63 @@ Gå til &apos;Verden&apos; &gt; &apos;Om land&apos; eller vælg en anden parcel
 			<text name="Object Owners:">
 				Objekt ejere:
 			</text>
-			<button label="Gentegn liste" label_selected="Gentegn liste" name="Refresh List"/>
+			<button label="Gentegn liste" label_selected="Gentegn liste" name="Refresh List" tool_tip="Refresh Object List"/>
 			<button label="Returnér objekter..." label_selected="Returnér objekter..." name="Return objects..."/>
 			<name_list name="owner list">
-				<column label="Type" name="type"/>
-				<column label="Navn" name="name"/>
-				<column label="Antal" name="count"/>
-				<column label="Nyeste" name="mostrecent"/>
+				<name_list.columns label="Type" name="type"/>
+				<name_list.columns label="Navn" name="name"/>
+				<name_list.columns label="Antal" name="count"/>
+				<name_list.columns label="Nyeste" name="mostrecent"/>
 			</name_list>
 		</panel>
-		<panel label="Indstillinger" name="land_options_panel">
+		<panel label="INDSTILLINGER" name="land_options_panel">
+			<panel.string name="search_enabled_tooltip">
+				Lad beboere se denne parcel i søgeresultater
+			</panel.string>
+			<panel.string name="search_disabled_small_tooltip">
+				Denne mulighed er ikke til stede da parcellens område er 128 m² eller mindre.
+Kun større parceller kan vises i søgning.
+			</panel.string>
+			<panel.string name="search_disabled_permissions_tooltip">
+				Dette valg er lukket da du ikke kan ændre på denne parcels opsætning.
+			</panel.string>
+			<panel.string name="mature_check_mature">
+				Mature indhold
+			</panel.string>
+			<panel.string name="mature_check_adult">
+				Adult indhold
+			</panel.string>
+			<panel.string name="mature_check_mature_tooltip">
+				Din parcel information eller indhold anses for at være &apos;adult&apos;.
+			</panel.string>
+			<panel.string name="mature_check_adult_tooltip">
+				Din parcel information eller indhold anses for at være &apos;adult&apos;.
+			</panel.string>
+			<panel.string name="landing_point_none">
+				(ingen)
+			</panel.string>
+			<panel.string name="push_restrict_text">
+				Skub forbudt
+			</panel.string>
+			<panel.string name="push_restrict_region_text">
+				Skub forbudt (Uanset region indstilling)
+			</panel.string>
 			<text name="allow_label">
 				Tillad andre beboere at:
 			</text>
 			<check_box label="Redigere terræn" name="edit land check" tool_tip="Hvis dette er valg, kan enhver redigere dit land. Det er bedst ikke at vælge her, da det altid er muligt for dig som ejer at ændre terræn på dit eget land."/>
-			<check_box label="Lave landemærker" name="check landmark"/>
 			<check_box label="Flyve" name="check fly" tool_tip="Hvis valgt, kan beboere flyve på dit land. Hvis ikke valgt kan beboere kun flyve ind på dit land og over dit land."/>
-			<text name="allow_label2" left="194">
+			<text left="194" name="allow_label2">
 				Lave objekter:
 			</text>
 			<check_box label="Alle beboere" name="edit objects check"/>
 			<check_box label="Gruppe" name="edit group objects check"/>
-			<text name="allow_label3" left="170">
+			<text left="170" name="allow_label3">
 				Anbringe objekter:
 			</text>
 			<check_box label="Alle beboere" name="all object entry check"/>
 			<check_box label="Gruppe" name="group object entry check"/>
-			<text name="allow_label4" left="200">
+			<text left="200" name="allow_label4">
 				Køre scripts:
 			</text>
 			<check_box label="Alle beboere" name="check other scripts"/>
@@ -287,73 +322,37 @@ Gå til &apos;Verden&apos; &gt; &apos;Om land&apos; eller vælg en anden parcel
 			</text>
 			<check_box label="Sikker (ingen skade)" name="check safe" tool_tip="Hvis valgt, er det ikke muligt at forårsage skade på andre beboere. Hvis fravalgt er det muligt at få skader (f.eks. ved kamp)."/>
 			<check_box label="Skub forbudt" name="PushRestrictCheck" tool_tip="Forhindrer scripts i at skubbe. Valg af denne mulighed, kan være nyttigt for at forhindre forstyrrende adfærd på dit land."/>
-			<check_box label="Vis sted i søgning (L$30/uge) i kategorien:" name="ShowDirectoryCheck" tool_tip="Lad dit parcel blive vist i søge resultaterne"/>
-			<panel.string name="search_enabled_tooltip">
-				Lad beboere se denne parcel i søgeresultater
-			</panel.string>
-			<panel.string name="search_disabled_small_tooltip">
-				Denne mulighed er ikke til stede da parcellens område er 128 m² eller mindre.
-Kun større parceller kan vises i søgning.
-			</panel.string>
-			<panel.string name="search_disabled_permissions_tooltip">
-				Dette valg er lukket da du ikke kan ændre på denne parcels opsætning.
-			</panel.string>
+			<check_box label="Vis sted i søgning (L$30/uge)" name="ShowDirectoryCheck" tool_tip="Lad dit parcel blive vist i søge resultaterne"/>
 			<combo_box name="land category with adult">
-				<combo_box.item name="item0" label="Enhver kategori"
-				/>
-				<combo_box.item name="item1" label="Linden sted"
-				/>
-				<combo_box.item name="item2" label="Adult"
-				/>
-				<combo_box.item name="item3" label="Kunst &amp; kultur"
-				/>
-				<combo_box.item name="item4" label="Business"
-				/>
-				<combo_box.item name="item5" label="Uddannelse"
-				/>
-				<combo_box.item name="item6" label="Spil"
-				/>
-				<combo_box.item name="item7" label="Afslapning"
-				/>
-				<combo_box.item name="item8" label="Nybegynder venligt"
-				/>
-				<combo_box.item name="item9" label="Parker &amp; natur"
-				/>
-				<combo_box.item name="item10" label="Beboelse"
-				/>
-				<combo_box.item name="item11" label="Indkøb"
-				/>
-				<combo_box.item name="item12" label="Andet"
-				/>
+				<combo_box.item label="Enhver kategori" name="item0"/>
+				<combo_box.item label="Linden sted" name="item1"/>
+				<combo_box.item label="Adult" name="item2"/>
+				<combo_box.item label="Kunst &amp; kultur" name="item3"/>
+				<combo_box.item label="Business" name="item4"/>
+				<combo_box.item label="Uddannelse" name="item5"/>
+				<combo_box.item label="Spil" name="item6"/>
+				<combo_box.item label="Afslapning" name="item7"/>
+				<combo_box.item label="Nybegynder venligt" name="item8"/>
+				<combo_box.item label="Parker &amp; natur" name="item9"/>
+				<combo_box.item label="Beboelse" name="item10"/>
+				<combo_box.item label="Indkøb" name="item11"/>
+				<combo_box.item label="Andet" name="item12"/>
 			</combo_box>
 			<combo_box name="land category">
-				<combo_box.item name="item0" label="Enhver kategori" />
-				<combo_box.item name="item1" label="Linden sted" />
-				<combo_box.item name="item3" label="Kunst &amp; kultur" />
-				<combo_box.item name="item4" label="Business" />
-				<combo_box.item name="item5" label="Uddannelse" />
-				<combo_box.item name="item6" label="Spil" />
-				<combo_box.item name="item7" label="Afslapning" />
-				<combo_box.item name="item8" label="Nybegynder venligt" />
-				<combo_box.item name="item9" label="Parker &amp; natur" />
-				<combo_box.item name="item10" label="Beboelse" />
-				<combo_box.item name="item11" label="Indkøb" />
-				<combo_box.item name="item12" label="Andet" />
+				<combo_box.item label="Enhver kategori" name="item0"/>
+				<combo_box.item label="Linden sted" name="item1"/>
+				<combo_box.item label="Kunst &amp; kultur" name="item3"/>
+				<combo_box.item label="Business" name="item4"/>
+				<combo_box.item label="Uddannelse" name="item5"/>
+				<combo_box.item label="Spil" name="item6"/>
+				<combo_box.item label="Afslapning" name="item7"/>
+				<combo_box.item label="Nybegynder venligt" name="item8"/>
+				<combo_box.item label="Parker &amp; natur" name="item9"/>
+				<combo_box.item label="Beboelse" name="item10"/>
+				<combo_box.item label="Indkøb" name="item11"/>
+				<combo_box.item label="Andet" name="item12"/>
 			</combo_box>
-			<button label="?" label_selected="?" name="?"/>
 			<check_box label="Mature indhold" name="MatureCheck" tool_tip=""/>
-			<panel.string name="mature_check_mature">
-				Mature indhold
-			</panel.string>
-			<panel.string name="mature_check_adult">
-				Adult indhold
-			</panel.string>
-			<panel.string name="mature_check_mature_tooltip">
-				Din parcel information eller indhold anses for at være &apos;adult&apos;.
-			</panel.string>
-			<panel.string name="mature_check_adult_tooltip">
-				Din parcel information eller indhold anses for at være &apos;adult&apos;.
-			</panel.string>
 			<text name="Snapshot:">
 				Foto:
 			</text>
@@ -361,40 +360,35 @@ Kun større parceller kan vises i søgning.
 			<text name="landing_point">
 				Landingspunkt: [LANDING]
 			</text>
-			<panel.string name="landing_point_none">
-				(ingen)
-			</panel.string>
 			<button label="Vælg" label_selected="Vælg" name="Set" tool_tip="Indstiller landingspunkt, hvor de besøgende ankommer. Sættes til din avatars aktuelle placering i denne parcel."/>
 			<button label="Fjern" label_selected="Fjern" name="Clear" tool_tip="Fjerner oplysning om landingspunkt."/>
 			<text name="Teleport Routing: ">
 				Teleport valg:
 			</text>
 			<combo_box name="landing type" tool_tip="Vælg hvordan du vil håndtere teleporteringer til dit land.">
-				<combo_box.item name="Blocked" label="Blokeret" />
-				<combo_box.item name="LandingPoint" label="Landingspunkt" />
-				<combo_box.item name="Anywhere" label="Hvor som helst" />
+				<combo_box.item label="Blokeret" name="Blocked"/>
+				<combo_box.item label="Landingspunkt" name="LandingPoint"/>
+				<combo_box.item label="Hvor som helst" name="Anywhere"/>
 			</combo_box>
-			<panel.string name="push_restrict_text">
-				Skub forbudt
-			</panel.string>
-			<panel.string name="push_restrict_region_text">
-				Skub forbudt (Uanset region indstilling)
-			</panel.string>
 		</panel>
-		<panel label="Medier" name="land_media_panel">
-			<text name="with media:" left="4">
+		<panel label="MEDIA" name="land_media_panel">
+			<text left="4" name="with media:">
 				Medie type:
 			</text>
 			<combo_box name="media type" tool_tip="Specificer om URL-adressen er til en film, hjemmeside eller et andet medie."/>
-			<text name="at URL:" left="4">
+			<text left="4" name="at URL:">
 				Medie URL:
 			</text>
 			<button label="Vælg..." label_selected="Vælg..." name="set_media_url"/>
-			<text name="Description:" left="4">
+			<text name="CurrentURL:">
+				Nuværende side:
+			</text>
+			<check_box label="Skjul medie URL" name="hide_media_url" tool_tip="Klik her for at skjule medie adressen så det kun er dig og evt. parcel gruppens ejer/administratorer der kan se den."/>
+			<text left="4" name="Description:">
 				Beskrivelse:
 			</text>
 			<line_editor name="url_description" tool_tip="Tekst vist ved siden af Afspil/Hent knappen"/>
-			<text name="Media texture:" left="4">
+			<text left="4" name="Media texture:">
 				Erstat tekstur:
 			</text>
 			<texture_picker label="" name="media texture" tool_tip="Klik for at vælge billede"/>
@@ -402,13 +396,7 @@ Kun større parceller kan vises i søgning.
 				(Objekter der har denne tekstur vil vise filmen eller 
 web-siden, efter du klikker på play knappen.)
 			</text>
-			<text name="Options:">
-				Medie valg:
-			</text>
 			<check_box label="Auto skalér" name="media_auto_scale" tool_tip="Vælg denne mulighed for at skalere indholdet for dette parcel automatisk. Det kan være lidt langsommere og have lavere kvalitet, men ingen anden tekstur skalering eller tilpasning vil være nødvendigt."/>
-			<check_box label="Gentag afspil" name="media_loop" tool_tip="Gentager automatisk medie, når det er færdigt med at spille starter det automatisk forfra."/>
-			<check_box label="Skjul medie URL" name="hide_media_url" tool_tip="Klik her for at skjule medie adressen så det kun er dig og evt. parcel gruppens ejer/administratorer der kan se den."/>
-			<check_box label="Skjul musik URL" name="hide_music_url" tool_tip="Klik her for at skjule musik adressen så det kun er dig og evt. parcel gruppens ejer/administratorer der kan se den."/>
 			<text name="media_size" tool_tip="Størrelse for rendering af Web medie, benyt 0 for standard." width="105">
 				Medie Størrelse:
 			</text>
@@ -417,56 +405,42 @@ web-siden, efter du klikker på play knappen.)
 			<text name="pixels">
 				pixels
 			</text>
-			<text name="MusicURL:">
-				Musik URL:
-			</text>
-			<text name="Sound:">
-				Lyd:
-			</text>
-			<check_box label="Begræns lyde fra bevægelser og objekter til denne parcel" name="check sound local"/>
-			<button label="?" label_selected="?" name="?" left="400"/>
-			<text name="Voice settings:">
-				Stemme:
+			<text name="Options:">
+				Medie valg:
 			</text>
-			<radio_group name="parcel_voice_channel">
-				<radio_item name="Estate" label="Brug Estate kanalen" />
-				<radio_item name="Private" label="Brug en privat kanal" />
-				<radio_item name="Disabled" label="Slå stemme chat fra på denne parcel" />
-			</radio_group>
+			<check_box label="Gentag afspil" name="media_loop" tool_tip="Gentager automatisk medie, når det er færdigt med at spille starter det automatisk forfra."/>
+		</panel>
+		<panel label="LYD" name="land_audio_panel">
+			<check_box label="Tillad stemmer" name="parcel_enable_voice_channel"/>
+			<check_box label="Tillad stemmer (håndteret af estate)" name="parcel_enable_voice_channel_is_estate_disabled"/>
 		</panel>
-		<panel label="Adgang" name="land_access_panel">
+		<panel label="ADGANG" name="land_access_panel">
+			<panel.string name="access_estate_defined">
+				(Defineret via estate)
+			</panel.string>
+			<panel.string name="estate_override">
+				En eller flere af disse valg er indstillet på estate niveau
+			</panel.string>
 			<text name="Limit access to this parcel to:">
 				Adgang til denne parcel
 			</text>
-			<check_box label="Tillad offentlig adgang" name="public_access"/>
+			<check_box label="Tillad offentlig adgang [MATURITY]" name="public_access"/>
 			<text name="Only Allow">
-				Blokér adgang for:
+				Blokér adgang for::
 			</text>
-			<check_box label="Beboere der ikke har givet betalings oplysninger til Linden Lab" name="limit_payment" tool_tip="Blokér beboere der ikke har afgivet identifikationsoplysninger."/>
-			<check_box label="Beboere der ikke er godkendt som voksne" name="limit_age_verified" tool_tip="Blokér beboere der ikke har verificeret deres alder. Se support.secondlife.com for mere information."/>
-			<panel.string name="estate_override">
-				En eller flere af disse valg er indstillet på estate niveau
-			</panel.string>
+			<check_box label="Beboere der ikke har givet betalings oplysninger til Linden Lab [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Blokér beboere der ikke har afgivet identifikationsoplysninger."/>
+			<check_box label="Alders verifikation [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Blokér beboere der ikke har verificeret deres alder. Se support.secondlife.com for mere information."/>
 			<check_box label="Tillad adgang til gruppen: [GROUP]" name="GroupCheck" tool_tip="Vælg gruppe under fanen &apos;generelt&apos;."/>
 			<check_box label="Sælg adgang til:" name="PassCheck" tool_tip="Tillader midlertidig adgang til denne parcel"/>
 			<combo_box name="pass_combo">
-				<combo_box.item name="Anyone" label="Alle" />
-				<combo_box.item name="Group" label="Gruppe" />
+				<combo_box.item label="Alle" name="Anyone"/>
+				<combo_box.item label="Gruppe" name="Group"/>
 			</combo_box>
 			<spinner label="Pris i L$:" name="PriceSpin"/>
 			<spinner label="Timers adgang:" name="HoursSpin"/>
-			<text label="Tillad altid" name="AllowedText">
-				Altid godkendte beboere
-			</text>
-			<name_list name="AccessList" tool_tip="([LISTED] vist, [MAX] max)"/>
-			<button label="Tilføj..." label_selected="Tilføj..." name="add_allowed"/>
-			<button label="Fjern" label_selected="Fjern" name="remove_allowed"/>
-			<text label="Blokér" name="BanCheck">
-				Blokerede beboere
-			</text>
-			<name_list name="BannedList" tool_tip="([LISTED] vist, [MAX] max)"/>
-			<button label="Tilføj..." label_selected="Tilføj..." name="add_banned"/>
-			<button label="Fjern" label_selected="Fjern" name="remove_banned"/>
+			<panel name="Allowed_layout_panel">
+				<name_list name="AccessList" tool_tip="([LISTED] vist, [MAX] maks.)"/>
+			</panel>
 		</panel>
 	</tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_animation_preview.xml b/indra/newview/skins/default/xui/da/floater_animation_preview.xml
index 8cb0eee601e44facbcf53044f988376f59fe9850..47e02f070443a2b8c3eee606d877e7d32bb31676 100644
--- a/indra/newview/skins/default/xui/da/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/da/floater_animation_preview.xml
@@ -1,97 +1,184 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Animation Preview" title="">
+	<floater.string name="failed_to_initialize">
+		Fejlede at starte bevægelse
+	</floater.string>
+	<floater.string name="anim_too_long">
+		Animations filen er [LENGTH] sekunder lang.
+
+Maksimal animations længde er [MAX_LENGTH] sekunder.
+	</floater.string>
+	<floater.string name="failed_file_read">
+		Kan ikke læse animations fil.
+
+[STATUS]
+	</floater.string>
+	<floater.string name="E_ST_OK">
+		OK
+	</floater.string>
+	<floater.string name="E_ST_EOF">
+		Fil afsluttet for tidligt.
+	</floater.string>
+	<floater.string name="E_ST_NO_CONSTRAINT">
+		Kan ikke læse &quot;constraint definition&quot;.
+	</floater.string>
+	<floater.string name="E_ST_NO_FILE">
+		Kan ikke åbne BVH fil.
+	</floater.string>
+	<floater.string name="E_ST_NO_HIER">
+		Ugyldig header i HIERARCHY.
+	</floater.string>
+	<floater.string name="E_ST_NO_JOINT">
+		Kan ikke finde &quot;ROOT&quot; eller &quot;JOINT&quot;.
+	</floater.string>
+	<floater.string name="E_ST_NO_NAME">
+		Kan ikke finde JOINT navn.
+	</floater.string>
+	<floater.string name="E_ST_NO_OFFSET">
+		Kan ikke finde OFFSET.
+	</floater.string>
+	<floater.string name="E_ST_NO_CHANNELS">
+		Kan ikke finde CHANNELS.
+	</floater.string>
+	<floater.string name="E_ST_NO_ROTATION">
+		Kan ikke læse &quot;rotation order&quot;.
+	</floater.string>
+	<floater.string name="E_ST_NO_AXIS">
+		Kan ikke finde rotationsakser.
+	</floater.string>
+	<floater.string name="E_ST_NO_MOTION">
+		Kan ikke finde MOTION.
+	</floater.string>
+	<floater.string name="E_ST_NO_FRAMES">
+		Kan ikke læse antal &quot;frames&quot;.
+	</floater.string>
+	<floater.string name="E_ST_NO_FRAME_TIME">
+		Kan ikke læse &quot;frame time&quot;.
+	</floater.string>
+	<floater.string name="E_ST_NO_POS">
+		Kan ikke læse positionsværdier.
+	</floater.string>
+	<floater.string name="E_ST_NO_ROT">
+		Kan ikke læse rotationsværdier.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_FILE">
+		kan ikke åbne &quot;translation file&quot;.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_HEADER">
+		Kan ikke læse &quot;translation header.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_NAME">
+		Kan ikke aflæse &quot;translation&quot; navne.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_IGNORE">
+		Kan ikke læse &quot;translation ignore&quot; værdi.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_RELATIVE">
+		Kan ikke læse &quot;translation relative&quot; værdi.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_OUTNAME">
+		Kan ikke læse &quot;translation outname&quot; værdi.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_MATRIX">
+		Kan ikke læse &quot;translation matrix&quot;.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_MERGECHILD">
+		Kan ikke læse &quot;mergechild&quot; navn.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_MERGEPARENT">
+		Kan ikke læse &quot;mergeparent&quot; navn.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_PRIORITY">
+		Kan ikke finde prioritetsværdi.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_LOOP">
+		Kan ikke læse &quot;loop&quot; værdi.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_EASEIN">
+		kan ikke læse &quot;easeIn&quot; værdier.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_EASEOUT">
+		Kan ikke læse &quot;easeOut&quot; værdier.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_HAND">
+		Kan ikke læse &quot;hand morph&quot; værdi.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_EMOTE">
+		kan ikke læse &quot;emote&quot; navn.
+	</floater.string>
 	<text name="name_label">
 		Navn:
 	</text>
 	<text name="description_label">
 		Beskrivelse:
 	</text>
-	<spinner label="Prioritet" name="priority"
-	     tool_tip="Vælg hvilke andre animationer der har lavere prioritet end denne." />
-	<check_box label="Gentag" name="loop_check" tool_tip="Gentager animationen konstant." />
-	<spinner left="76" label_width="40" width="105" label="Ind(%)" name="loop_in_point" tool_tip="Sætter punktet hvor gentagelsen genstarter fra."/>
-	<spinner label="Ud (%)" name="loop_out_point"
-	     tool_tip="Sætter punktet i animationen der afslutter gentagelsen." />
+	<spinner label="Prioritet" name="priority" tool_tip="Vælg hvilke andre animationer der &quot;overstyres&quot; af denne"/>
+	<check_box label="Gentag" name="loop_check" tool_tip="Gentager animationen konstant"/>
+	<spinner label="Ind(%)" label_width="40" left="76" name="loop_in_point" tool_tip="Sætter punktet hvor gentagelsen genstarter fra" width="105"/>
+	<spinner label="Ud (%)" name="loop_out_point" tool_tip="Sætter punktet i animationen der afslutter gentagelsen"/>
 	<text name="hand_label">
 		HÃ¥nd posering
 	</text>
-	<combo_box label="" name="hand_pose_combo"
-	     tool_tip="Kontrollerer hvad hænderne går i løbet af animationen." width="140">
-		<combo_box.item name="Spread" label="Spredt" />
-		<combo_box.item name="Relaxed" label="Afslappet" />
-		<combo_box.item name="PointBoth" label="Peg begge" />
-		<combo_box.item name="Fist" label="Knytnæver" />
-		<combo_box.item name="RelaxedLeft" label="Afslappet venstre" />
-		<combo_box.item name="PointLeft" label="Peg venstre" />
-		<combo_box.item name="FistLeft" label="Knytnæve venstre" />
-		<combo_box.item name="RelaxedRight" label="Afslappet højre" />
-		<combo_box.item name="PointRight" label="Peg højre" />
-		<combo_box.item name="FistRight" label="Knytnæve højre" />
-		<combo_box.item name="SaluteRight" label="Honnør højre" />
-		<combo_box.item name="Typing" label="Skriver" />
-		<combo_box.item name="PeaceRight" label="Fredstegn højre" />
+	<combo_box label="" name="hand_pose_combo" tool_tip="Kontrollerer hvad hænderne går i løbet af animationen" width="140">
+		<combo_box.item label="Spredt" name="Spread"/>
+		<combo_box.item label="Afslappet" name="Relaxed"/>
+		<combo_box.item label="Peg begge" name="PointBoth"/>
+		<combo_box.item label="Knytnæver" name="Fist"/>
+		<combo_box.item label="Afslappet venstre" name="RelaxedLeft"/>
+		<combo_box.item label="Peg venstre" name="PointLeft"/>
+		<combo_box.item label="Knytnæve venstre" name="FistLeft"/>
+		<combo_box.item label="Afslappet højre" name="RelaxedRight"/>
+		<combo_box.item label="peg højre" name="PointRight"/>
+		<combo_box.item label="knytnæve højre" name="FistRight"/>
+		<combo_box.item label="Honnør højre" name="SaluteRight"/>
+		<combo_box.item label="Skrivende" name="Typing"/>
+		<combo_box.item label="Fredstegn højre" name="PeaceRight"/>
 	</combo_box>
 	<text name="emote_label">
 		Ansigtsudtryk
 	</text>
-	<combo_box label="" name="emote_combo"
-	     tool_tip="Angiver hvad ansigtet gør under animationen" width="140">
-		<combo_box.item name="[None]" label="Intet]" />
-		<combo_box.item name="Aaaaah" label="Aaaaah" />
-		<combo_box.item name="Afraid" label="Bange" />
-		<combo_box.item name="Angry" label="Vred" />
-		<combo_box.item name="BigSmile" label="Stort smil" />
-		<combo_box.item name="Bored" label="Keder sig" />
-		<combo_box.item name="Cry" label="Græder" />
-		<combo_box.item name="Disdain" label="Forarget" />
-		<combo_box.item name="Embarrassed" label="Flov" />
-		<combo_box.item name="Frown" label="Skuler" />
-		<combo_box.item name="Kiss" label="Kysser" />
-		<combo_box.item name="Laugh" label="Griner" />
-		<combo_box.item name="Plllppt" label="Plllppt" />
-		<combo_box.item name="Repulsed" label="Frastødt" />
-		<combo_box.item name="Sad" label="Ked af det" />
-		<combo_box.item name="Shrug" label="Skuldertræk" />
-		<combo_box.item name="Smile" label="Smiler" />
-		<combo_box.item name="Surprise" label="Overrasket" />
-		<combo_box.item name="Wink" label="Blinker" />
-		<combo_box.item name="Worry" label="Bekymret" />
+	<combo_box label="" name="emote_combo" tool_tip="Angiver hvad ansigtet gør under animationen" width="140">
+		<combo_box.item label="(Intet)" name="[None]"/>
+		<combo_box.item label="Aaaaah" name="Aaaaah"/>
+		<combo_box.item label="Bange" name="Afraid"/>
+		<combo_box.item label="Vred" name="Angry"/>
+		<combo_box.item label="Stort smil" name="BigSmile"/>
+		<combo_box.item label="Keder sig" name="Bored"/>
+		<combo_box.item label="Græder" name="Cry"/>
+		<combo_box.item label="Forarget" name="Disdain"/>
+		<combo_box.item label="Flov" name="Embarrassed"/>
+		<combo_box.item label="Skuler" name="Frown"/>
+		<combo_box.item label="Kysser" name="Kiss"/>
+		<combo_box.item label="Griner" name="Laugh"/>
+		<combo_box.item label="Plllppt" name="Plllppt"/>
+		<combo_box.item label="Frastødt" name="Repulsed"/>
+		<combo_box.item label="Ked af det" name="Sad"/>
+		<combo_box.item label="Skuldertræk" name="Shrug"/>
+		<combo_box.item label="Smil" name="Smile"/>
+		<combo_box.item label="Overrasket" name="Surprise"/>
+		<combo_box.item label="Blinker" name="Wink"/>
+		<combo_box.item label="Bekymret" name="Worry"/>
 	</combo_box>
 	<text name="preview_label">
 		Vis mens
 	</text>
-	<combo_box label="" name="preview_base_anim"
-	     tool_tip="Se hvordan animation ser ud i forskellige typiske avatar-situationer." width="140">
-		<combo_box.item name="Standing" label="Står" />
-		<combo_box.item name="Walking" label="GÃ¥r" />
-		<combo_box.item name="Sitting" label="Sidder" />
-		<combo_box.item name="Flying" label="Flyver" />
+	<combo_box label="" name="preview_base_anim" tool_tip="Se hvordan animation ser ud i forskellige typiske avatar-situationer." width="140">
+		<combo_box.item label="Stående" name="Standing"/>
+		<combo_box.item label="GÃ¥ende" name="Walking"/>
+		<combo_box.item label="Sidder" name="Sitting"/>
+		<combo_box.item label="Flyver" name="Flying"/>
 	</combo_box>
-	<spinner label="start (sec)" name="ease_in_time"
-	     tool_tip="Tid i sekunder animationen bruger på at komme i gang." />
-	<spinner label="Afslut (sec)" name="ease_out_time"
-	     tool_tip="Tid i sekunder animationen bruger på at afslutte." />
-	<button label="" name="play_btn" tool_tip="Start/pause din animation." />
-	<button label="" name="stop_btn" tool_tip="Stop afspilning af animation" />
-	<slider label="" name="playback_slider" />
+	<spinner label="start (sec)" name="ease_in_time" tool_tip="Tid (i sekunder) animationen bruger på at komme i gang."/>
+	<spinner label="Afslut (sec)" name="ease_out_time" tool_tip="Tid (i sekunder) animationen bruger på at afslutte"/>
+	<button label="" name="play_btn" tool_tip="Start din animation"/>
+	<button name="pause_btn" tool_tip="Pause din animation"/>
+	<button label="" name="stop_btn" tool_tip="Stop afspilning af animation"/>
+	<slider label="" name="playback_slider"/>
 	<text name="bad_animation_text">
 		Kan ikke læse animations fil.
 
 Vi anbefaler BVH filer der er exporteret fra Poser 4.
 	</text>
-	<button label="Annullér" name="cancel_btn" />
-	<button label="Hent (L$[AMOUNT])" name="ok_btn" />
-	<string name="failed_to_initialize">
-		Fejlede at starte bevægelse
-	</string>
-	<string name="anim_too_long">
-		Animations filen er [LENGTH] sekunder lang.
-
-Maksimal animations længde er [MAX_LENGTH] sekunder.
-	</string>
-	<string name="failed_file_read">
-		Kan ikke læse animations fil.
-
-[STATUS]
-	</string>
+	<button label="Hent (L$[AMOUNT])" name="ok_btn"/>
+	<button label="Annullér" name="cancel_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_avatar_textures.xml b/indra/newview/skins/default/xui/da/floater_avatar_textures.xml
index 27bfa367f65b58fc1a83a8c036f5dfd8d1c5b905..1111c5e18ba9371d4d20ab160babab5058fa0008 100644
--- a/indra/newview/skins/default/xui/da/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/da/floater_avatar_textures.xml
@@ -1,30 +1,32 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="avatar_texture_debug" title="AVATAR TEKSTURER">
-	<text name="baked_label">
-		Faste teksturer
-	</text>
+	<floater.string name="InvalidAvatar">
+		UGYLDING AVATAR
+	</floater.string>
 	<text name="composite_label">
 		Blandede teksturer
 	</text>
-	<texture_picker label="Hoved" name="baked_head" />
-	<texture_picker label="Makeup" name="head_bodypaint" />
-	<texture_picker label="HÃ¥r" name="hair" />
-	<button label="Drop" label_selected="Dump" name="Dump" />
-	<texture_picker label="øjne" name="baked_eyes" />
-	<texture_picker label="øje" name="eye_texture" />
-	<texture_picker label="Overkrop" name="baked_upper_body" />
-	<texture_picker label="Tatovering overkrop" name="upper_bodypaint" />
-	<texture_picker label="Undertrøje" name="undershirt" />
-	<texture_picker label="Handsker" name="gloves" />
-	<texture_picker label="Trøje" name="shirt" />
-	<texture_picker label="øvre jakke" name="upper_jacket" />
-	<texture_picker label="Underkrop" name="baked_lower_body" />
-	<texture_picker label="Tatovering underkrop" name="lower_bodypaint" />
-	<texture_picker label="Underbukser" name="underpants" />
-	<texture_picker label="Strømper" name="socks" />
-	<texture_picker label="Sko" name="shoes" />
-	<texture_picker label="Bukser" name="pants" />
-	<texture_picker label="Jakke" name="jacket" />
-	<texture_picker label="Nederdel" name="baked_skirt" />
-	<texture_picker label="Nederdel" name="skirt_texture" />
+	<button label="Drop" label_selected="Dump" name="Dump"/>
+	<texture_picker label="HÃ¥r" name="hair_grain"/>
+	<texture_picker label="Alpha - hår" name="hair_alpha"/>
+	<texture_picker label="Makeup" name="head_bodypaint"/>
+	<texture_picker label="Alpha - hoved" name="head_alpha"/>
+	<texture_picker label="Tatovering hovede" name="head_tattoo"/>
+	<texture_picker label="Øje" name="eyes_iris"/>
+	<texture_picker label="Alpha - øjne" name="eyes_alpha"/>
+	<texture_picker label="Bodypaint - overkrop" name="upper_bodypaint"/>
+	<texture_picker label="Undertrøje" name="upper_undershirt"/>
+	<texture_picker label="Handsker" name="upper_gloves"/>
+	<texture_picker label="Trøje" name="upper_shirt"/>
+	<texture_picker label="Øvre jakke" name="upper_jacket"/>
+	<texture_picker label="Alpha - øvre" name="upper_alpha"/>
+	<texture_picker label="Øvre tatovering" name="upper_tattoo"/>
+	<texture_picker label="Bodypaint - underkrop" name="lower_bodypaint"/>
+	<texture_picker label="Undertøj" name="lower_underpants"/>
+	<texture_picker label="Strømper" name="lower_socks"/>
+	<texture_picker label="Sko" name="lower_shoes"/>
+	<texture_picker label="Bukser" name="lower_pants"/>
+	<texture_picker label="Jakke" name="lower_jacket"/>
+	<texture_picker label="Alpha - nedre" name="lower_alpha"/>
+	<texture_picker label="Nedre tatovering" name="lower_tattoo"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_beacons.xml b/indra/newview/skins/default/xui/da/floater_beacons.xml
index 18bc7aeb31ddccbe0e90486ef9a905ab95d446c5..d67d859e7bb1ace289952441d076e5edcf71e048 100644
--- a/indra/newview/skins/default/xui/da/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/da/floater_beacons.xml
@@ -1,15 +1,21 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="beacons" title="PEJLELYS">
 	<panel name="beacons_panel">
-		<check_box label="Kun scriptede objekter med &quot;rør&quot;" name="touch_only" />
-		<check_box label="Scriptede objekter" name="scripted" />
-		<check_box label="Fysiske objekter" name="physical" />
-		<check_box label="Lyd kilder" name="sounds" />
-		<check_box label="Partikel kilder" name="particles" />
-		<check_box label="Rendér highlights" name="highlights" />
-		<check_box label="Rendér pejlelys" name="beacons" />
-		<text name="beacon_width_label">
-			Pejlelys bredde:
+		<text name="label_show">
+			Vis:
 		</text>
+		<check_box label="Pejlelys" name="beacons"/>
+		<check_box label="Fremhævninger" name="highlights"/>
+		<text name="beacon_width_label" tool_tip="Pejlelys bredde">
+			Bredde:
+		</text>
+		<text name="label_objects">
+			For disse objekter:
+		</text>
+		<check_box label="Fysisk" name="physical"/>
+		<check_box label="Scriptet" name="scripted"/>
+		<check_box label="Kun berøring" name="touch_only"/>
+		<check_box label="Lydkilder" name="sounds"/>
+		<check_box label="Partikel kilder" name="particles"/>
 	</panel>
 </floater>
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 7eb0d4c035c7e88f404c535a4013e097f6c0ff4f..9196f19b7859739562ac03f3fd0dcf801e1f574a 100644
--- a/indra/newview/skins/default/xui/da/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/da/floater_build_options.xml
@@ -1,8 +1,11 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="build options floater" title="GITTER INDSTILLINGER">
-	<spinner label="Gitter enhed (meter)" name="GridResolution" width="200" label_width="136"/>
-	<spinner label="Gitter rækkevidde (meter)" name="GridDrawSize" width="200" label_width="136"/>
-	<check_box label="Aktiver låsning til under-enheder" name="GridSubUnit" />
-	<check_box label="Vis &apos;cross sections&apos;" name="GridCrossSection" />
-	<slider label="Gitter synlighed" name="GridOpacity" />
+<?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"/>
+	<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">
+		Uigennemsigtighed:
+	</text>
+	<slider label="Gitter synlighed" name="GridOpacity"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_buy_contents.xml b/indra/newview/skins/default/xui/da/floater_buy_contents.xml
index 8dccf32304d23ea030a3e8264dabce55c5123cb6..c2b2ccc24468fa3c8a5fd4ac84eeb0f3c60a2cbe 100644
--- a/indra/newview/skins/default/xui/da/floater_buy_contents.xml
+++ b/indra/newview/skins/default/xui/da/floater_buy_contents.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_buy_contents" title="KØB INDHOLD">
 	<text name="contains_text">
 		[NAME] indeholder:
@@ -6,9 +6,9 @@
 	<text name="buy_text">
 		Køb for L$[AMOUNT] fra [NAME]?
 	</text>
-	<button label="Annullér" label_selected="Annullér" name="cancel_btn" />
-	<button label="Køb" label_selected="Køb" name="buy_btn" />
-	<check_box label="Tag tøj på nu" name="wear_check" />
+	<button label="Annullér" label_selected="Annullér" name="cancel_btn"/>
+	<button label="Køb" label_selected="Køb" name="buy_btn"/>
+	<check_box label="Tag tøj på nu" name="wear_check"/>
 	<string name="no_copy_text">
 		(kopiér ej)
 	</string>
diff --git a/indra/newview/skins/default/xui/da/floater_buy_currency.xml b/indra/newview/skins/default/xui/da/floater_buy_currency.xml
index d1fca8984d367229f83e80e5e0f0d783860f4c7d..18ee0e05978bf64bdef4ef62826c3d03ecd87e3e 100644
--- a/indra/newview/skins/default/xui/da/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/da/floater_buy_currency.xml
@@ -1,68 +1,66 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="buy currency" title="KØB VALUTA">
-	<text name="info_buying">
-		Køber valuta:
-	</text>
-	<text name="info_cannot_buy">
-		Kan ikke købe nu:
-	</text>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="buy currency" title="KØB L$">
+	<floater.string name="buy_currency">
+		Køb L$ [LINDENS] for ca. [LOCALAMOUNT]
+	</floater.string>
 	<text name="info_need_more">
-		Du har ikke penge nok:
+		Du skal bruge flere L$
 	</text>
-	<text name="error_message">
-		Noget er gået galt.
-	</text>
-	<button label="GÃ¥ til hjemmeside" name="error_web" />
 	<text name="contacting">
 		Kontakter LindeX...
 	</text>
-	<text name="buy_action_unknown">
-		Køb L$ på LindeX valuta marked
+	<text name="info_buying">
+		Køb L$
 	</text>
-	<text name="buy_action">
-		[NAME] L$ [PRICE]
+	<text name="balance_label">
+		Jeg har
+	</text>
+	<text name="balance_amount">
+		L$ [AMT]
 	</text>
 	<text name="currency_action">
-		Køb L$
+		Jeg ønsker at købe
 	</text>
-	<line_editor name="currency_amt">
+	<text name="currency_label">
+		L$
+	</text>
+	<line_editor label="L$" name="currency_amt">
 		1234
 	</line_editor>
+	<text name="buying_label">
+		Til prisen
+	</text>
 	<text name="currency_est">
-		for ca. [LOCALAMOUNT]
+		ca. [LOCALAMOUNT]
 	</text>
 	<text name="getting_data">
-		Henter data...
-	</text>
-	<text name="balance_label">
-		Du har i øjeblikket
-	</text>
-	<text name="balance_amount">
-		L$ [AMT]
-	</text>
-	<text name="buying_label">
-		Du køber
+		Estimerer...
 	</text>
-	<text name="buying_amount">
-		L$ [AMT]
+	<text name="buy_action">
+		[NAME] L$ [PRICE]
 	</text>
 	<text name="total_label">
-		Din balance bliver
+		Min nye beholdning vil være
 	</text>
 	<text name="total_amount">
 		L$ [AMT]
 	</text>
+	<text name="currency_links">
+		[http://www.secondlife.com/ payment method] | [http://www.secondlife.com/ currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+	</text>
+	<text name="exchange_rate_note">
+		Indtast beløbet for at se nyeste valutakurs.
+	</text>
 	<text name="purchase_warning_repurchase">
-		Bekræfter at denne handel kun omfatter valuta.
-Gentag operationen venligst igen.
+		Bekræftelse af dette køb medfører kun køb af L$, ikke objektet.
 	</text>
 	<text name="purchase_warning_notenough">
-		Du køber ikke nok valuta, tast et større beløb
-og prøv igen.
+		Du køber ikke nok L$. Forøg venligst beløbet.
 	</text>
-	<button label="Annullér" name="cancel_btn" />
-	<button label="Køb" name="buy_btn" />
-	<string name="buy_currency">
-		Køb L$ [LINDENS] for ca. [LOCALAMOUNT]
-	</string>
+	<button label="Køb nu" name="buy_btn"/>
+	<button label="Annullér" name="cancel_btn"/>
+	<text name="info_cannot_buy">
+		Kan ikke købe
+	</text>
+	<button label="Fortsæt til web" name="error_web"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_buy_land.xml b/indra/newview/skins/default/xui/da/floater_buy_land.xml
index 71e6eaa7f7d4f1d765113feacbee5f660d7c0c36..987ad6585f606ffdac1178aec0967bf7a2182149 100644
--- a/indra/newview/skins/default/xui/da/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/da/floater_buy_land.xml
@@ -59,7 +59,7 @@
 	<text left_delta="62" name="info_price">
 		L$ 1500
 (L$ 1.1/m²)
-sælges med objekter
+solgt med objekter
 	</text>
 	<text name="info_action">
 		Køb af dette land vil:
@@ -75,16 +75,16 @@ sælges med objekter
 		Kun premium medlemmer kan eje land.
 	</text>
 	<combo_box name="account_level">
-		<combo_box.item name="US$9.95/month,billedmonthly" label="US$9.95/md, månedlig afregning" />
-		<combo_box.item name="US$7.50/month,billedquarterly" label="US$7.50/md, kvartalsvis afregning" />
-		<combo_box.item name="US$6.00/month,billedannually" label="US$6.00/md, årlig afregning" />
+		<combo_box.item label="US$9.95 pr. måned, faktureret månedligt" name="US$9.95/month,billedmonthly"/>
+		<combo_box.item label="US$7.50 pr. måned, faktureret kvartalsvist" name="US$7.50/month,billedquarterly"/>
+		<combo_box.item label="US$6.00 pr. måned, faktureret årligt" name="US$6.00/month,billedannually"/>
 	</combo_box>
 	<text name="land_use_action">
 		Forøg dine månedlige arealanvendelse gebyrer til US $ 40/måned.
 	</text>
 	<text name="land_use_reason">
-		You hold 1309 m² of land. 
-This parcel is 512 m² of land.
+		Du ejer 1309 m² land.
+Denne parcel er på 512 m².
 	</text>
 	<text name="purchase_action">
 		Betal Joe Resident L$ 4000 dette areal
@@ -99,12 +99,12 @@ This parcel is 512 m² of land.
 		1000
 	</line_editor>
 	<text name="currency_est">
-		for ca. US$ [AMOUNT2]
+		for ca. [LOCAL_AMOUNT]
 	</text>
 	<text name="currency_balance">
 		Du har L$2,100.
 	</text>
-	<check_box label="Fjern [AMOUNT] kvadratmeter af bidrag fra gruppe." name="remove_contribution"/>
+	<check_box label="Fjern [AMOUNT] m² af bidrag fra gruppe." name="remove_contribution"/>
 	<button label="Køb" name="buy_btn"/>
 	<button label="Annullér" name="cancel_btn"/>
 	<string name="can_resell">
@@ -181,16 +181,16 @@ Prøv at vælge et mindre område.
 		Din konto kan eje jord.
 	</string>
 	<string name="land_holdings">
-		Du har [BUYER] m² jord.
+		Du ejer [BUYER] m² land.
 	</string>
 	<string name="pay_to_for_land">
 		Betal L$ [AMOUNT] til [SELLER] for dette stykke jord
 	</string>
 	<string name="buy_for_US">
-		Køb L$ [AMOUNT] for ca. US$ [AMOUNT2],
+		Køb L$ [AMOUNT] for ca. [LOCAL_AMOUNT],
 	</string>
 	<string name="parcel_meters">
-		Denne parcel er [AMOUNT] m².
+		Denne parcel er på [AMOUNT] m²
 	</string>
 	<string name="premium_land">
 		Dette stykke jord er premium, og vil tælle som [AMOUNT] m².
@@ -200,7 +200,7 @@ Prøv at vælge et mindre område.
 	</string>
 	<string name="meters_supports_object">
 		[AMOUNT] m²
-kan indeholder [AMOUNT2] objekter
+kan indeholde [AMOUNT2] objekter
 	</string>
 	<string name="sold_with_objects">
 		solgt med objekter
diff --git a/indra/newview/skins/default/xui/da/floater_choose_group.xml b/indra/newview/skins/default/xui/da/floater_choose_group.xml
index 9f02f281db3e9da28359664a83d7ff984f834b5b..1ccda4f1d77d719a979b92ccd7706a9e475599a7 100644
--- a/indra/newview/skins/default/xui/da/floater_choose_group.xml
+++ b/indra/newview/skins/default/xui/da/floater_choose_group.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="groups" title="GRUPPER">
 	<text name="groupdesc">
 		Vælg en gruppe:
 	</text>
-	<button label="OK" label_selected="OK" name="OK" />
-	<button label="Annullér" label_selected="Annullér" name="Cancel" />
+	<button label="OK" label_selected="OK" name="OK"/>
+	<button label="Annullér" label_selected="Annullér" name="Cancel"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_customize.xml b/indra/newview/skins/default/xui/da/floater_customize.xml
index b2409f168228cab44f0a29705c5b1fd1629e1719..379302ef6ad44a3d5e12b5c97709c1d922e4016d 100644
--- a/indra/newview/skins/default/xui/da/floater_customize.xml
+++ b/indra/newview/skins/default/xui/da/floater_customize.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater customize" title="APPEARANCE" width="509">
+<floater name="floater customize" title="UDSEENDE" width="509">
 	<tab_container name="customize tab container" width="507">
 		<placeholder label="Krops Dele" name="body_parts_placeholder"/>
 		<panel label="Kropsbygning" name="Shape">
@@ -14,8 +14,8 @@
 			<button label="Overkrop" label_selected="Overkrop" name="Torso"/>
 			<button label="Ben" label_selected="Ben" name="Legs"/>
 			<radio_group name="sex radio">
-				<radio_item name="radio" label="Kvinde" />
-				<radio_item name="radio2" label="Mand" />
+				<radio_item label="Kvinde" name="radio"/>
+				<radio_item label="Mand" name="radio2"/>
 			</radio_group>
 			<text name="title">
 				[DESC]
@@ -78,9 +78,9 @@ og bagefter &apos;tage den på&apos;.
 			<text name="Item Action Label">
 				Hud:
 			</text>
-			<texture_picker width="98" label="Tatoveringer hoved" name="Head Tattoos" tool_tip="Klik for at vælge et billede"/>
-			<texture_picker width="98" label="Tatover. overkrop" name="Upper Tattoos" tool_tip="Klik for at vælge et billede"/>
-			<texture_picker width="98" label="Tatover. underkrop" name="Lower Tattoos" tool_tip="Klik for at vælge et billede"/>
+			<texture_picker label="Tatoveringer hoved" name="Head Tattoos" tool_tip="Klik for at vælge et billede" width="98"/>
+			<texture_picker label="Tatover. overkrop" name="Upper Tattoos" tool_tip="Klik for at vælge et billede" width="98"/>
+			<texture_picker label="Tatover. underkrop" name="Lower Tattoos" tool_tip="Klik for at vælge et billede" width="98"/>
 			<button label="Lav ny hud" label_selected="Lav nyt hud" name="Create New"/>
 			<button label="Gem" label_selected="Gem" name="Save"/>
 			<button label="Gem som..." label_selected="Gem som..." name="Save As"/>
@@ -156,7 +156,7 @@ og bagefter &apos;tage dem på&apos;.
 			<button label="Gem som..." label_selected="Gem som..." name="Save As"/>
 			<button label="Annullér" label_selected="Annullér" name="Revert"/>
 		</panel>
-		<panel label="Tøje" name="clothes_placeholder"/>
+		<placeholder label="Tøje" name="clothes_placeholder"/>
 		<panel label="Trøje" name="Shirt">
 			<texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/>
 			<color_swatch label="Farve" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
@@ -471,9 +471,81 @@ og bagefter &apos;tage den på&apos;.
 			<button label="Gem som..." label_selected="Gem som..." name="Save As"/>
 			<button label="Annullér" label_selected="Annullér" name="Revert"/>
 		</panel>
+		<panel label="Alpha" name="Alpha">
+			<text name="title">
+				[DESC]
+			</text>
+			<text name="title_no_modify">
+				[DESC]: kan ikke ændre
+			</text>
+			<text name="title_loading">
+				[DESC]: indlæser...
+			</text>
+			<text name="title_not_worn">
+				[DESC]: ikke båret
+			</text>
+			<text name="path">
+				Placeret i [PATH]
+			</text>
+			<text name="not worn instructions">
+				Brug en ny &quot;alpha mask&quot; ved at trække en fra din beholding til din avatar.
+Alternativt kan du lave en fra bunden og bære denne.
+			</text>
+			<text name="no modify instructions">
+				Du har ikke rettigheder til at ændre denne.
+			</text>
+			<text name="Item Action Label">
+				Alpha:
+			</text>
+			<texture_picker label="Alpha - nedre" name="Lower Alpha" tool_tip="Klik for at vælge et billede"/>
+			<texture_picker label="Øvre alpha" name="Upper Alpha" tool_tip="Klik for at vælge et billede"/>
+			<texture_picker label="Alpha - hoved" name="Head Alpha" tool_tip="Klik for at vælge et billede"/>
+			<texture_picker label="Alpha - øjne" name="Eye Alpha" tool_tip="Klik for at vælge et billede"/>
+			<texture_picker label="Alpha - hår" name="Hair Alpha" tool_tip="Klik for at vælge et billede"/>
+			<button label="Lav ny &quot;Alpha&quot;" label_selected="Lav ny &quot;Alpha&quot;" name="Create New"/>
+			<button label="Tag af" label_selected="Tag af" name="Take Off"/>
+			<button label="Gem" label_selected="Gem" name="Save"/>
+			<button label="Gem som..." label_selected="Gem som..." name="Save As"/>
+			<button label="Vend tilbage" label_selected="Vend tilbage" name="Revert"/>
+		</panel>
+		<panel label="Tatovering" name="Tattoo">
+			<text name="title">
+				[DESC]
+			</text>
+			<text name="title_no_modify">
+				[DESC]: kan ikke ændre
+			</text>
+			<text name="title_loading">
+				[DESC]: indlæser...
+			</text>
+			<text name="title_not_worn">
+				[DESC]: ikke båret
+			</text>
+			<text name="path">
+				Placeret i [PATH]
+			</text>
+			<text name="not worn instructions">
+				Brug en ny tatovering ved at trække en fra din beholding til din avatar.
+Alternativt kan du lave en fra bunden og bære denne.
+			</text>
+			<text name="no modify instructions">
+				Du har ikke rettigheder til at ændre denne.
+			</text>
+			<text name="Item Action Label">
+				Tatovering:
+			</text>
+			<texture_picker label="Tatovering - hovede" name="Head Tattoo" tool_tip="Klik for at vælge et billede"/>
+			<texture_picker label="Øvre tatovering" name="Upper Tattoo" tool_tip="Klik for at vælge et billede"/>
+			<texture_picker label="Nedre tatovering" name="Lower Tattoo" tool_tip="Klik for at vælge et billede"/>
+			<button label="lav ny tatovering" label_selected="Lav ny tatovering" name="Create New"/>
+			<button label="Tag af" label_selected="Tag af" name="Take Off"/>
+			<button label="Gem" label_selected="Gem" name="Save"/>
+			<button label="Gem som..." label_selected="Gem som..." name="Save As"/>
+			<button label="Vend tilbage" label_selected="Vend tilbage" name="Revert"/>
+		</panel>
 	</tab_container>
 	<scroll_container left="212" name="panel_container"/>
+	<button label="Lav sæt" label_selected="Lav sæt" name="make_outfit_btn"/>
 	<button label="Annullér" label_selected="Annullér" name="Cancel"/>
 	<button label="OK" label_selected="OK" name="Ok"/>
-	<button label="Opret sæt..." label_selected="Opret sæt..." name="Make Outfit"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_device_settings.xml b/indra/newview/skins/default/xui/da/floater_device_settings.xml
index 5e53a697f2f4c69fbb5435d73c9714b88af7c8c4..06d431a8f98c9490c30ac3774e33d792067e7e78 100644
--- a/indra/newview/skins/default/xui/da/floater_device_settings.xml
+++ b/indra/newview/skins/default/xui/da/floater_device_settings.xml
@@ -1,2 +1,2 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="floater_device_settings" title="STEMME CHAT INDSTILLINGER" />
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_device_settings" title="STEMME CHAT ENHEDSOPSÆTNING"/>
diff --git a/indra/newview/skins/default/xui/da/floater_env_settings.xml b/indra/newview/skins/default/xui/da/floater_env_settings.xml
index 6c5b6d3b6b14512072e1b08ea2a86dc711c79ce9..8d9c05500bfc0eb88d723c82249456d61044df77 100644
--- a/indra/newview/skins/default/xui/da/floater_env_settings.xml
+++ b/indra/newview/skins/default/xui/da/floater_env_settings.xml
@@ -1,26 +1,28 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Environment Editor Floater" title="REDIGERING AF OMGIVELSER">
+	<floater.string name="timeStr">
+		[hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
+	</floater.string>
 	<text name="EnvTimeText">
 		Tid på dagen
 	</text>
 	<text name="EnvTimeText2">
 		00:00
 	</text>
-	<slider label="" name="EnvTimeSlider" />
+	<slider label="" name="EnvTimeSlider"/>
 	<text name="EnvCloudText">
 		Skydække
 	</text>
-	<slider label="" name="EnvCloudSlider" />
+	<slider label="" name="EnvCloudSlider"/>
 	<text name="EnvWaterColorText">
 		Farve på vand
 	</text>
-	<color_swatch label="" name="EnvWaterColor" tool_tip="Klik for at åbne farvevælger" />
+	<color_swatch label="" name="EnvWaterColor" tool_tip="Klik for at åbne farvevælger"/>
 	<text name="EnvWaterFogText">
 		Tåge på vand
 	</text>
-	<slider label="" name="EnvWaterFogSlider" />
-	<button label="Benyt tid fra estate" name="EnvUseEstateTimeButton" />
-	<button label="Avanceret himmel" name="EnvAdvancedSkyButton" />
-	<button label="Avanceret vand" name="EnvAdvancedWaterButton" />
-	<button label="?" name="EnvSettingsHelpButton" />
+	<slider label="" name="EnvWaterFogSlider"/>
+	<button label="Benyt tid fra estate" name="EnvUseEstateTimeButton"/>
+	<button label="Avanceret himmel" name="EnvAdvancedSkyButton"/>
+	<button label="Avanceret vand" name="EnvAdvancedWaterButton"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_hardware_settings.xml b/indra/newview/skins/default/xui/da/floater_hardware_settings.xml
index fc1231ceef095a7165464090414c33b03b9d3bd9..2b10afe7e3385adeef67cb97118bdc1fdb261d0d 100644
--- a/indra/newview/skins/default/xui/da/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/da/floater_hardware_settings.xml
@@ -1,30 +1,28 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Hardware Settings Floater" title="HARDWARE OPSÆTNING">
 	<text name="Filtering:">
 		Filtrering:
 	</text>
-	<check_box label="Anisotropic filtrering (langsommere når aktiveret)" name="ani" />
+	<check_box label="Anisotropic filtrering (langsommere når aktiveret)" name="ani"/>
 	<text name="Antialiasing:">
 		Antialiasing:
 	</text>
 	<combo_box label="Antialiasing" name="fsaa" width="100">
-		<combo_box.item name="FSAADisabled" label="Slået fra"/>
-		<combo_box.item name="2x" label="2x"/>
-		<combo_box.item name="4x" label="4x"/>
-		<combo_box.item name="8x" label="8x"/>
-		<combo_box.item name="16x" label="16x"/>
+		<combo_box.item label="Slået fra" name="FSAADisabled"/>
+		<combo_box.item label="2x" name="2x"/>
+		<combo_box.item label="4x" name="4x"/>
+		<combo_box.item label="8x" name="8x"/>
+		<combo_box.item label="16x" name="16x"/>
 	</combo_box>
-	<spinner label="Gamma:" name="gamma" />
+	<spinner label="Gamma:" name="gamma"/>
 	<text name="(brightness, lower is brighter)">
 		(Lysstyrke, lavere er lysere, 0=benyt standard)
 	</text>
 	<text name="Enable VBO:">
 		Aktivér VBO:
 	</text>
-	<check_box label="Aktivér OpenGL Vertex Buffer objekter" name="vbo"
-	     tool_tip="Aktivér af dette på nyere hardware giver performance forbedring.  På ældre hardware kan aktivering medfø nedbrud." />
-	<slider label="Tekstur hukommelse (MB):" name="GrapicsCardTextureMemory"
-	     tool_tip="Mængde hukommelse der skal allokeres til teksturer (textures). Standardindstilling er hukommelse på grafikkortet. Reduktion kan medfø bedre ydeevne, men kan samtidig gøre teksturer mere udflydende." />
-	<spinner label="TÃ¥ge: afstandsforhold:" name="fog" />
-	<button label="OK" label_selected="OK" name="OK" />
+	<check_box initial_value="true" label="Aktivér OpenGL Vertex Buffer objekter" name="vbo" tool_tip="Aktivér af dette på nyere hardware giver performance forbedring.  På ældre hardware kan aktivering medfø nedbrud."/>
+	<slider label="Tekstur hukommelse (MB):" name="GraphicsCardTextureMemory" tool_tip="Mængde hukommelse der skal allokeres til teksturer (textures). Standardindstilling er hukommelse på grafikkortet. Reduktion kan medfø bedre ydeevne, men kan samtidig gøre teksturer mere udflydende."/>
+	<spinner label="TÃ¥ge: afstandsforhold:" name="fog"/>
+	<button label="OK" label_selected="OK" name="OK"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_help_browser.xml b/indra/newview/skins/default/xui/da/floater_help_browser.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fc52796344c91db49111200997553f4c5b37f3b0
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_help_browser.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_help_browser" title="HJÆLP">
+	<layout_stack name="stack1">
+		<layout_panel name="external_controls">
+			<button label="Ã…ben i min web browser" name="open_browser"/>
+		</layout_panel>
+	</layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_im.xml b/indra/newview/skins/default/xui/da/floater_im.xml
index 0b42b787065456cae57896732b2f0814e9d45cc4..519a70d1d90252230064e02e6ca89ae7165787ee 100644
--- a/indra/newview/skins/default/xui/da/floater_im.xml
+++ b/indra/newview/skins/default/xui/da/floater_im.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <multi_floater name="im_floater" title="Personlig samtale (IM)">
 	<string name="only_user_message">
 		Du er den eneste deltager i denne samtale
@@ -10,7 +10,7 @@
 		Tryk på [BUTTON NAME] knappen for at acceptére/tilslutte til denne stemme chat.
 	</string>
 	<string name="muted_message">
-		Du har blokeret denne beboer. Hvis du starter en samtale vil denne blokering automatisk blive fjernet.
+		Du har blokeret denne beboer. Hvis du sender besked vil denne blokering fjernes.
 	</string>
 	<string name="generic_request_error">
 		Kunne ikke etablere forbindelse, prøv igen senere
diff --git a/indra/newview/skins/default/xui/da/floater_im_container.xml b/indra/newview/skins/default/xui/da/floater_im_container.xml
new file mode 100644
index 0000000000000000000000000000000000000000..da6f877f56a4cde7b512bdebbc8dc0a3ba1f0637
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_im_container.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<multi_floater name="floater_im_box" title="Personlige beskeder"/>
diff --git a/indra/newview/skins/default/xui/da/floater_image_preview.xml b/indra/newview/skins/default/xui/da/floater_image_preview.xml
index 345c9aa6d1409bb165a27aca6c517d948b3a5417..52fd9f80c08daf31dcf2289c4135145c36fa6879 100644
--- a/indra/newview/skins/default/xui/da/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/da/floater_image_preview.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Image Preview" title="">
 	<text name="name_label">
 		Navn:
@@ -10,23 +10,23 @@
 		Se billede som:
 	</text>
 	<combo_box label="Tøj type" name="clothing_type_combo">
-		<combo_box.item name="Image" label="Billede"/>
-		<combo_box.item name="Hair" label="HÃ¥r"/>
-		<combo_box.item name="FemaleHead" label="Kvinde - hoved"/>
-		<combo_box.item name="FemaleUpperBody" label="Kvinde - overkrop"/>
-		<combo_box.item name="FemaleLowerBody" label="Kvinde - underkrop"/>
-		<combo_box.item name="MaleHead" label="Mand - hoved"/>
-		<combo_box.item name="MaleUpperBody" label="Mand - overkrop"/>
-		<combo_box.item name="MaleLowerBody" label="Mand - underkrop"/>
-		<combo_box.item name="Skirt" label="Nederdel"/>
-		<combo_box.item name="SculptedPrim" label="Sculpted prim"/>
+		<combo_box.item label="Billede" name="Image"/>
+		<combo_box.item label="HÃ¥r" name="Hair"/>
+		<combo_box.item label="Kvinde - hoved" name="FemaleHead"/>
+		<combo_box.item label="Kvinde - overkrop" name="FemaleUpperBody"/>
+		<combo_box.item label="Kvinde - underkrop" name="FemaleLowerBody"/>
+		<combo_box.item label="Mand - hoved" name="MaleHead"/>
+		<combo_box.item label="Mand - overkrop" name="MaleUpperBody"/>
+		<combo_box.item label="Mand - underkrop" name="MaleLowerBody"/>
+		<combo_box.item label="Nederdel" name="Skirt"/>
+		<combo_box.item label="Sculpted Prim" name="SculptedPrim"/>
 	</combo_box>
 	<text name="bad_image_text">
 		Kunne ikke læse billede.
 
 Prøv at gemme billede som en 24 bit Targa fil (.tga).
 	</text>
-	<check_box label="Benyt komprimering uden tab" name="lossless_check" />
-	<button label="Annullér" name="cancel_btn" />
-	<button label="Hent (L$[AMOUNT])" name="ok_btn" />
+	<check_box label="Benyt komprimering uden tab" name="lossless_check"/>
+	<button label="Annullér" name="cancel_btn"/>
+	<button label="Hent (L$[AMOUNT])" name="ok_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_incoming_call.xml b/indra/newview/skins/default/xui/da/floater_incoming_call.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3a1ef2e47d73012159e3adbe34676569071c4526
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_incoming_call.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="incoming call" title="UKENDT PERSON KALDER OP">
+	<floater.string name="localchat">
+		Stemme chat nærved
+	</floater.string>
+	<floater.string name="anonymous">
+		anonym
+	</floater.string>
+	<floater.string name="VoiceInviteP2P">
+		kalder op.
+	</floater.string>
+	<floater.string name="VoiceInviteAdHoc">
+		har sluttet sig til stemme chat opkald med en konference chat.
+	</floater.string>
+	<text name="question">
+		Ønsker du at forlade [CURRENT_CHAT] og slutte dig til denne stemme chat?
+	</text>
+	<button label="Acceptér" label_selected="Acceptér" name="Accept"/>
+	<button label="Afvis" label_selected="Afvis" name="Reject"/>
+	<button label="Start IM" name="Start IM"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_inspect.xml b/indra/newview/skins/default/xui/da/floater_inspect.xml
index 0610e9408fba63c22a524419414c4fce97c01957..d0dca8863a223af5d2c6b992df73fa39b55938ee 100644
--- a/indra/newview/skins/default/xui/da/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/da/floater_inspect.xml
@@ -1,10 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="inspect" title="INSPECÉR OBJEKTER">
+<floater name="inspect" title="UNDERSØG OBJEKT">
+	<floater.string name="timeStamp">
+		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+	</floater.string>
 	<scroll_list name="object_list" tool_tip="Vælg et objekt fra listen for at markere det">
-		<column label="Objekt navn" name="object_name"/>
-		<column label="Objekt ejer" name="owner_name"/>
-		<column label="Bygget af" name="creator_name"/>
-		<column label="Lavet den " name="creation_date"/>
+		<scroll_list.columns label="Objekt navn" name="object_name"/>
+		<scroll_list.columns label="Objekt ejer" name="owner_name"/>
+		<scroll_list.columns label="Bygget af" name="creator_name"/>
+		<scroll_list.columns label="Lavet den " name="creation_date"/>
 	</scroll_list>
 	<button label="Se profil for ejer..." label_selected="" name="button owner" tool_tip="Se profilen for ejeren af det markerede objekt på listen"/>
 	<button label="Se profil for bygger..." label_selected="" name="button creator" tool_tip="Se profilen for den beboer der har bygget det markerede objekt på listen"/>
diff --git a/indra/newview/skins/default/xui/da/floater_inventory.xml b/indra/newview/skins/default/xui/da/floater_inventory.xml
index 8bfe7164d0c14c5101af4520cc92fc4a49d64713..d80051fb844546ccd698e144aa8c095724091325 100644
--- a/indra/newview/skins/default/xui/da/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/da/floater_inventory.xml
@@ -1,47 +1,16 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Inventory" title="BEHOLDNING">
-	<search_editor label="Skriv her for at søge" name="inventory search editor" />
-	<tab_container name="inventory filter tabs">
-		<inventory_panel label="Alle ting" name="All Items" />
-		<inventory_panel label="Nye ting" name="Recent Items" />
-	</tab_container>
-	<menu_bar name="Inventory Menu">
-		<menu label="Filer" name="File">
-			<menu_item_call label="Ã…ben" name="Open" />
-			<menu_item_call label="Nyt vindue" name="New Window" />
-			<menu_item_call label="Vis filtre" name="Show Filters" />
-			<menu_item_call label="Nulstil filtre" name="Reset Current" />
-			<menu_item_call label="Luk alle mapper" name="Close All Folders" />
-			<menu_item_call label="Tøm papirkurv" name="Empty Trash" />
-		</menu>
-		<menu label="Opret" name="Create">
-			<menu_item_call label="Ny mappe" name="New Folder" />
-			<menu_item_call label="Nyt script" name="New Script" />
-			<menu_item_call label="Ny note" name="New Note" />
-			<menu_item_call label="Ny bevægelse" name="New Gesture" />
-			<menu name="New Clothes">
-				<menu_item_call label="Ny trøje" name="New Shirt" />
-				<menu_item_call label="Nye bukser" name="New Pants" />
-				<menu_item_call label="Nye sko" name="New Shoes" />
-				<menu_item_call label="Nye strømper" name="New Socks" />
-				<menu_item_call label="Ny jakke" name="New Jacket" />
-				<menu_item_call label="Ny nederdel" name="New Skirt" />
-				<menu_item_call label="Nye handsker" name="New Gloves" />
-				<menu_item_call label="Ny undertrøje" name="New Undershirt" />
-				<menu_item_call label="Nye underbukser" name="New Underpants" />
-			</menu>
-			<menu name="New Body Parts">
-				<menu_item_call label="Ny figur" name="New Shape" />
-				<menu_item_call label="Ny hud" name="New Skin" />
-				<menu_item_call label="Nyt hår" name="New Hair" />
-				<menu_item_call label="Nye øjne" name="New Eyes" />
-			</menu>
-		</menu>
-		<menu label="Sortér" name="Sort">
-			<menu_item_check label="Efter navn" name="By Name" />
-			<menu_item_check label="Efter dato" name="By Date" />
-			<menu_item_check label="Altid mapper efter navn" name="Folders Always By Name" />
-			<menu_item_check label="System-mapper i toppen" name="System Folders To Top" />
-		</menu>
-	</menu_bar>
+	<floater.string name="Title">
+		Beholdning
+	</floater.string>
+	<floater.string name="TitleFetching">
+		Beholdning (henter [ITEM_COUNT] genstande...) [FILTER]
+	</floater.string>
+	<floater.string name="TitleCompleted">
+		Beholdning ([ITEM_COUNT] genstande) [FILTER]
+	</floater.string>
+	<floater.string name="Fetched">
+		Hentet
+	</floater.string>
+	<panel label="Beholdningspanel" name="Inventory Panel"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml
index fbcf202c54d0dd932a68bdc018bdc60d3c8c0e3e..fa36fab762f0960bd6aa236d1465b1021ca8b734 100644
--- a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml
@@ -1,5 +1,20 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="item properties" title="EGENSKABER FOR OBJEKT I BEHOLDNING">
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="item properties" title="OPLYSNINGER OM BEHOLDNINGSGENSTAND">
+	<floater.string name="unknown">
+		(ukendt)
+	</floater.string>
+	<floater.string name="public">
+		(offentlig)
+	</floater.string>
+	<floater.string name="you_can">
+		Du kan:
+	</floater.string>
+	<floater.string name="owner_can">
+		Ejer kan:
+	</floater.string>
+	<floater.string name="acquiredDate">
+		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+	</floater.string>
 	<text name="LabelItemNameTitle">
 		Navn:
 	</text>
@@ -12,14 +27,14 @@
 	<text name="LabelCreatorName">
 		Nicole Linden
 	</text>
-	<button label="Profil..." label_selected="" name="BtnCreator" />
+	<button label="Profil..." label_selected="" name="BtnCreator"/>
 	<text name="LabelOwnerTitle">
 		Ejer:
 	</text>
 	<text name="LabelOwnerName">
 		Thrax Linden
 	</text>
-	<button label="Profil..." label_selected="" name="BtnOwner" />
+	<button label="Profil..." label_selected="" name="BtnOwner"/>
 	<text name="LabelAcquiredTitle">
 		Erhvervet:
 	</text>
@@ -27,55 +42,32 @@
 		Wed May 24 12:50:46 2006
 	</text>
 	<text name="OwnerLabel">
-		Du kan:
-	</text>
-	<check_box label="Redigere" name="CheckOwnerModify" />
-	<check_box label="Kopiere" name="CheckOwnerCopy" />
-	<check_box label="Sælge/give væk" name="CheckOwnerTransfer" />
-	<text name="BaseMaskDebug">
-		S:
-	</text>
-	<text name="OwnerMaskDebug">
-		E:
+		Dig:
 	</text>
-	<text name="GroupMaskDebug">
-		G:
+	<check_box label="Redigér" name="CheckOwnerModify"/>
+	<check_box label="Kopiere" name="CheckOwnerCopy"/>
+	<check_box label="Sælg" name="CheckOwnerTransfer"/>
+	<text name="AnyoneLabel">
+		Enhver:
 	</text>
-	<text name="EveryoneMaskDebug">
-		A:
+	<check_box label="Kopiér" name="CheckEveryoneCopy"/>
+	<text name="GroupLabel">
+		Gruppe:
 	</text>
-	<text name="NextMaskDebug">
-		N:
-	</text>
-	<check_box label="Del med gruppe" name="CheckShareWithGroup" />
-	<check_box label="Tillad alle at kopiere" name="CheckEveryoneCopy" />
+	<check_box label="Del" name="CheckShareWithGroup"/>
 	<text name="NextOwnerLabel">
-		Næste ejer kan:
-	</text>
-	<check_box label="Redigere" name="CheckNextOwnerModify" />
-	<check_box label="Kopiere" name="CheckNextOwnerCopy" />
-	<check_box label="Sælge/Give væk" name="CheckNextOwnerTransfer" />
-	<text name="SaleLabel">
-		Markér ting:
+		Næste ejer:
+	</text>
+	<check_box label="Redigér" name="CheckNextOwnerModify"/>
+	<check_box label="Kopiere" name="CheckNextOwnerCopy"/>
+	<check_box label="Sælg" name="CheckNextOwnerTransfer"/>
+	<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="Original" name="Original"/>
+	</combo_box>
+	<spinner label="Pris:" name="Edit Cost"/>
+	<text name="CurrencySymbol">
+		L$
 	</text>
-	<check_box label="Til salg" name="CheckPurchase" />
-	<radio_group name="RadioSaleType">
-		<radio_item name="radio" label="Original" />
-		<radio_item name="radio2" label="Kopi" />
-	</radio_group>
-	<text name="TextPrice">
-		Pris:  L$
-	</text>
-	<string name="unknown">
-		(ukendt)
-	</string>
-	<string name="public">
-		(offentlig)
-	</string>
-	<string name="you_can">
-		Du kan:
-	</string>
-	<string name="owner_can">
-		Ejer kan:
-	</string>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_joystick.xml b/indra/newview/skins/default/xui/da/floater_joystick.xml
index 4954b7b619eb5a2c69fd3504b6a42156eb28aaf4..49e1397e9f01527f33e94b12a828454d28c1ef7b 100644
--- a/indra/newview/skins/default/xui/da/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/da/floater_joystick.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Joystick" title="JOYSTICK OPSÆTNING">
-	<check_box name="enable_joystick" label="Aktiver Joystick:"/>
+	<check_box label="Aktiver Joystick:" name="enable_joystick"/>
 	<spinner label="X akse mapping" name="JoystickAxis1"/>
 	<spinner label="Y akse mapping" name="JoystickAxis2"/>
 	<spinner label="Z akse mapping" name="JoystickAxis0"/>
@@ -14,9 +14,9 @@
 	<text name="Control Modes:">
 		Kontrollér:
 	</text>
-	<check_box name="JoystickAvatarEnabled" label="Avatar"/>
-	<check_box name="JoystickBuildEnabled" label="Build"/>
-	<check_box name="JoystickFlycamEnabled" label="Flycam"/>
+	<check_box label="Avatar" name="JoystickAvatarEnabled"/>
+	<check_box label="Build" name="JoystickBuildEnabled"/>
+	<check_box label="Flycam" name="JoystickFlycamEnabled"/>
 	<text name="XScale">
 		X følsomhed
 	</text>
diff --git a/indra/newview/skins/default/xui/da/floater_lagmeter.xml b/indra/newview/skins/default/xui/da/floater_lagmeter.xml
index bcf15ea926209cbb2f38c69892375be46d28ef9e..149d174c34aab9d3b862f91af2cb669b44e131cb 100644
--- a/indra/newview/skins/default/xui/da/floater_lagmeter.xml
+++ b/indra/newview/skins/default/xui/da/floater_lagmeter.xml
@@ -1,152 +1,151 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_lagmeter" title="LAG MÃ…LER">
-	<button label="" label_selected="" name="client_lagmeter" tool_tip="Status for klient lag"/>
-	<text name="client">
-		Klient:
-	</text>
-	<text name="client_text">
-		Normal
-	</text>
-	<button label="" label_selected="" name="network_lagmeter" tool_tip="Network lag status"/>
-	<text name="network">
-		Netværk:
-	</text>
-	<text name="network_text">
-		Normal
-	</text>
-	<button label="" label_selected="" name="server_lagmeter" tool_tip="Status for server lag"/>
-	<text name="server">
-		Server:
-	</text>
-	<text name="server_text">
-		Normal
-	</text>
-	<button label="?" name="server_help"/>
-	<button label="&gt;&gt;" name="minimize"/>
-	<string name="max_title_msg">
+<floater name="floater_lagmeter" title="LAG METER">
+	<floater.string name="max_title_msg">
 		Lag måler
-	</string>
-	<string name="max_width_px">
+	</floater.string>
+	<floater.string name="max_width_px">
 		360
-	</string>
-	<string name="min_title_msg">
+	</floater.string>
+	<floater.string name="min_title_msg">
 		Lag
-	</string>
-	<string name="min_width_px">
+	</floater.string>
+	<floater.string name="min_width_px">
 		90
-	</string>
-	<string name="client_text_msg">
+	</floater.string>
+	<floater.string name="client_text_msg">
 		Klient
-	</string>
-	<string name="client_frame_rate_critical_fps">
+	</floater.string>
+	<floater.string name="client_frame_rate_critical_fps">
 		10
-	</string>
-	<string name="client_frame_rate_warning_fps">
+	</floater.string>
+	<floater.string name="client_frame_rate_warning_fps">
 		15
-	</string>
-	<string name="client_frame_time_window_bg_msg">
+	</floater.string>
+	<floater.string name="client_frame_time_window_bg_msg">
 		Normal, vindue i baggrund
-	</string>
-	<string name="client_frame_time_critical_msg">
+	</floater.string>
+	<floater.string name="client_frame_time_critical_msg">
 		Klients billeder/sek under [CLIENT_FRAME_RATE_CRITICAL]
-	</string>
-	<string name="client_frame_time_warning_msg">
+	</floater.string>
+	<floater.string name="client_frame_time_warning_msg">
 		Klients billeder/sek mellem [CLIENT_FRAME_RATE_CRITICAL] og [CLIENT_FRAME_RATE_WARNING]
-	</string>
-	<string name="client_frame_time_normal_msg">
+	</floater.string>
+	<floater.string name="client_frame_time_normal_msg">
 		Normal
-	</string>
-	<string name="client_draw_distance_cause_msg">
+	</floater.string>
+	<floater.string name="client_draw_distance_cause_msg">
 		Mulig årsag: &apos;Vis afstand&apos; sat for højt i grafik indstillinger
-	</string>
-	<string name="client_texture_loading_cause_msg">
+	</floater.string>
+	<floater.string name="client_texture_loading_cause_msg">
 		Mulig årsag: Billeder hentes
-	</string>
-	<string name="client_texture_memory_cause_msg">
+	</floater.string>
+	<floater.string name="client_texture_memory_cause_msg">
 		Mulig årsag: For mange billeder i hukommelse
-	</string>
-	<string name="client_complex_objects_cause_msg">
+	</floater.string>
+	<floater.string name="client_complex_objects_cause_msg">
 		Mulig årsag: For mange komplekse objekter i scenariet
-	</string>
-	<string name="network_text_msg">
+	</floater.string>
+	<floater.string name="network_text_msg">
 		Netværk
-	</string>
-	<string name="network_packet_loss_critical_pct">
+	</floater.string>
+	<floater.string name="network_packet_loss_critical_pct">
 		10
-	</string>
-	<string name="network_packet_loss_warning_pct">
+	</floater.string>
+	<floater.string name="network_packet_loss_warning_pct">
 		5
-	</string>
-	<string name="network_packet_loss_critical_msg">
+	</floater.string>
+	<floater.string name="network_packet_loss_critical_msg">
 		Forbindelsen mister over [NETWORK_PACKET_LOSS_CRITICAL]% pakker
-	</string>
-	<string name="network_packet_loss_warning_msg">
+	</floater.string>
+	<floater.string name="network_packet_loss_warning_msg">
 		Forbindelsen mister [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% pakker
-	</string>
-	<string name="network_performance_normal_msg">
+	</floater.string>
+	<floater.string name="network_performance_normal_msg">
 		Normal
-	</string>
-	<string name="network_ping_critical_ms">
+	</floater.string>
+	<floater.string name="network_ping_critical_ms">
 		600
-	</string>
-	<string name="network_ping_warning_ms">
+	</floater.string>
+	<floater.string name="network_ping_warning_ms">
 		300
-	</string>
-	<string name="network_ping_critical_msg">
+	</floater.string>
+	<floater.string name="network_ping_critical_msg">
 		Forbindelsens ping tider er over [NETWORK_PING_CRITICAL] ms
-	</string>
-	<string name="network_ping_warning_msg">
+	</floater.string>
+	<floater.string name="network_ping_warning_msg">
 		Forbindelsens ping tider er [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms
-	</string>
-	<string name="network_packet_loss_cause_msg">
+	</floater.string>
+	<floater.string name="network_packet_loss_cause_msg">
 		Muligvis dårlig forbindelse eller &apos;båndbredde&apos; sat for højt i netværksopsætning.
-	</string>
-	<string name="network_ping_cause_msg">
+	</floater.string>
+	<floater.string name="network_ping_cause_msg">
 		Muligvis dårlig forbindelse eller fil delings program.
-	</string>
-	<string name="server_text_msg">
+	</floater.string>
+	<floater.string name="server_text_msg">
 		Server
-	</string>
-	<string name="server_frame_rate_critical_fps">
+	</floater.string>
+	<floater.string name="server_frame_rate_critical_fps">
 		20
-	</string>
-	<string name="server_frame_rate_warning_fps">
+	</floater.string>
+	<floater.string name="server_frame_rate_warning_fps">
 		30
-	</string>
-	<string name="server_single_process_max_time_ms">
+	</floater.string>
+	<floater.string name="server_single_process_max_time_ms">
 		20
-	</string>
-	<string name="server_frame_time_critical_msg">
+	</floater.string>
+	<floater.string name="server_frame_time_critical_msg">
 		Simulator framerate er under [SERVER_FRAME_RATE_CRITICAL]
-	</string>
-	<string name="server_frame_time_warning_msg">
+	</floater.string>
+	<floater.string name="server_frame_time_warning_msg">
 		Simulator framerate er mellem [SERVER_FRAME_RATE_CRITICAL] og [SERVER_FRAME_RATE_WARNING]
-	</string>
-	<string name="server_frame_time_normal_msg">
+	</floater.string>
+	<floater.string name="server_frame_time_normal_msg">
 		Normal
-	</string>
-	<string name="server_physics_cause_msg">
+	</floater.string>
+	<floater.string name="server_physics_cause_msg">
 		Mulig årsag: For mange fysiske objekter
-	</string>
-	<string name="server_scripts_cause_msg">
+	</floater.string>
+	<floater.string name="server_scripts_cause_msg">
 		Mulig årsag: For mange objekter med script
-	</string>
-	<string name="server_net_cause_msg">
+	</floater.string>
+	<floater.string name="server_net_cause_msg">
 		Mulig årsag: For meget netværks trafik
-	</string>
-	<string name="server_agent_cause_msg">
+	</floater.string>
+	<floater.string name="server_agent_cause_msg">
 		Mulig årsag: For mange avatarer i bevægelse i regionen
-	</string>
-	<string name="server_images_cause_msg">
+	</floater.string>
+	<floater.string name="server_images_cause_msg">
 		Mulig årsag: For mange billed udregninger
-	</string>
-	<string name="server_generic_cause_msg">
+	</floater.string>
+	<floater.string name="server_generic_cause_msg">
 		Mulig årsag: Simulator belastning for stor
-	</string>
-	<string name="smaller_label">
+	</floater.string>
+	<floater.string name="smaller_label">
 		&gt;&gt;
-	</string>
-	<string name="bigger_label">
+	</floater.string>
+	<floater.string name="bigger_label">
 		&lt;&lt;
-	</string>
+	</floater.string>
+	<button label="" label_selected="" name="client_lagmeter" tool_tip="Status for klient lag"/>
+	<text name="client">
+		Klient
+	</text>
+	<text name="client_text">
+		Normal
+	</text>
+	<button label="" label_selected="" name="network_lagmeter" tool_tip="Network lag status"/>
+	<text name="network">
+		Netværk
+	</text>
+	<text name="network_text">
+		Normal
+	</text>
+	<button label="" label_selected="" name="server_lagmeter" tool_tip="Status for server lag"/>
+	<text name="server">
+		Server
+	</text>
+	<text name="server_text">
+		Normal
+	</text>
+	<button label="&gt;&gt;" name="minimize" tool_tip="Ændre størrelse"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_lsl_guide.xml b/indra/newview/skins/default/xui/da/floater_lsl_guide.xml
index ebc86c5c732cebf69d225fe9eeb0c9469f54003b..2b008f133ce3b525a8c023d018087ce58c6b3be4 100644
--- a/indra/newview/skins/default/xui/da/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/da/floater_lsl_guide.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="script ed float" title="LSL WIKI">
-	<check_box label="Følg markøreren" name="lock_check" />
-	<combo_box label="LÃ¥s" name="history_combo" left_delta="114" width="70"/>
-	<button label="Tilbage" name="back_btn" />
-	<button label="Frem" name="fwd_btn" />
+	<check_box label="Følg markøreren" name="lock_check"/>
+	<combo_box label="LÃ¥s" left_delta="114" name="history_combo" width="70"/>
+	<button label="Tilbage" name="back_btn"/>
+	<button label="Frem" name="fwd_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_media_settings.xml b/indra/newview/skins/default/xui/da/floater_media_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..67c122b9d586b13ef85ac8ff299a5e17fee44d8e
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_media_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="media_settings" title="MEDIA INDSTILLINGER">
+	<button label="OK" label_selected="OK" name="OK"/>
+	<button label="Annullér" label_selected="Annullér" name="Cancel"/>
+	<button label="Anvend" label_selected="Anvend" name="Apply"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_nearby_chat.xml b/indra/newview/skins/default/xui/da/floater_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ef4e4cbe7e6a78797c85f4a696a7a3565b780066
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_nearby_chat.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="nearby_chat" title="CHAT NÆRVED"/>
diff --git a/indra/newview/skins/default/xui/da/floater_openobject.xml b/indra/newview/skins/default/xui/da/floater_openobject.xml
index 5875b7a967fffeddd3fbf7a34e1ec8e46a5151b8..92fdd1e0a6efb6379f9a067850e87c35f987d366 100644
--- a/indra/newview/skins/default/xui/da/floater_openobject.xml
+++ b/indra/newview/skins/default/xui/da/floater_openobject.xml
@@ -1,10 +1,8 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="objectcontents" title="OBJEKT INDHOLD">
 	<text name="object_name">
 		[DESC]:
 	</text>
-	<button label="Kopiér til beholdning" label_selected="Kopiér til beholdning"
-	     name="copy_to_inventory_button" />
-	<button label="Kopiér og tag på" label_selected="Kopiér og tag på"
-	     name="copy_and_wear_button" />
+	<button label="Kopiér til beholdning" label_selected="Kopiér til beholdning" name="copy_to_inventory_button"/>
+	<button label="Kopiér og tag på" label_selected="Kopiér og tag på" name="copy_and_wear_button"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_outgoing_call.xml b/indra/newview/skins/default/xui/da/floater_outgoing_call.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5c98d9855fa2ed35f1e15ff88c6ec56d8692995e
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_outgoing_call.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="outgoing call" title="KALDER">
+	<floater.string name="localchat">
+		Stemme chat nærved
+	</floater.string>
+	<floater.string name="anonymous">
+		anonym
+	</floater.string>
+	<floater.string name="VoiceInviteP2P">
+		kalder op.
+	</floater.string>
+	<floater.string name="VoiceInviteAdHoc">
+		har sluttet sig til stemmechat med en konference chat.
+	</floater.string>
+	<text name="connecting">
+		Tilslutter til [CALLEE_NAME]
+	</text>
+	<text name="calling">
+		Kalder [CALLEE_NAME]
+	</text>
+	<text name="noanswer">
+		Intet svar.  Prøv igen senere.
+	</text>
+	<text name="leaving">
+		Forlader [CURRENT_CHAT].
+	</text>
+	<button label="Annullér" label_selected="Annullér" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_pay.xml b/indra/newview/skins/default/xui/da/floater_pay.xml
index f39cfa487177e2eb0e96e2268ec9cb9d1377c4d9..b2cdc0bfe78164de6ab59c18f142ea717694268f 100644
--- a/indra/newview/skins/default/xui/da/floater_pay.xml
+++ b/indra/newview/skins/default/xui/da/floater_pay.xml
@@ -1,21 +1,25 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Give Money" title="">
-	<button label="L$1" label_selected="L$1" name="fastpay 1" />
-	<button label="L$5" label_selected="L$5" name="fastpay 5" />
-	<button label="L$10" label_selected="L$10" name="fastpay 10" />
-	<button label="L$20" label_selected="L$20" name="fastpay 20" />
-	<button label="Betal" label_selected="Betal" name="pay btn" />
-	<button label="Annullér" label_selected="Annullér" name="cancel btn" />
-	<text name="payee_label" left="5" width="81">
-		Betal beboer:
+	<string name="payee_group">
+		Betal gruppe
+	</string>
+	<string name="payee_resident">
+		Betal beboer
+	</string>
+	<text left="5" name="payee_label" width="81">
+		Betal:
 	</text>
+	<icon name="icon_person" tool_tip="Person"/>
 	<text name="payee_name">
 		[FIRST] [LAST]
 	</text>
-	<text name="fastpay text">
-		Hurtig betal:
-	</text>
-	<text name="amount text" left="4" >
-		Beløb:
+	<button label="L$1" label_selected="L$1" name="fastpay 1"/>
+	<button label="L$5" label_selected="L$5" name="fastpay 5"/>
+	<button label="L$10" label_selected="L$10" name="fastpay 10"/>
+	<button label="L$20" label_selected="L$20" name="fastpay 20"/>
+	<text left="4" name="amount text">
+		eler vælg beløb:
 	</text>
+	<button label="Betal" label_selected="Betal" name="pay btn"/>
+	<button label="Annullér" label_selected="Annullér" name="cancel btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_pay_object.xml b/indra/newview/skins/default/xui/da/floater_pay_object.xml
index 09e2e3f5d0b496ab473041fc0671bf49bf070c0d..f74e097da29c0b868768c02190fab9924c799ecc 100644
--- a/indra/newview/skins/default/xui/da/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/da/floater_pay_object.xml
@@ -1,30 +1,29 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Give Money" title="">
-	<text name="payee_group">
-		Betal gruppe:
-	</text>
-	<text name="payee_resident">
-		Betal beboer:
-	</text>
+	<string name="payee_group">
+		Betal gruppe
+	</string>
+	<string name="payee_resident">
+		Betal beboer
+	</string>
+	<icon name="icon_person" tool_tip="Person"/>
 	<text name="payee_name">
 		[FIRST] [LAST]
 	</text>
 	<text name="object_name_label">
 		Via objekt:
 	</text>
+	<icon name="icon_object" tool_tip="Objekter"/>
 	<text name="object_name_text">
 		...
 	</text>
-	<text name="fastpay text">
-		Hurtig betal:
-	</text>
+	<button label="L$1" label_selected="L$1" name="fastpay 1"/>
+	<button label="L$5" label_selected="L$5" name="fastpay 5"/>
+	<button label="L$10" label_selected="L$10" name="fastpay 10"/>
+	<button label="L$20" label_selected="L$20" name="fastpay 20"/>
 	<text name="amount text">
-		Beløb:
+		Eller vælg beløb:
 	</text>
-	<button label="L$1" label_selected="L$1" name="fastpay 1" />
-	<button label="L$5" label_selected="L$5" name="fastpay 5" />
-	<button label="L$10" label_selected="L$10" name="fastpay 10" />
-	<button label="L$20" label_selected="L$20" name="fastpay 20" />
-	<button label="Betal" label_selected="Betal" name="pay btn" />
-	<button label="Annullér" label_selected="Annullér" name="cancel btn" />
+	<button label="Betal" label_selected="Betal" name="pay btn"/>
+	<button label="Annullér" label_selected="Annullér" name="cancel btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_event.xml b/indra/newview/skins/default/xui/da/floater_preview_event.xml
index 584085fea0bb568776edd98b56e03bdf1b5b45b3..3e870b58ae5f5f1521db609c91b3ac267ce76a5d 100644
--- a/indra/newview/skins/default/xui/da/floater_preview_event.xml
+++ b/indra/newview/skins/default/xui/da/floater_preview_event.xml
@@ -1,2 +1,6 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="event_preview" title="EVENT INFORMATION" />
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="event_preview" title="EVENT INFORMATION">
+	<floater.string name="Title">
+		Event: [NAME]
+	</floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture.xml
index 0053cb852f7c3fb71d3ad79a3e9f506ddc16505f..bfa3c150a9138d6423be0ac133fdc4f853a094bf 100644
--- a/indra/newview/skins/default/xui/da/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/da/floater_preview_gesture.xml
@@ -1,14 +1,29 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="gesture_preview">
-	<string name="stop_txt">
+	<floater.string name="step_anim">
+		Animation til afspilning:
+	</floater.string>
+	<floater.string name="step_sound">
+		Lyd til afspilning:
+	</floater.string>
+	<floater.string name="step_chat">
+		Sig:
+	</floater.string>
+	<floater.string name="step_wait">
+		Vent:
+	</floater.string>
+	<floater.string name="stop_txt">
 		Stop
-	</string>
-	<string name="preview_txt">
+	</floater.string>
+	<floater.string name="preview_txt">
 		Vis
-	</string>
-	<string name="none_text">
+	</floater.string>
+	<floater.string name="none_text">
 		-- Intet --
-	</string>
+	</floater.string>
+	<floater.string name="Title">
+		Bevægelse: [NAME]
+	</floater.string>
 	<text name="desc_label">
 		Beskrivelse:
 	</text>
@@ -23,33 +38,27 @@
 		Genvejstast:
 	</text>
 	<combo_box label="Ingen" name="modifier_combo" width="60"/>
-	<combo_box label="Ingen" name="key_combo" left_delta="70" width="60"/>
+	<combo_box label="Ingen" left_delta="70" name="key_combo" width="60"/>
 	<text name="library_label">
 		Type:
 	</text>
+	<scroll_list name="library_list"/>
+	<button label="Tilføj &gt;&gt;" name="add_btn"/>
 	<text name="steps_label">
 		Trin:
 	</text>
-	<scroll_list name="library_list">
-		Animation
-Lyd
-Chat
-Vent
-	</scroll_list>
-	<button label="Tilføj &gt;&gt;" name="add_btn"/>
-	<button label="Flyt op" name="up_btn"/>
-	<button label="Flyt ned" name="down_btn"/>
+	<button label="Op" name="up_btn"/>
+	<button label="Ned" name="down_btn"/>
 	<button label="Fjern" name="delete_btn"/>
-	<text name="help_label">
-		Alle trin vil ske samtidigt,
-medmindre du tilføjer vente trin.
-	</text>
 	<radio_group name="animation_trigger_type">
-		<radio_item name="start" label="Start" />
-		<radio_item name="stop" label="Stop" />
+		<radio_item label="Start" name="start"/>
+		<radio_item label="Stop" name="stop"/>
 	</radio_group>
 	<check_box label="Indtil animation er færdig" name="wait_anim_check"/>
 	<check_box label="tid i sekunder" name="wait_time_check"/>
+	<text name="help_label">
+		Alle trin vil ske samtidigt, medmindre du tilføjer vente trin.
+	</text>
 	<check_box label="Aktiv" name="active_check" tool_tip="Aktive bevægelser kan blive aktiveret ved at skrive deress udløser tekst eller ved at trykke på genvejstaste. Bevægelser vil normalt være inaktive hvis der allerede findes en tilsvarende genvejstaste."/>
 	<button label="Vis" name="preview_btn"/>
 	<button label="Gem" name="save_btn"/>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9892a92e4c2dc2520a2d1326c00d9f95e75c659d
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_preview_gesture_info.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="BEVÆGELSE GENVEJ"/>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture_shortcut.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4d4cca1d90a3a51b78d656e29a3fa0260d0384a7
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_preview_gesture_shortcut.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="GENVEJ BEVÆGELSER">
+	<text name="trigger_label">
+		Chat:
+	</text>
+	<text name="key_label">
+		Tastatur:
+	</text>
+	<combo_box label="Intet" name="modifier_combo"/>
+	<combo_box label="Intet" name="key_combo"/>
+	<text name="replace_text" tool_tip="Erstat udløser ord med disse ord. For eksempel uløser &quot;hello&quot; erstat med &quot;hej&quot; vil ændre chat &apos;Jeg ville bare sige hello&apos; til &apos;Jeg ville bare sige hej&apos; samtidig med bevægelsen afspilles!">
+		Erstat:
+	</text>
+	<line_editor name="replace_editor" tool_tip="Erstat udløser ord med disse ord. For eksempel uløser &quot;hello&quot; erstat med &quot;hej&quot; vil ændre chat &apos;Jeg ville bare sige hello&apos; til &apos;Jeg ville bare sige hej&apos; samtidig med bevægelsen afspilles!"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture_steps.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9892a92e4c2dc2520a2d1326c00d9f95e75c659d
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_preview_gesture_steps.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Gesture" title="BEVÆGELSE GENVEJ"/>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_notecard.xml b/indra/newview/skins/default/xui/da/floater_preview_notecard.xml
index 7258824878d7e0c6c6e40f67c00cc744a6d34bac..2ebec4462fa7812c91c44a1bd328f1faaa907baa 100644
--- a/indra/newview/skins/default/xui/da/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/da/floater_preview_notecard.xml
@@ -1,16 +1,22 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="preview notecard" title="NOTE:">
-	<button label="Gem" label_selected="Gem" name="Save"/>
+	<floater.string name="no_object">
+		Kunne ikke finde objekt der indeholder denne note.
+	</floater.string>
+	<floater.string name="not_allowed">
+		Du har ikke rettigheder til at se denne note.
+	</floater.string>
+	<floater.string name="Title">
+		Note: [NAME]
+	</floater.string>
+	<floater.string label="Gem" label_selected="Gem" name="Save">
+		Gem
+	</floater.string>
 	<text name="desc txt">
 		Beskrivelse:
 	</text>
 	<text_editor name="Notecard Editor">
 		Indlæser...
 	</text_editor>
-	<string name="no_object">
-		Kunne ikke finde objekt der indeholder denne note.
-	</string>
-	<string name="not_allowed">
-		Du har ikke tilladelse til at læse denne note.
-	</string>
+	<button label="Gem" label_selected="Gem" name="Save"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_preview_texture.xml b/indra/newview/skins/default/xui/da/floater_preview_texture.xml
index 250659f249f8399763d81fb08273f3ef9c22587a..ab7ddbcc72f629daa27bcf4aa596f3d55f9f4b6c 100644
--- a/indra/newview/skins/default/xui/da/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/da/floater_preview_texture.xml
@@ -1,9 +1,44 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="preview_texture">
+	<floater.string name="Title">
+		Tekstur: [NAME]
+	</floater.string>
+	<floater.string name="Copy">
+		Kopiér til beholdning
+	</floater.string>
 	<text name="desc txt">
 		Beskrivelse:
 	</text>
 	<text name="dimensions">
-		Størrelse: [WIDTH] x [HEIGHT]
+		[WIDTH]px x [HEIGHT]px
 	</text>
+	<combo_box name="combo_aspect_ratio" tool_tip="Forhåndsvisning med et bestemt billedformat">
+		<combo_item name="Unconstrained">
+			Ikke låst
+		</combo_item>
+		<combo_item name="1:1" tool_tip="Typisk valg til gruppe logo eller &quot;Real world&quot; profil billede">
+			1:1
+		</combo_item>
+		<combo_item name="4:3" tool_tip="Typisk valg til din &quot;Second Life Profil&quot; billede">
+			4:3
+		</combo_item>
+		<combo_item name="10:7" tool_tip="Typisk valg til billeder i annoncer, landemærker og søgninger">
+			10:7
+		</combo_item>
+		<combo_item name="3:2" tool_tip="Typisk valg til &quot;Om land&quot; billede">
+			3:2
+		</combo_item>
+		<combo_item name="16:10">
+			16:10
+		</combo_item>
+		<combo_item name="16:9" tool_tip="Typisk valg til favorit billeder i profil">
+			16:9
+		</combo_item>
+		<combo_item name="2:1">
+			2:1
+		</combo_item>
+	</combo_box>
+	<button label="OK" name="keep"/>
+	<button label="Annullér" name="discard"/>
+	<button label="Gem som" name="save_tex_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/da/floater_script_debug_panel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e70a30fa24af183134e2d78048bbf57a39cbc917
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_script_debug_panel.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script" short_title="[ALL SCRIPTS]" title="[ALL SCRIPTS]"/>
diff --git a/indra/newview/skins/default/xui/da/floater_script_preview.xml b/indra/newview/skins/default/xui/da/floater_script_preview.xml
index ede277bbd222750e462ef251ff3a06d3cad0f50f..1e8d869716a6c10ee2a457e370c29054e92faec3 100644
--- a/indra/newview/skins/default/xui/da/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/da/floater_script_preview.xml
@@ -1,5 +1,8 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="preview lsl text" title="SCRIPT: ROTATION SCRIPT">
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview lsl text" title="SCRIPT: ROTATIONS SCRIPT">
+	<floater.string name="Title">
+		Script: [NAME]
+	</floater.string>
 	<text name="desc txt">
 		Beskrivelse:
 	</text>
diff --git a/indra/newview/skins/default/xui/da/floater_script_search.xml b/indra/newview/skins/default/xui/da/floater_script_search.xml
index 62f311be6e9aeea6ac8b2a992fec9f2bf7c12915..f1605cac342711e3dd5c2abff033f71c467b73a2 100644
--- a/indra/newview/skins/default/xui/da/floater_script_search.xml
+++ b/indra/newview/skins/default/xui/da/floater_script_search.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="script search" title="SCRIPT SØGNING">
-	<check_box label="Store/små bogstaver har ingen betydning" name="case_text" />
-	<button label="Søg" label_selected="Søg" name="search_btn" />
-	<button label="Erstat" label_selected="Erstat" name="replace_btn" />
-	<button label="Erstat alle" label_selected="Erstat alle" name="replace_all_btn" />
+	<check_box label="Store/små bogstaver har ingen betydning" name="case_text"/>
+	<button label="Søg" label_selected="Søg" name="search_btn"/>
+	<button label="Erstat" label_selected="Erstat" name="replace_btn"/>
+	<button label="Erstat alle" label_selected="Erstat alle" name="replace_all_btn"/>
 	<text name="txt">
 		Søg
 	</text>
diff --git a/indra/newview/skins/default/xui/da/floater_sell_land.xml b/indra/newview/skins/default/xui/da/floater_sell_land.xml
index fcbe0abe081d769aca50dcb935705b7e780203ab..873e6d799562b3174ce2350eef7d75f3e5357bbf 100644
--- a/indra/newview/skins/default/xui/da/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/da/floater_sell_land.xml
@@ -1,62 +1,65 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="sell land" title="SÆLG LAND">
-    <scroll_container name="profile_scroll">
-    <panel name="scroll_content_panel">
-	<text name="info_parcel_label">
-		Parcel:
-	</text>
-	<text name="info_parcel">
-		PARCEL NAME
-	</text>
-	<text name="info_size_label">
-		Størrelse:
-	</text>
-	<text name="info_size">
-		[AREA] m²
-	</text>
-	<text name="info_action">
-		Sælg denne parcel:
-	</text>
-	<text name="price_label">
-		Sæt en pris:
-	</text>
-	<text name="price_text">
-		Vælg en passende pris for jorden.
-	</text>
-	<text name="price_ld">
-		L$
-	</text>
-	<text name="price_per_m">
-		(L$[PER_METER] pr. kvadratmeter)
-	</text>
-	<text name="sell_to_label">
-		Sælg denne jord til:
-	</text>
-	<text name="sell_to_text">
-		Vælg om du vil sælge til hvem som helst eller en specifik køber.
-	</text>
-	<combo_box name="sell_to">
-		<combo_box.item name="--selectone--" label="Vælg --" />
-		<combo_box.item name="Anyone" label="Alle" />
-		<combo_box.item name="Specificuser:" label="Specifik bruger:" />
-	</combo_box>
-	<button label="Vælg..." name="sell_to_select_agent" />
-	<text name="sell_objects_label">
-		Sælg objekter sammen med jorden?
-	</text>
-	<text name="sell_objects_text">
-		Dine objekter der kan videregives sælges med jorden.
-	</text>
-	<radio_group name="sell_objects">
-		<radio_item name="no" label="Nej, behold ejerskab til objekterne" />
-		<radio_item name="yes" label="Ja, sælg objekter med jorden" />
-	</radio_group>
-	<button label="Vis objekter" name="show_objects" />
-	<text name="nag_message_label">
-		HUSK: Alle salg er endegyldige.
-	</text>
-	<button label="Sæt land til salg" name="sell_btn" />
-	<button label="Annullér" name="cancel_btn" />
-    </panel>
-    </scroll_container>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<text name="info_parcel_label">
+				Parcel:
+			</text>
+			<text name="info_parcel">
+				PARCEL
+			</text>
+			<text name="info_size_label">
+				Størrelse:
+			</text>
+			<text name="info_size">
+				[AREA] m²
+			</text>
+			<text name="info_action">
+				For at sælge:
+			</text>
+			<text name="price_label">
+				1. Sæt en pris:
+			</text>
+			<text name="price_text">
+				Vælg en passende pris for jorden.
+			</text>
+			<text name="price_ld">
+				L$
+			</text>
+			<line_editor name="price">
+				0
+			</line_editor>
+			<text name="price_per_m">
+				(L$[PER_METER] pr. m²)
+			</text>
+			<text name="sell_to_label">
+				2. Sælg denne parcel til:
+			</text>
+			<text name="sell_to_text">
+				Vælg om du vil sælge til hvem som helst eller en specifik køber.
+			</text>
+			<combo_box name="sell_to">
+				<combo_box.item label="- Vælg -" name="--selectone--"/>
+				<combo_box.item label="Enhver" name="Anyone"/>
+				<combo_box.item label="Specifik person:" name="Specificuser:"/>
+			</combo_box>
+			<button label="Vælg" name="sell_to_select_agent"/>
+			<text name="sell_objects_label">
+				3. Sælg objekter sammen med jorden?
+			</text>
+			<text name="sell_objects_text">
+				Objekter der kan vidergives og som tilhører ejer af land på parcel vil skifte ejerskab
+			</text>
+			<radio_group name="sell_objects">
+				<radio_item label="Nej, behold ejerskab til objekter" name="no"/>
+				<radio_item label="Ja, sælg objekter med jorden" name="yes"/>
+			</radio_group>
+			<button label="Vis objekter" name="show_objects"/>
+			<text name="nag_message_label">
+				HUSK: Alle salg er endegyldige.
+			</text>
+			<button label="Sæt land til salg" name="sell_btn"/>
+			<button label="Annullér" name="cancel_btn"/>
+		</panel>
+	</scroll_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_settings_debug.xml b/indra/newview/skins/default/xui/da/floater_settings_debug.xml
index c1429ed3a3634672166844992f7587ebdc1786d3..41cf100d94b3edbc9b5ff70b2bb6c6a4a6b2ca4b 100644
--- a/indra/newview/skins/default/xui/da/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/da/floater_settings_debug.xml
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="settings_debug" title="TEKNISKE INDSTILLINGER">
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="settings_debug" title="DEBUG INDSTILLINGER">
 	<combo_box name="boolean_combo">
-		<combo_box.item name="TRUE" label="TRUE (Valgt)" />
-		<combo_box.item name="FALSE" label="FALSE (Fravalgt)" />
+		<combo_box.item label="SANDT" name="TRUE"/>
+		<combo_box.item label="FALSK" name="FALSE"/>
 	</combo_box>
-	<color_swatch label="Farve" name="color_swatch" />
-	<spinner label="x" name="val_spinner_1" />
-	<spinner label="x" name="val_spinner_2" />
-	<spinner label="x" name="val_spinner_3" />
-	<spinner label="x" name="val_spinner_4" />
-	<button label="Sæt til standard" name="default_btn" />
+	<color_swatch label="Farve" name="val_color_swatch"/>
+	<spinner label="x" name="val_spinner_1"/>
+	<spinner label="x" name="val_spinner_2"/>
+	<spinner label="x" name="val_spinner_3"/>
+	<spinner label="x" name="val_spinner_4"/>
+	<button label="Sæt til standard" name="default_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_snapshot.xml b/indra/newview/skins/default/xui/da/floater_snapshot.xml
index 3eed869db4463c7068ea71a7700bb0ce40554d42..5e8c64e21fee209767695f5ec2178a40ae739c5e 100644
--- a/indra/newview/skins/default/xui/da/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/da/floater_snapshot.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Snapshot" title="SE FOTO">
+<floater name="Snapshot" title="FOTO FORHÃ…NDSVINSNING">
 	<text name="type_label">
 		Hvor skal foto hen?
 	</text>
 	<radio_group label="Snapshot type" name="snapshot_type_radio">
-		<radio_item name="postcard" label="Send via e-mail" />
-		<radio_item name="texture" label="Gem i din beholdning (L$[AMOUNT])" />
-		<radio_item name="local" label="Gem på din computer" />
+		<radio_item label="Send via e-mail" name="postcard"/>
+		<radio_item label="Gem i din beholdning (L$[AMOUNT])" name="texture"/>
+		<radio_item label="Gem på din computer" name="local"/>
 	</radio_group>
 	<text name="file_size_label">
 		Fil størrelse: [SIZE] KB
@@ -15,12 +15,12 @@
 	<button label="Send" name="send_btn"/>
 	<button label="Gem (L$[AMOUNT])" name="upload_btn"/>
 	<flyout_button label="Gem" name="save_btn" tool_tip="Gem billede i på din computer">
-		<flyout_button_item name="save_item" label="Gem"/>
-		<flyout_button_item name="saveas_item" label="Gem som..."/>
+		<flyout_button_item label="Gem" name="save_item"/>
+		<flyout_button_item label="Gem som..." name="saveas_item"/>
 	</flyout_button>
 	<button label="Annullér" name="discard_btn"/>
-	<button label="Mere &gt;&gt;" name="more_btn" tool_tip="Avancerede valg"/>
-	<button label="&lt;&lt; Mindre" name="less_btn" tool_tip="Avancerede valg"/>
+	<button label="Mere &gt;&gt;" name="more_btn" tool_tip="Avancerede muligheder"/>
+	<button label="&lt;&lt; Mindre" name="less_btn" tool_tip="Avancerede muligheder"/>
 	<text name="type_label2">
 		Størrelse
 	</text>
@@ -28,45 +28,45 @@
 		Format
 	</text>
 	<combo_box label="Opløsning" name="postcard_size_combo">
-		<combo_box.item name="CurrentWindow" label="Aktuelle vindue"/>
-		<combo_box.item name="640x480" label="640x480"/>
-		<combo_box.item name="800x600" label="800x600"/>
-		<combo_box.item name="1024x768" label="1024x768"/>
-		<combo_box.item name="Custom" label="Manuel"/>
+		<combo_box.item label="Aktuelle vindue" 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="Manuel" name="Custom"/>
 	</combo_box>
 	<combo_box label="Opløsning" name="texture_size_combo">
-		<combo_box.item name="CurrentWindow" label="Aktuelle vindue"/>
-		<combo_box.item name="Small(128x128)" label="Lille (128x128)"/>
-		<combo_box.item name="Medium(256x256)" label="Medium (256x256)"/>
-		<combo_box.item name="Large(512x512)" label="Stor (512x512)"/>
-		<combo_box.item name="Custom" label="Manuel"/>
+		<combo_box.item label="Aktuelle vindue" name="CurrentWindow"/>
+		<combo_box.item label="Lille (128x128)" name="Small(128x128)"/>
+		<combo_box.item label="Medium (256x256)" name="Medium(256x256)"/>
+		<combo_box.item label="Stor (512x512)" name="Large(512x512)"/>
+		<combo_box.item label="Manuel" name="Custom"/>
 	</combo_box>
 	<combo_box label="Opløsning" name="local_size_combo">
-		<combo_box.item name="CurrentWindow" label="Aktuelle vindue"/>
-		<combo_box.item name="320x240" label="320x240"/>
-		<combo_box.item name="640x480" label="640x480"/>
-		<combo_box.item name="800x600" label="800x600"/>
-		<combo_box.item name="1024x768" label="1024x768"/>
-		<combo_box.item name="1280x1024" label="1280x1024"/>
-		<combo_box.item name="1600x1200" label="1600x1200"/>
-		<combo_box.item name="Custom" label="Manuelt"/>
+		<combo_box.item label="Aktuelle vindue" name="CurrentWindow"/>
+		<combo_box.item label="320x240" name="320x240"/>
+		<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="1280x1024" name="1280x1024"/>
+		<combo_box.item label="1600x1200" name="1600x1200"/>
+		<combo_box.item label="Manuelt" name="Custom"/>
 	</combo_box>
 	<combo_box label="Fil-format" name="local_format_combo" width="76">
-		<combo_box.item name="PNG" label="PNG"/>
-		<combo_box.item name="JPEG" label="JPEG"/>
-		<combo_box.item name="BMP" label="BMP"/>
+		<combo_box.item label="PNG" name="PNG"/>
+		<combo_box.item label="JPEG" name="JPEG"/>
+		<combo_box.item label="BMP" name="BMP"/>
 	</combo_box>
-	<spinner label="Bredde" name="snapshot_width" label_width="41" width="101"/>
-	<spinner label="Højde" name="snapshot_height" label_width="32" width="92" left="117"/>
+	<spinner label="Bredde" label_width="41" name="snapshot_width" width="101"/>
+	<spinner label="Højde" label_width="32" left="117" name="snapshot_height" width="92"/>
 	<check_box label="Fasthold proportioner" name="keep_aspect_check"/>
 	<slider label="Billed-kvalitet" name="image_quality_slider"/>
 	<text name="layer_type_label">
 		Benyt:
 	</text>
 	<combo_box label="Billedlag" name="layer_types">
-		<combo_box.item name="Colors" label="Farver"/>
-		<combo_box.item name="Depth" label="Dybde"/>
-		<combo_box.item name="ObjectMattes" label="Materinger"/>
+		<combo_box.item label="Farver" name="Colors"/>
+		<combo_box.item label="Dybde" name="Depth"/>
+		<combo_box.item label="Materinger" name="ObjectMattes"/>
 	</combo_box>
 	<check_box label="Vis brugerflade på foto" name="ui_check"/>
 	<check_box label="Vis HUD objekter på foto" name="hud_check"/>
diff --git a/indra/newview/skins/default/xui/da/floater_sys_well.xml b/indra/newview/skins/default/xui/da/floater_sys_well.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b5cecf93e950481dadeadec0ba77f0b7df20b4a8
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_sys_well.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sys_well_window" title="BESKEDER">
+	<string name="title_im_well_window">
+		IM SESSIONER
+	</string>
+	<string name="title_notification_well_window">
+		BESKEDER
+	</string>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_telehub.xml b/indra/newview/skins/default/xui/da/floater_telehub.xml
index bf31da95158b7932698638fb77fd49da87b74ee4..5a0e89aa981bbbc26a6e9f1a859e239cfd18ecff 100644
--- a/indra/newview/skins/default/xui/da/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/da/floater_telehub.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="telehub" title="TELEHUB">
 	<text name="status_text_connected">
 		Telehub forbundet til objekt [OBJECT]
@@ -12,17 +12,14 @@
 	<text name="help_text_not_connected">
 		230;lg objekt og klik &apos;Forbind telehub&apos;.
 	</text>
-	<button label="Forbind telehub" name="connect_btn" />
-	<button label="Afslut" name="disconnect_btn" />
+	<button label="Forbind telehub" name="connect_btn"/>
+	<button label="Afslut" name="disconnect_btn"/>
 	<text name="spawn_points_text" width="300">
 		Ankomst punkter (positioner, ikke objekter):
 	</text>
-	<button label="Tilføj punkt" name="add_spawn_point_btn" />
-	<button label="Fjern punkt" name="remove_spawn_point_btn" />
+	<button label="Tilføj punkt" name="add_spawn_point_btn"/>
+	<button label="Fjern punkt" name="remove_spawn_point_btn"/>
 	<text name="spawn_point_help">
-		Vælg objekt og klik på &apos;Tilføj punkt&apos;for at angive 
-position. Du kan derefter flytte eller slette 
-objektet. Positioner er i forhold til telehub center.
-Vælg emne i listen for at vise position i verden.
+		Vælg objekt og klik på &apos;Tilføj punkt&apos; for at angive position. Du kan derefter flytte eller slette objektet. Positioner er i forhold til telehub center. Vælg emne i listen for at vise position i verden.
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/floater_top_objects.xml b/indra/newview/skins/default/xui/da/floater_top_objects.xml
index 0cfbe77def744c6feb682431c28541b7e3fefcd0..3f19350e30345e6c94850f3485f9eec78003120b 100644
--- a/indra/newview/skins/default/xui/da/floater_top_objects.xml
+++ b/indra/newview/skins/default/xui/da/floater_top_objects.xml
@@ -1,33 +1,33 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="top_objects" title="INDLÆSER...">
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="top_objects" title="Top objekter">
 	<text name="title_text">
 		Henter...
 	</text>
 	<scroll_list name="objects_list">
-		<column label="Point" name="score" />
-		<column label="Navn" name="name" />
-		<column label="Ejer" name="owner" />
-		<column label="Lokation" name="location" />
-		<column label="Tid" name="time" />
-		<column label="Mono tid" name="mono_time" />
+		<column label="Point" name="score"/>
+		<column label="Navn" name="name"/>
+		<column label="Ejer" name="owner"/>
+		<column label="Lokation" name="location"/>
+		<column label="Tid" name="time"/>
+		<column label="Mono tid" name="mono_time"/>
 	</scroll_list>
 	<text name="id_text">
 		Objekt ID:
 	</text>
-	<button label="Vis pejlelys" name="show_beacon_btn" />
+	<button label="Vis pejlelys" name="show_beacon_btn"/>
 	<text name="obj_name_text">
 		Objekt navn:
 	</text>
-	<button label="Filter" name="filter_object_btn" />
+	<button label="Filter" name="filter_object_btn"/>
 	<text name="owner_name_text">
-		Ejers navn:
+		Ejer:
 	</text>
-	<button label="Filter" name="filter_owner_btn" />
-	<button label="Returnér valgte" name="return_selected_btn" />
-	<button label="Returnér alle" name="return_all_btn" />
-	<button label="Afbryd valgte" name="disable_selected_btn" />
-	<button label="Afbryd alle" name="disable_all_btn" />
-	<button label="Genopfrisk" name="refresh_btn" />
+	<button label="Filter" name="filter_owner_btn"/>
+	<button label="Returnér valgte" name="return_selected_btn"/>
+	<button label="Returnér alle" name="return_all_btn"/>
+	<button label="Afbryd valgte" name="disable_selected_btn"/>
+	<button label="Afbryd alle" name="disable_all_btn"/>
+	<button label="Genopfrisk" name="refresh_btn"/>
 	<string name="top_scripts_title">
 		Mest krævende scripts
 	</string>
diff --git a/indra/newview/skins/default/xui/da/floater_tos.xml b/indra/newview/skins/default/xui/da/floater_tos.xml
index 9a348ca7bf8d12e446d1acdd7309b7f2750a18c4..77906f0f46c9ea7ff243e2fab5846e26adf5553f 100644
--- a/indra/newview/skins/default/xui/da/floater_tos.xml
+++ b/indra/newview/skins/default/xui/da/floater_tos.xml
@@ -1,11 +1,10 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="modal container" title="">
-	<button label="Fortsæt" label_selected="Fortsæt" name="Continue" />
-	<button label="Annullér" label_selected="Annullér" name="Cancel" />
-	<check_box label="Jeg accepterer vilkårene for brug af tjenesten" name="agree_chk" />
+	<button label="Fortsæt" label_selected="Fortsæt" name="Continue"/>
+	<button label="Annullér" label_selected="Annullér" name="Cancel"/>
+	<check_box label="Jeg accepterer vilkårene for brug af tjenesten" name="agree_chk"/>
 	<text name="tos_heading">
-		Læs venligst de almindelige bestemmelser og vilkår igennem, for at fortsætte til [SECOND_LIFE] 
-skal du acceptere vilkårene.
+		Læs venligst de almindelige bestemmelser og vilkår igennem, for at fortsætte til [SECOND LIFE] skal du acceptere vilkårene.
 	</text>
 	<text_editor name="tos_text">
 		TOS_TEXT
diff --git a/indra/newview/skins/default/xui/da/floater_water.xml b/indra/newview/skins/default/xui/da/floater_water.xml
index 63880b4a6902feeff834d18b443653e486552163..103feaa879454316f284257f4883cd7cbcdb772c 100644
--- a/indra/newview/skins/default/xui/da/floater_water.xml
+++ b/indra/newview/skins/default/xui/da/floater_water.xml
@@ -1,32 +1,32 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Water Floater" title="AVANCERET OPSÆTNING AF VAND">
 	<text name="KeyFramePresetsText">
 		Vand opsætninger:
 	</text>
-	<button label="Ny" label_selected="Ny" name="WaterNewPreset" />
-	<button label="Gem" label_selected="Gem" name="WaterSavePreset" />
-	<button label="Slet" label_selected="Slet" name="WaterDeletePreset" />
+	<button label="Ny" label_selected="Ny" name="WaterNewPreset"/>
+	<button label="Gem" label_selected="Gem" name="WaterSavePreset"/>
+	<button label="Slet" label_selected="Slet" name="WaterDeletePreset"/>
 	<tab_container name="Water Tabs">
 		<panel label="Opsætning" name="Settings">
 			<text name="BHText">
 				Vandtåge farve
 			</text>
-			<button label="?" name="WaterFogColorHelp" />
-			<color_swatch label="" name="WaterFogColor" tool_tip="Click to open Color Picker" />
+			<button label="?" name="WaterFogColorHelp"/>
+			<color_swatch label="" name="WaterFogColor" tool_tip="Klik for at åbne farvevælger"/>
 			<text name="WaterFogDensText">
 				Tåge tæthedskarakteristik
 			</text>
-			<button label="?" name="WaterFogDensityHelp" />
-			<slider label="" name="WaterFogDensity" />
+			<button label="?" name="WaterFogDensityHelp"/>
+			<slider label="" name="WaterFogDensity"/>
 			<text name="WaterUnderWaterFogModText">
 				Tilretning undervandståge
 			</text>
-			<button label="?" name="WaterUnderWaterFogModHelp" />
-			<slider label="" name="WaterUnderWaterFogMod" />
+			<button label="?" name="WaterUnderWaterFogModHelp"/>
+			<slider label="" name="WaterUnderWaterFogMod"/>
 			<text name="BDensText">
 				Lille bølge reflektionsskala
 			</text>
-			<button label="?" name="WaterNormalScaleHelp" />
+			<button label="?" name="WaterNormalScaleHelp"/>
 			<text name="BHText2">
 				1
 			</text>
@@ -36,65 +36,65 @@
 			<text name="BHText4">
 				3
 			</text>
-			<slider label="" name="WaterNormalScaleX" />
-			<slider label="" name="WaterNormalScaleY" />
-			<slider label="" name="WaterNormalScaleZ" />
+			<slider label="" name="WaterNormalScaleX"/>
+			<slider label="" name="WaterNormalScaleY"/>
+			<slider label="" name="WaterNormalScaleZ"/>
 			<text name="HDText">
 				Spredningsskala
 			</text>
-			<button label="?" name="WaterFresnelScaleHelp" />
-			<slider label="" name="WaterFresnelScale" />
+			<button label="?" name="WaterFresnelScaleHelp"/>
+			<slider label="" name="WaterFresnelScale"/>
 			<text name="FresnelOffsetText">
 				Spredning offset
 			</text>
-			<button label="?" name="WaterFresnelOffsetHelp" />
-			<slider label="" name="WaterFresnelOffset" />
+			<button label="?" name="WaterFresnelOffsetHelp"/>
+			<slider label="" name="WaterFresnelOffset"/>
 			<text name="DensMultText">
 				Lysbrydning fra oven
 			</text>
-			<button label="?" name="WaterScaleAboveHelp" />
-			<slider label="" name="WaterScaleAbove" />
+			<button label="?" name="WaterScaleAboveHelp"/>
+			<slider label="" name="WaterScaleAbove"/>
 			<text name="WaterScaleBelowText">
 				Lysbrydning fra neden
 			</text>
-			<button label="?" name="WaterScaleBelowHelp" />
-			<slider label="" name="WaterScaleBelow" />
+			<button label="?" name="WaterScaleBelowHelp"/>
+			<slider label="" name="WaterScaleBelow"/>
 			<text name="MaxAltText">
 				Udviskning
 			</text>
-			<button label="?" name="WaterBlurMultiplierHelp" />
-			<slider label="" name="WaterBlurMult" />
+			<button label="?" name="WaterBlurMultiplierHelp"/>
+			<slider label="" name="WaterBlurMult"/>
 		</panel>
 		<panel label="Billede" name="Waves">
 			<text name="BHText">
 				Retning for store bølger
 			</text>
-			<button label="?" name="WaterWave1Help" />
+			<button label="?" name="WaterWave1Help"/>
 			<text name="WaterWave1DirXText">
 				X
 			</text>
 			<text name="WaterWave1DirYText">
 				Y
 			</text>
-			<slider label="" name="WaterWave1DirX" />
-			<slider label="" name="WaterWave1DirY" />
+			<slider label="" name="WaterWave1DirX"/>
+			<slider label="" name="WaterWave1DirY"/>
 			<text name="BHText2">
 				Retning for små bølger
 			</text>
-			<button label="?" name="WaterWave2Help" />
+			<button label="?" name="WaterWave2Help"/>
 			<text name="WaterWave2DirXText">
 				X
 			</text>
 			<text name="WaterWave2DirYText">
 				Y
 			</text>
-			<slider label="" name="WaterWave2DirX" />
-			<slider label="" name="WaterWave2DirY" />
+			<slider label="" name="WaterWave2DirX"/>
+			<slider label="" name="WaterWave2DirY"/>
 			<text name="BHText3">
 				Tekstur map
 			</text>
-			<button label="?" name="WaterNormalMapHelp" />
-			<texture_picker label="" name="WaterNormalMap" />
+			<button label="?" name="WaterNormalMapHelp"/>
+			<texture_picker label="" name="WaterNormalMap"/>
 		</panel>
 	</tab_container>
 	<string name="WLDefaultWaterNames">
diff --git a/indra/newview/skins/default/xui/da/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/da/floater_whitelist_entry.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d2f618579d8b8ae37d4c137619c8da5ec9f130ef
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/floater_whitelist_entry.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="whitelist_entry">
+	<text name="media_label">
+		Indtast en URL eller et URL mønster for at tilføje til listen med godkendte domæner
+	</text>
+	<line_editor name="whitelist_entry" tool_tip="Indtast en URL eller et URL mønster for at godkende side(r)"/>
+	<button label="OK" name="ok_btn"/>
+	<button label="Annullér" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/inspect_object.xml b/indra/newview/skins/default/xui/da/inspect_object.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8cbcf6cac832662db79f854ed381cfd48519d9cc
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/inspect_object.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Not can_close / no title to avoid window chrome
+  Single instance - only have one at a time, recycle it each spawn
+-->
+<floater name="inspect_object">
+	<string name="Creator">
+		Af [CREATOR]
+	</string>
+	<string name="CreatorAndOwner">
+		af [CREATOR]
+ejer [OWNER]
+	</string>
+	<string name="Price">
+		L$[AMOUNT]
+	</string>
+	<string name="PriceFree">
+		Gratis!
+	</string>
+	<string name="Touch">
+		Berør
+	</string>
+	<string name="Sit">
+		Sid
+	</string>
+	<button label="Køb" name="buy_btn"/>
+	<button label="Betal" name="pay_btn"/>
+	<button label="Tag kopi" name="take_free_copy_btn"/>
+	<button label="Berør" name="touch_btn"/>
+	<button label="Sid" name="sit_btn"/>
+	<button label="Ã…ben" name="open_btn"/>
+	<icon name="secure_browsing" tool_tip="Sikker Browsing"/>
+	<button label="Mere" name="more_info_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/da/mime_types_linux.xml b/indra/newview/skins/default/xui/da/mime_types_linux.xml
new file mode 100644
index 0000000000000000000000000000000000000000..69a0fb23f6c6d98363c486d8264ad99c9b2f7a2b
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/mime_types_linux.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Web indhold
+		</label>
+		<tooltip name="web_tooltip">
+			Dette sted har ikke noget web indhold
+		</tooltip>
+		<playtip name="web_playtip">
+			Vis web indhold
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			Film
+		</label>
+		<tooltip name="movie_tooltip">
+			Der er en film der kan afspilles her
+		</tooltip>
+		<playtip name="movie_playtip">
+			Afspil film
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			Billede
+		</label>
+		<tooltip name="image_tooltip">
+			Der er et billede på dette sted
+		</tooltip>
+		<playtip name="image_playtip">
+			Vis stedets billede
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			Lyd
+		</label>
+		<tooltip name="audio_tooltip">
+			Der er lyd på dette sted
+		</tooltip>
+		<playtip name="audio_playtip">
+			Afspil lyden for dette sted
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			Realtids streaming
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- Ingen -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- Ingen -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			Lyd
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			Video
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			Billede
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			Film (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Ogg Lyd/Video
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			PDF Dokument
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Postscript Dokument
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			Rich Text (RTF)
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			Synchronized Multimedia Integration Language (SMIL)
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Hjemmeside (XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			Macromedia Director
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			Lyd (MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			Lyd (MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			Lyd (AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			Lyd (WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			Billede (BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			Billede (GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			Billede (JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			Billede (PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			Billede (SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			Billede (TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Hjemmeside
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			Tekst
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			Film (MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			Film (MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			Film (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			Film (Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			Film (Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			Film (AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/da/panel_active_object_row.xml b/indra/newview/skins/default/xui/da/panel_active_object_row.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9c27ea7fe2e7db8017d8f17d614d3a1a7f4bd8d7
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_active_object_row.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_activeim_row">
+	<string name="unknown_obj">
+		Ukendt objekt
+	</string>
+	<text name="object_name">
+		Unavngivet objekt
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ab2e7a6e31e464cba4b22578a3f6a915fa3d1e75
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+	<panel name="panel_call_buttons">
+		<button label="Opkald" name="call_btn"/>
+		<button label="Forlad samtale" name="end_call_btn"/>
+		<button label="Stemmekontroller" name="voice_ctrls_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_bottomtray.xml b/indra/newview/skins/default/xui/da/panel_bottomtray.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2085840bb5923b133d191dced05e5f334a2c169c
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_bottomtray.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="bottom_tray">
+	<string name="SpeakBtnToolTip">
+		Slukker/tænder mikrofon
+	</string>
+	<string name="VoiceControlBtnToolTip">
+		Skjuler/viser stemme kontrol panel
+	</string>
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="gesture_panel">
+			<gesture_combo_box label="Bevægelse" name="Gesture" tool_tip="Skjuler/viser bevægelser"/>
+		</layout_panel>
+		<layout_panel name="movement_panel">
+			<button label="Flyt" name="movement_btn" tool_tip="Vis/skjul bevægelseskontroller"/>
+		</layout_panel>
+		<layout_panel name="cam_panel">
+			<button label="Vis" name="camera_btn" tool_tip="Vis/Skjul kamerakontroller"/>
+		</layout_panel>
+		<layout_panel name="snapshot_panel">
+			<button label="" name="snapshots" tool_tip="Tag foto"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_alpha.xml b/indra/newview/skins/default/xui/da/panel_edit_alpha.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3826e8a2282bba19a0687fa31c85489948a440d9
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_alpha.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_alpha_panel">
+	<panel name="avatar_alpha_color_panel">
+		<texture_picker label="Alpha - nedre" name="Lower Alpha" tool_tip="Klik for at vælge et billede"/>
+		<texture_picker label="Alpha - øvre" name="Upper Alpha" tool_tip="Klik for at vælge et billede"/>
+		<texture_picker label="Alpha - hoved" name="Head Alpha" tool_tip="Klik for at vælge et billede"/>
+		<texture_picker label="Alpha - øje" name="Eye Alpha" tool_tip="Klik for at vælge et billede"/>
+		<texture_picker label="Alpha - hår" name="Hair Alpha" tool_tip="Klik for at vælge et billede"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_eyes.xml b/indra/newview/skins/default/xui/da/panel_edit_eyes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9c0d77c37042a6eca40f760bfc4f3a9b7666679f
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_eyes.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_eyes_panel">
+	<panel name="avatar_eye_color_panel">
+		<texture_picker label="Iris" name="Iris" tool_tip="Klik for at vælge billede"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="eyes_main_tab" title="Øjne"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_gloves.xml b/indra/newview/skins/default/xui/da/panel_edit_gloves.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1d3ba061bc604f72197ff1c0d59b3c7f445e62ea
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_gloves.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_gloves_panel">
+	<panel name="avatar_gloves_color_panel">
+		<texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge bilede"/>
+		<color_swatch label="Farve/nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="gloves_main_tab" title="Handsker"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_jacket.xml b/indra/newview/skins/default/xui/da/panel_edit_jacket.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4c9973c0bdce57429d2f662b307e84ebe69d8dc0
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_jacket.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_jacket_panel">
+	<panel name="avatar_jacket_color_panel">
+		<texture_picker label="Stof foroven" name="Upper Fabric" tool_tip="Klik for at vælge et billede"/>
+		<texture_picker label="Stof forneden" name="Lower Fabric" tool_tip="Klik for at vælge et billede"/>
+		<color_swatch label="Farve/nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="jacket_main_tab" title="Jakke"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_pants.xml b/indra/newview/skins/default/xui/da/panel_edit_pants.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bcb14502580b529ed4ae9f1bd9ea1391dfa1a0d9
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_pants.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_pants_panel">
+	<panel name="avatar_pants_color_panel">
+		<texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et bilede"/>
+		<color_swatch label="Farve/Nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="pants_main_tab" title="Bukser"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_pick.xml b/indra/newview/skins/default/xui/da/panel_edit_pick.xml
new file mode 100644
index 0000000000000000000000000000000000000000..41db2be5e8db6e3653d80a777822caa8cc4adfed
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_pick.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Redigér Pick" name="panel_edit_pick">
+	<text name="title">
+		Redigér favorit
+	</text>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<icon label="" name="edit_icon" tool_tip="Klik for at vælge billede"/>
+			<text name="Name:">
+				Titel:
+			</text>
+			<text name="description_label">
+				Beskrivelse:
+			</text>
+			<text name="location_label">
+				Lokation:
+			</text>
+			<text name="pick_location">
+				henter...
+			</text>
+			<button label="Sæt til nuværende lokation" name="set_to_curr_location_btn"/>
+		</panel>
+	</scroll_container>
+	<panel label="bottom_panel" name="bottom_panel">
+		<button label="Gem [WHAT]" name="save_changes_btn"/>
+		<button label="Annullér" name="cancel_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_shoes.xml b/indra/newview/skins/default/xui/da/panel_edit_shoes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..54a0cc01a492b5688d38dec01c3c668cb8ae87ba
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_shoes.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shoes_panel">
+	<panel name="avatar_shoes_color_panel">
+		<texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/>
+		<color_swatch label="Farve/nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="shoes_main_tab" title="Sko"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_skin.xml b/indra/newview/skins/default/xui/da/panel_edit_skin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..46dce354a9e0c56f3e28944c2fda0eacbdf46a3c
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_skin.xml
@@ -0,0 +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="Hoved tatoveringer" name="Head Tattoos" tool_tip="Klik for at vælge et bilede"/>
+		<texture_picker label="Øvre tatoveringer" name="Upper Tattoos" tool_tip="Klik for at vælge et bilede"/>
+		<texture_picker label="Nedre tatoveringer" name="Lower Tattoos" tool_tip="Klik for at vælge et bilede"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="skin_color_tab" title="Hudfarve"/>
+		<accordion_tab name="skin_face_tab" title="Ansigtsdetaljer"/>
+		<accordion_tab name="skin_makeup_tab" title="Makeup"/>
+		<accordion_tab name="skin_body_tab" title="Kropsdetaljer"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_socks.xml b/indra/newview/skins/default/xui/da/panel_edit_socks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6ef6dad86c70f91bae6d84b748717a9585d08abc
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_socks.xml
@@ -0,0 +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="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/>
+		<color_swatch label="Farve/Nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="socks_main_tab" title="Strømper"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_underpants.xml b/indra/newview/skins/default/xui/da/panel_edit_underpants.xml
new file mode 100644
index 0000000000000000000000000000000000000000..de52146e2967bc368c15864d7318035596906acd
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_underpants.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_underpants_panel">
+	<panel name="avatar_underpants_color_panel">
+		<texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge bilede"/>
+		<color_swatch label="Farve/nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="underpants_main_tab" title="Underbukser"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/da/panel_edit_undershirt.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6c2e1f5833228c39a478adb65657acdbc82d3545
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_undershirt.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_undershirt_panel">
+	<panel name="avatar_undershirt_color_panel">
+		<texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge bilede"/>
+		<color_swatch label="Farve/nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/>
+	</panel>
+	<accordion name="wearable_accordion">
+		<accordion_tab name="undershirt_main_tab" title="Undertrøje"/>
+	</accordion>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_edit_wearable.xml b/indra/newview/skins/default/xui/da/panel_edit_wearable.xml
new file mode 100644
index 0000000000000000000000000000000000000000..12bc120c45b2c5bcb8dd938ecfc765edc373b5d7
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_edit_wearable.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Kan bæres" name="panel_edit_wearable">
+	<string name="edit_shape_title">
+		Redigerer kropsbygning
+	</string>
+	<string name="edit_skin_title">
+		Redigerer hud
+	</string>
+	<string name="edit_hair_title">
+		Redigerer hår
+	</string>
+	<string name="edit_eyes_title">
+		Redigerer øjne
+	</string>
+	<string name="edit_shirt_title">
+		Redigerer trøje
+	</string>
+	<string name="edit_pants_title">
+		Redigerer bukser
+	</string>
+	<string name="edit_shoes_title">
+		Redigerer sko
+	</string>
+	<string name="edit_socks_title">
+		Redigerer strømper
+	</string>
+	<string name="edit_jacket_title">
+		Redigerer jakke
+	</string>
+	<string name="edit_skirt_title">
+		Redigerer nederdel
+	</string>
+	<string name="edit_gloves_title">
+		Redigerer handsker
+	</string>
+	<string name="edit_undershirt_title">
+		Redigerer undertrøje
+	</string>
+	<string name="edit_underpants_title">
+		Redigerer underbukser
+	</string>
+	<string name="edit_alpha_title">
+		Redigerer Alpha maske
+	</string>
+	<string name="edit_tattoo_title">
+		Redigerer tatovering
+	</string>
+	<string name="shape_desc_text">
+		Kropsbygning:
+	</string>
+	<string name="skin_desc_text">
+		Hud:
+	</string>
+	<string name="hair_desc_text">
+		HÃ¥r:
+	</string>
+	<string name="eyes_desc_text">
+		Øjne:
+	</string>
+	<string name="shirt_desc_text">
+		Trøje:
+	</string>
+	<string name="pants_desc_text">
+		Bukser:
+	</string>
+	<string name="shoes_desc_text">
+		Sko:
+	</string>
+	<string name="socks_desc_text">
+		Strømper:
+	</string>
+	<string name="jacket_desc_text">
+		Jakke:
+	</string>
+	<string name="skirt_skirt_desc_text">
+		Nederdel:
+	</string>
+	<string name="gloves_desc_text">
+		Handsker:
+	</string>
+	<string name="undershirt_desc_text">
+		Undertrøje:
+	</string>
+	<string name="underpants_desc_text">
+		Underbukser:
+	</string>
+	<string name="alpha_desc_text">
+		Alpha maske:
+	</string>
+	<string name="tattoo_desc_text">
+		Tatovering:
+	</string>
+	<text name="edit_wearable_title" value="Redigerer kropsbygning"/>
+	<panel label="Trøje" name="wearable_type_panel">
+		<text name="description_text" value="Kropsbygning:"/>
+	</panel>
+	<panel name="button_panel">
+		<button label="Gem som" name="save_as_button"/>
+		<button label="Vend tilbage" name="revert_button"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_friends.xml b/indra/newview/skins/default/xui/da/panel_friends.xml
index 2644b809686406f1dd5fc1668023f1642c281c5e..a41eaf20c19e750007204593101e44e1e3e45e1c 100644
--- a/indra/newview/skins/default/xui/da/panel_friends.xml
+++ b/indra/newview/skins/default/xui/da/panel_friends.xml
@@ -1,26 +1,20 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="friends">
 	<string name="Multiple">
-		Flere venner...
+		Flere venner
 	</string>
-	<scroll_list name="friend_list"
-	     tool_tip="Hold Shift eller Ctrl nede imens du klikker for at vælge flere venner">
-		<column name="icon_online_status" tool_tip="Online status" />
-		<column label="Name" name="friend_name" tool_tip="Navn" />
-		<column name="icon_visible_online" tool_tip="Venner kan se at du er online" />
-		<column name="icon_visible_map" tool_tip="Venner kan finde dig på kortet" />
-		<column name="icon_edit_mine"
-		     tool_tip="Venner kan rette i, slette eller tage dine objekter" />
-		<column name="icon_edit_theirs" tool_tip="Du kan rette i denne vens objekter" />
+	<scroll_list name="friend_list" tool_tip="Hold Shift eller Ctrl nede imens du klikker for at vælge flere venner">
+		<column name="icon_online_status" tool_tip="Online status"/>
+		<column label="Name" name="friend_name" tool_tip="Navn"/>
+		<column name="icon_visible_online" tool_tip="Venner kan se at du er online"/>
+		<column name="icon_visible_map" tool_tip="Venner kan finde dig på kortet"/>
+		<column name="icon_edit_mine" tool_tip="Venner kan rette i, slette eller tage dine objekter"/>
+		<column name="icon_edit_theirs" tool_tip="Du kan rette i denne vens objekter"/>
 	</scroll_list>
-	<button label="IM" name="im_btn" tool_tip="Skriv en personlig besked (IM)" />
-	<button label="Profil" name="profile_btn"
-	     tool_tip="Vis billede, grupper og anden information" />
-	<button label="Teleport..." name="offer_teleport_btn"
-	     tool_tip="Tilbyd denne ven at blive teleporteret til din nuværende position" />
-	<button label="Betal..." name="pay_btn"
-	     tool_tip="Giv Linden dollars (L$) til denne ven" />
-	<button label="Fjern..." name="remove_btn"
-	     tool_tip="Fjern denne beboer fra din venneliste" />
-	<button label="Tilføj..." name="add_btn" tool_tip="Tilbyd venskab til denne beboer" />
+	<button label="IM" name="im_btn" tool_tip="Skriv en personlig besked (IM)"/>
+	<button label="Profil" name="profile_btn" tool_tip="Vis billede, grupper og anden information"/>
+	<button label="Teleport" name="offer_teleport_btn" tool_tip="Tilbyd denne ven at blive teleporteret til din nuværende position"/>
+	<button label="Betal" name="pay_btn" tool_tip="Giv Linden dollars (L$) til denne ven"/>
+	<button label="Fjern" name="remove_btn" tool_tip="Fjern denne beboer fra din venneliste"/>
+	<button label="Tilføj" name="add_btn" tool_tip="Tilbyd venskab til denne beboer"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_control_panel.xml b/indra/newview/skins/default/xui/da/panel_group_control_panel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1db2db45af285dec62cd31f897baf6e4f01bb3c7
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_group_control_panel.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+	<button label="Group Profile" name="group_info_btn"/>
+	<panel name="panel_call_buttons">
+		<button label="Opkaldsgruppe" name="call_btn"/>
+		<button label="Forlad samtale" name="end_call_btn"/>
+		<button label="Kontroller for åben stemmechat" name="voice_ctrls_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_general.xml b/indra/newview/skins/default/xui/da/panel_group_general.xml
index 4e98ca2bc2b66cbd1901bfe9aa11a6343296d209..ec957e60942134e121d39f1d81f5531ba5c35ebb 100644
--- a/indra/newview/skins/default/xui/da/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/da/panel_group_general.xml
@@ -1,72 +1,35 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Generelt" name="general_tab">
-	<string name="help_text">
-		Generel-fanen indeholder generel information om denne gruppe, en liste med ejere og synlige medlemmer, generel-gruppeindstillinger og medlemsmuligheder.
-
-Bevæg din mus over mulighederne for mere hjælp.
-	</string>
-	<string name="group_info_unchanged">
-		Generel gruppeinformation er ændret.
-	</string>
-	<button label="?" label_selected="?" name="help_button"/>
-	<line_editor label="Indtast nyt gruppenavn her" name="group_name_editor"/>
-	<text name="group_name">
-		Skriv det nye gruppenavn her
-	</text>
-	<text name="prepend_founded_by">
-		Grundlagt af
-	</text>
-	<text name="founder_name" left_delta="70" >
-		(venter)
-	</text>
-	<text name="group_charter_label">
-		Gruppens formål
-	</text>
-	<texture_picker label="Gruppe distinktioner" name="insignia" tool_tip="Klik for at vælge et billede"/>
+	<panel.string name="help_text">
+		Generelt-fanen indeholder generel information om denne gruppe, en liste med ejere og synlige medlemmer, generel-gruppeindstillinger og medlemsmuligheder. Bevæg din mus over mulighederne for mere hjælp.
+	</panel.string>
+	<panel.string name="group_info_unchanged">
+		Generel gruppeinformation er ændret
+	</panel.string>
+	<panel.string name="incomplete_member_data_str">
+		Henter medlemsinformationer
+	</panel.string>
 	<text_editor name="charter">
 		Gruppens formål
 	</text_editor>
-	<button label="Tilmeld (L$0)" label_selected="Tilmeld (L$0)" name="join_button"/>
-	<button label="Detaljeret visning" label_selected="Detaljeret visning" name="info_button"/>
-	<text name="text_owners_and_visible_members">
-		Ejere &amp; synlige medlemmer
-	</text>
-	<text name="text_owners_are_shown_in_bold">
-		(Ejere er vist med fed skrift)
-	</text>
 	<name_list name="visible_members">
-		<name_list.columns label="Medlemsnavn" name="name"/>
+		<name_list.columns label="Medlem" name="name"/>
 		<name_list.columns label="Titel" name="title"/>
-		<name_list.columns label="Senest på d." name="online"/>
 	</name_list>
-	<text name="text_group_preferences">
-		Gruppeindstillinger
+	<text name="active_title_label">
+		Min titel
 	</text>
+	<combo_box name="active_title" tool_tip="Angiver den titel der vises i din avatars navnefelt, når denne gruppe er aktiv"/>
+	<check_box label="Modtag gruppeinformationer" name="receive_notices" tool_tip="Angiver om du vil modtage informationer fra denne gruppe. Fjern markeringen i boksen hvis gruppen spammer dig."/>
+	<check_box label="Vis gruppen i min profil" name="list_groups_in_profile" tool_tip="Angiver om du vil vise denne gruppe i dine profilinformationer"/>
 	<panel name="preferences_container">
-		<check_box label="Vis i søgning" name="show_in_group_list" tool_tip="Lad folk se denne gruppe i søgeresultater."/>
 		<check_box label="Ã…ben tilmelding" name="open_enrollement" tool_tip="Angiver om denne gruppe tillader nye medlemmer at tilmelde sig, uden de er inviteret."/>
-		<check_box label="Tilmeldingsgebyr:" name="check_enrollment_fee" tool_tip="Angiver om der kræves et gebyr, for at tilmelde sig gruppen."/>
-		<spinner name="spin_enrollment_fee" tool_tip="Nye medlemmer skal betale dette gebyr for at tilmelde sig gruppen, når Tilmeldingsgebyr er valgt." width="60" left_delta="130"/>
+		<check_box label="Tilmeldingsgebyr" name="check_enrollment_fee" tool_tip="Angiver om der kræves et gebyr, for at tilmelde sig gruppen"/>
+		<spinner label="L$" left_delta="130" name="spin_enrollment_fee" tool_tip="Nye medlemmer skal betale dette gebyr for at tilmelde sig gruppen, når &quot;Tilmeldingsgebyr&quot; er valgt." width="60"/>
 		<combo_box name="group_mature_check" tool_tip="Angiver om din gruppes information anses som &apos;mature&apos;." width="150">
-			<combo_box.item name="select_mature" label="- Vælg indholdsrating -"/>
-			<combo_box.item name="mature" label="Mature indhold"/>
-			<combo_box.item name="pg" label="PG indhold"/>
+			<combo_box.item label="PG indhold" name="pg"/>
+			<combo_box.item label="Mature indhold" name="mature"/>
 		</combo_box>
-		<panel name="title_container">
-			<text name="active_title_label">
-				Min aktive titel
-			</text>
-			<combo_box name="active_title" tool_tip="Angiver den titel der vises i din avatars navnefelt, når denne gruppe er aktiv."/>
-		</panel>
-		<check_box label="Modtag gruppeinformationer" name="receive_notices" tool_tip="Angiver om du vil modtage informationer fra denne gruppe.   Fjern markeringen i boksen hvis gruppen spammer dig."/>
-		<check_box label="Vis gruppen i min profil" name="list_groups_in_profile" tool_tip="Angiver om du vil vise denne gruppe i dine profilinformationer"/>
+		<check_box initial_value="true" label="Vis i søgning" name="show_in_group_list" tool_tip="Lad folk se denne gruppe i søgeresultater."/>
 	</panel>
-	<string name="incomplete_member_data_str">
-		Henter medlemsinformationer
-	</string>
-	<string name="confirm_group_create_str">
-		Creating this group will cost L$100. 
-Er du virkelig, virkelig, VIRKELIG sikker på, at du vil bruge L$100 på at lave denne gruppe?
-Du skal være opmærksom på, at hvis ingen andre indmelder sig i denne gruppe indenfor 48 timer, så vil gruppen blive opløst, og gruppens navn vil ikke være tilgængelig i fremtiden.
-	</string>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9940ebbd4db88c07a515b01c4c8c4dc1afcef1c4
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Gruppe info" name="GroupInfo">
+	<panel.string name="default_needs_apply_text">
+		Der er ændringer på denne fane der ikke er gemt
+	</panel.string>
+	<panel.string name="want_apply_text">
+		Ønsker du at gemme disse ændringer?
+	</panel.string>
+	<panel.string name="group_join_btn">
+		Tilmeld (L$[AMOUNT])
+	</panel.string>
+	<panel.string name="group_join_free">
+		Gratis
+	</panel.string>
+	<text name="group_name" value="(Henter...)"/>
+	<line_editor label="Indtast dit nye gruppenavn her" name="group_name_editor"/>
+	<texture_picker label="" name="insignia" tool_tip="Klik for at vælge bilede"/>
+	<text name="prepend_founded_by">
+		Grundlægger:
+	</text>
+	<name_box initial_value="(finder)" name="founder_name"/>
+	<text name="join_cost_text">
+		Gratis
+	</text>
+	<button label="MELD IND NU!" name="btn_join"/>
+	<accordion name="groups_accordion">
+		<accordion_tab name="group_general_tab" title="Generelt"/>
+		<accordion_tab name="group_roles_tab" title="Roller"/>
+		<accordion_tab name="group_notices_tab" title="Beskeder"/>
+		<accordion_tab name="group_land_tab" title="Land/Aktiver"/>
+	</accordion>
+	<panel name="button_row">
+		<button label="Lav" label_selected="Ny gruppe" name="btn_create"/>
+		<button label="Gem" label_selected="Gem" name="btn_apply"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_invite.xml b/indra/newview/skins/default/xui/da/panel_group_invite.xml
index 813007aee07fec536a44d4cc1ea67821dff10d1a..1e00642c295012b9768cb7dcf8addb49247b50c5 100644
--- a/indra/newview/skins/default/xui/da/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/da/panel_group_invite.xml
@@ -1,31 +1,30 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Invitér et medlem" name="invite_panel">
+	<panel.string name="confirm_invite_owner_str">
+		Er du sikker på, at du vil invitere ny(e) ejer(e)? Denne handling er permanent!
+	</panel.string>
+	<panel.string name="loading">
+		(indlæser...)
+	</panel.string>
+	<panel.string name="already_in_group">
+		Nogen af avatarerne var allerede i gruppen og blev ikke inviteret
+	</panel.string>
 	<text name="help_text">
 		Du kan invitere flere beboere ad 
 gangen til at blive medlem af din 
 gruppe. Klik &apos;Åben personvælger&apos; for 
 at begynde.
 	</text>
-	<button label="Åben personvælger" name="add_button" bottom_delta="-30"/>
-	<name_list name="invitee_list"
-	     tool_tip="Hold Ctrl-tasten nede og klik på beboere for at vælge flere." />
-	<button label="Fjern valgte fra listen" name="remove_button"
-	     tool_tip="Fjerner beboere, der er valgt på ovenstående invitationsliste." />
+	<button bottom_delta="-30" label="Åben personvælger" name="add_button"/>
+	<name_list name="invitee_list" tool_tip="Hold Ctrl knappen nede og klik på beboer navne for at vælge flere"/>
+	<button label="Fjern valgte fra listen" name="remove_button" tool_tip="Fjern beboere valgt ovenfor fra invitationslisten"/>
 	<text name="role_text">
 		Vælg hvilken rolle, du vil tildele dem:
 	</text>
-	<combo_box name="role_name"
-	     tool_tip="Vælg fra listen med roller, du har tilladelse til at tildele medlemmerne." />
-	<button label="Send invitationer" name="ok_button" />
-	<button label="Annullér" name="cancel_button" />
-	<string name="confirm_invite_owner_str">
-		Er du sikker på, at du vil invitere ny(e) ejer(e)? Denne handling er permanent!
-	</string>
-	<!--button bottom="25" font="SansSerifSmall" halign="center" height="20"
-	     label="Send invitationer" left="65" name="ok_button" width="140" />
-	<button bottom_delta="-22" font="SansSerifSmall" halign="center" height="20"
-	     label="Annull&#233;r" left_delta="0" name="cancel_button" width="140" /-->
-	<string name="loading">
-		(indlæser...)
+	<combo_box name="role_name" tool_tip="Vælg fra en liste med roller du har ret til at tildele medlemmer"/>
+	<button label="Send invitationer" name="ok_button"/>
+	<button label="Annullér" name="cancel_button"/>
+	<string name="GroupInvitation">
+		Gruppe invitation
 	</string>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_land_money.xml b/indra/newview/skins/default/xui/da/panel_group_land_money.xml
index 636a16f97b3cf862344fefa40ce8a3ffb3037aeb..c73d7c807d3c0da8e55458c22cfa4c736cda1696 100644
--- a/indra/newview/skins/default/xui/da/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/da/panel_group_land_money.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Land &amp; L$" name="land_money_tab">
 	<string name="help_text">
-		Grunde ejet af gruppen er vist sammen med bidragsdetaljer. En advarsel vises indtil Total land i brug er mindre end eller lig med det totale bidrag. Planlægning, detaljer og salgsfaneblade viser information om gruppens økonomi.
+		En advarsel vises indtil Total land i brug er mindre end eller lig med det totale bidrag.
 	</string>
 	<button label="?" name="help_button"/>
 	<string name="cant_view_group_land_text">
@@ -17,27 +17,27 @@
 		Gruppeejet land
 	</text>
 	<scroll_list name="group_parcel_list">
-		<column label="Grundens navn" name="name"/>
+		<column label="Parcel" name="name"/>
 		<column label="Region" name="location"/>
 		<column label="Type" name="type"/>
 		<column label="Område" name="area"/>
 		<column label="" name="hidden"/>
 	</scroll_list>
-	<button label="Vis på kort" label_selected="Vis på kort" name="map_button"/>
+	<button label="Kort" label_selected="Kort" name="map_button"/>
 	<text name="total_contributed_land_label">
-		Total bidrag:
+		Totalt bidrag:
 	</text>
 	<text name="total_contributed_land_value">
 		[AREA] m²
 	</text>
 	<text name="total_land_in_use_label">
-		Total land i brug:
+		Totalt land i brug:
 	</text>
 	<text name="total_land_in_use_value">
 		[AREA] m²
 	</text>
 	<text name="land_available_label">
-		Tilgængeligt land:
+		Ledigt land:
 	</text>
 	<text name="land_available_value">
 		[AREA] m²
@@ -46,40 +46,39 @@
 		Dit bidrag:
 	</text>
 	<string name="land_contrib_error">
-		Ikke muligt at lave dit bidrag til landet.
+		Ikke muligt at lave dit bidrag til landet
 	</string>
 	<text name="your_contribution_units">
-		( m² )
+		m²
 	</text>
 	<text name="your_contribution_max_value">
 		([AMOUNT] maks.)
 	</text>
 	<text name="group_over_limit_text">
-		Gruppemedlemmer må bidrag med mere, for at understøtte 
-med det land der bliver brugt.
+		Gruppemedlemmer må bidrag med mere, for at understøtte med det land der bliver brugt
 	</text>
 	<text name="group_money_heading">
 		Gruppe L$
 	</text>
 	<tab_container name="group_money_tab_container">
-		<panel label="Planlægning" name="group_money_planning_tab">
+		<panel label="PLANLÆGNING" name="group_money_planning_tab">
 			<text_editor name="group_money_planning_text">
-				Beregner...
+				Henter...
 			</text_editor>
 		</panel>
-		<panel label="Detaljer" name="group_money_details_tab">
+		<panel label="DETALJER" name="group_money_details_tab">
 			<text_editor name="group_money_details_text">
-				Beregner...
+				Henter...
 			</text_editor>
-			<button label="&lt; Før" label_selected="&lt; Før" name="earlier_details_button" tool_tip="Gå tilbage i tid"/>
-			<button label="Efter &gt;" label_selected="Efter &gt;" name="later_details_button" tool_tip="GÃ¥ frem i tid"/>
+			<button label="&lt; Før" label_selected="&lt; Før" name="earlier_details_button" tool_tip="Tilbage"/>
+			<button label="Efter &gt;" label_selected="Efter &gt;" name="later_details_button" tool_tip="Næste"/>
 		</panel>
-		<panel label="Salg" name="group_money_sales_tab">
+		<panel label="SALG" name="group_money_sales_tab">
 			<text_editor name="group_money_sales_text">
-				Beregner...
+				Henter...
 			</text_editor>
-			<button label="&lt; Før" label_selected="&lt; Før" name="earlier_sales_button" tool_tip="Gå tilbage i tid"/>
-			<button label="Efter &gt;" label_selected="Efter &gt;" name="later_sales_button" tool_tip="GÃ¥ frem i tid"/>
+			<button label="&lt; Før" label_selected="&lt; Før" name="earlier_sales_button" tool_tip="Tilbage"/>
+			<button label="Efter &gt;" label_selected="Efter &gt;" name="later_sales_button" tool_tip="Næste"/>
 		</panel>
 	</tab_container>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/panel_group_notices.xml b/indra/newview/skins/default/xui/da/panel_group_notices.xml
index 9e6aa9eb7c1ae3152333b468c0db73efc1542e3c..ec503c37dcaa3f37e3c065c685e068f5d87b64c9 100644
--- a/indra/newview/skins/default/xui/da/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/da/panel_group_notices.xml
@@ -1,42 +1,35 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Beskeder" name="notices_tab">
-	<string name="help_text">
+	<panel.string name="help_text">
 		Beskeder er en hurtig måde at kommunikere på 
 på tværs i gruppen ved at sende en meddelelse eller en 
 eventuel vedlagt genstand. beskeder sendes kun til
 gruppemedlemmer i roller som giver evnen til at 
 modtage dem. Du kan slå beskeder fra i 
 Generel-fanebladet.
-	</string>
-	<string name="no_notices_text">
-		Der er ingen tidligere beskeder.
-	</string>
-	<button label="?" label_selected="?" name="help_button" />
-	<text name="lbl">
-		Arkiv med gruppebeskeder
-	</text>
+	</panel.string>
+	<panel.string name="no_notices_text">
+		Der er ikke nogen tidligere beskeder
+	</panel.string>
 	<text name="lbl2">
-		Beskeder er gemt i 14 dage. 
-Listen er begrænset til 200 beskeder pr. gruppe hver dag.
+		Beskeder gemmes i 14 dage.
+Maksimum er 200 pr. gruppe pr. dag
 	</text>
 	<scroll_list name="notice_list">
-		<column label="" name="icon" />
-		<column label="Emne" name="subject" />
-		<column label="Fra" name="from" />
-		<column label="Dato" name="date" />
+		<scroll_list.columns label="" name="icon"/>
+		<scroll_list.columns label="Emne" name="subject"/>
+		<scroll_list.columns label="Fra" name="from"/>
+		<scroll_list.columns label="Dato" name="date"/>
 	</scroll_list>
 	<text name="notice_list_none_found">
-		Ingen fundet.
+		Ingen fundet
 	</text>
-	<button label="Lav ny besked" label_selected="Lav ny besked" name="create_new_notice" />
-	<button label="Genopfrisk" label_selected="Genopfrisk liste" name="refresh_notices" />
+	<button label="Lav en ny besked" label_selected="Lav ny besked" name="create_new_notice" tool_tip="Lav en ny besked"/>
+	<button label="Genopfrisk" label_selected="Genopfrisk liste" name="refresh_notices" tool_tip="Genopfrisk beskedliste"/>
 	<panel label="Lav ny besked" name="panel_create_new_notice">
 		<text name="lbl">
 			Lav en besked
 		</text>
-		<text name="lbl2">
-			Du kan tilføje et bilag til beskeden ved at trække den fra beholdningen til dette felt. Vedhæftede objekter skal være sat til at kunne kopieres og overføres, og du kan ikke sende en mappe.
-		</text>
 		<text name="lbl3">
 			Emne:
 		</text>
@@ -46,17 +39,19 @@ Listen er begrænset til 200 beskeder pr. gruppe hver dag.
 		<text name="lbl5">
 			Vedhæft:
 		</text>
-		<button label="Fjern bilag" label_selected="Fjern bilag" name="remove_attachment" />
-		<button label="Afsend" label_selected="Afsend" name="send_notice" />
-		<panel name="drop_target"
-		     tool_tip="Træk en genstand fra beholdningen over på denne boks for at sende den sammen med beskeden. Du skal have tilladelse til at kopiere og overføre genstanden, for at kunne sende den med beskeden." />
+		<text name="string">
+			Træk og slip en gensand for at vedhæfte den:
+		</text>
+		<button label="Fjern" label_selected="Fjern bilag" name="remove_attachment"/>
+		<button label="Send" label_selected="Send" name="send_notice"/>
+		<group_drop_target name="drop_target" tool_tip="Træk en genstand fra din beholdning til dette felt for at sende den med denne besked. Du skal have rettigheder til at kopiere og overdrage denne genstand for at kunne vedhæfte den."/>
 	</panel>
 	<panel label="Se tidligere beskeder" name="panel_view_past_notice">
 		<text name="lbl">
 			Arkiverede beskeder
 		</text>
 		<text name="lbl2">
-			For at sende en ny besked, klik på &apos;Lav ny besked&apos;-knappen foroven.
+			For at sende en ny besked, tryk på + knappen
 		</text>
 		<text name="lbl3">
 			Emne:
@@ -64,6 +59,6 @@ Listen er begrænset til 200 beskeder pr. gruppe hver dag.
 		<text name="lbl4">
 			Besked:
 		</text>
-		<button label="Ã¥ben bilag" label_selected="Ã¥ben bilag" name="open_attachment" />
+		<button label="Ã…ben bilag" label_selected="Ã¥ben bilag" name="open_attachment"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/panel_me.xml b/indra/newview/skins/default/xui/da/panel_me.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2cfd358d13569b8bb3b221d2784b2b97f51adf20
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_me.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Min profil" name="panel_me">
+	<tab_container name="tabs">
+		<panel label="PROFIL" name="panel_profile"/>
+		<panel label="FAVORITTER" name="panel_picks"/>
+	</tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_media_settings_general.xml b/indra/newview/skins/default/xui/da/panel_media_settings_general.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7f1581888dc0c01b7d189673b324ed4d27081470
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_media_settings_general.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Generelt" name="Media Settings General">
+	<text name="home_label">
+		Hjemmeside:
+	</text>
+	<text name="home_fails_whitelist_label">
+		(Denne side optræder ikke i godkendte sider)
+	</text>
+	<line_editor name="home_url" tool_tip="Hjemmesiden for kilden til dette media"/>
+	<text name="preview_label">
+		Vis
+	</text>
+	<text name="current_url_label">
+		Nuværende side:
+	</text>
+	<text name="current_url" tool_tip="Den nuværende hjemmeside for kilden til dette media" value=""/>
+	<button label="Nulstil" name="current_url_reset_btn"/>
+	<check_box initial_value="false" label="Gentag afspil" name="auto_loop"/>
+	<check_box initial_value="false" label="Første klik medfører interaktion" name="first_click_interact"/>
+	<check_box initial_value="false" label="Auto zoom" name="auto_zoom"/>
+	<check_box initial_value="false" label="Afspil automatisk media" name="auto_play"/>
+	<text name="media_setting_note">
+		Note: Beboere kan selv ændre denne indstilling
+	</text>
+	<check_box initial_value="false" label="Auto skalér media på objektets overflade" name="auto_scale"/>
+	<text name="size_label">
+		Størrelse:
+	</text>
+	<text name="X_label">
+		X
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_media_settings_security.xml b/indra/newview/skins/default/xui/da/panel_media_settings_security.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ee341f91429d5f80bf603af13439c21cfc5fddd5
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_media_settings_security.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Sikkerhed" name="Media Settings Security">
+	<check_box initial_value="false" label="Tillad kun adgang til specifikke URL&apos;er (via &quot;prefix&quot;)" name="whitelist_enable"/>
+	<text name="home_url_fails_some_items_in_whitelist">
+		Opslag som hjemmesiden fejler ved er markeret:
+	</text>
+	<button label="Tilføj" name="whitelist_add"/>
+	<button label="Slet" name="whitelist_del"/>
+	<text name="home_url_fails_whitelist">
+		Advarsel: Hjemmesiden angive i &quot;Generelt&quot; fanen er ikke indeholdt i godkendte sider. Den er slået fra, indtil en gyldig værdi er tilføjet.
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_my_profile.xml b/indra/newview/skins/default/xui/da/panel_my_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1dffc7323960af3fcd523f2452870fabcb65be69
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_my_profile.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Profil" name="panel_profile">
+	<string name="no_partner_text" value="Ingen"/>
+	<string name="RegisterDateFormat">
+		[REG_DATE] ([AGE])
+	</string>
+	<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="Klik på Rediger Profil knappen nedenfor for at ændre billede"/>
+			</panel>
+			<panel name="first_life_image_panel">
+				<icon label="" name="real_world_edit_icon" tool_tip="Klik på Rediger Profil knappen nedenfor for at ændre billede"/>
+				<text name="title_rw_descr_text" value="RL:"/>
+			</panel>
+			<text name="me_homepage_text">
+				Web:
+			</text>
+			<text name="title_member_text" value="Medlem siden:"/>
+			<text name="title_acc_status_text" value="Konto:"/>
+			<text name="acc_status_text" value="Beboer. Ingen betalingsinfo"/>
+			<text name="title_partner_text" value="Partner:"/>
+			<text name="title_groups_text" value="Grupper:"/>
+		</panel>
+	</scroll_container>
+	<panel name="profile_buttons_panel">
+		<button label="Tilføj ven" name="add_friend"/>
+		<button label="IM" name="im"/>
+		<button label="Opkald" name="call"/>
+		<button label="Kort" name="show_on_map_btn"/>
+		<button label="Teleportér" name="teleport"/>
+	</panel>
+	<panel name="profile_me_buttons_panel">
+		<button label="Rediger profil" name="edit_profile_btn" tool_tip="Redigér personlig information"/>
+		<button label="Ændre udseende" name="edit_appearance_btn" tool_tip="Ændre dit udseende: fysiske data, tøj m.v."/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_nearby_chat.xml b/indra/newview/skins/default/xui/da/panel_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7f94345976ddfeaaaedfd3cd8fb7d9f33f7524c3
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_nearby_chat.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- All our XML is utf-8 encoded. -->
+<panel name="nearby_chat">
+	<panel name="chat_caption">
+		<text name="sender_name">
+			CHAT NÆRVED
+		</text>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2aa7ed7c6c513bfd37d103d01322b6beaf60f1b4
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chat_bar">
+	<string name="min_width">
+		192
+	</string>
+	<string name="max_width">
+		320
+	</string>
+	<line_editor label="Klik her for at chatte." name="chat_box" tool_tip="Tryk på enter for at tale, Ctrl-Enter for at råbe."/>
+	<button name="show_nearby_chat" tool_tip="Viser/skjuler log for chat nærved"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_pick_info.xml b/indra/newview/skins/default/xui/da/panel_pick_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ce05018b5b0882791a9bac69138565cf61a44d0b
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_pick_info.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_pick_info">
+	<text name="title" value="Favorit info"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<text name="pick_name" value="[name]"/>
+			<text name="pick_location" value="[loading...]"/>
+			<text name="pick_desc" value="[description]"/>
+		</panel>
+	</scroll_container>
+	<panel name="buttons">
+		<button label="Teleportér" name="teleport_btn"/>
+		<button label="Kort" name="show_on_map_btn"/>
+		<button label="Redigér" name="edit_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_place_profile.xml b/indra/newview/skins/default/xui/da/panel_place_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..24316fea141ffc1e11b0d9febf77aa8eb3e0149e
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_place_profile.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="place_profile">
+	<string name="on" value="Til"/>
+	<string name="off" value="Fra"/>
+	<string name="anyone" value="Enhver"/>
+	<string name="available" value="ledig"/>
+	<string name="allocated" value="fordelt"/>
+	<string name="title_place" value="Sted profil"/>
+	<string name="title_teleport_history" value="Teleport historik sted"/>
+	<string name="not_available" value="(N\A)"/>
+	<string name="unknown" value="(ukendt)"/>
+	<string name="public" value="(offentlig)"/>
+	<string name="none_text" value="(ingen)"/>
+	<string name="sale_pending_text" value="(Salg igang)"/>
+	<string name="group_owned_text" value="(Gruppe ejet)"/>
+	<string name="price_text" value="L$"/>
+	<string name="area_text" value="m²"/>
+	<string name="all_residents_text" value="Alle beboere"/>
+	<string name="group_text" value="Gruppe"/>
+	<string name="can_resell">
+		Købt land i denne region må sælges videre
+	</string>
+	<string name="can_not_resell">
+		Købt land i denne region må ikke sælges videre
+	</string>
+	<string name="can_change">
+		Købt jord i denne region må gerne samles eller opdeles.
+	</string>
+	<string name="can_not_change">
+		Købt jord i denne region må ikke samles eller opdeles.
+	</string>
+	<string name="server_update_text">
+		Information om dette sted er ikke tilgængelig før en server opdatering.
+	</string>
+	<string name="server_error_text">
+		Information om dette sted er ikke tilgængelig lige nu, prøv venligst igen senere.
+	</string>
+	<string name="server_forbidden_text">
+		Information om dette sted er ikke tilgængelig på grund af adgangsbegrænsninger.  Check venligst dine rettigheder med stedets ejer.
+	</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]
+	</string>
+	<text name="title" value="Sted profil"/>
+	<scroll_container name="place_scroll">
+		<panel name="scrolling_panel">
+			<text name="owner_label" value="Ejer:"/>
+			<text name="maturity_value" value="ukendt"/>
+			<accordion name="advanced_info_accordion">
+				<accordion_tab name="parcel_characteristics_tab" title="Parcel">
+					<panel>
+						<text name="rating_label" value="Rating:"/>
+						<text name="rating_value" value="ukendt"/>
+						<text name="voice_label" value="Stem:"/>
+						<text name="voice_value" value="Til"/>
+						<text name="fly_label" value="Flyve:"/>
+						<text name="fly_value" value="Til"/>
+						<text name="push_label" value="Skub:"/>
+						<text name="push_value" value="Fra"/>
+						<text name="build_label" value="Byg:"/>
+						<text name="build_value" value="Til"/>
+						<text name="scripts_label" value="Scripts:"/>
+						<text name="scripts_value" value="Til"/>
+						<text name="damage_label" value="Skade:"/>
+						<text name="damage_value" value="Fra"/>
+						<button label="Om land" name="about_land_btn"/>
+					</panel>
+				</accordion_tab>
+				<accordion_tab name="region_information_tab" title="Region">
+					<panel>
+						<text name="region_name_label" value="Region:"/>
+						<text name="region_type_label" value="Type:"/>
+						<text name="region_rating_label" value="Rating:"/>
+						<text name="region_owner_label" value="Ejer:"/>
+						<text name="region_group_label" value="Gruppe:"/>
+						<button label="Region/Estate" name="region_info_btn"/>
+					</panel>
+				</accordion_tab>
+				<accordion_tab name="estate_information_tab" title="Estate">
+					<panel>
+						<text name="estate_name_label" value="Estate:"/>
+						<text name="estate_rating_label" value="Rating:"/>
+						<text name="estate_owner_label" value="Ejer:"/>
+						<text name="covenant_label" value="Regler:"/>
+					</panel>
+				</accordion_tab>
+				<accordion_tab name="sales_tab" title="Til salg">
+					<panel>
+						<text name="sales_price_label" value="Pris:"/>
+						<text name="area_label" value="Areal:"/>
+						<text name="traffic_label" value="Trafik:"/>
+						<text name="primitives_label" value="Prims:"/>
+						<text name="parcel_scripts_label" value="Scripts:"/>
+						<text name="terraform_limits_label" value="Terraform begrænsninger:"/>
+						<text name="subdivide_label" value="Mulighed for at Opdele/samle:"/>
+						<text name="resale_label" value="Mulighed for videresalg:"/>
+						<text name="sale_to_label" value="Til salg til:"/>
+					</panel>
+				</accordion_tab>
+			</accordion>
+		</panel>
+	</scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml
index c8602d3119cef17f07f91eb6ca247e13adefb65c..609512bc1b35ffebbfc61bfe0ae9d2eabb0fd673 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml
@@ -39,4 +39,8 @@
 	</text>
 	<check_box initial_value="true" label="Afspil skrive animation ved chat" name="play_typing_animation"/>
 	<check_box label="Send e-mail til mig når jeg modtager IM og er offline" name="send_im_to_email"/>
+	<radio_group name="chat_window" tool_tip="Vis dine personlige beskeder i separate vinduer eller i ét vindue med mange faner (ændring kræver genstart)">
+		<radio_item label="Flere vinduer" name="radio"/>
+		<radio_item label="Et vindue" name="radio2"/>
+	</radio_group>
 </panel>
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 ed23a9a7061cc848f3b6e412f8551a490823e184..e17ccca4a18a00372ba69faa3fc07644c96b7cd1 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_general.xml
@@ -1,85 +1,62 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Generelt" name="general_panel">
-	<combo_box name="start_location_combo">
-		<combo_box.item name="MyHome" tool_tip="Log ind til min hjemme lokation som standard." label="Mit hjem" />
-		<combo_box.item name="MyLastLocation" tool_tip="Log ind til min sidste lokation som standard." label="Min sidste lokation" />
-	</combo_box>
-	<check_box label="Vis start lokation på login billedet" name="show_location_checkbox"/>
-	<combo_box name="fade_out_combobox">
-		<combo_box.item name="Never" label="Aldrig"/>
-		<combo_box.item name="Show Temporarily" label="Vis midlertidigt"/>
-		<combo_box.item name="Always" label="Altid"/>
-	</combo_box>
-	<check_box label="Små avatar navne" name="small_avatar_names_checkbox"/>
-	<check_box label="Skjul mit navn på min skærm" name="show_my_name_checkbox"/>
-	<text name="group_titles_textbox">
-		Gruppe titler:
-	</text>
-	<check_box label="Skjul alle gruppe titler" name="show_all_title_checkbox"/>
-	<check_box label="Gem min gruppe titel" name="show_my_title_checkbox"/>
-	<color_swatch label="" name="effect_color_swatch" tool_tip="Klik for at åbne farvevælger"/>
-	<text name="UI Size:">
-		UI Størrelse:
+	<text name="language_textbox">
+		Sprog:
 	</text>
-	<check_box label="Brug opløsnings uafhængig skalering" name="ui_auto_scale"/>
-	<spinner label="Tid før inaktiv:" name="afk_timeout_spinner"/>
-	<check_box label="Giv besked når Linden dollars (L$) bliver brugt eller modtaget" name="notify_money_change_checkbox"/>
-	<text name="maturity_desired_label">
-		Rating:
+	<combo_box name="language_combobox">
+		<combo_box.item label="System standard" name="System Default Language"/>
+		<combo_box.item label="English (Engelsk)" name="English"/>
+		<combo_box.item label="Dansk - Beta" name="Danish"/>
+		<combo_box.item label="Deutsch (Tysk) - Beta" name="Deutsch(German)"/>
+		<combo_box.item label="Español (Spansk) - Beta" name="Spanish"/>
+		<combo_box.item label="Français (Fransk) - Beta" name="French"/>
+		<combo_box.item label="Polski (Polsk) - Beta" name="Polish"/>
+		<combo_box.item label="Portugués (Portugisisk) - Beta" name="Portugese"/>
+		<combo_box.item label="日本語 (Japansk) - Beta" name="(Japanese)"/>
+	</combo_box>
+	<text name="language_textbox2">
+		(Kræver genstart)
 	</text>
 	<text name="maturity_desired_prompt">
 		Jeg ønsker adgang til inhold med rating:
 	</text>
+	<text name="maturity_desired_textbox"/>
 	<combo_box name="maturity_desired_combobox">
-		<combo_box.item name="Desired_Adult" label="PG, Mature og Adult"/>
-		<combo_box.item name="Desired_Mature" label="PG and Mature"/>
-		<combo_box.item name="Desired_PG" label="PG"/>
+		<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" name="Desired_PG"/>
 	</combo_box>
-	<text name="maturity_desired_textbox">
-		PG
-	</text>
 	<text name="start_location_textbox">
 		Start lokation:
 	</text>
-	<text name="show_names_textbox">
-		Vis navne:
-	</text>
+	<combo_box name="start_location_combo">
+		<combo_box.item label="Min sidste lokation" name="MyLastLocation" tool_tip="Log ind til min sidste lokation som standard."/>
+		<combo_box.item label="Mit hjem" name="MyHome" tool_tip="Log ind til min hjemme lokation som standard."/>
+	</combo_box>
+	<check_box initial_value="true" label="Vis start lokation på login billedet" name="show_location_checkbox"/>
+	<text name="name_tags_textbox">
+		Navneskilte:
+	</text>
+	<radio_group name="Name_Tag_Preference">
+		<radio_item label="Skjul" name="radio"/>
+		<radio_item label="Vis" name="radio2"/>
+		<radio_item label="Vis et øjeblik" name="radio3"/>
+	</radio_group>
+	<check_box label="Vis mit navn" name="show_my_name_checkbox1"/>
+	<check_box initial_value="true" label="Små avatar navne" name="small_avatar_names_checkbox"/>
+	<check_box label="Gruppetitler" name="show_all_title_checkbox1"/>
 	<text name="effects_color_textbox">
 		Farve til mine effekter:
 	</text>
+	<color_swatch label="" name="effect_color_swatch" tool_tip="Klik for at åbne farvevælger"/>
+	<text name="title_afk_text">
+		Tid inden &quot;væk&quot;:
+	</text>
+	<spinner label="Tid før inaktiv:" name="afk_timeout_spinner"/>
 	<text name="seconds_textbox">
 		sekunder
 	</text>
-	<text name="crash_report_textbox">
-		Nedbrudsrapporter:
+	<text name="text_box3">
+		Optaget autosvar:
 	</text>
-	<text name="language_textbox">
-		Sprog:
-	</text>
-	<text name="language_textbox2">
-		(Kræver genstart for at virke optimalt)
-	</text>
-	<string name="region_name_prompt">
-		&lt;Skriv regions navn&gt;
-	</string>
-	<combo_box name="crash_behavior_combobox">
-		<combo_box.item name="Askbeforesending" label="Bed om bekræftigelse"/>
-		<combo_box.item name="Alwayssend" label="Send altid"/>
-		<combo_box.item name="Neversend" label="Send aldrig"/>
-	</combo_box>
-	<combo_box name="language_combobox">
-		<combo_box.item name="System Default Language" label="System standard"/>
-		<combo_box.item name="English" label="English (Engelsk)"/>
-		<combo_box.item name="Danish" label="Dansk - Beta"/>
-		<combo_box.item name="Deutsch(German)" label="Deutsch (Tysk) - Beta"/>
-		<combo_box.item name="Spanish" label="Español (Spansk) - Beta"/>
-		<combo_box.item name="French" label="Français (Fransk) - Beta"/>
-		<combo_box.item name="Hungarian" label="Magyar (Ungarsk) - Beta"/>
-		<combo_box.item name="Polish" label="Polski (Polsk) - Beta"/>
-		<combo_box.item name="Portugese" label="Portugués (Portugisisk) - Beta"/>
-		<combo_box.item name="Chinese" label="中文 (简体) (Kinesisk) - Beta"/>
-		<combo_box.item name="(Japanese)" label="日本語 (Japansk) - Beta"/>
-		<combo_box.item name="(Korean)" label="한국어 (Koreansk) - Beta"/>
-	</combo_box>
-	<check_box label="Del sprog med objekter" name="language_is_public" tool_tip="Dette lader objekter i verden vide hvad dit foretrukne sprog er."/>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml
index 4dac7be4134aad5bc518b0085a00b2c6097a82ef..bb1cacc7735afe473d78452b5c54fa33f02257b5 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml
@@ -1,42 +1,18 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Grafik" name="Display panel">
-	<button label="?" name="GraphicsPreferencesHelpButton" />
-	<check_box label="Kør Second Life i et vindue" name="windowed mode" />
-	<text_editor name="FullScreenInfo">
-		Hvis dette ikke er valgt kører Second Life i Fuld skærm.
-	</text_editor>
-	<text name="WindowSizeLabel">
-		Opløsning:
+	<text name="UI Size:">
+		UI størrelse:
 	</text>
-	<combo_box name="windowsize combo">
-		<combo_box.item name="640x480" label="640x480" />
-		<combo_box.item name="800x600" label="800x600" />
-		<combo_box.item name="720x480" label="720x480 (NTSC)" />
-		<combo_box.item name="768x576" label="768x576 (PAL)" />
-		<combo_box.item name="1024x768" label="1024x768" />
-	</combo_box>
-	<text name="DisplayResLabel">
-		Skærm opløsning:
-	</text>
-	<text name="AspectRatioLabel1" tool_tip="bredde / højde">
-		Format:
-	</text>
-	<combo_box name="aspect_ratio" tool_tip="bredde/ højde">
-		<combo_box.item name="4:3(StandardCRT)" label="4:3 (Standard CRT)" />
-		<combo_box.item name="5:4(1280x1024LCD)" label="5:4 (1280x1024 LCD)" />
-		<combo_box.item name="8:5(Widescreen)" label="8:5 (Widescreen)" />
-		<combo_box.item name="16:9(Widescreen)" label="16:9 (Widescreen)" />
-	</combo_box>
-	<check_box label="Auto-detect format" name="aspect_auto_detect" />
-	<text name="HigherText">
-		Kvalitet og
-	</text>
-	<text name="QualityText">
-		Ydelse:
+	<text name="QualitySpeed">
+		Kvalitet og hastighed:
 	</text>
 	<text name="FasterText">
 		Hurtigere
 	</text>
+	<text name="BetterText">
+		Bedre
+	</text>
+	<slider label="" name="QualityPerformanceSelection"/>
 	<text name="ShadersPrefText">
 		Lav
 	</text>
@@ -49,99 +25,82 @@
 	<text name="ShadersPrefText4">
 		Ultra
 	</text>
-	<text name="HigherText2">
-		Højere
-	</text>
-	<text name="QualityText2">
-		Kvalitet
-	</text>
-	<slider label="" name="QualityPerformanceSelection" />
-	<check_box label="Manuelt" name="CustomSettings" />
-	<panel name="CustomGraphics Panel">
-	<text name="ShadersText">
-		Overflader:
-	</text>
-	<check_box label="Glatte flader og skin" name="BumpShiny" />
-	<check_box label="Basale flader" name="BasicShaders"
-	     tool_tip="Ved at slå dette valg fra, kan det forhindres at visse grafikkort drivere crasher." />
-	<check_box label="Atmosfæriske flader" name="WindLightUseAtmosShaders" />
-	<check_box label="Reflektioner i vand" name="Reflections" />
-	<text name="ReflectionDetailText">
-		Spejlnings detaljer:
-	</text>
-	<radio_group name="ReflectionDetailRadio">
-		<radio_item name="0" label="Terræn og træer" />
-		<radio_item name="1" label="Alle statiske objekter" />
-		<radio_item name="2" label="Alle avatarer og objekter" />
-		<radio_item name="3" label="Alt" />
-	</radio_group>
-	<text name="AvatarRenderingText">
-		Avatar gengivelse
-	</text>
-	<check_box label="Mini-figurer på lang afstand" name="AvatarImpostors" />
-	<check_box label="Hardware Skinning" name="AvatarVertexProgram" />
-	<check_box label="Avatar tøj" name="AvatarCloth" />
-	<text name="DrawDistanceMeterText1">
-		m
-	</text>
-	<text name="DrawDistanceMeterText2">
-		m
-	</text>
-	<slider label="Maks. visnings-afstand:" name="DrawDistance" />
-	<slider label="Maks. antal partikler:" name="MaxParticleCount" />
-	<slider label="Efterbehandlingskvalitet:" name="RenderPostProcess" />
-	<text name="MeshDetailText">
-		Netmaske detaljer:
-	</text>
-	<slider label="  Objekter:" name="ObjectMeshDetail" />
-	<slider label="  Flexiprims:" name="FlexibleMeshDetail" />
-	<slider label="  Træer:" name="TreeMeshDetail" />
-	<slider label="  Avatarer:" name="AvatarMeshDetail" />
-	<slider label="  Terræn:" name="TerrainMeshDetail" />
-	<slider label="  Himmel:" name="SkyMeshDetail" />
-	<text name="PostProcessText">
-		Lav
-	</text>
-	<text name="ObjectMeshDetailText">
-		Lav
-	</text>
-	<text name="FlexibleMeshDetailText">
-		Lav
-	</text>
-	<text name="TreeMeshDetailText">
-		Lav
-	</text>
-	<text name="AvatarMeshDetailText">
-		Lav
-	</text>
-	<text name="TerrainMeshDetailText">
-		Lav
-	</text>
-	<text name="SkyMeshDetailText">
-		Lav
-	</text>
-	<text name="LightingDetailText">
-		Lys detaljer:
-	</text>
-	<radio_group name="LightingDetailRadio">
-		<radio_item name="SunMoon" label="Kun sol og måne" />
-		<radio_item name="LocalLights" label="Lys i nærheden" />
-	</radio_group>
-	<text name="TerrainDetailText">
-		Terræn detaljer:
-	</text>
-	<radio_group name="TerrainDetailRadio">
-		<radio_item name="0" label="Lav" />
-		<radio_item name="2" label="Høj" />
-	</radio_group>
+	<panel label="CustomGraphics" name="CustomGraphics Panel">
+		<text name="ShadersText">
+			Overflader:
+		</text>
+		<check_box initial_value="true" label="Glatte flader og skin" name="BumpShiny"/>
+		<check_box initial_value="true" label="Basale flader" name="BasicShaders" tool_tip="Ved at slå dette valg fra, kan det forhindres at visse grafikkort drivere crasher."/>
+		<check_box initial_value="true" label="Atmosfæriske flader" name="WindLightUseAtmosShaders"/>
+		<check_box initial_value="true" label="Reflektioner i vand" name="Reflections"/>
+		<text name="ReflectionDetailText">
+			Spejlnings detaljer:
+		</text>
+		<radio_group name="ReflectionDetailRadio">
+			<radio_item label="Terræn og træer" name="0"/>
+			<radio_item label="Alle statiske objekter" name="1"/>
+			<radio_item label="Alle avatarer og objekter" name="2"/>
+			<radio_item label="Alt" name="3"/>
+		</radio_group>
+		<text name="AvatarRenderingText">
+			Avatar gengivelse
+		</text>
+		<check_box initial_value="true" label="Mini-figurer på lang afstand" name="AvatarImpostors"/>
+		<check_box initial_value="true" label="Hardware Skinning" name="AvatarVertexProgram"/>
+		<check_box initial_value="true" label="Avatar tøj" name="AvatarCloth"/>
+		<slider label="Maks. visnings-afstand:" name="DrawDistance"/>
+		<text name="DrawDistanceMeterText2">
+			m
+		</text>
+		<slider label="Maks. antal partikler:" name="MaxParticleCount"/>
+		<slider label="Efterbehandlingskvalitet:" name="RenderPostProcess"/>
+		<text name="MeshDetailText">
+			Netmaske detaljer:
+		</text>
+		<slider label="  Objekter:" name="ObjectMeshDetail"/>
+		<slider label="  Flexiprims:" name="FlexibleMeshDetail"/>
+		<slider label="  Træer:" name="TreeMeshDetail"/>
+		<slider label="  Avatarer:" name="AvatarMeshDetail"/>
+		<slider label="  Terræn:" name="TerrainMeshDetail"/>
+		<slider label="  Himmel:" name="SkyMeshDetail"/>
+		<text name="PostProcessText">
+			Lav
+		</text>
+		<text name="ObjectMeshDetailText">
+			Lav
+		</text>
+		<text name="FlexibleMeshDetailText">
+			Lav
+		</text>
+		<text name="TreeMeshDetailText">
+			Lav
+		</text>
+		<text name="AvatarMeshDetailText">
+			Lav
+		</text>
+		<text name="TerrainMeshDetailText">
+			Lav
+		</text>
+		<text name="SkyMeshDetailText">
+			Lav
+		</text>
+		<text name="LightingDetailText">
+			Lys detaljer:
+		</text>
+		<radio_group name="LightingDetailRadio">
+			<radio_item label="Kun sol og måne" name="SunMoon"/>
+			<radio_item label="Lys i nærheden" name="LocalLights"/>
+		</radio_group>
+		<text name="TerrainDetailText">
+			Terræn detaljer:
+		</text>
+		<radio_group name="TerrainDetailRadio">
+			<radio_item label="Lav" name="0"/>
+			<radio_item label="Høj" name="2"/>
+		</radio_group>
 	</panel>
-	<button label="Anbefalede indstillinger" name="Defaults" />
-	<button label="Hardware valg" label_selected="Hardware Options"
-	     name="GraphicsHardwareButton" />
-	<panel.string name="resolution_format">
-		[RES_X] x [RES_Y]
-	</panel.string>
-	<panel.string name="aspect_ratio_text">
-		[NUM]:[DEN]
-	</panel.string>
+	<button label="Benyt" label_selected="Benyt" name="Apply"/>
+	<button label="Nulstil" name="Defaults"/>
+	<button label="Avanceret" name="Advanced"/>
+	<button label="Hardware" label_selected="Hardware" name="GraphicsHardwareButton"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/da/panel_prim_media_controls.xml
new file mode 100644
index 0000000000000000000000000000000000000000..987ba2a3f8172c4b1a5da0fbec7c940a16f139a1
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_prim_media_controls.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="MediaControls">
+	<layout_stack name="media_controls">
+		<layout_panel name="media_address">
+			<line_editor name="media_address_url" tool_tip="Media URL"/>
+			<layout_stack name="media_address_url_icons">
+				<layout_panel>
+					<icon name="media_whitelist_flag" tool_tip="Godkendt side"/>
+				</layout_panel>
+				<layout_panel>
+					<icon name="media_secure_lock_flag" tool_tip="Sikker browsing"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="media_play_position">
+			<slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Filmafspilning fremskridt"/>
+		</layout_panel>
+		<layout_panel name="media_volume">
+			<button name="media_mute_button" tool_tip="Sluk for dette media"/>
+			<slider name="volume_slider" tool_tip="Media lydstyrke"/>
+		</layout_panel>
+	</layout_stack>
+	<layout_stack>
+		<panel name="media_progress_indicator">
+			<progress_bar name="media_progress_bar" tool_tip="Media hentes"/>
+		</panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_profile_view.xml b/indra/newview/skins/default/xui/da/panel_profile_view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..23b9d3ba83e0563516bbc82d0d7bca4529be8e21
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_profile_view.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_target_profile">
+	<string name="status_online">
+		Online
+	</string>
+	<string name="status_offline">
+		Offline
+	</string>
+	<text_editor name="user_name" value="(Henter...)"/>
+	<text name="status" value="Online"/>
+	<tab_container name="tabs">
+		<panel label="PROFIL" name="panel_profile"/>
+		<panel label="FAVORITTER" name="panel_picks"/>
+		<panel label="NOTER &amp; PRIVATLIV" name="panel_notes"/>
+	</tab_container>
+</panel>
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 5d0799cab96046b4f68598872b6db3740f82cd3f..d726fedfe97ca8b798ccf5e704f413c8f136dec3 100644
--- a/indra/newview/skins/default/xui/da/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/da/panel_region_estate.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Estate" name="Estate">
 	<text name="estate_help_text">
 		Ændringer i dette afsnit vil påvirke alle
@@ -11,61 +11,59 @@ regioner i dette estate.
 		(ukendt)
 	</text>
 	<text name="owner_text">
-		Ejer:
+		Estate ejer:
 	</text>
 	<text name="estate_owner">
 		(ukendt)
 	</text>
-	<check_box label="Brug global tid" name="use_global_time_check" />
-	<button label="?" name="use_global_time_help" />
-	<check_box label="Sol i fast position" name="fixed_sun_check" />
-	<button label="?" name="fixed_sun_help" />
-	<slider label="Fase" name="sun_hour_slider" />
-	<check_box label="Tillad offentlig adgang" name="externally_visible_check" />
-	<button label="?" name="externally_visible_help" />
+	<check_box label="Brug global tid" name="use_global_time_check"/>
+	<button label="?" name="use_global_time_help"/>
+	<check_box label="Sol i fast position" name="fixed_sun_check"/>
+	<button label="?" name="fixed_sun_help"/>
+	<slider label="Fase" name="sun_hour_slider"/>
+	<check_box label="Tillad offentlig adgang" name="externally_visible_check"/>
+	<button label="?" name="externally_visible_help"/>
 	<text name="Only Allow">
 		Begræns adgang til:
 	</text>
-	<check_box label="Beboere med betalingsoplysninger" name="limit_payment"
-	     tool_tip="Blokér for brugere uden identifikation" />
-	<check_box label="Beboere der er godkendt som voksne" name="limit_age_verified"
-	     tool_tip="Blokér for brugere der ikke har verificéret deres alder. Se support.secondlife.com for mere information." />
-	<check_box label="Tillad stemme chat" name="voice_chat_check" />
-	<button label="?" name="voice_chat_help" />
-	<check_box label="Tillad direkte teleport" name="allow_direct_teleport" />
-	<button label="?" name="allow_direct_teleport_help" />
+	<check_box label="Beboere med betalingsoplysninger" name="limit_payment" tool_tip="Blokér for brugere uden identifikation"/>
+	<check_box label="Beboere der er godkendt som voksne" name="limit_age_verified" tool_tip="Blokér for brugere der ikke har verificéret deres alder. Se [SUPPORT_SITE] for mere information."/>
+	<check_box label="Tillad stemme chat" name="voice_chat_check"/>
+	<button label="?" name="voice_chat_help"/>
+	<check_box label="Tillad direkte teleport" name="allow_direct_teleport"/>
+	<button label="?" name="allow_direct_teleport_help"/>
 	<text name="abuse_email_text" width="260">
 		Send beskeder misbrug til email adresse:
 	</text>
 	<string name="email_unsupported">
 		Ikke supporteret
 	</string>
-	<button label="?" name="abuse_email_address_help" />
-	<button label="Gem" name="apply_btn" />
-	<button label="Smid bruger ud fra estate..." name="kick_user_from_estate_btn" />
-	<button label="Send besked til estate..." name="message_estate_btn" />
+	<button label="?" name="abuse_email_address_help"/>
+	<button label="Gem" name="apply_btn"/>
+	<button label="Smid bruger ud fra estate..." name="kick_user_from_estate_btn"/>
+	<button label="Send besked til estate..." name="message_estate_btn"/>
 	<text name="estate_manager_label">
 		Administratorer:
 	</text>
-	<button label="?" name="estate_manager_help" />
-	<button label="Fjern..." name="remove_estate_manager_btn" />
-	<button label="Tilføj..." name="add_estate_manager_btn" />
+	<button label="?" name="estate_manager_help"/>
+	<button label="Fjern..." name="remove_estate_manager_btn"/>
+	<button label="Tilføj..." name="add_estate_manager_btn"/>
 	<text name="allow_resident_label">
 		Godkendte beboere:
 	</text>
-	<button label="?" name="allow_resident_help" />
-	<button label="Fjern..." name="remove_allowed_avatar_btn" />
-	<button label="Tilføj..." name="add_allowed_avatar_btn" />
+	<button label="?" name="allow_resident_help"/>
+	<button label="Fjern..." name="remove_allowed_avatar_btn"/>
+	<button label="Tilføj..." name="add_allowed_avatar_btn"/>
 	<text name="allow_group_label">
 		Tilladte grupper:
 	</text>
-	<button label="?" name="allow_group_help" />
-	<button label="Fjern..." name="remove_allowed_group_btn" />
-	<button label="Tilføj..." name="add_allowed_group_btn" />
+	<button label="?" name="allow_group_help"/>
+	<button label="Fjern..." name="remove_allowed_group_btn"/>
+	<button label="Tilføj..." name="add_allowed_group_btn"/>
 	<text name="ban_resident_label">
 		Blokérede beboere:
 	</text>
-	<button label="?" name="ban_resident_help" />
-	<button label="Fjern..." name="remove_banned_avatar_btn" />
-	<button label="Tilføj..." name="add_banned_avatar_btn" />
+	<button label="?" name="ban_resident_help"/>
+	<button label="Fjern..." name="remove_banned_avatar_btn"/>
+	<button label="Tilføj..." name="add_banned_avatar_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/da/panel_side_tray_tab_caption.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5c0bd829d818d34dc23f6692234437a8ff08d333
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/panel_side_tray_tab_caption.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="sidetray_tab_panel">
+	<text name="sidetray_tab_title" value="Side bjælke"/>
+	<button name="show_help" tool_tip="Vis hjælp"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_status_bar.xml b/indra/newview/skins/default/xui/da/panel_status_bar.xml
index 20e72827f204f6798394fdb341b699209270ac11..4e45b7e328c08b7822712a85945f84967e0757da 100644
--- a/indra/newview/skins/default/xui/da/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/da/panel_status_bar.xml
@@ -1,44 +1,29 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="status">
-	<text name="ParcelNameText"
-	     tool_tip="Navn på det land/parcel som du står på. Klik på teksten for yderligere info.">
-		parcel name goes here
-	</text>
-	<text name="BalanceText" tool_tip="Konto balance">
-		Henter...
-	</text>
-	<button label="" label_selected="" name="buycurrency" tool_tip="Køb valuta" />
-	<text name="TimeText" tool_tip="Nuværende [SECOND_LIFE] tid">
-		12:00
-	</text>
-	<string name="StatBarDaysOfWeek">
+	<panel.string name="StatBarDaysOfWeek">
 		Søndag:Mandag:Tirsdag:Onsdag:Torsdag:Fredag:Lørdag
-	</string>
-	<string name="StatBarMonthsOfYear">
+	</panel.string>
+	<panel.string name="StatBarMonthsOfYear">
 		Januar:Februar:Marts:April:Maj:Juni:Juli:August:September:Oktober:November:December
-	</string>
-	<button label="" label_selected="" name="scriptout" tool_tip="Script advarsler og fejl" />
-	<button label="" label_selected="" name="health" tool_tip="Helbred" />
-	<text name="HealthText" tool_tip="Helbred">
-		100%
-	</text>
-	<button label="" label_selected="" name="no_fly" tool_tip="Flyvning ikke tilladt" />
-	<button label="" label_selected="" name="no_build"
-	     tool_tip="Bygning og placering af objekter ikke tilladt" />
-	<button label="" label_selected="" name="no_scripts"
-	     tool_tip="Afvikling af scripts ikke tilladt" />
-	<button label="" label_selected="" name="restrictpush"
-	     tool_tip="Ikke tilladt at skubbe" />
-	<button label="" label_selected="" name="status_no_voice"
-	     tool_tip="Stemme chat ikke tilgængelig" />
-	<button label="" label_selected="" name="buyland" tool_tip="Køb denne parcel" />
-	<button label="" name="menubar_search_bevel_bg" />
-	<line_editor label="Søg" name="search_editor" tool_tip="Søg [SECOND_LIFE]" />
-	<button label="" label_selected="" name="search_btn" tool_tip="Søg [SECOND_LIFE]" />
-	<string name="packet_loss_tooltip">
+	</panel.string>
+	<panel.string name="packet_loss_tooltip">
 		Packet Loss
-	</string>
-	<string name="bandwidth_tooltip">
+	</panel.string>
+	<panel.string name="bandwidth_tooltip">
 		BÃ¥ndbredde
-	</string>
+	</panel.string>
+	<panel.string name="time">
+		[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
+	</panel.string>
+	<panel.string name="timeTooltip">
+		[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
+	</panel.string>
+	<panel.string name="buycurrencylabel">
+		L$ [AMT]
+	</panel.string>
+	<button label="" label_selected="" name="buycurrency" tool_tip="My Balance: Click to buy more L$"/>
+	<text name="TimeText" tool_tip="Nuværende tid (Pacific)">
+		12:00
+	</text>
+	<button name="volume_btn" tool_tip="Kontrol for generel lydstyrke"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/da/role_actions.xml b/indra/newview/skins/default/xui/da/role_actions.xml
index e4c8c4b93bdcf166cb24f490b4579a96d4b691e7..5ec90a759aacaee2967c5b38e5174a6970c3ff92 100644
--- a/indra/newview/skins/default/xui/da/role_actions.xml
+++ b/indra/newview/skins/default/xui/da/role_actions.xml
@@ -1,201 +1,76 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <role_actions>
-	<action_set
-	     description="Disse rettigheder inkluderer adgang til at tilføje og fjerne gruppe medlemmer og tillade nye medlemmer at melde sig ind uden invitation"
-	     name="Membership">
-		<action description="Invitér personer til denne gruppe"
-		     longdescription="Invitér personer til denne gruppe via &apos;Invitér ny person...&apos; knappen i fanen: medlemmer &amp; roller &gt; underfanen: medlemmer"
-		     name="member invite" />
-		<action description="Fjern medlemmer fra denne gruppe"
-		     longdescription="Fjern medlemmer i denne gruppe via &apos;Fjern fra gruppe&apos; knappen i fanen: medlemmer &amp; roller &gt; underfanen: medlemmer. En ejer kan fjerne alle undtagen en anden ejer. Hvis du ikke er en ejer, kan et medlem kun fjernes fra gruppen hvis, og kun hvis, medlemmet kun findes i Alle rollen, og ikke i andre roller. for at fjerne medlemmer fra roller, skal du have rettigheden &apos;Fjern medlemmer fra roller&apos;"
-		     name="member eject" />
-		<action
-		     description="Åben eller luk for &apos;fri tilmelding&apos; og ændre &apos;tilmeldingsgebyr&apos;"
-		     longdescription="Åben for &apos;fri tilmelding&apos; så alle kan blive medlem af gruppen, eller luk for &apos;fri tilmelding&apos; så kun inveterede kan blive medlem. ændre &apos;tilmeldingsgebyr&apos; i gruppe opsætningsbilledet sektionen i Generelt fanen"
-		     name="member options" />
+	<action_set description="Disse rettigheder inkluderer adgang til at tilføje og fjerne gruppe medlemmer og tillade nye medlemmer at melde sig ind uden invitation" name="Membership">
+		<action description="Invitér personer til denne gruppe" longdescription="Invitér personer til denne gruppe via &apos;Invitér ny person...&apos; knappen i fanen: medlemmer &amp; roller &gt; underfanen: medlemmer" name="member invite"/>
+		<action description="Fjern medlemmer fra denne gruppe" longdescription="Fjern medlemmer i denne gruppe via &apos;Fjern fra gruppe&apos; knappen i fanen: medlemmer &amp; roller &gt; underfanen: medlemmer. En ejer kan fjerne alle undtagen en anden ejer. Hvis du ikke er en ejer, kan et medlem kun fjernes fra gruppen hvis, og kun hvis, medlemmet kun findes i Alle rollen, og ikke i andre roller. for at fjerne medlemmer fra roller, skal du have rettigheden &apos;Fjern medlemmer fra roller" name="member eject"/>
+		<action description="Åben eller luk for &apos;fri tilmelding&apos; og ændre &apos;tilmeldingsgebyr&apos;" longdescription="Åben for &apos;fri tilmelding&apos; så alle kan blive medlem af gruppen, eller luk for &apos;fri tilmelding&apos; så kun inveterede kan blive medlem. ændre &apos;tilmeldingsgebyr&apos; i gruppe opsætningsbilledet sektionen i Generelt fanen" name="member options"/>
 	</action_set>
-	<action_set
-	     description="Disse rettigheder inkluderer adgang til at tilføje, fjerne og ændre gruppe-roller, tilføje og fjerne medlemmer i roller, og give rettigheder til roller"
-	     name="Roles">
-		<action description="Opret nye roller"
-		     longdescription="Opret nye roller i fanen: Medlemmer &amp; roller &gt; under-fanen: Roller."
-		     name="role create" />
-		<action description="Slet roller"
-		     longdescription="Slet roller i roller i fanen: Medlemmer &amp; roller &gt; under-fanen: Roller."
-		     name="role delete" />
-		<action
-		     description="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen"
-		     longdescription="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen. Dette håndteres i bunden af fanen:: Medlemmer &amp; roller &gt; under-fanen: Roller efter at have valgt en rolle."
-		     name="role properties" />
-		<action description="Tildel andre samme roller som dig selv"
-		     longdescription="Tildel andre medlemmer til roller i Tildelte roller sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Medlemmer. Et medlem med denne rettighed kan kun tildele andre medlemmer en rolle som tildeleren allerede selv har."
-		     name="role assign member limited" />
-		<action description="Tildele medlemmer enhver rolle"
-		     longdescription="Tildel andre medlemmer til en hvilken som helst rolle i Tildelte roller sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Medlemmer. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - roller som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed."
-		     name="role assign member" />
-		<action description="Fjern medlemmer fra roller"
-		     longdescription="Fjern medlemmer fra roller i in Tildelte roller sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Medlemmer. Ejere kan ikke fjernes."
-		     name="role remove member" />
-		<action description="Tildel og fjern rettigheder for roller"
-		     longdescription="Tildel og fjern rettigheder for roller i tilladte rettigheder sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Roller. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - rettigheder som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du gør inden du tildeler denne rettighed."
-		     name="role change actions" />
+	<action_set description="Disse rettigheder inkluderer adgang til at tilføje, fjerne og ændre gruppe-roller, tilføje og fjerne medlemmer i roller, og give rettigheder til roller" name="Roles">
+		<action description="Opret nye roller" longdescription="Opret nye roller i fanen: Medlemmer &amp; roller &gt; under-fanen: Roller." name="role create"/>
+		<action description="Slet roller" longdescription="Slet roller i roller i fanen: Medlemmer &amp; roller &gt; under-fanen: Roller." name="role delete"/>
+		<action description="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen" longdescription="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen. Dette håndteres i bunden af fanen:: Medlemmer &amp; roller &gt; under-fanen: Roller efter at have valgt en rolle." name="role properties"/>
+		<action description="Tildel andre samme roller som dig selv" longdescription="Tildel andre medlemmer til roller i Tildelte roller sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Medlemmer. Et medlem med denne rettighed kan kun tildele andre medlemmer en rolle som tildeleren allerede selv har." name="role assign member limited"/>
+		<action description="Tildele medlemmer enhver rolle" longdescription="Tildel andre medlemmer til en hvilken som helst rolle i Tildelte roller sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Medlemmer. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - roller som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="role assign member"/>
+		<action description="Fjern medlemmer fra roller" longdescription="Fjern medlemmer fra roller i in Tildelte roller sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Medlemmer. Ejere kan ikke fjernes." name="role remove member"/>
+		<action description="Tildel og fjern rettigheder for roller" longdescription="Tildel og fjern rettigheder for roller i tilladte rettigheder sektionen på fanen: Medlemmer &amp; roller &gt; under-fanen: Roller. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - rettigheder som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du gør inden du tildeler denne rettighed." name="role change actions"/>
 	</action_set>
-	<action_set
-	     description="Disse rettigheder inkluderer adgang til at ændre denne gruppes identitetsoplysninger, som f.eks. om gruppen kan ses af andre, gruppens fundats og billede."
-	     name="Group Identity">
-		<action description="Ændre fundats, billede og &apos;Vis i søgning&apos;"
-		     longdescription="Ændre fundats og &apos;Vis i søgning&apos;. Dette gøres under fanen Generelt."
-		     name="group change identity" />
+	<action_set description="Disse rettigheder inkluderer adgang til at ændre denne gruppes identitetsoplysninger, som f.eks. om gruppen kan ses af andre, gruppens fundats og billede." name="Group Identity">
+		<action description="Ændre fundats, billede og &apos;Vis i søgning&apos;" longdescription="Ændre fundats og &apos;Vis i søgning&apos;. Dette gøres under fanen Generelt." name="group change identity"/>
 	</action_set>
-	<action_set
-	     description="Disse rettigheder inkluderer adgang til dedikere, ændre og sælge land fra denne gruppes besiddelser. For at åbne &apos;Om land...&apos; vinduet, højre-klik på jorden og vælg &apos;Om land...&apos;, eller klik på &apos;Om land...&apos; i &apos;Verden&apos; menuen."
-	     name="Parcel Management">
-		<action description="Dedikér eller køb land til gruppen"
-		     longdescription="Dedikér eller køb land til gruppen. Dette gøres i fanen Generelt i &apos;Om land...&apos;."
-		     name="land deed" />
-		<action description="Forlad land og overgiv det til guvernør Linden"
-		     longdescription="Forlad land og overgiv det til guvernør Linden. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan overdrage gruppe-ejet land via fanen Generelt i &apos;Om land...&apos; til Lindens ejerskab uden salg! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed."
-		     name="land release" />
-		<action description="Sæt land til salg"
-		     longdescription="Sæt land til salg. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan sælge gruppe-ejet land via fanen Generelt i &apos;Om land...&apos;! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed."
-		     name="land set sale info" />
-		<action description="Opdel og saml parceller"
-		     longdescription="Opdel og saml parceller. Dette gøres ved at højreklikke på jorden og vælge &apos;Redigér terræn&apos;"
-		     name="land divide join" />
+	<action_set description="Disse rettigheder inkluderer adgang til dedikere, ændre og sælge land fra denne gruppes besiddelser. For at åbne &apos;Om land...&apos; vinduet, højre-klik på jorden og vælg &apos;Om land...&apos;, eller klik på &apos;Om land...&apos; i &apos;Verden&apos; menuen." name="Parcel Management">
+		<action description="Dedikér eller køb land til gruppen" longdescription="Dedikér eller køb land til gruppen. Dette gøres i fanen Generelt i &apos;Om land...&apos;." name="land deed"/>
+		<action description="Forlad land og overgiv det til guvernør Linden" longdescription="Forlad land og overgiv det til guvernør Linden. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan overdrage gruppe-ejet land via fanen Generelt i &apos;Om land...&apos; til Lindens ejerskab uden salg! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land release"/>
+		<action description="Sæt land til salg" longdescription="Sæt land til salg. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan sælge gruppe-ejet land via fanen Generelt i &apos;Om land...&apos;! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land set sale info"/>
+		<action description="Opdel og saml parceller" longdescription="Opdel og saml parceller. Dette gøres ved at højreklikke på jorden og vælge &apos;Redigér terræn&apos;" name="land divide join"/>
 	</action_set>
-	<action_set
-	     description="Disse rettigheder inkluderer adgang til at ændre parcel navn og en række parametre om f.eks. landingspunkt, teleports m.v.."
-	     name="Parcel Identity">
-		<action
-		     description="Angive om sted skal vises i &apos;vis i Søg steder&apos; og angivelse af kategori"
-		     longdescription="Angive om sted skal vises i &apos;vis i Søg steder&apos; og angivelse af kategori i &apos;Om land...&apos; &gt; Indstillinger fanen."
-		     name="land find places" />
-		<action
-		     description="Ændre parcel navn, beskrivelse, og &apos;Vis i Søg&apos; opsætning"
-		     longdescription="Ændre parcel navn, beskrivelse, og &apos;Vis i Søg&apos; opsætning. Dette håndteres i &apos;Om land...&apos;&gt; Opsætning fanen."
-		     name="land change identity" />
-		<action description="Sæt landingspunkt og teleport muligheder"
-		     longdescription="På en gruppe-ejet parcel kan medlemmer, med en rolle med denne rettighed, sætte landingspunktet og dermed angive hvor indkommende teleporte skal ankomme og desuden angive dealjer om teleporte. Dette håndteres i &apos;Om land...&apos;&gt; Opsætning fanen."
-		     name="land set landing point" />
+	<action_set description="Disse rettigheder inkluderer adgang til at ændre parcel navn og en række parametre om f.eks. landingspunkt, teleports m.v.." name="Parcel Identity">
+		<action description="Angive om sted skal vises i &apos;vis i Søg steder&apos; og angivelse af kategori" longdescription="Angive om sted skal vises i &apos;vis i Søg steder&apos; og angivelse af kategori i &apos;Om land...&apos; &gt; Indstillinger fanen." name="land find places"/>
+		<action description="Ændre parcel navn, beskrivelse, og &apos;Vis i Søg&apos; opsætning" longdescription="Ændre parcel navn, beskrivelse, og &apos;Vis i Søg&apos; opsætning. Dette håndteres i &apos;Om land...&apos;&gt; Opsætning fanen." name="land change identity"/>
+		<action description="Sæt landingspunkt og teleport muligheder" longdescription="På en gruppe-ejet parcel kan medlemmer, med en rolle med denne rettighed, sætte landingspunktet og dermed angive hvor indkommende teleporte skal ankomme og desuden angive dealjer om teleporte. Dette håndteres i &apos;Om land...&apos;&gt; Opsætning fanen." name="land set landing point"/>
 	</action_set>
-	<action_set
-	     description="Disse rettigheder inkluderer adgang til at opsætte parcel indstillinger som f.eks. &apos;Lave objekter&apos;, &apos;Redigere terræn&apos;, samt musik og media indstillinger."
-	     name="Parcel Settings">
-		<action description="Ændre musik og media indstillinger"
-		     longdescription="Ændre oplysninger om streaming musik og film i &apos;Om land...&apos; &gt; Media fanen."
-		     name="land change media" />
-		<action description="Ændre rettighed til &apos;Redigere terræn&apos;"
-		     longdescription="Ændre rettighed til &apos;Redigere terræn&apos;. *ADVARSEL*: Redigere terræn&apos; kan give alle og enhver ret til at ændre terræn og opsætte og flytte Linden planter. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed."
-		     name="land edit" />
-		<action
-		     description="Ændre diverse andre indstillinger i &apos;Om land...&apos;&gt; indstillinger fanen"
-		     longdescription="Giv adgang til at ændre &apos;Sikker (ingen skade)&apos;, &apos;Flyve&apos;, og tillad andre beboere at: &apos;Lave objekter&apos;, &apos;Redigere terræn&apos;, &apos;Lave landemærker&apos;, og &apos;Køre scripts&apos; på gruppe-ejet land via About Land &gt; Indstillinger fanen."
-		     name="land options" />
+	<action_set description="Disse rettigheder inkluderer adgang til at opsætte parcel indstillinger som f.eks. &apos;Lave objekter&apos;, &apos;Redigere terræn&apos;, samt musik og media indstillinger." name="Parcel Settings">
+		<action description="Ændre musik og media indstillinger" longdescription="Ændre oplysninger om streaming musik og film i &apos;Om land...&apos; &gt; Media fanen." name="land change media"/>
+		<action description="Ændre rettighed til &apos;Redigere terræn&apos;" longdescription="Ændre rettighed til &apos;Redigere terræn&apos;. *ADVARSEL*: Redigere terræn&apos; kan give alle og enhver ret til at ændre terræn og opsætte og flytte Linden planter. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land edit"/>
+		<action description="Ændre diverse andre indstillinger i &apos;Om land...&apos;&gt; indstillinger fanen" longdescription="Giv adgang til at ændre &apos;Sikker (ingen skade)&apos;, &apos;Flyve&apos;, og tillad andre beboere at: &apos;Lave objekter&apos;, &apos;Redigere terræn&apos;, &apos;Lave landemærker&apos;, og &apos;Køre scripts&apos; på gruppe-ejet land via About Land &gt; Indstillinger fanen." name="land options"/>
 	</action_set>
-	<action_set
-	     description="Disse rettigheder inkluderer adgang til at medlemmer kan omgå restriktioner på gruppe-ejede parceller."
-	     name="Parcel Powers">
-		<action description="Tillad altid &apos;Rediger Terræn&apos;"
-		     longdescription="Medlemmer med denne rolle har adgang til at redigere terræn på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen."
-		     name="land allow edit land" />
-		<action description="Tillad altid at &apos;Flyve&apos;"
-		     longdescription="Medlemmer med denne rolle har adgang til at flyve på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen."
-		     name="land allow fly" />
-		<action description="Tillad altid &apos;Lave objekter&apos;"
-		     longdescription="Medlemmer med denne rolle har adgang til at lave nye objekter på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen."
-		     name="land allow create" />
-		<action description="Tillad altid at &apos;Lave landemærker&apos;"
-		     longdescription="Medlemmer med denne rolle har adgang til at lave landemærker på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen."
-		     name="land allow landmark" />
-		<action description="Tillad altid &apos;sæt til hjem&apos; på gruppe-ejet land"
-		     longdescription="Medlemmer med denne rolle har adgang til at benytte &apos;Verden&apos; menuen og vælge &apos;sæt til hjem&apos; på en parcel der er dedikeret til gruppen."
-		     name="land allow set home" />
+	<action_set description="Disse rettigheder inkluderer adgang til at medlemmer kan omgå restriktioner på gruppe-ejede parceller." name="Parcel Powers">
+		<action description="Tillad altid &apos;Rediger Terræn&apos;" longdescription="Medlemmer med denne rolle har adgang til at redigere terræn på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen." name="land allow edit land"/>
+		<action description="Tillad altid at &apos;Flyve&apos;" longdescription="Medlemmer med denne rolle har adgang til at flyve på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen." name="land allow fly"/>
+		<action description="Tillad altid &apos;Lave objekter&apos;" longdescription="Medlemmer med denne rolle har adgang til at lave nye objekter på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen." name="land allow create"/>
+		<action description="Tillad altid at &apos;Lave landemærker&apos;" longdescription="Medlemmer med denne rolle har adgang til at lave landemærker på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på &apos;Om land...&apos; &gt; Indstillinger fanen." name="land allow landmark"/>
+		<action description="Tillad altid &apos;sæt til hjem&apos; på gruppe-ejet land" longdescription="Medlemmer med denne rolle har adgang til at benytte &apos;Verden&apos; menuen og vælge &apos;sæt til hjem&apos; på en parcel der er dedikeret til gruppen." name="land allow set home"/>
 	</action_set>
-	<action_set
-	     description="Disse rettigheder inkluderer adgang til at medlemmer kan tillade eller forbyde adgang til gruppe-ejede parceller, inkluderende at &apos;fryse&apos; og udsmide beboere."
-	     name="Parcel Access">
-		<action description="Administrér adgangsregler for parceller"
-		     longdescription="Administrér adgangsregler for parceller i &apos;Om land&apos; &gt; &apos;Adgang&apos; fanen."
-		     name="land manage allowed" />
-		<action description="Administrér liste med blokerede beboere på parceller"
-		     longdescription="Administrér liste med blokerede beboere på parceller i &apos;Om land&apos; &gt; &apos;Adgang&apos; fanen."
-		     name="land manage banned" />
-		<action
-		     description="Ændre indstillinger for at &apos;Sælge adgang til&apos; parceller"
-		     longdescription="Ændre indstillinger for at &apos;Sælge adgang til&apos; parceller i &apos;Om land&apos; &gt; &apos;Adgang&apos; fanen."
-		     name="land manage passes" />
-		<action
-		     description="Adgang til at smide beboere ud og &apos;fryse&apos; beboere på parceller"
-		     longdescription="Medlermmer med denne rolle kan håndtere beboere som ikke er velkomne på gruppe-ejet parceller ved at højreklikke på dem, vælge Mere&gt;, og vælge &apos;Smid ud...&apos; eller &apos;Frys...&apos;."
-		     name="land admin" />
+	<action_set description="Disse rettigheder inkluderer adgang til at medlemmer kan tillade eller forbyde adgang til gruppe-ejede parceller, inkluderende at &apos;fryse&apos; og udsmide beboere." name="Parcel Access">
+		<action description="Administrér adgangsregler for parceller" longdescription="Administrér adgangsregler for parceller i &apos;Om land&apos; &gt; &apos;Adgang&apos; fanen." name="land manage allowed"/>
+		<action description="Administrér liste med blokerede beboere på parceller" longdescription="Administrér liste med blokerede beboere på parceller i &apos;Om land&apos; &gt; &apos;Adgang&apos; fanen." name="land manage banned"/>
+		<action description="Ændre indstillinger for at &apos;Sælge adgang til&apos; parceller" longdescription="Ændre indstillinger for at &apos;Sælge adgang til&apos; parceller i &apos;Om land&apos; &gt; &apos;Adgang&apos; fanen." name="land manage passes"/>
+		<action description="Adgang til at smide beboere ud og &apos;fryse&apos; beboere på parceller" longdescription="Medlemmer med denne rolle kan håndtere beboere som ikke er velkomne på gruppe-ejet parceller ved at højreklikke på dem, vælge Mere&gt;, og vælge &apos;Smid ud...&apos; eller &apos;Frys...&apos;." name="land admin"/>
 	</action_set>
-	<action_set
-	     description="Disse rettigheder inkluderer mulighed til at tillade beboere at returnere objekter og placere og flytte Linden planter. Dette er brugbart for at medlemmer kan holde orden og tilpasse landskabet. Denne mulighed skal benyttes med varsomhed, da der ikke er mulighed for at fortryde returnering af objekter og ændringer i landskabet."
-	     name="Parcel Content">
-		<action description="Returnere objekter ejet af gruppen"
-		     longdescription="Returne objekter på gruppe-ejede parceller der er ejet af gruppen. Dette håndteres i &apos;Om land...&apos;&gt; &apos;Objekter&apos; fanen."
-		     name="land return group owned" />
-		<action description="Returnere objekter der er sat til &apos;gruppe&apos;"
-		     longdescription="Returnere objekter på gruppe-ejede parceller, der er &apos;sat til gruppe&apos; i &apos;Om land...&apos;&gt; &apos;Objekter&apos; fanen."
-		     name="land return group set" />
-		<action description="Returnere objekter der ikke er ejet af andre"
-		     longdescription="Returnere objekter på gruppe-ejede parceller, der er &apos;Ejet af andre&apos; i &apos;Om land...&apos;&gt; &apos;Objekter&apos; fanen."
-		     name="land return non group" />
-		<action description="Ændre landskab med Linden planter"
-		     longdescription="Mulighed for at ændre landskabet ved at placere og flytte Linden træer, planter, og græs. Disse genstande kan findes i din beholdnings Library &gt; Objects mappe eller de kan oprettes via &apos;Byg&apos; knappen."
-		     name="land gardening" />
+	<action_set description="Disse rettigheder inkluderer mulighed til at tillade beboere at returnere objekter og placere og flytte Linden planter. Dette er brugbart for at medlemmer kan holde orden og tilpasse landskabet. Denne mulighed skal benyttes med varsomhed, da der ikke er mulighed for at fortryde returnering af objekter og ændringer i landskabet." name="Parcel Content">
+		<action description="Returnere objekter ejet af gruppen" longdescription="Returne objekter på gruppe-ejede parceller der er ejet af gruppen. Dette håndteres i &apos;Om land...&apos;&gt; &apos;Objekter&apos; fanen." name="land return group owned"/>
+		<action description="Returnere objekter der er sat til &apos;gruppe&apos;" longdescription="Returnere objekter på gruppe-ejede parceller, der er &apos;sat til gruppe&apos; i &apos;Om land...&apos;&gt; &apos;Objekter&apos; fanen." name="land return group set"/>
+		<action description="Returnere objekter der ikke er ejet af andre" longdescription="Returnere objekter på gruppe-ejede parceller, der er &apos;Ejet af andre&apos; i &apos;Om land...&apos;&gt; &apos;Objekter&apos; fanen." name="land return non group"/>
+		<action description="Ændre landskab med Linden planter" longdescription="Disse rettigheder inkluderer mulighed til at tillade beboere at returnere objekter og placere og flytte Linden planter. Dette er brugbart for at medlemmer kan holde orden og tilpasse landskabet. Denne mulighed skal benyttes med varsomhed, da der ikke er mulighed for at fortryde returnering af objekter og ændringer i landskabet." name="land gardening"/>
 	</action_set>
-	<action_set
-	     description="Disse rettigheder inkluderer mulighed til at dedikere, ændre og sælge gruppe-ejede objekter. Disse ændringer sker i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen."
-	     name="Object Management">
-		<action description="Dediker objekter til gruppe"
-		     longdescription="Dediker objekter til gruppe i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen."
-		     name="object deed" />
-		<action description="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter"
-		     longdescription="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen."
-		     name="object manipulate" />
-		<action description="Sæt gruppe-ejede objekter til salg"
-		     longdescription="Sæt gruppe-ejede objekter til salg i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen."
-		     name="object set sale" />
+	<action_set description="Disse rettigheder inkluderer mulighed til at dedikere, ændre og sælge gruppe-ejede objekter. Disse ændringer sker i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen." name="Object Management">
+		<action description="Dediker objekter til gruppe" longdescription="Dediker objekter til gruppe i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen." name="object deed"/>
+		<action description="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter" longdescription="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen." name="object manipulate"/>
+		<action description="Sæt gruppe-ejede objekter til salg" longdescription="Sæt gruppe-ejede objekter til salg i &apos;Rediger&apos;&gt; &apos;Generelt&apos; fanen." name="object set sale"/>
 	</action_set>
-	<action_set
-	     description="Disse rettigheder inkluderer mulighed til at håndtere betalinger for gruppen og styre adgang til gruppens kontobevægelser."
-	     name="Accounting">
-		<action description="Betale gruppe regninger og modtage gruppe udbytte"
-		     longdescription="Medlemmer med denne rolle vil automatisk betale gruppe regninger og modtage gruppe udbytte. Det betyder at de vil modtager en andel af indtægter fra salg af gruppe-ejet land og bidrage til betaling af gruppe-relaterede betalinger, som f.eks. betaling for at paceller vises i lister. "
-		     name="accounting accountable" />
+	<action_set description="Disse rettigheder inkluderer mulighed til at håndtere betalinger for gruppen og styre adgang til gruppens kontobevægelser." name="Accounting">
+		<action description="Betale gruppe regninger og modtage gruppe udbytte" longdescription="Medlemmer med denne rolle vil automatisk betale gruppe regninger og modtage gruppe udbytte. Det betyder at de vil modtager en andel af indtægter fra salg af gruppe-ejet land og bidrage til betaling af gruppe-relaterede betalinger, som f.eks. betaling for at paceller vises i lister. " name="accounting accountable"/>
 	</action_set>
-	<action_set
-	     description="Disse rettigheder inkluderer adgang til at kunne sende, modtage og se gruppe beskeder."
-	     name="Notices">
-		<action description="Send beskeder"
-		     longdescription="Medlemmer med denne rolle kan sende beskeder i &apos;Beskeder&apos; fanen."
-		     name="notices send" />
-		<action description="Modtage og se tidligere beskeder"
-		     longdescription="Medlemmer med denne rolle kan modtage og se tidligere beskeder i &apos;Beskeder&apos; fanen."
-		     name="notices receive" />
+	<action_set description="Disse rettigheder inkluderer adgang til at kunne sende, modtage og se gruppe beskeder." name="Notices">
+		<action description="Send beskeder" longdescription="Medlemmer med denne rolle kan sende beskeder i &apos;Beskeder&apos; fanen." name="notices send"/>
+		<action description="Modtage og se tidligere beskeder" longdescription="Medlemmer med denne rolle kan modtage og se tidligere beskeder i &apos;Beskeder&apos; fanen." name="notices receive"/>
 	</action_set>
-	<action_set
-	     description="Disse rettigheder inkluderer adgang til at kunne oprette forslag, stemme på forslag og se historik med forslag."
-	     name="Proposals">
-		<action description="Opret forslag"
-		     longdescription="Medlemmer med denne rolle kan oprette forslag som der kan stemmes om i &apos;Forslag&apos; fanen."
-		     name="proposal start" />
-		<action description="Stem på forslag"
-		     longdescription="Medlemmer med denne rolle kan stemme på forslag i &apos;Forslag&apos; fanen."
-		     name="proposal vote" />
+	<action_set description="Disse rettigheder inkluderer adgang til at kunne oprette forslag, stemme på forslag og se historik med forslag." name="Proposals">
+		<action description="Opret forslag" longdescription="Medlemmer med denne rolle kan oprette forslag som der kan stemmes om i &apos;Forslag&apos; fanen." name="proposal start"/>
+		<action description="Stem på forslag" longdescription="Medlemmer med denne rolle kan stemme på forslag i &apos;Forslag&apos; fanen." name="proposal vote"/>
 	</action_set>
-	<action_set
-	     description="Disse rettigheder styrer hvem der kan deltage i gruppe-chat og gruppe stemme-chat."
-	     name="Chat">
-		<action description="Deltage i gruppe-chat"
-		     longdescription="Medlemmer med denne rolle kan deltage i gruppe-chat sessioner"
-		     name="join group chat" />
-		<action description="Deltag i gruppe stemme-chat"
-		     longdescription="Medlemmer med denne rolle kan deltage i gruppe stemme-chat sessioner.  BEMÆRK: Medlemmet skal også have rollen &apos;Deltage i gruppe-chat&apos; for at denne rolle har effekt."
-		     name="join voice chat" />
-		<action description="Styr gruppe-chat"
-		     longdescription="Medlemmer med denne rolle kan kontrollere adgang og deltagelse i gruppe-chat og gruppe stemme-chat sessioner."
-		     name="moderate group chat" />
+	<action_set description="Disse rettigheder styrer hvem der kan deltage i gruppe-chat og gruppe stemme-chat." name="Chat">
+		<action description="Deltage i gruppe-chat" longdescription="Medlemmer med denne rolle kan deltage i gruppe-chat sessioner" name="join group chat"/>
+		<action description="Deltag i gruppe stemme-chat" longdescription="Medlemmer med denne rolle kan deltage i gruppe stemme-chat sessioner.  BEMÆRK: Medlemmet skal også have rollen &apos;Deltage i gruppe-chat&apos; for at denne rolle har effekt." name="join voice chat"/>
+		<action description="Styr gruppe-chat" longdescription="Medlemmer med denne rolle kan kontrollere adgang og deltagelse i gruppe-chat og gruppe stemme-chat sessioner." name="moderate group chat"/>
 	</action_set>
 </role_actions>
diff --git a/indra/newview/skins/default/xui/da/sidepanel_appearance.xml b/indra/newview/skins/default/xui/da/sidepanel_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..27708f5c7a3c0a02347291bf73fd833c2c1ff448
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/sidepanel_appearance.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Sæt" name="appearance panel">
+	<string name="No Outfit" value="Intet sæt"/>
+	<filter_editor label="Filtrér sæt" name="Filter"/>
+	<panel name="bottom_panel">
+		<button name="options_gear_btn" tool_tip="Vis flere muligheder"/>
+		<button name="newlook_btn" tool_tip="Tilføj nyt sæt"/>
+		<dnd_button name="trash_btn" tool_tip="Fjern valgte del"/>
+		<button label="Bær" name="wear_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/da/sidepanel_inventory.xml b/indra/newview/skins/default/xui/da/sidepanel_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ae029f5939e11f8fe5352cab35d3bde03ef47601
--- /dev/null
+++ b/indra/newview/skins/default/xui/da/sidepanel_inventory.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Ting" name="objects panel">
+	<panel label="" name="sidepanel__inventory_panel">
+		<panel name="button_panel">
+			<button label="Profil" name="info_btn"/>
+			<button label="Bær" name="wear_btn"/>
+			<button label="Afspil" name="play_btn"/>
+			<button label="Teleportér" name="teleport_btn"/>
+		</panel>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml
index 0beb54032f3d9b9fb8034321a9375ab23f92466c..5f3762c224f9767589479550735f8e6e1a77f391 100644
--- a/indra/newview/skins/default/xui/de/floater_about.xml
+++ b/indra/newview/skins/default/xui/de/floater_about.xml
@@ -73,7 +73,8 @@ google-perftools Copyright (c) 2005, Google Inc.
 
 Alle Rechte vorbehalten. Details siehe licenses.txt.
 
-Voice-Chat-Audiocoding: Polycom(R) Siren14(TM) (ITU-T Empf.G.722.1 Anhang C)
+Voice-Chat-Audiocoding: Polycom(R) Siren14(TM)
+(ITU-T Empf.G.722.1 Anhang C)
 			</text_editor>
 		</panel>
 	</tab_container>
diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml
index cd5abf86e05ac32ceab66701694af88297b2497f..aec117990198220339bdbc9322fcf293cf6f113a 100644
--- a/indra/newview/skins/default/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_about_land.xml
@@ -12,7 +12,7 @@
 	<floater.string name="Remaining">
 		Restzeit
 	</floater.string>
-	<tab_container name="landtab">
+	<tab_container name="landtab" width="489" tab_min_width="40">
 		<panel label="ALLGEMEIN" name="land_general_panel">
 			<panel.string name="new users only">
 				Nur neue Benutzer
@@ -83,7 +83,7 @@
 			<text name="GroupText">
 				Leyla Linden
 			</text>
-			<button label="Festlegen" label_selected="Einstellen..." name="Set..."/>
+			<button label="Festlegen" label_selected="Einstellen..." name="Set..." width="90"/>
 			<check_box label="Übertragung an Gruppe zulassen" name="check deed" tool_tip="Ein Gruppen-Officer kann dieses Land der Gruppe übertragen. Das Land wird dann über die Landzuteilung der Gruppe verwaltet."/>
 			<button label="Übertragung" label_selected="Übertragen..." name="Deed..." tool_tip="Sie können Land nur übertragen, wenn Sie in der ausgewählten Gruppe Officer sind."/>
 			<check_box label="Eigentümer leistet Beitrag durch Übertragung" name="check contrib" tool_tip="Wenn das Land an die Gruppe übertragen wird, trägt der frühere Eigentümer ausreichend Landnutzungsrechte bei, um es zu halten."/>
@@ -101,10 +101,10 @@
 			<text name="For sale to">
 				Zum Verkauf an: [BUYER]
 			</text>
-			<text name="Sell with landowners objects in parcel." width="210">
+			<text name="Sell with landowners objects in parcel." left_delta="-50" width="240">
 				Objekte sind im Verkauf eingeschlossen
 			</text>
-			<text name="Selling with no objects in parcel." width="237">
+			<text name="Selling with no objects in parcel." width="260">
 				Objekte sind im Verkauf nicht eingeschlossen
 			</text>
 			<button bottom="-222" label="Landverkauf abbrechen" label_selected="Landverkauf abbrechen" name="Cancel Land Sale"/>
@@ -230,7 +230,7 @@ werden.
 			<text left="14" name="Owned by parcel owner:" width="200">
 				Im Eigentum des Parzellenbesitzers:
 			</text>
-			<text left="204" name="owner_objects_text" width="48">
+			<text left="204" left_delta="200" name="owner_objects_text" width="48">
 				[COUNT]
 			</text>
 			<button label="Anzeigen" label_selected="Anzeigen" name="ShowOwner" right="-135" width="60"/>
@@ -257,7 +257,7 @@ werden.
 			<text left="204" name="selected_objects_text" width="48">
 				[COUNT]
 			</text>
-			<text left="4" name="Autoreturn" width="380">
+			<text left="4" name="Autoreturn" width="410">
 				Objekte anderer Einwohner automatisch zurückgeben (Minuten, 0 für aus):
 			</text>
 			<line_editor name="clean other time" right="-10" width="56"/>
@@ -269,7 +269,7 @@ werden.
 			<name_list name="owner list">
 				<name_list.columns label="Typ" name="type"/>
 				<name_list.columns label="Name" name="name"/>
-				<name_list.columns label="Zählen" name="count"/>
+				<name_list.columns label="Zählen" name="count" width="80"/>
 				<name_list.columns label="Aktuellster" name="mostrecent"/>
 			</name_list>
 		</panel>
@@ -368,7 +368,7 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 			<text name="landing_point">
 				Landepunkt: [LANDING]
 			</text>
-			<button label="Festlegen" label_selected="Festlegen" left="234" name="Set" tool_tip="Legt den Landepunkt fest, an dem Besucher ankommen. Legt die Position Ihres Avatars innerhalb dieser Parzelle fest." width="70"/>
+			<button label="Festlegen" label_selected="Festlegen" left="234" right="-88" name="Set" tool_tip="Legt den Landepunkt fest, an dem Besucher ankommen. Legt die Position Ihres Avatars innerhalb dieser Parzelle fest." width="70"/>
 			<button label="Löschen" label_selected="Löschen" left="312" name="Clear" tool_tip="Landepunkt löschen" width="70"/>
 			<text name="Teleport Routing: ">
 				Teleport-Route:
@@ -444,7 +444,7 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 				Zugang zu dieser Parzelle
 			</text>
 			<check_box label="Öffentlichen Zugang erlauben [MATURITY]" name="public_access"/>
-			<text name="Only Allow">
+			<text name="Only Allow" width="400">
 				Zugang auf Einwohner beschränken, die überprüft wurden von:
 			</text>
 			<check_box label="Zahlungsinformation gespeichert [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Nicht identifizierte Einwohner verbannen."/>
diff --git a/indra/newview/skins/default/xui/de/floater_animation_preview.xml b/indra/newview/skins/default/xui/de/floater_animation_preview.xml
index ce971d158dd40588f65ca459bd57839b633e0aff..be573b524fcae954879cb20c40fd3da3cf04d872 100644
--- a/indra/newview/skins/default/xui/de/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/de/floater_animation_preview.xml
@@ -180,6 +180,6 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden.
 
 Wir empfehlen exportierte BVH-Dateien aus Poser 4.
 	</text>
-	<button label="Hochladen ([AMOUNT] L$)" name="ok_btn"/>
-	<button label="Abbrechen" name="cancel_btn"/>
+	<button label="Hochladen ([AMOUNT] L$)" name="ok_btn" width="160"/>
+	<button label="Abbrechen" name="cancel_btn" left="180" width="88"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml
index bc78ccd7f8b7b2164f6bd2260b893181378312d1..f1281bfb9b35ade4451d50e42a11bf3fd82cc3d4 100644
--- a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml
@@ -21,11 +21,12 @@
 	<tab_container name="ResidentChooserTabs">
 		<panel label="Suchen" name="SearchPanel">
 			<text name="InstructSearchResidentName">
-				Geben Sie einen Teil des Namens einer Person ein:
+				Geben Sie einen Teil des Namens einer
+Person ein:
 			</text>
-			<line_editor bottom_delta="-36" name="Edit"/>
-			<button label="Los" label_selected="Los" name="Find"/>
-			<scroll_list bottom_delta="-79" height="74" name="SearchResults"/>
+			<line_editor bottom_delta="-76" name="Edit" top_pad="16"/>
+			<button label="Los" label_selected="Los" name="Find" top="70"/>
+			<scroll_list top="80" height="54" name="SearchResults"/>
 		</panel>
 		<panel label="Freunde" name="FriendsPanel">
 			<text name="InstructSelectFriend">
diff --git a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml
index 3be5194a8f402e7cfad1ca2b95986559b2067f5d..cf1b809aa1d125dc0e304dc6582e6a373a451bc9 100644
--- a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml
@@ -3,10 +3,10 @@
 	<floater.string name="InvalidAvatar">
 		UNGÜLTIGER AVATAR
 	</floater.string>
-	<text name="label">
+	<text name="label" width="120">
 		Gebackene Texturen
 	</text>
-	<text name="composite_label" width="150">
+	<text name="composite_label" width="170">
 		Zusammengesetzte Texturen
 	</text>
 	<button label="Läd IDs in Konsole ab" label_selected="Abladen" name="Dump"/>
@@ -23,7 +23,8 @@
 			<texture_picker label="Auge" name="eyes_iris"/>
 			<texture_picker label="Alpha: Augen" name="eyes_alpha"/>
 			<texture_picker label="Oberkörper" name="upper-baked"/>
-			<texture_picker label="Oberkörper: Körperfarbe" name="upper_bodypaint"/>
+			<texture_picker label="Oberkörper: Körperfarbe" name="upper_bodypaint" width=
+			"140"/>
 			<texture_picker label="Unterhemd" name="upper_undershirt"/>
 			<texture_picker label="Handschuhe" name="upper_gloves"/>
 			<texture_picker label="Hemd" name="upper_shirt"/>
@@ -31,7 +32,8 @@
 			<texture_picker label="Alpha: Oben" name="upper_alpha"/>
 			<texture_picker label="Obere Tattoos" name="upper_tattoo"/>
 			<texture_picker label="Unterkörper" name="lower-baked"/>
-			<texture_picker label="Unterkörper: Körperfarbe" name="lower_bodypaint"/>
+			<texture_picker label="Unterkörper: Körperfarbe" name="lower_bodypaint" width=
+			"140"/>
 			<texture_picker label="Unterhose" name="lower_underpants"/>
 			<texture_picker label="Socken" name="lower_socks"/>
 			<texture_picker label="Schuhe" name="lower_shoes"/>
diff --git a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml
index 218c66d298c0c4c0e76e5f46e96619c6e0d7b8cf..1d766ac07b1b55df0b4e45d9774039f29f25256c 100644
--- a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml
@@ -43,7 +43,7 @@
 		Jeder:
 	</text>
 	<check_box label="Kopieren" name="everyone_copy"/>
-	<text name="NextOwnerLabel">
+	<text name="NextOwnerLabel" top="160" left="10">
 		Nächster Eigentümer:
 	</text>
 	<check_box label="Bearbeiten" name="next_owner_modify"/>
diff --git a/indra/newview/skins/default/xui/de/floater_buy_currency.xml b/indra/newview/skins/default/xui/de/floater_buy_currency.xml
index aa6201ec26fafe83f40fea6cf1ac21f449b4f575..72959c7a0c743f0abed6f1807c4fb6845c7bf573 100644
--- a/indra/newview/skins/default/xui/de/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/de/floater_buy_currency.xml
@@ -59,8 +59,9 @@
 	</text>
 	<button label="Jetzt kaufen" name="buy_btn"/>
 	<button label="Abbrechen" name="cancel_btn"/>
-	<text name="info_cannot_buy">
-		Kauf nicht möglich
+	<text name="info_cannot_buy" left="160" width="200" height="40">
+		Kauf nicht
+möglich
 	</text>
 	<button label="Weiter zum Internet" name="error_web"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_buy_land.xml b/indra/newview/skins/default/xui/de/floater_buy_land.xml
index 4c59f1e8e64fdf761bd4a8bcad9bec4169b5f40c..5efa557869aa9dcc590a33b22e57f74acee29634 100644
--- a/indra/newview/skins/default/xui/de/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_buy_land.xml
@@ -3,41 +3,41 @@
 	<text name="region_name_label">
 		Region:
 	</text>
-	<text left="580" name="region_name_text">
+	<text left="680" name="region_name_text" left_delta="140">
 		(unbekannt)
 	</text>
 	<text name="region_type_label">
 		Typ:
 	</text>
-	<text left="580" name="region_type_text">
+	<text left="680" name="region_type_text" left_delta="140">
 		(unbekannt)
 	</text>
 	<text name="estate_name_label">
 		Grundstück:
 	</text>
-	<text left="580" name="estate_name_text">
+	<text left="680" name="estate_name_text" left_delta="140">
 		(unbekannt)
 	</text>
 	<text name="estate_owner_label" right="600" width="200">
 		Grundstückseigentümer:
 	</text>
-	<text left="580" name="estate_owner_text">
+	<text left="680" name="estate_owner_text" left_delta="140">
 		(unbekannt)
 	</text>
-	<text name="resellable_changeable_label">
+	<text name="resellable_changeable_label" left="410">
 		Gekauftes Land in dieser Region:
 	</text>
-	<text name="resellable_clause">
+	<text name="resellable_clause" left="410">
 		Wiederverkauf möglich oder nicht möglich.
 	</text>
-	<text name="changeable_clause">
+	<text name="changeable_clause" left="410">
 		Darft oder darf nicht zusammengelegt/unterteilt werden.
 	</text>
-	<text name="covenant_text">
+	<text name="covenant_text" left="410">
 		Sie müssen dem Grundstücksvertrag zustimmen:
 	</text>
 	<text left="470" name="covenant_timestamp_text"/>
-	<text_editor name="covenant_editor">
+	<text_editor name="covenant_editor" left="470">
 		Wird geladen...
 	</text_editor>
 	<check_box label="Ich stimme dem obigen Vertrag zu." name="agree_covenant"/>
@@ -67,7 +67,7 @@ Objekte im Verkauf eingeschlossen
 	<text name="error_message">
 		Irgendetwas stimmt nicht.
 	</text>
-	<button label="Gehe zu Website" name="error_web"/>
+	<button label="Gehe zu Website" name="error_web" top_delta="136"/>
 	<text name="account_action">
 		Macht Sie zum Premium-Mitglied.
 	</text>
@@ -79,8 +79,9 @@ Objekte im Verkauf eingeschlossen
 		<combo_box.item label="7,50 US$/Monat, vierteljährliche Abrechnung" name="US$7.50/month,billedquarterly"/>
 		<combo_box.item label="6,00 US$/Monat, jährliche Abrechnung" name="US$6.00/month,billedannually"/>
 	</combo_box>
-	<text name="land_use_action">
-		Erhöhen Sie Ihre monatlichen Landnutzungsgebühren auf 40 US$/month.
+	<text name="land_use_action" top="270" height="36">
+		Erhöhen Sie Ihre monatlichen Landnutzungsgebühren 
+auf 40 US$/month.
 	</text>
 	<text name="land_use_reason">
 		Sie besitzen 1309 m² Land.
diff --git a/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml
index 7f4dc4a79e9c262e57f36479669dec19834e92a3..9baf30fb5340012101dad22d71f0f6caf29a19d4 100644
--- a/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml
+++ b/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml
@@ -66,7 +66,7 @@
 				Key-Zeit:
 			</text>
 			<spinner label="Std." name="WLCurKeyHour" />
-			<spinner label="Min." name="WLCurKeyMin" />
+			<spinner label="Min." name="WLCurKeyMin" label_width="100" width="66"/>
 			<text name="WLCurKeyTimeText2">
 				Key-Voreinstellung:
 			</text>
@@ -79,8 +79,8 @@
 				Zykluslänge:
 			</text>
 			<spinner label="Std." name="WLLengthOfDayHour" />
-			<spinner label="Min." name="WLLengthOfDayMin" />
-			<spinner label="Sek." name="WLLengthOfDaySec" />
+			<spinner label="Min." name="WLLengthOfDayMin" label_width="100" width="66"/>
+			<spinner label="Sek." name="WLLengthOfDaySec" label_width="100" width="66"/>
 			<text name="DayCycleText3">
 				Vorschau:
 			</text>
diff --git a/indra/newview/skins/default/xui/de/floater_god_tools.xml b/indra/newview/skins/default/xui/de/floater_god_tools.xml
index 716165bb6b8d4098b7985ccd280cedf4923bda37..30b151ca584001a5625de0cb6c99da254f1edb76 100644
--- a/indra/newview/skins/default/xui/de/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_god_tools.xml
@@ -11,15 +11,15 @@
 			</text>
 			<check_box label="Startbereich Einleitung" name="check prelude" tool_tip="Diese Region zu einem Startbereich machen."/>
 			<check_box label="Sonne fest" name="check fixed sun" tool_tip="Fixiert den Sonnenstand (wie in „Region/Grundstück“ &gt; „Terrain“."/>
-			<check_box height="32" label="Zuhause auf Teleport  zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner weg teleportieren, ihr Zuhause auf Zielposition setzen."/>
-			<check_box bottom_delta="-32" label="Sichtbar" name="check visible" tool_tip="Diese Region für Nicht-Götter sichtbar machen."/>
+			<check_box label="Zuhause auf Teleport zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner weg teleportieren, ihr Zuhause auf Zielposition setzen."/>
+			<check_box label="Sichtbar" name="check visible" tool_tip="Diese Region für Nicht-Götter sichtbar machen."/>
 			<check_box label="Schaden" name="check damage" tool_tip="Schaden in dieser Region aktivieren."/>
 			<check_box label="Trafficüberwachung blockieren" name="block dwell" tool_tip="In dieser Region die Traffic-Berechnung abschalten."/>
 			<check_box label="Terraformen blockieren" name="block terraform" tool_tip="Das Terraformen von Land verbieten (Benutzen Sie dies um Leuten das Terraformen ihres Landes zu verbieten)"/>
 			<check_box label="Sandkasten" name="is sandbox" tool_tip="Sandkastenregion ein-/ausschalten."/>
-			<button label="Terrain formen" label_selected="Terrain formen" name="Bake Terrain" tool_tip="Das aktuelle Terrain als Standard speichern." width="118"/>
-			<button label="Terrain zurücksetzen" label_selected="Terrain zurücksetzen" name="Revert Terrain" tool_tip="Das aktuelle Terrain mit dem Standard ersetzen." width="118"/>
-			<button label="Terrain tauschen" label_selected="Terrain tauschen" name="Swap Terrain" tool_tip="Aktuelles Terrain gegen Standard austauschen." width="118"/>
+			<button label="Terrain formen" label_selected="Terrain formen" name="Bake Terrain" tool_tip="Das aktuelle Terrain als Standard speichern." width="120"/>
+			<button label="Terrain zurücksetzen" label_selected="Terrain zurücksetzen" name="Revert Terrain" tool_tip="Das aktuelle Terrain mit dem Standard ersetzen." width="120"/>
+			<button label="Terrain tauschen" label_selected="Terrain tauschen" name="Swap Terrain" tool_tip="Aktuelles Terrain gegen Standard austauschen." width="120"/>
 			<text name="estate id">
 				Grundstücks-ID:
 			</text>
@@ -32,11 +32,11 @@
 			</text>
 			<line_editor left_delta="110" name="gridposx" tool_tip="Die X-Rasterposition dieser Region" width="35"/>
 			<line_editor left_delta="45" name="gridposy" tool_tip="Die Y-Rasterposition dieser Region" width="35"/>
-			<text name="Redirect to Grid: ">
+			<text name="Redirect to Grid: " width="110">
 				Auf Raster umleiten:
 			</text>
-			<line_editor left_delta="110" name="redirectx" width="35"/>
-			<line_editor left_delta="45" name="redirecty" width="35"/>
+			<line_editor left_delta="110" name="redirectx" width="35" left_pad="0"/>
+			<line_editor left_delta="45" name="redirecty" width="35" />
 			<text font="SansSerifSmall" name="billable factor text">
 				Abrechnungsfaktor:
 			</text>
@@ -45,8 +45,8 @@
 			</text>
 			<button label="Aktualisieren" label_selected="Aktualisieren" name="Refresh" tool_tip="Klicken Sie hier, um die obigen Informationen zu aktualisieren."/>
 			<button label="Übernehmen" label_selected="Übernehmen" name="Apply" tool_tip="Klicken Sie hier, um die obigen Änderungen zu übernehmen."/>
-			<button label="Region auswählen" label_selected="Region auswählen" left="136" name="Select Region" tool_tip="Die gesamte Region mit dem Landwerkzeug auswählen." width="130"/>
-			<button label="Automatisch speichern" label_selected="Automatisch speichern" left="136" name="Autosave now" tool_tip="gzipped-Status im Autosave-Verzeichnis speichern." width="130"/>
+			<button label="Region auswählen" label_selected="Region auswählen" left="136" name="Select Region" tool_tip="Die gesamte Region mit dem Landwerkzeug auswählen." width="132"/>
+			<button label="Automatisch speichern" label_selected="Automatisch speichern" left="136" name="Autosave now" tool_tip="gzipped-Status im Autosave-Verzeichnis speichern." width="132"/>
 		</panel>
 		<panel label="Objekte" name="objects">
 			<panel.string name="no_target">
diff --git a/indra/newview/skins/default/xui/de/floater_image_preview.xml b/indra/newview/skins/default/xui/de/floater_image_preview.xml
index 7f66234dab3c44805fd45ff9bcceac29d64dfbd6..fd675f88089ca7cd52b40e877b6fd4715bc72fd5 100644
--- a/indra/newview/skins/default/xui/de/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/de/floater_image_preview.xml
@@ -28,5 +28,5 @@ Speichern Sie das Bild als 24 Bit Targa (.tga).
 	</text>
 	<check_box label="Verlustfreie Komprimierung verwenden" name="lossless_check"/>
 	<button label="Abbrechen" name="cancel_btn"/>
-	<button label="Hochladen ([AMOUNT] L$)" name="ok_btn"/>
+	<button label="Hochladen ([AMOUNT] L$)" name="ok_btn" width="146"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_inspect.xml b/indra/newview/skins/default/xui/de/floater_inspect.xml
index 939aa964c0f2ef422e847da1889c81245a95fdca..da97ceb2d82e2cf171469847cc0220a6b69c4c0a 100644
--- a/indra/newview/skins/default/xui/de/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/de/floater_inspect.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater min_width="450" name="inspect" title="OBJEKTE UNTERSUCHEN">
+<floater min_width="460" name="inspect" title="OBJEKTE UNTERSUCHEN" width="460">
 	<floater.string name="timeStamp">
 		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
 	</floater.string>
 	<scroll_list name="object_list" tool_tip="Wählen Sie ein Objekt aus dieser Liste, um es in der Second Life-Welt zu markieren">
 		<scroll_list.columns label="Objektname" name="object_name"/>
-		<scroll_list.columns label="Besitzer" name="owner_name"/>
+		<scroll_list.columns label="Besitzer" name="owner_name" />
 		<scroll_list.columns label="Ersteller" name="creator_name"/>
-		<scroll_list.columns label="Erstellungsdatum" name="creation_date"/>
+		<scroll_list.columns label="Erstellungsdatum" name="creation_date" width="116"/>
 	</scroll_list>
 	<button label="Besitzerprofil einsehen..." name="button owner" tool_tip="Profil des Besitzers des markierten Objekts einsehen" width="155"/>
 	<button label="Erstellerprofil einsehen..." left="175" name="button creator" tool_tip="Profil des ursprünglichen Erstellers des markierten Objekts einsehen" width="155"/>
diff --git a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml
index e894f666c926968ac5ad2d0811fac6d4b56bdc64..f98e23bbc4cb6ce5534f7f82fe7134fef2cb48d8 100644
--- a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml
@@ -59,10 +59,10 @@
 		Nächster Eigentümer:
 	</text>
 	<check_box label="Bearbeiten" name="CheckNextOwnerModify"/>
-	<check_box label="Kopieren" left_delta="85" name="CheckNextOwnerCopy"/>
+	<check_box label="Kopieren" left_delta="55" name="CheckNextOwnerCopy"/>
 	<check_box label="Wiederverkaufen" name="CheckNextOwnerTransfer"/>
 	<check_box label="Zum Verkauf" name="CheckPurchase"/>
-	<combo_box name="combobox sale copy">
+	<combo_box name="combobox sale copy" left_pad="25">
 		<combo_box.item label="Kopieren" name="Copy"/>
 		<combo_box.item label="Original" name="Original"/>
 	</combo_box>
diff --git a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml
index 1d6f690d3c1f47f5586d8e7a48a0684b124e7692..73c21edc67336541aa22c4cda55192e6cd2b4746 100644
--- a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="script ed float" title="LSL-REFERENZ">
 	<check_box label="Cursor folgen" name="lock_check"/>
-	<combo_box label="Sperren" name="history_combo"/>
+	<combo_box label="Sperren" name="history_combo" left_pad="50" width="80"/>
 	<button label="Zurück" name="back_btn"/>
 	<button label="Weiter" name="fwd_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_media_browser.xml b/indra/newview/skins/default/xui/de/floater_media_browser.xml
index 18adb5ee7f3e9ef85d38be3d9ec8a161f32c69a3..2d438dfe21d6e7ef5a5a62ba50ec52131e4706dc 100644
--- a/indra/newview/skins/default/xui/de/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/de/floater_media_browser.xml
@@ -14,8 +14,8 @@
 			<button label="Los" name="go"/>
 		</layout_panel>
 		<layout_panel name="time_controls">
-			<button label="zurückspulen" name="rewind"/>
-			<button label="anhalten" name="stop"/>
+			<button label="zurückspulen" name="rewind" width="100"/>
+			<button label="anhalten" name="stop" left_pad="20"/>
 			<button label="vorwärts" name="seek"/>
 		</layout_panel>
 		<layout_panel name="parcel_owner_controls">
diff --git a/indra/newview/skins/default/xui/de/floater_mem_leaking.xml b/indra/newview/skins/default/xui/de/floater_mem_leaking.xml
index b730146aa62bb07738f4b57bfe19c4df1d8285c9..fdc9b950b618d4991452817230e6b74bf5414214 100644
--- a/indra/newview/skins/default/xui/de/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/de/floater_mem_leaking.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="MemLeak" title="SPEICHERVERLUST SIMULIEREN">
-	<spinner label="Verlustgeschwindigkeit (Bytes pro Frame):" name="leak_speed"/>
-	<spinner label="Max. Speicherverlust (MB):" name="max_leak"/>
+	<spinner label="Verlustgeschwindigkeit (Bytes pro Frame):" name="leak_speed" label_width="224"/>
+	<spinner label="Max. Speicherverlust (MB):" name="max_leak" label_width="224"/>
 	<text name="total_leaked_label">
 		Aktueller Speicherverlust:[SIZE] KB
 	</text>
diff --git a/indra/newview/skins/default/xui/de/floater_openobject.xml b/indra/newview/skins/default/xui/de/floater_openobject.xml
index f0b6aa498ba19885f60aee160a596e58e5f320f1..c3e7052283810d787cba438f1295aaf907586f45 100644
--- a/indra/newview/skins/default/xui/de/floater_openobject.xml
+++ b/indra/newview/skins/default/xui/de/floater_openobject.xml
@@ -3,6 +3,6 @@
 	<text name="object_name">
 		[DESC]:
 	</text>
-	<button label="In Inventar kopieren" label_selected="In Inventar kopieren" name="copy_to_inventory_button" width="132"/>
-	<button label="Kopieren und anziehen" label_selected="Kopieren und anziehen" left="150" name="copy_and_wear_button" width="132"/>
+	<button label="In Inventar kopieren" label_selected="In Inventar kopieren" name="copy_to_inventory_button" width="120"/>
+	<button label="Kopieren und anziehen" label_selected="Kopieren und anziehen" left_pad="6" name="copy_and_wear_button" width="136"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_pay_object.xml b/indra/newview/skins/default/xui/de/floater_pay_object.xml
index 92f5ea415e432b063ea7f66c9be260525f7779e9..bc714361cc2e13a625a47625402c77290f812358 100644
--- a/indra/newview/skins/default/xui/de/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/de/floater_pay_object.xml
@@ -17,10 +17,10 @@
 	<text left="105" name="object_name_text">
 		...
 	</text>
-	<button label="1 L$" label_selected="1 L$" left="105" name="fastpay 1"/>
-	<button label="5 L$" label_selected="5 L$" left="190" name="fastpay 5"/>
-	<button label="10 L$" label_selected="10 L$" left="105" name="fastpay 10"/>
-	<button label="20 L$" label_selected="20 L$" left="190" name="fastpay 20"/>
+	<button label="1 L$" label_selected="1 L$" name="fastpay 1"/>
+	<button label="5 L$" label_selected="5 L$" name="fastpay 5"/>
+	<button label="10 L$" label_selected="10 L$" name="fastpay 10"/>
+	<button label="20 L$" label_selected="20 L$" name="fastpay 20"/>
 	<text name="amount text">
 		Oder Betrag auswählen:
 	</text>
diff --git a/indra/newview/skins/default/xui/de/floater_postcard.xml b/indra/newview/skins/default/xui/de/floater_postcard.xml
index 37a0a0ad1de25716ee3eac5296861b1f43c84c3a..91e0bb813386292daca54d713b64bc78f793a04b 100644
--- a/indra/newview/skins/default/xui/de/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/de/floater_postcard.xml
@@ -3,19 +3,19 @@
 	<text name="to_label">
 		E-Mail des Empfängers:
 	</text>
-	<line_editor left="145" name="to_form" width="125"/>
+	<line_editor left_delta="145" name="to_form" width="125"/>
 	<text name="from_label">
 		Ihre E-Mail:
 	</text>
-	<line_editor left="145" name="from_form" width="125"/>
+	<line_editor left_delta="145" name="from_form" width="125"/>
 	<text name="name_label">
 		Ihr Name:
 	</text>
-	<line_editor left="145" name="name_form" width="125"/>
+	<line_editor left_delta="145" name="name_form" width="125"/>
 	<text name="subject_label">
 		Betreff:
 	</text>
-	<line_editor label="Betreff hier eingeben." left="145" name="subject_form" width="125"/>
+	<line_editor label="Betreff hier eingeben." left_delta="145" name="subject_form" width="125"/>
 	<text name="msg_label">
 		Nachricht:
 	</text>
@@ -25,7 +25,7 @@
 	<check_box label="Im Web veröffentlichen" name="allow_publish_check" tool_tip="Veröffentlicht diese Postkarte im Web."/>
 	<check_box label="Ab-18-Inhalt" name="mature_check" tool_tip="Diese Postkarte enthält nicht jugendfreie Inhalte."/>
 	<button label="?" name="publish_help_btn"/>
-	<text name="fine_print">
+	<text name="fine_print" bottom_delta="21" height="140">
 		Wenn sich der Empfänger bei SL anmeldet, erhalten Sie einen Empfehlungsbonus.
 	</text>
 	<button label="Abbrechen" name="cancel_btn"/>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_animation.xml b/indra/newview/skins/default/xui/de/floater_preview_animation.xml
index e98faeb1f4fa283b3305674ccafa7a88668b040f..b2e9c2e66d315d43ed247d6874e27deae662b75a 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_animation.xml
@@ -3,10 +3,10 @@
 	<floater.string name="Title">
 		Animation: [NAME]
 	</floater.string>
-	<text name="desc txt">
+	<text name="desc txt" width="140">
 		Beschreibung:
 	</text>
-	<line_editor left="98" name="desc" width="189"/>
+	<line_editor left="108" name="desc" width="160"/>
 	<button label="In Welt abspielen" label_selected="Stopp" name="Anim play btn" tool_tip="Diese Animation so wiedergeben, dass andere sie sehen können." width="116"/>
 	<button label="Lokal wiedergeben" label_selected="Stopp" left="171" name="Anim audition btn" tool_tip="Diese Animation so wiedergeben, dass nur Sie sie sehen." width="116"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
index 51c41a320900414b3778403f7237e24e0bce8585..1426a33d1dab5ee29c2e80096a29eaf29959eb4d 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
@@ -36,7 +36,7 @@
 	<text name="replace_text" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht&apos;s“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht&apos;s sagen“ und die zugehörige Geste wird abgespielt.">
 		Ersetzen mit:
 	</text>
-	<line_editor name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht&apos;s“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht&apos;s sagen“ und die zugehörige Geste wird abgespielt."/>
+	<line_editor name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht&apos;s“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht&apos;s sagen“ und die zugehörige Geste wird abgespielt." left_delta="94" width="160"/>
 	<text name="key_label">
 		Tastenkürzel:
 	</text>
@@ -45,8 +45,8 @@
 	<text name="library_label">
 		Bibliothek:
 	</text>
-	<scroll_list name="library_list"/>
-	<button label="Hinzufügen &gt;&gt;" name="add_btn"/>
+	<scroll_list name="library_list" width="166"/>
+	<button label="Hinzufügen &gt;&gt;" name="add_btn" left_pad="6" width="94"/>
 	<text name="steps_label">
 		Schritte:
 	</text>
diff --git a/indra/newview/skins/default/xui/de/floater_report_abuse.xml b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
index 3edf5959a22c6ff8162e13a12116b8a783fcbe30..f4718669678136d5c3364701a6e8a6a3e656222f 100644
--- a/indra/newview/skins/default/xui/de/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/de/floater_report_abuse.xml
@@ -23,7 +23,8 @@
 		{128.1, 128.1, 15.4}
 	</text>
 	<text bottom_delta="-38" height="32" name="select_object_label">
-		Klicken Sie auf die Schaltfläche, dann auf das entsprechende Objekt:
+		Klicken Sie auf die Schaltfläche, dann auf das entsprechende 
+Objekt:
 	</text>
 	<button label="" label_selected="" name="pick_btn" tool_tip="Objektauswahl – Wählen Sie ein Objekt als Thema dieses Berichts aus"/>
 	<text name="object_name_label">
@@ -95,7 +96,7 @@
 	<text name="bug_aviso">
 		Bitte beschreiben Sie alles so genau wie möglich.
 	</text>
-	<text_editor bottom_delta="-136" height="130" name="details_edit"/>
+	<text_editor bottom_delta="-136" height="70" name="details_edit"/>
 	<text bottom_delta="-20" name="incomplete_title">
 		* Unvollständige Berichte werden nicht bearbeitet
 	</text>
diff --git a/indra/newview/skins/default/xui/de/floater_script_preview.xml b/indra/newview/skins/default/xui/de/floater_script_preview.xml
index 27c40aff0757549e10ddbb7e3fd98a0df41f3944..1ea3803aea658d9df26c9e5462d32aba4a4022c8 100644
--- a/indra/newview/skins/default/xui/de/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/de/floater_script_preview.xml
@@ -3,7 +3,7 @@
 	<floater.string name="Title">
 		Skript: [NAME]
 	</floater.string>
-	<text name="desc txt">
+	<text name="desc txt" width="120">
 		Beschreibung:
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_sell_land.xml b/indra/newview/skins/default/xui/de/floater_sell_land.xml
index 2bc7356e65c4a9675ac6666ba6fef8caacf77ea6..a2c86e7bb0b19d7696b5f546e38a977c78341fcd 100644
--- a/indra/newview/skins/default/xui/de/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_sell_land.xml
@@ -5,13 +5,13 @@
 			<text name="info_parcel_label">
 				Parzelle:
 			</text>
-			<text bottom_delta="-5" height="16" name="info_parcel">
+			<text bottom_delta="-5" height="16" name="info_parcel" left="70">
 				PARZELLENNAME
 			</text>
 			<text name="info_size_label">
 				Größe:
 			</text>
-			<text bottom_delta="-21" height="32" name="info_size">
+			<text bottom_delta="-21" height="32" name="info_size" left="70">
 				[AREA] m².
 			</text>
 			<text bottom_delta="-57" height="28" name="info_action">
@@ -20,7 +20,7 @@
 			<text name="price_label">
 				1. Preis festlegen:
 			</text>
-			<text name="price_text">
+			<text name="price_text" >
 				Einen angemessenen Preis auswählen.
 			</text>
 			<text name="price_ld">
diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml
index 80573d69ada2764cdf0a6a0fc4a4fdb2d6f596a5..b48c9a77c8d9940e503a4a0bb40f33429c80d85b 100644
--- a/indra/newview/skins/default/xui/de/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml
@@ -60,7 +60,7 @@
 	<spinner label="Höhe" name="snapshot_height"/>
 	<check_box label="Seitenverhältnis beibehalten" name="keep_aspect_check"/>
 	<slider label="Bildqualität" name="image_quality_slider"/>
-	<text name="layer_type_label" width="63">
+	<text name="layer_type_label" width="66">
 		Aufnehmen:
 	</text>
 	<combo_box label="Bildlayer" left="73" name="layer_types" width="132">
diff --git a/indra/newview/skins/default/xui/de/floater_stats.xml b/indra/newview/skins/default/xui/de/floater_stats.xml
index dcea484e13d7c8aa3dbbf87a6a3ebc35eac02262..1eb2dd42884b3cb98a3d937b16ed2b29c7ba9010 100644
--- a/indra/newview/skins/default/xui/de/floater_stats.xml
+++ b/indra/newview/skins/default/xui/de/floater_stats.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Statistics" title="STATISTIKEN">
-	<scroll_container name="statistics_scroll">
-		<container_view name="statistics_view">
+<floater name="Statistics" title="STATISTIKEN" width="280">
+	<scroll_container name="statistics_scroll" width="280">
+		<container_view name="statistics_view" width="280">
 			<stat_view label="Basic" name="basic">
 				<stat_bar label="FPS" name="fps"/>
 				<stat_bar label="Bandbreite" name="bandwidth"/>
diff --git a/indra/newview/skins/default/xui/de/floater_telehub.xml b/indra/newview/skins/default/xui/de/floater_telehub.xml
index 923b4c0079f0971ff80909d366fa9bce8bfbb983..4d3c96bc87b80247f036b798b0cb622616234965 100644
--- a/indra/newview/skins/default/xui/de/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/de/floater_telehub.xml
@@ -6,15 +6,15 @@
 	<text name="status_text_not_connected">
 		Kein Telehub verbunden.
 	</text>
-	<text name="help_text_connected">
+	<text name="help_text_connected" width="300">
 		Klicken Sie zum Entfernen auf „Trennen“.
 	</text>
 	<text bottom_delta="-18" height="38" name="help_text_not_connected">
 		Wählen Sie ein Objekt und klicken Sie auf
 „Mit Telehub verbinden“.
 	</text>
-	<button label="Mit Telehub verbinden" name="connect_btn" width="122"/>
-	<button label="Trennen" left="142" name="disconnect_btn" width="98"/>
+	<button label="Mit Telehub verbinden" name="connect_btn" width="134"/>
+	<button label="Trennen" left="152" name="disconnect_btn" width="88"/>
 	<text name="spawn_points_text" width="230">
 		Spawn-Punkte (Positionen, nicht Objekte):
 	</text>
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
index b2f8cbed45f60ea3809573634ff12e00d4de29e4..b5c02cce0be67dcf471d20176ae7d7c660eb8679 100644
--- a/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -363,7 +363,7 @@
 			<text name="edit_object">
 				Objekteigenschaften bearbeiten:
 			</text>
-			<check_box label="Flexibler Weg" name="Flexible1D Checkbox Ctrl" tool_tip="Bewirkt, dass sich das Objekt um die Z-Achse biegen kann. (Nur Client-Seite)"/>
+			<check_box label="Flexibler Pfad" name="Flexible1D Checkbox Ctrl" tool_tip="Bewirkt, dass sich das Objekt um die Z-Achse biegen kann. (Nur Client-Seite)"/>
 			<spinner label="Weichheit" name="FlexNumSections"/>
 			<spinner label="Schwerkraft" name="FlexGravity"/>
 			<spinner label="Ziehen" name="FlexFriction"/>
diff --git a/indra/newview/skins/default/xui/de/floater_url_entry.xml b/indra/newview/skins/default/xui/de/floater_url_entry.xml
index 392d53a33d81ae7f87afba7a7407e916f15ea0e5..f5fa449c85de03b7f9bfd064e6b324c75e2876b7 100644
--- a/indra/newview/skins/default/xui/de/floater_url_entry.xml
+++ b/indra/newview/skins/default/xui/de/floater_url_entry.xml
@@ -3,10 +3,10 @@
 	<text name="media_label">
 		Medien-URL:
 	</text>
-	<button label="OK" name="ok_btn" />
-	<button label="Abbrechen" name="cancel_btn" width="75" />
-	<button label="Löschen" name="clear_btn" />
-	<text name="loading_label">
+	<button label="OK" name="ok_btn" width="30"/>
+	<button label="Abbrechen" name="cancel_btn" width="66" />
+	<button label="Löschen" name="clear_btn" left_pad="100"/>
+	<text name="loading_label" left="120">
 		Wird geladen...
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_water.xml b/indra/newview/skins/default/xui/de/floater_water.xml
index ed18dfdfff04abf11c236a4ad07438b469f768ea..ecd6d7ff3e0d20a15785aee349d5d9a952bb7a83 100644
--- a/indra/newview/skins/default/xui/de/floater_water.xml
+++ b/indra/newview/skins/default/xui/de/floater_water.xml
@@ -3,7 +3,7 @@
 	<floater.string name="WLDefaultWaterNames">
 		Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez
 	</floater.string>
-	<text name="KeyFramePresetsText">
+	<text name="KeyFramePresetsText" width="116">
 		Voreinstellungen:
 	</text>
 	<button label="Neu" label_selected="Neu" name="WaterNewPreset"/>
diff --git a/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml
index 35a5ec35f717fd95a0bdb92aabab299fe55e4463..13325095297dbd66c3712aac5070ae93c4ff24ef 100644
--- a/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml
+++ b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml
@@ -5,5 +5,5 @@
 	</text>
 	<line_editor name="whitelist_entry" tool_tip="Eine URL oder URL-Patten in die Whitelist eingeben"/>
 	<button label="OK" name="ok_btn"/>
-	<button label="Abbrechen" name="cancel_btn"/>
+	<button label="Abbrechen" name="cancel_btn" width="80"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/inspect_avatar.xml b/indra/newview/skins/default/xui/de/inspect_avatar.xml
index 489e2578678fe859072d7cfc4624af5aef787107..eedbdc99042b068f543416dec62fff6c5268b680 100644
--- a/indra/newview/skins/default/xui/de/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/de/inspect_avatar.xml
@@ -16,9 +16,9 @@
 		Dies ist meine Beschreibung und ich finde sie wirklich gut!
 	</text>
 	<slider name="volume_slider" tool_tip="Lautstärke" value="0.5"/>
-	<button label="Freund hinzufügen" name="add_friend_btn"/>
+	<button label="Freund hinzufügen" name="add_friend_btn" width="110"/>
 	<button label="IM" name="im_btn"/>
-	<button label="Mehr" name="view_profile_btn"/>
+	<button label="Mehr" name="view_profile_btn" width="44" left_delta="120"/>
 	<panel name="moderator_panel">
 		<button label="Voice deaktivieren" name="disable_voice"/>
 		<button label="Voice aktivieren" name="enable_voice"/>
diff --git a/indra/newview/skins/default/xui/de/inspect_group.xml b/indra/newview/skins/default/xui/de/inspect_group.xml
index 81d946be9d22b669f029ed864c4a95130fbf2717..badb47bf081cfb4d51748b664056d37614d8df46 100644
--- a/indra/newview/skins/default/xui/de/inspect_group.xml
+++ b/indra/newview/skins/default/xui/de/inspect_group.xml
@@ -24,7 +24,7 @@
 	</text>
 	<text name="group_details">
 		Eine Gruppe für Leute, die sich gerne mit Elchen unterhält.
-Hoch solln sie leben!  Elche forever!  Und auch Mungos!
+Hoch solln sie leben!  Elche forever! Und auch Mungos!
 	</text>
 	<text name="group_cost">
 		Mitgliedschaft: 123 L$
diff --git a/indra/newview/skins/default/xui/de/inspect_object.xml b/indra/newview/skins/default/xui/de/inspect_object.xml
index 61f2cc8dc941e9998e4d1d7ee84079b10169c7bb..bcf4b91527b310c672e460605b18b1a243aedc52 100644
--- a/indra/newview/skins/default/xui/de/inspect_object.xml
+++ b/indra/newview/skins/default/xui/de/inspect_object.xml
@@ -39,7 +39,7 @@ Besitzer secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
 	</text>
 	<button label="Kaufen" name="buy_btn"/>
 	<button label="Zahlen" name="pay_btn"/>
-	<button label="Kopie nehmen" name="take_free_copy_btn"/>
+	<button label="Kopie nehmen" name="take_free_copy_btn" width="100"/>
 	<button label="Berühren" name="touch_btn"/>
 	<button label="Sitzen" name="sit_btn"/>
 	<button label="Öffnen" name="open_btn"/>
diff --git a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
index eb4832770ead962db73aec2bb844eee1abc849c4..eeb5de749d7386b4c67688ed68fc46bc9d589931 100644
--- a/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
+++ b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="block_list_panel">
-	<text name="title_text">
+<panel name="block_list_panel" width="300">
+	<text name="title_text" left_pad="5" width="260">
 		Liste der ignorierten Einwohner
 	</text>
-	<scroll_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner"/>
+	<scroll_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner" width="290"/>
 	<button label="Einwohner ignorieren" label_selected="Einwohner ignorieren..." name="Block resident..." tool_tip="Wählen Sie einen Einwohner, um ihn zu ignorieren"/>
 	<button label="Objekt nach Name ignorieren" label_selected="Objekt nach Name ignorieren..." name="Block object by name..." tool_tip="Ein Objekt auswählen, um nach Namen zu ignorieren."/>
 	<button label="Freischalten" label_selected="Freischalten" name="Unblock" tool_tip="Einwohner oder Objekt von der Liste der ignorierten Einwohner oder Objekte entfernen"/>
diff --git a/indra/newview/skins/default/xui/de/panel_edit_alpha.xml b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml
index 4b48950341771110c8840ce498248cfb9d475757..b6c53be778fdb4037a42bc9a4ac8f4e053ae3e0e 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_alpha.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="edit_alpha_panel">
-	<panel name="avatar_alpha_color_panel">
-		<texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
-		<texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+<panel name="edit_alpha_panel" width="320">
+	<panel name="avatar_alpha_color_panel" width="300">
+		<texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="70"/>
+		<texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="66"/>
 		<texture_picker label="Kopf: Alpha" name="Head Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
-		<texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
-		<texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+		<texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="72"/>
+		<texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="70"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml
index c05a3a6645051e130006e2bc6c70a678b9cc7db5..12649e925130f68b309b9463d611dc5af96593a8 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/de/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="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
-		<texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
-		<texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+		<texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/>
+		<texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/>
+		<texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_group_invite.xml b/indra/newview/skins/default/xui/de/panel_group_invite.xml
index 8e1fb5e4b2ed11fdec474df8af3fb4e43713a675..fb357093bb161031c2f8970b21f752505586645d 100644
--- a/indra/newview/skins/default/xui/de/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_invite.xml
@@ -9,18 +9,18 @@
 	<panel.string name="already_in_group">
 		Einige der ausgewählten Einwohner sind bereits Gruppenmitglieder und haben aus diesem Grund keine Einladung erhalten.
 	</panel.string>
-	<text name="help_text">
+	<text name="help_text" top="10">
 		Sie können mehrere Einwohner auswählen, um diese in Ihre Gruppe einzuladen. Klicken Sie hierzu auf „Einwohnerliste öffnen“.
 	</text>
-	<button label="Einwohnerliste öffnen" name="add_button" tool_tip=""/>
+	<button label="Einwohnerliste öffnen" name="add_button" tool_tip="" top_delta="62"/>
 	<name_list name="invitee_list" tool_tip="Halten Sie zur Mehrfachauswahl die Strg-Taste gedrückt und klicken Sie auf die Namen."/>
 	<button label="Auswahl aus Liste löschen" name="remove_button" tool_tip="Die oben ausgewählten Einwohner von der Einladungsliste entfernen."/>
 	<text name="role_text">
 		Wählen Sie eine Rolle aus:
 	</text>
 	<combo_box name="role_name" tool_tip="Wählen Sie aus der Liste der Rollen, die Sie an Mitglieder vergeben dürfen."/>
-	<button label="Einladungen versenden" name="ok_button"/>
-	<button label="Abbrechen" name="cancel_button"/>
+	<button label="Einladungen versenden" name="ok_button" width="136"/>
+	<button label="Abbrechen" name="cancel_button" width="66"/>
 	<string name="GroupInvitation">
 		Gruppeneinladung
 	</string>
diff --git a/indra/newview/skins/default/xui/de/panel_group_land_money.xml b/indra/newview/skins/default/xui/de/panel_group_land_money.xml
index e9743c5d5dbf745ee0116783e3a8cdeb78d9cc54..d6cfb22cfe045212a96a9fa18579ba49d8f74296 100644
--- a/indra/newview/skins/default/xui/de/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_land_money.xml
@@ -30,13 +30,13 @@
 	<text name="total_contributed_land_value">
 		[AREA] m².
 	</text>
-	<text name="total_land_in_use_label">
+	<text name="total_land_in_use_label" left="28" width="180">
 		Insgesamt verwendetes Land:
 	</text>
 	<text name="total_land_in_use_value">
 		[AREA] m².
 	</text>
-	<text name="land_available_label">
+	<text name="land_available_label" left="4">
 		Land verfügbar:
 	</text>
 	<text name="land_available_value">
@@ -54,10 +54,10 @@
 	<text name="your_contribution_max_value">
 		([AMOUNT] max.)
 	</text>
-	<text name="group_over_limit_text">
+	<text name="group_over_limit_text" width="300">
 		Um das benutzte Land zu unterstützen, sind weitere Landnutzungsrechte erforderlich.
 	</text>
-	<text name="group_money_heading">
+	<text name="group_money_heading" left="10" top_pad="10">
 		Gruppen-L$
 	</text>
 	<tab_container name="group_money_tab_container">
diff --git a/indra/newview/skins/default/xui/de/panel_group_roles.xml b/indra/newview/skins/default/xui/de/panel_group_roles.xml
index 3103fd65b13f4e695dd25c080be6fee2649eedc1..b2e885e639299fb77a31c2a5e40a1634adf5ff3d 100644
--- a/indra/newview/skins/default/xui/de/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_roles.xml
@@ -15,8 +15,8 @@ um mehrere Mitglieder auszuwählen.
 			</panel.string>
 			<filter_editor label="Mitglieder filtern" name="filter_input"/>
 			<name_list name="member_list">
-				<name_list.columns label="Mitglied" name="name"/>
-				<name_list.columns label="Übereignung" name="donated"/>
+				<name_list.columns label="Mitglied" name="name" relative_width="0.30"/>
+				<name_list.columns label="Übereignung" name="donated" relative_width="0.33"/>
 				<name_list.columns label="Status" name="online"/>
 			</name_list>
 			<button label="Einladen" name="member_invite"/>
diff --git a/indra/newview/skins/default/xui/de/panel_groups.xml b/indra/newview/skins/default/xui/de/panel_groups.xml
index 95a2ef14f9b437a940af0244458447323f747c4e..f857a6c7ac39980cb11a34e84667f86e4aa7c825 100644
--- a/indra/newview/skins/default/xui/de/panel_groups.xml
+++ b/indra/newview/skins/default/xui/de/panel_groups.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel name="groups">
-	<text name="groupdesc">
+	<text name="groupdesc" width="300">
 		Die derzeit aktive Gruppe ist fett hervorgehoben.
 	</text>
-	<text name="groupcount">
+	<text name="groupcount" width="360">
 		Sie sind Mitglied bei [COUNT] Gruppen (von max. [MAX]).
 	</text>
 	<button label="IM/Anruf" name="IM" tool_tip="Beginnt eine Instant Message-Sitzung" />
diff --git a/indra/newview/skins/default/xui/de/panel_login.xml b/indra/newview/skins/default/xui/de/panel_login.xml
index bd82fc68724301b610e616c1ea2ec0c08f64a43c..2a6ea42c735df0f03a1da720f72398dcfe22c9a3 100644
--- a/indra/newview/skins/default/xui/de/panel_login.xml
+++ b/indra/newview/skins/default/xui/de/panel_login.xml
@@ -23,7 +23,7 @@
 			<text name="start_location_text">
 				Hier anfangen:
 			</text>
-			<combo_box name="start_location_combo">
+			<combo_box name="start_location_combo" width="150">
 				<combo_box.item label="Mein letzter Standort" name="MyLastLocation"/>
 				<combo_box.item label="Mein Zuhause" name="MyHome"/>
 				<combo_box.item label="&lt;Region eingeben&gt;" name="Typeregionname"/>
diff --git a/indra/newview/skins/default/xui/de/panel_media_settings_security.xml b/indra/newview/skins/default/xui/de/panel_media_settings_security.xml
index 8ff013f66bcd4d968f149b87a144268151689012..adc0d22ce6221434212a396a0760a273bfa9651b 100644
--- a/indra/newview/skins/default/xui/de/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/de/panel_media_settings_security.xml
@@ -2,7 +2,8 @@
 <panel label="Sicherheit" name="Media Settings Security">
 	<check_box initial_value="false" label="Nur Zugriff auf festgelegte URL-Muster zulassen" name="whitelist_enable"/>
 	<text name="home_url_fails_some_items_in_whitelist">
-		Einträge, die für die Startseite nicht akzeptiert werden, sind markiert:
+		Einträge, die für die Startseite nicht akzeptiert
+werden, sind markiert:
 	</text>
 	<button label="Hinzufügen" name="whitelist_add"/>
 	<button label="Löschen" name="whitelist_del"/>
diff --git a/indra/newview/skins/default/xui/de/panel_nearby_chat.xml b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml
index 699bddc6ebbd772267a9eb652a094e8ffdd911da..3f4f5a71b58088ddd07954ce45842f3b13b73326 100644
--- a/indra/newview/skins/default/xui/de/panel_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml
@@ -2,7 +2,7 @@
 <!-- All our XML is utf-8 encoded. -->
 <panel name="nearby_chat">
 	<panel name="chat_caption">
-		<text name="sender_name">
+		<text name="sender_name" width="200">
 			CHAT IN DER NÄHE
 		</text>
 	</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_notes.xml b/indra/newview/skins/default/xui/de/panel_notes.xml
index e6a63fc0c8211414e1eb740332f1d8d1723a4b1d..374c117cddba19fabb51644b9194769bcf5ca872 100644
--- a/indra/newview/skins/default/xui/de/panel_notes.xml
+++ b/indra/newview/skins/default/xui/de/panel_notes.xml
@@ -13,10 +13,10 @@
 			</scroll_container>
 		</layout_panel>
 		<layout_panel name="notes_buttons_panel">
-			<button label="Freund hinzufügen" name="add_friend" tool_tip="Bieten Sie dem Einwohner die Freundschaft an"/>
-			<button label="IM" name="im" tool_tip="Instant Messenger öffnen"/>
+			<button label="Freund hinzufügen" name="add_friend" tool_tip="Bieten Sie dem Einwohner die Freundschaft an" width="109"/>
+			<button label="IM" name="im" tool_tip="Instant Messenger öffnen" width="24"/>
 			<button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/>
-			<button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen"/>
+			<button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen" width="40"/>
 			<button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/>
 		</layout_panel>
 	</layout_stack>
diff --git a/indra/newview/skins/default/xui/de/panel_picks.xml b/indra/newview/skins/default/xui/de/panel_picks.xml
index a07bc170f6c98e6c4f75dae53aeaa92e3bb372b4..df68381082795784b3599bb64dd8dfc704c04bd2 100644
--- a/indra/newview/skins/default/xui/de/panel_picks.xml
+++ b/indra/newview/skins/default/xui/de/panel_picks.xml
@@ -11,7 +11,7 @@
 	</panel>
 	<panel name="buttons_cucks">
 		<button label="Info" name="info_btn" tool_tip="Auswahl-Information anzeigen"/>
-		<button label="Teleportieren" name="teleport_btn" tool_tip="Zu entsprechendem Standort teleportieren"/>
+		<button label="Teleportieren" name="teleport_btn" tool_tip="Zu entsprechendem Standort teleportieren" width="100"/>
 		<button label="Karte" name="show_on_map_btn" tool_tip="Den entsprechenden Standort auf der Karte anzeigen"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_places.xml b/indra/newview/skins/default/xui/de/panel_places.xml
index 8ee26f4e5fc1c766427cdcfafa680ff2d2d54dc2..0b3ed26dcef212765c0f77d4300cd8444d647741 100644
--- a/indra/newview/skins/default/xui/de/panel_places.xml
+++ b/indra/newview/skins/default/xui/de/panel_places.xml
@@ -5,11 +5,11 @@
 	<filter_editor label="Orte filtern" name="Filter"/>
 	<panel name="button_panel">
 		<button label="Teleportieren" name="teleport_btn" tool_tip="Zu ausgewähltem Standort teleportieren"/>
-		<button label="Karte" name="map_btn"/>
+		<button label="Karte" name="map_btn" width="60"/>
 		<button label="Bearbeiten" name="edit_btn" tool_tip="Landmarken-Info bearbeiten"/>
 		<button name="overflow_btn" tool_tip="Zusätzliche Optionen anzeigen"/>
 		<button label="Schließen" name="close_btn"/>
-		<button label="Abbrechen" name="cancel_btn"/>
-		<button label="Speichern" name="save_btn"/>
+		<button label="Abbrechen" name="cancel_btn" width="66"/>
+		<button label="Speichern" name="save_btn" width="66"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml
index 14d4e0158647191dfc872e28bc6864fda7ff674b..c9d6faf3babd9b9265b4ca9e9329f7d68f83c781 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml
@@ -8,7 +8,7 @@
 	</panel.string>
 	<check_box label="Blasen-Chat" name="bubble_text_chat"/>
 	<color_swatch name="background" tool_tip="Farbe für Blasen-Chat auswählen"/>
-	<slider label="Deckkraft" name="bubble_chat_opacity"/>
+	<slider label="Deckkraft" name="bubble_chat_opacity" label_width="66"/>
 	<text name="AspectRatioLabel1" tool_tip="Breite/Höhe">
 		Seitenverhältnis
 	</text>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_general.xml b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
index 490b0b296b46ec711fb24b77b75a12e191aaa54b..2af1b724728bd6b06ea5f9b4af236236f0b08bc8 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
@@ -19,7 +19,7 @@
 	<text name="language_textbox2">
 		(Erfordert Neustart)
 	</text>
-	<text name="maturity_desired_prompt">
+	<text name="maturity_desired_prompt" width="350">
 		Ich möchte auf Inhalt mit folgender Alterseinstufung zugreifen:
 	</text>
 	<text name="maturity_desired_textbox"/>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
index 0c0924026ed65aab0ce7c78fb428cb21cde007bb..43664f4f8a95b7fccac05c0aba67054b2eea361d 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml
@@ -23,5 +23,5 @@
 		Speicherort für Protokolle:
 	</text>
 	<button label="Durchsuchen" label_selected="Durchsuchen" name="log_path_button"/>
-	<button label="Ignorierte Einwohner/Objekte" name="block_list"/>
+	<button label="Ignorierte Einwohner/Objekte" name="block_list" width="180"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_profile.xml b/indra/newview/skins/default/xui/de/panel_profile.xml
index 82467eb570b461f0c64673a122cb37429a8e6aa7..4ce5ed8fba740f0fcb616252d990ed9f54688b29 100644
--- a/indra/newview/skins/default/xui/de/panel_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_profile.xml
@@ -38,10 +38,10 @@
 			</scroll_container>
 		</layout_panel>
 		<layout_panel name="profile_buttons_panel">
-			<button label="Freund hinzufügen" name="add_friend" tool_tip="Bieten Sie dem Einwohner die Freundschaft an"/>
-			<button label="IM" name="im" tool_tip="Instant Messenger öffnen"/>
+			<button label="Freund hinzufügen" name="add_friend" tool_tip="Bieten Sie dem Einwohner die Freundschaft an" width="109"/>
+			<button label="IM" name="im" tool_tip="Instant Messenger öffnen" width="24"/>
 			<button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/>
-			<button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen"/>
+			<button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen" width="36"/>
 			<button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/>
 		</layout_panel>
 		<layout_panel name="profile_me_buttons_panel">
diff --git a/indra/newview/skins/default/xui/de/panel_profile_view.xml b/indra/newview/skins/default/xui/de/panel_profile_view.xml
index 4d59c16e981f8ca6736c1763a7902b75adea5998..f02457dd805e4609b9c899415cdda9f517450bac 100644
--- a/indra/newview/skins/default/xui/de/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/de/panel_profile_view.xml
@@ -8,7 +8,7 @@
 	</string>
 	<text_editor name="user_name" value="(wird geladen...)"/>
 	<text name="status" value="Online"/>
-	<tab_container name="tabs">
+	<tab_container name="tabs" tab_min_width="60">
 		<panel label="PROFIL" name="panel_profile"/>
 		<panel label="AUSWAHL" name="panel_picks"/>
 		<panel label="NOTIZEN &amp; PRIVATSPHÄRE" name="panel_notes"/>
diff --git a/indra/newview/skins/default/xui/de/panel_region_covenant.xml b/indra/newview/skins/default/xui/de/panel_region_covenant.xml
index 14be8def7e1690278e2920a52e8fef747a813221..153082909aec12a97cc457ba6dfa4996cab90b0f 100644
--- a/indra/newview/skins/default/xui/de/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_covenant.xml
@@ -18,7 +18,7 @@
 	<text name="estate_cov_lbl">
 		Vertrag:
 	</text>
-	<text name="covenant_timestamp_text">
+	<text name="covenant_timestamp_text" width="320">
 		Letzte Änderung am Mittwoch, den 31. Dez. 1969, 16:00:00
 	</text>
 	<button label="?" name="covenant_help"/>
@@ -28,7 +28,7 @@
 	<button label="Zurücksetzen" name="reset_covenant"/>
 	<text name="covenant_help_text">
 		Änderungen am Vertrag werden für alle Parzellen auf dem 
-      Grundstück übernommen.
+Grundstück übernommen.
 	</text>
 	<text bottom_delta="-36" name="covenant_instructions">
 		Ziehen Sie eine Notizkarte an diese Stelle, um den Vertrag für dieses Grundstück zu ändern.
@@ -63,7 +63,7 @@
 	<text name="changeable_lbl">
 		Unterteilen:
 	</text>
-	<text name="changeable_clause">
+	<text name="changeable_clause" width="366">
 		Land in dieser Region kann nicht zusammengelegt/geteilt werden.
 	</text>
 	<string name="can_resell">
diff --git a/indra/newview/skins/default/xui/de/panel_region_debug.xml b/indra/newview/skins/default/xui/de/panel_region_debug.xml
index 40befab4ddd6b4cd168781d1a15be10d29b47f6f..920a5133088f5aff8bde02230525dc68df991937 100644
--- a/indra/newview/skins/default/xui/de/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_debug.xml
@@ -13,7 +13,7 @@
 	<check_box label="Physik deaktivieren" name="disable_physics_check" tool_tip="Physik in dieser Region deaktivieren"/>
 	<button label="?" name="disable_physics_help"/>
 	<button label="Übernehmen" name="apply_btn"/>
-	<text name="objret_text_lbl" width="105">
+	<text name="objret_text_lbl" width="110">
 		Objekt zurückgeben
 	</text>
 	<text name="resident_text_lbl">
diff --git a/indra/newview/skins/default/xui/de/panel_region_texture.xml b/indra/newview/skins/default/xui/de/panel_region_texture.xml
index d489b5bac8aaeae05a4509a3a75c6eaf46131871..f9997f300a54f4e8d32f80cf6a090c3c88cf46ae 100644
--- a/indra/newview/skins/default/xui/de/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/de/panel_region_texture.xml
@@ -36,14 +36,14 @@
 	<text name="height_text_lbl9">
 		Nordost
 	</text>
-	<spinner label="Niedrig" name="height_start_spin_0"/>
-	<spinner label="Niedrig" name="height_start_spin_1"/>
-	<spinner label="Niedrig" name="height_start_spin_2"/>
-	<spinner label="Niedrig" name="height_start_spin_3"/>
-	<spinner label="Hoch" name="height_range_spin_0"/>
-	<spinner label="Hoch" name="height_range_spin_1"/>
-	<spinner label="Hoch" name="height_range_spin_2"/>
-	<spinner label="Hoch" name="height_range_spin_3"/>
+	<spinner label="Niedrig" name="height_start_spin_0" label_width="40"/>
+	<spinner label="Niedrig" name="height_start_spin_1" label_width="40"/>
+	<spinner label="Niedrig" name="height_start_spin_2" label_width="40"/>
+	<spinner label="Niedrig" name="height_start_spin_3" label_width="40"/>
+	<spinner label="Hoch" name="height_range_spin_0" label_width="40"/>
+	<spinner label="Hoch" name="height_range_spin_1" label_width="40"/>
+	<spinner label="Hoch" name="height_range_spin_2" label_width="40"/>
+	<spinner label="Hoch" name="height_range_spin_3" label_width="40"/>
 	<text name="height_text_lbl10">
 		Diese Werte geben den Mischungsgrad für die obigen Texturen an.
 	</text>
diff --git a/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml
index f6a1d7e9b5e2d5c0316901846efaca787054e9f2..16bf4e8eb4d2ea209a90de66cf229b3d49942ed4 100644
--- a/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml
+++ b/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml
@@ -4,7 +4,7 @@
 		Wird geladen...
 	</text>
 	<scroll_list name="scripts_list">
-		<scroll_list.columns label="Größe (KB)" name="size"/>
+		<scroll_list.columns label="Größe (KB)" name="size" width="80"/>
 		<scroll_list.columns label="URLs" name="urls"/>
 		<scroll_list.columns label="Objektname" name="name"/>
 		<scroll_list.columns label="Ort" name="location"/>
diff --git a/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml
index c466c04e869ce43dd1fc3f19340c593d277a65df..3eec66fe75706a9c01108b5d4f0cda95edc8ea8a 100644
--- a/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml
+++ b/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml
@@ -13,12 +13,12 @@
 		Wird geladen...
 	</text>
 	<scroll_list name="scripts_list">
-		<scroll_list.columns label="Größe (KB)" name="size"/>
+		<scroll_list.columns label="Größe (KB)" name="size" width="80"/>
 		<scroll_list.columns label="Objektname" name="name"/>
-		<scroll_list.columns label="Objekteigentümer" name="owner"/>
+		<scroll_list.columns label="Objekteigentümer" name="owner" width="130"/>
 		<scroll_list.columns label="Parzelle / Standort" name="location"/>
 	</scroll_list>
-	<button label="Liste aktualisieren" name="refresh_list_btn"/>
+	<button label="Liste aktualisieren" name="refresh_list_btn" width="110"/>
 	<button label="Markieren" name="highlight_btn"/>
 	<button label="Zurückgeben" name="return_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_side_tray.xml b/indra/newview/skins/default/xui/de/panel_side_tray.xml
index 2cd11cdcef7b1de0c3cc7bbedd9181d209ebf4b0..446117962f7dac9dce9dbef698b3202105356b91 100644
--- a/indra/newview/skins/default/xui/de/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/de/panel_side_tray.xml
@@ -2,26 +2,26 @@
 <!-- Side tray cannot show background because it is always
 	partially on screen to hold tab buttons. -->
 <side_tray name="sidebar">
-	<sidetray_tab description="Seitenleiste auf-/zuklappen." name="sidebar_openclose"/>
-	<sidetray_tab description="Startseite." name="sidebar_home">
+	<sidetray_tab description="Seitenleiste auf-/zuklappen." name="sidebar_openclose" tab_title="Seitenleiste auf-/zuklappen"/>
+	<sidetray_tab description="Startseite." name="sidebar_home" tab_title="Startseite">
 		<panel label="Startseite" name="panel_home"/>
 	</sidetray_tab>
-	<sidetray_tab description="Ihr öffentliches Profil und Auswahl bearbeiten." name="sidebar_me">
+	<sidetray_tab description="Ihr öffentliches Profil und Auswahl bearbeiten." name="sidebar_me" tab_title="Mein Profil">
 		<panel label="Ich" name="panel_me"/>
 	</sidetray_tab>
-	<sidetray_tab description="Freunde, Kontakte und Leute in Ihrer Nähe finden." name="sidebar_people">
+	<sidetray_tab description="Freunde, Kontakte und Leute in Ihrer Nähe finden." name="sidebar_people" tab_title="Leute">
 		<panel_container name="panel_container">
 			<panel label="Gruppeninfo" name="panel_group_info_sidetray"/>
 			<panel label="Ignorierte Einwohner &amp; Objekte" name="panel_block_list_sidetray"/>
 		</panel_container>
 	</sidetray_tab>
-	<sidetray_tab description="Hier finden Sie neue Orte und Orte, die Sie bereits besucht haben." label="Orte" name="sidebar_places">
+	<sidetray_tab description="Hier finden Sie neue Orte und Orte, die Sie bereits besucht haben." label="Orte" name="sidebar_places" tab_title="Orte">
 		<panel label="Orte" name="panel_places"/>
 	</sidetray_tab>
-	<sidetray_tab description="Inventar durchsuchen." name="sidebar_inventory">
+	<sidetray_tab description="Inventar durchsuchen." name="sidebar_inventory" tab_title="Mein Inventar">
 		<panel label="Inventar bearbeiten" name="sidepanel_inventory"/>
 	</sidetray_tab>
-	<sidetray_tab description="Ändern Sie Ihr Aussehen und Ihren aktuellen Look." name="sidebar_appearance">
+	<sidetray_tab description="Ändern Sie Ihr Aussehen und Ihren aktuellen Look." name="sidebar_appearance" tab_title="Mein Aussehen">
 		<panel label="Aussehen bearbeiten" name="sidepanel_appearance"/>
 	</sidetray_tab>
 </side_tray>
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 61ca783d14aea2b91907a16e49074964eb31786e..44c9284b36f0a79c202d877543504dcf53da26ff 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1825,6 +1825,15 @@ Only large parcels can be listed in search.
              top_delta="0"
              right="-15"
              select_on_focus="true" />
+			<check_box
+             height="16"
+             label="Hide URL"
+             layout="topleft"
+             name="hide_music_url"
+			 tool_tip="Checking this option will hide the music url to any non-authorized viewers of this parcel information."
+			 left_delta="10"
+             top_pad="5"
+             width="292" /> 
             <text
              type="string"
              length="1"
diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml
index a797d547492aa9dce14cf53b715e1fd879e028de..2bd84209257c33f5547ef34e67b1aa8bdcb2c16d 100644
--- a/indra/newview/skins/default/xui/en/floater_camera.xml
+++ b/indra/newview/skins/default/xui/en/floater_camera.xml
@@ -82,6 +82,8 @@
               orientation="vertical"
               tool_tip="Zoom camera toward focus"
               top_pad="0"
+              min_val="0"
+              max_val="1" 
               width="18">
              <commit_callback function="Slider.value_changed"/>
            </slider_bar>
diff --git a/indra/newview/skins/default/xui/en/floater_help_browser.xml b/indra/newview/skins/default/xui/en/floater_help_browser.xml
index be32e917e5a3820263587b3917e6a9ad328469d3..214fb6ce54df615b975e01ad2f1816f0336d38f0 100644
--- a/indra/newview/skins/default/xui/en/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml
@@ -2,7 +2,7 @@
 <floater
  legacy_header_height="18"
  can_resize="true"
- height="480"
+ height="600"
  layout="topleft"
  min_height="150"
  min_width="500"
@@ -11,7 +11,7 @@
  save_rect="true"
  single_instance="true"
  title="HELP BROWSER"
- width="620">
+ width="650">
     <floater.string
      name="loading_text">
         Loading...
@@ -20,20 +20,20 @@
      name="done_text">
     </floater.string>
     <layout_stack
-     bottom="480"
+     bottom="600"
      follows="left|right|top|bottom"
      layout="topleft"
      left="5"
      name="stack1"
      top="20"
-     width="610">
+     width="640">
         <layout_panel
          layout="topleft"
          left_delta="0"
          top_delta="0"
          name="external_controls"
          user_resize="false"
-         width="590">
+         width="620">
             <web_browser
              bottom="-11"
              follows="left|right|top|bottom"
@@ -41,8 +41,8 @@
              left="0"
              name="browser"
              top="0"
-             height="500"
-             width="590" />
+             height="610"
+             width="620" />
             <text
              follows="bottom|left"
              height="16"
diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml
index bd25288a9ec996606a1ade92eabbb94c688b964a..964713adbfa2f1ebe39bbed71abfd964a29dcca2 100644
--- a/indra/newview/skins/default/xui/en/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_container.xml
@@ -19,8 +19,13 @@
      left="1"
      name="im_box_tab_container"
      tab_position="bottom"
-     tab_width="80"
+     tab_width="64"
+     tab_max_width = "134"
      tab_height="16"
+     use_custom_icon_ctrl="true"
+     tab_icon_ctrl_pad="2"
+     font_halign="left"
+     use_ellipses="true"
      top="0"
      width="390" />
     <icon
diff --git a/indra/newview/skins/default/xui/en/floater_inventory.xml b/indra/newview/skins/default/xui/en/floater_inventory.xml
index e187eabd3a2110d02ace6b7e189642acccc21617..0d381fe5cbbddb36b8487146374e0dc2319a7951 100644
--- a/indra/newview/skins/default/xui/en/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/en/floater_inventory.xml
@@ -20,11 +20,11 @@
     </floater.string>
     <floater.string
      name="TitleFetching">
-        Inventory (Fetching [ITEM_COUNT] Items...) [FILTER]
+        MY INVENTORY (Fetching [ITEM_COUNT] Items...) [FILTER]
     </floater.string>
     <floater.string
      name="TitleCompleted">
-        Inventory ([ITEM_COUNT] Items) [FILTER]
+        MY INVENTORY ([ITEM_COUNT] Items) [FILTER]
     </floater.string>
     <floater.string
      name="Fetched">
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
index 1903e7c714f8676322f28404429341e469c2bb46..5d35275e171a4cdd53d89fe8b6c5929986e8c0c7 100644
--- a/indra/newview/skins/default/xui/en/floater_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_map.xml
@@ -3,12 +3,10 @@
  legacy_header_height="18"
  can_minimize="true" 
  can_resize="true"
- center_horiz="true"
- center_vert="true"
  follows="top|right"
  height="218"
  layout="topleft"
- min_height="60"
+ min_height="174"
  min_width="174"
  name="Map"
  title="Mini Map"
@@ -16,6 +14,8 @@
  save_rect="true"
  save_visibility="true"
  single_instance="true"
+ left="0"
+ top="0"
  width="200">
     <floater.string
      name="mini_map_north">
diff --git a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
index eb772cc0bd6b1aed5dd8e70a16b537330bbfcc0b..2bafd1bdef191a2acc900c173c9c5e4bef139f51 100644
--- a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
+++ b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
@@ -89,18 +89,29 @@ No Answer.  Please try again later.
    top="27"
    width="315"
    word_wrap="true">
-    You have been disconnected from [VOICE_CHANNEL_NAME].  You will now be reconnected to Nearby Voice Chat.
+    You have been disconnected from [VOICE_CHANNEL_NAME].  [RECONNECT_NEARBY]
   </text>
   <text
    font="SansSerifLarge"
    height="40"
    layout="topleft"
    left="77"
-   name="nearby_P2P"
+   name="nearby_P2P_by_other"
    top="27"
    width="315"
    word_wrap="true">
-    [VOICE_CHANNEL_NAME] has ended the call.  You will now be reconnected to Nearby Voice Chat.
+    [VOICE_CHANNEL_NAME] has ended the call.  [RECONNECT_NEARBY]
+  </text>
+  <text
+   font="SansSerifLarge"
+   height="40"
+   layout="topleft"
+   left="77"
+   name="nearby_P2P_by_agent"
+   top="27"
+   width="315"
+   word_wrap="true">
+    You have ended the call.  [RECONNECT_NEARBY]
   </text>
   <text
      font="SansSerif"
diff --git a/indra/newview/skins/default/xui/en/floater_postcard.xml b/indra/newview/skins/default/xui/en/floater_postcard.xml
index 3a7b6cc8323dc662d806b945b7a2dddc2f439898..6f78363b2535c62556ed02e535402005abd1459d 100644
--- a/indra/newview/skins/default/xui/en/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/en/floater_postcard.xml
@@ -128,19 +128,9 @@
      width="420">
         Type your message here.
     </text_editor>
-    <text
-     type="string"
-     length="1"
-     bottom_delta="37"
-     follows="left|bottom"
-     layout="topleft"
-     left="12"
-     name="fine_print">
-        If your recipient joins SL, you&apos;ll get a referral bonus.
-    </text>
     <button
      follows="right|bottom"
-     height="20"
+     height="23"
      label="Cancel"
      layout="topleft"
      name="cancel_btn"
@@ -149,7 +139,7 @@
      width="100" />
     <button
      follows="right|bottom"
-     height="20"
+     height="23"
      label="Send"
      layout="topleft"
      left_delta="-106"
diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml
index 15655a920e3c3b77a5c3e6e0637cb74690711dce..05deca705a59942e697e2ee9c0a86bc49abcf715 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences.xml
@@ -56,7 +56,7 @@
          help_topic="preferences_general_tab"
          name="general" />
         <panel
-	 class="panel_preference"
+	 class="panel_preference_graphics"
          filename="panel_preferences_graphics1.xml"
          label="Graphics"
          layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_texture.xml b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
index 0d155fb01ed627974fc2fc8e37cd60aceb87b37e..fc6f06ffd459e56c9d4eede495858e9a26063c63 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
@@ -114,7 +114,7 @@
      left="6"
      name="Keep"
      top_pad="5"
-     width="100" />
+     width="110" />
     <button
      follows="right|bottom"
      height="22"
@@ -123,7 +123,7 @@
      left_pad="5"
      name="Discard"
      top_delta="0"
-     width="100" />
+     width="110" />
     <button
      follows="right|bottom"
      height="22"
@@ -132,5 +132,5 @@
      left_pad="5"
      name="save_tex_btn"
      top_delta="0"
-     width="100" />
+     width="110" />
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml
index 775e7d66f791ca5af92a55016a3d1d2568dd15db..9ca18d455bbc0234bc50b8d5532b684589190663 100644
--- a/indra/newview/skins/default/xui/en/floater_search.xml
+++ b/indra/newview/skins/default/xui/en/floater_search.xml
@@ -2,16 +2,16 @@
 <floater
  legacy_header_height="13"
  can_resize="true"
- height="546"
+ height="600"
  layout="topleft"
- min_height="546"
- min_width="670"
+ min_height="400"
+ min_width="450"
  name="floater_search"
  help_topic="floater_search"
  save_rect="true"
  single_instance="true"
  title="FIND"
- width="670">
+ width="650">
     <floater.string
      name="loading_text">
         Loading...
@@ -21,20 +21,20 @@
         Done
     </floater.string>
     <layout_stack
-     bottom="541"
+     bottom="595"
      follows="left|right|top|bottom"
      layout="topleft"
      left="10"
      name="stack1"
      top="20"
-     width="650">
+     width="630">
         <layout_panel
          layout="topleft"
          left_delta="0"
          top_delta="0"
          name="browser_layout"
          user_resize="false"
-         width="650">
+         width="630">
             <web_browser
              bottom="-10"
              follows="left|right|top|bottom"
@@ -42,8 +42,8 @@
              left="0"
              name="browser"
              top="0"
-             height="500"
-             width="650" />
+             height="555"
+             width="630" />
             <text
              follows="bottom|left"
              height="16"
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 dc8f00d5f36981288b7b331a1cf85137a7201667..b730f0e511f9da97cb2e7b5943f1ca7002580d8c 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
@@ -28,4 +28,17 @@
    width="200">
     This contains long text and should scroll horizontally to the right
   </text_editor>
+  <text_editor
+   height="50"
+   follows="top|left|bottom"
+   font="SansSerif"
+   left="10"
+   name="numeric_text_editor"
+   tool_tip="text editor for numeric text entry only"
+   top_pad="10"
+   text_type="int"
+   width="200">
+    This is text that is NOT a number, so shouldn't appear
+  </text_editor>
+
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 5630dfbe8fa37d269e154280f21f2a59499603b3..23203d227e625aa7073f74692ee6c797e02e1e9d 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -67,80 +67,75 @@
     </floater.string>
     <button
      follows="left|top"
-     height="20"
-     image_disabled="Tool_Zoom"
-     image_disabled_selected="Tool_Zoom"
-     image_selected="Tool_Zoom_Selected"
-     image_unselected="Tool_Zoom"
+     height="25"
+     image_bottom_pad="1"
+     image_overlay="Tool_Zoom"
+     image_selected="PushButton_Selected_Press"
      layout="topleft"
      left="10"
      name="button focus"
      tool_tip="Focus"
-     width="20">
+     width="35">
 	  <button.commit_callback
 	     function="BuildTool.setTool"
 	     parameter="Focus" />
 	</button>
     <button
      follows="left|top"
-     height="20"
-     image_disabled="Tool_Grab"
-     image_disabled_selected="Tool_Grab"
-     image_selected="Tool_Grab_Selected"
-     image_unselected="Tool_Grab"
+      height="25"
+     image_bottom_pad="1"
+     image_overlay="Tool_Grab"
+     image_selected="PushButton_Selected_Press"
      layout="topleft"
-     left_pad="20"
+     left_pad="10"
      name="button move"
      tool_tip="Move"
-     width="20">
+     width="35">
 	  <button.commit_callback
 	     function="BuildTool.setTool"
 	     parameter="Move" />
 	</button>
     <button
      follows="left|top"
-     height="20"
-     image_disabled="Tool_Face"
-     image_disabled_selected="Tool_Face"
-     image_selected="Tool_Face_Selected"
-     image_unselected="Tool_Face"
+     height="25"
+     image_bottom_pad="1"
+     image_overlay="Tool_Face"
+     image_selected="PushButton_Selected_Press"
      layout="topleft"
-     left_pad="20"
+     left_pad="10"
      name="button edit"
      tool_tip="Edit"
-     width="20">
+     width="35">
 	  <button.commit_callback
 	     function="BuildTool.setTool"
 	     parameter="Edit" />
 	</button>
     <button
      follows="left|top"
-     height="20"
-     image_disabled="Tool_Create"
-     image_disabled_selected="Tool_Create"
-     image_selected="Tool_Create_Selected"
-     image_unselected="Tool_Create"
+      height="25"
+     image_bottom_pad="1"
+     image_overlay="Tool_Create"
+     image_selected="PushButton_Selected_Press"
      layout="topleft"
-     left_pad="20"
+     left_pad="10"
      name="button create"
      tool_tip="Create"
-     width="20">
+     width="35">
 	  <button.commit_callback
 	     function="BuildTool.setTool"
 	     parameter="Create" />
 	</button>
     <button
      follows="left|top"
-     height="20"
-     image_disabled="Tool_Dozer"
-     image_disabled_selected="Tool_Dozer"
-     image_selected="Tool_Dozer_Selected"
-     image_unselected="Tool_Dozer"
+      height="25"
+     image_bottom_pad="1"
+     image_overlay="Tool_Dozer"
+     image_selected="PushButton_Selected_Press"
      layout="topleft"
-     left_pad="20"
+     left_pad="10"
      name="button land"
      tool_tip="Land"
-     width="20">
+     width="35">
 	  <button.commit_callback
 	     function="BuildTool.setTool"
 	     parameter="Land" />
@@ -1043,7 +1038,7 @@ even though the user gets a free copy.
       <check_box
 	   height="15"
 	   width="110"
-	   top_pad="3"
+	   top_pad="5"
 	   label="Show in search"
        layout="topleft"
 	   left="100"
diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml
index e1df50bf58c32d58900ccbb43be83f2fc8864598..86ac7c8e54bf3b17af29ab729cf6511f8d16b40f 100644
--- a/indra/newview/skins/default/xui/en/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_world_map.xml
@@ -4,7 +4,7 @@
  can_resize="true"
  center_horiz="true"
  center_vert="true"
- height="535"
+ height="600"
  layout="topleft"
  min_height="520"
  min_width="520"
@@ -14,16 +14,16 @@
  save_visibility="true"
  single_instance="true"
  title="WORLD MAP"
- width="800">
+ width="650">
     <panel
      filename="panel_world_map.xml"
      follows="all"
-     height="500"
+     height="555"
      layout="topleft"
      left="10"
      name="objects_mapview"
      top="25"
-     width="542" />
+     width="375" />
      <panel
      name="layout_panel_1"
      height="22"
@@ -279,12 +279,12 @@
          <icon
      follows="top|right"
      height="16"
-     image_name="map_event.tga"
+     image_name="Parcel_PG_Dark"
      layout="topleft"
      mouse_opaque="true"
      name="event"
      left_pad="0"
-     width="16" />
+     width="18" />
       <text
      type="string"
      length="1"
@@ -312,13 +312,13 @@
     <icon
      follows="top|right"
      height="16"
-     image_name="map_event_mature.tga"
+     image_name="Parcel_M_Dark"
      layout="topleft"
      mouse_opaque="true"
      name="events_mature_icon"
      top_delta="0"
      left_pad="0"
-     width="16" />
+     width="18" />
            <text
      type="string"
      length="1"
@@ -345,13 +345,13 @@
     <icon
      follows="top|right"
      height="16"
-     image_name="map_event_adult.tga"
+     image_name="Parcel_R_Dark"
      layout="topleft"
      left_pad="0"
      mouse_opaque="true"
      name="events_adult_icon"
      top_delta="0"
-     width="16" />
+     width="18" />
                 <text
      type="string"
      length="1"
@@ -394,7 +394,7 @@
 
     <panel
      follows="right|top|bottom"
-	 height="270"
+	 height="310"
 	 top_pad="0"
 	 width="238">
 	 <icon
@@ -514,7 +514,7 @@
      draw_stripes="false"
      bg_writeable_color="MouseGray"
      follows="all"
-     height="115"
+     height="145"
      layout="topleft"
      left="28"
      name="search_results"
diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml
index 1993af673022bba4133994442d2e94a10bbbd2c5..2874151df51f67d5eb4b2fe1f09abfd6b5d04bf4 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory.xml
@@ -369,6 +369,14 @@
     <menu_item_separator
      layout="topleft"
      name="Outfit Separator" />
+    <menu_item_call
+     label="Find Original"
+     layout="topleft"
+     name="Find Original">
+        <menu_item_call.on_click
+         function="Inventory.DoToSelected"
+         parameter="goto" />
+    </menu_item_call>
     <menu_item_call
      label="Purge Item"
      layout="topleft"
@@ -385,14 +393,6 @@
          function="Inventory.DoToSelected"
          parameter="restore" />
     </menu_item_call>
-    <menu_item_call
-     label="Find Original"
-     layout="topleft"
-     name="Find Original">
-        <menu_item_call.on_click
-         function="Inventory.DoToSelected"
-         parameter="goto" />
-    </menu_item_call>
     <menu_item_call
      label="Open"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml
index 5a9509e2843c930c3cfc22ab6cb89885b37a9711..d66818e91a45fcf4e784019a8fc8b5a13d55aad3 100644
--- a/indra/newview/skins/default/xui/en/menu_object.xml
+++ b/indra/newview/skins/default/xui/en/menu_object.xml
@@ -86,16 +86,6 @@
    <context_menu
          label="Remove  â–¶"
          name="Remove">
-   <menu_item_call
-     enabled="false"
-     label="Take"
-     name="Pie Object Take">
-        <menu_item_call.on_click
-         function="Tools.BuyOrTake" />
-        <menu_item_call.on_enable
-         function="Tools.EnableBuyOrTake"
-         parameter="Buy,Take" />
-    </menu_item_call>
    <menu_item_call
          enabled="false"
          label="Report Abuse"
@@ -134,6 +124,16 @@
     </menu_item_call>
     </context_menu>
    <menu_item_separator layout="topleft" />
+       <menu_item_call
+     enabled="false"
+     label="Take"
+     name="Pie Object Take">
+        <menu_item_call.on_click
+         function="Tools.BuyOrTake" />
+        <menu_item_call.on_enable
+         function="Tools.EnableBuyOrTake"
+         parameter="Buy,Take" />
+    </menu_item_call>
    <menu_item_call
    enabled="false"
    label="Take Copy"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 7a4f63bfe48cbc34bab0647e7f6456d860d68086..95ce6d6ff4165f9bcb16d471ece0ccb127d45786 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -57,13 +57,13 @@
          label="My Inventory"
          layout="topleft"
          name="Inventory"
-         shortcut="control|shift|I">
+         shortcut="control|I">
             <menu_item_check.on_check
-             function="Floater.Visible"
-             parameter="inventory" />
+             function="SidetrayPanelVisible"
+             parameter="sidepanel_inventory" />
             <menu_item_check.on_click
-             function="Floater.Toggle"
-             parameter="inventory" />
+             function="ShowSidetrayPanel"
+             parameter="sidepanel_inventory" />
         </menu_item_check>
         <menu_item_call
          label="Show Inventory in Side Tray"
@@ -1594,6 +1594,17 @@
          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
+               function="File.UploadImage"
+               parameter="" />
+            <menu_item_call.on_enable
+               function="File.EnableUpload" />
+            </menu_item_call>
             <menu_item_check
                label="Search"
                layout="topleft"
@@ -1998,6 +2009,18 @@
                  function="Advanced.ToggleHUDInfo"
                  parameter="fov" />
             </menu_item_check>
+            <menu_item_check
+             label="Badge"
+             layout="topleft"
+             name="Badge"
+			 shortcut="alt|control|shift|h">
+                <menu_item_check.on_check
+                 function="Advanced.CheckHUDInfo"
+                 parameter="badge" />
+                <menu_item_check.on_click
+                 function="Advanced.ToggleHUDInfo"
+                 parameter="badge" />
+            </menu_item_check>
         </menu>
         <menu
          create_jump_keys="true"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index e726b6e3335826d511c837621020aa654eff0dbd..665a49b6d89a7bc0719ad5ee0a925976b4c03de9 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -391,19 +391,23 @@ Add this Ability to &apos;[ROLE_NAME]&apos;?
      notext="No"
      yestext="Yes"/>
   </notification>
-
   <notification
     icon="alertmodal.tga"
-    name="ClickUnimplemented"
+   name="JoinGroupCanAfford"
     type="alertmodal">
-Sorry, not implemented yet.
+Joining this group costs L$[COST].
+Do you wish to proceed?
+    <usetemplate
+     name="okcancelbuttons"
+     notext="Cancel"
+     yestext="Join"/>
   </notification>
 
   <notification
    icon="alertmodal.tga"
-   name="JoinGroupCanAfford"
+   name="JoinGroupNoCost"
    type="alertmodal">
-Joining this group costs L$[COST].
+You are joining group [NAME].
 Do you wish to proceed?
     <usetemplate
      name="okcancelbuttons"
@@ -411,6 +415,7 @@ Do you wish to proceed?
      yestext="Join"/>
   </notification>
 
+
   <notification
    icon="alertmodal.tga"
    name="JoinGroupCannotAfford"
@@ -1029,10 +1034,10 @@ Unable to write file [[FILE]]
    icon="alertmodal.tga"
    name="UnsupportedHardware"
    type="alertmodal">
-Warning: Your system does not meet [APP_NAME]&apos;s minimum system requirements. If you continue using [APP_NAME], you may experience poor performance. Unfortunately, the [SUPPORT_SITE] cannot provide technical support for unsupported system configurations.
+Just so you know, your computer does not meet [APP_NAME]&apos;s minimum system requirements. You may experience poor performance. Unfortunately, the [SUPPORT_SITE] can't provide technical support for unsupported system configurations.
 
 MINSPECS
-Do you wish to visit [_URL] for more information?
+Visit [_URL] for more information?
     <url option="0" name="url">
 
 			http://www.secondlife.com/corporate/sysreqs.php
@@ -1048,8 +1053,8 @@ Do you wish to visit [_URL] for more information?
    icon="alertmodal.tga"
    name="UnknownGPU"
    type="alertmodal">
-Your system contains a graphics card that is unknown to [APP_NAME] at this time.
-This is often the case with new hardware that hasn&apos;t been tested yet with [APP_NAME].  [APP_NAME] will most likely run properly, but you may need to adjust your graphics settings to something more appropriate.
+Your system contains a graphics card that [APP_NAME] doesn't recognize.
+This is often the case with new hardware that hasn&apos;t been tested yet with [APP_NAME].  It will probably be ok, but you may need to adjust your graphics settings.
 (Me &gt; Preferences &gt; Graphics).
     <form name="form">
       <ignore name="ignore"
@@ -1527,7 +1532,7 @@ Your search terms were too short so no search was performed.
    icon="alertmodal.tga"
    name="CouldNotTeleportReason"
    type="alertmodal">
-Could not teleport.
+Teleport failed.
 [REASON]
   </notification>
 
@@ -1726,21 +1731,6 @@ Multiple parcels selected.
 Try selecting a single parcel.
   </notification>
 
-  <notification
-   icon="alertmodal.tga"
-   name="ParcelCanPlayMedia"
-   type="alertmodal">
-This location can play streaming media.
-Streaming media requires a fast Internet connection.
-
-Play streaming media when available?
-(You can change this option later under Preferences &gt; Privacy.)
-    <usetemplate
-     name="okcancelbuttons"
-     notext="Disable"
-     yestext="Play Media"/>
-  </notification>
-
   <notification
    icon="alertmodal.tga"
    name="CannotDeedLandWaitingForServer"
@@ -1980,9 +1970,8 @@ This is usually a temporary failure. Please customize and save the wearable agai
    icon="alertmodal.tga"
    name="YouHaveBeenLoggedOut"
    type="alertmodal">
-You have been logged out of [SECOND_LIFE]:
+Darn. You have been logged out of [SECOND_LIFE]
             [MESSAGE]
-You can still look at existing IM and chat by clicking &apos;View IM &amp; Chat&apos;. Otherwise, click &apos;Quit&apos; to exit [APP_NAME] immediately.
     <usetemplate
      name="okcancelbuttons"
      notext="Quit"
@@ -3847,7 +3836,7 @@ Are you sure you want to quit?
   <notification
    icon="alertmodal.tga"
    name="HelpReportAbuseEmailLL"
-   type="alertmodal">
+   type="alert">
 Use this tool to report violations of the [http://secondlife.com/corporate/tos.php Terms of Service] and [http://secondlife.com/corporate/cs.php Community Standards].
 
 All reported abuses are investigated and resolved.
@@ -4318,14 +4307,14 @@ Topic: [SUBJECT], Message: [MESSAGE]
    icon="notifytip.tga"
    name="FriendOnline"
    type="notifytip">
-[NAME] is Online
+[NAME_SLURL] is Online
   </notification>
 
   <notification
    icon="notifytip.tga"
    name="FriendOffline"
    type="notifytip">
-[NAME] is Offline
+[NAME_SLURL] is Offline
   </notification>
 
   <notification
@@ -4752,7 +4741,7 @@ The objects on the selected parcel that are NOT owned by you have been returned
    name="ServerObjectMessage"
    type="notify">
 Message from [NAME]:
-[MSG]
+&lt;nolink&gt;[MSG]&lt;/nolink&gt;
   </notification>
 
   <notification
diff --git a/indra/newview/skins/default/xui/en/panel_active_object_row.xml b/indra/newview/skins/default/xui/en/panel_active_object_row.xml
index 7657fb8055f32bb6f27a2c4c411baf4f186c6f49..bef5f8dafd98b63227e68a30e52ae1aa09966a87 100644
--- a/indra/newview/skins/default/xui/en/panel_active_object_row.xml
+++ b/indra/newview/skins/default/xui/en/panel_active_object_row.xml
@@ -10,10 +10,6 @@
   background_opaque="false"
   background_visible="true"
   bg_alpha_color="0.0 0.0 0.0 0.0" >
-  <string
-   name="unknown_obj">
-    Unknown Object
-  </string>
   <chiclet_script
     name="object_chiclet"
     layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index aad55685d2236487d8659809425c7bf07c450cee..075581338901c2a896237343f416932f7965572a 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -247,7 +247,7 @@
         <layout_panel
          mouse_opaque="false"
          follows="left|right"
-         height="29"
+         height="30"
          layout="topleft"
          top="0"
          name="chiclet_list_panel"
@@ -260,12 +260,12 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
             <chiclet_panel
 	    mouse_opaque="false"
              follows="left|right"
-             height="23"
+             height="24"
              layout="topleft"
              left="1"
              min_width="110"
              name="chiclet_list"
-             top="8"
+             top="7"
              chiclet_padding="4"
              scrolling_offset="40"
              width="189">
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 89d632c4c6df2dd097428fa2b44c09d00531588c..51e2256a7d5d5663256e1475ca1ec520f464f81c 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml
@@ -19,7 +19,7 @@
          name="avatar_icon"
          top="3"
          width="18" />
-    <text_editor
+    <text
       allow_scroll="false"
       v_pad = "7"
       read_only = "true"
diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml
index 31719aad2012814c36552a6a7892ec5027fe517a..34c1923582c9c19f6c4d62da9731c1ef0b56a3e5 100644
--- a/indra/newview/skins/default/xui/en/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml
@@ -29,7 +29,7 @@
      layout="topleft"
      name="back_btn"
      picture_style="true"
-     left="10"
+     left="11"
      tab_stop="false"
      top="2"
      width="23" />
@@ -40,7 +40,7 @@
      layout="topleft"
      left_pad="10"
      name="title"
-     text_color="white"
+     text_color="LtGray"
      top="0"
      value="Classified Info"
      use_ellipses="true"
@@ -49,13 +49,13 @@
      color="DkGray2"
      opaque="true"
      follows="all"
-     height="500"
+     height="502"
      layout="topleft"
-     left="10"
+     left="9"
      top_pad="10"
      name="profile_scroll"
      reserve_scroll_corner="false"
-     width="313">
+     width="310">
     <panel
      name="scroll_content_panel"
      follows="left|top"
@@ -65,16 +65,16 @@
      background_visible="false"
      height="500"
      left="0"
-     width="295">
+     width="285">
         <texture_picker
          enabled="false"
-         follows="left|top"
+         follows="left|top|right"
          height="197"
          layout="topleft"
-         left="10"
+         left="11"
          name="classified_snapshot"
-         top="20"
-         width="290" />
+         top="10"
+         width="286" />
         <text_editor
          allow_scroll="false"
          bg_visible="false"
@@ -181,37 +181,35 @@
     </scroll_container>
     <panel
      follows="left|right|bottom"
-     height="20"
+     height="35"
      layout="topleft"
-     top_pad="8"
-     left="10"
+     top_pad="5"
+     left="9"
      name="buttons">
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Teleport"
          layout="topleft"
          left="0"
          name="teleport_btn"
          top="0"
-         width="90" />
+         width="101" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Map"
          layout="topleft"
-         left_pad="10"
+         left_pad="3"
          name="show_on_map_btn"
-         top="0"
-         width="90" />
+         width="100" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Edit"
          layout="topleft"
-         right="-1"
          name="edit_btn"
-         top="0"
-         width="90" />
+         left_pad="3"
+         width="101" />
     </panel>
 </panel>
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 b881719e3a9701d32ccf9b53c24c7f2af4615a97..1375eb87d9e3c30f96ea1dd0e96e92598a3e517c 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
@@ -64,6 +64,7 @@
      layout="topleft"
      left="103"
      name="description"
+     textbox.show_context_menu="false" 
      top_pad="0"
      width="178"
      word_wrap="true" />
@@ -75,6 +76,6 @@
      left_pad="5"
      right="-8"
      name="info_chevron"
-     top_delta="15"
+     top_delta="24"
      width="20" />
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
index 188ded3dabaf12663635343a52ade9eb2de2c199..a357ba1d97d04e40864ab59bc239f51b73e96c58 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
@@ -23,7 +23,7 @@
      layout="topleft"
      name="back_btn"
      picture_style="true"
-     left="10"
+     left="11"
      tab_stop="false"
      top="2"
      width="23" />
@@ -31,27 +31,27 @@
      type="string"
      length="1"
      follows="top"
-     font="SansSerifHuge"
-     height="15"
+     font="SansSerifHugeBold"
+     height="26"
      layout="topleft"
      left_pad="10"
      name="title"
-     text_color="white"
-     top="5"
+     text_color="LtGray"
+     top="0"
      width="250">
         Edit Classified
     </text>
    <scroll_container
      color="DkGray2"
      follows="all"
-     height="510"
+     height="502"
      layout="topleft"
-     left="10"
+     left="9"
      top_pad="10"
      name="profile_scroll"
      reserve_scroll_corner="false"
      opaque="true"
-     width="313">
+     width="310">
     <panel
      name="scroll_content_panel"
      follows="left|top"
@@ -65,10 +65,10 @@
     <texture_picker
      follows="left|top|right"
      height="197"
-     width="290"
+     width="286"
      layout="topleft"
-     top="20"
-     left="10"
+     top="10"
+     left="11"
      name="classified_snapshot" />
           <icon
            height="18"
@@ -78,7 +78,7 @@
            name="edit_icon"
            label=""
            tool_tip="Click to select an image"
-           top="27"
+           top="17"
            width="18" />
         <text
          type="string"
@@ -165,29 +165,29 @@
         </text>
         <button
          follows="left|top"
-         height="20"
+         height="23"
          label="Set to Current Location"
          layout="topleft"
-         left="8"
+         left="10"
          top_pad="5"
          name="set_to_curr_location_btn"
-         width="200" />
+         width="156" />
         <combo_box
          follows="left|top" 
-         height="18" 
+         height="23" 
          label=""
 	     left="10" 
          name="category" 
          top_pad="5"
-         width="200" />
+         width="156" />
         <combo_box 
          allow_text_entry="false" 
          follows="left|top" 
-         height="18" 
+         height="23" 
          left="10"
          name="content_type" 
          top_pad="5"
-         width="200">
+         width="156">
          <combo_item 
           name="mature_ci" 
           value="Mature">
@@ -203,10 +203,11 @@
          decimal_digits="0"
          follows="left|top"
          halign="left"
-         height="16"
+         height="23"
          increment="1"
          label_width="20"
          label="L$"
+         v_pad="10"
          layout="topleft"
          left="10"
          value="50"
@@ -228,30 +229,29 @@
     </scroll_container>
     <panel
      follows="left|right|bottom"
-     height="20"
+     height="23"
      label="bottom_panel"
      layout="topleft"
-     left="10"
+     left="9"
      name="bottom_panel"
      top_pad="5"
      width="303">
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Save"
          layout="topleft"
          name="save_changes_btn"
          left="0"
          top="0"
-         width="130" />
+         width="152" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Cancel"
          layout="topleft"
          name="cancel_btn"
-         left_pad="5"
-         right="-1"
-         width="130" />
+         left_pad="3"
+         width="152" />
     </panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
index 8e39697a16ec63e57f6d1672a3dc7019bb13a734..6ef762dc1d4ee793c36318b8109387b9e2b558b9 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
@@ -18,7 +18,7 @@
      image_overlay="BackArrow_Off"
      layout="topleft"
      name="back_btn"
-     left="10"
+     left="11"
      tab_stop="false"
      top="2"
      width="23" />
@@ -26,26 +26,26 @@
      type="string"
      length="1"
      follows="top"
-     font="SansSerifHuge"
-     height="15"
+     font="SansSerifHugeBold"
+     height="26"
      layout="topleft"
      left_pad="10"
      name="title"
-     text_color="white"
-     top="5"
+     text_color="LtGray"
+     top="0"
      width="250">
         Edit Pick
     </text>
    <scroll_container
      color="DkGray2"
      follows="all"
-     height="500"
+     height="502"
      layout="topleft"
-     left="10"
+     left="9"
      top_pad="10"
      name="profile_scroll"
      opaque="true"
-     width="313">
+     width="310">
     <panel
      name="scroll_content_panel"
      follows="left|top|right"
@@ -59,11 +59,11 @@
     <texture_picker
      follows="left|top|right"
      height="197"
-     width="280"
+     width="272"
      layout="topleft"
      no_commit_on_selection="true"
-     top="20"
-     left="10"
+     top="10"
+     left="11"
      name="pick_snapshot" />
           <icon
            height="18"
@@ -73,7 +73,7 @@
            name="edit_icon"
            label=""
            tool_tip="Click to select an image"
-           top="27"
+           top="17"
            width="18" />
         <text
          type="string"
@@ -100,7 +100,7 @@
          max_length="63"
          name="pick_name"
          text_color="black"
-         width="280" />
+         width="273" />
         <text
          type="string"
          length="1"
@@ -119,7 +119,7 @@
         <text_editor
          follows="left|top|right"
          height="100"
-         width="280"
+         width="273"
          hide_scrollbar="false"
          layout="topleft"
          left="10"
@@ -158,41 +158,40 @@
         </text>
         <button
          follows="left|top"
-         height="20"
+         height="23"
          label="Set to Current Location"
          layout="topleft"
          left="8"
          top_pad="0"
          name="set_to_curr_location_btn"
-         width="200" />
+         width="156" />
     </panel>
     </scroll_container>
     <panel
      follows="left|right|bottom"
-     height="20"
+     height="23"
      label="bottom_panel"
      layout="topleft"
-     left="10"
+     left="9"
      name="bottom_panel"
      top_pad="5"
      width="303">
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Save [WHAT]"
          layout="topleft"
          name="save_changes_btn"
          left="0"
          top="0"
-         width="130" />
+         width="152" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Cancel"
          layout="topleft"
          name="cancel_btn"
-         left_pad="5"
-         right="-1"
-         width="130" />
+         left_pad="3"
+        width="152" />
     </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 618167181fba5351a82a918ecd765a97f332472c..662fd1ae73d1a12683b5e88ae8dd5e74f8ac54ce 100644
--- a/indra/newview/skins/default/xui/en/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_general.xml
@@ -20,15 +20,84 @@ Hover your mouse over the options for more help.
      name="incomplete_member_data_str">
         Retrieving member data
     </panel.string>
+   <panel
+      name="group_info_top"
+      follows="top|left"
+      top="0"
+      left="0"
+      height="129"
+      width="313"
+      layout="topleft">
+    <texture_picker
+     follows="left|top"
+     height="110"
+     label=""
+     layout="topleft"
+     left="10"
+     name="insignia"
+     no_commit_on_selection="true"
+     tool_tip="Click to choose a picture"
+     top="5"
+     width="100" />
+    <text
+      font="SansSerifSmall"
+      text_color="White_50"
+      width="190"
+      follows="top|left"
+      layout="topleft"
+      mouse_opaque="false"
+     type="string"
+     height="16"
+     length="1"
+     left_pad="10"
+     name="prepend_founded_by"
+     top_delta="0">
+      Founder:
+    </text>
+    <name_box
+     follows="left|top"
+     height="16"
+     initial_value="(retrieving)"
+     layout="topleft"
+     left_delta="0"
+     link="true"
+     name="founder_name"
+     top_pad="2"
+     use_ellipses="true"
+     width="190" />
+    <text
+    font="SansSerifMedium"
+    text_color="EmphasisColor"
+     type="string"
+     follows="left|top"
+     height="16"
+     layout="topleft"
+     left_delta="0"
+     name="join_cost_text"
+     top_pad="10"
+     visible="true"
+     width="190">
+      Free
+    </text>
+    <button
+     follows="left|top"
+     left_delta="0"
+     top_pad="6"
+     height="23"
+     label="JOIN NOW!"
+     name="btn_join"
+     visible="true"
+     width="120" />
+    </panel>
     <text_editor
      type="string"
      follows="left|top|right"
      left="5"
-     height="150"
+     height="80"
      layout="topleft"
      max_length="511"
      name="charter"
-     top="5"
+     top="105"
      right="-1"
     bg_readonly_color="DkGray2"
     text_readonly_color="White"
@@ -40,7 +109,7 @@ Hover your mouse over the options for more help.
      draw_heading="true"
      follows="left|top|right"
      heading_height="23"
-     height="200"
+     height="160"
      layout="topleft"
      left="0"
      name="visible_members"
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 9727c54c6be344e9d2a998daa3e78229c6269560..375de649237e40a07d4199d7184b67d6149a6da8 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
@@ -31,7 +31,7 @@ background_visible="true"
       follows="top|left"
       top="0"
       left="0"
-      height="129"
+      height="29"
       width="313"
       layout="topleft">
     <button
@@ -70,66 +70,6 @@ background_visible="true"
      width="270"
      height="20"
      visible="false" />
-    <texture_picker
-     follows="left|top"
-     height="113"
-     label=""
-     layout="topleft"
-     left="10"
-     name="insignia"
-     no_commit_on_selection="true"
-     tool_tip="Click to choose a picture"
-     top_pad="5"
-     width="100" />
-    <text
-      font="SansSerifSmall"
-      text_color="White_50"
-      width="190"
-      follows="top|left"
-      layout="topleft"
-      mouse_opaque="false"
-     type="string"
-     height="16"
-     length="1"
-     left_pad="10"
-     name="prepend_founded_by"
-     top_delta="0">
-      Founder:
-    </text>
-    <name_box
-     follows="left|top"
-     height="16"
-     initial_value="(retrieving)"
-     layout="topleft"
-     left_delta="0"
-     link="true"
-     name="founder_name"
-     top_pad="2"
-     use_ellipses="true"
-     width="190" />
-    <text
-    font="SansSerifMedium"
-    text_color="EmphasisColor"
-     type="string"
-     follows="left|top"
-     height="16"
-     layout="topleft"
-     left_delta="0"
-     name="join_cost_text"
-     top_pad="10"
-     visible="true"
-     width="190">
-      Free
-    </text>
-    <button
-     follows="left|top"
-     left_delta="0"
-     top_pad="6"
-     height="23"
-     label="JOIN NOW!"
-     name="btn_join"
-     visible="true"
-     width="120" />
     </panel>
    <layout_stack
      name="layout"
@@ -137,7 +77,7 @@ background_visible="true"
       follows="all"
      left="0"
      top_pad="0"
-     height="437"
+     height="537"
      width="313"
      border_size="0">
    <layout_panel
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 5f46ad7860159c4a80109dd3fad43286543156e8..1f16aea2ef3f79dd06e082f254ed1f19428fedda 100644
--- a/indra/newview/skins/default/xui/en/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml
@@ -159,6 +159,7 @@ Maximum 200 per group daily
          left_pad="3"
          max_length="511"
          name="create_message"
+         text_type="ascii"
          top_delta="0"
          width="220"
          word_wrap="true" />
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 c7e5b25e06292c414cb158aaa5042d56c9ca16ae..28c4adf67cff130f2caf61dbc5c030464654c08d 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
@@ -11,15 +11,6 @@
      name="avatar_icon"
      top="-5"
      width="105"/>
-    <text
-     follows="top|left|right"
-     font="SansSerifLarge"
-     height="19"
-     layout="topleft"
-     name="avatar_name"
-     use_ellipses="true"
-     value="Unknown"
-     width="110" />
     <layout_stack
      mouse_opaque="false"
      border_size="0"
@@ -30,7 +21,7 @@
      left="5"
      name="button_stack"
      orientation="vertical"
-     top_pad="-5"
+     top_pad="5"
      width="105">
         <layout_panel
          mouse_opaque="false"
diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml
index a0ad38cf76e7209e26ff37b79445f9cd714631a8..34fd3352a345bbcda7a3c5b683930ddd44e81413 100644
--- a/indra/newview/skins/default/xui/en/panel_instant_message.xml
+++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml
@@ -56,16 +56,6 @@
          name="adhoc_icon"
          top="3"
          width="18" />
-        <!--<icon
-         follows="right"
-         height="20"
-         image_name=""
-         layout="topleft"
-         left="3"
-         mouse_opaque="true"
-         name="sys_msg_icon"
-         top="0"
-         width="20" />-->
         <text
          follows="left|right"
          font.style="BOLD"
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 396699ad6c164094d642fe519e79c9bb78d37573..6927906d3dfe38711d95e49e45d4f0558c43072c 100644
--- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
@@ -71,7 +71,7 @@
      layout="topleft"
      left_pad="10"
      name="title"
-     text_color="white"
+     text_color="LtGray"
      top="0"
      use_ellipses="true"
      value="Place Profile"
@@ -269,6 +269,7 @@
                  name="notes_editor"
                  read_only="true"
                  text_readonly_color="white"
+                 text_type="ascii"
                  top_pad="5"
                  width="290"
                  wrap="true" />
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index 2777b641c9357e3802414deb906cedbd062b7886..20f91d85ab5afad9013cee31867bb5a284a404f3 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -122,7 +122,7 @@ control_name="RememberPassword"
 follows="left|bottom"
 font="SansSerifSmall"
 height="16"
-label="Remember"
+label="Remember password"
   top_pad="3"
   name="remember_check"
  width="135" />
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 4030c7184ade70fa23cb4b64c3fa40d1fa805698..c6a4233c9c7e290e276557c437203fa0d7ac1a4e 100644
--- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
@@ -37,7 +37,7 @@ halign="center"
      top_pad="4"
      width="305">
         <inventory_panel
-	border="false"
+	       border="false"
          follows="all"
          height="295"
          label="MY INVENTORY"
@@ -48,7 +48,7 @@ halign="center"
          top="16"
          width="290" />
         <inventory_panel
-	border="false"
+	       border="false"
          follows="all"
          height="295"
          label="RECENT"
@@ -67,7 +67,7 @@ halign="center"
      height="30"
      layout="bottomleft"
      left="0"
-	 visible="true"
+	   visible="true"
      name="bottom_panel"
      width="330">
         <button
@@ -118,7 +118,7 @@ halign="center"
      mouse_opaque="false"
      name="Inventory Menu"
      top="0"
-	 visible="true"
+	   visible="true"
      width="290">
         <menu
          height="101"
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index b2ed51abf37045bc3d7e1004030c661917e04faf..d484564e0d05720536b2ac9d0180f52e57d6adb3 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -44,6 +44,7 @@
 	     direction="down"
 	     height="23"
 	     image_overlay="Arrow_Left_Off"
+	     image_bottom_pad="1"
 	     layout="topleft"
 	     left="10"
 	     name="back_btn"
@@ -55,6 +56,7 @@
 	     direction="down"
 	     height="23"
 	     image_overlay="Arrow_Right_Off"
+	     image_bottom_pad="1"
 	     layout="topleft"
 	     left_pad="0"
 	     name="forward_btn"
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 3b5add33a8841ad563e594dfb2779848925389fd..446bf0dc6e57bc5ed5ae8f6f2a6c243005bf56ef 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -137,6 +137,7 @@ background_visible="true"
                         <avatar_list
                          allow_select="true"
                          follows="all"
+                         height="235"
                          layout="topleft"
                          left="0"
                          multi_select="true"
@@ -152,6 +153,7 @@ background_visible="true"
                         <avatar_list
                          allow_select="true"
                          follows="all"
+                         height="235"
                          layout="topleft"
                          left="0"
                          multi_select="true"
@@ -234,8 +236,8 @@ If you're looking for people to hang out with, [secondlife:///app/worldmap try t
              layout="topleft"
              left="0"
              name="group_list"
-             no_filtered_groups_msg="No groups"
-             no_groups_msg="[secondlife:///app/search/groups Trying searching for some groups to join.]"
+             no_filtered_groups_msg="[secondlife:///app/search/groups Try fine the group in search?]"
+             no_groups_msg="[secondlife:///app/search/groups Try searching for some groups to join.]"
              top="0"
              width="313" />
             <panel
diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml
index 375f369ba729c3c8827240700d8cecab5bfb4e69..097813131ff63df046852b23cdc2f34ab41a8f96 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -16,7 +16,7 @@
      image_overlay="BackArrow_Off"
      layout="topleft"
      name="back_btn"
-     left="10"
+     left="11"
      tab_stop="false"
      top="2"
      width="23" />
@@ -27,7 +27,7 @@
      layout="topleft"
      left_pad="10"
      name="title"
-     text_color="white"
+     text_color="LtGray"
      top="0"
      value="Pick Info"
      use_ellipses="true"
@@ -36,12 +36,12 @@
      color="DkGray2"
      opaque="true"
      follows="all"
-     height="500"
+     height="502"
      layout="topleft"
-     left="10"
-     top_pad="5"
+     left="9"
+     top_pad="10"
      name="profile_scroll"
-     width="313">
+     width="310">
     <panel
      name="scroll_content_panel"
      follows="left|top|right"
@@ -57,10 +57,10 @@
          follows="left|top|right"
          height="197"
          layout="topleft"
-         left="10"
+         left="11"
          name="pick_snapshot"
-         top="20"
-         width="280" />
+         top="10"
+         width="272" />
         <text_editor
          allow_scroll="false"
          bg_visible="false"
@@ -115,8 +115,8 @@
      follows="left|right|bottom"
      height="35"
      layout="topleft"
-     top_pad="8"
-     left="10"
+     top_pad="5"
+     left="9"
      name="buttons">
         <button
          follows="bottom|left"
@@ -126,24 +126,22 @@
          left="0"
          name="teleport_btn"
          top="0"
-         width="90" />
+         width="101" />
         <button
          follows="bottom|left"
          height="23"
          label="Map"
          layout="topleft"
-         left_pad="10"
+         left_pad="3"
          name="show_on_map_btn"
-         top="0"
-         width="90" />
+         width="100" />
         <button
          follows="bottom|left"
          height="23"
          label="Edit"
          layout="topleft"
-         right="-1"
          name="edit_btn"
-         top="0"
-         width="90" />
+         left_pad="3"
+         width="101" />
     </panel>
 </panel>
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 023b1fc81d77c26e53abc60b03beb2c35a38562e..8b25fb5d2a6c74c4329e739ab3dbad154fba8b44 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
@@ -64,6 +64,7 @@
      layout="topleft"
      left="103"
      name="picture_descr"
+     textbox.show_context_menu="false" 
      top_pad="0"
      width="178"
      word_wrap="true" />
@@ -75,6 +76,6 @@
      left_pad="5"
      right="-8"
      name="info_chevron"
-     top_delta="15"
+     top_delta="24"
      width="20" />
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml
index d31f4d039f9e5e6c335e6545dd0d7385a63bfade..9ef3649d9c120e151dada744c7dc94a74cee0f5a 100644
--- a/indra/newview/skins/default/xui/en/panel_picks.xml
+++ b/indra/newview/skins/default/xui/en/panel_picks.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
+bg_opaque_color="DkGray2"
+       background_visible="true"
+       background_opaque="true"
  follows="all"
  height="540"
  label="Picks"
@@ -21,6 +24,7 @@
   layout="topleft"
   left="6"
   name="picks_panel_text"
+  wrap="true"
   top="10"
   width="313"/>
  <accordion
@@ -70,13 +74,15 @@
     </accordion_tab>
  </accordion>
    <panel
-         background_visible="true"
+bg_opaque_color="DkGray2"
+       background_visible="true"
+       background_opaque="true"
          bevel_style="none"
          enabled="false"
          auto_resize="false"
          follows="bottom"
-         left="0"
-         height="18"
+         left="1"
+         height="27"
          label="bottom_panel"
          layout="topleft"
          name="edit_panel"
@@ -90,9 +96,9 @@
              image_unselected="OptionsMenu_Off"
               image_disabled="OptionsMenu_Disabled"
              layout="topleft"
-             left="0"
+             left="10"
              name="gear_menu_btn"
-             top="5"
+             top="9"
              width="18" />
             <button
              follows="bottom|left"
@@ -104,7 +110,7 @@
              left_pad="15"
              name="new_btn"
              tool_tip="Create a new pick or classified at the current location"
-             top="5"
+             top="9"
              width="18" />
             <button
              follows="bottom|right"
@@ -115,14 +121,17 @@
              layout="topleft"
              name="trash_btn"
              right="-10"
-             top="5"
+             top="9"
              width="18" />
         </panel>
         <panel
+ bg_opaque_color="DkGray"
+       background_visible="true"
+       background_opaque="true"
          layout="topleft"
          left="0"
          height="30"
-         top_pad="10"
+         top_pad="7"
          name="buttons_cucks"
          width="313">
        <button
@@ -131,35 +140,33 @@
          height="23"
          label="Info"
          layout="topleft"
-         left="5"
+         left="2"
          name="info_btn"
          tab_stop="false"
          tool_tip="Show pick information"
-         top="0"
-         width="55" />
+         top="5"
+         width="95" />
         <button
          enabled="false"
          follows="bottom|left"
          height="23"
          label="Teleport"
          layout="topleft"
-         left_pad="5"
+         left_pad="3"
          name="teleport_btn"
          tab_stop="false"
          tool_tip="Teleport to the corresponding area"
-         top="0"
-         width="77" />
+         width="117" />
         <button
          enabled="false"
          follows="bottom|left"
          height="23"
          label="Map"
          layout="topleft"
-         left_pad="5"
+         left_pad="3"
          name="show_on_map_btn"
          tab_stop="false"
          tool_tip="Show the corresponding area on the World Map"
-         top="0"
-         width="50" />
+         width="90" />
         </panel>
 </panel>
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 7ac771de27e0c4213724e24e2ad1b0fa704257c6..94c9b2de0162860219e7bccbb6725bb7703cf1bb 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -29,7 +29,7 @@
      value="Place Profile" />
     <string
      name="title_teleport_history"
-     value="Teleport History Location" />
+     value="Teleport History" />
     <string
      name="not_available"
      value="(N\A)" />
@@ -156,7 +156,7 @@
      layout="topleft"
      left_pad="10"
      name="title"
-     text_color="white"
+     text_color="LtGray"
      top="0"
      use_ellipses="true"
      value="Place Profile"
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 4d14d46743df1ecf7bafe52d61d9f80866dbdb18..05a3771edf0b6aefe4bd0a4bb4f54494b826b621 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
@@ -266,61 +266,4 @@ Automatic position for:
           <button.commit_callback
           function="Pref.VoiceSetMiddleMouse" />
     </button>
-       <text
-     follows="left|top"
-     type="string"
-     length="1"
-     height="13"
-     layout="topleft"
-     left="30"
-     top_pad="8"
-     name="AspectRatioLabel1"
-     tool_tip="width / height"
-     label_width="50"
-     width="120">
-        Aspect ratio
-    </text>
-    <combo_box
-     allow_text_entry="true"
-     height="23"
-     follows="left|top"
-     layout="topleft"
-     left="80"
-     max_chars="100"
-     name="aspect_ratio"
-     tool_tip="width / height"
-     width="150">
-        <combo_box.item
-         enabled="true"
-         label=" 4:3 (Standard CRT)"
-         name="item1"
-         value="1.333333" />
-        <combo_box.item
-         enabled="true"
-         label=" 5:4 (1280x1024 LCD)"
-         name="item2"
-         value="1.25" />
-        <combo_box.item
-         enabled="true"
-         label=" 8:5 (Widescreen)"
-         name="item3"
-         value="1.6" />
-        <combo_box.item
-         enabled="true"
-         label=" 16:9 (Widescreen)"
-         name="item4"
-         value="1.7777777" />
-    </combo_box>
-    <check_box
-     control_name="FullScreenAutoDetectAspectRatio"
-     follows="left|top"
-     height="25"
-     label="Automatic"
-     layout="topleft"
-     left_pad="10"
-     name="aspect_auto_detect"
-     width="256">
-        <check_box.commit_callback
-         function="Pref.AutoDetectAspect" />
-    </check_box>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
index f7e3ede93c266bc7518b37f96174639a45f43158..f78d90c434e800d6d57ab85311003aa17dcf3406 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -17,6 +17,7 @@
      follows="left|bottom"
      height="23"
      label="Clear History"
+     tool_tip="Clear login image, last location, teleport history, web, and texture cache"
      layout="topleft"
      left="30"
      name="clear_cache"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
index 8bff865eb175a9c991aa0c472c87d4bd0e1cf5a8..ae5e6fbbfa336d25467d64c1aa891d60c4364096 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
@@ -38,7 +38,7 @@
      image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
-     left_pad="10"
+     left_pad="16"
      name="mute_audio"
      tab_stop="false"
      width="16" />
@@ -82,7 +82,7 @@
      image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
-     left_pad="10"
+     left_pad="16"
      name="mute_audio"
      tab_stop="false"
      width="16" />
@@ -116,7 +116,7 @@
      image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
-     left_pad="10"
+     left_pad="16"
      name="mute_audio"
      tab_stop="false"
      width="16" />
@@ -150,7 +150,7 @@
      image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
-     left_pad="10"
+     left_pad="16"
      name="mute_audio"
      tab_stop="false"
      width="16" />
@@ -184,7 +184,7 @@
      image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
-     left_pad="10"
+     left_pad="16"
      name="mute_audio"
      tab_stop="false"
      width="16" />
@@ -218,7 +218,7 @@
      image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
-     left_pad="10"
+     left_pad="16"
      name="mute_audio"
      tab_stop="false"
      width="16" />
@@ -267,7 +267,7 @@
      image_unselected="Audio_Off"
      is_toggle="true"
      layout="topleft"
-     left_pad="10"
+     left_pad="16"
      name="mute_audio"
      tab_stop="false"
      width="16" />
diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml
index f5396951ca0ee5e92fd6ad3ac5a92c261f46fdd7..607de65c5c6758aab5024cf12bbd7d468e9e048b 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml
@@ -35,7 +35,7 @@
       layout="topleft"
       left_pad="10"
       name="user_name"
-      text_color="white"
+      text_color="LtGray"
       top="0"
       value="(Loading...)"
       use_ellipses="true"
diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml
index 26568c2a289c01e8ae60100ba023bea8f2ad6f4e..c06e67a4bb5616c8866176378916c0911348281a 100644
--- a/indra/newview/skins/default/xui/en/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_general.xml
@@ -134,6 +134,7 @@
      top="200"
      width="80" />
     <spinner
+     decimal_digits="0"
      follows="left|top"
      height="20"
      increment="1"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
index fab1f11273ec94b238019898aa73cfb9d668eb26..bde45a94873c10acfff5208478787bf0da853118 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -46,10 +46,10 @@ width="333">
       top="0"
       width="30" />
       <text
-      font="SansSerifHuge"
+      font="SansSerifHugeBold"
       height="20"
       left_pad="5"
-      text_color="white"
+      text_color="LtGray"
       top="3"
       use_ellipses="true"
       width="305"
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 e18f59ab648a9ce4592861230f7b87a644aa913b..18b59741bfeaedb095eff855625630d64ab1bed6 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
@@ -50,7 +50,7 @@
      width="23" />
     <text
      follows="top|left|right"
-     font="SansSerifHuge"
+     font="SansSerifHugeBold"
      height="26"
      layout="topleft"
      left_pad="10"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index a3da55e2a6abd398b19c5c8092203f39af0e097b..ae986f1851dd809d8936a43b17e4663d0836cc69 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -115,9 +115,6 @@
   <!-- Avatar name: More than one avatar is selected/used here -->
   <string name="AvatarNameMultiple">(multiple)</string>
 
-  <!-- Avatar name: text shown as an alternative to AvatarNameFetching, easter egg. -->
-	<string name="AvatarNameHippos">(hippos)</string>
-
 	<!-- Group name: text shown for LLUUID::null -->
 	<string name="GroupNameNone">(none)</string>
 
@@ -254,6 +251,7 @@
 	<string name="connected">Connected</string>
 	<string name="unavailable">Voice not available at your current location</string>
 	<string name="hang_up">Disconnected from in-world Voice Chat</string>
+  <string name="reconnect_nearby">You will now be reconnected to Nearby Voice Chat</string>
 	<string name="ScriptQuestionCautionChatGranted">'[OBJECTNAME]', an object owned by '[OWNERNAME]', located in [REGIONNAME] at [REGIONPOS], has been granted permission to: [PERMISSIONS].</string>
 	<string name="ScriptQuestionCautionChatDenied">'[OBJECTNAME]', an object owned by '[OWNERNAME]', located in [REGIONNAME] at [REGIONPOS], has been denied permission to: [PERMISSIONS].</string>
 	<string name="ScriptTakeMoney">Take Linden dollars (L$) from you</string>
@@ -1807,7 +1805,7 @@ Clears (deletes) the media and all params from the given face.
 	<string name="LeaveMouselook">Press ESC to return to World View</string>
 
 	<!-- inventory -->
-	<string name="InventoryNoMatchingItems">No matching items found in inventory.</string>
+	<string name="InventoryNoMatchingItems">[secondlife:///app/search/groups No matching items found in inventory.Try "Search"?]</string>
   <string name="FavoritesNoMatchingItems">Drag a landmark here to add it to your favorites.</string>
 	<string name="InventoryNoTexture">
 		You do not have a copy of
@@ -2131,7 +2129,7 @@ this texture in your inventory
 	<string name="ClassifiedUpdateAfterPublish">(will update after publish)</string>
   
   <!-- panel picks -->
-  <string name="NoPicksClassifiedsText">There are no picks/classifieds here</string>
+  <string name="NoPicksClassifiedsText">You haven't created any Picks or Classifieds. Click the Plus button below to create a Pick or Classified.</string>
   <string name="PicksClassifiedsLoadingText">Loading...</string>
 
 	<!-- Multi Preview Floater -->
diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml
index 74d8478551334ab7782229f75b3c25a72641410c..1b34a731a574d729be20c51e54dc4e6107a44402 100644
--- a/indra/newview/skins/default/xui/en/widgets/button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/button.xml
@@ -7,10 +7,9 @@
         image_selected="PushButton_Selected"
         image_disabled_selected="PushButton_Selected_Disabled"
         image_disabled="PushButton_Disabled"
-        image_left_pad="0"
-        image_right_pad="0"
         image_top_pad="0"
         image_bottom_pad="0"
+        imgoverlay_label_space="1"
         label_color="ButtonLabelColor"
         label_color_selected="ButtonLabelSelectedColor"
         label_color_disabled="ButtonLabelDisabledColor"
diff --git a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml
index 888b4eaf7ca1585a6e88d7efed49d2c9fd9ecde2..a71b293f31942b5838658fee6fdd51bd99a34cb3 100644
--- a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml
+++ b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml
@@ -5,4 +5,12 @@
  item_pad="0"
  keep_one_selected="true"
  multi_select="false"
- opaque="true" />
\ No newline at end of file
+ opaque="true">
+    <flat_list_view.no_items_text
+     follows="all"
+     name="no_items_msg"
+     v_pad="10"
+     h_pad="10"
+     value="There are no any items in the list"
+     wrap="true" />
+</flat_list_view>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/widgets/inspector.xml b/indra/newview/skins/default/xui/en/widgets/inspector.xml
index 8ec206023e5b89128caf1413e76393cf2e9b7ce7..428b2ce03b0427c1245722f973db79c64cb26bf0 100644
--- a/indra/newview/skins/default/xui/en/widgets/inspector.xml
+++ b/indra/newview/skins/default/xui/en/widgets/inspector.xml
@@ -1,10 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- See also settings.xml UIFloater* settings for configuration -->
 <inspector name="inspector"
-          bg_opaque_color="DkGray_66"
-          background_visible="true"
-          bg_opaque_image="none"
-          background_opaque="true"
-          bg_alpha_image="none"
-		  text_color="InspectorTipTextColor"
- />
+           bg_opaque_color="DkGray_66"
+           background_visible="true"
+           bg_opaque_image="Inspector_Hover"
+           background_opaque="true"
+           bg_alpha_image="none"
+           mouse_opaque="true" 
+           text_color="InspectorTipTextColor"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
index 2163660206e635f7872cc988cf7c522310586ce0..1d61447e31bb302d4ae76c3947ac8b73d112400c 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -4,6 +4,8 @@
        Currently that doesn't work because LLUIImage::getWidth/getHeight() return 1 for the images.
 -->
 <location_input font="SansSerifSmall"
+                icon_maturity_general="Parcel_PG_Light"
+                icon_maturity_adult="Parcel_R_Light"
                 add_landmark_image_enabled="Favorite_Star_Active"
                 add_landmark_image_disabled="Favorite_Star_Off"
                 add_landmark_image_hover="Favorite_Star_Over"
@@ -41,6 +43,13 @@
                           scale_image="false"
 			  top="19"
 			  left="-3" />
+  <maturity_icon
+    name="maturity_icon"
+    width="18"
+    height="16"
+    top="20"
+    follows="left|top"
+    />
   <for_sale_button
     name="for_sale_btn"
     image_unselected="Parcel_ForSale_Light"
@@ -99,7 +108,7 @@
     top="19"
     left="2"
     follows="right|top"
-    image_name="Parcel_Damage_Dark"
+    image_name="Parcel_Health_Dark"
     />
   <!-- Default text color is invisible on top of nav bar background -->
   <damage_text
diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
index 597c4e83b60323f640596da777204f8048fe7662..4a163fc1e31bb534f67cdb1545fa77f9b3193e33 100644
--- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
@@ -5,6 +5,7 @@ label_pad_left - padding to the left of tab button labels
 -->
 <tab_container tab_min_width="60"
                tab_max_width="150"
+               use_custom_icon_ctrl="false"
                halign="center"
                font="SansSerifSmall" 
                tab_height="21"
diff --git a/indra/newview/skins/default/xui/en/widgets/text_editor.xml b/indra/newview/skins/default/xui/en/widgets/text_editor.xml
index 23ca8ea3385ce93ca94ec06f1912fe6c66df25bf..2ced8b1b4ba33661c0028aae6b8d0c5a41f70182 100644
--- a/indra/newview/skins/default/xui/en/widgets/text_editor.xml
+++ b/indra/newview/skins/default/xui/en/widgets/text_editor.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <!-- Core parameters are in simple_text_editor.xml -->
 <text_editor
-  allow_html="false"/>
+  allow_html="false"
+  show_context_menu="true"/>
diff --git a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml
index a19201f7c33ff1db56c5ef28ad2d3524d0e3dac7..9ca15ae50d39a63ed1715620436b7811161ddba1 100644
--- a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml
@@ -1,12 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- See also settings.xml UIFloater* settings for configuration -->
 <tool_tip name="tooltip"
           max_width="200"
           padding="4"
           wrap="true"
           font="SansSerif"
+          mouse_opaque="false" 
           bg_opaque_image="Tooltip"
           background_opaque="true"
           background_visible="true"
-		  text_color="ToolTipTextColor"
- />
+		      text_color="ToolTipTextColor"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml
index 7d6d736c5e22a466ec2740debb63a0de4e753464..440412c0c00498226b968648135ab80c494cb9c1 100644
--- a/indra/newview/skins/default/xui/fr/floater_about.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about.xml
@@ -49,19 +49,20 @@ Version Vivox : [VIVOX_VERSION]
 
 
 
-  Pour réussir dans les affaires, soyez audacieux, créatif et différent. - Henry Marchant
+Pour réussir dans les affaires, soyez audacieux, créatif et différent. - Henry Marchant
 			</text_editor>
 		</panel>
 		<panel label="Licences" name="licenses_panel">
 			<text_editor name="credits_editor">
-				3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
+  3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
   APR Copyright (C) 2000-2004 The Apache Software Foundation
   cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se)
   expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
   FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org).
   GL Copyright (C) 1999-2004 Brian Paul.
   Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
-  jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
+  jpeg2000 Copyright (C) 2001, David Taubman, The University of New South 
+  Wales (UNSW)
   jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
   ogg/vorbis Copyright (C) 2001, Xiphophorus
   OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
@@ -73,7 +74,8 @@ Version Vivox : [VIVOX_VERSION]
   
   Tous droits réservés.  Voir licenses.txt pour plus de détails.
 
-  Codage Audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
+  Codage Audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 
+  Annex C)
 			</text_editor>
 		</panel>
 	</tab_container>
diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml
index 4c97551e55681bf57e0dfc63cb0f79ae887a8c82..8e2b27aca6bbd6034777e0fb67f791e19aa3d6cc 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -12,7 +12,7 @@
 	<floater.string name="Remaining">
 		restantes
 	</floater.string>
-	<tab_container name="landtab">
+	<tab_container name="landtab" tab_min_width="60">
 		<panel label="GÉNÉRAL" name="land_general_panel">
 			<panel.string name="new users only">
 				Nouveaux utilisateurs uniquement
@@ -128,10 +128,10 @@
 			<text name="DwellText">
 				0
 			</text>
-			<button label="Acheter du terrain" label_selected="Acheter le terrain..." left="130" name="Buy Land..." width="125"/>
-			<button label="Infos sur les scripts" name="Scripts..."/>
+			<button label="Acheter du terrain" label_selected="Acheter le terrain..." left_delta="60" name="Buy Land..." width="125"/>
+			<button label="Infos sur les scripts" name="Scripts..." width="110"/>
 			<button label="Acheter pour le groupe" label_selected="Acheter pour le groupe..." name="Buy For Group..."/>
-			<button label="Acheter un pass" label_selected="Acheter un pass..." left="130" name="Buy Pass..." tool_tip="Un pass vous donne un accès temporaire à ce terrain." width="125"/>
+			<button label="Acheter un pass" label_selected="Acheter un pass..." left_delta="-127" name="Buy Pass..." tool_tip="Un pass vous donne un accès temporaire à ce terrain." width="125"/>
 			<button label="Abandonner le terrain" label_selected="Abandonner le terrain..." name="Abandon Land..."/>
 			<button label="Récupérer le terrain" label_selected="Redemander le terrain…" name="Reclaim Land..."/>
 			<button label="Vente Linden" label_selected="Vente Linden..." name="Linden Sale..." tool_tip="Le terrain doit être la propriété d&apos;un résident, avoir un contenu défini et ne pas être aux enchères."/>
@@ -252,13 +252,13 @@ ou divisé.
 			</text>
 			<button label="Afficher" label_selected="Afficher" name="ShowOther" right="-135" width="60"/>
 			<button label="Retour" label_selected="Renvoyer..." name="ReturnOther..." right="-10" tool_tip="Renvoyer les objets à leurs propriétaires." width="119"/>
-			<text left="14" name="Selected / sat upon:" width="193">
+			<text left="14" name="Selected / sat upon:" width="220">
 				Sélectionnées/où quelqu&apos;un est assis :
 			</text>
-			<text left="214" name="selected_objects_text" width="48">
+			<text left_delta="214" name="selected_objects_text" width="48">
 				[COUNT]
 			</text>
-			<text left="4" name="Autoreturn" width="412">
+			<text left="4" name="Autoreturn" width="440">
 				Renvoi automatique des objets d&apos;autres résidents (minutes, 0 pour désactiver) :
 			</text>
 			<line_editor name="clean other time" right="-6" width="36"/>
@@ -270,9 +270,9 @@ ou divisé.
 			<name_list label="Plus récents" name="owner list">
 				<name_list.columns label="Type" name="type"/>
 				<name_list.columns name="online_status"/>
-				<name_list.columns label="Nom" name="name"/>
-				<name_list.columns label="Nombre" name="count"/>
-				<name_list.columns label="Plus récents" name="mostrecent"/>
+				<name_list.columns label="Nom" name="name" width="100"/>
+				<name_list.columns label="Nombre" name="count" width="100"/>
+				<name_list.columns label="Plus récents" name="mostrecent" width="120"/>
 			</name_list>
 		</panel>
 		<panel label="OPTIONS" name="land_options_panel">
@@ -317,7 +317,7 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 			</text>
 			<check_box label="Tous" left="285" name="edit objects check"/>
 			<check_box label="Groupe" left="395" name="edit group objects check"/>
-			<text left="152" name="allow_label3" width="134">
+			<text left="152" name="allow_label3" width="150">
 				Laisser entrer des objets :
 			</text>
 			<check_box label="Tous" left="285" name="all object entry check"/>
@@ -402,7 +402,8 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 			</text>
 			<line_editor left="97" name="url_description" tool_tip="Texte affiché à côté du bouton Jouer/Charger"/>
 			<text name="Media texture:">
-				Remplacer la texture :
+				Remplacer la 
+texture :
 			</text>
 			<texture_picker label="" left="97" name="media texture" tool_tip="Cliquez pour sélectionner une image"/>
 			<text name="replace_texture_help">
@@ -423,8 +424,9 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 			<check_box label="En boucle" name="media_loop" tool_tip="Jouer le média en boucle. Lorsque le média aura fini de jouer, il recommencera."/>
 		</panel>
 		<panel label="SON" name="land_audio_panel">
-			<text name="MusicURL:">
-				URL de la musique :
+			<text name="MusicURL:" bottom_delta="-28" >
+				URL de la 
+musique :
 			</text>
 			<text name="Sound:">
 				Son :
@@ -455,7 +457,7 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 			<check_box label="Vérification de l&apos;âge [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Bannir les résidents qui n&apos;ont pas vérifié leur âge. Consultez la page [SUPPORT_SITE] pour plus d&apos;informations."/>
 			<check_box label="Autoriser l&apos;accès au groupe : [GROUP]" name="GroupCheck" tool_tip="Définir le groupe à l&apos;onglet Général."/>
 			<check_box label="Vendre des pass à :" name="PassCheck" tool_tip="Autoriser un accès temporaire à cette parcelle"/>
-			<combo_box name="pass_combo">
+			<combo_box name="pass_combo" width="110">
 				<combo_box.item label="Tout le monde" name="Anyone"/>
 				<combo_box.item label="Groupe" name="Group"/>
 			</combo_box>
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
index e784bda2e552f291685ad094cb877de6c385c7ea..65bb683e4c451340bdfccb9461c1e152131f2666 100644
--- a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
@@ -20,7 +20,7 @@
 	</string>
 	<tab_container name="ResidentChooserTabs">
 		<panel label="Rechercher" name="SearchPanel">
-			<text name="InstructSearchResidentName">
+			<text name="InstructSearchResidentName" width="240">
 				Saisissez une partie du nom du résident :
 			</text>
 			<button label="OK" label_selected="OK" name="Find"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
index 313c9496a290411137dcd6a6e70af61f0b3384e1..983efcdc47ca99d86e78fa6a7f32e8324c4373dc 100644
--- a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
@@ -23,8 +23,8 @@
 			<texture_picker label="Å’il" name="eyes_iris"/>
 			<texture_picker label="Alpha yeux" name="eyes_alpha"/>
 			<texture_picker label="Haut du corps" name="upper-baked"/>
-			<texture_picker label="Peinture corporelle haut" name="upper_bodypaint"/>
-			<texture_picker label="Sous-vêtements (homme)" name="upper_undershirt"/>
+			<texture_picker label="Peinture corporelle &#10;haut" name="upper_bodypaint"/>
+			<texture_picker label="Sous-vêtements &#10;(homme)" name="upper_undershirt"/>
 			<texture_picker label="Gants" name="upper_gloves"/>
 			<texture_picker label="Chemise" name="upper_shirt"/>
 			<texture_picker label="Veste (haut)" name="upper_jacket"/>
@@ -32,7 +32,7 @@
 			<texture_picker label="Tatouage haut" name="upper_tattoo"/>
 			<texture_picker label="Bas du corps" name="lower-baked"/>
 			<texture_picker label="Peinture corporelle bas" name="lower_bodypaint"/>
-			<texture_picker label="Sous-vêtements (femme)" name="lower_underpants"/>
+			<texture_picker label="Sous-vêtements &#10;(femme)" name="lower_underpants"/>
 			<texture_picker label="Chaussettes" name="lower_socks"/>
 			<texture_picker label="Chaussures" name="lower_shoes"/>
 			<texture_picker label="Pantalon" name="lower_pants"/>
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 5ea36d85059c58ba290fa9603bc4491c59b81de6..c7437c460385a3362dd4686681bd8b15ce81dc54 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
@@ -7,7 +7,8 @@
 		Vous avez besoin de plus de L$
 	</text>
 	<text name="contacting">
-		En train de contacter le Lindex...
+		En train de contacter 
+le Lindex...
 	</text>
 	<text left="5" name="info_buying">
 		Acheter des L$
@@ -59,7 +60,7 @@
 	</text>
 	<button label="Acheter" name="buy_btn"/>
 	<button label="Annuler" name="cancel_btn"/>
-	<text left="5" name="info_cannot_buy" right="-5">
+	<text left="5" name="info_cannot_buy" width="200" right="-5">
 		Achat impossible
 	</text>
 	<button label="Accéder au Web" name="error_web"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_land.xml b/indra/newview/skins/default/xui/fr/floater_buy_land.xml
index 1d7eeca3c407e0cfa9e0a9f27c750f641b7e0dd7..f5cf8718447038e28805a782dd0b873bd760a903 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_land.xml
@@ -37,10 +37,10 @@
 		Vous devez accepter le règlement du domaine :
 	</text>
 	<text left="470" name="covenant_timestamp_text"/>
-	<text_editor name="covenant_editor">
+	<text_editor name="covenant_editor" left="510">
 		Chargement...
 	</text_editor>
-	<check_box label="J&apos;accepte le règlement ci-dessus." name="agree_covenant"/>
+	<check_box label="J&apos;accepte le règlement ci-dessus." name="agree_covenant" left="510"/>
 	<text name="info_parcel_label">
 		Parcelle :
 	</text>
@@ -79,9 +79,20 @@ vendu avec objets
 		<combo_box.item label="7,50 US$/mois, facturation trimestrielle" name="US$7.50/month,billedquarterly"/>
 		<combo_box.item label="6,00 US$/mois, facturation annuelle" name="US$6.00/month,billedannually"/>
 	</combo_box>
-	<text name="land_use_action">
-		Augmentez vos frais d&apos;occupation de terrain à 40 US$/mois.
-	</text>
+    <text
+     type="string"
+     length="1"
+     follows="top|left"
+     font="SansSerifBig"
+     height="16"
+     layout="topleft"
+     left="72"
+     name="land_use_action"
+     right="500"
+     top="284"
+     width="400">
+        Augmentez vos frais d&apos;occupation de terrain à 40 US$/mois.
+    </text>
 	<text name="land_use_reason">
 		Vous détenez 1 309 m² de terrain.
 Cette parcelle fait 512 m².
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 c509a4783e02e04e45e37eef788a091fad4f1424..8d7fe76b35b2444fe1451366d7ea012b0b0286a9 100644
--- a/indra/newview/skins/default/xui/fr/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/fr/floater_color_picker.xml
@@ -25,7 +25,7 @@
 	<text left="8" name="Current color:">
 		Couleur actuelle :
 	</text>
-	<text left="8" name="(Drag below to save.)" width="114">
+	<text left="8" name="(Drag below to save.)" width="220">
 		(Faire glisser dessous pour enregistrer.)
 	</text>
 </floater>
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 0b36b7b8ca7c2fb6d1ae8063ccbf5ed63a57fc25..15cc6cd1ba0bfc3f3ddc4fd7a3a38fbea9751ba1 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
@@ -59,14 +59,14 @@
 			</text>
 			<button label="Ajouter clé" label_selected="Ajouter clé" name="WLAddKey" width="89" bottom="-45" />
 			<button label="Supprimer clé" label_selected="Supprimer clé" name="WLDeleteKey" width="89" bottom="-70" />
-			<text name="WLCurKeyFrameText">
+			<text name="WLCurKeyFrameText" width="170">
 				Réglages des images-clés :
 			</text>
-			<text name="WLCurKeyTimeText">
+			<text name="WLCurKeyTimeText" width="170">
 				Heure de la clé :
 			</text>
-			<spinner label="Heure" name="WLCurKeyHour" />
-			<spinner label="Min" name="WLCurKeyMin" />
+			<spinner label="Heure" name="WLCurKeyHour" label_width="80" width="74"/>
+			<spinner label="Min" name="WLCurKeyMin" label_width="80"/>
 			<text name="WLCurKeyTimeText2">
 				Préréglages clés :
 			</text>
@@ -78,13 +78,13 @@
 			<text name="DayCycleText2">
 				Durée du cycle :
 			</text>
-			<spinner label="Heure" name="WLLengthOfDayHour" />
+			<spinner label="Heure" name="WLLengthOfDayHour" label_width="80" width="74" />
 			<spinner label="Min" name="WLLengthOfDayMin" />
-			<spinner label="S" name="WLLengthOfDaySec" label_width="10" width="50" left_delta="75"/>
-			<text name="DayCycleText3">
+			<spinner label="S" name="WLLengthOfDaySec" label_width="10" width="50" left_delta="95"/>
+			<text name="DayCycleText3" left="280" width="200">
 				Prévisualiser :
 			</text>
-			<button label="Jouer" label_selected="Jouer" name="WLAnimSky" />
+			<button label="Jouer" label_selected="Jouer" name="WLAnimSky" left_delta="90"/>
 			<button label="Stop !" label_selected="Stop" name="WLStopAnimSky" />
 			<button label="Utiliser heure domaine" label_selected="Aller heure domaine"
 			     name="WLUseLindenTime" />
diff --git a/indra/newview/skins/default/xui/fr/floater_env_settings.xml b/indra/newview/skins/default/xui/fr/floater_env_settings.xml
index 505c9236c7db7800f093e7c884a18714a340dbf0..dd714e85b675232a5e588bc7898d54064a07613e 100644
--- a/indra/newview/skins/default/xui/fr/floater_env_settings.xml
+++ b/indra/newview/skins/default/xui/fr/floater_env_settings.xml
@@ -3,7 +3,7 @@
 	<floater.string name="timeStr">
 		[hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
 	</floater.string>
-	<text bottom="-45" name="EnvTimeText">
+	<text bottom="-45" name="EnvTimeText" top="29">
 		Heure de la
 journée
 	</text>
@@ -14,7 +14,7 @@ journée
 		Couverture
 nuageuse
 	</text>
-	<text bottom="-45" name="EnvWaterColorText">
+	<text bottom="-45" name="EnvWaterColorText" top="29">
 		Couleur de
 l&apos;eau
 	</text>
@@ -23,7 +23,7 @@ l&apos;eau
 		Brouillard
 dans l&apos;eau
 	</text>
-	<button bottom="-144" label="Utiliser heure du domaine" name="EnvUseEstateTimeButton" width="145"/>
+	<button bottom="-144" label="Utiliser heure du domaine" name="EnvUseEstateTimeButton" width="152"/>
 	<button label="Ciel avancé" left="162" name="EnvAdvancedSkyButton" width="145"/>
 	<button label="Eau avancée" left="316" name="EnvAdvancedWaterButton" width="145"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_god_tools.xml b/indra/newview/skins/default/xui/fr/floater_god_tools.xml
index 0dedf499bbf4946e830f545c930382cac57586e1..187814eba25759c1eba4bd9ff7c1a5d287cc0244 100644
--- a/indra/newview/skins/default/xui/fr/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_god_tools.xml
@@ -12,7 +12,7 @@
 			<line_editor left="85" name="region name" width="198"/>
 			<check_box label="Initiation" name="check prelude" tool_tip="Définir cette région comme zone d&apos;initiation."/>
 			<check_box label="Soleil fixe" name="check fixed sun" tool_tip="Définir la position du soleil (comme dans Région et Domaine &gt; Terrain.)"/>
-			<check_box height="32" label="Réinitialiser le domicile  à la téléportation" name="check reset home" tool_tip="Quand les résidents s&apos;en vont par téléportation, réinitialisez leur domicile sur l&apos;emplacement de destination."/>
+			<check_box height="32" label="Réinitialiser le domicile à la téléportation" name="check reset home" tool_tip="Quand les résidents s&apos;en vont par téléportation, réinitialisez leur domicile sur l&apos;emplacement de destination."/>
 			<check_box bottom_delta="-32" label="Visible" name="check visible" tool_tip="Cochez pour rendre la région visible aux non-admins."/>
 			<check_box label="Dégâts" name="check damage" tool_tip="Cochez pour activer les dégâts dans cette région."/>
 			<check_box label="Bloquer le suivi de trafic" name="block dwell" tool_tip="Cochez pour que la région ne comptabilise pas le trafic."/>
@@ -48,8 +48,8 @@
 			<spinner left="320" name="land cost" width="70"/>
 			<button label="Rafraîchir" label_selected="Rafraîchir" name="Refresh" tool_tip="Cliquez ici pour rafraîchir les informations ci-dessus."/>
 			<button label="Appliquer" label_selected="Appliquer" name="Apply" tool_tip="Cliquez ici pour appliquer les modifications effectuées ci-dessus."/>
-			<button label="Sélectionner une région" label_selected="Sélectionner une région" left="136" name="Select Region" tool_tip="Sélectionnez une région entière à l&apos;aide de l&apos;outil Terrain." width="140"/>
-			<button label="Sauvegarde automatique" label_selected="Sauvegarde automatique" left="136" name="Autosave now" tool_tip="Sauvegarde automatique au format gzip." width="140"/>
+			<button label="Sélectionner une région" label_selected="Sélectionner une région" left="136" name="Select Region" tool_tip="Sélectionnez une région entière à l&apos;aide de l&apos;outil Terrain." width="160"/>
+			<button label="Sauvegarde automatique" label_selected="Sauvegarde automatique" left="136" name="Autosave now" tool_tip="Sauvegarde automatique au format gzip." width="160"/>
 		</panel>
 		<panel label="Objets" name="objects">
 			<panel.string name="no_target">
diff --git a/indra/newview/skins/default/xui/fr/floater_inspect.xml b/indra/newview/skins/default/xui/fr/floater_inspect.xml
index de74f47bcfeef3df8fed5153b1b1f6dc5ef0336d..9b1bdf106dfdf5e87ebca56452fd884aab7fd1e8 100644
--- a/indra/newview/skins/default/xui/fr/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/fr/floater_inspect.xml
@@ -7,7 +7,7 @@
 		<scroll_list.columns label="Nom" name="object_name"/>
 		<scroll_list.columns label="Propriétaire" name="owner_name"/>
 		<scroll_list.columns label="Créateur" name="creator_name"/>
-		<scroll_list.columns label="Date de création" name="creation_date"/>
+		<scroll_list.columns label="Date de création" name="creation_date" width="114"/>
 	</scroll_list>
 	<button label="Voir le profil du propriétaire..." name="button owner" tool_tip="Voir le profil du propriétaire de l&apos;objet en surbrillance" width="172"/>
 	<button label="Voir le profil du créateur..." left="192" name="button creator" tool_tip="Voir le profil du créateur de l&apos;objet en surbrillance" width="172"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
index b0d5df161c04a5fbaf4d06858d9af0f3db6ed1cf..fca1a329a27fa7c7a9bd42f09201be87f1e3c1f6 100644
--- a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
@@ -47,11 +47,11 @@
 	<check_box label="Éditer" name="CheckOwnerModify"/>
 	<check_box label="Copier" name="CheckOwnerCopy"/>
 	<check_box label="Revendre" name="CheckOwnerTransfer"/>
-	<text name="AnyoneLabel">
+	<text name="AnyoneLabel" width="80">
 		N&apos;importe qui :
 	</text>
 	<check_box label="Copier" name="CheckEveryoneCopy"/>
-	<text name="GroupLabel">
+	<text name="GroupLabel" width="80">
 		Groupe :
 	</text>
 	<check_box label="Partager" name="CheckShareWithGroup"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml
index 52f8597dc27984cb1b0435c6aad96c98d581945b..6cd886d4b9d4e8f3c2c3c10067dea43daba48264 100644
--- a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml
+++ b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml
@@ -13,7 +13,7 @@
 	<check_box label="Photos" name="check_snapshot"/>
 	<button label="Tout" label_selected="Tout" name="All" width="70"/>
 	<button bottom_delta="0" label="Aucun" label_selected="Aucun" left="83" name="None" width="70"/>
-	<check_box bottom_delta="-20" label="Toujours montrer  les dossiers" name="check_show_empty"/>
+	<check_box bottom_delta="-20" label="Toujours montrer les dossiers" name="check_show_empty"/>
 	<check_box bottom_delta="-36" label="Depuis la déconnexion" name="check_since_logoff"/>
 	<text name="- OR -">
 		Ou il y a...
diff --git a/indra/newview/skins/default/xui/fr/floater_joystick.xml b/indra/newview/skins/default/xui/fr/floater_joystick.xml
index d3a1b6c61bac890395db4e7ec9fba6a7a9a7261f..e00f9564e8e2cef022aa0197cf1ee3e223f0e17b 100644
--- a/indra/newview/skins/default/xui/fr/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/fr/floater_joystick.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Joystick" title="CONFIGURATION DU JOYSTICK">
 	<check_box label="Activer :" name="enable_joystick"/>
-	<spinner label="Mapping axe des X " name="JoystickAxis1"/>
-	<spinner label="Mapping axe des Y" name="JoystickAxis2"/>
-	<spinner label="Mapping axe des Z" name="JoystickAxis0"/>
-	<spinner label="Mapping du tangage" label_width="111" left="8" name="JoystickAxis4" width="152"/>
-	<spinner label="Mapping du lacet" name="JoystickAxis5"/>
-	<spinner label="Mapping du roulis" name="JoystickAxis3"/>
-	<spinner label="Mapping du zoom" name="JoystickAxis6"/>
+	<spinner label="Mapping axe des X " name="JoystickAxis1" left="20" width="154" label_width="130"/>
+	<spinner label="Mapping axe des Y" name="JoystickAxis2" width="154" label_width="130"/>
+	<spinner label="Mapping axe des Z" name="JoystickAxis0" width="154" label_width="130"/>
+	<spinner label="Mapping du tangage" label_width="136" left="20" name="JoystickAxis4" width="154"/>
+	<spinner label="Mapping du lacet" name="JoystickAxis5" width="154" label_width="130"/>
+	<spinner label="Mapping du roulis" name="JoystickAxis3" width="154" label_width="130"/>
+	<spinner label="Mapping du zoom" name="JoystickAxis6" left="20" width="154" label_width="130"/>
 	<check_box label="Zoom direct" name="ZoomDirect"/>
-	<check_box label="Curseur 3D" name="Cursor3D"/>
-	<check_box label="Niveau automatique" name="AutoLeveling"/>
+	<check_box label="Curseur 3D" name="Cursor3D" left="300"/>
+	<check_box label="Niveau automatique" name="AutoLeveling" left="400"/>
 	<text name="Control Modes:">
 		Modes de contrôle :
 	</text>
@@ -44,13 +44,13 @@
 	<text name="ZDeadZone">
 		Zone neutre Z
 	</text>
-	<text left="4" name="PitchDeadZone" width="110">
-		Zone neutre Tangage
+	<text left="4" name="PitchDeadZone" width="116">
+		Zone neutre tangage
 	</text>
-	<text name="YawDeadZone">
+	<text name="YawDeadZone" left="10" width="104">
 		Zone neutre lacet
 	</text>
-	<text name="RollDeadZone">
+	<text name="RollDeadZone" left="10" width="104">
 		Zone neutre roulis
 	</text>
 	<text name="Feathering">
@@ -59,7 +59,7 @@
 	<text name="ZoomScale2">
 		Échelle du zoom
 	</text>
-	<text left="6" name="ZoomDeadZone" width="110">
+	<text left="6" name="ZoomDeadZone" width="120">
 		Zone neutre du zoom
 	</text>
 	<button label="Options par défaut du joystick" name="SpaceNavigatorDefaults"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml
index b0a2f92f7c7b791bc2776bdce13ec616a6212424..7e7180166dd392f30851a8ad5d00b3798ee76280 100644
--- a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml
@@ -11,5 +11,5 @@
 	</floater.string>
 	<button label="Réinitialiser" label_selected="Réinitialiser" left="390" name="Reset" width="100"/>
 	<check_box initial_value="true" label="Exécution en cours" left="4" name="running"/>
-	<check_box initial_value="true" label="Mono" left="130" name="mono"/>
+	<check_box initial_value="true" label="Mono" left_delta="160" name="mono"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml b/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml
index b92c0944dec00e1d74a7b80d245bb76379e07bc2..71d2c42578778225670b06ad5d5c45441aa847e2 100644
--- a/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="script ed float" title="RÉFÉRENCE LSL">
-	<check_box label="Suivre le curseur" name="lock_check"/>
-	<combo_box label="Verrouiller" left_delta="120" name="history_combo" width="70"/>
-	<button label="Précédente" left_delta="75" name="back_btn"/>
-	<button label="Suivante" name="fwd_btn"/>
+
+    <check_box label="Suivre le curseur" name="lock_check" width="90" />
+	<combo_box label="Verrouiller" left_delta="120" name="history_combo" width="82"/>
+	<button label="Précédente" name="back_btn" left_delta="75"/>
+	<button label="Suivante" name="fwd_btn" width="60"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_media_browser.xml b/indra/newview/skins/default/xui/fr/floater_media_browser.xml
index 0677c5d41f802622bf954a0d6ea85def9c66c296..58535eddf565816cc0a88a01bfa888a17ee22766 100644
--- a/indra/newview/skins/default/xui/fr/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/fr/floater_media_browser.xml
@@ -15,12 +15,12 @@
 			<button label="OK" left_delta="515" name="go"/>
 		</layout_panel>
 		<layout_panel name="time_controls">
-			<button label="en arrière" name="rewind"/>
+			<button label="en arrière" name="rewind" width="60"/>
 			<button label="stop" name="stop"/>
-			<button label="en avant" name="seek"/>
+			<button label="en avant" name="seek" width="60"/>
 		</layout_panel>
 		<layout_panel name="parcel_owner_controls">
-			<button label="Envoyer la page actuelle à la parcelle" name="assign"/>
+			<button label="Envoyer la page actuelle à la parcelle" name="assign" width="220"/>
 		</layout_panel>
 		<layout_panel name="external_controls">
 			<button label="Ouvrir dans mon navigateur web" name="open_browser" width="196"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml b/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml
index 5993f90cef3c3346c4e806040b0b8068311fce30..d03c4d754400d7e0023aa27e6f94a1bbbea43d3e 100644
--- a/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml
@@ -12,7 +12,7 @@
 		[NOTE2]
 	</text>
 	<button label="Commencer" name="start_btn" width="85"/>
-	<button label="Stop" left="100" name="stop_btn"/>
-	<button label="Libérer" left="177" name="release_btn"/>
-	<button label="Fermer" name="close_btn"/>
+	<button label="Stop" name="stop_btn"/>
+	<button label="Libérer" name="release_btn"/>
+	<button label="Fermer" name="close_btn" left_pad="20"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_notification.xml b/indra/newview/skins/default/xui/fr/floater_notification.xml
index 62727da00757be8e94e7f32d5d172935144044cb..fe4b5f9bd60a143fc0c1dd51eee91a6d0b4da14c 100644
--- a/indra/newview/skins/default/xui/fr/floater_notification.xml
+++ b/indra/newview/skins/default/xui/fr/floater_notification.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="notification" title="CONSOLE DE NOTIFICATIONS">
 	<text_editor name="payload">
-		Chargement..
+		Chargement...
 	</text_editor>
 	<combo_box label="Réponse" name="response"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_pay_object.xml b/indra/newview/skins/default/xui/fr/floater_pay_object.xml
index c96db77721ba3b1e68f4a5b78eef318f02e196b7..9cac739ab0f5589b8f4143f09937e1698a5f47a2 100644
--- a/indra/newview/skins/default/xui/fr/floater_pay_object.xml
+++ b/indra/newview/skins/default/xui/fr/floater_pay_object.xml
@@ -17,10 +17,10 @@
 	<text left="105" name="object_name_text">
 		...
 	</text>
-	<button label="1 L$" label_selected="1 L$" left="105" name="fastpay 1"/>
-	<button label="5 L$" label_selected="5 L$" left="190" name="fastpay 5"/>
-	<button label="10 L$" label_selected="10 L$" left="105" name="fastpay 10"/>
-	<button label="20 L$" label_selected="20 L$" left="190" name="fastpay 20"/>
+	<button label="1 L$" label_selected="1 L$" name="fastpay 1"/>
+	<button label="5 L$" label_selected="5 L$" name="fastpay 5"/>
+	<button label="10 L$" label_selected="10 L$" name="fastpay 10"/>
+	<button label="20 L$" label_selected="20 L$" name="fastpay 20"/>
 	<text halign="left" left="5" name="amount text">
 		Ou choisissez un montant :
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml b/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml
index 2be2ae7c8886427f678780a984771d9d17527370..f83000cf87ef20d255aafdb99c7a760099a9f5e7 100644
--- a/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml
+++ b/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml
@@ -4,7 +4,7 @@
 		<button label="?" label_selected="?" name="help"/>
 		<check_box label="Partager avec le groupe" name="share_with_group"/>
 		<check_box label="Autoriser tout le monde à copier" name="everyone_copy"/>
-		<text name="NextOwnerLabel">
+		<text name="NextOwnerLabel" width="260">
 			Le prochain propriétaire pourra :
 		</text>
 		<check_box label="Modifier" name="next_owner_modify"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_postcard.xml b/indra/newview/skins/default/xui/fr/floater_postcard.xml
index 6a9a674facca10690c3d5d037b589f363c570c2f..489b90eeba63e5d187fb89b1730f1cd3f0056561 100644
--- a/indra/newview/skins/default/xui/fr/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/fr/floater_postcard.xml
@@ -3,19 +3,19 @@
 	<text name="to_label" width="135">
 		E-mail du destinataire :
 	</text>
-	<line_editor left="143" name="to_form" width="127"/>
+	<line_editor left="143" name="to_form" width="130" left_delta="146"/>
 	<text name="from_label">
 		Votre e-mail :
 	</text>
-	<line_editor left="143" name="from_form" width="127"/>
+	<line_editor left="143" name="from_form" width="130" left_delta="146"/>
 	<text name="name_label">
 		Votre nom :
 	</text>
-	<line_editor left="143" name="name_form" width="127"/>
+	<line_editor left="143" name="name_form" width="130" left_delta="146"/>
 	<text name="subject_label">
 		Sujet :
 	</text>
-	<line_editor left="143" name="subject_form" width="127"/>
+	<line_editor left="143" name="subject_form" width="130" left_delta="146"/>
 	<line_editor label="Saisissez votre sujet ici." name="subject_form"/>
 	<text name="msg_label">
 		Message :
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml
index 06caf0635dc0e8941f18985272e7f78b3a8f8e37..d866c328827b2de949af41834fa9782041f89d3a 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml
@@ -6,8 +6,8 @@
 	<text name="key_label">
 		Clavier :
 	</text>
-	<combo_box label="Aucun" name="modifier_combo"/>
-	<combo_box label="Aucun" name="key_combo"/>
+	<combo_box label="Aucun" name="modifier_combo" width="62"/>
+	<combo_box label="Aucun" name="key_combo" width="62"/>
 	<text name="replace_text" tool_tip="Remplacez le ou les mots-clés par ces mots. Par exemple, si vous remplacez le mot-clé &quot; bonjour &quot; par &quot; salut &quot;, le chat &quot; Je voulais te dire bonjour &quot; devient &quot; Je voulais te dire salut &quot; et le geste correspondant s&apos;affiche.">
 		Remplacer :
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
index b96e15e4bbb21344b67f5c5282c54898a082d488..215df18bd61f87d9e703c13b08d782645fb5c12d 100644
--- a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
@@ -29,13 +29,13 @@
 	<text name="object_name_label">
 		Objet :
 	</text>
-	<text left_delta="70" name="object_name" width="105">
+	<text left_pad="26" name="object_name" width="105">
 		Consetetur Sadipscing
 	</text>
-	<text name="owner_name_label" width="66">
+	<text name="owner_name_label" width="100">
 		Propriétaire :
 	</text>
-	<text left_delta="70" name="owner_name" width="105">
+	<text left_delta="120" name="owner_name" width="105">
 		Hendrerit Vulputate Kamawashi Longname
 	</text>
 	<combo_box name="category_combo" tool_tip="Choisissez la catégorie qui décrit le mieux ce rapport">
diff --git a/indra/newview/skins/default/xui/fr/floater_sell_land.xml b/indra/newview/skins/default/xui/fr/floater_sell_land.xml
index e950a64c4c18839ce6966f2a029b741770dd49eb..d79726e8e2cd1eb6d6d9bbc1bcf317bd595c3982 100644
--- a/indra/newview/skins/default/xui/fr/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_sell_land.xml
@@ -5,13 +5,13 @@
 			<text name="info_parcel_label">
 				Parcelle :
 			</text>
-			<text name="info_parcel">
+			<text name="info_parcel" left="70">
 				NOM DE LA PARCELLE
 			</text>
 			<text name="info_size_label">
 				Taille :
 			</text>
-			<text name="info_size">
+			<text name="info_size" left="70">
 				[AREA] m²
 			</text>
 			<text bottom_delta="-60" name="info_action">
diff --git a/indra/newview/skins/default/xui/fr/floater_settings_debug.xml b/indra/newview/skins/default/xui/fr/floater_settings_debug.xml
index aae4729347af32fccfeea955d7fd314b465771fc..995837e9ee1873917dd30e1c8b62f2c8f6c2e263 100644
--- a/indra/newview/skins/default/xui/fr/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/fr/floater_settings_debug.xml
@@ -4,7 +4,7 @@
 		<combo_box.item label="VRAI" name="TRUE"/>
 		<combo_box.item label="FAUX" name="FALSE"/>
 	</combo_box>
-	<color_swatch label="Couleur" name="val_color_swatch"/>
+	<color_swatch label="Couleur" name="val_color_swatch" width="50"/>
 	<spinner label="x" name="val_spinner_1"/>
 	<spinner label="x" name="val_spinner_2"/>
 	<spinner label="x" name="val_spinner_3"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_snapshot.xml b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
index 486eafef0138ff602e38d999e861faae802e0ca3..74738b7e31961e2de7c44924be64783e6e716ed8 100644
--- a/indra/newview/skins/default/xui/fr/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
@@ -45,8 +45,8 @@
 		<combo_box.item label="JPEG" name="JPEG"/>
 		<combo_box.item label="BMP" name="BMP"/>
 	</combo_box>
-	<spinner label="Largeur" label_width="41" name="snapshot_width" width="101"/>
-	<spinner label="Hauteur" label_width="41" left="121" name="snapshot_height" width="101"/>
+	<spinner label="Largeur" label_width="44" name="snapshot_width" width="101"/>
+	<spinner label="Hauteur" label_width="46" left="121" name="snapshot_height" width="101"/>
 	<slider label="Qualité de l&apos;image" name="image_quality_slider"/>
 	<text name="layer_type_label">
 		Capturer :
diff --git a/indra/newview/skins/default/xui/fr/floater_telehub.xml b/indra/newview/skins/default/xui/fr/floater_telehub.xml
index a50cfc25c1d6e86f3b8164afe6777c19c7aa5da7..c529ca273673e656011d6d57136026f9defff1d7 100644
--- a/indra/newview/skins/default/xui/fr/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/fr/floater_telehub.xml
@@ -10,8 +10,7 @@
 		Pour supprimer, cliquez sur Déconnecter.
 	</text>
 	<text bottom_delta="-18" height="38" name="help_text_not_connected">
-		Sélectionner l&apos;objet et cliquez sur Connecter
-le téléhub.
+		Sélectionner l&apos;objet et cliquez sur Connecter le téléhub.
 	</text>
 	<button label="Connecter le téléhub" name="connect_btn" width="122"/>
 	<button label="Déconnecter" left="142" name="disconnect_btn" width="98"/>
@@ -20,7 +19,7 @@ le téléhub.
 	</text>
 	<button label="Ajouter point" name="add_spawn_point_btn"/>
 	<button label="Supprimer point" name="remove_spawn_point_btn"/>
-	<text name="spawn_point_help">
+	<text name="spawn_point_help" height="100">
 		Sélectionnez l&apos;objet et cliquez sur Ajouter pour indiquer la position.
 Vous pourrez ensuite déplacer ou supprimer l&apos;objet.
 Les positions sont relatives au centre du téléhub.
diff --git a/indra/newview/skins/default/xui/fr/floater_url_entry.xml b/indra/newview/skins/default/xui/fr/floater_url_entry.xml
index 6a90731691db203e2ec32c26cfe3b0015a0d5475..4b2be1456963bbdb2d5bbaf558d18fe61d0d3b1b 100644
--- a/indra/newview/skins/default/xui/fr/floater_url_entry.xml
+++ b/indra/newview/skins/default/xui/fr/floater_url_entry.xml
@@ -3,11 +3,11 @@
 	<text name="media_label">
 		URL du média :
 	</text>
-	<combo_box left="100" name="media_entry" width="360" />
-	<button label="OK" name="ok_btn" />
+	<combo_box name="media_entry"/>
+	<button label="OK" name="ok_btn" width="30" />
 	<button label="Annuler" name="cancel_btn" />
-	<button label="Effacer" name="clear_btn" />
-	<text name="loading_label">
+	<button label="Effacer" name="clear_btn" left_pad="94"/>
+	<text name="loading_label" left="120">
 		Chargement...
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_water.xml b/indra/newview/skins/default/xui/fr/floater_water.xml
index 287f51d9f7be10ca6cd2db07375d07ccc8d4be90..1a7401733075563ac76d2b302695868d2be510e4 100644
--- a/indra/newview/skins/default/xui/fr/floater_water.xml
+++ b/indra/newview/skins/default/xui/fr/floater_water.xml
@@ -3,7 +3,7 @@
 	<floater.string name="WLDefaultWaterNames">
 		Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez
 	</floater.string>
-	<text name="KeyFramePresetsText">
+	<text name="KeyFramePresetsText" width="120">
 		Préréglages eau :
 	</text>
 	<button label="Nouveau" label_selected="Nouveau" name="WaterNewPreset"/>
@@ -12,8 +12,7 @@
 	<tab_container name="Water Tabs">
 		<panel label="Paramètres" name="Settings">
 			<text name="BHText">
-				Couleur du brouillard
-dans l&apos;eau
+				Couleur du brouillard dans l&apos;eau
 			</text>
 			<color_swatch left="75" name="WaterFogColor" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
 			<text name="WaterFogDensText">
diff --git a/indra/newview/skins/default/xui/fr/floater_windlight_options.xml b/indra/newview/skins/default/xui/fr/floater_windlight_options.xml
index e28de71625a4adf3f1015d67d1faaccc4f0d90ac..d92fadd048afa36def233f472abbddcc6b484926 100644
--- a/indra/newview/skins/default/xui/fr/floater_windlight_options.xml
+++ b/indra/newview/skins/default/xui/fr/floater_windlight_options.xml
@@ -6,7 +6,7 @@
 	<button label="Nouveau" label_selected="Nouveau" name="WLNewPreset"/>
 	<button label="Enregistrer" label_selected="Enregistrer" left_delta="75" name="WLSavePreset" width="75"/>
 	<button label="Supprimer" label_selected="Supprimer" left_delta="80" name="WLDeletePreset"/>
-	<button label="Éditeur du cycle du jour" label_selected="Éditeur du cycle du jour" left_delta="95" name="WLDayCycleMenuButton" width="150"/>
+	<button label="Éditeur du cycle du jour" label_selected="Éditeur du cycle du jour" left_pad="20" left_delta="95" name="WLDayCycleMenuButton" width="150"/>
 	<tab_container name="WindLight Tabs" width="706">
 		<panel label="Atmosphère" name="Atmosphere">
 			<text name="BHText">
diff --git a/indra/newview/skins/default/xui/fr/inspect_remote_object.xml b/indra/newview/skins/default/xui/fr/inspect_remote_object.xml
index 6d8c44578ae03d4b0161eadeff5df017beade0a5..6d7cfadc048aa2cd3d015baca386147f00eac9a2 100644
--- a/indra/newview/skins/default/xui/fr/inspect_remote_object.xml
+++ b/indra/newview/skins/default/xui/fr/inspect_remote_object.xml
@@ -7,7 +7,7 @@
 	<text name="object_name">
 		Nom d&apos;objet de test vraiment très long
 	</text>
-	<text name="object_owner_label">
+	<text name="object_owner_label" width="70">
 		Propriétaire :
 	</text>
 	<text name="object_owner">
diff --git a/indra/newview/skins/default/xui/fr/panel_audio_device.xml b/indra/newview/skins/default/xui/fr/panel_audio_device.xml
index a9540d8346ebb42be5c661b90e3520846723f5ee..2caa013f541258bc5a63a3db6a76ddd58cb1d802 100644
--- a/indra/newview/skins/default/xui/fr/panel_audio_device.xml
+++ b/indra/newview/skins/default/xui/fr/panel_audio_device.xml
@@ -6,7 +6,7 @@
 	<text name="Input device (microphone):">
 		Périphérique d&apos;entrée (micro) :
 	</text>
-	<text name="Output device (speakers):">
+	<text name="Output device (speakers):" width="300">
 		Périphérique de sortie (haut-parleurs) :
 	</text>
 	<text name="Input level:">
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml b/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml
index 836dd990979c30f489fce9de215fffb7d3eb0c8b..3b81ef2a5f97445a9d69060cc91a00ad5a45e4e5 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml
@@ -5,6 +5,6 @@
 		<texture_picker label="Alpha haut" name="Upper Alpha" tool_tip="Cliquez pour sélectionner une image"/>
 		<texture_picker label="Alpha tête" name="Head Alpha" tool_tip="Cliquez pour sélectionner une image"/>
 		<texture_picker label="Alpha yeux" name="Eye Alpha" tool_tip="Cliquez pour sélectionner une image"/>
-		<texture_picker label="Alpha cheveux" name="Hair Alpha" tool_tip="Cliquez pour sélectionner une image"/>
+		<texture_picker label="Alpha cheveux" width="80" name="Hair Alpha" tool_tip="Cliquez pour sélectionner une image"/>
 	</panel>
 </panel>
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 e37e0b2481b76c7aa5fcd2a5ed484530459ba11d..73e136ade68082fad30a73f5a10f6f2fb3fde92b 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" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Couleur/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 759db657a6a89e4f7bd9c91778015e5b3ca06f2d..cee44eb79501914e59308ddbf10011855b1dae72 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" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Couleur/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 5328e885d3c02ded5e1530c241d8f75bda189b40..71d82c817f8e65c7ba3b1800a92adfeabec631f7 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" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Couleur/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_profile.xml b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
index 4a42858861e8657342a882d7c3b2c00ba889ecdd..24cf7844b5131c465cae8ae8b84f908c03d61438 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml
@@ -53,7 +53,7 @@
 		</panel>
 	</scroll_container>
 	<panel name="profile_me_buttons_panel">
-		<button label="Enregistrer les changements" name="save_btn"/>
+		<button label="Enregistrer les changements" width="166" name="save_btn"/>
 		<button label="Annuler" name="cancel_btn"/>
 	</panel>
 </panel>
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 0fe7d5bbb04e6bef41025a5f2a50303d9507e0f4..cf28cd8c1e4b44a8a95dc548dac01166cad28988 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" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Couleur/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 588a2ca7b24fbcb8c852aa593ab02b475db5210e..a8e0910a15928a6ee7d4c717de371e9907be9d7b 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" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Couleur/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_skin.xml b/indra/newview/skins/default/xui/fr/panel_edit_skin.xml
index 649b91d66de5edb37650c48ee1a2ec48472f189d..dac005f6b625b31aef7d95e1d2ffa4e0eea912d8 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_skin.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_skin_panel">
 	<panel name="avatar_skin_color_panel">
-		<texture_picker label="Tatouage tête" name="Head Tattoos" tool_tip="Cliquez pour sélectionner une image"/>
-		<texture_picker label="Tatouage haut" name="Upper Tattoos" tool_tip="Cliquez pour sélectionner une image"/>
+		<texture_picker label="Tatouage tête" name="Head Tattoos" width="76" tool_tip="Cliquez pour sélectionner une image"/>
+		<texture_picker label="Tatouage haut" name="Upper Tattoos" width="80" tool_tip="Cliquez pour sélectionner une image"/>
 		<texture_picker label="Tatouage bas" name="Lower Tattoos" tool_tip="Cliquez pour sélectionner une image"/>
 	</panel>
 	<accordion name="wearable_accordion">
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 9d0f13c4e8e633e56837173081fcee928fedd171..e9784b9510d1fe808ad1cc5177ae5da515271f0f 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" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Couleur/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 8b062e014521277b0554010f4d06d2cb65bebae0..6fc6a3dc778861ed3b8c55419ade88ee024dd167 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" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Couleur/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_tattoo.xml b/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml
index 1faee191e0fb3bb54ef884aed6b0713d03f2d4d3..7ab2aa6bc949310ce442a57326ff50439a33925c 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/fr/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="Tatouage tête" name="Head Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
-		<texture_picker label="Tatouage haut" name="Upper Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
-		<texture_picker label="Tatouage bas" name="Lower Tattoo" tool_tip="Cliquez pour sélectionner une image"/>
+		<texture_picker label="Tatouage tête" name="Head Tattoo" width="76" tool_tip="Cliquez pour sélectionner une image"/>
+		<texture_picker label="Tatouage haut" name="Upper Tattoo" width="80" tool_tip="Cliquez pour sélectionner une image"/>
+		<texture_picker label="Tatouage bas" name="Lower Tattoo" width="76" tool_tip="Cliquez pour sélectionner une image"/>
 	</panel>
 </panel>
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 b9164ad862e5d39053ad4a4571755048e6d3b2c6..63234628778cc41681bf8bf045346db4b766777e 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" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Couleur/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="Sous-vêtements (femme)"/>
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 462eff945183e5f1e24a6f51ffc4e431d07f2a9c..5af733d8a245b1e921858a69b327f27276b20f56 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" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
+		<color_swatch label="Couleur/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="Sous-vêtements (homme)"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml b/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml
index 24ea030b33b0ca193ce2b38ae9594de080805f1b..c6ab686b0e08c2473bfc993411d9f70ce6bf75a2 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml
@@ -96,6 +96,6 @@
 	</panel>
 	<panel name="button_panel">
 		<button label="Enregistrer sous" name="save_as_button"/>
-		<button label="Annuler modification" name="revert_button"/>
+		<button label="Annuler modification" width="130" name="revert_button"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml
index b2f61fde71d8a1c9cea42ccd8dda8461d185be96..8207fd7735c86a99ea4e8c7fd01629df5294b6c1 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml
@@ -32,7 +32,7 @@
 	<panel name="button_row">
 		<button label="Créer" label_selected="Nouveau groupe" name="btn_create"/>
 		<button label="Chat de groupe" name="btn_chat"/>
-		<button label="Appel de groupe" name="btn_call"/>
+		<button label="Appel de groupe" width="100" name="btn_call"/>
 		<button label="Enregistrer" label_selected="Enregistrer" name="btn_apply"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml
index 3ca22b6e2183db1981a5ce2b52df91cd179a5b8c..02b14cb859dfa144f38ae17c95950ecc50cd7862 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml
@@ -16,13 +16,13 @@
 	<text name="group_land_heading">
 		Terrain du groupe
 	</text>
-	<scroll_list name="group_parcel_list">
-		<column label="Parcelle" name="name"/>
-		<column label="Région" name="location"/>
-		<column label="Type" name="type"/>
-		<column label="Surface" name="area"/>
-		<column label="" name="hidden"/>
-	</scroll_list>
+	<scroll_list name="group_parcel_list" width="310">
+        <column	label="Parcelle" name="name" width="76" />
+        <column         label="Région"         name="location"         width="78" />
+        <column         label="Type"         name="type"         width="70" />
+        <column         label="Surface"         name="area"         width="50" />
+        <column         label=""         name="hidden"         width="-1" />
+    </scroll_list>
 	<button label="Carte" label_selected="Carte" name="map_button"/>
 	<text name="total_contributed_land_label">
 		Total des contributions :
diff --git a/indra/newview/skins/default/xui/fr/panel_group_notices.xml b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
index 1ec63cf027dc76b48b165edc68ee46b00abe9242..68c74f93221743ffa98cd78568b1c8ea3764ff12 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
@@ -27,23 +27,23 @@ Vous pouvez désactiver la réception des notices dans l&apos;onglet Général.
 		<text name="lbl">
 			Créer une notice
 		</text>
-		<text bottom_delta="-79" left="20" name="lbl3">
+		<text name="lbl3">
 			Sujet :
 		</text>
-		<line_editor left_delta="61" name="create_subject" width="331"/>
-		<text left="20" name="lbl4">
+		<line_editor name="create_subject" />
+		<text  name="lbl4">
 			Message :
 		</text>
-		<text_editor bottom_delta="-90" height="104" left_delta="61" name="create_message" width="330"/>
-		<text name="lbl5" width="68">
+		<text_editor name="create_message"/>
+		<text name="lbl5" >
 			Pièce-jointe :
 		</text>
-		<line_editor left_delta="74" name="create_inventory_name" width="190"/>
+		<line_editor name="create_inventory_name"/>
 		<text name="string">
 			Faire glisser l&apos;objet et le déposer ici pour le joindre :
 		</text>
-		<button label="Supprimer" label_selected="Supprimer pièce-jointe" left="274" name="remove_attachment" width="140"/>
-		<button label="Envoyer" label_selected="Envoyer" left="274" name="send_notice" width="140"/>
+		<button label="Supprimer" label_selected="Supprimer pièce-jointe" name="remove_attachment"/>
+		<button label="Envoyer" label_selected="Envoyer" left="200" name="send_notice" width="100"/>
 		<group_drop_target name="drop_target" tool_tip="Faites glisser un objet de l&apos;inventaire jusqu&apos;à cette case pour l&apos;envoyer avec la notice. Vous devez avoir l&apos;autorisation de copier et transférer l&apos;objet pour pouvoir le joindre."/>
 	</panel>
 	<panel label="Voir ancienne notice" name="panel_view_past_notice">
diff --git a/indra/newview/skins/default/xui/fr/panel_group_roles.xml b/indra/newview/skins/default/xui/fr/panel_group_roles.xml
index d0c9f2f302c5c84bc331c09ab6e7c25a50214d60..400d4d6aeebe85f034886008efd8d866fa5082fc 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_roles.xml
@@ -6,14 +6,14 @@
 	<panel.string name="want_apply_text">
 		Voulez-vous enregistrer vos modifications ?
 	</panel.string>
-	<tab_container height="164" name="roles_tab_container">
-		<panel height="148" label="MEMBRES" name="members_sub_tab" tool_tip="Membres">
+	<tab_container name="roles_tab_container">
+		<panel label="MEMBRES" name="members_sub_tab" tool_tip="Membres">
 			<panel.string name="help_text">
 				Vous pouvez ajouter ou supprimer les rôles assignés aux membres.
 Pour sélectionner plusieurs membres, cliquez sur leurs noms en maintenant la touche Ctrl enfoncée.
 			</panel.string>
 			<filter_editor label="Filtrer les membres" name="filter_input"/>
-			<name_list bottom_delta="-105" height="104" name="member_list">
+			<name_list name="member_list">
 				<name_list.columns label="Membre" name="name"/>
 				<name_list.columns label="Donation" name="donated" width="116"/>
 				<name_list.columns label="Statut" name="online" width="136"/>
@@ -21,7 +21,7 @@ Pour sélectionner plusieurs membres, cliquez sur leurs noms en maintenant la to
 			<button label="Inviter" name="member_invite" width="165"/>
 			<button label="Expulser" name="member_eject"/>
 		</panel>
-		<panel height="148" label="RÔLES" name="roles_sub_tab">
+		<panel label="RÔLES" name="roles_sub_tab">
 			<panel.string name="help_text">
 				Chaque rôle possède un titre et des
 pouvoirs. Les membres peuvent avoir
@@ -41,13 +41,13 @@ notamment les rôles Tous et Propriétaire.
 				Checkbox_Off
 			</panel.string>
 			<filter_editor label="Filtrer les rôles" name="filter_input"/>
-			<scroll_list bottom_delta="-104" height="104" name="role_list">
+			<scroll_list name="role_list">
 				<scroll_list.columns label="Rôle" name="name"/>
 				<scroll_list.columns label="Titre" name="title"/>
 				<scroll_list.columns label="#" name="members"/>
 			</scroll_list>
 			<button label="Nouveau rôle" name="role_create"/>
-			<button label="Supprimer le rôle" name="role_delete"/>
+			<button label="Supprimer le rôle" width="120" name="role_delete"/>
 		</panel>
 		<panel height="148" label="POUVOIRS" name="actions_sub_tab" tool_tip="Vous pouvez afficher une description du pouvoir et voir quels membres et rôles peuvent s&apos;en servir.">
 			<panel.string name="help_text">
diff --git a/indra/newview/skins/default/xui/fr/panel_groups.xml b/indra/newview/skins/default/xui/fr/panel_groups.xml
index 98320656fbfd969f509fdc5887f066c1b06f9009..4cda98b9f7063d1fb245e90f0f2917ae617d4a95 100644
--- a/indra/newview/skins/default/xui/fr/panel_groups.xml
+++ b/indra/newview/skins/default/xui/fr/panel_groups.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="groups">
 	<scroll_list bottom="50" name="group list"/>
-	<text bottom="16" height="32" name="groupdesc" width="268">
+	<text name="groupdesc">
 		Le groupe actif est en gras.
 	</text>
-	<text bottom="3" name="groupcount">
+	<text name="groupcount" width="280">
 		Vous appartenez à [COUNT] groupes ([MAX] max).
 	</text>
 	<button label="IM/Appel" name="IM" tool_tip="Ouvrir une session de messagerie instantanée"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_login.xml b/indra/newview/skins/default/xui/fr/panel_login.xml
index 8f0561d243a2fbc6c18a8834e2a0a05bd199803e..75648d3541bf1702a3a51daa75ac723781a85392 100644
--- a/indra/newview/skins/default/xui/fr/panel_login.xml
+++ b/indra/newview/skins/default/xui/fr/panel_login.xml
@@ -23,7 +23,7 @@
 			<text name="start_location_text">
 				Commencer à :
 			</text>
-			<combo_box name="start_location_combo">
+			<combo_box name="start_location_combo" width="152">
 				<combo_box.item label="Dernier emplacement" name="MyLastLocation"/>
 				<combo_box.item label="Domicile" name="MyHome"/>
 				<combo_box.item label="&lt;Saisissez le nom de la région&gt;" name="Typeregionname"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml b/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml
index 36d5f4e860ec647a51d1a3ea349ca7a66bf83354..9d070b7affa50b3484a95d48e30a8af1b548fcbf 100644
--- a/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml
@@ -2,7 +2,8 @@
 <panel label="Sécurité" name="Media Settings Security">
 	<check_box initial_value="false" label="Autoriser l&apos;accès aux styles d&apos;URL spécifiés uniquement" name="whitelist_enable"/>
 	<text name="home_url_fails_some_items_in_whitelist">
-		Les entrées par lesquelles la page d&apos;accueil est rejetée sont indiquées :
+		Les entrées par lesquelles la page 
+d&apos;accueil est rejetée sont indiquées :
 	</text>
 	<button label="Ajouter" name="whitelist_add"/>
 	<button label="Supprimer" name="whitelist_del"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml
index fa1ddd2430885d2a32627ae8c2f07d300eb19367..f1a7ebb35c8fc6a1912660298e07fdea6de31f23 100644
--- a/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml
@@ -2,8 +2,8 @@
 <!-- All our XML is utf-8 encoded. -->
 <panel name="nearby_chat">
 	<panel name="chat_caption">
-		<text name="sender_name">
-			CHAT PRÈS DE VOUS
-		</text>
+    	<text 
+	name="sender_name" 
+width="170">CHAT PRÈS DE VOUS</text>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_notes.xml b/indra/newview/skins/default/xui/fr/panel_notes.xml
index b1be2746165a9efc317305ec3c7c1458faa88270..ba052a0e07b7ce3b42b784e04e0d6288564cb274 100644
--- a/indra/newview/skins/default/xui/fr/panel_notes.xml
+++ b/indra/newview/skins/default/xui/fr/panel_notes.xml
@@ -14,8 +14,8 @@
 		</layout_panel>
 		<layout_panel name="notes_buttons_panel">
 			<button label="Devenir amis" name="add_friend" tool_tip="Proposer à ce résident de devenir votre ami"/>
-			<button label="IM" name="im" tool_tip="Ouvrir une session IM"/>
-			<button label="Appeler" name="call" tool_tip="Appeler ce résident"/>
+			<button label="IM" name="im" width="30" tool_tip="Ouvrir une session IM"/>
+			<button label="Appeler" name="call" width="60" tool_tip="Appeler ce résident"/>
 			<button label="Carte" name="show_on_map_btn" tool_tip="Afficher le résident sur la carte"/>
 			<button label="Téléporter" name="teleport" tool_tip="Proposez une téléportation"/>
 		</layout_panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml
index 04abcc8aadd1879467e088fc6b25adaf85ab279c..0c0cc29e7a4eaeda0806c729e897da30b7dd6100 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml
@@ -9,7 +9,7 @@
 	<check_box label="Bulles de chat" name="bubble_text_chat"/>
 	<color_swatch name="background" tool_tip="Choisir la couleur des bulles de chat"/>
 	<slider label="Opacité" name="bubble_chat_opacity"/>
-	<text name="AspectRatioLabel1" tool_tip="largeur/hauteur">
+	<text width="140" name="AspectRatioLabel1" tool_tip="largeur/hauteur">
 		Rapport hauteur/largeur
 	</text>
 	<combo_box name="aspect_ratio" tool_tip="largeur/hauteur">
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
index 445924439557ee4d455c4125733106ff3076a9f1..9576119eb552cd8176acf8e12f9c98674d4e4810 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
@@ -17,7 +17,7 @@
 	<text name="QualitySpeed">
 		Qualité et vitesse :
 	</text>
-	<text left="105" name="FasterText">
+	<text left="35" name="FasterText">
 		Plus rapide
 	</text>
 	<text name="BetterText">
@@ -62,7 +62,7 @@
 		<text name="DrawDistanceMeterText2">
 			m
 		</text>
-		<slider label="Nombre de particules max. :" label_width="143" name="MaxParticleCount"/>
+		<slider label="Nombre de particules max. :" label_width="147" name="MaxParticleCount"/>
 		<slider label="Qualité post-traitement :" name="RenderPostProcess"/>
 		<text name="MeshDetailText">
 			Détails des rendus :
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
index 68a735df90ac68620006d11c7e271cdde090e37f..d477a9532d18a907ca960e0e3d8ce597958b958e 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
@@ -18,7 +18,7 @@
 		kbps
 	</text>
 	<check_box label="Port de connexion personnalisé" name="connection_port_enabled"/>
-	<spinner label="Numéro de port :" name="web_proxy_port"/>
+	<spinner label="Numéro de port :" label_width="95" name="web_proxy_port" width="170"/>
 	<text name="cache_size_label_l">
 		Taille de la mémoire
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_profile.xml b/indra/newview/skins/default/xui/fr/panel_profile.xml
index 0c33a0f1e03940d293360d0bdeb49f38e75d7984..19c6a3b090afe02e9ee6e152f140f4c65e3d3183 100644
--- a/indra/newview/skins/default/xui/fr/panel_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_profile.xml
@@ -39,8 +39,8 @@
 		</layout_panel>
 		<layout_panel name="profile_buttons_panel">
 			<button label="Devenir amis" name="add_friend" tool_tip="Proposer à ce résident de devenir votre ami"/>
-			<button label="IM" name="im" tool_tip="Ouvrir une session IM"/>
-			<button label="Appeler" name="call" tool_tip="Appeler ce résident"/>
+			<button label="IM" name="im" width="30" tool_tip="Ouvrir une session IM"/>
+			<button label="Appeler" name="call" width="60" tool_tip="Appeler ce résident"/>
 			<button label="Carte" name="show_on_map_btn" tool_tip="Afficher le résident sur la carte"/>
 			<button label="Téléporter" name="teleport" tool_tip="Proposez une téléportation"/>
 		</layout_panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_covenant.xml b/indra/newview/skins/default/xui/fr/panel_region_covenant.xml
index cf9f4e0fd093a28943e94f37e0ffd0c022b9a0a5..cd1d0c48868cdee1e2ad5f0f7da286bdd4b1996e 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_covenant.xml
@@ -18,7 +18,7 @@
 	<text name="estate_cov_lbl">
 		Règlement :
 	</text>
-	<text name="covenant_timestamp_text">
+	<text name="covenant_timestamp_text" width="350">
 		Dernière modification le mercredi 31 décembre 1969 16:00:00
 	</text>
 	<button label="?" name="covenant_help"/>
@@ -27,8 +27,8 @@
 	</text_editor>
 	<button label="Réinitialiser" name="reset_covenant"/>
 	<text name="covenant_help_text">
-		Les changements apportés au règlement apparaîtront sur toutes
-      les parcelles du domaine.
+		Les changements apportés au règlement apparaîtront sur
+toutes les parcelles du domaine.
 	</text>
 	<text bottom_delta="-31" name="covenant_instructions">
 		Faire glisser une note pour changer le règlement de ce domaine.
diff --git a/indra/newview/skins/default/xui/fr/panel_region_debug.xml b/indra/newview/skins/default/xui/fr/panel_region_debug.xml
index 0fabf92889cdcb0877584b0876889cbe1b51326d..cb4a74e1424321c22341be752ea1cdb31817a9ff 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_debug.xml
@@ -13,7 +13,7 @@
 	<check_box label="Désactiver la physique" name="disable_physics_check" tool_tip="Désactiver tous les effets liés à la physique dans cette région"/>
 	<button label="?" name="disable_physics_help"/>
 	<button bottom_delta="-38" label="Appliquer" name="apply_btn"/>
-	<text bottom_delta="-42" name="objret_text_lbl">
+	<text bottom_delta="-42" name="objret_text_lbl" width="260">
 		Renvoi de l&apos;objet
 	</text>
 	<text name="resident_text_lbl">
diff --git a/indra/newview/skins/default/xui/fr/panel_region_estate.xml b/indra/newview/skins/default/xui/fr/panel_region_estate.xml
index a0282dd940da47749dd09ffa48a28f673808b73d..f9262ea478a8fc1301b7cf4a3fc979873b8ed6b7 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_estate.xml
@@ -1,9 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Domaine" name="Estate">
 	<text bottom="-34" name="estate_help_text">
-		Les modifications des paramètres de cet onglet affecteront toutes les régions du domaine.
+		Les modifications des paramètres de cet 
+onglet affecteront toutes les régions du 
+domaine.
 	</text>
-	<text bottom_delta="-34" name="estate_text">
+	<text top_pad="8" bottom_delta="-34" name="estate_text">
 		Domaine :
 	</text>
 	<text name="estate_name">
diff --git a/indra/newview/skins/default/xui/fr/panel_region_general.xml b/indra/newview/skins/default/xui/fr/panel_region_general.xml
index 8a59adbd93483f08f3aefc51c8670badd7c1c848..711278d6143c86b22955c90836323816a62c2e75 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_general.xml
@@ -32,9 +32,9 @@
 	<button label="?" name="parcel_changes_help"/>
 	<check_box label="Ne pas afficher dans la recherche" name="block_parcel_search_check" tool_tip="Afficher cette région et ses parcelles dans les résultats de recherche"/>
 	<button label="?" name="parcel_search_help"/>
-	<spinner label="Nombre maximum d&apos;avatars" label_width="127" name="agent_limit_spin" width="190"/>
+	<spinner label="Nombre maximum d&apos;avatars" name="agent_limit_spin" label_width="160" width="240"/>
 	<button label="?" name="agent_limit_help"/>
-	<spinner label="Bonus objet" label_width="127" name="object_bonus_spin" width="190"/>
+	<spinner label="Bonus objet" name="object_bonus_spin" label_width="160" width="240"/>
 	<button label="?" name="object_bonus_help"/>
 	<text label="Maturité" name="access_text">
 		Catégorie :
diff --git a/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml b/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml
index 0e72bbc9f583b758bb17f997476477cc6e138570..e709100fa22b4afde6f72a625d325c6501caf859 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml
@@ -3,19 +3,19 @@
 	<text name="region_text_lbl">
 		Région :
 	</text>
-	<text name="region_text">
+	<text name="region_text" left_delta="56">
 		inconnu
 	</text>
 	<text name="version_channel_text_lbl">
 		Version :
 	</text>
-	<text name="version_channel_text">
+	<text name="version_channel_text" left_delta="56">
 		inconnu
 	</text>
 	<text name="region_type_lbl">
 		Type :
 	</text>
-	<text name="region_type">
+	<text name="region_type" left_delta="56">
 		inconnu
 	</text>
 	<check_box label="Interdire le terraformage" name="block_terraform_check"/>
@@ -25,8 +25,8 @@
 	<check_box label="Autoriser la revente de terrains" name="allow_land_resell_check"/>
 	<check_box label="Autoriser la fusion/division de terrains" name="allow_parcel_changes_check"/>
 	<check_box label="Interdire l&apos;affichage du terrain dans les recherches" name="block_parcel_search_check" tool_tip="Permettre aux autres résidents de voir cette région et ses parcelles dans les résultats de recherche"/>
-	<spinner label="Nombre maximum d&apos;avatars" name="agent_limit_spin"/>
-	<spinner label="Bonus objet" name="object_bonus_spin"/>
+	<spinner label="Nombre maximum d&apos;avatars" name="agent_limit_spin" label_width="160" width="240"/>
+	<spinner label="Bonus objet" name="object_bonus_spin" label_width="160" width="240"/>
 	<text label="Accès" name="access_text">
 		Catégorie :
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_texture.xml b/indra/newview/skins/default/xui/fr/panel_region_texture.xml
index a7abb49b1a15eca4506234f1486ae08f3803c0a2..e95d911c011cfc4287b8e6b2354be0e3ba27610d 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_texture.xml
@@ -39,7 +39,7 @@
 	<text name="height_text_lbl9">
 		Nord-est
 	</text>
-	<text name="height_text_lbl10">
+	<text name="height_text_lbl10" width="460">
 		Ces valeurs représentent les limites de mélange pour les textures ci-dessus.
 	</text>
 	<text name="height_text_lbl11">
diff --git a/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml
index 24656bf379a8080cea60b4e37c9529ef7ed5794f..47d8382e575c547cb280ff18ae65231152e029e3 100644
--- a/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml
@@ -4,7 +4,7 @@
 		Chargement...
 	</text>
 	<scroll_list name="scripts_list">
-		<scroll_list.columns label="Taille (Ko)" name="size"/>
+		<scroll_list.columns label="Taille (Ko)" width="80" name="size"/>
 		<scroll_list.columns label="URL" name="urls"/>
 		<scroll_list.columns label="Nom de l&apos;objet" name="name"/>
 		<scroll_list.columns label="Endroit" name="location"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml
index 1e5e680c0976bf465e107b8f044dd7eb648b688f..9426047ee13f097a289a2486588269c4bf9c9d4f 100644
--- a/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml
+++ b/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml
@@ -13,9 +13,9 @@
 		Chargement...
 	</text>
 	<scroll_list name="scripts_list">
-		<scroll_list.columns label="Taille (Ko)" name="size"/>
+		<scroll_list.columns label="Taille (Ko)" width="80" name="size"/>
 		<scroll_list.columns label="Nom de l&apos;objet" name="name"/>
-		<scroll_list.columns label="Propriétaire d&apos;objet" name="owner"/>
+		<scroll_list.columns label="Propriétaire d&apos;objet" width="140" name="owner"/>
 		<scroll_list.columns label="Parcelle/emplacement" name="location"/>
 	</scroll_list>
 	<button label="Rafraîchir la liste" name="refresh_list_btn"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_side_tray.xml b/indra/newview/skins/default/xui/fr/panel_side_tray.xml
index 3ad167192189c339222e2a2068e3d81de695e386..6329324a23115136e752b137d32370830c9184d9 100644
--- a/indra/newview/skins/default/xui/fr/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/fr/panel_side_tray.xml
@@ -2,26 +2,26 @@
 <!-- Side tray cannot show background because it is always
 	partially on screen to hold tab buttons. -->
 <side_tray name="sidebar">
-	<sidetray_tab description="Activer/désactiver le panneau latéral." name="sidebar_openclose"/>
-	<sidetray_tab description="Domicile." name="sidebar_home">
+	<sidetray_tab description="Activer/désactiver le panneau latéral." name="sidebar_openclose" tab_title="Activer/désactiver le panneau latéral"/>
+	<sidetray_tab description="Domicile." name="sidebar_home" tab_title="Accueil">
 		<panel label="domicile" name="panel_home"/>
 	</sidetray_tab>
-	<sidetray_tab description="Modifiez votre profil public et vos Favoris." name="sidebar_me">
+	<sidetray_tab description="Modifiez votre profil public et vos Favoris." name="sidebar_me" tab_title="Mon profil">
 		<panel label="Moi" name="panel_me"/>
 	</sidetray_tab>
-	<sidetray_tab description="Trouvez vos amis, vos contacts et les personnes se trouvant près de vous." name="sidebar_people">
+	<sidetray_tab description="Trouvez vos amis, vos contacts et les personnes se trouvant près de vous." name="sidebar_people" tab_title="Personnes">
 		<panel_container name="panel_container">
 			<panel label="Profil du groupe" name="panel_group_info_sidetray"/>
 			<panel label="Résidents et objets ignorés" name="panel_block_list_sidetray"/>
 		</panel_container>
 	</sidetray_tab>
-	<sidetray_tab description="Trouvez de nouveaux lieux à découvrir et les lieux que vous connaissez déjà." label="Lieux" name="sidebar_places">
+	<sidetray_tab description="Trouvez de nouveaux lieux à découvrir et les lieux que vous connaissez déjà." label="Lieux" name="sidebar_places" tab_title="Endroits">
 		<panel label="Lieux" name="panel_places"/>
 	</sidetray_tab>
-	<sidetray_tab description="Parcourez votre inventaire." name="sidebar_inventory">
+	<sidetray_tab description="Parcourez votre inventaire." name="sidebar_inventory" tab_title="Mon inventaire">
 		<panel label="Modifier l&apos;inventaire" name="sidepanel_inventory"/>
 	</sidetray_tab>
-	<sidetray_tab description="Modifiez votre apparence actuelle." name="sidebar_appearance">
+	<sidetray_tab description="Modifiez votre apparence actuelle." name="sidebar_appearance" tab_title="Mon apparence">
 		<panel label="Changer d&apos;apparence" name="sidepanel_appearance"/>
 	</sidetray_tab>
 </side_tray>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 1888dc1827b7a29ead06f52300de1b3634925ba5..c6f73dde2122a8b320c5e41da53fcbab918ae7cc 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -1486,8 +1486,8 @@
 	<string name="covenant_last_modified">
 		Dernière modification :
 	</string>
-	<string name="none_text" value=" (aucun) "/>
-	<string name="never_text" value=" (jamais) "/>
+	<string name="none_text" value=" (aucun)"/>
+	<string name="never_text" value=" (jamais)"/>
 	<string name="GroupOwned">
 		Propriété du groupe
 	</string>
diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml
index 0fa20ab1acc4905d964e9748bfa2f56c09b6c4e4..78bc355f4b806aab54f794b1047ef35d17070a4a 100644
--- a/indra/newview/skins/default/xui/ja/floater_about.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about.xml
@@ -61,7 +61,8 @@ Vivox バージョン: [VIVOX_VERSION]
   FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org).
   GL Copyright (C) 1999-2004 Brian Paul.
   Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
-  jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
+  jpeg2000 Copyright (C) 2001, David Taubman, The University of New South 
+  Wales (UNSW)
   jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
   ogg/vorbis Copyright (C) 2001, Xiphophorus
   OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml
index 71a38391cd4f27b860e5ab3bd355ee080835bb50..b3278a8f9e0a981adf32b58b258ef416debaac89 100644
--- a/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -97,7 +97,7 @@
 			<text name="For Sale: Price L$[PRICE].">
 				価格: L$[PRICE] (L$[PRICE_PER_SQM]/平方メートル)
 			</text>
-			<button label="土地を売る" label_selected="土地を販売..." name="Sell Land..."/>
+			<button label="土地を売る" label_selected="土地を販売..." name="Sell Land..." width="100"/>
 			<text name="For sale to">
 				販売先:[BUYER]
 			</text>
@@ -107,7 +107,7 @@
 			<text name="Selling with no objects in parcel.">
 				オブジェクトは販売しない
 			</text>
-			<button label="土地販売の取り消し" label_selected="土地販売の取り消し" name="Cancel Land Sale"/>
+			<button label="土地販売の取り消し" label_selected="土地販売の取り消し" name="Cancel Land Sale"  width="100"/>
 			<text name="Claimed:">
 				取得日時:
 			</text>
@@ -126,10 +126,10 @@
 			<text name="DwellText">
 				誤
 			</text>
-			<button label="土地の購入" label_selected="土地を購入..." left="130" name="Buy Land..." width="125"/>
-			<button label="スクリプト情報" name="Scripts..."/>
+			<button label="土地の購入" label_selected="土地を購入..." left="130" name="Buy Land..." width="100"/>
+			<button label="スクリプト情報" name="Scripts..." width="100"/>
 			<button label="グループに購入" label_selected="グループ用に購入..." name="Buy For Group..."/>
-			<button label="入場許可を購入" label_selected="入場許可を購入..." left="130" name="Buy Pass..." tool_tip="この土地への一時的なアクセスを許可します。" width="125"/>
+			<button label="入場許可を購入" label_selected="入場許可を購入..." left="130" name="Buy Pass..." tool_tip="この土地への一時的なアクセスを許可します。" width="100"/>
 			<button label="土地の放棄" label_selected="土地を放棄..." name="Abandon Land..."/>
 			<button label="土地を取り戻す" label_selected="土地の返還を要求..." name="Reclaim Land..."/>
 			<button label="リンデンセール" label_selected="Lindenセール..." name="Linden Sale..." tool_tip="土地が所有されており、コンテンツが設定されている必要があります。オークションの対象になっていないことも必要条件です。"/>
@@ -206,7 +206,7 @@
 				[MAX]の内[COUNT]([DELETED]を削除)
 			</panel.string>
 			<text name="parcel_object_bonus">
-				地域オブジェクトボーナス要因: [BONUS]
+				オブジェクトボーナス: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:" width="500">
 				プリム使用状況:
@@ -263,7 +263,7 @@
 			<text name="Object Owners:" width="150">
 				オブジェクトのオーナー:
 			</text>
-			<button label="リスト更新" label_selected="リスト更新" left="146" name="Refresh List" tool_tip="オブジェクトのリストを更新"/>
+			<button label="リスト更新" label_selected="リスト更新" left="146" name="Refresh List" tool_tip="オブジェクトのリストを更新します"/>
 			<button label="オブジェクトを返却する" label_selected="オブジェクトの返却..." left="256" name="Return objects..."/>
 			<name_list label="カウント" name="owner list">
 				<name_list.columns label="タイプ" name="type"/>
@@ -329,8 +329,8 @@
 				土地オプション:
 			</text>
 			<check_box label="安全(ダメージなし)" name="check safe" tool_tip="チェックを入れるとこの土地でのダメージコンバットが無効になり、「安全」に設定されます。 チェックを外すとダメージコンバットが有効になります。"/>
-			<check_box label="プッシングを制限" name="PushRestrictCheck" tool_tip="スクリプトによるプッシングを制限します。 このオプションを選択することにより、あなたの土地での破壊的行動を妨げることができます。"/>
-			<check_box label="検索に区画を表示(週 L$30)" name="ShowDirectoryCheck" tool_tip="検索結果でこの区画を表示させる"/>
+			<check_box label="プッシングを制限" name="PushRestrictCheck" tool_tip="スクリプトによるプッシングを制限します。 このオプションを選択することにより、あなたの土地での破壊的行動を防ぐことができます。"/>
+			<check_box label="検索に区画を表示(週 L$30)" name="ShowDirectoryCheck" tool_tip="この区画を検索結果に表示します"/>
 			<combo_box name="land category with adult">
 				<combo_box.item label="全カテゴリ" name="item0"/>
 				<combo_box.item label="Linden所在地" name="item1"/>
@@ -364,7 +364,7 @@
 			<text name="Snapshot:">
 				スナップショット:
 			</text>
-			<texture_picker label="" left="116" name="snapshot_ctrl" tool_tip="写真をクリックして選択"/>
+			<texture_picker label="" name="snapshot_ctrl" tool_tip="写真をクリックして選択"/>
 			<text name="landing_point">
 				着地点: [LANDING]
 			</text>
@@ -383,7 +383,7 @@
 			<text name="with media:">
 				種類:
 			</text>
-			<combo_box name="media type" tool_tip="URL が動画、ウェブ・ページ、その他のメディアの場合に指定します"/>
+			<combo_box name="media type" tool_tip="URL が動画、Webページ、その他のメディアの場合に指定します"/>
 			<text name="at URL:">
 				ホームページ:
 			</text>
@@ -396,20 +396,20 @@
 			<text name="Description:">
 				説明:
 			</text>
-			<line_editor name="url_description" tool_tip="[再生]/[ロード]ボタンの隣に表示されるテキスト"/>
+			<line_editor name="url_description" tool_tip="「再生」「ロード」ボタンの隣に表示されるテキストです"/>
 			<text name="Media texture:">
-				テクスチャの置き換え:
+				テクスチャ置き換え:
 			</text>
-			<texture_picker label="" name="media texture" tool_tip="写真をクリックして選択"/>
+			<texture_picker label="" name="media texture" tool_tip="写真をクリックして選択" left="120"/>
 			<text name="replace_texture_help" width="290">
 				このテクスチャを使用するオブジェクトのプレイをクリックすると、ムービーや Web ページを表示します。  テクスチャを変更するにはサムネイルを選択してください。
 			</text>
 			<check_box label="スケールを自動設定" name="media_auto_scale" tool_tip="このオプションをチェックすると、この区画のコンテンツのスケールが自動的に設定されます。 動作速度と画質が少し低下することがありますが、他のテクスチャーのスケーリングや整列が必要になることはありません。"/>
-			<text name="media_size" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。">
+			<text name="media_size" tool_tip="レンダリングするWebメディアのサイズです。デフォルトの 0 のままにします。">
 				サイズ:
 			</text>
-			<spinner name="media_size_width" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。"/>
-			<spinner name="media_size_height" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。"/>
+			<spinner name="media_size_width" tool_tip="レンダリングするWebメディアのサイズです。デフォルトの 0 のままにします。"/>
+			<spinner name="media_size_height" tool_tip="レンダリングするWebメディアのサイズです。デフォルトの 0 のままにします。"/>
 			<text name="pixels">
 				ピクセル
 			</text>
@@ -425,13 +425,13 @@
 			<text name="Sound:">
 				サウンド:
 			</text>
-			<check_box label="ジェスチャーとオブジェクトの音をこの区画だけに限定" name="check sound local"/>
+			<check_box label="ジェスチャーとオブジェクトの音をこの区画だけに限定する" name="check sound local"/>
 			<text name="Voice settings:">
 				ボイス:
 			</text>
 			<check_box label="ボイスを有効にする" name="parcel_enable_voice_channel"/>
 			<check_box label="ボイスを有効にする(不動産設定)" name="parcel_enable_voice_channel_is_estate_disabled"/>
-			<check_box label="この区画でのボイス使用を制限" name="parcel_enable_voice_channel_parcel"/>
+			<check_box label="ボイスをこの区画に限定する" name="parcel_enable_voice_channel_parcel"/>
 		</panel>
 		<panel label="アクセス" name="land_access_panel">
 			<panel.string name="access_estate_defined">
@@ -441,16 +441,16 @@
 				1つ以上のオプションが、不動産レベルで設定されています。
 			</panel.string>
 			<text name="Limit access to this parcel to:">
-				この区画にアクセス
+				この区画へのアクセス
 			</text>
-			<check_box label="パブリックアクセスを許可 [MATURITY]" name="public_access"/>
+			<check_box label="パブリックアクセスを許可する [MATURITY]" name="public_access"/>
 			<text name="Only Allow">
-				次の住人のアクセス禁止:
+				次の住人のアクセスを許可:
 			</text>
 			<check_box label="支払情報登録済 [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="未確認の住人の立入を禁止します。"/>
 			<check_box label="年齢確認 [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="年齢確認を済ませていない住人の立入を禁止します。 詳しい情報は [SUPPORT_SITE] をご覧下さい。"/>
-			<check_box label="グループ・アクセスを許可:[GROUP]" name="GroupCheck" tool_tip="[一般]タブで、グループを選択してください。"/>
-			<check_box label="入場許可を販売:" name="PassCheck" tool_tip="この区画への一時的なアクセスを許可"/>
+			<check_box label="グループのアクセスを許可:[GROUP]" name="GroupCheck" tool_tip="[一般]タブで、グループを選択してください。"/>
+			<check_box label="入場許可を販売:" name="PassCheck" tool_tip="この区画への一時的なアクセスを許可します"/>
 			<combo_box name="pass_combo">
 				<combo_box.item label="誰でも" name="Anyone"/>
 				<combo_box.item label="グループ" name="Group"/>
@@ -467,7 +467,7 @@
 			</panel>
 			<panel name="Banned_layout_panel">
 				<text label="禁止" name="BanCheck">
-					立入禁止された住人
+					立入を禁止された住人
 				</text>
 				<name_list name="BannedList" tool_tip="(合計 [LISTED] 人、最大 [MAX] 人)"/>
 				<button label="追加" name="add_banned"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_animation_preview.xml b/indra/newview/skins/default/xui/ja/floater_animation_preview.xml
index c355924f33ac86641ea44aef9b636a1fb43fe33a..4674df8becea613912274bbfae25022a711de1ce 100644
--- a/indra/newview/skins/default/xui/ja/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_animation_preview.xml
@@ -114,8 +114,8 @@
 	</text>
 	<spinner label="優先順位" name="priority" tool_tip="このアニメーションがどのアニメーションを上書きするかを決めます"/>
 	<check_box label="ループ" name="loop_check" tool_tip="このアニメーションをループ再生します"/>
-	<spinner label="イン(%)" label_width="45" left="70" name="loop_in_point" tool_tip="アニメーションのループ復帰点を設定します" width="100"/>
-	<spinner label="アウト(%)" label_width="60" left="170" name="loop_out_point" tool_tip="アニメーションのループ終了点を設定します" width="100"/>
+	<spinner label="イン(%)" label_width="45" left="60" name="loop_in_point" tool_tip="アニメーションのループ復帰点を設定します" width="100"/>
+	<spinner label="アウト(%)" label_width="50" left="170" name="loop_out_point" tool_tip="アニメーションのループ終了点を設定します" width="100"/>
 	<text name="hand_label">
 		手の動き
 	</text>
@@ -168,17 +168,17 @@
 		<combo_box.item label="座る" name="Sitting"/>
 		<combo_box.item label="飛ぶ" name="Flying"/>
 	</combo_box>
-	<spinner label="フェーズイン(秒)" name="ease_in_time" tool_tip="アニメーションのブレンドイン時間(秒)"/>
-	<spinner label="フェーズアウト(秒)" name="ease_out_time" tool_tip="アニメーションのブレンドアウト時間(秒)"/>
+	<spinner label="イーズイン(秒)" name="ease_in_time" tool_tip="アニメーションのブレンドイン時間(秒)"/>
+	<spinner label="イーズアウト(秒)" name="ease_out_time" tool_tip="アニメーションのブレンドアウト時間(秒)"/>
 	<button label="" name="play_btn" tool_tip="アニメーションを再生する"/>
 	<button name="pause_btn" tool_tip="アニメーションを一時停止する"/>
 	<button label="" name="stop_btn" tool_tip="アニメーションの再生を停止"/>
 	<slider label="" name="playback_slider"/>
 	<text name="bad_animation_text">
-		アニメーション・ファイルを読み込めません。
+		アニメーションファイルを読み込めません。
  
  Poser 4からエクスポートされたBVHファイルを推奨します。
 	</text>
-	<button label="アップロードL$[AMOUNT]" name="ok_btn"/>
+	<button label="アップロードL$[AMOUNT]" name="ok_btn"/>
 	<button label="取り消し" name="cancel_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml
index a199a10823ebc53985040e4d5d25af370f965100..0ea913e66aa6816a00831f1488afa1ab5fe83d08 100644
--- a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml
@@ -3,13 +3,13 @@
 	<floater.string name="InvalidAvatar">
 		無効なアバター
 	</floater.string>
-	<text name="label">
+	<text name="label" width="100">
 		ベークドテクスチャ
 	</text>
 	<text name="composite_label" width="128">
-		合成テクスチャー
+		合成テクスチャ
 	</text>
-	<button label="テクスチャID一覧をコンソールに書き込む" label_selected="捨てる" name="Dump"/>
+	<button label="テクスチャID一覧をコンソールに書き込む" label_selected="捨てる" name="Dump" width="200"/>
 	<scroll_container name="profile_scroll">
 		<panel name="scroll_content_panel">
 			<texture_picker label="髪" name="hair-baked"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_build_options.xml b/indra/newview/skins/default/xui/ja/floater_build_options.xml
index 8d3dba3883f847f5d3497a3358f9bea2aca25f27..9fd788d9cba6304f598b1f2adec919d201467a0c 100644
--- a/indra/newview/skins/default/xui/ja/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/ja/floater_build_options.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="build options floater" title="グリッドオプション">
 	<spinner label="グリッドユニット(メートル)" name="GridResolution"/>
-	<spinner label="グリッド範囲(メートル)" name="GridDrawSize"/>
+	<spinner label="グリッド゙範囲(メートル)" name="GridDrawSize"/>
 	<check_box label="サブユニットにスナップ" name="GridSubUnit"/>
 	<check_box label="横断面を表示" name="GridCrossSection"/>
 	<text name="grid_opacity_label" tool_tip="グリッドの透明度">
diff --git a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml
index fbbbd85890ad6cdf40d6726937ac3af33fb9b79d..be24960c6ef6328bd14010333be37cdabf3b6c6f 100644
--- a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterbulkperms" title="コンテンツ権限の編集">
+<floater name="floaterbulkperms" title="中身の権限の編集">
 	<floater.string name="nothing_to_modify_text">
-		選択した中に編集できないコンテンツが含まれています
+		選択した中に編集できないものが含まれています
 	</floater.string>
 	<floater.string name="status_text">
 		[NAME]に権限を設定中です。
@@ -28,12 +28,12 @@
 	<icon name="icon_script" tool_tip="スクリプト"/>
 	<check_box label="サウンド" name="check_sound"/>
 	<icon name="icon_sound" tool_tip="サウンド"/>
-	<check_box label="テクスチャー" name="check_texture"/>
+	<check_box label="テクスチャ" name="check_texture"/>
 	<icon name="icon_texture" tool_tip="テクスチャ"/>
 	<button label="すべてに √" label_selected="全て" name="check_all"/>
 	<button label="クリア" label_selected="なし" name="check_none"/>
 	<text name="newperms">
-		新しいコンテンツ権限
+		新しい中身の権限
 	</text>
 	<text name="GroupLabel">
 		グループ:
@@ -43,7 +43,7 @@
 		全員:
 	</text>
 	<check_box label="コピー" name="everyone_copy"/>
-	<text name="NextOwnerLabel">
+	<text name="NextOwnerLabel" left="160">
 		次の所有者:
 	</text>
 	<check_box label="修正" name="next_owner_modify"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_contents.xml b/indra/newview/skins/default/xui/ja/floater_buy_contents.xml
index 53b7f24141954610ef028ae4fe2b967bf89e5ff8..69d4faf5b8db9c0d8cd691259b55e85cc3cab9e9 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_contents.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_contents.xml
@@ -1,22 +1,22 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater min_width="340" name="floater_buy_contents" title="コンテンツの購入" width="340">
+<floater min_width="340" name="floater_buy_contents" title="中身の購入" width="340">
 	<text name="contains_text" width="320">
-		[NAME]の内容:
+		[NAME]の中身:
 	</text>
 	<scroll_list name="item_list" width="310"/>
 	<text name="buy_text" width="320">
-		コンテンツを[NAME]からL$[AMOUNT]で購入しますか?
+		中身を[NAME]からL$[AMOUNT]で購入しますか?
 	</text>
 	<button label="取り消し" label_selected="取り消し" name="cancel_btn" width="73"/>
 	<button label="購入" label_selected="購入" left_delta="-77" name="buy_btn" width="73"/>
 	<check_box label="今すぐ服を着る" left_delta="-125" name="wear_check"/>
 	<text name="no_copy_text">
-		(コピーなし)
+		(コピー不可)
 	</text>
 	<text name="no_modify_text">
-		(修正なし)
+		(修正不可)
 	</text>
 	<text name="no_transfer_text">
-		(転送なし)
+		(再販・プレゼント不可)
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
index ffdcf838d3f30f8a97cd2cd673d3f51c0d3f94a5..32de533dc427c051567f6ccadff5dc63cc46eb09 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
@@ -40,13 +40,13 @@
 		[NAME] L$ [PRICE]
 	</text>
 	<text name="total_label">
-		新しい残高
+		購入後の残高
 	</text>
 	<text name="total_amount">
 		L$ [AMT]
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php?lang=ja-JP payment method] | [http://www.secondlife.com/my/account/currency.php?lang=ja-JP currency] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=ja-JP exchange rate]
+		[http://www.secondlife.com/my/account/payment_method_management.php?lang=ja-JP 支払方法] | [http://www.secondlife.com/my/account/currency.php?lang=ja-JP 通貨] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=ja-JP 換算レート]
 	</text>
 	<text name="exchange_rate_note">
 		金額を再入力して最新換算レートを確認します。
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_land.xml b/indra/newview/skins/default/xui/ja/floater_buy_land.xml
index 13b43d1257089b449577f686c1b9ed8dc5b97f4f..f332c3d988906f9dbd18b2d014b185fbe99a3196 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_land.xml
@@ -27,10 +27,10 @@
 	<text name="resellable_changeable_label">
 		この地域で購入した土地:
 	</text>
-	<text name="resellable_clause">
+	<text name="resellable_clause" left="460">
 		再販できる場合とできない場合があります。
 	</text>
-	<text name="changeable_clause">
+	<text name="changeable_clause" left="460">
 		統合または再分割できる場合とできない場合があります。
 	</text>
 	<text name="covenant_text">
@@ -67,12 +67,12 @@
 	<text name="error_message">
 		何か変です
 	</text>
-	<button label="ウェブ・サイトに移動" name="error_web"/>
+	<button label="Webサイトに移動" name="error_web"/>
 	<text name="account_action">
-		プレミアム・メンバーにアップグレード
+		プレミアム会員にアップグレード
 	</text>
 	<text name="account_reason">
-		土地を保有できるのはプレミアム・メンバーだけです
+		土地を保有できるのはプレミアム会員だけです
 	</text>
 	<combo_box name="account_level">
 		<combo_box.item label="月額 9.95米ドル、 月払い" name="US$9.95/month,billedmonthly"/>
@@ -114,10 +114,10 @@
 		再販不可能
 	</string>
 	<string name="can_change">
-		統合/再分割可能
+		統合・再分割可能
 	</string>
 	<string name="can_not_change">
-		統合/再分割不可能
+		統合・再分割不可能
 	</string>
 	<string name="cant_buy_for_group">
 		あなたはアクティブなグループ用の土地購入を許可されていません
@@ -127,7 +127,7 @@
 	</string>
 	<string name="multiple_parcels_selected">
 		複数の異なった区画を選択しました。 
-これより小さなエリアを選択してください。
+これより小さな範囲を選択してください。
 	</string>
 	<string name="no_permission">
 		あなたはアクティブなグループ用の土地購入を許可されていません
@@ -149,7 +149,7 @@
 	</string>
 	<string name="not_owned_by_you">
 		他の使用者に所有された土地が選択されています。 
-これより小さなエリアを選択してください。
+これより小さな範囲を選択してください。
 	</string>
 	<string name="processing">
 		購入処理中...
@@ -203,7 +203,7 @@
 オブジェクト [AMOUNT2] 個サポート
 	</string>
 	<string name="sold_with_objects">
-		オブジェクトと共に販売済み
+		オブジェクト込みで販売
 	</string>
 	<string name="sold_without_objects">
 		オブジェクトは含まれていません
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_object.xml b/indra/newview/skins/default/xui/ja/floater_buy_object.xml
index f807e9157365648f444a5ef3aed8391d930d2f60..7a5b7dc140813a324d3c61d504cfbf38edec591c 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_object.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_object.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="contents" title="オブジェクトのコピーを購入">
 	<text name="contents_text">
-		内容:
+		中身:
 	</text>
 	<text name="buy_text">
 		[NAME]からL$[AMOUNT]で購入しますか?
@@ -12,15 +12,15 @@
 		購入
 	</text>
 	<string name="title_buy_copy_text">
-		次のものを買う
+		次のものを購入
 	</string>
 	<text name="no_copy_text">
-		(コピーなし)
+		(コピー不可)
 	</text>
 	<text name="no_modify_text">
-		(修正なし)
+		(修正不可)
 	</text>
 	<text name="no_transfer_text">
-		(転送なし)
+		(再販・プレゼント不可)
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_camera.xml b/indra/newview/skins/default/xui/ja/floater_camera.xml
index be118273faeb283769f432844f073185270a562b..3730bcd385600b676b5d4342cec2812141e05cea 100644
--- a/indra/newview/skins/default/xui/ja/floater_camera.xml
+++ b/indra/newview/skins/default/xui/ja/floater_camera.xml
@@ -11,7 +11,7 @@
 	</floater.string>
 	<panel name="controls">
 		<joystick_track name="cam_track_stick" tool_tip="カメラを上下左右に動かします"/>
-		<panel name="zoom" tool_tip="向いてる方法にカメラをズーム">
+		<panel name="zoom" tool_tip="向いている方法にカメラをズーム">
 			<slider_bar name="zoom_slider" tool_tip="向いている方向にカメラをズーム"/>
 		</panel>
 		<joystick_rotate name="cam_rotate_stick" tool_tip="自分を軸にカメラを回す"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_color_picker.xml b/indra/newview/skins/default/xui/ja/floater_color_picker.xml
index a98da4b8bae5d82d977198c3b1ddfd114eb78e00..dc87d27a153d33820ec038abe42814d0f31f56af 100644
--- a/indra/newview/skins/default/xui/ja/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/ja/floater_color_picker.xml
@@ -18,7 +18,7 @@
 	<text name="l_val_text">
 		輝度:
 	</text>
-	<check_box label="今すぐ適用" name="apply_immediate"/>
+	<check_box label="すぐ適用" name="apply_immediate"/>
 	<button label="" label_selected="" name="color_pipette"/>
 	<button label="取り消し" label_selected="取り消し" name="cancel_btn"/>
 	<button label="OK" label_selected="OK" name="select_btn"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_critical.xml b/indra/newview/skins/default/xui/ja/floater_critical.xml
index 39f6ee8e3faeb67971790f924f3224a2519a2d24..f69c24622a5629d3e8cc53ef73342422393603f9 100644
--- a/indra/newview/skins/default/xui/ja/floater_critical.xml
+++ b/indra/newview/skins/default/xui/ja/floater_critical.xml
@@ -3,10 +3,10 @@
 	<button label="続行" label_selected="続行" name="Continue" />
 	<button label="取り消し" label_selected="取り消し" name="Cancel" />
 	<text name="tos_title">
-		クリティカル・メッセージ
+		クリティカルメッセージ
 	</text>
 	<text name="tos_heading">
-		次のメッセージを注意深くお読みください。
+		次のメッセージを注意してよくお読みください。
 	</text>
 	<text_editor name="tos_text">
 		TOS_TEXT
diff --git a/indra/newview/skins/default/xui/ja/floater_customize.xml b/indra/newview/skins/default/xui/ja/floater_customize.xml
index 7d1809f1ed276504f500443a86239f1c0c92656c..27ce1adede03b1edfbdc9c1e682113d63047c983 100644
--- a/indra/newview/skins/default/xui/ja/floater_customize.xml
+++ b/indra/newview/skins/default/xui/ja/floater_customize.xml
@@ -50,7 +50,7 @@
 		<panel label="スキン" name="Skin">
 			<button label="スキンの色" label_selected="スキンの色" name="Skin Color"/>
 			<button label="顔の細部" label_selected="顔の細部" name="Face Detail"/>
-			<button label="メイクアップ" label_selected="メイクアップ" name="Makeup"/>
+			<button label="メイク" label_selected="メイク" name="Makeup"/>
 			<button label="身体細部" label_selected="身体細部" name="Body Detail"/>
 			<text name="title">
 				[DESC]
@@ -186,10 +186,10 @@
 				シャツ:
 			</text>
 		</panel>
-		<panel label="ズボン" name="Pants">
+		<panel label="パンツ" name="Pants">
 			<texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/>
 			<color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/>
-			<button label="新しいズボンを作成" label_selected="新しいズボンを作成" name="Create New"/>
+			<button label="新しいパンツを作成" label_selected="新しいパンツを作成" name="Create New"/>
 			<button label="取り外す" label_selected="取り外す" name="Take Off"/>
 			<button label="保存" label_selected="保存" name="Save"/>
 			<button label="別名で保存..." label_selected="別名で保存..." name="Save As"/>
@@ -216,7 +216,7 @@
 				あなたはこの服の修正を許されていません。
 			</text>
 			<text name="Item Action Label">
-				ズボン:
+				パンツ:
 			</text>
 		</panel>
 		<panel label="靴" name="Shoes">
diff --git a/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml
index 2d8b54cdd55af705a0d9447b9cc6899de40a5f88..3bd5ed283710a40c27290a611fab4fd332bc1e8b 100644
--- a/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml
+++ b/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml
@@ -84,10 +84,10 @@
 			<text name="DayCycleText3">
 				プレビュー:
 			</text>
-			<button label="再生" label_selected="再生" name="WLAnimSky" />
+			<button label="再生" label_selected="再生" name="WLAnimSky" left_delta="70"/>
 			<button label="停止!" label_selected="停止" name="WLStopAnimSky" />
 			<button label="不動産の時刻を使用"
-			     label_selected="不動産の時刻に変更" name="WLUseLindenTime" />
+			     label_selected="不動産の時刻に変更" name="WLUseLindenTime" width="140"/>
 			<button label="デイ・テストを保存"
 			     label_selected="デイ・テストを保存" name="WLSaveDayCycle" />
 			<button label="デイ・テストをロード"
diff --git a/indra/newview/skins/default/xui/ja/floater_god_tools.xml b/indra/newview/skins/default/xui/ja/floater_god_tools.xml
index 18380bddc25255327d848136803cb5c425154294..075cde8dec113f0566362ffadd192465535dced1 100644
--- a/indra/newview/skins/default/xui/ja/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_god_tools.xml
@@ -2,7 +2,7 @@
 <floater name="godtools floater" title="ゴッド・ツール">
 	<tab_container name="GodTools Tabs">
 		<panel label="グリッド" name="grid">
-			<button label="すべてのユーザーを追い出す" label_selected="すべてのユーザーを追い出す" name="Kick all users"/>
+			<button label="すべてのユーザーを追い出す" label_selected="すべてのユーザーを追い出す" name="Kick all users" width="160"/>
 			<button label="この地域の地図の表示キャッシュを消去" label_selected="この地域の地図の表示キャッシュを消去" name="Flush This Region&apos;s Map Visibility Caches"/>
 		</panel>
 		<panel label="地域" name="region">
@@ -33,13 +33,15 @@
 			<line_editor name="gridposx" tool_tip="これは、この地域のグリッドxの位置です。"/>
 			<line_editor name="gridposy" tool_tip="これは、この地域のグリッドyの位置です。"/>
 			<text name="Redirect to Grid: ">
-				グリッドにリダイレクト:
+				グリッドにリダ
+イレクト:
 			</text>
 			<text name="billable factor text">
 				請求率:
 			</text>
 			<text name="land cost text">
-				平方メートル当たりL$:
+				平方メートル当
+たりL$:
 			</text>
 			<button label="更新" label_selected="更新" name="Refresh" tool_tip="上記の情報を更新するには、ここをクリックします。"/>
 			<button label="適用" label_selected="適用" name="Apply" tool_tip="上記の変更を適用するには、ここをクリックします。"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_image_preview.xml b/indra/newview/skins/default/xui/ja/floater_image_preview.xml
index 57ed139e546f61f3835f104cb1e210b9759ba655..2e57acf0d258f3c4e2069c68e937eee1e34a292f 100644
--- a/indra/newview/skins/default/xui/ja/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_image_preview.xml
@@ -7,7 +7,7 @@
 		説明:
 	</text>
 	<text name="preview_label">
-		イメージのプレビュー:
+		プレビュー:
 	</text>
 	<combo_box label="服の種類" name="clothing_type_combo">
 		<combo_box.item label="画像" name="Image"/>
@@ -26,7 +26,7 @@
 
 24bitTarga(.tga)でイメージを保存してください。
 	</text>
-	<check_box label="ロスのない圧縮を使用" name="lossless_check"/>
+	<check_box label="可逆圧縮" name="lossless_check"/>
 	<button label="取り消し" name="cancel_btn"/>
-	<button label="アップロードL$[AMOUNT]" name="ok_btn"/>
+	<button label="アップロード゙L$[AMOUNT]" name="ok_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_inspect.xml b/indra/newview/skins/default/xui/ja/floater_inspect.xml
index b7c657c2f98325b0eadf17ba13378e539b205384..b3825c0b7f4cb93b4f731dc32cc81e02b9720a20 100644
--- a/indra/newview/skins/default/xui/ja/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/ja/floater_inspect.xml
@@ -3,12 +3,12 @@
 	<floater.string name="timeStamp">
 		[year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
 	</floater.string>
-	<scroll_list name="object_list" tool_tip="このリストからオブジェクトを選択し、この世界で強調表示します。">
-		<scroll_list.columns label="オブジェクト名" name="object_name"/>
+	<scroll_list name="object_list" tool_tip="リストからオブジェクトを選択し、インワールドで強調表示します。">
+		<scroll_list.columns label="名前" name="object_name"/>
 		<scroll_list.columns label="所有者名" name="owner_name"/>
 		<scroll_list.columns label="制作者名" name="creator_name"/>
 		<scroll_list.columns label="作成日" name="creation_date"/>
 	</scroll_list>
-	<button label="所有者のプロフィールを表示..." name="button owner" tool_tip="選択されたオブジェクトの所有者のプロフィールを見る"/>
-	<button label="制作者のプロフィールを表示..." name="button creator" tool_tip="選択されたオブジェクトの制作者のプロフィールを見る"/>
+	<button label="所有者のプロフィールを表示..." name="button owner" tool_tip="選択したオブジェクトの所有者のプロフィールを表示します" width="180"/>
+	<button label="制作者のプロフィールを表示..." name="button creator" tool_tip="選択したオブジェクトの制作者のプロフィールを表示します" width="180"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_inventory.xml b/indra/newview/skins/default/xui/ja/floater_inventory.xml
index 7cf16b8ff244051176b2eb5ae5b57fa4a86f02e5..b113fde94ac8d8e040f3cf25d6502ea8bf40da9a 100644
--- a/indra/newview/skins/default/xui/ja/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/floater_inventory.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Inventory" title="持ち物">
 	<floater.string name="Title">
-		インベントリ
+		持ち物
 	</floater.string>
 	<floater.string name="TitleFetching">
 		持ち物 ( [ITEM_COUNT]  アイテムを取得中...) [FILTER]
diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml
index 86bb5dcf6210175b5904bd7216145144f0080d02..47a63e5e2025478750da7b4c2e66b8f7c774184e 100644
--- a/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml
+++ b/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml
@@ -9,7 +9,7 @@
 	<check_box label="オブジェクト" name="check_object"/>
 	<check_box label="スクリプト" name="check_script"/>
 	<check_box label="サウンド" name="check_sound"/>
-	<check_box label="テクスチャー" name="check_texture"/>
+	<check_box label="テクスチャ" name="check_texture"/>
 	<check_box label="スナップショット" name="check_snapshot"/>
 	<button label="すべて" label_selected="すべて" name="All"/>
 	<button label="なし" label_selected="なし" name="None"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_joystick.xml b/indra/newview/skins/default/xui/ja/floater_joystick.xml
index 9d91fe8db995f85b1632dd286ae73aa5bb4dd234..65eeebe4edb25dea54f1c3f8c74e0ac75c2a8986 100644
--- a/indra/newview/skins/default/xui/ja/floater_joystick.xml
+++ b/indra/newview/skins/default/xui/ja/floater_joystick.xml
@@ -71,7 +71,7 @@
 	<spinner left="135" name="AvatarAxisDeadZone0" width="50"/>
 	<spinner left="205" name="BuildAxisDeadZone0" width="50"/>
 	<spinner left="275" name="FlycamAxisDeadZone0" width="50"/>
-	<text left="0" name="PitchDeadZone" width="135">
+	<text left="0" name="PitchDeadZone" width="125">
 		ピッチ・デッド・ゾーン
 	</text>
 	<spinner left="135" name="AvatarAxisDeadZone4" width="50"/>
@@ -83,7 +83,7 @@
 	<spinner left="135" name="AvatarAxisDeadZone5" width="50"/>
 	<spinner left="205" name="BuildAxisDeadZone5" width="50"/>
 	<spinner left="275" name="FlycamAxisDeadZone5" width="50"/>
-	<text left="0" name="RollDeadZone" width="135">
+	<text left="0" name="RollDeadZone" width="125">
 		ロール・デッド・ゾーン
 	</text>
 	<spinner left="205" name="BuildAxisDeadZone3" width="50"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_land_holdings.xml b/indra/newview/skins/default/xui/ja/floater_land_holdings.xml
index 474bd32cb08052f09e1136d70a24b2cffe3c12ab..aca916f22f2af4aacadf49e2779b9378c49c8707 100644
--- a/indra/newview/skins/default/xui/ja/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/ja/floater_land_holdings.xml
@@ -7,17 +7,17 @@
 		<column label="面積" name="area"/>
 		<column label="" name="hidden"/>
 	</scroll_list>
-	<button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="この土地の中心にテレポート"/>
+	<button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="この土地の中心にテレポートします"/>
 	<button label="地図" label_selected="地図" name="Show on Map" tool_tip="この土地を世界地図に表示します"/>
 	<text name="contrib_label">
-		あなたのグループへの貢献:
+		所属グループへの貢献:
 	</text>
 	<scroll_list name="grant list">
 		<column label="グループ名" name="group"/>
 		<column label="面積" name="area"/>
 	</scroll_list>
 	<text name="allowed_label">
-		現在の支払いプランでの許可された保有地:
+		現在の支払いプランで許可された保有地:
 	</text>
 	<text name="allowed_text">
 		[AREA] 平方メートル
@@ -29,7 +29,7 @@
 		[AREA] 平方メートル
 	</text>
 	<text name="available_label">
-		土地購入可:
+		購入可能な土地:
 	</text>
 	<text name="available_text">
 		[AREA] 平方メートル
diff --git a/indra/newview/skins/default/xui/ja/floater_map.xml b/indra/newview/skins/default/xui/ja/floater_map.xml
index f3cba7e6747cb49ad75bb3990ec477e3800ba5fd..78af3cec07517bdf6e76c7cc57087b5fd391de4f 100644
--- a/indra/newview/skins/default/xui/ja/floater_map.xml
+++ b/indra/newview/skins/default/xui/ja/floater_map.xml
@@ -25,7 +25,7 @@
 		北西
 	</floater.string>
 	<floater.string name="ToolTipMsg">
-		[AGENT][REGION] (ダブルクリックで地図を開く)
+		[AGENT][REGION] (ダブルクリックで地図を開きます)
 	</floater.string>
 	<text label="北" name="floater_map_north" text="北">
 		北
diff --git a/indra/newview/skins/default/xui/ja/floater_media_browser.xml b/indra/newview/skins/default/xui/ja/floater_media_browser.xml
index 4f67523eec937d5c40dc3afdab9caf13a02e7b6d..c4731b73a3f00044b7a85e5b7f65f5e719601eef 100644
--- a/indra/newview/skins/default/xui/ja/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/ja/floater_media_browser.xml
@@ -22,8 +22,8 @@
 			<button label="現在のページを区画に送る" name="assign"/>
 		</layout_panel>
 		<layout_panel name="external_controls">
-			<button label="外部ウェブ・ブラウザで開く" name="open_browser"/>
-			<check_box label="常に外部のウェブ・ブラウザで開く" name="open_always"/>
+			<button label="外部Webブラウザで開く" name="open_browser"/>
+			<check_box label="常に外部のWebブラウザで開く" name="open_always"/>
 			<button label="閉じる" name="close"/>
 		</layout_panel>
 	</layout_stack>
diff --git a/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml b/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml
index 6167b6db91ca3e8eb1e4aa388346d169adefc40d..f48bb94e3212c05f4927c66626d5b3fbbbaf1559 100644
--- a/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="MemLeak" title="メモリリークのシミュレート">
-	<spinner label="リークスピード(1フレームごとのバイト数):" label_width="244" name="leak_speed"/>
-	<spinner label="リークした最大メモリ数(MB):" label_width="244" name="max_leak"/>
+	<spinner label="リーク速度(1フレームごとのバイト数):" label_width="244" name="leak_speed"/>
+	<spinner label="最大メモリリーク(MB):" label_width="244" name="max_leak"/>
 	<text name="total_leaked_label">
-		現在のリークメモリサイズ: [SIZE] KB
+		現在のメモリリーク: [SIZE] KB
 	</text>
 	<text name="note_label_1">
 		[NOTE1]
diff --git a/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml b/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml
index adbb8596d3b5ddeb46614e6e023023cbd7313689..98cda25a81e578a18edc3201b9495d82caa401e0 100644
--- a/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml
+++ b/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml
@@ -5,11 +5,11 @@
 		<check_box label="グループで共同管理" name="share_with_group"/>
 		<check_box label="誰に対してもコピーを許可" name="everyone_copy"/>
 		<text name="NextOwnerLabel">
-			次のオーナーができる操作:
+			次の所有者ができる操作:
 		</text>
 		<check_box label="修正" name="next_owner_modify"/>
 		<check_box label="コピー" name="next_owner_copy"/>
-		<check_box label="再販/プレゼント" name="next_owner_transfer"/>
+		<check_box label="再販・プレゼント" name="next_owner_transfer"/>
 	</panel>
 	<button label="OK" label_selected="OK" name="ok"/>
 	<button label="取り消し" label_selected="取り消し" name="cancel"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_postcard.xml b/indra/newview/skins/default/xui/ja/floater_postcard.xml
index b2ca059ccd6e92ce8c91b1982d3be7a092c01d03..5a2b047fe07496f6602ca178a3b661f995882b3c 100644
--- a/indra/newview/skins/default/xui/ja/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/ja/floater_postcard.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Postcard" title="スナップショットをメール">
 	<text name="to_label">
-		住人のEメール:
+		住人のメール:
 	</text>
 	<line_editor left="145" name="to_form" width="125"/>
 	<text name="from_label">
-		あなたのEメール:
+		あなたのメール:
 	</text>
 	<line_editor left="145" name="from_form" width="125"/>
 	<text name="name_label">
@@ -15,14 +15,14 @@
 	<text name="subject_label">
 		件名:
 	</text>
-	<line_editor label="件名をここに入力" left="145" name="subject_form" width="125"/>
+	<line_editor label="件名を入力してください" left="145" name="subject_form" width="125"/>
 	<text name="msg_label">
 		メッセージ:
 	</text>
 	<text_editor bottom_delta="-120" height="110" name="msg_form">
 		メッセージをここに入力してください。
 	</text_editor>
-	<check_box label="ウェブ上で公開" name="allow_publish_check" tool_tip="このポストカードをウェブ上で公開します。"/>
+	<check_box label="Web上で公開" name="allow_publish_check" tool_tip="このポストカードをWeb上で公開します。"/>
 	<check_box label="成人向けコンテンツ" name="mature_check" tool_tip="このポストカードには成人向け内容が含まれます。"/>
 	<button label="?" left="300" name="publish_help_btn"/>
 	<text name="fine_print">
diff --git a/indra/newview/skins/default/xui/ja/floater_preferences.xml b/indra/newview/skins/default/xui/ja/floater_preferences.xml
index 1493219b833d2c898c12c93ef4de7f6f9fb6929a..e2893d5eabf26e40d11098f14ff7945aed0133d7 100644
--- a/indra/newview/skins/default/xui/ja/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preferences.xml
@@ -8,7 +8,7 @@
 		<panel label="プライバシー" name="im"/>
 		<panel label="サウンド" name="audio"/>
 		<panel label="チャット" name="chat"/>
-		<panel label="通知" name="msgs"/>
+		<panel label="メッセージ" name="msgs"/>
 		<panel label="セットアップ" name="input"/>
 		<panel label="詳細" name="advanced1"/>
 	</tab_container>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_animation.xml b/indra/newview/skins/default/xui/ja/floater_preview_animation.xml
index fb2f2c74335d9637f55f59e026e26124bdedc882..2c0d6a00970771904deeb6fca8dfafa5d405a86e 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_animation.xml
@@ -6,6 +6,6 @@
 	<text name="desc txt">
 		説明:
 	</text>
-	<button label="世界で再生" label_selected="停止" name="Anim play btn" tool_tip="他人に見えるように再生"/>
-	<button label="ローカルに再生" label_selected="停止" name="Anim audition btn" tool_tip="自分だけが見えるように再生"/>
+	<button label="ワールド再生" label_selected="停止" name="Anim play btn" tool_tip="他人にも見えるように再生します"/>
+	<button label="ローカル再生" label_selected="停止" name="Anim audition btn" tool_tip="自分だけが見えるように再生します"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
index a378700d155fc93b633d5f2a72241f8b7a86f228..8a0aea717c8fa1b5e36970768c188a4a6e80edc6 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml
@@ -38,7 +38,7 @@
 	</text>
 	<line_editor name="replace_editor" tool_tip="トリガー・ワードをこれらの単語に置き換えます。 たとえば、トリガー「hello」を「Howdy」に置換すると、「I wanted to say hello」というチャット文が「I wanted to say howdy」に変わり、ジェスチャーにも置換が反映されます。"/>
 	<text name="key_label">
-		ショートカット・キー:
+		ショートカット:
 	</text>
 	<combo_box label="なし" left="160" name="modifier_combo"/>
 	<combo_box label="なし" name="key_combo"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml
index 596699d6c13604bc8a624874b56ffa2232b25173..e96a43d0c1b1b350a5ec4e736e244c3bccd7deee 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml
@@ -6,8 +6,8 @@
 	<text name="key_label">
 		キーボード:
 	</text>
-	<combo_box label="なし" name="modifier_combo"/>
-	<combo_box label="なし" name="key_combo"/>
+	<combo_box label="なし" name="modifier_combo" width="60"/>
+	<combo_box label="なし" name="key_combo" width="60"/>
 	<text name="replace_text" tool_tip="これらの単語にトリガーとなる単語を置き換えます。 例えば、「howdy」と「hello」を置き換えると、「I wanted to say hello」というチャットは、ジェスチャーを交えながらの「I wanted to say howdy」に変わります。">
 		置き換え:
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_preview_sound.xml b/indra/newview/skins/default/xui/ja/floater_preview_sound.xml
index d3c06cbef43c02380d196b57601023110814567a..dc334dfc1f39aac6ac3bbbf2959ca77b0cf66447 100644
--- a/indra/newview/skins/default/xui/ja/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/ja/floater_preview_sound.xml
@@ -6,6 +6,6 @@
 	<text name="desc txt">
 		説明:
 	</text>
-	<button label="世界で再生" label_selected="世界で再生" name="Sound play btn" tool_tip="他人が聞こえるように再生"/>
-	<button label="ローカルに再生" label_selected="ローカルに再生" name="Sound audition btn" tool_tip="自分だけが聞こえるように再生"/>
+	<button label="ワールド再生" label_selected="ワールド再生" name="Sound play btn" tool_tip="他人にも聞こえるように再生します"/>
+	<button label="ローカル再生" label_selected="ローカル再生" name="Sound audition btn" tool_tip="自分だけが聞こえるように再生します"/>
 </floater>
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 ca6faf59c207e5a7b915e46a1a9471e5cbca812b..c66f307f2310a37b0027231fd33e51bc6df1e163 100644
--- a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml
@@ -25,7 +25,7 @@
 	<text name="select_object_label">
 		ボタンをクリックしてから、悪意のあるオブジェクトをクリック:
 	</text>
-	<button label="" label_selected="" name="pick_btn" tool_tip="オブジェクト・ピッカー - この報告の主題となるオブジェクトを特定"/>
+	<button label="" label_selected="" name="pick_btn" tool_tip="オブジェクトピッカー - 報告対象のオブジェクトを選択してください"/>
 	<text name="object_name_label">
 		オブジェクト:
 	</text>
@@ -33,13 +33,13 @@
 		Consetetur Sadipscing
 	</text>
 	<text name="owner_name_label">
-		オーナー:
+		所有者:
 	</text>
 	<text name="owner_name">
 		Hendrerit Vulputate Kamawashi Longname
 	</text>
-	<combo_box name="category_combo" tool_tip="カテゴリー -- この報告に最も適したカテゴリーを選択してください">
-		<combo_box.item label="カテゴリーを選択" name="Select_category"/>
+	<combo_box name="category_combo" tool_tip="カテゴリ -- この報告に最も適したカテゴリを選択してください">
+		<combo_box.item label="カテゴリを選択してください" name="Select_category"/>
 		<combo_box.item label="年齢>年齢偽証" name="Age__Age_play"/>
 		<combo_box.item label="年齢 &gt; 成人の住人が Teen Second Life にいる" name="Age__Adult_resident_on_Teen_Second_Life"/>
 		<combo_box.item label="年齢 &gt; 未成年の住人がTeen Second Life の外にいる" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
@@ -92,7 +92,7 @@
 	<text name="dscr_title">
 		詳細:
 	</text>
-	<text name="bug_aviso">
+	<text name="bug_aviso" width="210">
 		できるだけ具体的に詳しく記入してください。
 	</text>
 	<text name="incomplete_title">
diff --git a/indra/newview/skins/default/xui/ja/floater_sell_land.xml b/indra/newview/skins/default/xui/ja/floater_sell_land.xml
index b06b16bbb33a608abb1f77625d8f205dfdff296c..1e884af5f2d8644132329b9eb30239fac083a9ca 100644
--- a/indra/newview/skins/default/xui/ja/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_sell_land.xml
@@ -36,7 +36,7 @@
 				2. 特定の人に販売:
 			</text>
 			<text name="sell_to_text" right="-6">
-				販売先の指定なしか、特定の人に販売するか選択してください。
+				販売先の指定なしか、特定の人に販売するかを選択してください。
 			</text>
 			<combo_box name="sell_to">
 				<combo_box.item label="- 1つ選択 -" name="--selectone--"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml
index 6c84de9b194717fb5bebcbb8cbab652ee7123f81..4ad54ec7abe83aade9518901c434d7fd24db5024 100644
--- a/indra/newview/skins/default/xui/ja/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/ja/floater_snapshot.xml
@@ -28,21 +28,21 @@
 		形式
 	</text>
 	<combo_box label="解像度" name="postcard_size_combo">
-		<combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
+		<combo_box.item label="現在のウィンドウ" 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="カスタム" name="Custom"/>
 	</combo_box>
 	<combo_box label="解像度" name="texture_size_combo">
-		<combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
+		<combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
 		<combo_box.item label="小(128x128)" name="Small(128x128)"/>
 		<combo_box.item label="中(256x256)" name="Medium(256x256)"/>
 		<combo_box.item label="大(512x512)" name="Large(512x512)"/>
 		<combo_box.item label="カスタム" name="Custom"/>
 	</combo_box>
 	<combo_box label="解像度" name="local_size_combo">
-		<combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
+		<combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
 		<combo_box.item label="320x240" name="320x240"/>
 		<combo_box.item label="640x480" name="640x480"/>
 		<combo_box.item label="800x600" name="800x600"/>
@@ -61,7 +61,7 @@
 	<check_box label="縦横比の固定" name="keep_aspect_check"/>
 	<slider label="画質" name="image_quality_slider"/>
 	<text name="layer_type_label">
-		キャプチャ:
+		キャプチャ:
 	</text>
 	<combo_box label="画像レイヤー" name="layer_types">
 		<combo_box.item label="色" name="Colors"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_sound_preview.xml b/indra/newview/skins/default/xui/ja/floater_sound_preview.xml
index a24ba6e07538188a480276c922f9a6e7323a6bee..7d83309c46f323ea19c74a54d3636b7f82b1610b 100644
--- a/indra/newview/skins/default/xui/ja/floater_sound_preview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_sound_preview.xml
@@ -9,7 +9,7 @@
 	<button label="取り消し" label_selected="取り消し" name="cancel_btn"/>
 	<button label="アップロード (L$[AMOUNT])" label_selected="アップロード (L$[AMOUNT])" name="ok_btn"/>
 	<text name="text">
-		ビットレート(kbps):
+		ビットレート(kbps):
 	</text>
 	<radio_group name="bitrate">
 		<radio_item label="32" name="32"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_telehub.xml b/indra/newview/skins/default/xui/ja/floater_telehub.xml
index bdb92c8e3058363944f66c27b0ed29ef5ecbd01d..73180837711bca4815685aff4345e074e7101387 100644
--- a/indra/newview/skins/default/xui/ja/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/ja/floater_telehub.xml
@@ -10,7 +10,7 @@
 		「切断」をクリックして削除します。
 	</text>
 	<text name="help_text_not_connected">
-		物体を選択し「テレハブの接続」をクリックする
+		物体を選択して「テレハブの接続」をクリックしてください。
 	</text>
 	<button label="テレハブの接続" name="connect_btn"/>
 	<button label="切断" name="disconnect_btn"/>
@@ -20,9 +20,6 @@
 	<button label="出現位置を追加" name="add_spawn_point_btn"/>
 	<button label="出現地点を削除" name="remove_spawn_point_btn"/>
 	<text name="spawn_point_help">
-		オブジェクトを選び、「出現地点を追加」をクリックして位置を指定します。
-そうするとそのオブジェクトを移動させたり削除できます。
-位置はテレハブセンターに関連します。
-リストのアイテムを選択してインワールドでハイライトさせます。
+		オブジェクトを選び、「出現地点を追加」をクリックして位置を指定します。そうするとそのオブジェクトを移動させたり削除できます。位置はテレハブセンターに関連します。リストのアイテムを選択してインワールドでハイライトさせます。
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
index 1500808e60e9b7ea7b44e3ad2b2f845fe309a964..399cffcce5cc0e9012cc5e17223a81c828742994 100644
--- a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="texture picker" title="選択: テクスチャ">
+<floater name="texture picker" title="テクスチャの選択">
 	<string name="choose_picture">
 		クリックして写真を選択
 	</string>
@@ -9,12 +9,12 @@
 	<text name="unknown">
 		サイズ: [DIMENSIONS]
 	</text>
-	<button label="デフォルト" label_selected="デフォルト" name="Default"/>
+	<button label="デフォルト" label_selected="デフォルト" name="Default"/>
 	<button label="なし" label_selected="なし" name="None"/>
 	<button label="ブランク" label_selected="ブランク" name="Blank"/>
 	<check_box label="フォルダを表示" name="show_folders_check"/>
 	<search_editor label="テクスチャをフィルター" name="inventory search editor"/>
-	<check_box label="今すぐ適用" name="apply_immediate_check"/>
+	<check_box label="すぐ適用" name="apply_immediate_check"/>
 	<button label="" label_selected="" name="Pipette"/>
 	<button label="取り消し" label_selected="取り消し" name="Cancel"/>
 	<button label="OK" label_selected="OK" name="Select"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml
index 52d3537d9a335967780c534a14d542b097dd77d5..456e30c2b40bcbbff514b271ebe73c3e399a2b21 100644
--- a/indra/newview/skins/default/xui/ja/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tools.xml
@@ -171,7 +171,7 @@
 				Esbee Linden
 			</text>
 			<text name="Owner:">
-				オーナー:
+				所有者:
 			</text>
 			<text name="Owner Name">
 				Erica Linden
@@ -197,7 +197,7 @@
 			<check_box label="販売対象:" name="checkbox for sale"/>
 			<combo_box name="sale type">
 				<combo_box.item label="コピー" name="Copy"/>
-				<combo_box.item label="コンテンツ" name="Contents"/>
+				<combo_box.item label="中身" name="Contents"/>
 				<combo_box.item label="オリジナル" name="Original"/>
 			</combo_box>
 			<spinner label="価格: L$" name="Edit Cost"/>
@@ -239,9 +239,9 @@
 		</panel>
 		<panel label="形状" name="Object">
 			<check_box label="ロック済み" name="checkbox locked" tool_tip="オブジェクトの移動と削除を禁止します。 この機能を使うと、構築中に意図しない編集を防ぐことができます。"/>
-			<check_box label="物理" name="Physical Checkbox Ctrl" tool_tip="オブジェクトに対する重力の作用と影響を有効にする"/>
+			<check_box label="物理" name="Physical Checkbox Ctrl" tool_tip="オブジェクトに対する重力の作用と影響を有効にします"/>
 			<check_box label="臨時" name="Temporary Checkbox Ctrl" tool_tip="制作後 1 分でオブジェクトは削除されます"/>
-			<check_box label="ファントム" name="Phantom Checkbox Ctrl" tool_tip="オブジェクト同士の衝突またはオブジェクトとアバターの衝突を回避"/>
+			<check_box label="ファントム" name="Phantom Checkbox Ctrl" tool_tip="オブジェクト同士の衝突またはオブジェクトとアバターの衝突を回避します"/>
 			<text name="label position">
 				位置(メートル)
 			</text>
@@ -280,7 +280,7 @@
 				<combo_box.item label="ゴム" name="Rubber"/>
 			</combo_box>
 			<text name="text cut">
-				パスカット (始点/終点)
+				パスカット (始点・終点)
 			</text>
 			<spinner label="B" name="cut begin"/>
 			<spinner label="E" name="cut end"/>
@@ -300,7 +300,7 @@
 				<combo_box.item label="三角形" name="Triangle"/>
 			</combo_box>
 			<text name="text twist">
-				ひねり (始点/終点)
+				ひねり (始点・終点)
 			</text>
 			<spinner label="B" name="Twist Begin"/>
 			<spinner label="E" name="Twist End"/>
@@ -318,13 +318,13 @@
 			<spinner label="X" name="Shear X"/>
 			<spinner label="Y" name="Shear Y"/>
 			<text name="advanced_cut">
-				プロフィールカット (始点/終点)
+				プロフィールカット (始点・終点)
 			</text>
 			<text name="advanced_dimple">
-				くぼみ (始点/終点)
+				くぼみ (始点・終点)
 			</text>
 			<text name="advanced_slice">
-				切り取り (始点/終点)
+				切り取り (始点・終点)
 			</text>
 			<spinner label="B" name="Path Limit Begin"/>
 			<spinner label="E" name="Path Limit End"/>
@@ -340,8 +340,8 @@
 				回転体
 			</text>
 			<texture_picker label="スカルプトテクスチャー" name="sculpt texture control" tool_tip="クリックして写真を選択してください。"/>
-			<check_box label="ミラー" name="sculpt mirror control" tool_tip="スカルプトプリムを X 軸上で反転させる"/>
-			<check_box label="裏返し" name="sculpt invert control" tool_tip="スカルプトプリムを反転させて裏返す"/>
+			<check_box label="ミラー" name="sculpt mirror control" tool_tip="スカルプトプリムを X 軸上で反転させます"/>
+			<check_box label="裏返し" name="sculpt invert control" tool_tip="スカルプトプリムを反転させて裏返します"/>
 			<text name="label sculpt type">
 				縫い目のタイプ
 			</text>
@@ -360,7 +360,7 @@
 			<text name="edit_object">
 				オブジェクトの特徴を編集:
 			</text>
-			<check_box label="フレキシブル・パス" name="Flexible1D Checkbox Ctrl" tool_tip="Z 軸を中心にオブジェクトの屈曲を有効にする(クライアント側のみ)"/>
+			<check_box label="フレキシブル・パス" name="Flexible1D Checkbox Ctrl" tool_tip="Z 軸を中心にオブジェクトの屈曲を有効にします(クライアント側のみ)"/>
 			<spinner label="柔軟性" label_width="72" name="FlexNumSections" width="135"/>
 			<spinner label="重力" label_width="72" name="FlexGravity" width="135"/>
 			<spinner label="ドラッグ" label_width="72" name="FlexFriction" width="135"/>
@@ -369,9 +369,9 @@
 			<spinner label="X軸方向の力" label_width="72" name="FlexForceX" width="135"/>
 			<spinner label="Y軸方向の力" label_width="72" name="FlexForceY" width="135"/>
 			<spinner label="Z軸方向の力" label_width="72" name="FlexForceZ" width="135"/>
-			<check_box label="光" name="Light Checkbox Ctrl" tool_tip="オブジェクトが発光"/>
+			<check_box label="光" name="Light Checkbox Ctrl" tool_tip="オブジェクトが発光します"/>
 			<color_swatch label="" left_delta="74" name="colorswatch" tool_tip="クリックしてカラーピッカーを開きます"/>
-			<texture_picker label="" name="light texture control" tool_tip="クリックで投影画を選択(遅延レンダリング有効時のみ)"/>
+			<texture_picker label="" name="light texture control" tool_tip="クリックで投影画を選択します(遅延レンダリング有効時のみ)"/>
 			<spinner label="輝度" label_width="72" name="Light Intensity" width="135"/>
 			<spinner label="FOV" name="Light FOV"/>
 			<spinner label="半径" label_width="72" name="Light Radius" width="135"/>
@@ -381,7 +381,7 @@
 		</panel>
 		<panel label="材質" name="Texture">
 			<panel.string name="string repeats per meter">
-				メートルごとに繰返す
+				メートルごとに繰り返す
 			</panel.string>
 			<panel.string name="string repeats per face">
 				面ごとに繰り返す
@@ -453,10 +453,10 @@
 				<text name="media_tex">
 					メディア
 				</text>
-				<button name="add_media" tool_tip="メディアを追加"/>
-				<button name="delete_media" tool_tip="このメディアテクスチャを削除"/>
-				<button name="edit_media" tool_tip="このメディアを編集"/>
-				<button label="揃える" label_selected="メディアを一列に揃える" name="button align" tool_tip="メディアテクスチャを一列に揃える(最初に読み込む必要があります)"/>
+				<button name="add_media" tool_tip="メディアを追加します"/>
+				<button name="delete_media" tool_tip="このメディアテクスチャを削除します"/>
+				<button name="edit_media" tool_tip="このメディアを編集します"/>
+				<button label="揃える" label_selected="メディアを一列に揃える" name="button align" tool_tip="メディアテクスチャを一列に揃えます(最初に読み込む必要があります)"/>
 			</panel>
 		</panel>
 		<panel label="中身" name="Contents">
@@ -475,7 +475,7 @@
 			面積: [AREA] 平方メートル
 		</text>
 		<button label="土地情報" label_selected="土地情報" name="button about land"/>
-		<check_box label="オーナーを表示" name="checkbox show owners" tool_tip="所有者の種類別に区画を色づけ:   緑 = あなたの土地  アクア = あなたのグループ所有地  赤 = 他人が所有する土地  黄色 = 売り出し中  紫 = オークション  グレー = パブリック"/>
+		<check_box label="所有者を表示" name="checkbox show owners" tool_tip="所有者の種類別に区画を色づけます:   緑 = あなたの土地  アクア = あなたのグループ所有地  赤 = 他人が所有する土地  黄色 = 売り出し中  紫 = オークション  グレー = パブリック"/>
 		<text name="label_parcel_modify">
 			区画の編集
 		</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_url_entry.xml b/indra/newview/skins/default/xui/ja/floater_url_entry.xml
index 9d3ca20c7c1d08a72d5e356bb7cb9b73a176fbf9..8e09e4748ad1a59619dd527000dbaaff51884180 100644
--- a/indra/newview/skins/default/xui/ja/floater_url_entry.xml
+++ b/indra/newview/skins/default/xui/ja/floater_url_entry.xml
@@ -3,11 +3,11 @@
 	<text name="media_label">
 		メディア URL:
 	</text>
-	<combo_box left="100" name="media_entry" width="360" />
-	<button label="OK" name="ok_btn" width="78"/>
+	<combo_box name="media_entry"/>
+	<button label="OK" name="ok_btn" width="38"/>
 	<button label="キャンセル" name="cancel_btn" width="80"/>
-	<button label="クリア" name="clear_btn" />
-	<text name="loading_label">
+	<button label="クリア" name="clear_btn" left_pad="76"/>
+	<text name="loading_label" left="140">
 		ロード中...
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_window_size.xml b/indra/newview/skins/default/xui/ja/floater_window_size.xml
index a31336c0f8f8587a0f09753d6a3def3ac0ac455f..152a5f48068285580979d48c108ddee68d8f22bc 100644
--- a/indra/newview/skins/default/xui/ja/floater_window_size.xml
+++ b/indra/newview/skins/default/xui/ja/floater_window_size.xml
@@ -4,7 +4,7 @@
 		[RES_X] x [RES_Y]
 	</string>
 	<text name="windowsize_text">
-		ウィンドウのサイズの設定:
+		ウィンドウのサイズを設定:
 	</text>
 	<combo_box name="window_size_combo" tool_tip="横幅 x 高さ">
 		<combo_box.item label="1000 x 700 (標準)" name="item0"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_world_map.xml b/indra/newview/skins/default/xui/ja/floater_world_map.xml
index a0f2d98adf9448cc9f285906c0ea33cadf8e8828..af9c05de91b7b630e489570e5a4094c7cae8fdbb 100644
--- a/indra/newview/skins/default/xui/ja/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/ja/floater_world_map.xml
@@ -2,13 +2,13 @@
 <floater name="worldmap" title="世界地図">
 	<panel name="layout_panel_1">
 		<text name="events_label">
-			レジェンド
+			表記・記号
 		</text>
 	</panel>
 	<panel>
-		<button label="現在地を表示" label_selected="現在地を表示" name="Show My Location" tool_tip="マップを中央に表示する"/>
+		<button label="現在地を表示" label_selected="現在地を表示" name="Show My Location" tool_tip="アバターの位置を地図の中心に表示します"/>
 		<text name="me_label">
-			ミー
+			自分
 		</text>
 		<check_box label="住人" name="people_chk"/>
 		<text name="person_label">
@@ -23,12 +23,12 @@
 			土地販売
 		</text>
 		<text name="by_owner_label">
-			by owner
+			所有者の販売
 		</text>
 		<text name="auction_label">
 			土地オークション
 		</text>
-		<button label="ホームへ" label_selected="ホームへ" name="Go Home" tool_tip="「ホーム」にテレポート"/>
+		<button label="ホームへ" label_selected="ホームへ" name="Go Home" tool_tip="「ホーム」にテレポートします"/>
 		<text name="Home_label">
 			ホーム
 		</text>
@@ -50,14 +50,14 @@
 	</panel>
 	<panel>
 		<text name="find_on_map_label">
-			地図で探す
+			地図上で探す
 		</text>
 	</panel>
 	<panel>
-		<combo_box label="オンラインのフレンド" name="friend combo" tool_tip="フレンドを地図に表示">
+		<combo_box label="オンラインのフレンド" name="friend combo" tool_tip="フレンドを地図上に表示します">
 			<combo_box.item label="オンラインのフレンド" name="item1"/>
 		</combo_box>
-		<combo_box label="マイ ランドマーク" name="landmark combo" tool_tip="地図に表示するランドマーク">
+		<combo_box label="マイ ランドマーク" name="landmark combo" tool_tip="地図上に表示するランドマーク">
 			<combo_box.item label="マイ ランドマーク" name="item1"/>
 		</combo_box>
 		<search_editor label="リージョン名" name="location" tool_tip="地域名を入力してください。"/>
@@ -66,9 +66,9 @@
 			<scroll_list.columns label="" name="icon"/>
 			<scroll_list.columns label="" name="sim_name"/>
 		</scroll_list>
-		<button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="選択されたロケーションにテレポート"/>
-		<button label="SLurl をコピー" name="copy_slurl" tool_tip="現在地を SLurl としてコピーして、Webで使用します。"/>
-		<button label="選択したリージョンを表示する" label_selected="目的地を表示" name="Show Destination" tool_tip="選択したロケーションを地図の中心にする"/>
+		<button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="選択した場所にレポートします"/>
+		<button label="SLurl をコピー" name="copy_slurl" tool_tip="現在地を SLurl でコピーして、Webで使用します。"/>
+		<button label="選択したリージョンを表示する" label_selected="目的地を表示" name="Show Destination" tool_tip="選択した場所を地図の中心に表示します"/>
 	</panel>
 	<panel>
 		<text name="zoom_label">
diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml
index 1bfadf8d45b3ba110de4779aee9921001cce79c4..9d5ce3dadae6783d3d8bd98dbcd5e18d27f66571 100644
--- a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml
@@ -23,5 +23,5 @@
 	<menu_item_call label="容姿" name="Appearance..."/>
 	<menu_item_call label="フレンド" name="Friends..."/>
 	<menu_item_call label="グループ" name="Groups..."/>
-	<menu_item_call label="マイ プロフィール" name="Profile..."/>
+	<menu_item_call label="プロフィール" name="Profile..."/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml
index 76c01d6109156ab5cd9789ad2d9a9c15114fc1f1..d02701b40044c7c4d4b033e561327979426a5934 100644
--- a/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <menu name="Gear Menu">
 	<menu_item_call label="立ち上がる" name="stand_up"/>
-	<menu_item_call label="マイ 容姿" name="my_appearance"/>
+	<menu_item_call label="容姿" name="my_appearance"/>
 	<menu_item_call label="プロフィール" name="my_profile"/>
 	<menu_item_call label="フレンド" name="my_friends"/>
 	<menu_item_call label="グループ" name="my_groups"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml
index 78c0dd0a78cc87772e0fac498053374a9e0279a3..3d661f96e0d6116fdc8f325960046f96ac90ad22 100644
--- a/indra/newview/skins/default/xui/ja/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml
@@ -62,13 +62,13 @@
 	<menu_item_call label="リンクを外す" name="Remove Link"/>
 	<menu_item_call label="削除" name="Delete"/>
 	<menu_item_call label="システムフォルダを削除する" name="Delete System Folder"/>
-	<menu_item_call label="会議チャット開始" name="Conference Chat Folder"/>
+	<menu_item_call label="コンファレンスチャットを開始" name="Conference Chat Folder"/>
 	<menu_item_call label="再生" name="Sound Play"/>
 	<menu_item_call label="ランドマークの情報" name="About Landmark"/>
-	<menu_item_call label="世界で再生" name="Animation Play"/>
-	<menu_item_call label="ローカルに再生" name="Animation Audition"/>
-	<menu_item_call label="インスタント・メッセージを送信" name="Send Instant Message"/>
-	<menu_item_call label="テレポートを贈る..." name="Offer Teleport..."/>
+	<menu_item_call label="ワールド再生" name="Animation Play"/>
+	<menu_item_call label="ローカル再生" name="Animation Audition"/>
+	<menu_item_call label="インスタントメッセージを送信" name="Send Instant Message"/>
+	<menu_item_call label="テレポートを送る..." name="Offer Teleport..."/>
 	<menu_item_call label="会議チャット開始" name="Conference Chat"/>
 	<menu_item_call label="アクティブ" name="Activate"/>
 	<menu_item_call label="非アクティブ" name="Deactivate"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml
index 42a95ac3d3f177818673964ac41e7e35c3449416..d6f13f0e5959ca5ce9ccf9e7075fd86d6ab94b59 100644
--- a/indra/newview/skins/default/xui/ja/menu_login.xml
+++ b/indra/newview/skins/default/xui/ja/menu_login.xml
@@ -24,7 +24,7 @@
 		<menu_item_call label="UI/色の設定" name="UI/Color Settings"/>
 		<menu_item_call label="XUI プレビューツール" name="UI Preview Tool"/>
 		<menu label="UI テスト" name="UI Tests"/>
-		<menu_item_call label="ウィンドウのサイズの設定..." name="Set Window Size..."/>
+		<menu_item_call label="ウィンドウのサイズを設定..." name="Set Window Size..."/>
 		<menu_item_call label="利用規約を表示" name="TOS"/>
 		<menu_item_call label="クリティカルメッセージを表示" name="Critical"/>
 		<menu_item_call label="Web ブラウザのテスト" name="Web Browser Test"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_object.xml b/indra/newview/skins/default/xui/ja/menu_object.xml
index a161c015145dcdb7d437eb769bf3bd01b717a077..d218b48c9862347e8550d8d2ec77566a67514b8a 100644
--- a/indra/newview/skins/default/xui/ja/menu_object.xml
+++ b/indra/newview/skins/default/xui/ja/menu_object.xml
@@ -9,8 +9,8 @@
 	<menu_item_call label="ズームイン" name="Zoom In"/>
 	<context_menu label="装着 &gt;" name="Put On">
 		<menu_item_call label="装着" name="Wear"/>
-		<context_menu label="取り付け &gt;" name="Object Attach"/>
-		<context_menu label="HUD を取り付け &gt;" name="Object Attach HUD"/>
+		<context_menu label="取り付ける &gt;" name="Object Attach"/>
+		<context_menu label="HUD を取り付ける &gt;" name="Object Attach HUD"/>
 	</context_menu>
 	<context_menu label="削除 &gt;" name="Remove">
 		<menu_item_call label="取る" name="Pie Object Take"/>
diff --git a/indra/newview/skins/default/xui/ja/menu_people_groups.xml b/indra/newview/skins/default/xui/ja/menu_people_groups.xml
index 4e5dc60a3dc5a9564b2c07f4e8ae3fbe4c661561..842d79dc4be740ae9d793af4da67d0c3a1ff8217 100644
--- a/indra/newview/skins/default/xui/ja/menu_people_groups.xml
+++ b/indra/newview/skins/default/xui/ja/menu_people_groups.xml
@@ -3,6 +3,6 @@
 	<menu_item_call label="情報を表示" name="View Info"/>
 	<menu_item_call label="チャット" name="Chat"/>
 	<menu_item_call label="コール" name="Call"/>
-	<menu_item_call label="有効化" name="Activate"/>
+	<menu_item_call label="アクティブ" name="Activate"/>
 	<menu_item_call label="脱退" name="Leave"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_slurl.xml b/indra/newview/skins/default/xui/ja/menu_slurl.xml
index 2e06c5349417a5a0c38f7b5ce2e517bac5f098f9..eb24cee7e00a897ffcd9ff98d844f6c31a7a3932 100644
--- a/indra/newview/skins/default/xui/ja/menu_slurl.xml
+++ b/indra/newview/skins/default/xui/ja/menu_slurl.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="Popup">
 	<menu_item_call label="URLについて" name="about_url"/>
-	<menu_item_call label="URLへテレポートする" name="teleport_to_url"/>
+	<menu_item_call label="URLにテレポートする" name="teleport_to_url"/>
 	<menu_item_call label="地図" name="show_on_map"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml
index db8583ca15d8ed7c573a4fbb833077320a48e2b9..c5d5914f3fce104145f0021461bb5e3cb9c3fe29 100644
--- a/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -49,12 +49,12 @@
 			<menu_item_call label="日没" name="Sunset"/>
 			<menu_item_call label="深夜" name="Midnight"/>
 			<menu_item_call label="エステートタイム" name="Revert to Region Default"/>
-			<menu_item_call label="環境編集" name="Environment Editor"/>
+			<menu_item_call label="自然環境エディター" name="Environment Editor"/>
 		</menu>
 	</menu>
 	<menu label="制作" name="BuildTools">
 		<menu_item_check label="制作" name="Show Build Tools"/>
-		<menu label="制作ツールを選択" name="Select Tool">
+		<menu label="制作ツールを選択する" name="Select Tool">
 			<menu_item_call label="フォーカスツール" name="Focus"/>
 			<menu_item_call label="移動ツール" name="Move"/>
 			<menu_item_call label="編集ツール" name="Edit"/>
@@ -77,9 +77,9 @@
 		<menu_item_call label="選択したものに焦点を合わせる" name="Focus on Selection"/>
 		<menu_item_call label="選択したものをズームする" name="Zoom to Selection"/>
 		<menu label="オブジェクト" name="Object">
-			<menu_item_call label="買う" name="Menu Object Take"/>
+			<menu_item_call label="取る" name="Menu Object Take"/>
 			<menu_item_call label="コピーを取る" name="Take Copy"/>
-			<menu_item_call label="「マイ 持ち物」に保存" name="Save Object Back to My Inventory"/>
+			<menu_item_call label="「持ち物」に保存" name="Save Object Back to My Inventory"/>
 			<menu_item_call label="オブジェクトの中身に保存" name="Save Object Back to Object Contents"/>
 		</menu>
 		<menu label="スクリプト" name="Scripts">
@@ -119,8 +119,8 @@
 	</menu>
 	<menu label="ヘルプ" name="Help">
 		<menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
-		<menu_item_call label="嫌がらせを報告" name="Report Abuse"/>
-		<menu_item_call label="バグ報告" name="Report Bug"/>
+		<menu_item_call label="嫌がらせを報告する" name="Report Abuse"/>
+		<menu_item_call label="バグを報告する" name="Report Bug"/>
 		<menu_item_call label="[APP_NAME] について" name="About Second Life"/>
 	</menu>
 	<menu label="アドバンス" name="Advanced">
diff --git a/indra/newview/skins/default/xui/ja/mime_types.xml b/indra/newview/skins/default/xui/ja/mime_types.xml
index 2f945b2010b9194eaf9c9162680f38e20b5a0abe..54663a0367a78978591d9bf8644c9346ba61c8e5 100644
--- a/indra/newview/skins/default/xui/ja/mime_types.xml
+++ b/indra/newview/skins/default/xui/ja/mime_types.xml
@@ -2,13 +2,13 @@
 <mimetypes name="default">
 	<widgetset name="web">
 		<label name="web_label">
-			ウェブ・コンテンツ
+			Webコンテンツ
 		</label>
 		<tooltip name="web_tooltip">
-			ここにウェブ・コンテンツがあります。
+			ここにWebコンテンツがあります。
 		</tooltip>
 		<playtip name="web_playtip">
-			ウェブ・コンテンツを表示
+			Webコンテンツを表示
 		</playtip>
 	</widgetset>
 	<widgetset name="movie">
@@ -119,7 +119,7 @@
 	</mimetype>
 	<mimetype name="application/xhtml+xml">
 		<label name="application/xhtml+xml_label">
-			ウェブ・ページ (XHTML)
+			Webページ (XHTML)
 		</label>
 	</mimetype>
 	<mimetype name="application/x-director">
@@ -184,7 +184,7 @@
 	</mimetype>
 	<mimetype menu="1" name="text/html">
 		<label name="text/html_label">
-			ウェブ・ページ
+			Webページ
 		</label>
 	</mimetype>
 	<mimetype menu="1" name="text/plain">
diff --git a/indra/newview/skins/default/xui/ja/panel_bottomtray.xml b/indra/newview/skins/default/xui/ja/panel_bottomtray.xml
index 414413a9805b16f30d7164b503b33e7ed8d85fff..81a852522b8cd35c847b03bc9465f171d50ff8eb 100644
--- a/indra/newview/skins/default/xui/ja/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/ja/panel_bottomtray.xml
@@ -17,11 +17,11 @@
 			<button label="視界" name="camera_btn" tool_tip="カメラコントロールの表示・非表示"/>
 		</layout_panel>
 		<layout_panel name="snapshot_panel">
-			<button label="" name="snapshots" tool_tip="スナップショットを撮る"/>
+			<button label="" name="snapshots" tool_tip="スナップショットを撮ります"/>
 		</layout_panel>
 		<layout_panel name="im_well_panel">
 			<chiclet_im_well name="im_well">
-				<button name="Unread IM messages" tool_tip="Conversations"/>
+				<button name="Unread IM messages" tool_tip="会話"/>
 			</chiclet_im_well>
 		</layout_panel>
 		<layout_panel name="notification_well_panel">
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml b/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml
index 7825d81c534708ad6b3d9f3982fe78f4daf1d8ed..f2e3e6e993583441b5ebe0522b2d19c56c826202 100644
--- a/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml
+++ b/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_alpha_panel">
 	<panel name="avatar_alpha_color_panel">
-		<texture_picker label="アルファ(下)" name="Lower Alpha" tool_tip="クリックして写真を選択します"/>
-		<texture_picker label="アルファ(上)" name="Upper Alpha" tool_tip="クリックして写真を選択します"/>
-		<texture_picker label="頭部のアルファ" name="Head Alpha" tool_tip="クリックして写真を選択します"/>
+		<texture_picker label="アルファ&#10;(下)" name="Lower Alpha" tool_tip="クリックして写真を選択します"/>
+		<texture_picker label="アルファ&#10;(上)" name="Upper Alpha" tool_tip="クリックして写真を選択します"/>
+		<texture_picker label="頭部のア&#10;ルファ" name="Head Alpha" tool_tip="クリックして写真を選択します"/>
 		<texture_picker label="目のアルファ" name="Eye Alpha" tool_tip="クリックして写真を選択します"/>
 		<texture_picker label="髪のアルファ" name="Hair Alpha" tool_tip="クリックして写真を選択します"/>
 	</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml
index 2a850ab29ca52474c79bb900fdcae070d2032699..d1a2b319346197fbbcb338b2ac2144da709965d5 100644
--- a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml
@@ -45,7 +45,7 @@
 				<text name="my_account_link" value="[[URL] マイアカウントに移動]"/>
 				<text name="acc_status_text" value="住人。 支払情報未登録。"/>
 				<text name="title_partner_text" value="マイパートナー:"/>
-				<text name="partner_edit_link" value="[[URL] 編集]"/>
+				<text name="partner_edit_link" value="[[URL] 編集]" width="100"/>
 				<panel name="partner_data_panel">
 					<name_box name="partner_text" value="[FIRST] [LAST]"/>
 				</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml
index d6aec87b459d483cc1ce467822b49a8ff2e6668c..78ddae47f9a3a0f2cb501d40356ffd1a439e29d0 100644
--- a/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/ja/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="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択"/>
-		<texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択"/>
-		<texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択"/>
+		<texture_picker label="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択" width="70"/>
+		<texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択" width="70"/>
+		<texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択" width="70"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_friends.xml b/indra/newview/skins/default/xui/ja/panel_friends.xml
index 80a68f8258b432ceed9a621f289266aaaec1db86..97e58ceaed7ddf6fde81ae971d92992643b888f2 100644
--- a/indra/newview/skins/default/xui/ja/panel_friends.xml
+++ b/indra/newview/skins/default/xui/ja/panel_friends.xml
@@ -4,7 +4,7 @@
 		複数のフレンド
 	</string>
 	<scroll_list name="friend_list" tool_tip="複数のフレンドを選択するには、ShiftキーまたはCtrlキーを押しながら名前をクリックします。">
-		<column name="icon_online_status" tool_tip="オンライン・ステータス"/>
+		<column name="icon_online_status" tool_tip="オンライン状況"/>
 		<column label="名前" name="friend_name" tool_tip="名前"/>
 		<column name="icon_visible_online" tool_tip="フレンドは、あなたがオンラインかどうか確認することができます。"/>
 		<column name="icon_visible_map" tool_tip="フレンドは、地図であなたの居場所を見つけることができます。"/>
@@ -15,18 +15,18 @@
 		<text name="friend_name_label" right="-10">
 			フレンドを選択して権利を変更...
 		</text>
-		<check_box label="オンライン・ステータスの確認を許可する" name="online_status_cb" tool_tip="コーリングカードあるいはフレンドリストでこのフレンドがオンライン状態を確認できるよう設定"/>
-		<check_box label="世界地図上であなたの居場所を検索可能にする" name="map_status_cb" tool_tip="このフレンドが地図で私の位置を発見できるように設定"/>
-		<check_box label="オブジェクトの修正を許可する" name="modify_status_cb" tool_tip="このフレンドがオブジェクトを改造できる許可を与える"/>
+		<check_box label="オンライン状況の確認を許可する" name="online_status_cb" tool_tip="コーリングカードあるいはフレンドリストでこのフレンドがオンライン状況を確認できるよう設定します"/>
+		<check_box label="世界地図上であなたの居場所を検索可能にする" name="map_status_cb" tool_tip="このフレンドが地図で私の位置を発見できるように設定します"/>
+		<check_box label="オブジェクトの修正を許可する" name="modify_status_cb" tool_tip="このフレンドに私のオブジェクトを改造する許可を与えます"/>
 		<text name="process_rights_label">
 			権利変更をプロセス中...
 		</text>
 	</panel>
 	<pad left="-95"/>
-	<button label="IM/コール" name="im_btn" tool_tip="インスタントメッセージ・セッションを開く" width="90"/>
+	<button label="IM・コール" name="im_btn" tool_tip="インスタントメッセージ・セッションを開きます。" width="90"/>
 	<button label="プロフィール" name="profile_btn" tool_tip="写真、グループ、およびその他の情報を表示します。" width="90"/>
-	<button label="テレポート" name="offer_teleport_btn" tool_tip="このフレンドに、あなたの現在のロケーションまでのテレポートを申し出ます。" width="90"/>
-	<button label="支払う" name="pay_btn" tool_tip="リンデンドル (L$) をこのフレンドにあげる" width="90"/>
+	<button label="テレポート" name="offer_teleport_btn" tool_tip="このフレンドに、あなたの現在地へのテレポートを申し出ます。" width="90"/>
+	<button label="支払う" name="pay_btn" tool_tip="リンデンドル (L$) をこのフレンドにあげます。" width="90"/>
 	<button label="削除" name="remove_btn" tool_tip="この人物をフレンドリストから外します。" width="90"/>
-	<button label="追加" name="add_btn" tool_tip="フレンド登録を申し出る" width="90"/>
+	<button label="追加" name="add_btn" tool_tip="フレンド登録を申し出ます。" width="90"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml
index 1c89675c1ed57ae5c980136026a5734019576692..f7f575206abffaaf18d05558e0c81fb2a2d42e13 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml
@@ -5,7 +5,7 @@
 			<button label="グループ情報" name="group_info_btn"/>
 		</layout_panel>
 		<layout_panel name="call_btn_panel">
-			<button label="グループにコール" name="call_btn"/>
+			<button label="グループコール" name="call_btn"/>
 		</layout_panel>
 		<layout_panel name="end_call_btn_panel">
 			<button label="コール終了" name="end_call_btn"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_general.xml b/indra/newview/skins/default/xui/ja/panel_group_general.xml
index 538f3800bd621f19a1730b84443cbcba3ed9d11b..247294c15829a534abaef6e2e3cef7923087a790 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_general.xml
@@ -9,7 +9,7 @@
 		一般的なグループ情報が変更されました。
 	</panel.string>
 	<panel.string name="incomplete_member_data_str">
-		メンバー・データを検索
+		メンバーのデータを検索
 	</panel.string>
 	<text_editor name="charter">
 		グループの理念、指針を記入してください
diff --git a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml
index 0af1ce2ef23996c123432d70a44316eb54cab591..252220b64d995e65e91182a6b244facec7743c20 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml
@@ -31,7 +31,7 @@
 	</accordion>
 	<panel name="button_row">
 		<button label="作成" label_selected="新しいグループ" name="btn_create"/>
-		<button label="グループチャット" name="btn_chat"/>
+		<button label="グループチャット" name="btn_chat" width="100"/>
 		<button label="グループコール" name="btn_call"/>
 		<button label="保存" label_selected="保存" name="btn_apply"/>
 	</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_group_invite.xml b/indra/newview/skins/default/xui/ja/panel_group_invite.xml
index dc5835913306bb8577264e1301f6fc65bbc24802..a21b340fdd89f5294801c7020c55b65c780bc1c4 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_invite.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="メンバーを招待" name="invite_panel">
 	<panel.string name="confirm_invite_owner_str">
-		本当に新しい所有者を招待しますか?この操作は取り消しできません。
+		本当に新しい所有者を招待しますか?この操作は取り消しできません。
 	</panel.string>
 	<panel.string name="loading">
 		(ローディング...)
diff --git a/indra/newview/skins/default/xui/ja/panel_group_land_money.xml b/indra/newview/skins/default/xui/ja/panel_group_land_money.xml
index cfbc51a44e42d6d22aca8ded1e83d97852c14c24..0f014bcd2f08d2d0af8e62c708e0b0908d4f4472 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_land_money.xml
@@ -18,12 +18,12 @@
 	</text>
 	<scroll_list name="group_parcel_list">
 		<column label="区画" name="name"/>
-		<column label="地域(リージョン)" name="location"/>
+		<column label="地域" name="location"/>
 		<column label="種類" name="type"/>
 		<column label="面積" name="area"/>
 		<column label="" name="hidden"/>
 	</scroll_list>
-	<button label="地図" label_selected="地図" name="map_button"/>
+	<button label="地図" label_selected="地図" name="map_button" width="60"/>
 	<text name="total_contributed_land_label">
 		寄付合計:
 	</text>
@@ -48,10 +48,10 @@
 	<string name="land_contrib_error">
 		土地の貢献を設定することができません
 	</string>
-	<text name="your_contribution_units">
+	<text name="your_contribution_units" width="80">
 		平方メートル
 	</text>
-	<text name="your_contribution_max_value">
+	<text name="your_contribution_max_value" width="100">
 		(最大 [AMOUNT])
 	</text>
 	<text name="group_over_limit_text">
diff --git a/indra/newview/skins/default/xui/ja/panel_group_notices.xml b/indra/newview/skins/default/xui/ja/panel_group_notices.xml
index c5168c4d7ccf874e3e0efecb9f876e75dc11ad1d..e33d3d854e72a33b8257a7cd63fdcf6e7a81d604 100644
--- a/indra/newview/skins/default/xui/ja/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/ja/panel_group_notices.xml
@@ -21,8 +21,8 @@
 	<text name="notice_list_none_found">
 		見つかりませんでした
 	</text>
-	<button label="新しい通知を作成" label_selected="新しい通知を作成" name="create_new_notice" tool_tip="新しい通知を作成"/>
-	<button label="更新" label_selected="リスト更新" name="refresh_notices" tool_tip="通知リストを更新"/>
+	<button label="新しい通知を作成" label_selected="新しい通知を作成" name="create_new_notice" tool_tip="新しい通知を作成します"/>
+	<button label="更新" label_selected="リスト更新" name="refresh_notices" tool_tip="通知リストを更新します"/>
 	<panel label="新しい通知を作成" name="panel_create_new_notice">
 		<text name="lbl">
 			通知を作成
@@ -31,7 +31,7 @@
 			件名:
 		</text>
 		<text name="lbl4">
-			メッセージ:
+			内容:
 		</text>
 		<text name="lbl5">
 			添付:
@@ -54,7 +54,7 @@
 			件名:
 		</text>
 		<text name="lbl4">
-			メッセージ:
+			内容:
 		</text>
 		<button label="添付アイテムを開く" label_selected="添付物を開く" name="open_attachment"/>
 	</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_groups.xml b/indra/newview/skins/default/xui/ja/panel_groups.xml
index 785fd868abd9d5af6f038ee2049e7e9f8eb4ceac..de81a6431ab4fae0af1c134d70627d4be106a44e 100644
--- a/indra/newview/skins/default/xui/ja/panel_groups.xml
+++ b/indra/newview/skins/default/xui/ja/panel_groups.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel name="groups">
 	<text name="groupdesc">
-		アクティブなグループ名は太字で表示されています
+		アクティブなグループは太字で表示されています
 	</text>
-	<text name="groupcount">
-		あなたは[COUNT] グループに所属しています (最大[MAX])
+	<text name="groupcount" width="270">
+		[COUNT] のグループに所属しています (最大[MAX])
 	</text>
-	<button label="IM/コール" name="IM"
+	<button label="IM・コール" name="IM"
 	     tool_tip="インスタントメッセージ・セッションを開く" />
 	<button label="情報" name="Info" />
 	<button label="アクティブ" name="Activate" />
diff --git a/indra/newview/skins/default/xui/ja/panel_landmark_info.xml b/indra/newview/skins/default/xui/ja/panel_landmark_info.xml
index 9129c66a45b8bc5be419695ac24ae36347e8d526..87477c26510248b3ec4afab8a6beca97349e0388 100644
--- a/indra/newview/skins/default/xui/ja/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/ja/panel_landmark_info.xml
@@ -36,7 +36,7 @@
 			</panel>
 			<panel name="landmark_edit_panel">
 				<text name="title_label" value="タイトル:"/>
-				<text name="notes_label" value="個人的メモ:"/>
+				<text name="notes_label" value="メモ:"/>
 				<text name="folder_label" value="ランドマークの位置:"/>
 			</panel>
 		</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_landmarks.xml b/indra/newview/skins/default/xui/ja/panel_landmarks.xml
index 45767e8c50d37c5759e1247660f871c0773d6d16..151fbf33f2086a946ca90e3c344ed520cea3ee2e 100644
--- a/indra/newview/skins/default/xui/ja/panel_landmarks.xml
+++ b/indra/newview/skins/default/xui/ja/panel_landmarks.xml
@@ -7,8 +7,8 @@
 		<accordion_tab name="tab_library" title="ライブラリ"/>
 	</accordion>
 	<panel name="bottom_panel">
-		<button name="options_gear_btn" tool_tip="その他のオプションを表示"/>
-		<button name="add_btn" tool_tip="新しいランドマークを追加"/>
-		<dnd_button name="trash_btn" tool_tip="選択したランドマークを削除"/>
+		<button name="options_gear_btn" tool_tip="その他のオプションを表示します"/>
+		<button name="add_btn" tool_tip="新しいランドマークを追加します"/>
+		<dnd_button name="trash_btn" tool_tip="選択したランドマークを削除します"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_login.xml b/indra/newview/skins/default/xui/ja/panel_login.xml
index 82c52abf3858cfbdafb140b128471681d63e385a..1d18a86b5341b66d4f36aac69da403bfd5410253 100644
--- a/indra/newview/skins/default/xui/ja/panel_login.xml
+++ b/indra/newview/skins/default/xui/ja/panel_login.xml
@@ -23,12 +23,12 @@
 			<text name="start_location_text">
 				開始地点:
 			</text>
-			<combo_box name="start_location_combo">
+			<combo_box name="start_location_combo" width="160">
 				<combo_box.item label="最後にログアウトした場所" name="MyLastLocation"/>
 				<combo_box.item label="ホーム" name="MyHome"/>
 				<combo_box.item label="<地域名を入力>" name="Typeregionname"/>
 			</combo_box>
-			<button label="ログイン" name="connect_btn"/>
+			<button label="ログイン" name="connect_btn" left_pad="30" width="60"/>
 		</layout_panel>
 		<layout_panel name="links">
 			<text name="create_new_account_text">
diff --git a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml
index d533ce5e0df40145a3771f5a1482c978033be7c9..36c7b75f97c20fb0a25551b08d53a8e6041279b9 100644
--- a/indra/newview/skins/default/xui/ja/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml
@@ -9,9 +9,9 @@
 		<inventory_panel label="最新" name="Recent Items"/>
 	</tab_container>
 	<panel name="bottom_panel">
-		<button name="options_gear_btn" tool_tip="その他のオプションを表示"/>
-		<button name="add_btn" tool_tip="新しいアイテムの追加"/>
-		<dnd_button name="trash_btn" tool_tip="選択したアイテムを削除"/>
+		<button name="options_gear_btn" tool_tip="その他のオプションを表示します"/>
+		<button name="add_btn" tool_tip="新しいアイテムを追加します"/>
+		<dnd_button name="trash_btn" tool_tip="選択したアイテムを削除します"/>
 	</panel>
 	<menu_bar name="Inventory Menu">
 		<menu label="ファイル" name="File">
@@ -32,7 +32,7 @@
 		<menu label="新規作成" name="Create">
 			<menu_item_call label="フォルダ" name="New Folder"/>
 			<menu_item_call label="スクリプト" name="New Script"/>
-			<menu_item_call label="新しいノートカード" name="New Note"/>
+			<menu_item_call label="ノートカード" name="New Note"/>
 			<menu_item_call label="ジェスチャー" name="New Gesture"/>
 			<menu label="衣類" name="New Clothes">
 				<menu_item_call label="シャツ" name="New Shirt"/>
@@ -40,7 +40,7 @@
 				<menu_item_call label="靴" name="New Shoes"/>
 				<menu_item_call label="靴下" name="New Socks"/>
 				<menu_item_call label="ジャケット" name="New Jacket"/>
-				<menu_item_call label="シャツ" name="New Skirt"/>
+				<menu_item_call label="スカート" name="New Skirt"/>
 				<menu_item_call label="手袋" name="New Gloves"/>
 				<menu_item_call label="下着(上)" name="New Undershirt"/>
 				<menu_item_call label="下着(下)" name="New Underpants"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml
index 74e414c38165e3c539b8c7e4e5e5d0a76aa12dcf..eba26bbe3d1af85f3661b55e725cb510ab47add7 100644
--- a/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml
@@ -20,7 +20,7 @@
 	<check_box initial_value="false" label="自動ズーム" name="auto_zoom"/>
 	<check_box initial_value="false" label="自動メディア再生" name="auto_play"/>
 	<text name="media_setting_note">
-		注: 住人はこの設定を無視できます
+		注意: 住人はこの設定を無視できます
 	</text>
 	<check_box initial_value="false" label="オブジェクトの表面のメディアの自動スケール" name="auto_scale"/>
 	<text name="size_label">
diff --git a/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml b/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml
index 7822123a30e4f3db6c8643df52e599fa6f112a92..6accbd485245d30635078507b77c762aa1174659 100644
--- a/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="セキュリティ" name="Media Settings Security">
-	<check_box initial_value="false" label="指定したURLパターンにのみアクセスを許可する" name="whitelist_enable"/>
+	<check_box initial_value="false" label="指定したURLパターンのみアクセスを許可する" name="whitelist_enable"/>
 	<text name="home_url_fails_some_items_in_whitelist">
 		ホームページに失敗したエントリーがマークされました:
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/panel_my_profile.xml b/indra/newview/skins/default/xui/ja/panel_my_profile.xml
index 4cce3798cff854f48b130bd1d64ef45d16823d73..e74a726d11761a6ead38be2381b26018bc2fc70b 100644
--- a/indra/newview/skins/default/xui/ja/panel_my_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_my_profile.xml
@@ -28,7 +28,7 @@
 						<icon label="" name="real_world_edit_icon" tool_tip="下の「プロフィールの編集」ボタンを押して画像を変更します"/>
 						<text name="title_rw_descr_text" value="現実世界:"/>
 					</panel>
-					<text name="title_member_text" value="住人となった日:"/>
+					<text name="title_member_text" value="メンバー登録:"/>
 					<text name="title_acc_status_text" value="アカウントの状態:"/>
 					<text name="acc_status_text">
 						住人。 支払情報未登録。
diff --git a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
index a154442095a4afe42eb55f171b444bca200e4b28..b271e868520b9463d9b1251b624500034bf6a0d7 100644
--- a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="navigation_bar">
 	<panel name="navigation_panel">
-		<button name="back_btn" tool_tip="前の場所"/>
-		<button name="forward_btn" tool_tip="次の場所"/>
+		<button name="back_btn" tool_tip="前の場所へ戻ります"/>
+		<button name="forward_btn" tool_tip="次の場所へ進みます"/>
 		<button name="home_btn" tool_tip="「ホーム」にテレポート"/>
 		<location_input label="場所" name="location_combo"/>
 		<search_combo_box label="検索" name="search_combo_box" tool_tip="検索">
diff --git a/indra/newview/skins/default/xui/ja/panel_notes.xml b/indra/newview/skins/default/xui/ja/panel_notes.xml
index 1948c54359ba033c96c698e8034ff663654287f5..6023bf125f3490aaec99994b94d4384b630c4870 100644
--- a/indra/newview/skins/default/xui/ja/panel_notes.xml
+++ b/indra/newview/skins/default/xui/ja/panel_notes.xml
@@ -15,9 +15,9 @@
 		<layout_panel name="notes_buttons_panel">
 			<button label="フレンド登録" name="add_friend" tool_tip="フレンド登録を申し出ます"/>
 			<button label="IM" name="im" tool_tip="インスタントメッセージを開きます"/>
-			<button label="コール" name="call" tool_tip="この住人にコールする"/>
-			<button label="地図" name="show_on_map_btn" tool_tip="住人を地図上で表示する"/>
-			<button label="テレポート" name="teleport" tool_tip="テレポートを送る"/>
+			<button label="コール" name="call" tool_tip="この住人にコールします"/>
+			<button label="地図" name="show_on_map_btn" tool_tip="住人を地図上で表示します"/>
+			<button label="テレポート" name="teleport" tool_tip="テレポートを送ります"/>
 		</layout_panel>
 	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml
index a109b1ab51461b1530ea6203dd7bdcaa63d740a7..7681ee461fbaaafeea02bc249019cb8d34bf41b4 100644
--- a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml
@@ -5,10 +5,10 @@
 		<inventory_panel label="着用中" name="cof_accordionpanel"/>
 	</tab_container>
 	<panel name="bottom_panel">
-		<button name="options_gear_btn" tool_tip="その他のオプションを表示"/>
-		<dnd_button name="trash_btn" tool_tip="選択したアイテムを削除"/>
-		<button label="アウトフィットを保存する" name="make_outfit_btn" tool_tip="容姿をアウトフィットに保存する"/>
-		<button label="装着" name="wear_btn" tool_tip="選択したアウトフィットを着用する"/>
+		<button name="options_gear_btn" tool_tip="その他のオプションを表示します"/>
+		<dnd_button name="trash_btn" tool_tip="選択したアイテムを削除します"/>
+		<button label="アウトフィットを保存する" name="make_outfit_btn" tool_tip="容姿をアウトフィットに保存します" width="140"/>
+		<button label="装着" name="wear_btn" tool_tip="選択したアウトフィットを着用します"/>
 		<button label="M" name="look_edit_btn"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml
index c955cf6e483acdfdb57f5162091076b367c7f624..0c3690a10ca8214ed7147086d855746de041ba7b 100644
--- a/indra/newview/skins/default/xui/ja/panel_people.xml
+++ b/indra/newview/skins/default/xui/ja/panel_people.xml
@@ -23,15 +23,15 @@
 			</accordion>
 			<panel label="bottom_panel" name="bottom_panel">
 				<button name="friends_viewsort_btn" tool_tip="オプション"/>
-				<button name="add_btn" tool_tip="フレンド登録を申し出る"/>
-				<button name="del_btn" tool_tip="選択した人をフレンドリストから削除"/>
+				<button name="add_btn" tool_tip="フレンド登録を申し出ます"/>
+				<button name="del_btn" tool_tip="選択した人をフレンドリストから削除します"/>
 			</panel>
 		</panel>
 		<panel label="グループ" name="groups_panel">
 			<panel label="bottom_panel" name="bottom_panel">
 				<button name="groups_viewsort_btn" tool_tip="オプション"/>
-				<button name="plus_btn" tool_tip="グループに参加 / 新規グループを作成"/>
-				<button name="activate_btn" tool_tip="選択したグループをアクティベート"/>
+				<button name="plus_btn" tool_tip="グループに参加 / 新規グループを作成します"/>
+				<button name="activate_btn" tool_tip="選択したグループをアクティブにします"/>
 			</panel>
 		</panel>
 		<panel label="最新" name="recent_panel">
@@ -42,13 +42,13 @@
 		</panel>
 	</tab_container>
 	<panel name="button_bar">
-		<button label="プロフィール" name="view_profile_btn" tool_tip="写真、グループ、その他住人情報を表示"/>
-		<button label="IM" name="im_btn" tool_tip="インスタントメッセージを開く"/>
-		<button label="コール" name="call_btn" tool_tip="この住人にコールする"/>
+		<button label="プロフィール" name="view_profile_btn" tool_tip="写真、グループ、その他住人情報を表示します"/>
+		<button label="IM" name="im_btn" tool_tip="インスタントメッセージを開きます"/>
+		<button label="コール" name="call_btn" tool_tip="この住人にコールします"/>
 		<button label="共有" name="share_btn"/>
-		<button label="テレポート" name="teleport_btn" tool_tip="テレポートを送る"/>
-		<button label="グループ情報" name="group_info_btn" tool_tip="グループ情報を表示"/>
-		<button label="グループチャット" name="chat_btn" tool_tip="チャットを開始"/>
-		<button label="グループにコールする" name="group_call_btn" tool_tip="このグループにコールする"/>
+		<button label="テレポート" name="teleport_btn" tool_tip="テレポートを送ります"/>
+		<button label="グループ情報" name="group_info_btn" tool_tip="グループ情報を表示します"/>
+		<button label="グループチャット" name="chat_btn" tool_tip="チャットを開始します"/>
+		<button label="グループコール" name="group_call_btn" tool_tip="このグループにコールします"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_picks.xml b/indra/newview/skins/default/xui/ja/panel_picks.xml
index f74bf7a073ceccee22f6627f3a5dfe68ae2d402d..4f58c032da3f0e4023a06ffce27de053da26f0f7 100644
--- a/indra/newview/skins/default/xui/ja/panel_picks.xml
+++ b/indra/newview/skins/default/xui/ja/panel_picks.xml
@@ -10,8 +10,8 @@
 		<button name="new_btn" tool_tip="現在地の新しいピック、またはクラシファイド広告を作成します"/>
 	</panel>
 	<panel name="buttons_cucks">
-		<button label="情報" name="info_btn" tool_tip="ピックの情報を表示"/>
-		<button label="テレポート" name="teleport_btn" tool_tip="該当するエリアにテレポート"/>
-		<button label="地図" name="show_on_map_btn" tool_tip="世界地図に該当するエリアを表示"/>
+		<button label="情報" name="info_btn" tool_tip="ピックの情報を表示します"/>
+		<button label="テレポート" name="teleport_btn" tool_tip="該当するエリアにテレポートします"/>
+		<button label="地図" name="show_on_map_btn" tool_tip="世界地図に該当するエリアを表示します"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_place_profile.xml b/indra/newview/skins/default/xui/ja/panel_place_profile.xml
index ef4b71c4aa5fc5b0b917bd7790eaa4ab24cde7b7..b9a07443726c9ed2bb1646e83fe348786d0ed651 100644
--- a/indra/newview/skins/default/xui/ja/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_place_profile.xml
@@ -86,9 +86,10 @@
 						<button label="土地情報" name="about_land_btn"/>
 					</panel>
 				</accordion_tab>
-				<accordion_tab name="region_information_tab" title="リージョン">
+				<accordion_tab name="region_information_tab" title="リージョン(地域)
+				">
 					<panel>
-						<text name="region_name_label" value="リージョン:"/>
+						<text name="region_name_label" value="地域:"/>
 						<text name="region_name" value="Mooseland"/>
 						<text name="region_type_label" value="種類:"/>
 						<text name="region_type" value="Moose"/>
@@ -105,7 +106,7 @@
 				</accordion_tab>
 				<accordion_tab name="estate_information_tab" title="エステート(不動産)">
 					<panel>
-						<text name="estate_name_label" value="エステート(不動産):"/>
+						<text name="estate_name_label" value="不動産:"/>
 						<text name="estate_rating_label" value="レーティング区分:"/>
 						<text name="estate_owner_label" value="所有者:"/>
 						<text name="covenant_label" value="約款:"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml
index 16af659326ecac9a06de06fdb6997062aa6129ea..f0780a6cf85d8dde2fabf67b48f23f8c66eb0820 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml
@@ -6,9 +6,9 @@
 	<check_box label="リンデンドルを使用・受け取るとき" name="notify_money_change_checkbox"/>
 	<check_box label="フレンドがログアウト・ログインするとき" name="friends_online_notify_checkbox"/>
 	<text name="show_label" width="300">
-		常に表示する通知:
+		常に表示するメッセージ:
 	</text>
 	<text name="dont_show_label">
-		表示しない通知:
+		表示しないメッセージ:
 	</text>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
index ece18a75ca167af5dc8a63e35b18b91a875bb8d2..73d08552736513c8c656427def99dd0a682cd255 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
@@ -7,27 +7,27 @@
 	</radio_group>
 	<color_swatch label="自分" name="user"/>
 	<text name="text_box1">
-		ミー
+		自分
 	</text>
 	<color_swatch label="その他" name="agent"/>
 	<text name="text_box2">
-		その他
+		他人
 	</text>
 	<color_swatch label="IM" name="im"/>
 	<text name="text_box3">
 		IM
 	</text>
-	<color_swatch label="システム" name="system"/>
+	<color_swatch label="システム" name="system"/>
 	<text name="text_box4">
-		システム
+		システム
 	</text>
 	<color_swatch label="エラー" name="script_error"/>
 	<text name="text_box5">
 		エラー
 	</text>
-	<color_swatch label="オブジェクト" name="objects"/>
+	<color_swatch label="オブジェクト" name="objects"/>
 	<text name="text_box6">
-		オブジェクト
+		オブジェクト
 	</text>
 	<color_swatch label="所有者" name="owner"/>
 	<text name="text_box7">
@@ -37,9 +37,9 @@
 	<text name="text_box9">
 		URL
 	</text>
-	<check_box initial_value="true" label="チャット中はタイピング動作のアニメーションを再生" name="play_typing_animation"/>
-	<check_box label="オフライン時に受け取った IM をメールで送信" name="send_im_to_email"/>
-	<check_box label="文字チャットの履歴を有効にする" name="plain_text_chat_history"/>
+	<check_box initial_value="true" label="チャット中にタイピング動作のアニメーションを再生" name="play_typing_animation"/>
+	<check_box label="オフライン時に受け取った IM をメールで受信" name="send_im_to_email"/>
+	<check_box label="チャット履歴に文字だけで表示する" name="plain_text_chat_history"/>
 	<radio_group name="chat_window" tool_tip="インスタントメッセージを別ウィンドウ、または1つのウィンドウに複数タブで表示(要再起動)">
 		<radio_item label="複数ウィンドウ" name="radio" value="0"/>
 		<radio_item label="1つのウィンドウ" name="radio2" value="1"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
index 765662b96a3e34dea68a69ebe55d01a0c3957f4d..f216c3acbcde097beae9eb08fb376df139daf27f 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
@@ -33,7 +33,7 @@
 	</text>
 	<combo_box name="start_location_combo">
 		<combo_box.item label="最後にログアウトした場所" name="MyLastLocation" tool_tip="常に最後にいた場所にログイン"/>
-		<combo_box.item label="自宅(ホーム)" name="MyHome" tool_tip="常に自宅(ホーム)にログイン"/>
+		<combo_box.item label="ホーム" name="MyHome" tool_tip="常にホーム(自宅)にログイン"/>
 	</combo_box>
 	<check_box initial_value="true" label="ログイン画面に表示する" name="show_location_checkbox"/>
 	<text name="name_tags_textbox">
@@ -48,7 +48,7 @@
 	<check_box initial_value="true" label="小さいアバター名" name="small_avatar_names_checkbox"/>
 	<check_box label="グループタイトルを表示" name="show_all_title_checkbox1"/>
 	<text name="effects_color_textbox">
-		私のビームの色:
+		ビームの色:
 	</text>
 	<text name="title_afk_text">
 		一時退席までの時間:
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
index 191748fe91e199ea0ed91d2d719f32f39e09519f..8df829c2961607b956bbf99f66d9da8d2e7ef8b3 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml
@@ -55,7 +55,7 @@
 		<text name="AvatarRenderingText">
 			アバター表示:
 		</text>
-		<check_box initial_value="true" label="アバターの精度を上げる" name="AvatarImpostors"/>
+		<check_box initial_value="true" label="アバターの描画を簡略化" name="AvatarImpostors"/>
 		<check_box initial_value="true" label="ハードウェアスキニング" name="AvatarVertexProgram"/>
 		<check_box initial_value="true" label="アバターの布" name="AvatarCloth"/>
 		<slider label="描画距離:" name="DrawDistance"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml
index 7a7cb8b96b6c5ca5ae0dc57a69929a8a5dcdeb8c..12e8b04f8497153631ecc94d80ebc1f6dbefcf89 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml
@@ -11,13 +11,13 @@
 	<check_box label="フレンドとグループ以外からはコールとIMを受信しない" name="voice_call_friends_only_check"/>
 	<check_box label="コールが終了したらマイクのスイッチを切る" name="auto_disengage_mic_check"/>
 	<check_box label="Cookieを受け入れる" name="cookies_enabled"/>
-	<check_box label="メディアが有効です" name="media_enabled"/>
+	<check_box label="メディアを有効にする" name="media_enabled"/>
 	<check_box label="メディアを自動再生する" name="autoplay_enabled"/>
 	<text name="Logs:">
 		ログ:
 	</text>
-	<check_box label="コンピューターに近くのチャットログを保存する" name="log_nearby_chat"/>
-	<check_box label="コンピューターに IM ログを保存する" name="log_instant_messages"/>
+	<check_box label="近くのチャットログをコンピューターに保存する" name="log_nearby_chat"/>
+	<check_box label="IM ログをコンピューターに保存する" name="log_instant_messages"/>
 	<check_box label="タイムスタンプを追加する" name="show_timestamps_check_im"/>
 	<text name="log_path_desc">
 		ログの保存場所:
diff --git a/indra/newview/skins/default/xui/ja/panel_profile.xml b/indra/newview/skins/default/xui/ja/panel_profile.xml
index 98969f5ab34a6ef5d76d27f885e93085dac690e7..8968b7c61e78f5c78043a389c1cf9704d36b34b2 100644
--- a/indra/newview/skins/default/xui/ja/panel_profile.xml
+++ b/indra/newview/skins/default/xui/ja/panel_profile.xml
@@ -26,7 +26,7 @@
 					<panel name="first_life_image_panel">
 						<text name="title_rw_descr_text" value="現実世界:"/>
 					</panel>
-					<text name="title_member_text" value="住人となった日:"/>
+					<text name="title_member_text" value="住人登録:"/>
 					<text name="title_acc_status_text" value="アカウントの状態:"/>
 					<text name="acc_status_text">
 						住人。 支払情報未登録。
@@ -40,9 +40,9 @@
 		<layout_panel name="profile_buttons_panel">
 			<button label="フレンド登録" name="add_friend" tool_tip="フレンド登録を申し出ます"/>
 			<button label="IM" name="im" tool_tip="インスタントメッセージを開きます"/>
-			<button label="コール" name="call" tool_tip="この住人にコールする"/>
-			<button label="地図" name="show_on_map_btn" tool_tip="住人を地図上で表示する"/>
-			<button label="テレポート" name="teleport" tool_tip="テレポートを送る"/>
+			<button label="コール" name="call" tool_tip="この住人にコールします"/>
+			<button label="地図" name="show_on_map_btn" tool_tip="住人を地図上で表示します"/>
+			<button label="テレポート" name="teleport" tool_tip="テレポートを送ります"/>
 		</layout_panel>
 		<layout_panel name="profile_me_buttons_panel">
 			<button label="プロフィールの編集" name="edit_profile_btn" tool_tip="個人的な情報を編集します"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_covenant.xml b/indra/newview/skins/default/xui/ja/panel_region_covenant.xml
index 5f43f931136b7e4e082161d72f8cacf69a465a12..9a517d79e9819c52220e0dd6c36b279072fcd46b 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_covenant.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="約款" name="Covenant">
-	<text font="SansSerifLarge" name="estate_section_lbl">
-		エステート(不動産)
+	<text font="SansSerifLarge" name="estate_section_lbl" width="200">
+		不動産
 	</text>
 	<text name="estate_name_lbl">
 		名前:
@@ -26,14 +26,14 @@
 		この不動産には約款がありません。
 	</text_editor>
 	<button label="リセット" name="reset_covenant"/>
-	<text name="covenant_help_text">
+	<text name="covenant_help_text" left="100">
 		約款の変更は不動産全区画に適用となります。
 	</text>
-	<text name="covenant_instructions">
+	<text name="covenant_instructions" width="390">
 		この不動産約款の変更をする際は、ノートカードをドラッグ&ドロップしてください。
 	</text>
-	<text bottom_delta="-34" font="SansSerifLarge" name="region_section_lbl">
-		リージョン(地域)
+	<text bottom_delta="-34" font="SansSerifLarge" name="region_section_lbl" width="200">
+		地域
 	</text>
 	<text name="region_name_lbl">
 		名前:
diff --git a/indra/newview/skins/default/xui/ja/panel_region_debug.xml b/indra/newview/skins/default/xui/ja/panel_region_debug.xml
index 4209fb17e5e7c2d3730432c55d4b1897ae4128ac..f6865c12b1406f6749ab2a1f3dffb21537dd3464 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_debug.xml
@@ -6,11 +6,11 @@
 	<text name="region_text">
 		未知
 	</text>
-	<check_box label="スクリプト無効化" name="disable_scripts_check" tool_tip="この地域のスクリプトをすべて無効化"/>
+	<check_box label="スクリプト無効化" name="disable_scripts_check" tool_tip="この地域のスクリプトをすべて無効にします"/>
 	<button label="?" name="disable_scripts_help"/>
-	<check_box label="衝突を無効化" name="disable_collisions_check" tool_tip="この地域の非アバター衝突を無効化"/>
+	<check_box label="衝突を無効化" name="disable_collisions_check" tool_tip="この地域の非アバター衝突を無効にします"/>
 	<button label="?" name="disable_collisions_help"/>
-	<check_box label="物理作用を無効化" name="disable_physics_check" tool_tip="この地域の物理作用をすべて無効化"/>
+	<check_box label="物理作用を無効化" name="disable_physics_check" tool_tip="この地域の物理作用をすべて無効にします"/>
 	<button label="?" name="disable_physics_help"/>
 	<button label="適用" name="apply_btn"/>
 	<text name="objret_text_lbl" width="120">
@@ -27,14 +27,14 @@
 		オプション:
 	</text>
 	<check_box label="スクリプト付きのもの" name="return_scripts" tool_tip="スクリプトのオブジェクトだけ返却します"/>
-	<check_box label="他人の土地にあるもの" name="return_other_land" tool_tip="他人に属する土地にあるオブジェクトのみを返却"/>
-	<check_box label="この不動産に属するすべてのリージョンのもの" name="return_estate_wide" tool_tip="この不動産に含まれているすべての地域のオブジェクトを返却"/>
+	<check_box label="他人の土地にあるもの" name="return_other_land" tool_tip="他人に属する土地にあるオブジェクトのみを返却します"/>
+	<check_box label="この不動産に属するすべてのリージョンのもの" name="return_estate_wide" tool_tip="この不動産に含まれているすべての地域のオブジェクトを返却します"/>
 	<button label="返却" name="return_btn"/>
 	<button label="上部コライダー取得" name="top_colliders_btn" tool_tip="衝突する可能性が最も高いオブジェクトのリスト"/>
 	<button label="?" name="top_colliders_help"/>
 	<button label="上部スクリプト取得" name="top_scripts_btn" tool_tip="スクリプトの実行に最も時間を費やしているオブジェクトのリスト"/>
 	<button label="?" name="top_scripts_help"/>
-	<button label="地域再起動" name="restart_btn" tool_tip="2分間のカウントダウン後、地域を再起動"/>
+	<button label="地域再起動" name="restart_btn" tool_tip="2分間のカウントダウン後、地域を再起動します"/>
 	<button label="?" name="restart_help"/>
-	<button label="再起動を遅延" name="cancel_restart_btn" tool_tip="地域の再起動を1時間遅延する"/>
+	<button label="再起動を遅延" name="cancel_restart_btn" tool_tip="地域の再起動を1時間遅延します"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_estate.xml b/indra/newview/skins/default/xui/ja/panel_region_estate.xml
index 976cfacb3f2e9c2273779fef50f2c3d127dcd5d6..fcc225c333eb524e7550959837e2a3cfd0680808 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_estate.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="不動産" name="Estate">
-	<text name="estate_help_text">
+	<text name="estate_help_text" width="400">
 		このタブの設定への変更は、エステート内のすべてのリージョンに影響されます。
 	</text>
 	<text name="estate_text">
@@ -40,7 +40,7 @@
 	<check_box label="太陽固定" name="fixed_sun_check"/>
 	<button label="?" name="fixed_sun_help"/>
 	<slider label="段階" name="sun_hour_slider"/>
-	<check_box label="パブリック・アクセスを許可" name="externally_visible_check"/>
+	<check_box label="パブリックアクセスを許可" name="externally_visible_check"/>
 	<button label="?" name="externally_visible_help"/>
 	<check_box label="直接テレポートを許可" name="allow_direct_teleport"/>
 	<button label="?" name="allow_direct_teleport_help"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_general.xml b/indra/newview/skins/default/xui/ja/panel_region_general.xml
index 00be5b6b032744e18fcae0ddf072a25ca6b445c8..168141ee7738908a6007644803d8c8bf18c584e4 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_general.xml
@@ -3,19 +3,19 @@
 	<text name="region_text_lbl">
 		地域:
 	</text>
-	<text left="90" name="region_text">
+	<text left_delta="70" name="region_text">
 		未知
 	</text>
 	<text name="version_channel_text_lbl" width="100">
 		バージョン:
 	</text>
-	<text left="90" name="version_channel_text">
+	<text left_delta="70" name="version_channel_text">
 		不明
 	</text>
 	<text name="region_type_lbl">
 		種類:
 	</text>
-	<text name="region_type">
+	<text name="region_type" left_delta="70">
 		不明
 	</text>
 	<check_box label="土地整備をブロック" name="block_terraform_check"/>
@@ -28,9 +28,9 @@
 	<button label="?" name="restrict_pushobject_help"/>
 	<check_box label="土地の再販を許可" name="allow_land_resell_check"/>
 	<button label="?" name="land_resell_help"/>
-	<check_box label="土地の統合/分割を許可" name="allow_parcel_changes_check"/>
+	<check_box label="土地の統合・分割を許可" name="allow_parcel_changes_check"/>
 	<button label="?" name="parcel_changes_help"/>
-	<check_box label="土地の検索表示をブロック" name="block_parcel_search_check" tool_tip="検索結果で、この地域と区画を人に見せる"/>
+	<check_box label="土地の検索表示をブロック" name="block_parcel_search_check" tool_tip="検索結果で、この地域と区画を表示するかどうかの設定です"/>
 	<button label="?" name="parcel_search_help"/>
 	<spinner label="アバター数上限" name="agent_limit_spin"/>
 	<button label="?" name="agent_limit_help"/>
@@ -40,14 +40,14 @@
 		区分:
 	</text>
 	<combo_box label="控えめ" name="access_combo">
-		<combo_box.item label="Adult" name="Adult"/>
+		<combo_box.item label="アダルト" name="Adult"/>
 		<combo_box.item label="控えめ" name="Mature"/>
 		<combo_box.item label="一般" name="PG"/>
 	</combo_box>
 	<button label="?" name="access_help"/>
 	<button label="適用" name="apply_btn"/>
-	<button label="ユーザー1人ホームテレポート" name="kick_btn"/>
-	<button label="ユーザー全員ホームテレポート" name="kick_all_btn"/>
-	<button label="メッセージを地域へ送信..." name="im_btn"/>
+	<button label="ユーザー1名をホームにテレポート" name="kick_btn"/>
+	<button label="ユーザー全員をホームにテレポート" name="kick_all_btn"/>
+	<button label="メッセージを地域に送信..." name="im_btn"/>
 	<button label="テレハブの管理..." name="manage_telehub_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml
index 9673953d0651029120edef68864235cceae77d47..df7e5d9129e980a68a867850f3f3593fb8a08262 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml
@@ -1,21 +1,21 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="リージョン(地域)" name="General">
 	<text name="region_text_lbl">
-		リージョン:
+		地域:
 	</text>
-	<text name="region_text">
+	<text name="region_text" left_delta="70">
 		不明
 	</text>
 	<text name="version_channel_text_lbl">
 		バージョン:
 	</text>
-	<text name="version_channel_text">
+	<text name="version_channel_text" left_delta="70">
 		不明
 	</text>
 	<text name="region_type_lbl">
 		種類:
 	</text>
-	<text name="region_type">
+	<text name="region_type" left_delta="70">
 		不明
 	</text>
 	<check_box label="地形編集をブロック" name="block_terraform_check"/>
@@ -24,9 +24,9 @@
 	<check_box label="プッシュを制限" name="restrict_pushobject"/>
 	<check_box label="土地の再販を許可" name="allow_land_resell_check"/>
 	<check_box label="土地の統合・分割を許可" name="allow_parcel_changes_check"/>
-	<check_box label="土地の検索教示をブロック" name="block_parcel_search_check" tool_tip="このリージョンとリージョン内の区画を検索結果に表示する"/>
-	<spinner label="アバター数上限" name="agent_limit_spin"/>
-	<spinner label="オブジェクトボーナス" name="object_bonus_spin"/>
+	<check_box label="土地の検索表示をブロック" name="block_parcel_search_check" tool_tip="検索結果で、この地域と区画を表示するかどうかの設定です"/>
+	<spinner label="アバター数上限" name="agent_limit_spin" label_width="110" width="190"/>
+	<spinner label="物体ボーナス" name="object_bonus_spin" label_width="110" width="190"/>
 	<text label="レーティング区分" name="access_text">
 		レーティング区分:
 	</text>
@@ -38,6 +38,6 @@
 	<button label="適用" name="apply_btn"/>
 	<button label="ユーザー1名をホームにテレポート..." name="kick_btn"/>
 	<button label="ユーザー全員をホームにテレポート..." name="kick_all_btn"/>
-	<button label="リージョンにメッセージを送信..." name="im_btn"/>
+	<button label="メッセージを地域に送信..." name="im_btn"/>
 	<button label="テレハブの管理..." name="manage_telehub_btn"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_region_texture.xml b/indra/newview/skins/default/xui/ja/panel_region_texture.xml
index ea784df127b8bb3d5c2cb34dd7e2e39ff0ec8164..17e3260460d6ab6850d0a15ccf3740f6ba435b58 100644
--- a/indra/newview/skins/default/xui/ja/panel_region_texture.xml
+++ b/indra/newview/skins/default/xui/ja/panel_region_texture.xml
@@ -48,7 +48,8 @@
 		数値は上のテクスチャのブレンド範囲を示します。
 	</text>
 	<text name="height_text_lbl11">
-		計測単位はメートルで、「低」の値は、1番のテクスチャの高さの「最大値」です。「高」の値は、4番のテクスチャの高さの「最低値」です。
+		計測単位はメートルで、「低」の値は、1番のテクスチャの高さの
+「最大値」です。「高」の値は、4番のテクスチャの高さの「最低値」です。
 	</text>
 	<text name="height_text_lbl12">
 		そして「高」の値はテクスチャー#4の高さの下限となります。
diff --git a/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml
index e8b5be63aee0ddff13d8eddca6bbf7b6c158b77b..1d81304860741eb67fe19c3ddb3b89a5e94a0532 100644
--- a/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml
@@ -4,7 +4,7 @@
 		ローディング...
 	</text>
 	<scroll_list name="scripts_list">
-		<scroll_list.columns label="サイズ (kb)" name="size"/>
+		<scroll_list.columns label="サイズ (kb)" name="size" width="90"/>
 		<scroll_list.columns label="URL" name="urls"/>
 		<scroll_list.columns label="オブジェクト名" name="name"/>
 		<scroll_list.columns label="場所" name="location"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml
index fe0b44d8f4cee9444949253f3f2cef824d025331..6a62af4ec604de18a156e4fd595418122002f42b 100644
--- a/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml
+++ b/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml
@@ -13,9 +13,9 @@
 		ローディング...
 	</text>
 	<scroll_list name="scripts_list">
-		<scroll_list.columns label="サイズ (kb)" name="size"/>
+		<scroll_list.columns label="サイズ (kb)" name="size" width="90"/>
 		<scroll_list.columns label="オブジェクト名" name="name"/>
-		<scroll_list.columns label="オブジェクトの所有者" name="owner"/>
+		<scroll_list.columns label="オブジェクトの所有者" name="owner" width="120"/>
 		<scroll_list.columns label="区画・位置" name="location"/>
 	</scroll_list>
 	<button label="リスト更新" name="refresh_list_btn"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_side_tray.xml b/indra/newview/skins/default/xui/ja/panel_side_tray.xml
index ce5f0b940c2384ecf97e823c69e7822a1aaea4bd..48636f1e3b9963969ba470500715481fdfb1e356 100644
--- a/indra/newview/skins/default/xui/ja/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/ja/panel_side_tray.xml
@@ -2,26 +2,26 @@
 <!-- Side tray cannot show background because it is always
 	partially on screen to hold tab buttons. -->
 <side_tray name="sidebar">
-	<sidetray_tab description="サイドバーを表示・非表示" name="sidebar_openclose"/>
-	<sidetray_tab description="ホーム。" name="sidebar_home">
+	<sidetray_tab description="サイドバーを表示・非表示" name="sidebar_openclose" tab_title="サイドバーを開く・閉じる"/>
+	<sidetray_tab description="ホーム。" name="sidebar_home" tab_title="ホーム">
 		<panel label="ホーム" name="panel_home"/>
 	</sidetray_tab>
-	<sidetray_tab description="あなたの公開プロフィールとピックを編集してください。" name="sidebar_me">
+	<sidetray_tab description="あなたの公開プロフィールとピックを編集してください。" name="sidebar_me" tab_title="マイ プロフィール">
 		<panel label="ミー" name="panel_me"/>
 	</sidetray_tab>
-	<sidetray_tab description="フレンド、連絡先、近くの人を探してください。" name="sidebar_people">
+	<sidetray_tab description="フレンド、連絡先、近くの人を探してください。" name="sidebar_people" tab_title="人">
 		<panel_container name="panel_container">
 			<panel label="グループ情報" name="panel_group_info_sidetray"/>
 			<panel label="ブロックされた住人とオブジェクト" name="panel_block_list_sidetray"/>
 		</panel_container>
 	</sidetray_tab>
-	<sidetray_tab description="行きたい場所、行ったことのある場所を探してください。" label="場所" name="sidebar_places">
+	<sidetray_tab description="行きたい場所、行ったことのある場所を探してください。" label="場所" name="sidebar_places" tab_title="場所">
 		<panel label="場所" name="panel_places"/>
 	</sidetray_tab>
-	<sidetray_tab description="あなたの持ち物を眺めてください。" name="sidebar_inventory">
+	<sidetray_tab description="あなたの持ち物を眺めてください。" name="sidebar_inventory" tab_title="マイ 持ち物">
 		<panel label="持ち物を編集" name="sidepanel_inventory"/>
 	</sidetray_tab>
-	<sidetray_tab description="あなたの容姿や現在の見た目を変更してください。" name="sidebar_appearance">
+	<sidetray_tab description="あなたの容姿や現在の見た目を変更してください。" name="sidebar_appearance" tab_title="マイ 容姿">
 		<panel label="容姿の編集" name="sidepanel_appearance"/>
 	</sidetray_tab>
 </side_tray>
diff --git a/indra/newview/skins/default/xui/ja/panel_status_bar.xml b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
index 063e5847626d5183ed9cf541c5a66162e9334eeb..8d375aa6cd01fe821fa4484f168b70650f7cf8a1 100644
--- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
@@ -21,7 +21,7 @@
 	<panel.string name="buycurrencylabel">
 		L$ [AMT]
 	</panel.string>
-	<button label="" label_selected="" name="buycurrency" tool_tip="私の残高"/>
+	<button label="" label_selected="" name="buycurrency" tool_tip="所持金"/>
 	<button label="L$ の購入" name="buyL" tool_tip="クリックして L$ を購入します"/>
 	<text name="TimeText" tool_tip="現在時刻(太平洋)">
 		12:00 AM
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 288ad4bc1d04848ff82289508714613e6dd97d83..de628943ad45ebdb70e9ccba70397155ba10323b 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -339,7 +339,7 @@
 		リンク
 	</string>
 	<string name="AvatarEditingAppearance">
-		(容姿の編集)
+		(容姿の編集中)
 	</string>
 	<string name="AvatarAway">
 		一時退席中
@@ -588,7 +588,7 @@
 		接続しました
 	</string>
 	<string name="unavailable">
-		あなたの現在のロケーションでは、ボイスを利用できません。
+		現在地では、ボイスを利用できません。
 	</string>
 	<string name="hang_up">
 		インワールドボイスチャットの通話が切断されました
@@ -642,7 +642,7 @@
 		控えめ
 	</string>
 	<string name="SIM_ACCESS_ADULT">
-		Adult
+		アダルト
 	</string>
 	<string name="SIM_ACCESS_DOWN">
 		オフライン
@@ -786,7 +786,7 @@
 		添付アイテムを保存
 	</string>
 	<string name="TeleportOffer">
-		テレポートを渡す
+		テレポートを送る
 	</string>
 	<string name="StartUpNotifications">
 		不在中に新しい通知が届きました。
@@ -833,7 +833,7 @@
 	<string name="InventoryNoTexture">
 		持ち物内にこのテクスチャのコピーがありません
 	</string>
-	<string name="no_transfer" value=" (再販/プレゼント不可)"/>
+	<string name="no_transfer" value=" (再販・プレゼント不可)"/>
 	<string name="no_modify" value=" (編集不可)"/>
 	<string name="no_copy" value=" (コピー不可)"/>
 	<string name="worn" value=" (着用中)"/>
@@ -874,7 +874,7 @@
 	<string name="No Filters" value="いいえ "/>
 	<string name="Since Logoff" value=" - ログオフ以来"/>
 	<string name="InvFolder My Inventory">
-		マイ 持ち物
+		持ち物
 	</string>
 	<string name="InvFolder My Favorites">
 		お気に入り
@@ -1706,7 +1706,7 @@
 		Linden 所在地
 	</string>
 	<string name="Adult">
-		Adult
+		アダルト
 	</string>
 	<string name="Arts&amp;Culture">
 		アートとカルチャー
@@ -3190,7 +3190,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 		現在地の詳細を見る
 	</string>
 	<string name="LocationCtrlComboBtnTooltip">
-		マイロケーション履歴
+		マイ ロケーション履歴
 	</string>
 	<string name="LocationCtrlForSaleTooltip">
 		この土地を購入
@@ -3247,7 +3247,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 		-- インスタントメッセージの保存開始 --
 	</string>
 	<string name="IM_typing_start_string">
-		[NAME] は入力中...
+		[NAME] は入力中です...
 	</string>
 	<string name="Unnamed">
 		(名前なし)
diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp
index d183aac208f1f5bdb622a570309f9e561b4f61d7..0ff53f3e00b0a5602697a469e54db6aede109543 100644
--- a/indra/test_apps/llplugintest/llmediaplugintest.cpp
+++ b/indra/test_apps/llplugintest/llmediaplugintest.cpp
@@ -1169,8 +1169,8 @@ void LLMediaPluginTest::keyboard( int key )
 		exit( 0 );
 	};
 
-	mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_DOWN, key, 0 );
-	mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_UP, key, 0 );
+	mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_DOWN, key, 0 , LLSD());
+	mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_UP, key, 0, LLSD());
 };
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/install.xml b/install.xml
index 0c3c88ce729ece13fe171dcda4909029134d3709..1e8fa70d46c842bbc957322e874116e896c49a15 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>d97d843704514ae1b5f153fab2931920</string>
+            <string>95f44f0023dddc80be4398fc4f213861</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20100120.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20100208.tar.bz2</uri>
           </map>
           <key>linux</key>
           <map>
             <key>md5sum</key>
-            <string>c4c40fca14a8bd32096f8a27c75c526f</string>
+            <string>4c75b2f1e8524c7844ee3ea1cd59a3db</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20100105c.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20100209b.tar.bz2</uri>
           </map>
           <key>windows</key>
           <map>
             <key>md5sum</key>
-            <string>18c1a4059bad1504a457e70c8c218033</string>
+            <string>df0f751818dddb566d55499286c727a8</string>
             <key>url</key>
-            <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100120.tar.bz2</uri>
+            <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100208.tar.bz2</uri>
           </map>
         </map>
       </map>
@@ -1367,23 +1367,23 @@ anguage Infrstructure (CLI) international standard</string>
           <key>darwin</key>
           <map>
             <key>md5sum</key>
-            <string>51f3fa1ab39563505df83b48ba432a3c</string>
+            <string>316f86790b7afb5c9bd4f95bc193b80f</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7852-darwin-20100115.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7930-darwin-20100205.tar.bz2</uri>
           </map>
           <key>linux</key>
           <map>
             <key>md5sum</key>
-            <string>ab9573d6aa2acdd79a553c144c9ecb09</string>
+            <string>13f6886fa3e6675838e47adcabb0f0ac</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7852-linux-20100115.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7930-linux-20100205.tar.bz2</uri>
           </map>
           <key>windows</key>
           <map>
             <key>md5sum</key>
-            <string>88ab785eebdc4f53a7dfc4e0b95f67ec</string>
+            <string>2a81e3c42799c33742746925f16b54ca</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7852-windows-20100115.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.7930-windows-20100205.tar.bz2</uri>
           </map>
         </map>
       </map>