diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 133f93ec1a9d2f94fce128d8236ee38bdfbfb04c..fd52c56a8775379c304829e3ed823ba9319434ae 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -201,6 +201,7 @@ set(viewer_SOURCE_FILES
     llfloatermediasettings.cpp
     llfloatermemleak.cpp
     llfloatermodelpreview.cpp
+    llfloatermodelwizard.cpp
     llfloaternamedesc.cpp
     llfloaternotificationsconsole.cpp
     llfloateropenobject.cpp
@@ -741,6 +742,7 @@ set(viewer_HEADER_FILES
     llfloatermediasettings.h
     llfloatermemleak.h
     llfloatermodelpreview.h
+    llfloatermodelwizard.h
     llfloaternamedesc.h
     llfloaternotificationsconsole.h
     llfloateropenobject.h
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index 1e0624f8c4df35aad5455a15c69375714c6c7c81..0cfebdb399aebcf49df59ea43a9ab77b01380d7b 100644
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -212,24 +212,18 @@ BOOL stop_gloderror()
 	return FALSE;
 }
 
-class LLMeshFilePicker : public LLFilePickerThread
-{
-public:
-	LLFloaterModelPreview* mFMP;
-	S32 mLOD;
 	
-	LLMeshFilePicker(LLFloaterModelPreview* fmp, S32 lod)
+LLMeshFilePicker::LLMeshFilePicker(LLModelPreview* mp, S32 lod)
 	: LLFilePickerThread(LLFilePicker::FFLOAD_COLLADA)
 	{
-		mFMP = fmp;
+		mMP = mp;
 		mLOD = lod;
 	}
-	
-	virtual void notify(const std::string& filename)
-	{
-		mFMP->mModelPreview->loadModel(mFile, mLOD);
-	}
-};
+
+void LLMeshFilePicker::notify(const std::string& filename)
+{
+	mMP->loadModel(mFile, mLOD);
+}
 
 
 //-----------------------------------------------------------------------------
@@ -242,7 +236,6 @@ LLFloater(key)
 	mLastMouseX = 0;
 	mLastMouseY = 0;
 	mGLName = 0;
-	mLoading = FALSE;
 }
 
 //-----------------------------------------------------------------------------
@@ -294,6 +287,7 @@ BOOL LLFloaterModelPreview::postBuild()
 	
 	mModelPreview = new LLModelPreview(512, 512, this);
 	mModelPreview->setPreviewTarget(16.f);
+	mModelPreview->setAspect((F32) mPreviewRect.getWidth()/mPreviewRect.getHeight());
 	
 	//set callbacks for left click on line editor rows
 	for (U32 i = 0; i <= LLModel::LOD_HIGH; i++)
@@ -348,9 +342,9 @@ LLFloaterModelPreview::~LLFloaterModelPreview()
 
 void LLFloaterModelPreview::loadModel(S32 lod)
 {
-	mLoading = TRUE;
+	 mModelPreview->mLoading = true;
 	
-	(new LLMeshFilePicker(this, lod))->getFile();
+	(new LLMeshFilePicker(mModelPreview, lod))->getFile();
 }
 
 void LLFloaterModelPreview::setLimit(S32 lod, S32 limit)
@@ -493,7 +487,7 @@ void LLFloaterModelPreview::draw()
 	
 	mModelPreview->update();
 	
-	if (!mLoading)
+	if (!mModelPreview->mLoading)
 	{
 		childSetTextArg("status", "[STATUS]", getString("status_idle"));
 	}
@@ -1966,7 +1960,7 @@ LLColor4 LLModelLoader::getDaeColor(daeElement* element)
 // LLModelPreview
 //-----------------------------------------------------------------------------
 
-LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloaterModelPreview* fmp) 
+LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp) 
 : LLViewerDynamicTexture(width, height, 3, ORDER_MIDDLE, FALSE), LLMutex(NULL)
 {
 	mNeedsUpdate = TRUE;
@@ -1978,6 +1972,7 @@ LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloaterModelPreview* fmp
 	mPreviewLOD = 0;
 	mModelLoader = NULL;
 	mDirty = false;
+	mLoading = false;
 	
 	for (U32 i = 0; i < LLModel::NUM_LODS; i++)
 	{
@@ -2216,7 +2211,7 @@ void LLModelPreview::loadModel(std::string filename, S32 lod)
 			mFMP->closeFloater(false);
 		}
 		
-		mFMP->mLoading = false;
+		mLoading = false;
 		return;
 	}
 	
@@ -2339,7 +2334,7 @@ void LLModelPreview::loadModelCallback(S32 lod)
 		resetPreviewTarget();
 	}
 	
-	mFMP->mLoading = FALSE;
+	mLoading = false;
 	refresh();
 }
 
@@ -3369,9 +3364,7 @@ BOOL LLModelPreview::render()
 	
 	glClear(GL_DEPTH_BUFFER_BIT);
 	
-	F32 aspect = (F32) mFMP->mPreviewRect.getWidth()/mFMP->mPreviewRect.getHeight();
-
-	LLViewerCamera::getInstance()->setAspect(aspect);
+	LLViewerCamera::getInstance()->setAspect(mAspect);
 	LLViewerCamera::getInstance()->setView(LLViewerCamera::getInstance()->getDefaultFOV() / mCameraZoom);
 	
 	LLVector3 offset = mCameraOffset;
diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h
index 2e98b8eb182c92ad4d7bccd95594ec2a41417079..b0317e3d2d926cf38e258a02e3a1d4a8bcb47b4d 100644
--- a/indra/newview/llfloatermodelpreview.h
+++ b/indra/newview/llfloatermodelpreview.h
@@ -34,6 +34,7 @@
 #include "llmeshrepository.h"
 #include "llmodel.h"
 #include "llthread.h"
+#include "llviewermenufile.h"
 
 class LLComboBox;
 class LLJoint;
@@ -202,7 +203,6 @@ class LLFloaterModelPreview : public LLFloater
 	S32				mLastMouseY;
 	LLRect			mPreviewRect;
 	U32				mGLName;
-	BOOL			mLoading;
 	static S32		sUploadAmount;
 	
 	LLPointer<DecompRequest> mCurRequest;
@@ -210,11 +210,23 @@ class LLFloaterModelPreview : public LLFloater
 	
 };
 
+class LLMeshFilePicker : public LLFilePickerThread
+{
+public:
+	LLMeshFilePicker(LLModelPreview* mp, S32 lod);
+	virtual void notify(const std::string& filename);
+
+private:
+	LLModelPreview* mMP;
+	S32 mLOD;
+};
+
+
 class LLModelPreview : public LLViewerDynamicTexture, public LLMutex
 {
  public:
 	
-	 LLModelPreview(S32 width, S32 height, LLFloaterModelPreview* fmp);
+	 LLModelPreview(S32 width, S32 height, LLFloater* fmp);
 	virtual ~LLModelPreview();
 
 	void resetPreviewTarget();
@@ -244,15 +256,18 @@ class LLModelPreview : public LLViewerDynamicTexture, public LLMutex
 	void clearIncompatible(S32 lod);
 	void updateStatusMessages();
 	bool containsRiggedAsset( void );
+	void setAspect(F32 aspect) { mAspect = aspect; };
+	//void setLoading(bool loading) { mLoading = loading; };
 
 	static void	textureLoadedCallback( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata );
 
  protected:
 	friend class LLFloaterModelPreview;
+	friend class LLFloaterModelWizard;
 	friend class LLFloaterModelPreview::DecompRequest;
 	friend class LLPhysicsDecomp;
 
-	LLFloaterModelPreview* mFMP;
+	LLFloater* mFMP;
 
 	BOOL        mNeedsUpdate;
 	bool		mDirty;
@@ -268,6 +283,8 @@ class LLModelPreview : public LLViewerDynamicTexture, public LLMutex
 	U32			mResourceCost;
 	S32			mLimit[LLModel::NUM_LODS];
 	std::string mLODFile[LLModel::NUM_LODS];
+	F32         mAspect;
+	bool		mLoading;
 
 	LLModelLoader* mModelLoader;
 
diff --git a/indra/newview/llfloatermodelwizard.cpp b/indra/newview/llfloatermodelwizard.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..416501cc8b3f1a086bd599bd65814ada08708524
--- /dev/null
+++ b/indra/newview/llfloatermodelwizard.cpp
@@ -0,0 +1,112 @@
+/** 
+ * @file llfloatermodelwizard.cpp
+ * @author Leyla Farazha
+ * @brief Implementation of the LLFloaterModelWizard class.
+ *
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+
+#include "llviewerprecompiledheaders.h"
+
+#include "lldrawable.h"
+#include "llfloater.h"
+#include "llfloatermodelwizard.h"
+#include "llfloatermodelpreview.h"
+#include "llfloaterreg.h"
+
+
+
+LLFloaterModelWizard::LLFloaterModelWizard(const LLSD& key)
+	: LLFloater(key)
+{
+}
+
+void LLFloaterModelWizard::loadModel()
+{
+	 mModelPreview->mLoading = TRUE;
+	
+	(new LLMeshFilePicker(mModelPreview, 3))->getFile();
+}
+
+
+BOOL LLFloaterModelWizard::postBuild()
+{
+	LLView* preview_panel = getChild<LLView>("preview_panel");
+
+	childSetValue("import_scale", (F32) 0.67335826);
+
+	getChild<LLUICtrl>("browse")->setCommitCallback(boost::bind(&LLFloaterModelWizard::loadModel, this));
+
+	mPreviewRect = preview_panel->getRect();
+	
+	mModelPreview = new LLModelPreview(512, 512, this);
+	mModelPreview->setPreviewTarget(16.f);
+	mModelPreview->setAspect((F32) mPreviewRect.getWidth()/mPreviewRect.getHeight());
+
+	center();
+
+	return TRUE;
+}
+
+void LLFloaterModelWizard::draw()
+{
+	LLFloater::draw();
+	LLRect r = getRect();
+	
+	mModelPreview->update();
+
+	if (mModelPreview)
+	{
+		gGL.color3f(1.f, 1.f, 1.f);
+		
+		gGL.getTexUnit(0)->bind(mModelPreview);
+		
+
+		LLView* preview_panel = getChild<LLView>("preview_panel");
+
+		LLRect rect = preview_panel->getRect();
+		if (rect != mPreviewRect)
+		{
+			mModelPreview->refresh();
+			mPreviewRect = preview_panel->getRect();
+		}
+		
+		LLRect item_rect;
+		preview_panel->localRectToOtherView(preview_panel->getLocalRect(), &item_rect, this);
+		
+		gGL.begin( LLRender::QUADS );
+		{
+			gGL.texCoord2f(0.f, 1.f);
+			gGL.vertex2i(mPreviewRect.mLeft, item_rect.mTop);
+			gGL.texCoord2f(0.f, 0.f);
+			gGL.vertex2i(mPreviewRect.mLeft, item_rect.mBottom);
+			gGL.texCoord2f(1.f, 0.f);
+			gGL.vertex2i(mPreviewRect.mRight, item_rect.mBottom);
+			gGL.texCoord2f(1.f, 1.f);
+			gGL.vertex2i(mPreviewRect.mRight, item_rect.mTop);
+		}
+		gGL.end();
+		
+		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+	}
+}
diff --git a/indra/newview/llfloatermodelwizard.h b/indra/newview/llfloatermodelwizard.h
new file mode 100644
index 0000000000000000000000000000000000000000..c766697d47279b3bb404cc7d387dc8e4af840646
--- /dev/null
+++ b/indra/newview/llfloatermodelwizard.h
@@ -0,0 +1,58 @@
+/** 
+ * @file llfloatermodelwizard.h
+ *
+ * $LicenseInfo:firstyear=2009&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LLFLOATERMODELWIZARD_H
+#define LLFLOATERMODELWIZARD_H
+
+class LLModelPreview;
+
+class LLFloaterModelWizard : public LLFloater
+{
+public:
+	LLFloaterModelWizard(const LLSD& key);
+	virtual ~LLFloaterModelWizard() {};
+	/*virtual*/	BOOL	postBuild();
+	void			draw();
+	void loadModel();
+	//void onSave();
+	//void onReset();
+	//void onCancel();
+	///*virtual*/ void onOpen(const LLSD& key);
+	
+private:
+	
+	LLModelPreview*	mModelPreview;
+	LLRect			mPreviewRect;
+};
+/*
+namespace LLFloaterDisplayNameUtil
+{
+	// Register with LLFloaterReg
+	void registerFloater();
+}
+*/
+
+
+#endif
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 9ee446bc7132b66caaee298d858db16914d44816..849ac7c830b24bbb64974abc571f3da7e1e2a58d 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -72,6 +72,7 @@
 #include "llfloaterlandholdings.h"
 #include "llfloatermap.h"
 #include "llfloatermemleak.h"
+#include "llfloatermodelwizard.h"
 #include "llfloaternamedesc.h"
 #include "llfloaternotificationsconsole.h"
 #include "llfloateropenobject.h"
@@ -251,6 +252,7 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("upload_image", "floater_image_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterImagePreview>, "upload");
 	LLFloaterReg::add("upload_sound", "floater_sound_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundPreview>, "upload");
 	LLFloaterReg::add("upload_model", "floater_model_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterModelPreview>, "upload");
+	LLFloaterReg::add("upload_model_wizard", "floater_model_wizard.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterModelWizard>, "upload");
 
 	LLFloaterReg::add("voice_controls", "floater_voice_controls.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallFloater>);
 	LLFloaterReg::add("voice_effect", "floater_voice_effect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterVoiceEffect>);
diff --git a/indra/newview/skins/default/textures/model_wizard/check_mark.png b/indra/newview/skins/default/textures/model_wizard/check_mark.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c05297f4f5a15954b5b3fb81742814576bdd662
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/check_mark.png differ
diff --git a/indra/newview/skins/default/textures/model_wizard/left_button_disabled.png b/indra/newview/skins/default/textures/model_wizard/left_button_disabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..c7c0eaa96bf5f78bbc26e6a913ec6395c55690c6
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/left_button_disabled.png differ
diff --git a/indra/newview/skins/default/textures/model_wizard/left_button_off.png b/indra/newview/skins/default/textures/model_wizard/left_button_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a73c254fc7dc9aca149802b2058e4c6c43dcf5f
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/left_button_off.png differ
diff --git a/indra/newview/skins/default/textures/model_wizard/left_button_over.png b/indra/newview/skins/default/textures/model_wizard/left_button_over.png
new file mode 100644
index 0000000000000000000000000000000000000000..6fb5c432dec5872117c04cb971968d711309f539
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/left_button_over.png differ
diff --git a/indra/newview/skins/default/textures/model_wizard/left_button_press.png b/indra/newview/skins/default/textures/model_wizard/left_button_press.png
new file mode 100644
index 0000000000000000000000000000000000000000..fa18517933e9e2800c20f556ab859809f4f7e9c3
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/left_button_press.png differ
diff --git a/indra/newview/skins/default/textures/model_wizard/middle_button_disabled.png b/indra/newview/skins/default/textures/model_wizard/middle_button_disabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..bed1a701bdedc5f5b65d47e6ee3e1a5c53b8e0d5
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/middle_button_disabled.png differ
diff --git a/indra/newview/skins/default/textures/model_wizard/middle_button_off.png b/indra/newview/skins/default/textures/model_wizard/middle_button_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..57ce9af574f33fda31bdd84a324e3639e90f0705
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/middle_button_off.png differ
diff --git a/indra/newview/skins/default/textures/model_wizard/middle_button_over.png b/indra/newview/skins/default/textures/model_wizard/middle_button_over.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c43022f0eaff2d391084842041520e9080727e4
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/middle_button_over.png differ
diff --git a/indra/newview/skins/default/textures/model_wizard/middle_button_press.png b/indra/newview/skins/default/textures/model_wizard/middle_button_press.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b8c1baca4c904bb017ce460ee8af6b66c7b99f5
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/middle_button_press.png differ
diff --git a/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png b/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0b213cdc5abfed5d9708437c8a32293cac9d66a
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/progress_bar_bg.png differ
diff --git a/indra/newview/skins/default/textures/model_wizard/progress_light.png b/indra/newview/skins/default/textures/model_wizard/progress_light.png
new file mode 100644
index 0000000000000000000000000000000000000000..019344f812fb6cce7f20bb565c0a008abf6963c8
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/progress_light.png differ
diff --git a/indra/newview/skins/default/textures/model_wizard/right_button_disabled.png b/indra/newview/skins/default/textures/model_wizard/right_button_disabled.png
new file mode 100644
index 0000000000000000000000000000000000000000..51505e80c5b40444914494c19118573143456c50
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/right_button_disabled.png differ
diff --git a/indra/newview/skins/default/textures/model_wizard/right_button_off.png b/indra/newview/skins/default/textures/model_wizard/right_button_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f93efbd93b0d09b98097e62d7f8c92eac2f61af
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/right_button_off.png differ
diff --git a/indra/newview/skins/default/textures/model_wizard/right_button_over.png b/indra/newview/skins/default/textures/model_wizard/right_button_over.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a4ec1a315f7d2457fa20fa5cece730738634ced
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/right_button_over.png differ
diff --git a/indra/newview/skins/default/textures/model_wizard/right_button_press.png b/indra/newview/skins/default/textures/model_wizard/right_button_press.png
new file mode 100644
index 0000000000000000000000000000000000000000..1f1b4c2ed53268811c3865b56db21c6f8dd9e60f
Binary files /dev/null and b/indra/newview/skins/default/textures/model_wizard/right_button_press.png differ
diff --git a/indra/newview/skins/default/xui/en/floater_model_wizard.xml b/indra/newview/skins/default/xui/en/floater_model_wizard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3f11f7d4dda2d42c99170084a412e135b62f25c7
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_model_wizard.xml
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ layout="topleft"
+ name="Model Wizard"
+ help_topic="model_wizard"
+ bg_opaque_image_overlay="0.5 0.5 0.5 1"
+ height="450"
+ save_rect="true"
+ title="UPLOAD MODEL WIZARD" 
+ width="530">
+	<panel
+		   height="600">
+		<button
+	     top="30"
+		 left="410"
+		 height="32"
+		 name="upload" 
+		 enabled="false" 
+		 label="5. Upload" 
+		 border="false" 
+		 image_unselected="model_wizard/middle_button_off.png"
+		 image_selected="model_wizard/middle_button_press.png"
+		image_hover_unselected="model_wizard/middle_button_over.png"
+		image_disabled="model_wizard/middle_button_disabled.png"
+		image_disabled_selected="model_wizard/middle_button_disabled.png"
+		 width="110"/>
+		<button
+	     top="30"
+		 left="310"
+		 height="32"
+		  tab_stop="false"
+		 name="review"
+		 label="4. Review"
+		 enabled="false"
+		 border="false"
+		 image_unselected="model_wizard/middle_button_off.png"
+		 image_selected="model_wizard/middle_button_press.png"
+		image_hover_unselected="model_wizard/middle_button_over.png"
+		image_disabled="model_wizard/middle_button_disabled.png"
+		image_disabled_selected="model_wizard/middle_button_disabled.png"
+		 width="110"/>
+		<button
+	     top="30"
+		 left="210"
+		 height="32"
+		 name="physics"
+		 label="3. Physics"
+		 tab_stop="false"
+		 enabled="false"
+		 border="false"
+		 image_unselected="model_wizard/middle_button_off.png"
+		 image_selected="model_wizard/middle_button_press.png"
+		image_hover_unselected="model_wizard/middle_button_over.png"
+		image_disabled="model_wizard/middle_button_disabled.png"
+		image_disabled_selected="model_wizard/middle_button_disabled.png"
+		 width="110"/>
+		<button
+	     top="30"
+		 left="115"
+		 name="optimize"
+		 label="2. Optimize"
+		  tab_stop="false"
+		 height="32"
+		 border="false"
+		 image_unselected="model_wizard/middle_button_off.png"
+		 image_selected="model_wizard/middle_button_press.png"
+		image_hover_unselected="model_wizard/middle_button_over.png"
+		image_disabled="model_wizard/middle_button_disabled.png"
+		image_disabled_selected="model_wizard/middle_button_disabled.png"
+		 width="110"/>
+		<button
+	     top="30"
+		 left="15"
+		 name="choose_file"
+		 enabled="false"
+		 label="1. Choose File"
+		 height="32"
+		 image_unselected="model_wizard/left_button_off.png"
+		 image_selected="model_wizard/left_button_press.png"
+		image_hover_unselected="model_wizard/left_button_over.png"
+		image_disabled="model_wizard/left_button_disabled.png"
+		image_disabled_selected="model_wizard/left_button_disabled.png"
+		 width="110"/>
+		<panel
+		 top_pad="20"
+		 height="20"
+		 width="500" 
+		 bg_opaque_color="DkGray2"
+		 background_visible="true"
+		 background_opaque="true" 
+		 left="20">
+		<text
+		 width="200"
+		 left="10" 
+		 top="2" 
+		 height="10"
+		 font="SansSerifBig"
+		 layout="topleft"
+		 >
+			  Upload Model
+		</text></panel>
+		<text
+		 top_pad="14"
+		 width="460"
+		 height="20"
+		 font="SansSerifSmall"
+		 layout="topleft"
+		 word_wrap="true"
+		 left_delta="0">
+			This wizard will help you import mesh models to Second Life.  First specify a file containing the model you wish to import.  Second Life supports COLLADA (.dae) files.
+		</text>
+
+		<panel
+			top_delta="40"
+			left="15"
+		 height="240"
+		 width="500"
+		 bg_opaque_color="DkGray2"
+		 background_visible="true"
+		 background_opaque="true">
+
+			<text
+	 type="string"
+	 length="1"
+	 follows="left|top"
+	 top="10" 
+	 height="10"
+	 layout="topleft"
+	 left_delta="10"
+	 name="Cache location"
+	 width="300">
+				Filename:
+			</text>
+			<line_editor
+			 control_name="CacheLocationTopFolder"
+			 border_style="line"
+			 border_thickness="1"
+			 follows="left|top"
+			 font="SansSerifSmall"
+			 height="20"
+			 layout="topleft"
+	 left_delta="0"
+			 max_length="4096"
+			 name="cache_location"
+			 top_pad="5"
+			 width="220" />
+			<button
+			 follows="left|top"
+			 height="23"
+			 label="Browse..."
+			 label_selected="Browse..."
+			 layout="topleft"
+			 left_pad="10"
+			 name="browse"
+			 top_delta="-1"
+			 width="75">
+			</button>
+			<text
+	top_delta="-15"
+	width="200"
+	height="15"
+	font="SansSerifSmall"
+	layout="topleft"
+	left_pad="24">
+				Model Preview:
+			</text>
+
+			<!-- Placeholder panel for 3D preview render -->
+			
+			<panel
+					left_delta="-2"
+				   top_pad="0"
+					name="preview_panel"
+					bevel_style="none"
+				   border_style="line"
+					border="true"
+				   height="150"
+			  follows="all"
+				   width="150">
+			</panel>
+
+			<text
+			 top_pad="10"
+			 width="130"
+			 height="15"
+			 left="340"
+			 word_wrap="true"
+		 >
+				Dimensions (meters):
+			</text>
+			<text
+			 top_pad="5"
+			 width="10"
+			 height="15"
+			 left_delta="0"
+		 >
+				X:
+			</text>
+			<text
+			 top_delta="0"
+			 width="10"
+			 height="15"
+			 left_pad="25"
+		 >
+				Y:
+			</text>
+			<text
+			 top_delta="0"
+			 width="10"
+			 height="15"
+			 left_pad="25"
+		 >
+				Z:
+			</text>
+			<text
+			 top="100"
+			 width="320"
+			 height="40"
+			 left="10"
+			 word_wrap="true"
+		 >
+				Note:
+Advanced users familiar with 3d content creation tools may prefer to use the Advanced Mesh Import window.
+			</text>
+		</panel>
+		<button
+		 top="410"
+		 right="-175" 
+		 width="80"
+		 height="20"
+		 label="&lt;&lt; Back" />
+		<button
+		 top="410"
+		 right="-92"
+		 width="80"
+		 height="20"
+		 label="Next &gt;&gt; " />
+		<button
+		 top="410"
+		 right="-15"
+		 width="70"
+		 height="20"
+		 label="Cancel" />
+	</panel>
+	<spinner visible="false" left="10" height="20" follows="top|left" width="80" top_pad="-50" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index ac854e173661acce123eaef239e839cf6e6d1608..38833d14df0aa56dba7fae89638ee939bde66f41 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -972,6 +972,18 @@
             <menu_item_call.on_visible
             function="File.MeshEnabled"/>
             </menu_item_call>
+			<menu_item_call
+           label="Model Wizard..."
+           layout="topleft"
+           name="Upload Model Wizard">
+				<menu_item_call.on_click
+				 function="Floater.Show"
+				 parameter="upload_model_wizard" />
+				<menu_item_call.on_enable
+				 function="File.EnableUploadModel" />
+				<menu_item_call.on_visible
+				function="File.MeshEnabled"/>
+			</menu_item_call>
             <menu_item_call
              label="Bulk (L$[COST] per file)..."
              layout="topleft"