diff --git a/indra/llinventory/llsettingsbase.cpp b/indra/llinventory/llsettingsbase.cpp
index fb9d8de053087f5737ddeb3ff2b32d51eea7c3b7..a35504e0e617b48ec140122cc7a40f349f4077c5 100644
--- a/indra/llinventory/llsettingsbase.cpp
+++ b/indra/llinventory/llsettingsbase.cpp
@@ -251,7 +251,7 @@ LLSD LLSettingsBase::getSettings() const
 
 LLSD LLSettingsBase::cloneSettings() const
 {
-    return combineSDMaps(mSettings, LLSD());
+    return combineSDMaps(getSettings(), LLSD());
 }
 
 size_t LLSettingsBase::getHash() const
diff --git a/indra/llinventory/llsettingsdaycycle.h b/indra/llinventory/llsettingsdaycycle.h
index b3cf53869fddfaad10dc721affc91bc3608faf52..4a7bc02871b4a3f37502a86a158548edfe48af0a 100644
--- a/indra/llinventory/llsettingsdaycycle.h
+++ b/indra/llinventory/llsettingsdaycycle.h
@@ -84,25 +84,6 @@ class LLSettingsDay : public LLSettingsBase
     static LLSD                 defaults();
 
     //---------------------------------------------------------------------
-    S64Seconds getDayLength() const
-    {
-        return mDayLength;
-    }
-
-    void setDayLength(S64Seconds seconds)
-    {
-        mDayLength = seconds;
-    }
-
-    S64Seconds getDayOffset() const
-    {
-        return mDayOffset;
-    }
-
-    void setDayOffset(S64Seconds seconds)
-    {
-        mDayOffset = seconds;
-    }
 
     KeyframeList_t              getTrackKeyframes(S32 track);
     TimeList_t                  getTrackTimes(S32 track);
@@ -139,6 +120,12 @@ class LLSettingsDay : public LLSettingsBase
 
     virtual validation_list_t   getValidationList() const;
     static validation_list_t    validationList();
+
+    S64Seconds                  getDayLength() const { return mDayLength; }
+    void                        setDayLength(S64Seconds val ) { mDayLength = val; }
+    S64Seconds                  getDayOffset() const { return mDayOffset; }
+    void                        setDayOffset(S64Seconds val) { mDayOffset = val; }
+
 protected:
     LLSettingsDay();
 
@@ -157,8 +144,8 @@ class LLSettingsDay : public LLSettingsBase
 
     F64Seconds                  mLastUpdateTime;
 
-    S64Seconds                  mDayLength; 
-    S64Seconds                  mDayOffset;
+    S64Seconds mDayLength;
+    S64Seconds mDayOffset;
 
     F32                         secondsToKeyframe(S64Seconds seconds);
     F64Seconds                  keyframeToSeconds(F32 keyframe);
diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp
index 14024cf4f7ed9e13c2aa3dceac657b602336a2b9..c02d99fb674b15e911c7ec0bcae97b4661d552d0 100644
--- a/indra/llinventory/llsettingssky.cpp
+++ b/indra/llinventory/llsettingssky.cpp
@@ -270,6 +270,8 @@ LLSD LLSettingsSky::defaults()
     dfltsetting[SETTING_MOON_TEXTUREID]     = IMG_MOON; // gMoonTextureID;   // These two are returned by the login... wow!
     dfltsetting[SETTING_SUN_TEXUTUREID]     = IMG_SUN;  // gSunTextureID;
 
+    dfltsetting[SETTING_TYPE] = "sky";
+
     return dfltsetting;
 }
 
diff --git a/indra/llinventory/llsettingssky.h b/indra/llinventory/llsettingssky.h
index d36de571f641c9644b5fd8101d1272cd1f233f12..9947ffc0222974ba3e7ab10720f678151a1708dd 100644
--- a/indra/llinventory/llsettingssky.h
+++ b/indra/llinventory/llsettingssky.h
@@ -412,6 +412,8 @@ class LLSettingsSky: public LLSettingsBase
     virtual validation_list_t getValidationList() const;
     static validation_list_t validationList();
 
+    static LLSD     translateLegacySettings(LLSD legacy);
+
 protected:
     static const std::string SETTING_LEGACY_EAST_ANGLE;
     static const std::string SETTING_LEGACY_ENABLE_CLOUD_SCROLL;
@@ -423,8 +425,6 @@ class LLSettingsSky: public LLSettingsBase
 
     virtual void    updateSettings();
 
-    static LLSD     translateLegacySettings(LLSD legacy);
-
 private:
     static const F32         NIGHTTIME_ELEVATION;
     static const F32         NIGHTTIME_ELEVATION_COS;
diff --git a/indra/llinventory/llsettingswater.cpp b/indra/llinventory/llsettingswater.cpp
index 67a9cd39cb48f9ba8ba504967ca83a4d24d1713d..0fe3de44d3912fd58e5cb059cbddc308c9fb224c 100644
--- a/indra/llinventory/llsettingswater.cpp
+++ b/indra/llinventory/llsettingswater.cpp
@@ -100,6 +100,8 @@ LLSD LLSettingsWater::defaults()
     dfltsetting[SETTING_WAVE1_DIR] = LLVector2(1.04999f, -0.42000f).getValue();
     dfltsetting[SETTING_WAVE2_DIR] = LLVector2(1.10999f, -1.16000f).getValue();
 
+    dfltsetting[SETTING_TYPE] = "water";
+
     return dfltsetting;
 }
 
diff --git a/indra/llinventory/llsettingswater.h b/indra/llinventory/llsettingswater.h
index 94e5583fd753671c7787b66d60dee404faae9123..4c61e2a34c9a25fec21176ab2b8e560a761285fe 100644
--- a/indra/llinventory/llsettingswater.h
+++ b/indra/llinventory/llsettingswater.h
@@ -201,6 +201,8 @@ class LLSettingsWater : public LLSettingsBase
     virtual validation_list_t getValidationList() const;
     static validation_list_t validationList();
 
+    static LLSD         translateLegacySettings(LLSD legacy);
+
 protected:
     static const std::string SETTING_LEGACY_BLUR_MULTIPILER;
     static const std::string SETTING_LEGACY_FOG_COLOR;
@@ -217,8 +219,6 @@ class LLSettingsWater : public LLSettingsBase
 
     LLSettingsWater();
 
-    static LLSD         translateLegacySettings(LLSD legacy);
-
     LLVector4           mWaterPlane;
     F32                 mWaterFogKS;
 
diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp
index c62ef85b02eb9ed893582bffd61cb58764e25116..76c275e47c85ae3233d771956181f617ee943507 100644
--- a/indra/newview/llfloatereditextdaycycle.cpp
+++ b/indra/newview/llfloatereditextdaycycle.cpp
@@ -47,129 +47,180 @@
 #include "llenvironment.h"
 #include "lltrans.h"
 
-const F32 LLFloaterEditExtDayCycle::sHoursPerDay = 24.0f;
-
-LLFloaterEditExtDayCycle::LLFloaterEditExtDayCycle(const LLSD &key)
-:	LLFloater(key)
-,	mDayCycleNameEditor(NULL)
-,	mDayCyclesCombo(NULL)
-,	mTimeSlider(NULL)
-,	mKeysSlider(NULL)
-,	mSkyPresetsCombo(NULL)
-,	mTimeCtrl(NULL)
-,	mMakeDefaultCheckBox(NULL)
-,	mSaveButton(NULL)
+
+LLFloaterEditExtDayCycle::LLFloaterEditExtDayCycle(const LLSD &key):	
+    LLFloater(key),
+    mDayPresetsCombo(NULL),
+    mSaveButton(NULL),
+    mCancelButton(NULL)
+//    mDayCyclesCombo(NULL)
+// ,	mTimeSlider(NULL)
+// ,	mKeysSlider(NULL)
+// ,	mTimeCtrl(NULL)
+// ,	mMakeDefaultCheckBox(NULL)
+// ,	
 {
 }
 
 // virtual
 BOOL LLFloaterEditExtDayCycle::postBuild()
 {
-	mDayCycleNameEditor = getChild<LLLineEditor>("day_cycle_name");
-	mDayCyclesCombo = getChild<LLComboBox>("day_cycle_combo");
+//	mDayCyclesCombo = getChild<LLComboBox>("day_cycle_preset_combo");
+
+// 	mTimeSlider = getChild<LLMultiSliderCtrl>("WLTimeSlider");
+// 	mKeysSlider = getChild<LLMultiSliderCtrl>("WLDayCycleKeys");
+ 	mDayPresetsCombo = getChild<LLComboBox>("day_cycle_preset_combo");
+// 	mTimeCtrl = getChild<LLTimeCtrl>("time");
+ 	mSaveButton = getChild<LLButton>("save_btn");
+    mCancelButton = getChild<LLButton>("cancel_btn");
+// 	mMakeDefaultCheckBox = getChild<LLCheckBoxCtrl>("make_default_cb");
 
-	mTimeSlider = getChild<LLMultiSliderCtrl>("WLTimeSlider");
-	mKeysSlider = getChild<LLMultiSliderCtrl>("WLDayCycleKeys");
-	mSkyPresetsCombo = getChild<LLComboBox>("WLSkyPresets");
-	mTimeCtrl = getChild<LLTimeCtrl>("time");
-	mSaveButton = getChild<LLButton>("save");
-	mMakeDefaultCheckBox = getChild<LLCheckBoxCtrl>("make_default_cb");
 
-	initCallbacks();
+    mDayPresetsCombo->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onDayPresetChanged, this));
+    mSaveButton->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onBtnSave, this));
+    mCancelButton->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onBtnCancel, this));
 
-	// add the time slider
-	mTimeSlider->addSlider();
+	//initCallbacks();
+
+// 	// add the time slider
+// 	mTimeSlider->addSlider();
 
 	return TRUE;
 }
 
-// virtual
 void LLFloaterEditExtDayCycle::onOpen(const LLSD& key)
 {
-	bool new_day = isNewDay();
-	std::string param = key.asString();
-	std::string floater_title = getString(std::string("title_") + param);
-	std::string hint = getString(std::string("hint_" + param));
-
-	// Update floater title.
-	setTitle(floater_title);
-
-	// Update the hint at the top.
-	getChild<LLUICtrl>("hint")->setValue(hint);
-
-	// Hide the hint to the right of the combo if we're invoked to create a new preset.
-	getChildView("note")->setVisible(!new_day);
-
-	// Switch between the day cycle presets combobox and day cycle name input field.
-	mDayCyclesCombo->setVisible(!new_day);
-	mDayCycleNameEditor->setVisible(new_day);
-
-	// TODO: Make sure only one instance of the floater exists?
-
-	reset();
+    refreshSkyPresetsList();
 }
 
-// virtual
 void LLFloaterEditExtDayCycle::onClose(bool app_quitting)
 {
 	if (!app_quitting) // there's no point to change environment if we're quitting
 	{
+        /* TODO: don't restore this environment.  We may have gotten here from land or region. */
         LLEnvironment::instance().applyChosenEnvironment();
 	}
 }
 
-// virtual
-void LLFloaterEditExtDayCycle::draw()
+void LLFloaterEditExtDayCycle::onVisibilityChange(BOOL new_visibility)
 {
-	syncTimeSlider();
-	LLFloater::draw();
+    if (new_visibility)
+    {
+        LLEnvironment::instance().selectDayCycle(mEditDay, LLEnvironment::TRANSITION_FAST);
+    }
+    else
+    {
+        /* TODO: don't restore this environment.  We may have gotten here from land or region. */
+        LLEnvironment::instance().applyChosenEnvironment();
+    }
 }
 
-void LLFloaterEditExtDayCycle::initCallbacks(void)
+//-------------------------------------------------------------------------
+void LLFloaterEditExtDayCycle::onDayPresetChanged()
 {
-#if 0
-	mDayCycleNameEditor->setKeystrokeCallback(boost::bind(&LLFloaterEditExtDayCycle::onDayCycleNameEdited, this), NULL);
-	mDayCyclesCombo->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onDayCycleSelected, this));
-	mDayCyclesCombo->setTextEntryCallback(boost::bind(&LLFloaterEditExtDayCycle::onDayCycleNameEdited, this));
-	mTimeSlider->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onTimeSliderMoved, this));
-	mKeysSlider->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onKeyTimeMoved, this));
-	mTimeCtrl->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onKeyTimeChanged, this));
-	mSkyPresetsCombo->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onKeyPresetChanged, this));
-
-	getChild<LLButton>("WLAddKey")->setClickedCallback(boost::bind(&LLFloaterEditExtDayCycle::onAddKey, this));
-	getChild<LLButton>("WLDeleteKey")->setClickedCallback(boost::bind(&LLFloaterEditExtDayCycle::onDeleteKey, this));
-
-	mSaveButton->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onBtnSave, this));
-	mSaveButton->setRightMouseDownCallback(boost::bind(&LLFloaterEditExtDayCycle::dumpTrack, this));
-	getChild<LLButton>("cancel")->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onBtnCancel, this));
-
-	// Connect to env manager events.
-	LLEnvManagerNew& env_mgr = LLEnvManagerNew::instance();
-	env_mgr.setRegionSettingsChangeCallback(boost::bind(&LLFloaterEditExtDayCycle::onRegionSettingsChange, this));
-	gAgent.addRegionChangedCallback(boost::bind(&LLFloaterEditExtDayCycle::onRegionChange, this));
-	env_mgr.setRegionSettingsAppliedCallback(boost::bind(&LLFloaterEditExtDayCycle::onRegionSettingsApplied, this, _1));
-	// Connect to day cycle manager events.
-	LLDayCycleManager::instance().setModifyCallback(boost::bind(&LLFloaterEditExtDayCycle::onDayCycleListChange, this));
-
-	// Connect to sky preset list changes.
-	LLWLParamManager::instance().setPresetListChangeCallback(boost::bind(&LLFloaterEditExtDayCycle::onSkyPresetListChange, this));
-
-
-	// Connect to region info updates.
-	LLRegionInfoModel::instance().setUpdateCallback(boost::bind(&LLFloaterEditExtDayCycle::onRegionInfoUpdate, this));
-#endif
+    std::string dayname = mDayPresetsCombo->getSelectedValue().asString();
+
+    LLSettingsDay::ptr_t pday = LLEnvironment::instance().findDayCycleByName(dayname);
+
+    if (pday)
+    {
+        pday = pday->buildClone();
+        LLEnvironment::instance().selectDayCycle(pday, LLEnvironment::TRANSITION_INSTANT);
+        mEditDay = pday;
+    }
+
 }
 
-void LLFloaterEditExtDayCycle::syncTimeSlider()
+void LLFloaterEditExtDayCycle::onBtnSave()
+{
+    if (!mCommitSignal.empty())
+        mCommitSignal(mEditDay);
+    closeFloater();
+}
+
+void LLFloaterEditExtDayCycle::onBtnCancel()
 {
-#if 0
-	// set time
-	mTimeSlider->setCurSliderValue((F32)LLWLParamManager::getInstance()->mAnimator.getDayTime() * sHoursPerDay);
-#endif
+	closeFloater();
 }
 
-void LLFloaterEditExtDayCycle::loadTrack()
+
+//-------------------------------------------------------------------------
+void LLFloaterEditExtDayCycle::refreshSkyPresetsList()
 {
+    mDayPresetsCombo->removeall();
+
+    LLEnvironment::list_name_id_t cyclelist = LLEnvironment::instance().getDayCycleList();
+
+    mDayPresetsCombo->removeall();
+
+
+    for (LLEnvironment::list_name_id_t::iterator it = cyclelist.begin(); it != cyclelist.end(); ++it)
+    {
+        mDayPresetsCombo->add((*it).first);
+    }
+
+    // set defaults on combo boxes
+    mDayPresetsCombo->selectFirstItem();
+}
+
+LLFloaterEditExtDayCycle::connection_t LLFloaterEditExtDayCycle::setEditCommitSignal(LLFloaterEditExtDayCycle::edit_commit_signal_t::slot_type cb)
+{
+    return mCommitSignal.connect(cb);
+}
+
+// 
+// virtual
+// void LLFloaterEditExtDayCycle::draw()
+// {
+// 	syncTimeSlider();
+// 	LLFloater::draw();
+// }
+// 
+// void LLFloaterEditExtDayCycle::initCallbacks(void)
+// {
+// #if 0
+// 	mDayCycleNameEditor->setKeystrokeCallback(boost::bind(&LLFloaterEditExtDayCycle::onDayCycleNameEdited, this), NULL);
+// 	mDayCyclesCombo->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onDayCycleSelected, this));
+// 	mDayCyclesCombo->setTextEntryCallback(boost::bind(&LLFloaterEditExtDayCycle::onDayCycleNameEdited, this));
+// 	mTimeSlider->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onTimeSliderMoved, this));
+// 	mKeysSlider->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onKeyTimeMoved, this));
+// 	mTimeCtrl->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onKeyTimeChanged, this));
+// 	mSkyPresetsCombo->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onKeyPresetChanged, this));
+// 
+// 	getChild<LLButton>("WLAddKey")->setClickedCallback(boost::bind(&LLFloaterEditExtDayCycle::onAddKey, this));
+// 	getChild<LLButton>("WLDeleteKey")->setClickedCallback(boost::bind(&LLFloaterEditExtDayCycle::onDeleteKey, this));
+// 
+// 	mSaveButton->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onBtnSave, this));
+// 	mSaveButton->setRightMouseDownCallback(boost::bind(&LLFloaterEditExtDayCycle::dumpTrack, this));
+// 	getChild<LLButton>("cancel")->setCommitCallback(boost::bind(&LLFloaterEditExtDayCycle::onBtnCancel, this));
+// 
+// 	// Connect to env manager events.
+// 	LLEnvManagerNew& env_mgr = LLEnvManagerNew::instance();
+// 	env_mgr.setRegionSettingsChangeCallback(boost::bind(&LLFloaterEditExtDayCycle::onRegionSettingsChange, this));
+// 	gAgent.addRegionChangedCallback(boost::bind(&LLFloaterEditExtDayCycle::onRegionChange, this));
+// 	env_mgr.setRegionSettingsAppliedCallback(boost::bind(&LLFloaterEditExtDayCycle::onRegionSettingsApplied, this, _1));
+// 	// Connect to day cycle manager events.
+// 	LLDayCycleManager::instance().setModifyCallback(boost::bind(&LLFloaterEditExtDayCycle::onDayCycleListChange, this));
+// 
+// 	// Connect to sky preset list changes.
+// 	LLWLParamManager::instance().setPresetListChangeCallback(boost::bind(&LLFloaterEditExtDayCycle::onSkyPresetListChange, this));
+// 
+// 
+// 	// Connect to region info updates.
+// 	LLRegionInfoModel::instance().setUpdateCallback(boost::bind(&LLFloaterEditExtDayCycle::onRegionInfoUpdate, this));
+// #endif
+// }
+// 
+// void LLFloaterEditExtDayCycle::syncTimeSlider()
+// {
+// #if 0
+// 	// set time
+// 	mTimeSlider->setCurSliderValue((F32)LLWLParamManager::getInstance()->mAnimator.getDayTime() * sHoursPerDay);
+// #endif
+// }
+// 
+// void LLFloaterEditExtDayCycle::loadTrack()
+// {
 // 	// clear the slider
 // 	mKeysSlider->clear();
 // 	mSliderToKey.clear();
@@ -192,681 +243,556 @@ void LLFloaterEditExtDayCycle::loadTrack()
 // 	}
 // 
 // 	syncTimeSlider();
-}
-
-void LLFloaterEditExtDayCycle::applyTrack()
-{
-#if 0
-	LL_DEBUGS() << "Applying track (" << mSliderToKey.size() << ")" << LL_ENDL;
-
-	// if no keys, do nothing
-	if (mSliderToKey.size() == 0)
-	{
-		LL_DEBUGS() << "No keys, not syncing" << LL_ENDL;
-		return;
-	}
-
-	llassert_always(mSliderToKey.size() == mKeysSlider->getValue().size());
-
-	// create a new animation track
-	LLWLParamManager::getInstance()->mDay.clearKeyframes();
-
-	// add the keys one by one
-	for (std::map<std::string, SliderKey>::iterator it = mSliderToKey.begin();
-		it != mSliderToKey.end(); ++it)
-	{
-		LLWLParamManager::getInstance()->mDay.addKeyframe(it->second.time / sHoursPerDay,
-			it->second.keyframe);
-	}
-
-	// set the param manager's track to the new one
-	LLWLParamManager::getInstance()->resetAnimator(
-		mTimeSlider->getCurSliderValue() / sHoursPerDay, false);
-
-	LLWLParamManager::getInstance()->mAnimator.update(
-		LLWLParamManager::getInstance()->mCurParams);
-#endif
-}
-
-void LLFloaterEditExtDayCycle::refreshSkyPresetsList()
-{
-#if 0
-	// Don't allow selecting region skies for a local day cycle,
-	// because thus we may end up with invalid day cycle.
-	bool include_region_skies = getSelectedDayCycle().scope == LLEnvKey::SCOPE_REGION;
-
-	mSkyPresetsCombo->removeall();
-
-	LLWLParamManager::preset_name_list_t region_presets;
-	LLWLParamManager::preset_name_list_t user_presets, sys_presets;
-	LLWLParamManager::instance().getPresetNames(region_presets, user_presets, sys_presets);
-
-	if (include_region_skies)
-	{
-		// Add region presets.
-		for (LLWLParamManager::preset_name_list_t::const_iterator it = region_presets.begin(); it != region_presets.end(); ++it)
-		{
-			std::string preset_name = *it;
-			std::string item_title = preset_name + " (" + getRegionName() + ")";
-			mSkyPresetsCombo->add(preset_name, LLWLParamKey(*it, LLEnvKey::SCOPE_REGION).toStringVal());
-		}
-
-		if (!region_presets.empty())
-		{
-			mSkyPresetsCombo->addSeparator();
-		}
-	}
-
-	// Add user presets.
-	for (LLWLParamManager::preset_name_list_t::const_iterator it = user_presets.begin(); it != user_presets.end(); ++it)
-	{
-		mSkyPresetsCombo->add(*it, LLWLParamKey(*it, LLEnvKey::SCOPE_LOCAL).toStringVal());
-	}
-
-	if (!user_presets.empty())
-	{
-		mSkyPresetsCombo->addSeparator();
-	}
-
-	// Add system presets.
-	for (LLWLParamManager::preset_name_list_t::const_iterator it = sys_presets.begin(); it != sys_presets.end(); ++it)
-	{
-		mSkyPresetsCombo->add(*it, LLWLParamKey(*it, LLEnvKey::SCOPE_LOCAL).toStringVal());
-	}
-
-	// set defaults on combo boxes
-	mSkyPresetsCombo->selectFirstItem();
-#endif
-}
-
-void LLFloaterEditExtDayCycle::refreshDayCyclesList()
-{
-#if 0
-	llassert(isNewDay() == false);
-
-	mDayCyclesCombo->removeall();
-
-#if 0 // Disable editing existing day cycle until the workflow is clear enough.
-	const LLSD& region_day = LLEnvManagerNew::instance().getRegionSettings().getWLDayCycle();
-	if (region_day.size() > 0)
-	{
-		LLWLParamKey key(getRegionName(), LLEnvKey::SCOPE_REGION);
-		mDayCyclesCombo->add(key.name, key.toLLSD());
-		mDayCyclesCombo->addSeparator();
-	}
-#endif
-
-	LLDayCycleManager::preset_name_list_t user_days, sys_days;
-	LLDayCycleManager::instance().getPresetNames(user_days, sys_days);
-
-	// Add user days.
-	for (LLDayCycleManager::preset_name_list_t::const_iterator it = user_days.begin(); it != user_days.end(); ++it)
-	{
-		mDayCyclesCombo->add(*it, LLWLParamKey(*it, LLEnvKey::SCOPE_LOCAL).toLLSD());
-	}
-
-	if (user_days.size() > 0)
-	{
-		mDayCyclesCombo->addSeparator();
-	}
-
-	// Add system days.
-	for (LLDayCycleManager::preset_name_list_t::const_iterator it = sys_days.begin(); it != sys_days.end(); ++it)
-	{
-		mDayCyclesCombo->add(*it, LLWLParamKey(*it, LLEnvKey::SCOPE_LOCAL).toLLSD());
-	}
-
-	mDayCyclesCombo->setLabel(getString("combo_label"));
-#endif
-}
-
-void LLFloaterEditExtDayCycle::onTimeSliderMoved()
-{
-#if 0
-	/// get the slider value
-	F32 val = mTimeSlider->getCurSliderValue() / sHoursPerDay;
-
-	// set the value, turn off animation
-	LLWLParamManager::getInstance()->mAnimator.setDayTime((F64)val);
-	LLWLParamManager::getInstance()->mAnimator.deactivate();
-
-	// then call update once
-	LLWLParamManager::getInstance()->mAnimator.update(
-		LLWLParamManager::getInstance()->mCurParams);
-#endif
-}
-
-void LLFloaterEditExtDayCycle::onKeyTimeMoved()
-{
-#if 0
-	if (mKeysSlider->getValue().size() == 0)
-	{
-		return;
-	}
-
-	// make sure we have a slider
-	const std::string& cur_sldr = mKeysSlider->getCurSlider();
-	if (cur_sldr == "")
-	{
-		return;
-	}
-
-	F32 time24 = mKeysSlider->getCurSliderValue();
-
-	// check to see if a key exists
-	LLWLParamKey key = mSliderToKey[cur_sldr].keyframe;
-	LL_DEBUGS() << "Setting key time: " << time24 << LL_ENDL;
-	mSliderToKey[cur_sldr].time = time24;
-
-	// if it exists, turn on check box
-	mSkyPresetsCombo->selectByValue(key.toStringVal());
-
-	mTimeCtrl->setTime24(time24);
-
-	applyTrack();
-#endif
-}
-
-void LLFloaterEditExtDayCycle::onKeyTimeChanged()
-{
-#if 0
-	// if no keys, skipped
-	if (mSliderToKey.size() == 0)
-	{
-		return;
-	}
-
-	F32 time24 = mTimeCtrl->getTime24();
-
-	const std::string& cur_sldr = mKeysSlider->getCurSlider();
-	mKeysSlider->setCurSliderValue(time24, TRUE);
-	F32 time = mKeysSlider->getCurSliderValue() / sHoursPerDay;
-
-	// now set the key's time in the sliderToKey map
-	LL_DEBUGS() << "Setting key time: " << time << LL_ENDL;
-	mSliderToKey[cur_sldr].time = time;
-
-	applyTrack();
-#endif
-}
-
-void LLFloaterEditExtDayCycle::onKeyPresetChanged()
-{
-#if 0
-	// do nothing if no sliders
-	if (mKeysSlider->getValue().size() == 0)
-	{
-		return;
-	}
-
-	// change the map
-
-	std::string stringVal = mSkyPresetsCombo->getSelectedValue().asString();
-	LLWLParamKey new_key(stringVal);
-	llassert(!new_key.name.empty());
-	const std::string& cur_sldr = mKeysSlider->getCurSlider();
-
-	// if null, don't use
-	if (cur_sldr == "")
-	{
-		return;
-	}
-
-	mSliderToKey[cur_sldr].keyframe = new_key;
-
-	// Apply changes to current day cycle.
-	applyTrack();
-#endif
-}
-
-void LLFloaterEditExtDayCycle::onAddKey()
-{
-#if 0
-	llassert_always(mSliderToKey.size() == mKeysSlider->getValue().size());
-
-	S32 max_sliders;
-	LLEnvKey::EScope scope = LLEnvKey::SCOPE_LOCAL; // *TODO: editing region day cycle
-	switch (scope)
-	{
-		case LLEnvKey::SCOPE_LOCAL:
-			max_sliders = 20; // *HACK this should be LLWLPacketScrubber::MAX_LOCAL_KEY_FRAMES;
-			break;
-		case LLEnvKey::SCOPE_REGION:
-			max_sliders = 12; // *HACK this should be LLWLPacketScrubber::MAX_REGION_KEY_FRAMES;
-			break;
-		default:
-			max_sliders = (S32) mKeysSlider->getMaxValue();
-			break;
-	}
-
-#if 0
-	if ((S32)mSliderToKey.size() >= max_sliders)
-	{
-		LLSD args;
-		args["SCOPE"] = LLEnvManagerNew::getScopeString(scope);
-		args["MAX"] = max_sliders;
-		LLNotificationsUtil::add("DayCycleTooManyKeyframes", args, LLSD(), LLNotificationFunctorRegistry::instance().DONOTHING);
-		return;
-	}
-#endif
-
-	// add the slider key
-	std::string key_val = mSkyPresetsCombo->getSelectedValue().asString();
-	LLWLParamKey sky_params(key_val);
-	llassert(!sky_params.name.empty());
-
-	F32 time = mTimeSlider->getCurSliderValue();
-	addSliderKey(time, sky_params);
-
-	// apply the change to current day cycles
-	applyTrack();
-#endif
-}
-
-#if 0
-void LLFloaterEditExtDayCycle::addSliderKey(F32 time, LLWLParamKey keyframe)
-{
-	// make a slider
-	const std::string& sldr_name = mKeysSlider->addSlider(time);
-	if (sldr_name.empty())
-	{
-		return;
-	}
-
-	// set the key
-	SliderKey newKey(keyframe, mKeysSlider->getCurSliderValue());
-
-	llassert_always(sldr_name != LLStringUtil::null);
-
-	// add to map
-	mSliderToKey.insert(std::pair<std::string, SliderKey>(sldr_name, newKey));
-
-	llassert_always(mSliderToKey.size() == mKeysSlider->getValue().size());
-}
-#endif
-
-#if 0
-LLWLParamKey LLFloaterEditExtDayCycle::getSelectedDayCycle()
-{
-	LLWLParamKey dc_key;
-
-	if (mDayCycleNameEditor->getVisible())
-	{
-		dc_key.name = mDayCycleNameEditor->getText();
-		dc_key.scope = LLEnvKey::SCOPE_LOCAL;
-	}
-	else
-	{
-		LLSD combo_val = mDayCyclesCombo->getValue();
-
-		if (!combo_val.isArray()) // manually typed text
-		{
-			dc_key.name = combo_val.asString();
-			dc_key.scope = LLEnvKey::SCOPE_LOCAL;
-		}
-		else
-		{
-			dc_key.fromLLSD(combo_val);
-		}
-	}
-
-	return dc_key;
-}
-#endif
-
-bool LLFloaterEditExtDayCycle::isNewDay() const
-{
-	return mKey.asString() == "new";
-}
-
-void LLFloaterEditExtDayCycle::dumpTrack()
-{
-#if 0
-	LL_DEBUGS("Windlight") << "Dumping day cycle" << LL_ENDL;
-
-	LLWLDayCycle& cur_dayp = LLWLParamManager::instance().mDay;
-	for (std::map<F32, LLWLParamKey>::iterator it = cur_dayp.mTimeMap.begin(); it != cur_dayp.mTimeMap.end(); ++it)
-	{
-		F32 time = it->first * 24.0f;
-		S32 h = (S32) time;
-		S32 m = (S32) ((time - h) * 60.0f);
-		LL_DEBUGS("Windlight") << llformat("(%.3f) %02d:%02d", time, h, m) << " => " << it->second.name << LL_ENDL;
-	}
-#endif
-}
-
-void LLFloaterEditExtDayCycle::enableEditing(bool enable)
-{
-	mSkyPresetsCombo->setEnabled(enable);
-	mTimeCtrl->setEnabled(enable);
-	getChild<LLPanel>("day_cycle_slider_panel")->setCtrlsEnabled(enable);
-	mSaveButton->setEnabled(enable);
-	mMakeDefaultCheckBox->setEnabled(enable);
-}
-
-void LLFloaterEditExtDayCycle::reset()
-{
-#if 0
-	// clear the slider
-	mKeysSlider->clear();
-	mSliderToKey.clear();
-
-	refreshSkyPresetsList();
-
-	if (isNewDay())
-	{
-		mDayCycleNameEditor->setValue(LLSD());
-		F32 time = 0.5f * sHoursPerDay;
-		mSaveButton->setEnabled(FALSE); // will be enabled as soon as users enters a name
-		mTimeSlider->setCurSliderValue(time);
-
-		addSliderKey(time, LLWLParamKey("Default", LLEnvKey::SCOPE_LOCAL));
-		onKeyTimeMoved(); // update the time control and sky sky combo
-
-		applyTrack();
-	}
-	else
-	{
-		refreshDayCyclesList();
-
-		// Disable controls until a day cycle  to edit is selected.
-		enableEditing(false);
-	}
-#endif
-}
-
-void LLFloaterEditExtDayCycle::saveRegionDayCycle()
-{
-#if 0
-	LLEnvManagerNew& env_mgr = LLEnvManagerNew::instance();
-	LLWLDayCycle& cur_dayp = LLWLParamManager::instance().mDay; // the day cycle being edited
-
-	// Get current day cycle and the sky preset it references.
-	LLSD day_cycle = cur_dayp.asLLSD();
-	LLSD sky_map;
-	cur_dayp.getSkyMap(sky_map);
-
-	// Apply it to the region.
-	LLEnvironmentSettings new_region_settings;
-	new_region_settings.saveParams(day_cycle, sky_map, env_mgr.getRegionSettings().getWaterParams(), 0.0f);
-
-#if 1
-	LLEnvManagerNew::instance().setRegionSettings(new_region_settings);
-#else // Temporary disabled ability to upload new region settings from the Day Cycle Editor.
-	if (!LLEnvManagerNew::instance().sendRegionSettings(new_region_settings))
-	{
-		LL_WARNS() << "Error applying region environment settings" << LL_ENDL;
-		return;
-	}
-
-	setApplyProgress(true);
-#endif
-#endif
-}
-
-void LLFloaterEditExtDayCycle::setApplyProgress(bool started)
-{
-	LLLoadingIndicator* indicator = getChild<LLLoadingIndicator>("progress_indicator");
-
-	indicator->setVisible(started);
-
-	if (started)
-	{
-		indicator->start();
-	}
-	else
-	{
-		indicator->stop();
-	}
-}
-
-bool LLFloaterEditExtDayCycle::getApplyProgress() const
-{
-	return getChild<LLLoadingIndicator>("progress_indicator")->getVisible();
-}
-
-void LLFloaterEditExtDayCycle::onDeleteKey()
-{
-#if 0
-	if (mSliderToKey.size() == 0)
-	{
-		return;
-	}
-	else if (mSliderToKey.size() == 1)
-	{
-		LLNotifications::instance().add("EnvCannotDeleteLastDayCycleKey", LLSD(), LLSD());
-		return;
-	}
-
-	// delete from map
-	const std::string& sldr_name = mKeysSlider->getCurSlider();
-	std::map<std::string, SliderKey>::iterator mIt = mSliderToKey.find(sldr_name);
-	mSliderToKey.erase(mIt);
-
-	mKeysSlider->deleteCurSlider();
-
-	if (mSliderToKey.size() == 0)
-	{
-		return;
-	}
-
-	const std::string& name = mKeysSlider->getCurSlider();
-	mSkyPresetsCombo->selectByValue(mSliderToKey[name].keyframe.toStringVal());
-	F32 time24 = mSliderToKey[name].time;
-
-	mTimeCtrl->setTime24(time24);
-
-	applyTrack();
-#endif
-}
-
-void LLFloaterEditExtDayCycle::onRegionSettingsChange()
-{
-#if 0
-	LL_DEBUGS("Windlight") << "Region settings changed" << LL_ENDL;
-
-	if (getApplyProgress()) // our region settings have being applied
-	{
-		setApplyProgress(false);
-
-		// Change preference if requested.
-		if (mMakeDefaultCheckBox->getValue())
-		{
-			LL_DEBUGS("Windlight") << "Changed environment preference to region settings" << LL_ENDL;
-			LLEnvManagerNew::instance().setUseRegionSettings(true);
-		}
-
-		closeFloater();
-	}
-#endif
-}
-
-void LLFloaterEditExtDayCycle::onRegionChange()
-{
-#if 0
-	LL_DEBUGS("Windlight") << "Region changed" << LL_ENDL;
-
-	// If we're editing the region day cycle
-	if (getSelectedDayCycle().scope == LLEnvKey::SCOPE_REGION)
-	{
-		reset(); // undoes all unsaved changes
-	}
-#endif
-}
-
-void LLFloaterEditExtDayCycle::onRegionSettingsApplied(bool success)
-{
-	LL_DEBUGS("Windlight") << "Region settings applied: " << success << LL_ENDL;
-
-	if (!success)
-	{
-		// stop progress indicator
-		setApplyProgress(false);
-	}
-}
-
-void LLFloaterEditExtDayCycle::onRegionInfoUpdate()
-{
-#if 0
-	LL_DEBUGS("Windlight") << "Region info updated" << LL_ENDL;
-	bool can_edit = true;
-
-	// If we've selected the region day cycle for editing.
-	if (getSelectedDayCycle().scope == LLEnvKey::SCOPE_REGION)
-	{
-		// check whether we have the access
-		can_edit = LLEnvManagerNew::canEditRegionSettings();
-	}
-
-	enableEditing(can_edit);
-#endif
-}
-
-void LLFloaterEditExtDayCycle::onDayCycleNameEdited()
-{
-#if 0
-	// Disable saving a day cycle having empty name.
-	LLWLParamKey key = getSelectedDayCycle();
-	mSaveButton->setEnabled(!key.name.empty());
-#endif
-}
-
-void LLFloaterEditExtDayCycle::onDayCycleSelected()
-{
-#if 0
-
-	LLSD day_data;
-	LLWLParamKey dc_key = getSelectedDayCycle();
-	bool can_edit = true;
-
-	if (dc_key.scope == LLEnvKey::SCOPE_LOCAL)
-	{
-		if (!LLDayCycleManager::instance().getPreset(dc_key.name, day_data))
-		{
-			LL_WARNS() << "No day cycle named " << dc_key.name << LL_ENDL;
-			return;
-		}
-	}
-	else
-	{
-		day_data = LLEnvManagerNew::instance().getRegionSettings().getWLDayCycle();
-		if (day_data.size() == 0)
-		{
-			LL_WARNS() << "Empty region day cycle" << LL_ENDL;
-			llassert(day_data.size() > 0);
-			return;
-		}
-
-		can_edit = LLEnvManagerNew::canEditRegionSettings();
-	}
-
-	// We may need to add or remove region skies from the list.
-	refreshSkyPresetsList();
-
-	F32 slider_time = mTimeSlider->getCurSliderValue() / sHoursPerDay;
-	LLWLParamManager::instance().applyDayCycleParams(day_data, dc_key.scope, slider_time);
-	loadTrack();
-#endif
-	enableEditing(false);
-}
-
-void LLFloaterEditExtDayCycle::onBtnSave()
-{
-#if 0
-	LLDayCycleManager& day_mgr = LLDayCycleManager::instance();
-	LLWLParamKey selected_day = getSelectedDayCycle();
-
-	if (selected_day.scope == LLEnvKey::SCOPE_REGION)
-	{
-		saveRegionDayCycle();
-		closeFloater();
-		return;
-	}
-
-	std::string name = selected_day.name;
-	if (name.empty())
-	{
-		// *TODO: show an alert
-		LL_WARNS() << "Empty day cycle name" << LL_ENDL;
-		return;
-	}
-
-	// Don't allow overwriting system presets.
-	if (day_mgr.isSystemPreset(name))
-	{
-		LLNotificationsUtil::add("WLNoEditDefault");
-		return;
-	}
-
-	// Save, ask for confirmation for overwriting an existing preset.
-	if (day_mgr.presetExists(name))
-	{
-		LLNotificationsUtil::add("WLSavePresetAlert", LLSD(), LLSD(), boost::bind(&LLFloaterEditExtDayCycle::onSaveAnswer, this, _1, _2));
-	}
-	else
-	{
-		// new preset, hence no confirmation needed
-		onSaveConfirmed();
-	}
-#endif
-}
-
-void LLFloaterEditExtDayCycle::onBtnCancel()
-{
-	closeFloater();
-}
-
-bool LLFloaterEditExtDayCycle::onSaveAnswer(const LLSD& notification, const LLSD& response)
-{
-	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-
-	// If they choose save, do it.  Otherwise, don't do anything
-	if (option == 0)
-	{
-		onSaveConfirmed();
-	}
-
-	return false;
-}
-
-void LLFloaterEditExtDayCycle::onSaveConfirmed()
-{
-#if 0
-	std::string name = getSelectedDayCycle().name;
-
-	// Save preset.
-	LLSD data = LLWLParamManager::instance().mDay.asLLSD();
-	LL_DEBUGS("Windlight") << "Saving day cycle " << name << ": " << data << LL_ENDL;
-	LLDayCycleManager::instance().savePreset(name, data);
-
-	// Change preference if requested.
-	if (mMakeDefaultCheckBox->getValue())
-	{
-		LL_DEBUGS("Windlight") << name << " is now the new preferred day cycle" << LL_ENDL;
-		LLEnvManagerNew::instance().setUseDayCycle(name);
-	}
-#endif
-	closeFloater();
-}
-
-void LLFloaterEditExtDayCycle::onDayCycleListChange()
-{
-	if (!isNewDay())
-	{
-		refreshDayCyclesList();
-	}
-}
-
-void LLFloaterEditExtDayCycle::onSkyPresetListChange()
-{
-	refreshSkyPresetsList();
-
-	// Refresh sliders from the currently visible day cycle.
-	loadTrack();
-}
-
+// }
+// 
+// void LLFloaterEditExtDayCycle::applyTrack()
+// {
+// #if 0
+// 	LL_DEBUGS() << "Applying track (" << mSliderToKey.size() << ")" << LL_ENDL;
+// 
+// 	// if no keys, do nothing
+// 	if (mSliderToKey.size() == 0)
+// 	{
+// 		LL_DEBUGS() << "No keys, not syncing" << LL_ENDL;
+// 		return;
+// 	}
+// 
+// 	llassert_always(mSliderToKey.size() == mKeysSlider->getValue().size());
+// 
+// 	// create a new animation track
+// 	LLWLParamManager::getInstance()->mDay.clearKeyframes();
+// 
+// 	// add the keys one by one
+// 	for (std::map<std::string, SliderKey>::iterator it = mSliderToKey.begin();
+// 		it != mSliderToKey.end(); ++it)
+// 	{
+// 		LLWLParamManager::getInstance()->mDay.addKeyframe(it->second.time / sHoursPerDay,
+// 			it->second.keyframe);
+// 	}
+// 
+// 	// set the param manager's track to the new one
+// 	LLWLParamManager::getInstance()->resetAnimator(
+// 		mTimeSlider->getCurSliderValue() / sHoursPerDay, false);
+// 
+// 	LLWLParamManager::getInstance()->mAnimator.update(
+// 		LLWLParamManager::getInstance()->mCurParams);
+// #endif
+// }
+
+// void LLFloaterEditExtDayCycle::refreshDayCyclesList()
+// {
+// #if 0
+// 	llassert(isNewDay() == false);
+// 
+// 	mDayCyclesCombo->removeall();
+// 
+// #if 0 // Disable editing existing day cycle until the workflow is clear enough.
+// 	const LLSD& region_day = LLEnvManagerNew::instance().getRegionSettings().getWLDayCycle();
+// 	if (region_day.size() > 0)
+// 	{
+// 		LLWLParamKey key(getRegionName(), LLEnvKey::SCOPE_REGION);
+// 		mDayCyclesCombo->add(key.name, key.toLLSD());
+// 		mDayCyclesCombo->addSeparator();
+// 	}
+// #endif
+// 
+// 	LLDayCycleManager::preset_name_list_t user_days, sys_days;
+// 	LLDayCycleManager::instance().getPresetNames(user_days, sys_days);
+// 
+// 	// Add user days.
+// 	for (LLDayCycleManager::preset_name_list_t::const_iterator it = user_days.begin(); it != user_days.end(); ++it)
+// 	{
+// 		mDayCyclesCombo->add(*it, LLWLParamKey(*it, LLEnvKey::SCOPE_LOCAL).toLLSD());
+// 	}
+// 
+// 	if (user_days.size() > 0)
+// 	{
+// 		mDayCyclesCombo->addSeparator();
+// 	}
+// 
+// 	// Add system days.
+// 	for (LLDayCycleManager::preset_name_list_t::const_iterator it = sys_days.begin(); it != sys_days.end(); ++it)
+// 	{
+// 		mDayCyclesCombo->add(*it, LLWLParamKey(*it, LLEnvKey::SCOPE_LOCAL).toLLSD());
+// 	}
+// 
+// 	mDayCyclesCombo->setLabel(getString("combo_label"));
+// #endif
+// }
+// 
+// void LLFloaterEditExtDayCycle::onTimeSliderMoved()
+// {
+// #if 0
+// 	/// get the slider value
+// 	F32 val = mTimeSlider->getCurSliderValue() / sHoursPerDay;
+// 
+// 	// set the value, turn off animation
+// 	LLWLParamManager::getInstance()->mAnimator.setDayTime((F64)val);
+// 	LLWLParamManager::getInstance()->mAnimator.deactivate();
+// 
+// 	// then call update once
+// 	LLWLParamManager::getInstance()->mAnimator.update(
+// 		LLWLParamManager::getInstance()->mCurParams);
+// #endif
+// }
+// 
+// void LLFloaterEditExtDayCycle::onKeyTimeMoved()
+// {
+// #if 0
+// 	if (mKeysSlider->getValue().size() == 0)
+// 	{
+// 		return;
+// 	}
+// 
+// 	// make sure we have a slider
+// 	const std::string& cur_sldr = mKeysSlider->getCurSlider();
+// 	if (cur_sldr == "")
+// 	{
+// 		return;
+// 	}
+// 
+// 	F32 time24 = mKeysSlider->getCurSliderValue();
+// 
+// 	// check to see if a key exists
+// 	LLWLParamKey key = mSliderToKey[cur_sldr].keyframe;
+// 	LL_DEBUGS() << "Setting key time: " << time24 << LL_ENDL;
+// 	mSliderToKey[cur_sldr].time = time24;
+// 
+// 	// if it exists, turn on check box
+// 	mSkyPresetsCombo->selectByValue(key.toStringVal());
+// 
+// 	mTimeCtrl->setTime24(time24);
+// 
+// 	applyTrack();
+// #endif
+// }
+// 
+// void LLFloaterEditExtDayCycle::onKeyTimeChanged()
+// {
+// #if 0
+// 	// if no keys, skipped
+// 	if (mSliderToKey.size() == 0)
+// 	{
+// 		return;
+// 	}
+// 
+// 	F32 time24 = mTimeCtrl->getTime24();
+// 
+// 	const std::string& cur_sldr = mKeysSlider->getCurSlider();
+// 	mKeysSlider->setCurSliderValue(time24, TRUE);
+// 	F32 time = mKeysSlider->getCurSliderValue() / sHoursPerDay;
+// 
+// 	// now set the key's time in the sliderToKey map
+// 	LL_DEBUGS() << "Setting key time: " << time << LL_ENDL;
+// 	mSliderToKey[cur_sldr].time = time;
+// 
+// 	applyTrack();
+// #endif
+// }
+// 
+// 
+// void LLFloaterEditExtDayCycle::onAddKey()
+// {
+// #if 0
+// 	llassert_always(mSliderToKey.size() == mKeysSlider->getValue().size());
+// 
+// 	S32 max_sliders;
+// 	LLEnvKey::EScope scope = LLEnvKey::SCOPE_LOCAL; // *TODO: editing region day cycle
+// 	switch (scope)
+// 	{
+// 		case LLEnvKey::SCOPE_LOCAL:
+// 			max_sliders = 20; // *HACK this should be LLWLPacketScrubber::MAX_LOCAL_KEY_FRAMES;
+// 			break;
+// 		case LLEnvKey::SCOPE_REGION:
+// 			max_sliders = 12; // *HACK this should be LLWLPacketScrubber::MAX_REGION_KEY_FRAMES;
+// 			break;
+// 		default:
+// 			max_sliders = (S32) mKeysSlider->getMaxValue();
+// 			break;
+// 	}
+// 
+// #if 0
+// 	if ((S32)mSliderToKey.size() >= max_sliders)
+// 	{
+// 		LLSD args;
+// 		args["SCOPE"] = LLEnvManagerNew::getScopeString(scope);
+// 		args["MAX"] = max_sliders;
+// 		LLNotificationsUtil::add("DayCycleTooManyKeyframes", args, LLSD(), LLNotificationFunctorRegistry::instance().DONOTHING);
+// 		return;
+// 	}
+// #endif
+// 
+// 	// add the slider key
+// 	std::string key_val = mSkyPresetsCombo->getSelectedValue().asString();
+// 	LLWLParamKey sky_params(key_val);
+// 	llassert(!sky_params.name.empty());
+// 
+// 	F32 time = mTimeSlider->getCurSliderValue();
+// 	addSliderKey(time, sky_params);
+// 
+// 	// apply the change to current day cycles
+// 	applyTrack();
+// #endif
+// }
+// 
+// #if 0
+// void LLFloaterEditExtDayCycle::addSliderKey(F32 time, LLWLParamKey keyframe)
+// {
+// 	// make a slider
+// 	const std::string& sldr_name = mKeysSlider->addSlider(time);
+// 	if (sldr_name.empty())
+// 	{
+// 		return;
+// 	}
+// 
+// 	// set the key
+// 	SliderKey newKey(keyframe, mKeysSlider->getCurSliderValue());
+// 
+// 	llassert_always(sldr_name != LLStringUtil::null);
+// 
+// 	// add to map
+// 	mSliderToKey.insert(std::pair<std::string, SliderKey>(sldr_name, newKey));
+// 
+// 	llassert_always(mSliderToKey.size() == mKeysSlider->getValue().size());
+// }
+// #endif
+// 
+// #if 0
+// LLWLParamKey LLFloaterEditExtDayCycle::getSelectedDayCycle()
+// {
+// 	LLWLParamKey dc_key;
+// 
+// 	if (mDayCycleNameEditor->getVisible())
+// 	{
+// 		dc_key.name = mDayCycleNameEditor->getText();
+// 		dc_key.scope = LLEnvKey::SCOPE_LOCAL;
+// 	}
+// 	else
+// 	{
+// 		LLSD combo_val = mDayCyclesCombo->getValue();
+// 
+// 		if (!combo_val.isArray()) // manually typed text
+// 		{
+// 			dc_key.name = combo_val.asString();
+// 			dc_key.scope = LLEnvKey::SCOPE_LOCAL;
+// 		}
+// 		else
+// 		{
+// 			dc_key.fromLLSD(combo_val);
+// 		}
+// 	}
+// 
+// 	return dc_key;
+// }
+// #endif
+// 
+// bool LLFloaterEditExtDayCycle::isNewDay() const
+// {
+// 	return mKey.asString() == "new";
+// }
+// 
+// void LLFloaterEditExtDayCycle::dumpTrack()
+// {
+// #if 0
+// 	LL_DEBUGS("Windlight") << "Dumping day cycle" << LL_ENDL;
+// 
+// 	LLWLDayCycle& cur_dayp = LLWLParamManager::instance().mDay;
+// 	for (std::map<F32, LLWLParamKey>::iterator it = cur_dayp.mTimeMap.begin(); it != cur_dayp.mTimeMap.end(); ++it)
+// 	{
+// 		F32 time = it->first * 24.0f;
+// 		S32 h = (S32) time;
+// 		S32 m = (S32) ((time - h) * 60.0f);
+// 		LL_DEBUGS("Windlight") << llformat("(%.3f) %02d:%02d", time, h, m) << " => " << it->second.name << LL_ENDL;
+// 	}
+// #endif
+// }
+// 
+// void LLFloaterEditExtDayCycle::enableEditing(bool enable)
+// {
+// 	mSkyPresetsCombo->setEnabled(enable);
+// 	mTimeCtrl->setEnabled(enable);
+// 	getChild<LLPanel>("day_cycle_slider_panel")->setCtrlsEnabled(enable);
+// 	mSaveButton->setEnabled(enable);
+// 	mMakeDefaultCheckBox->setEnabled(enable);
+// }
+// 
+// void LLFloaterEditExtDayCycle::reset()
+// {
+// #if 0
+// 	// clear the slider
+// 	mKeysSlider->clear();
+// 	mSliderToKey.clear();
+// 
+// 	refreshSkyPresetsList();
+// 
+// 	if (isNewDay())
+// 	{
+// 		mDayCycleNameEditor->setValue(LLSD());
+// 		F32 time = 0.5f * sHoursPerDay;
+// 		mSaveButton->setEnabled(FALSE); // will be enabled as soon as users enters a name
+// 		mTimeSlider->setCurSliderValue(time);
+// 
+// 		addSliderKey(time, LLWLParamKey("Default", LLEnvKey::SCOPE_LOCAL));
+// 		onKeyTimeMoved(); // update the time control and sky sky combo
+// 
+// 		applyTrack();
+// 	}
+// 	else
+// 	{
+// 		refreshDayCyclesList();
+// 
+// 		// Disable controls until a day cycle  to edit is selected.
+// 		enableEditing(false);
+// 	}
+// #endif
+// }
+// 
+// void LLFloaterEditExtDayCycle::saveRegionDayCycle()
+// {
+// #if 0
+// 	LLEnvManagerNew& env_mgr = LLEnvManagerNew::instance();
+// 	LLWLDayCycle& cur_dayp = LLWLParamManager::instance().mDay; // the day cycle being edited
+// 
+// 	// Get current day cycle and the sky preset it references.
+// 	LLSD day_cycle = cur_dayp.asLLSD();
+// 	LLSD sky_map;
+// 	cur_dayp.getSkyMap(sky_map);
+// 
+// 	// Apply it to the region.
+// 	LLEnvironmentSettings new_region_settings;
+// 	new_region_settings.saveParams(day_cycle, sky_map, env_mgr.getRegionSettings().getWaterParams(), 0.0f);
+// 
+// #if 1
+// 	LLEnvManagerNew::instance().setRegionSettings(new_region_settings);
+// #else // Temporary disabled ability to upload new region settings from the Day Cycle Editor.
+// 	if (!LLEnvManagerNew::instance().sendRegionSettings(new_region_settings))
+// 	{
+// 		LL_WARNS() << "Error applying region environment settings" << LL_ENDL;
+// 		return;
+// 	}
+// 
+// 	setApplyProgress(true);
+// #endif
+// #endif
+// }
+// 
+// void LLFloaterEditExtDayCycle::setApplyProgress(bool started)
+// {
+// 	LLLoadingIndicator* indicator = getChild<LLLoadingIndicator>("progress_indicator");
+// 
+// 	indicator->setVisible(started);
+// 
+// 	if (started)
+// 	{
+// 		indicator->start();
+// 	}
+// 	else
+// 	{
+// 		indicator->stop();
+// 	}
+// }
+// 
+// bool LLFloaterEditExtDayCycle::getApplyProgress() const
+// {
+// 	return getChild<LLLoadingIndicator>("progress_indicator")->getVisible();
+// }
+// 
+// void LLFloaterEditExtDayCycle::onDeleteKey()
+// {
+// #if 0
+// 	if (mSliderToKey.size() == 0)
+// 	{
+// 		return;
+// 	}
+// 	else if (mSliderToKey.size() == 1)
+// 	{
+// 		LLNotifications::instance().add("EnvCannotDeleteLastDayCycleKey", LLSD(), LLSD());
+// 		return;
+// 	}
+// 
+// 	// delete from map
+// 	const std::string& sldr_name = mKeysSlider->getCurSlider();
+// 	std::map<std::string, SliderKey>::iterator mIt = mSliderToKey.find(sldr_name);
+// 	mSliderToKey.erase(mIt);
+// 
+// 	mKeysSlider->deleteCurSlider();
+// 
+// 	if (mSliderToKey.size() == 0)
+// 	{
+// 		return;
+// 	}
+// 
+// 	const std::string& name = mKeysSlider->getCurSlider();
+// 	mSkyPresetsCombo->selectByValue(mSliderToKey[name].keyframe.toStringVal());
+// 	F32 time24 = mSliderToKey[name].time;
+// 
+// 	mTimeCtrl->setTime24(time24);
+// 
+// 	applyTrack();
+// #endif
+// }
+// 
+// void LLFloaterEditExtDayCycle::onRegionSettingsChange()
+// {
+// #if 0
+// 	LL_DEBUGS("Windlight") << "Region settings changed" << LL_ENDL;
+// 
+// 	if (getApplyProgress()) // our region settings have being applied
+// 	{
+// 		setApplyProgress(false);
+// 
+// 		// Change preference if requested.
+// 		if (mMakeDefaultCheckBox->getValue())
+// 		{
+// 			LL_DEBUGS("Windlight") << "Changed environment preference to region settings" << LL_ENDL;
+// 			LLEnvManagerNew::instance().setUseRegionSettings(true);
+// 		}
+// 
+// 		closeFloater();
+// 	}
+// #endif
+// }
+// 
+// void LLFloaterEditExtDayCycle::onRegionChange()
+// {
+// #if 0
+// 	LL_DEBUGS("Windlight") << "Region changed" << LL_ENDL;
+// 
+// 	// If we're editing the region day cycle
+// 	if (getSelectedDayCycle().scope == LLEnvKey::SCOPE_REGION)
+// 	{
+// 		reset(); // undoes all unsaved changes
+// 	}
+// #endif
+// }
+// 
+// void LLFloaterEditExtDayCycle::onRegionSettingsApplied(bool success)
+// {
+// 	LL_DEBUGS("Windlight") << "Region settings applied: " << success << LL_ENDL;
+// 
+// 	if (!success)
+// 	{
+// 		// stop progress indicator
+// 		setApplyProgress(false);
+// 	}
+// }
+// 
+// void LLFloaterEditExtDayCycle::onRegionInfoUpdate()
+// {
+// #if 0
+// 	LL_DEBUGS("Windlight") << "Region info updated" << LL_ENDL;
+// 	bool can_edit = true;
+// 
+// 	// If we've selected the region day cycle for editing.
+// 	if (getSelectedDayCycle().scope == LLEnvKey::SCOPE_REGION)
+// 	{
+// 		// check whether we have the access
+// 		can_edit = LLEnvManagerNew::canEditRegionSettings();
+// 	}
+// 
+// 	enableEditing(can_edit);
+// #endif
+// }
+// 
+// void LLFloaterEditExtDayCycle::onDayCycleNameEdited()
+// {
+// #if 0
+// 	// Disable saving a day cycle having empty name.
+// 	LLWLParamKey key = getSelectedDayCycle();
+// 	mSaveButton->setEnabled(!key.name.empty());
+// #endif
+// }
+// 
+// void LLFloaterEditExtDayCycle::onDayCycleSelected()
+// {
+// #if 0
+// 
+// 	LLSD day_data;
+// 	LLWLParamKey dc_key = getSelectedDayCycle();
+// 	bool can_edit = true;
+// 
+// 	if (dc_key.scope == LLEnvKey::SCOPE_LOCAL)
+// 	{
+// 		if (!LLDayCycleManager::instance().getPreset(dc_key.name, day_data))
+// 		{
+// 			LL_WARNS() << "No day cycle named " << dc_key.name << LL_ENDL;
+// 			return;
+// 		}
+// 	}
+// 	else
+// 	{
+// 		day_data = LLEnvManagerNew::instance().getRegionSettings().getWLDayCycle();
+// 		if (day_data.size() == 0)
+// 		{
+// 			LL_WARNS() << "Empty region day cycle" << LL_ENDL;
+// 			llassert(day_data.size() > 0);
+// 			return;
+// 		}
+// 
+// 		can_edit = LLEnvManagerNew::canEditRegionSettings();
+// 	}
+// 
+// 	// We may need to add or remove region skies from the list.
+// 	refreshSkyPresetsList();
+// 
+// 	F32 slider_time = mTimeSlider->getCurSliderValue() / sHoursPerDay;
+// 	LLWLParamManager::instance().applyDayCycleParams(day_data, dc_key.scope, slider_time);
+// 	loadTrack();
+// #endif
+// 	enableEditing(false);
+// }
+// 
+// bool LLFloaterEditExtDayCycle::onSaveAnswer(const LLSD& notification, const LLSD& response)
+// {
+// 	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+// 
+// 	// If they choose save, do it.  Otherwise, don't do anything
+// 	if (option == 0)
+// 	{
+// 		onSaveConfirmed();
+// 	}
+// 
+// 	return false;
+// }
+// 
+// void LLFloaterEditExtDayCycle::onSaveConfirmed()
+// {
+// #if 0
+// 	std::string name = getSelectedDayCycle().name;
+// 
+// 	// Save preset.
+// 	LLSD data = LLWLParamManager::instance().mDay.asLLSD();
+// 	LL_DEBUGS("Windlight") << "Saving day cycle " << name << ": " << data << LL_ENDL;
+// 	LLDayCycleManager::instance().savePreset(name, data);
+// 
+// 	// Change preference if requested.
+// 	if (mMakeDefaultCheckBox->getValue())
+// 	{
+// 		LL_DEBUGS("Windlight") << name << " is now the new preferred day cycle" << LL_ENDL;
+// 		LLEnvManagerNew::instance().setUseDayCycle(name);
+// 	}
+// #endif
+// 	closeFloater();
+// }
+// 
+// void LLFloaterEditExtDayCycle::onDayCycleListChange()
+// {
+// 	if (!isNewDay())
+// 	{
+// 		refreshDayCyclesList();
+// 	}
+// }
+// 
+// void LLFloaterEditExtDayCycle::onSkyPresetListChange()
+// {
+// 	refreshSkyPresetsList();
+// 
+// 	// Refresh sliders from the currently visible day cycle.
+// 	loadTrack();
+// }
+// 
 // static
-std::string LLFloaterEditExtDayCycle::getRegionName()
-{
-	return gAgent.getRegion() ? gAgent.getRegion()->getName() : LLTrans::getString("Unknown");
-}
+// std::string LLFloaterEditExtDayCycle::getRegionName()
+// {
+// 	return gAgent.getRegion() ? gAgent.getRegion()->getName() : LLTrans::getString("Unknown");
+// }
diff --git a/indra/newview/llfloatereditextdaycycle.h b/indra/newview/llfloatereditextdaycycle.h
index bed5db14b209a20934214a43eb867c7ccd053990..8b5a087edb4dcdbb1a7443e0facc8d5774bf3fd4 100644
--- a/indra/newview/llfloatereditextdaycycle.h
+++ b/indra/newview/llfloatereditextdaycycle.h
@@ -28,6 +28,8 @@
 #define LL_LLFLOATEREDITEXTDAYCYCLE_H
 
 #include "llfloater.h"
+#include "llsettingsdaycycle.h"
+#include <boost/signals2.hpp>
 
 class LLCheckBoxCtrl;
 class LLComboBox;
@@ -43,90 +45,92 @@ class LLFloaterEditExtDayCycle : public LLFloater
 	LOG_CLASS(LLFloaterEditExtDayCycle);
 
 public:
-	LLFloaterEditExtDayCycle(const LLSD &key);
-
-	/*virtual*/	BOOL	postBuild();
-	/*virtual*/ void	onOpen(const LLSD& key);
-	/*virtual*/ void	onClose(bool app_quitting);
-	/*virtual*/ void	draw();
-
-private:
-
-	/// sync the time slider with day cycle structure
-	void syncTimeSlider();
-
-	// 	makes sure key slider has what's in day cycle
-	void loadTrack();
+    typedef boost::signals2::signal<void(LLSettingsDay::ptr_t)>            edit_commit_signal_t;
+    typedef boost::signals2::connection     connection_t;
 
-	/// makes sure day cycle data structure has what's in menu
-	void applyTrack();
+	LLFloaterEditExtDayCycle(const LLSD &key);
 
-	/// refresh the sky presets combobox
-	void refreshSkyPresetsList();
+    BOOL	postBuild();
+ 	void	onOpen(const LLSD& key);
+ 	void	onClose(bool app_quitting);
 
-	/// refresh the day cycle combobox
-	void refreshDayCyclesList();
+    void    onVisibilityChange(BOOL new_visibility);
 
-	/// add a slider to the track
-//	void addSliderKey(F32 time, LLWLParamKey keyframe);
+// 	/*virtual*/ void	draw();
+    connection_t setEditCommitSignal(edit_commit_signal_t::slot_type cb);
 
-	void initCallbacks();
-//	LLWLParamKey getSelectedDayCycle();
-	bool isNewDay() const;
-	void dumpTrack();
-	void enableEditing(bool enable);
-	void reset();
-	void saveRegionDayCycle();
+private:
 
-	void setApplyProgress(bool started);
-	bool getApplyProgress() const;
+// 	/// sync the time slider with day cycle structure
+// 	void syncTimeSlider();
+// 
+// 	// 	makes sure key slider has what's in day cycle
+// 	void loadTrack();
+// 
+// 	/// makes sure day cycle data structure has what's in menu
+// 	void applyTrack();
+// 
+// 	/// refresh the sky presets combobox
+    void refreshSkyPresetsList();
 
-	void onTimeSliderMoved();	/// time slider moved
-	void onKeyTimeMoved();		/// a key frame moved
-	void onKeyTimeChanged();	/// a key frame's time changed
-	void onKeyPresetChanged();	/// sky preset selected
-	void onAddKey();			/// new key added on slider
-	void onDeleteKey();			/// a key frame deleted
+    void onDayPresetChanged();	/// sky preset selected
 
-	void onRegionSettingsChange();
-	void onRegionChange();
-	void onRegionSettingsApplied(bool success);
-	void onRegionInfoUpdate();
+    void onBtnSave();
+    void onBtnCancel();
 
-	void onDayCycleNameEdited();
-	void onDayCycleSelected();
-	void onBtnSave();
-	void onBtnCancel();
+// 	/// refresh the day cycle combobox
+// 	void refreshDayCyclesList();
+// 
+// 	/// add a slider to the track
+// //	void addSliderKey(F32 time, LLWLParamKey keyframe);
+// 
+// 	void initCallbacks();
+// //	LLWLParamKey getSelectedDayCycle();
+// 	bool isNewDay() const;
+// 	void dumpTrack();
+// 	void enableEditing(bool enable);
+// 	void reset();
+// 	void saveRegionDayCycle();
+// 
+// 	void setApplyProgress(bool started);
+// 	bool getApplyProgress() const;
+// 
+// 	void onTimeSliderMoved();	/// time slider moved
+// 	void onKeyTimeMoved();		/// a key frame moved
+// 	void onKeyTimeChanged();	/// a key frame's time changed
+// 	void onAddKey();			/// new key added on slider
+// 	void onDeleteKey();			/// a key frame deleted
+// 
+// 	void onRegionSettingsChange();
+// 	void onRegionChange();
+// 	void onRegionSettingsApplied(bool success);
+// 	void onRegionInfoUpdate();
+// 
+// 	void onDayCycleNameEdited();
+// 	void onDayCycleSelected();
+// 
+// 	bool onSaveAnswer(const LLSD& notification, const LLSD& response);
+// 	void onSaveConfirmed();
+// 
+// 	void onDayCycleListChange();
+// 	void onSkyPresetListChange();
+// 
+// 	static std::string getRegionName();
 
-	bool onSaveAnswer(const LLSD& notification, const LLSD& response);
-	void onSaveConfirmed();
+    LLSettingsDay::ptr_t    mSavedDay;
+    LLSettingsDay::ptr_t    mEditDay;
 
-	void onDayCycleListChange();
-	void onSkyPresetListChange();
+    LLComboBox*			mDayPresetsCombo;
+    LLButton*			mSaveButton;
+    LLButton*			mCancelButton;
 
-	static std::string getRegionName();
+    edit_commit_signal_t    mCommitSignal;
 
-	/// convenience class for holding keyframes mapped to sliders
-// 	struct SliderKey
-// 	{
-// 	public:
-// 		SliderKey(LLWLParamKey kf, F32 t) : keyframe(kf), time(t) {}
-// 		SliderKey() : keyframe(), time(0.f) {} // Don't use this default constructor
-// 
-// 		LLWLParamKey keyframe;
-// 		F32 time;
-// 	};
-
-	static const F32 sHoursPerDay;
-
-	LLLineEditor*		mDayCycleNameEditor;
-	LLComboBox*			mDayCyclesCombo;
-	LLMultiSliderCtrl*	mTimeSlider;
-	LLMultiSliderCtrl*	mKeysSlider;
-	LLComboBox*			mSkyPresetsCombo;
-	LLTimeCtrl*			mTimeCtrl;
-	LLCheckBoxCtrl*		mMakeDefaultCheckBox;
-	LLButton*			mSaveButton;
+//	LLComboBox*			mDayCyclesCombo;
+// 	LLMultiSliderCtrl*	mTimeSlider;
+// 	LLMultiSliderCtrl*	mKeysSlider;
+    // 	LLTimeCtrl*			mTimeCtrl;
+// 	LLCheckBoxCtrl*		mMakeDefaultCheckBox;
 
 	// map of sliders to parameters
 //	std::map<std::string, SliderKey> mSliderToKey;
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 578c85470e64f424ff433f21a6d1e478b4bc0302..bf965afbe101945d632ce47ceddab21662e09985 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -190,6 +190,8 @@ class LLPanelRegionEnvironment : public LLPanelEnvironmentInfo
 protected:
     virtual void doApply();
 
+    virtual void doEditCommited(LLSettingsDay::ptr_t &newday);
+
 private:
     LLViewerRegion * mLastRegion;
 };
@@ -3437,3 +3439,8 @@ void LLPanelRegionEnvironment::doApply()
         LLEnvironment::instance().updateRegion(mEditingDayCycle, daylength.value(), dayoffset_s.value());
     }
 }
+
+void LLPanelRegionEnvironment::doEditCommited(LLSettingsDay::ptr_t &newday)
+{
+    mEditingDayCycle = newday;
+}
diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h
index 61bf33af2ff69d018852186b8e218b5cea68343a..6d64ae1d60643bd7348339ec1b54a5af882916a4 100644
--- a/indra/newview/llfloaterregioninfo.h
+++ b/indra/newview/llfloaterregioninfo.h
@@ -412,67 +412,6 @@ class LLPanelEstateCovenant : public LLPanelRegionInfo
 
 /////////////////////////////////////////////////////////////////////////////
 
-#if 0
-class LLPanelEnvironmentInfo : public LLPanelRegionInfo
-{
-	LOG_CLASS(LLPanelEnvironmentInfo);
-
-public:
-	LLPanelEnvironmentInfo();
-
-	// LLPanel
-	/*virtual*/ BOOL postBuild();
-	/*virtual*/ void onOpen(const LLSD& key);
-
-	// LLView
-	/*virtual*/ void onVisibilityChange(BOOL new_visibility);
-
-	// LLPanelRegionInfo
-	/*virtual*/ bool refreshFromRegion(LLViewerRegion* region);
-
-private:
-	void refresh();
-	void setControlsEnabled(bool enabled);
-	void setApplyProgress(bool started);
-	void setDirty(bool dirty);
-
-	void sendRegionSunUpdate();
-	void fixEstateSun();
-
-	void populateWaterPresetsList();
-	void populateSkyPresetsList();
-	void populateDayCyclesList();
-
-	bool getSelectedWaterParams(LLSD& water_params);
-	bool getSelectedSkyParams(LLSD& sky_params, std::string& preset_name);
-	bool getSelectedDayCycleParams(LLSD& day_cycle, LLSD& sky_map, short& scope);
-
-	void onSwitchRegionSettings();
-	void onSwitchDayCycle();
-
-	void onSelectWaterPreset();
-	void onSelectSkyPreset();
-	void onSelectDayCycle();
-
-	void onBtnApply();
-	void onBtnCancel();
-
-	void onRegionSettingschange();
-	void onRegionSettingsApplied(bool ok);
-
-	/// New environment settings that are being applied to the region.
-//	LLEnvironmentSettings	mNewRegionSettings;
-
-	bool			mEnableEditing;
-
-	LLRadioGroup*	mRegionSettingsRadioGroup;
-	LLRadioGroup*	mDayCycleSettingsRadioGroup;
-
-	LLComboBox*		mWaterPresetCombo;
-	LLComboBox*		mSkyPresetCombo;
-	LLComboBox*		mDayCyclePresetCombo;
-};
-#endif
 
 class LLPanelRegionExperiences : public LLPanelRegionInfo
 {
diff --git a/indra/newview/llpanelenvironment.cpp b/indra/newview/llpanelenvironment.cpp
index b606e1de08c225edca8a488efd72b86aab07b0ae..c9e29e3e79b51580d6a82e2aae5bb41aefe89429 100644
--- a/indra/newview/llpanelenvironment.cpp
+++ b/indra/newview/llpanelenvironment.cpp
@@ -37,6 +37,10 @@
 #include "llslurl.h"
 #include "lllayoutstack.h"
 
+#include "llfloater.h"
+#include "llfloaterreg.h"
+#include "llfloatereditextdaycycle.h"
+
 static LLPanelInjector<LLPanelEnvironmentInfo> register_environment_panel("environment_panel");
 
 LLPanelEnvironmentInfo::LLPanelEnvironmentInfo(): 
@@ -329,7 +333,11 @@ void LLPanelEnvironmentInfo::setDirty(bool dirty)
 void LLPanelEnvironmentInfo::onSwitchDefaultSelection()
 {
     bool use_defaults = mRegionSettingsRadioGroup->getSelectedIndex() == 0;
-    getChild<LLView>("user_environment_settings")->setEnabled(!use_defaults);
+    
+    getChild<LLView>("edit_btn")->setEnabled(!use_defaults);
+
+    mDayLengthSlider->setEnabled(!use_defaults);
+    mDayOffsetSlider->setEnabled(!use_defaults);
 
     setDirty(true);
 }
@@ -352,8 +360,25 @@ void LLPanelEnvironmentInfo::onBtnCancel()
 
 void LLPanelEnvironmentInfo::onBtnEdit()
 {
+    LLFloaterEditExtDayCycle *dayeditor = (LLFloaterEditExtDayCycle *)LLFloaterReg::getInstance("env_edit_extdaycycle");
+
+    if (dayeditor)
+    {
+        dayeditor->setEditCommitSignal(boost::bind(&LLPanelEnvironmentInfo::onEditiCommited, this, _1));
+        dayeditor->openFloater();
+    }
+}
+
+void LLPanelEnvironmentInfo::onEditiCommited(LLSettingsDay::ptr_t newday)
+{
+    doEditCommited(newday);
 }
 
+void LLPanelEnvironmentInfo::doEditCommited(LLSettingsDay::ptr_t &newday)
+{
+    mEditingDayCycle = newday;
+    /*TODO pure virtual*/
+}
 
 // void LLPanelEnvironmentInfo::onRegionSettingschange()
 // {
diff --git a/indra/newview/llpanelenvironment.h b/indra/newview/llpanelenvironment.h
index 8b5238d3e2ac5ff40309140b9d2ba14afa7d9992..4f62488f21ee70c84d34f9443f9c8983d228f229 100644
--- a/indra/newview/llpanelenvironment.h
+++ b/indra/newview/llpanelenvironment.h
@@ -63,7 +63,10 @@ class LLPanelEnvironmentInfo : public LLPanel
     void onBtnCancel();
     void onBtnEdit();
 
+    void onEditiCommited(LLSettingsDay::ptr_t newday);
+
     virtual void doApply(); // = 0;
+    virtual void doEditCommited(LLSettingsDay::ptr_t &newday);
 
     /// New environment settings that are being applied to the region.
     //	LLEnvironmentSettings	mNewRegionSettings;
diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp
index 7756d288795706029857e6f32c95f4a5bd63f746..80cb8c8357d0de29777e78b7cc9ec63d66f7d2f1 100644
--- a/indra/newview/llsettingsvo.cpp
+++ b/indra/newview/llsettingsvo.cpp
@@ -263,8 +263,8 @@ LLSettingsWater::ptr_t LLSettingsVOWater::buildFromLegacyPreset(const std::strin
     LLSD results = LLSettingsWater::settingValidation(newsettings, validations);
     if (!results["success"].asBoolean())
     {
-        LL_WARNS("SETTINGS") << "Water setting validation failed!\n" << results << LL_ENDL;
-        LLSettingsWater::ptr_t();
+        LL_WARNS("SETTINGS") << "Water setting validation failed!: " << results << LL_ENDL;
+        return LLSettingsWater::ptr_t();
     }
 
     LLSettingsWater::ptr_t waterp = boost::make_shared<LLSettingsVOWater>(newsettings);
@@ -292,8 +292,8 @@ LLSettingsWater::ptr_t LLSettingsVOWater::buildDefaultWater()
     LLSD results = LLSettingsWater::settingValidation(settings, validations);
     if (!results["success"].asBoolean())
     {
-        LL_WARNS("SETTINGS") << "Water setting validation failed!\n" << results << LL_ENDL;
-        LLSettingsWater::ptr_t();
+        LL_WARNS("SETTINGS") << "Water setting validation failed!: " << results << LL_ENDL;
+        return LLSettingsWater::ptr_t();
     }
 
     LLSettingsWater::ptr_t waterp = boost::make_shared<LLSettingsVOWater>(settings);
@@ -308,8 +308,8 @@ LLSettingsWater::ptr_t LLSettingsVOWater::buildClone()
     LLSD results = LLSettingsWater::settingValidation(settings, validations);
     if (!results["success"].asBoolean())
     {
-        LL_WARNS("SETTINGS") << "Water setting validation failed!\n" << results << LL_ENDL;
-        LLSettingsWater::ptr_t();
+        LL_WARNS("SETTINGS") << "Water setting validation failed!: " << results << LL_ENDL;
+        return LLSettingsWater::ptr_t();
     }
 
     LLSettingsWater::ptr_t waterp = boost::make_shared<LLSettingsVOWater>(settings);
@@ -414,31 +414,48 @@ LLSettingsVODay::LLSettingsVODay():
 LLSettingsDay::ptr_t LLSettingsVODay::buildFromLegacyPreset(const std::string &name, const LLSD &oldsettings)
 {
     LLSD newsettings(defaults());
+    std::set<std::string> framenames;
 
     newsettings[SETTING_NAME] = name;
-    newsettings[SETTING_DAYLENGTH] = static_cast<S32>(MINIMUM_DAYLENGTH);
 
     LLSD watertrack = LLSDArray(
         LLSDMap(SETTING_KEYKFRAME, LLSD::Real(0.0f))
-        (SETTING_KEYNAME, "Default"));
+        (SETTING_KEYNAME, "water:Default"));
 
     LLSD skytrack = LLSD::emptyArray();
 
     for (LLSD::array_const_iterator it = oldsettings.beginArray(); it != oldsettings.endArray(); ++it)
     {
+        std::string framename = (*it)[1].asString();
         LLSD entry = LLSDMap(SETTING_KEYKFRAME, (*it)[0].asReal())
-            (SETTING_KEYNAME, (*it)[1].asString());
+            (SETTING_KEYNAME, "sky:" + framename);
+        framenames.insert(framename);
         skytrack.append(entry);
     }
 
     newsettings[SETTING_TRACKS] = LLSDArray(watertrack)(skytrack);
 
+    LLSD frames(LLSD::emptyMap());
+
+    {
+        LLSettingsWater::ptr_t pwater = LLEnvironment::instance().findWaterByName("Default");
+        frames["water:Default"] = pwater->getSettings();
+    }
+
+    for (std::set<std::string>::iterator itn = framenames.begin(); itn != framenames.end(); ++itn)
+    {
+        LLSettingsSky::ptr_t psky = LLEnvironment::instance().findSkyByName(*itn);
+        frames["sky:" + (*itn)] = psky->getSettings();
+    }
+
+    newsettings[SETTING_FRAMES] = frames;
+
     LLSettingsDay::validation_list_t validations = LLSettingsDay::validationList();
     LLSD results = LLSettingsDay::settingValidation(newsettings, validations);
     if (!results["success"].asBoolean())
     {
-        LL_WARNS("SETTINGS") << "Day setting validation failed!\n" << results << LL_ENDL;
-        LLSettingsDay::ptr_t();
+        LL_WARNS("SETTINGS") << "Day setting validation failed!: " << results << LL_ENDL;
+        return LLSettingsDay::ptr_t();
     }
 
 
@@ -463,51 +480,55 @@ LLSettingsDay::ptr_t LLSettingsVODay::buildFromLegacyPreset(const std::string &n
 
 LLSettingsDay::ptr_t LLSettingsVODay::buildFromLegacyMessage(const LLUUID &regionId, LLSD daycycle, LLSD skydefs, LLSD waterdef)
 {
-    LLSettingsWater::ptr_t water = LLSettingsVOWater::buildFromLegacyPreset("Region", waterdef);
-
-    if (!water)
-    {
-        LL_WARNS("WindlightCaps") << "Water construction failed." << LL_ENDL;
-        return LLSettingsDay::ptr_t();
-    }
-
-    LLEnvironment::namedSettingMap_t skys;
+    LLSD frames(LLSD::emptyMap());
 
     for (LLSD::map_iterator itm = skydefs.beginMap(); itm != skydefs.endMap(); ++itm)
     {
-        std::string name = (*itm).first;
-        LLSettingsSky::ptr_t sky = LLSettingsVOSky::buildFromLegacyPreset(name, (*itm).second);
+        LLSD newsettings = LLSettingsSky::translateLegacySettings((*itm).second);
+        std::string newname = "sky:" + (*itm).first;
 
-        if (!sky)
-        {
-            LL_WARNS("WindlightCaps") << "Sky construction failed." << LL_ENDL;
-            return LLSettingsDay::ptr_t();
-        }
+        newsettings[SETTING_NAME] = newname;
+        frames[newname] = newsettings;
 
-        skys[name] = sky;
-        LL_WARNS("WindlightCaps") << "created region sky '" << name << "'" << LL_ENDL;
+        LL_WARNS("SETTINGS") << "created region sky '" << newname << "'" << LL_ENDL;
     }
 
-    LLSettingsDay::ptr_t dayp = buildFromLegacyPreset("Region (legacy)", daycycle);
+    LLSD watersettings = LLSettingsWater::translateLegacySettings(waterdef);
+    std::string watername = "water:"+ watersettings[SETTING_NAME].asString();
+    watersettings[SETTING_NAME] = watername;
+    frames[watername] = watersettings;
 
-    dayp->setWaterAtKeyframe(water, 0.0f);
+    LLSD watertrack = LLSDArray(
+            LLSDMap(SETTING_KEYKFRAME, LLSD::Real(0.0f))
+            (SETTING_KEYNAME, watername));
 
-    for (LLSD::array_iterator ita = daycycle.beginArray(); ita != daycycle.endArray(); ++ita)
+    LLSD skytrack(LLSD::emptyArray());
+    for (LLSD::array_const_iterator it = daycycle.beginArray(); it != daycycle.endArray(); ++it)
     {
-        F32 frame = (*ita)[0].asReal();
-        std::string name = (*ita)[1].asString();
-
-        LLEnvironment::namedSettingMap_t::iterator it = skys.find(name);
+        LLSD entry = LLSDMap(SETTING_KEYKFRAME, (*it)[0].asReal())
+            (SETTING_KEYNAME, "sky:" + (*it)[1].asString());
+        skytrack.append(entry);
+    }
 
-        if (it == skys.end())
-            continue;
-        dayp->setSkyAtKeyframe(boost::static_pointer_cast<LLSettingsSky>((*it).second), frame, 1);
+    LLSD newsettings = LLSDMap
+        ( SETTING_NAME, "Region (legacy)" )
+        ( SETTING_TRACKS, LLSDArray(watertrack)(skytrack))
+        ( SETTING_FRAMES, frames );
 
-        LL_WARNS("WindlightCaps") << "Added '" << name << "' to region day cycle at " << frame << LL_ENDL;
+    LLSettingsSky::validation_list_t validations = LLSettingsSky::validationList();
+    LLSD results = LLSettingsDay::settingValidation(newsettings, validations);
+    if (!results["success"].asBoolean())
+    {
+        LL_WARNS("SETTINGS") << "Day setting validation failed!:" << results << LL_ENDL;
+        LLSettingsDay::ptr_t();
     }
 
-    dayp->setInitialized();
-
+    LLSettingsDay::ptr_t dayp = boost::make_shared<LLSettingsVODay>(newsettings);
+    
+    if (dayp)
+    {
+        dayp->setInitialized();
+    }
     return dayp;
 }
 
@@ -555,13 +576,13 @@ LLSettingsDay::ptr_t LLSettingsVODay::buildClone()
     LLSD results = LLSettingsDay::settingValidation(settings, validations);
     if (!results["success"].asBoolean())
     {
-        LL_WARNS("SETTINGS") << "Water setting validation failed!\n" << results << LL_ENDL;
+        LL_WARNS("SETTINGS") << "Day setting validation failed!\n" << results << LL_ENDL;
         LLSettingsDay::ptr_t();
     }
 
-
     LLSettingsDay::ptr_t dayp = boost::make_shared<LLSettingsVODay>(settings);
 
+    dayp->initialize();
     return dayp;
 }
 
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index e133ef22a1be08662a15f5f94b5d6b91caee0311..63166fe4a8f6b5ca95ab14f6b4193313f96a7cdb 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -226,7 +226,7 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("env_edit_water", "floater_edit_water_preset.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEditWater>);
 	LLFloaterReg::add("env_edit_day_cycle", "floater_edit_day_cycle.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEditDayCycle>);
 
-    LLFloaterReg::add("env_edit_extdaycycle", "floater_edit_ext_daycycle.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEditExtDayCycle>);
+    LLFloaterReg::add("env_edit_extdaycycle", "floater_edit_ext_day_cycle.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEditExtDayCycle>);
 
 
     LLFloaterReg::add("event", "floater_event.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEvent>);
diff --git a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml
index d9a3ad0c4b1af36f4ed671aee5ca02d0fb7e24a2..0f0acea832c0691b5f27ef24eebd40c32a4a12f4 100644
--- a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml
+++ b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
- legacy_header_height="18"
- height="381"
- layout="topleft"
- name="Edit Day cycle"
- help_topic="day_presets"
- save_rect="true"
- title="Edit Day Cycle"
- width="705">
+        legacy_header_height="18"
+        height="500"
+        layout="topleft"
+        name="env_edit_extdaycycle"
+        help_topic="day_presets"
+        save_rect="true"
+        title="Edit Day Cycle"
+        width="705">
 
     <string name="title_new">Create a New Day Cycle</string>
     <string name="title_edit">Edit Day Cycle</string>
@@ -15,471 +15,130 @@
     <string name="hint_edit">To edit your day cycle, adjust the controls below and click "Save".</string>
     <string name="combo_label">-Select a preset-</string>
 
-    <text
-     follows="top|left|right"
-     height="10"
-     layout="topleft"
-     left="10"
-     name="hint"
-     top="25"
-     width="685" />
-    <text
-     follows="top|left|right"
-     font="SansSerif"
-     height="10"
-     layout="topleft"
-     left="10"
-     name="label"
-     top_pad="25"
-     width="120">
-     Preset Name:
-    </text>
-    <combo_box
-     allow_text_entry="true"
-     follows="top|left"
-     layout="topleft"
-     left_pad="10"
-     max_chars="100"
-     name="day_cycle_combo"
-     top_delta="-5"
-     width="200" />
-    <line_editor
-     height="20"
-     left_delta="0"
-     name="day_cycle_name"
-     top_delta="0"
-     visible="true"
-     width="200" />
-    <text
-     follows="top|left|right"
-     height="95"
-     layout="topleft"
-     left_pad="10"
-     name="note"
-     top_delta="0"
-     width="345"
-     wrap="true">
-     Note: if you change the name of your preset, you will be creating a new preset and the existing preset will not be changed.
-    </text>
- <!--======== Controls panel ========-->
-    <text
-     follows="left|top|right"
-     height="10"
-     layout="topleft"
-     left="10"    
-     name="hint_item1"
-     top="100"
-     width="300">
-     - Click on a tab to edit the specific sky settings and time.
-    </text>
-    <text
-     follows="left|top|right"
-     height="10"
-     layout="topleft"    
-     name="hint_item2"
-     top_pad="10"
-     width="300">
-     - Click and drag the tabs to set the transition times.
-    </text>
-    <text
-     follows="left|top|right"
-     height="10"
-     layout="topleft"
-     name="hint_item3"
-     top_pad="10"
-     width="300">
-     - Use the scrubber to preview your day cycle.
-    </text>
-    <panel
-     follows="top|left"
-     height="100"
-     name="day_cycle_slider_panel"
-     layout="topleft"
-     left_delta="25"
-     top_pad="15"
-     width="660">
-        <multi_slider
-         can_edit_text="true"
-         control_name="WLTimeSlider"
-         decimal_digits="0"
-         draw_track="false"
-         follows="bottom"
-         height="10"
-         increment="0.0833333"
-         initial_value="0"
-         layout="topleft"
-         left="20"
-         max_sliders="20"
-         max_val="24"
-         name="WLTimeSlider"
-         show_text="false"
-         top_pad="0"
-         use_triangle="true"
-         width="525" />
-        <multi_slider
-         can_edit_text="true"
-         control_name="WLDayCycleKeys"
-         decimal_digits="0"
-         follows="bottom"
-         height="10"
-         increment="0.0833333"
-         initial_value="0"
-         layout="topleft"
-         left_delta="0"
-         max_sliders="20"
-         max_val="24"
-         name="WLDayCycleKeys"
-         show_text="false"
-         top_pad="15"
-         width="525" />
-        <button
-         height="20"
-         label="Add Key"
-         label_selected="Add Key"
-         layout="topleft"
-         left_pad="20"
-         name="WLAddKey"
-         top_delta="-18"
-         width="96" />
-        <button
-         height="20"
-         label="Delete Key"
-         label_selected="Delete Key"
-         layout="topleft"
-         name="WLDeleteKey"
-         top_pad="5"
-         width="96" />
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         height="16"
-         layout="topleft"
-         left="8"
-         name="WL12am"
-         top="74"
-         width="55">
-         12am
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         height="16"
-         layout="topleft"
-         left_pad="10"
-         name="WL3am"
-         top_delta="0"
-         width="55">
-            3am
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         height="16"
-         layout="topleft"
-         left_pad="10"
-         name="WL6am"
-         top_delta="0"
-         width="55">
-            6am
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         height="16"
-         layout="topleft"
-         left_pad="10"
-         name="WL9amHash"
-         top_delta="0"
-         width="55">
-            9am
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         height="16"
-         layout="topleft"
-         left_pad="10"
-         name="WL12pmHash"
-         top_delta="0"
-         width="55">
-            12pm
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         height="16"
-         layout="topleft"
-         left_pad="10"
-         name="WL3pm"
-         top_delta="0"
-         width="55">
-            3pm
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         height="16"
-         layout="topleft"
-         left_pad="10"
-         name="WL6pm"
-         top_delta="0"
-         width="55">
-            6pm
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         height="16"
-         layout="topleft"
-         left_pad="10"
-         name="WL9pm"
-         top_delta="0"
-         width="55">
-            9pm
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         height="16"
-         layout="topleft"
-         left_pad="10"
-         name="WL12am2"
-         top_delta="0"
-         width="55">
-            12am
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         font="SansSerif"
-         height="14"
-         layout="topleft"
-         left="20"
-         name="WL12amHash"
-         top="54"
-         width="6">
-            |
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         font="SansSerif"
-         height="11"
-         layout="topleft"
-         left_pad="59"
-         name="WL3amHash"
-         top_delta="3"
-         width="6">
-            I
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         font="SansSerif"
-         height="14"
-         layout="topleft"
-         left_pad="59"
-         name="WL6amHash"
-         top_delta="-3"
-         width="6">
-            |
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         font="SansSerif"
-         height="11"
-         layout="topleft"
-         left_pad="59"
-         name="WL9amHash2"
-         top_delta="3"
-         width="6">
-            I
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         font="SansSerif"
-         height="14"
-         layout="topleft"
-         left_pad="59"
-         name="WL12pmHash2"
-         top_delta="-3"
-         width="6">
-            |
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         font="SansSerif"
-         height="11"
-         layout="topleft"
-         left_pad="59"
-         name="WL3pmHash"
-         top_delta="3"
-         width="6">
-            I
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         font="SansSerif"
-         height="14"
-         layout="topleft"
-         left_pad="59"
-         name="WL6pmHash"
-         top_delta="-3"
-         width="6">
-            |
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         font="SansSerif"
-         height="11"
-         layout="topleft"
-         left_pad="59"
-         name="WL9pmHash"
-         top_delta="3"
-         width="6">
-            I
-        </text>
-        <text
-         type="string"
-         length="1"
-         border_visible="true"
-         follows="left|top|right"
-         font="SansSerif"
-         height="14"
-         layout="topleft"
-         left_pad="59"
-         name="WL12amHash2"
-         top_delta="-3"
-         width="6">
-         |
-        </text>
-    </panel>
-    <text
-     type="string"
-     length="1"
-     border_visible="true"
-     follows="left|top|right"
-     font="SansSerif"
-     height="16"
-     layout="topleft"
-     left_delta="192"
-     name="WLCurKeyPresetText"
-     top_pad="10"
-     width="80">
-        Sky Setting:
-    </text>
-    <combo_box
-     height="18"
-     label="Preset"
-     layout="topleft"
-     left_pad="5"
-     name="WLSkyPresets"
-     width="205" />
-        <text
-     type="string"
-     length="1"
-     border_visible="true"
-     follows="left|top|right"
-     font="SansSerif"
-     height="16"
-     layout="topleft"
-     left_delta="-40"
-     name="WLCurKeyTimeText"
-     top_pad="15"
-     width="35">
-        Time:
-    </text>
-    <time
-     follows="left|top"
-     height="16"
-     label_width="0"
-     layout="topleft"
-     left_pad="3"
-     name="time"
-     top_delta="-1"
-     value="6:00 AM"
-     width="75"/> 
-    <view_border
-     bevel_style="none"
-     follows="top|left"
-     height="0"
-     layout="topleft"
-     left="10"
-     name="horiz_separator"
-     top_pad="20"
-     width="685"/>
-    <loading_indicator
-     height="23"
-     layout="topleft"
-     left="25"
-     name="progress_indicator"
-     top="350"
-     visible="false"
-     width="23" />
-    <check_box
-     follows="top|left"
-     height="10"
-     label="Make this my new day cycle"
-     layout="topleft"
-     left="310"
-     name="make_default_cb"
-     top_delta="13"
-     width="230"/>
-    <button
-     follows="bottom|right"
-     height="23"
-     label="Save"
-     layout="topleft"
-     left_pad="0"
-     name="save"
-     top_delta="-13"
-     width="70"/>
-    <button
-     follows="bottom|right"
-     height="23"
-     label="Cancel"
-     layout="topleft"
-     left_pad="15"
-     name="cancel"
-     top_delta="0"
-     width="70"/>
- </floater>
+    <layout_stack name="test_stack"
+            width="705"
+            height="500"
+            follows="all"
+            orientation="vertical">
+        <layout_panel name="temp"
+                border="false"
+                auto_resize="false"
+                user_resize="true"
+                height="30"
+                min_height="30"
+                background_visible="false">
+            <!-- This layout_panel is for loading legacy presets -->
+            <text
+                    follows="top|left|right"
+                    font="SansSerif"
+                    height="10"
+                    layout="topleft"
+                    name="label"
+                    top_offset="20"
+                    left_offset="10"
+                    width="120">
+                Preset Name:
+            </text>
+            <combo_box
+                    allow_text_entry="true"
+                    follows="top|left"
+                    layout="topleft"
+                    left_pad="10"
+                    max_chars="100"
+                    name="day_cycle_preset_combo"
+                    top_delta="-5"
+                    width="200" />           
+        </layout_panel>
+        <layout_panel name="timeline"
+                border="true"
+                bevel_style="in"
+                auto_resize="false"
+                user_resize="true"
+                bg_alpha_color="red"
+                height="150"
+                min_height="0"
+                visible="true"
+                background_visible="true">
+            <text
+                    follows="top|left|right"
+                    font="SansSerif"
+                    height="10"
+                    layout="topleft"
+                    name="label"
+                    top_offset="20"
+                    left_offset="10"
+                    width="120">
+                Time Line Goes here
+            </text>
+        </layout_panel>
+        <layout_panel name="flex"
+                auto_resize="true"
+                user_resize="true"
+                bg_alpha_color="blue"
+                height="11"
+                min_height="0"
+                visible="true"
+                background_visible="true">
+            <tab_container
+                    follows="all"
+                    halign="left"
+                    height="386"
+                    layout="topleft"
+                    left_offset="0"
+                    name="landtab"
+                    tab_position="top"
+                    tab_width="140"
+                    tab_padding_right="3"
+                    top_offset="6"
+                    width="633">
+                <panel
+                        border="true"
+                        follows="all"
+                        label="DUMMY"
+                        layout="topleft"
+                        left="0"
+                        help_topic="land_general_tab"
+                        name="land_general_panel"
+                        top="0">
+            <text
+                    follows="top|left|right"
+                    font="SansSerif"
+                    height="10"
+                    layout="center"
+                    name="label"
+                    top_offset="20"
+                    left_offset="10"
+                    width="300">
+                Space For editing selected frame
+            </text>
+                        
+                </panel>
+            </tab_container>
+        </layout_panel>
+        <layout_panel name="buttons"
+                auto_resize="false"
+                user_resize="true"
+                height="43"
+                min_height="0"
+                background_visible="false">
+            <button
+                    follows="top|left"
+                    height="23"
+                    label="Save"
+                    left_offset="160"
+                    top_offset="60"
+                    name="save_btn"
+                    width="100" />
+            <button
+                    follows="top|left"
+                    height="23"
+                    label="Cancel"
+                    layout="topleft"
+                    left_pad="10"
+                    name="cancel_btn"
+                    width="100" /> 
+
+        </layout_panel>
+    </layout_stack>
+
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml
index 82ad031959fedc22f569c2ecba692ab0c9ad22c7..a3ed22f42211f15b884f8d1633b77df339558672 100644
--- a/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml
@@ -10,172 +10,217 @@
         name="Test Floater"
         title="LAYOUTSTACK TESTS"
         width="420">
-    <layout_stack 
+    <layout_stack name="test_stack"
             left="0"
             top="0"
-            width="420"
+            width="100"
             height="250"
-            follows="left|right|top|bottom"
+            follows="left|top|bottom"
             orientation="vertical">
-        <layout_panel 
+        <layout_panel name="flex"
                 auto_resize="true"
                 user_resize="true"
-                bg_alpha_color="red"
-                max_height="200"
-                background_visible="false">
-            <layout_stack 
-                    left="5"
-                    top="5"
-                    right="-5"
-                    follows="left|right|top|bottom"
-                    orientation="horizontal">
-                <layout_panel 
-                        border="true"
-                        bevel_style="in"
-                        auto_resize="false"
-                        user_resize="false"
-                        width="160"
-                        background_visible="true">
-                    <text follows="top|left"
-                            halign="left"
-                            text_color="white">Environment Source</text>
-                    <radio_group
-                            follows="top|left"
-                            height="45"
-                            layout="topleft"
-                            left_delta="10"
-                            name="environment_select_radio_group"
-                            bottom_delta="50"
-                            max_width="200"
-                            width="200">
-                        <radio_item
-                                label="Default Environment"
-                                layout="topleft"
-                                name="use_default_setting"
-                                height="20"/>
-                        <radio_item
-                                label="Custom Environment"
-                                layout="topleft"
-                                height="20"
-                                name="use_custom_setting"/>
-                    </radio_group>
-                    <button
-                            follows="top|left"
-                            height="23"
-                            label="Edit Custom"
-                            left_delta="30"
-                            bottom_delta="30"
-                            width="100"
-                            name="edit_btn"/>
-
-                </layout_panel>
-                <layout_panel 
-                        border="true"
-                        bevel_style="in"
-                        auto_resize="false"
-                        user_resize="true"
-                        height="11"
-                        width="220"
-                        background_visible="true">
-                    <text follows="top|left|right"
-                            halign="left"
-                            text_color="white">Day Settings</text>
-                    <text
-                            type="string"
-                            length="1"
-                            follows="left|top"
-                            height="12"
-                            layout="topleft"
-                            left_delta="10"
-                            top_pad="10"
-                            width="200">
-                        Day Length (hours)
-                    </text>
-                    <slider
-                            can_edit_text="true"
-                            control_name="DayLengthSLD"
-                            decimal_digits="1"
-                            follows="left|top"
-                            height="20"
-                            increment="0.5"
-                            initial_value="4"
-                            layout="topleft"
-                            left_delta="0"
-                            top_pad="6"
-                            name="day_length_sld"
-                            min_val="4"
-                            max_val="178"
-                            width="200" />
-                    <text
-                            type="string"
-                            length="1"
-                            follows="left|top"
-                            height="12"
-                            layout="topleft"
-                            left_delta="0"
-                            top_pad="10"
-                            width="200">
-                        Day Offset (hours)
-                    </text>
-                    <slider
-                            can_edit_text="true"
-                            control_name="DayOffsetSLD"
-                            decimal_digits="1"
-                            follows="left|top"
-                            height="20"
-                            increment="0.5"
-                            initial_value="-8"
-                            layout="topleft"
-                            left_delta="0"
-                            top_pad="6"
-                            name="day_offset_sld"
-                            min_val="-12"
-                            max_val="12"
-                            width="200" />
-
-                </layout_panel>
-                <layout_panel name="flex"
-                        auto_resize="true"
-                        user_resize="true"
-                        visible="false"
-                        bg_alpha_color="blue"
-                        height="100"
-                        background_visible="true">
-                </layout_panel>
-            </layout_stack>
+                bg_alpha_color="blue"
+                height="11"
+                min_height="0"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
         </layout_panel>
         <layout_panel name="flex"
                 auto_resize="true"
                 user_resize="true"
+                bg_alpha_color="blue"
                 height="11"
                 min_height="0"
-                background_visible="false">
-    <check_box
-        control_name="may_override_chk"
-        height="16"
-        label="Parcel Owners May Override"
-        layout="topleft"
-        left="10"
-        top="10"
-        name="allow_override_chk"
-        width="200" />
-    <button
-        follows="bottom|left"
-        height="23"
-        label="Apply"
-        right="-160"
-        bottom="-30"
-        name="apply_btn"
-        width="100" />
-    <button
-        follows="bottom|left"
-        height="23"
-        label="Cancel"
-        layout="topleft"
-        left_pad="10"
-        name="cancel_btn"
-        width="100" /> 
-                
+                visible="false"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
+        </layout_panel>
+        <layout_panel name="flex"
+                auto_resize="true"
+                user_resize="true"
+                bg_alpha_color="blue"
+                height="11"
+                min_height="0"
+                visible="true"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
+        </layout_panel>
+        <layout_panel name="flex"
+                auto_resize="true"
+                user_resize="true"
+                bg_alpha_color="blue"
+                height="11"
+                min_height="0"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
+        </layout_panel>
+    </layout_stack>
+    <layout_stack name="test_stack"
+            left_pad="5"
+            top="0"
+            width="100"
+            height="250"
+            follows="left|top|bottom"
+            orientation="vertical">
+        <layout_panel name="flex"
+                auto_resize="true"
+                user_resize="true"
+                bg_alpha_color="blue"
+                height="100"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
+        </layout_panel>
+        <layout_panel name="flex"
+                auto_resize="true"
+                user_resize="true"
+                visible="false"
+                bg_alpha_color="blue"
+                height="100"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
+        </layout_panel>
+        <layout_panel name="fixed"
+                auto_resize="false"
+                user_resize="true"
+                height="50"
+                min_height="10"
+                bg_alpha_color="green"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="black">fixed</text>
+        </layout_panel>
+        <layout_panel name="fixed"
+                auto_resize="false"
+                user_resize="true"
+                height="50"
+                min_height="10"
+                bg_alpha_color="green"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="black">fixed</text>
+        </layout_panel>
+        <layout_panel name="flex"
+                auto_resize="true"
+                user_resize="true"
+                bg_alpha_color="blue"
+                height="100"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
+        </layout_panel>
+        <layout_panel name="flex"
+                auto_resize="true"
+                user_resize="true"
+                bg_alpha_color="blue"
+                height="100"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
+        </layout_panel>
+        <layout_panel name="flex"
+                auto_resize="true"
+                user_resize="true"
+                bg_alpha_color="blue"
+                height="100"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
+        </layout_panel>
+        <layout_panel name="flex"
+                auto_resize="true"
+                user_resize="true"
+                bg_alpha_color="blue"
+                height="100"
+                visible="true"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
+        </layout_panel>
+    </layout_stack>
+    <layout_stack name="test_stack"
+            left_pad="5"
+            top="0"
+            width="100"
+            height="250"
+            follows="left|top|bottom"
+            orientation="vertical">
+        <layout_panel name="flex"
+                auto_resize="true"
+                user_resize="true"
+                height="11"
+                bg_alpha_color="blue"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
+        </layout_panel>
+        <layout_panel name="fixed"
+                auto_resize="false"
+                user_resize="true"
+                height="50"
+                bg_alpha_color="green"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="black">fixed</text>
+        </layout_panel>
+        <layout_panel name="flex"
+                auto_resize="true"
+                user_resize="true"
+                bg_alpha_color="blue"
+                height="11"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
+        </layout_panel>
+    </layout_stack>
+    <layout_stack name="test_stack"
+            left_pad="5"
+            top="0"
+            width="100"
+            height="250"
+            follows="left|top|bottom"
+            orientation="vertical">
+        <layout_panel name="fixed"
+                auto_resize="false"
+                user_resize="true"
+                height="50"
+                bg_alpha_color="green"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="black">fixed</text>
+        </layout_panel>
+        <layout_panel name="fixed"
+                auto_resize="false"
+                user_resize="true"
+                height="50"
+                bg_alpha_color="green"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="black">fixed</text>
+        </layout_panel>
+        <layout_panel name="fixed"
+                auto_resize="false"
+                user_resize="true"
+                height="50"
+                bg_alpha_color="green"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="black">fixed</text>
+        </layout_panel>
+        <layout_panel name="flex"
+                auto_resize="true"
+                user_resize="true"
+                bg_alpha_color="blue"
+                height="11"
+                min_height="0"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
+        </layout_panel>
+        <layout_panel name="flex"
+                auto_resize="true"
+                user_resize="true"
+                bg_alpha_color="blue"
+                height="11"
+                min_height="0"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
+        </layout_panel>
+        <layout_panel name="flex"
+                auto_resize="true"
+                user_resize="true"
+                bg_alpha_color="blue"
+                height="11"
+                min_height="0"
+                background_visible="true">
+            <text follows="top|left|right" halign="center" text_color="white">flex</text>
         </layout_panel>
     </layout_stack>
 </floater>