diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index 0dae667e7f477fe980c147454950d63ff49a33ba..e29320ffc2bf6f64d53794de4f4a9a4c2080a4e3 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -1557,6 +1557,11 @@ void LLPanelClassifiedEdit::resetControls()
 	childSetValue("price_for_listing", MINIMUM_PRICE_FOR_LISTING);
 }
 
+bool LLPanelClassifiedEdit::canClose()
+{
+	return isValidName();
+}
+
 void LLPanelClassifiedEdit::sendUpdate()
 {
 	LLAvatarClassifiedInfo c_data;
@@ -1671,6 +1676,12 @@ void LLPanelClassifiedEdit::onChange()
 
 void LLPanelClassifiedEdit::onSaveClick()
 {
+	if(!isValidName())
+	{
+		notifyInvalidName();
+		return;
+	}
+
 	sendUpdate();
 	resetDirty();
 }
@@ -1681,6 +1692,34 @@ std::string LLPanelClassifiedEdit::getLocationNotice()
 	return location_notice;
 }
 
+bool LLPanelClassifiedEdit::isValidName()
+{
+	std::string name = getClassifiedName();
+	if (name.empty())
+	{
+		return false;
+	}
+	if (!isalnum(name[0]))
+	{
+		return false;
+	}
+
+	return true;
+}
+
+void LLPanelClassifiedEdit::notifyInvalidName()
+{
+	std::string name = getClassifiedName();
+	if (name.empty())
+	{
+		LLNotificationsUtil::add("BlankClassifiedName");
+	}
+	else if (!isalnum(name[0]))
+	{
+		LLNotificationsUtil::add("ClassifiedMustBeAlphanumeric");
+	}
+}
+
 void LLPanelClassifiedEdit::onTexturePickerMouseEnter(LLUICtrl* ctrl)
 {
 	ctrl->setVisible(TRUE);
diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h
index 8b32495854b8b0a9d46b54c2ac258815550c88be..10fdf60bbe3da20aabc60239c00cc720a15dd4a6 100644
--- a/indra/newview/llpanelclassified.h
+++ b/indra/newview/llpanelclassified.h
@@ -305,6 +305,8 @@ class LLPanelClassifiedEdit : public LLPanelClassifiedInfo
 
 	bool isNew() { return mIsNew; }
 
+	bool canClose();
+
 protected:
 
 	LLPanelClassifiedEdit();
@@ -325,6 +327,10 @@ class LLPanelClassifiedEdit : public LLPanelClassifiedInfo
 
 	std::string getLocationNotice();
 
+	bool isValidName();
+
+	void notifyInvalidName();
+
 	void onSetLocationClick();
 	void onChange();
 	void onSaveClick();
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index 4d22d96072a3cb53c64da9a878167157a8d938c7..a52aa6d30f5288a5870e24156792f59a3f479a41 100644
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -769,6 +769,11 @@ void LLPanelPicks::onPanelPickSave(LLPanel* panel)
 
 void LLPanelPicks::onPanelClassifiedSave(LLPanelClassifiedEdit* panel)
 {
+	if(!panel->canClose())
+	{
+		return;
+	}
+
 	if(panel->isNew())
 	{
 		LLClassifiedItem* c_item = new LLClassifiedItem(getAvatarId(), panel->getClassifiedId());