diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 5f90a7627f3727fef031b12fa58d868a4050dd96..33dc7ee2c8f8cbb0b94a6760b57d75ebb02ab314 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -61,6 +61,7 @@
 #include "llviewerregion.h"
 #include "llimfloater.h"
 #include "lltrans.h"
+#include "llcallingcard.h"
 
 // static
 void LLAvatarActions::requestFriendshipDialog(const LLUUID& id, const std::string& name)
@@ -265,6 +266,24 @@ bool LLAvatarActions::isCalling(const LLUUID &id)
 	return (LLIMModel::getInstance()->findIMSession(session_id) != NULL);
 }
 
+//static
+bool LLAvatarActions::canCall(const LLUUID &id)
+{
+	if(isFriend(id))
+	{
+		return LLAvatarTracker::instance().isBuddyOnline(id) && LLVoiceClient::voiceEnabled();
+	}
+	else
+	{
+		// don't need to check online/offline status because "usual resident" (resident that is not a friend)
+		// can be only ONLINE. There is no way to see "usual resident" in OFFLINE status. If we see "usual
+		// resident" it automatically means that the resident is ONLINE. So to make a call to the "usual resident"
+		// we need to check only that "our" voice is enabled.
+		return LLVoiceClient::voiceEnabled();
+	}
+
+}
+
 // static
 void LLAvatarActions::startConference(const std::vector<LLUUID>& ids)
 {
diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h
index 2dd2a4c4b12b3fcc0dba969cce1040e6d3d1ded6..01c18d42285e5b8b6decfea1b4d6b144cd13bc60 100644
--- a/indra/newview/llavataractions.h
+++ b/indra/newview/llavataractions.h
@@ -128,6 +128,11 @@ class LLAvatarActions
 	 */
 	static bool isCalling(const LLUUID &id);
 
+	/**
+	 * @return true if call to the resident can be made (resident is online and voice is enabled)
+	 */
+
+	static bool canCall(const LLUUID &id);
 	/**
 	 * Invite avatar to a group.
 	 */	
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index b9f422ca6f6fae0878e7e3a11476fd9ad5dc5a0b..ffe7f5716766a1e82511812abf4085263819b745 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -396,7 +396,7 @@ void LLPanelProfileTab::updateButtons()
 					&& gAgent.isGodlike() || is_agent_mappable(getAvatarId());
 
 	childSetEnabled("show_on_map_btn", enable_map_btn);
-	childSetEnabled("call", LLVoiceClient::voiceEnabled());
+	childSetEnabled("call", LLAvatarActions::canCall(getAvatarId()));
 }
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 79a593a8c90b50c3b75a34d2b45f9af179a8b879..e1348401533c804ccadff662eab9645c31c7e139 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -776,7 +776,7 @@ void LLPanelPeople::updateButtons()
 	buttonSetEnabled("teleport_btn",		friends_tab_active && item_selected && isFriendOnline(selected_uuids.front()));
 	buttonSetEnabled("view_profile_btn",	item_selected);
 	buttonSetEnabled("im_btn",				multiple_selected); // allow starting the friends conference for multiple selection
-	buttonSetEnabled("call_btn",			multiple_selected && LLVoiceClient::voiceEnabled());
+	buttonSetEnabled("call_btn",			multiple_selected && canCall());
 	buttonSetEnabled("share_btn",			item_selected); // not implemented yet
 
 	bool none_group_selected = item_selected && selected_id.isNull();
@@ -784,6 +784,29 @@ void LLPanelPeople::updateButtons()
 	buttonSetEnabled("chat_btn", !none_group_selected);
 }
 
+bool LLPanelPeople::canCall()
+{
+	std::vector<LLUUID> selected_uuids;
+	getCurrentItemIDs(selected_uuids);
+
+	bool result = false;
+
+	std::vector<LLUUID>::const_iterator
+		id = selected_uuids.begin(),
+		uuids_end = selected_uuids.end();
+
+	for (;id != uuids_end; ++id)
+	{
+		if (LLAvatarActions::canCall(*id))
+		{
+			result = true;
+			break;
+		}
+	}
+
+	return result;
+}
+
 std::string LLPanelPeople::getActiveTabName() const
 {
 	return mTabContainer->getCurrentPanel()->getName();
diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h
index 750d3b573f5019f05cf4b4ae3502a801084d8e1a..f5cdc0935c3db29c7397cd402bd43842b97b2440 100644
--- a/indra/newview/llpanelpeople.h
+++ b/indra/newview/llpanelpeople.h
@@ -73,6 +73,7 @@ class LLPanelPeople : public LLPanel
 
 	bool					isFriendOnline(const LLUUID& id);
 	bool					isItemsFreeOfFriends(const std::vector<LLUUID>& uuids);
+	bool 					canCall();
 
 	void					updateButtons();
 	std::string				getActiveTabName() const;
diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp
index 573de1e51cece472b2604efc26d90c5ce14be1a8..0314642d9eb9cf0847e44d1ff2da526f1b107d89 100644
--- a/indra/newview/llpanelpeoplemenus.cpp
+++ b/indra/newview/llpanelpeoplemenus.cpp
@@ -181,7 +181,25 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata)
 		const LLUUID& id = mUUIDs.front();
 		return LLAvatarActions::isFriend(id);
 	}
+	else if (item == std::string("can_call"))
+	{
+		bool result = false;
+		int size = mUUIDs.size();
+		std::cout << size << std::endl;
+		std::vector<LLUUID>::const_iterator
+			id = mUUIDs.begin(),
+			uuids_end = mUUIDs.end();
 
+		for (;id != uuids_end; ++id)
+		{
+			if (LLAvatarActions::canCall(*id))
+			{
+				result = true;
+				break;
+			}
+		}
+		return result;
+	}
 	return false;
 }
 
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby.xml b/indra/newview/skins/default/xui/en/menu_people_nearby.xml
index 39469f7101c061d6abf29c5039b41f8d7f1fe9e5..5f2e6e0f6c6b76c263a58bf727097967949f11d9 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby.xml
@@ -32,6 +32,9 @@
      name="Call">
         <menu_item_call.on_click
          function="Avatar.Call" />
+        <menu_item_call.on_enable
+         function="Avatar.EnableItem"
+         parameter="can_call" />
     </menu_item_call>
     <menu_item_call
      label="Share"
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml
index df74d2dcd4bb30849de221ca280ff8a14656fa03..0d3dd3366d4b91e84a9162458650986a4fc95c0f 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml
@@ -27,6 +27,9 @@
      name="Call">
         <on_click
          function="Avatar.Call" />
+        <on_enable
+         function="Avatar.EnableItem"
+         parameter="can_call" />
     </menu_item_call>
     <menu_item_call
      enabled="false"