diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 0255061b12b9bc1d44071e4174184de09a9345a0..a8f72183fd73cf9192a7d80d1e5acb0c15b42b47 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -128,6 +128,7 @@ LLButton::LLButton(const LLButton::Params& p)
 	mImageSelected(p.image_selected),
 	mImageDisabled(p.image_disabled),
 	mImageDisabledSelected(p.image_disabled_selected),
+	mImageFlash(p.image_flash),
 	mImagePressed(p.image_pressed),
 	mImagePressedSelected(p.image_pressed_selected),
 	mImageHoverSelected(p.image_hover_selected),
@@ -635,14 +636,24 @@ void LLButton::draw()
 
 	if (mFlashing)
 	{
-		LLColor4 flash_color = mFlashBgColor.get();
-		use_glow_effect = TRUE;
-		glow_type = LLRender::BT_ALPHA; // blend the glow
-
-		if (mNeedsHighlight) // highlighted AND flashing
-			glow_color = (glow_color*0.5f + flash_color*0.5f) % 2.0f; // average between flash and highlight colour, with sum of the opacity
+		// if we have icon for flashing, use it as image for button
+		if(flash && mImageFlash->getName() != "FlashIconAbsent")
+		{
+			// setting flash to false to avoid its further influence on glow
+			flash = false;
+			imagep = mImageFlash;
+		}
+		// else use usual flashing via flash_color
 		else
-			glow_color = flash_color;
+		{
+			LLColor4 flash_color = mFlashBgColor.get();
+			use_glow_effect = TRUE;
+			glow_type = LLRender::BT_ALPHA; // blend the glow
+			if (mNeedsHighlight) // highlighted AND flashing
+				glow_color = (glow_color*0.5f + flash_color*0.5f) % 2.0f; // average between flash and highlight colour, with sum of the opacity
+			else
+				glow_color = flash_color;
+		}
 	}
 
 	if (mNeedsHighlight && !imagep)
@@ -1018,6 +1029,11 @@ void LLButton::setImageHoverUnselected(LLPointer<LLUIImage> image)
 	mImageHoverUnselected = image;
 }
 
+void LLButton::setImageFlash(LLPointer<LLUIImage> image)
+{
+	mImageFlash = image;
+}
+
 void LLButton::setImageOverlay(const std::string& image_name, LLFontGL::HAlign alignment, const LLColor4& color)
 {
 	if (image_name.empty())
diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
index a4d81ed6c36f6165d9e27a228427d4b2dce7ca8e..b251c3d65d96b34ef363183456102aac044f9744 100644
--- a/indra/llui/llbutton.h
+++ b/indra/llui/llbutton.h
@@ -84,6 +84,7 @@ class LLButton
 								image_hover_unselected,
 								image_disabled_selected,
 								image_disabled,
+								image_flash,
 								image_pressed,
 								image_pressed_selected,
 								image_overlay;
@@ -246,6 +247,7 @@ class LLButton
 	void			setImageHoverUnselected(LLPointer<LLUIImage> image);
 	void			setImageDisabled(LLPointer<LLUIImage> image);
 	void			setImageDisabledSelected(LLPointer<LLUIImage> image);
+	void			setImageFlash(LLPointer<LLUIImage> image);
 	void			setImagePressed(LLPointer<LLUIImage> image);
 
 	void			setCommitOnReturn(BOOL commit) { mCommitOnReturn = commit; }
@@ -310,6 +312,12 @@ class LLButton
 	LLPointer<LLUIImage>		mImagePressed;
 	LLPointer<LLUIImage>		mImagePressedSelected;
 
+	/* There are two ways an image can flash- by making changes in color according to flash_color attribute
+	   or by changing icon from current to the one specified in image_flash. Second way is used only if
+	   the name of flash icon is different from "FlashIconAbsent" which is there by default. First way is used 
+	   otherwise. */
+	LLPointer<LLUIImage>		mImageFlash;
+
 	LLUIColor					mHighlightColor;
 	LLUIColor					mFlashBgColor;
 
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index 30fc7babaef355e687e7b20c7ab89f98d7663772..986cfe75a120cb8045a3556414d6487e6d6064be 100644
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -197,10 +197,13 @@ static LLDefaultChildRegistry::Register<LLTabContainer> r2("tab_container");
 LLTabContainer::TabParams::TabParams()
 :	tab_top_image_unselected("tab_top_image_unselected"),
 	tab_top_image_selected("tab_top_image_selected"),
+	tab_top_image_flash("tab_top_image_flash"),
 	tab_bottom_image_unselected("tab_bottom_image_unselected"),
 	tab_bottom_image_selected("tab_bottom_image_selected"),
+	tab_bottom_image_flash("tab_bottom_image_flash"),
 	tab_left_image_unselected("tab_left_image_unselected"),
-	tab_left_image_selected("tab_left_image_selected")
+	tab_left_image_selected("tab_left_image_selected"),
+	tab_left_image_flash("tab_left_image_flash")
 {}
 
 LLTabContainer::Params::Params()
@@ -879,16 +882,19 @@ void LLTabContainer::update_images(LLTabTuple* tuple, TabParams params, LLTabCon
 		{
 			tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_top_image_unselected));
 			tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_top_image_selected));
+			tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_top_image_flash));
 		}
 		else if (pos == LLTabContainer::BOTTOM)
 		{
 			tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_bottom_image_unselected));
 			tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_bottom_image_selected));
+			tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_bottom_image_flash));
 		}
 		else if (pos == LLTabContainer::LEFT)
 		{
 			tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_left_image_unselected));
 			tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_left_image_selected));
+			tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_left_image_flash));
 		}
 	}
 }
diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h
index 50ec2679f6be6ae877854b2e2fea31bde5b2e736..a2dc15aaf9c5038393bead8f0be3dea41ff66ab6 100644
--- a/indra/llui/lltabcontainer.h
+++ b/indra/llui/lltabcontainer.h
@@ -67,10 +67,13 @@ class LLTabContainer : public LLPanel
 	{
 		Optional<LLUIImage*>				tab_top_image_unselected,
 											tab_top_image_selected,
+											tab_top_image_flash,
 											tab_bottom_image_unselected,
 											tab_bottom_image_selected,
+											tab_bottom_image_flash,
 											tab_left_image_unselected,
-											tab_left_image_selected;		
+											tab_left_image_selected,
+											tab_left_image_flash;		
 		TabParams();
 	};
 
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Left_Flash.png b/indra/newview/skins/default/textures/containers/Toolbar_Left_Flash.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f1e2a469d601b675e9b117d07a837302a726a33
Binary files /dev/null and b/indra/newview/skins/default/textures/containers/Toolbar_Left_Flash.png differ
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Flash.png b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Flash.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd73d655e9bcc53bf3c967265380c0eeb47a1f13
Binary files /dev/null and b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Flash.png differ
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Right_Flash.png b/indra/newview/skins/default/textures/containers/Toolbar_Right_Flash.png
new file mode 100644
index 0000000000000000000000000000000000000000..f6b775c2a05e4b00cb51ed049c0ff27d0df66fb5
Binary files /dev/null and b/indra/newview/skins/default/textures/containers/Toolbar_Right_Flash.png differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 29c72a414be4c4570f16bc32edb3b0f4bef26a14..072ea40ee4c13cb5867641ec5966fc74ea11931c 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -527,15 +527,18 @@ with the same filename but different name
   <texture name="Tool_Grab" file_name="build/Tool_Grab.png" preload="false" />
   <texture name="Tool_Zoom" file_name="build/Tool_Zoom.png" preload="false" />
 
+  <texture name="Toolbar_Left_Flash" file_name="containers/Toolbar_Left_Flash.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
   <texture name="Toolbar_Left_Off" file_name="containers/Toolbar_Left_Off.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
   <texture name="Toolbar_Left_Over" file_name="containers/Toolbar_Left_Over.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
   <texture name="Toolbar_Left_Selected" file_name="containers/Toolbar_Left_Selected.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
   <texture name="Toolbar_Middle_Off" file_name="containers/Toolbar_Middle_Off.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" />
   <texture name="Toolbar_Middle_Over" file_name="containers/Toolbar_Middle_Over.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" />
   <texture name="Toolbar_Middle_Selected" file_name="containers/Toolbar_Middle_Selected.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" />
+  <texture name="Toolbar_Middle_Flash" file_name="containers/Toolbar_Middle_Flash.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" />
   <texture name="Toolbar_Right_Off" file_name="containers/Toolbar_Right_Off.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
   <texture name="Toolbar_Right_Over" file_name="containers/Toolbar_Right_Over.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
   <texture name="Toolbar_Right_Selected" file_name="containers/Toolbar_Right_Selected.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
+  <texture name="Toolbar_Right_Flash" file_name="containers/Toolbar_Right_Flash.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" />
 
   <texture name="Tooltip" file_name="widgets/Tooltip.png" preload="true" scale.left="2" scale.top="16" scale.right="100" scale.bottom="3" />
 
diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml
index ced8c29199355fc939951773fe46c1909b306a51..e123de46c2046b6f3c63a142ce16f6182e7d3e7f 100644
--- a/indra/newview/skins/default/xui/en/floater_im_container.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_container.xml
@@ -27,7 +27,14 @@
      halign="left"
      use_ellipses="true"
      top="0"
-     width="394" />
+     width="394">
+      <first_tab
+       tab_bottom_image_flash="Toolbar_Left_Flash"/>
+      <middle_tab
+       tab_bottom_image_flash="Toolbar_Middle_Flash"/>
+      <last_tab
+       tab_bottom_image_flash="Toolbar_Right_Flash"/>
+    </tab_container>
     <icon
      color="DefaultShadowLight"
      enabled="false"
diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml
index c4f0fe5208730d157d13bd464c5bf43066f393eb..6dcc27b469d1cbb2e6ad0471908cee02c8ed2034 100644
--- a/indra/newview/skins/default/xui/en/widgets/button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/button.xml
@@ -7,6 +7,7 @@
         image_selected="PushButton_Selected"
         image_disabled_selected="PushButton_Selected_Disabled"
         image_disabled="PushButton_Disabled"
+        image_flash="FlashIconAbsent"
         image_top_pad="0"
         image_bottom_pad="0"
         imgoverlay_label_space="1"
diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
index 8d6b0c1cfe6dd280d68da205073de5a394ccd9c7..30b0a8462a7b7f023473b320a03dc4af804a2290 100644
--- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
@@ -13,20 +13,29 @@ label_pad_left - padding to the left of tab button labels
                label_pad_left="4">
   <first_tab tab_top_image_unselected="TabTop_Left_Off"
                tab_top_image_selected="TabTop_Left_Selected"
+               tab_top_image_flash="FlashIconAbsent"
                tab_bottom_image_unselected="Toolbar_Left_Off"
                tab_bottom_image_selected="Toolbar_Left_Selected"
+               tab_bottom_image_flash="FlashIconAbsent"
                tab_left_image_unselected="SegmentedBtn_Left_Disabled"
-               tab_left_image_selected="SegmentedBtn_Left_Selected_Over"/>
+               tab_left_image_selected="SegmentedBtn_Left_Selected_Over"
+               tab_left_image_flash="FlashIconAbsent"/>
   <middle_tab tab_top_image_unselected="TabTop_Middle_Off"
                tab_top_image_selected="TabTop_Middle_Selected"
+               tab_top_image_flash="FlashIconAbsent"
                tab_bottom_image_unselected="Toolbar_Middle_Off"
                tab_bottom_image_selected="Toolbar_Middle_Selected"
+               tab_bottom_image_flash="FlashIconAbsent"
                tab_left_image_unselected="SegmentedBtn_Left_Disabled"
-               tab_left_image_selected="SegmentedBtn_Left_Selected_Over"/>
+               tab_left_image_selected="SegmentedBtn_Left_Selected_Over"
+               tab_left_image_flash="FlashIconAbsent"/>
   <last_tab tab_top_image_unselected="TabTop_Right_Off"
                tab_top_image_selected="TabTop_Right_Selected"
+               tab_top_image_flash="FlashIconAbsent"
                tab_bottom_image_unselected="Toolbar_Right_Off"
                tab_bottom_image_selected="Toolbar_Right_Selected"
+               tab_bottom_image_flash="FlashIconAbsent"
                tab_left_image_unselected="SegmentedBtn_Left_Disabled"
-               tab_left_image_selected="SegmentedBtn_Left_Selected_Over"/>
+               tab_left_image_selected="SegmentedBtn_Left_Selected_Over"
+               tab_left_image_flash="FlashIconAbsent"/>
 </tab_container>