<?xml version="1.0" encoding="utf-8"?>
<!--

  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

-->
<!--
@langversion 3.0
@playerversion Flash 10
@playerversion AIR 1.5
@productversion Flex 4
-->
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
			 minWidth="21" minHeight="21"
			 alpha.disabled="0.5">
	
	<!-- host component -->
	<fx:Metadata>
		<![CDATA[ 
		/** 
		* @copy spark.skins.spark.ApplicationSkin#hostComponent
		*/
		[HostComponent("spark.components.Button")]
		]]>
	</fx:Metadata>
	
	<fx:Script>
		<![CDATA[         
			/* Define the skin elements that should not be colorized. 
			
			For button, the graphics are colorized but the label is not. */
			
			static private const exclusions:Array = ["labelDisplay"];
			
			
			
			/** 
			 
			 * @copy spark.skins.SparkSkin#colorizeExclusions
			 
			 */     
			
			override public function get colorizeExclusions():Array {return exclusions;}
			
		]]>        
		
	</fx:Script>
	
	
	
	<!-- states -->
	<s:states>
		<s:State name="up" />
		<s:State name="over" />
		<s:State name="down" />
		<s:State name="disabled" />
	</s:states>
	
	
	
	<!-- layer 1: shadow -->
	<s:Rect left="-1" right="-1" top="-1" bottom="-1" radiusX="2" radiusY="2">
		<s:fill>
			<s:LinearGradient rotation="90">
				<s:GradientEntry color="0x000000" 
								 color.down="0xFFFFFF"
								 alpha="0.01"
								 alpha.down="0" />
				<s:GradientEntry color="0x000000" 
								 color.down="0xFFFFFF" 
								 alpha="0.07"
								 alpha.down="0.5" />
			</s:LinearGradient>
		</s:fill>
	</s:Rect>
	
	
	
	<!-- layer 2: fill -->
	
	<s:Rect left="1" right="1" top="1" bottom="1" radiusX="2" radiusY="2">
		<s:fill>
			<s:LinearGradient rotation="90">
				<s:GradientEntry color="0xFFFFFF" 
								 color.over="0xBBBDBD" 
								 color.down="0xAAAAAA" 
								 alpha="0.85" />
				<s:GradientEntry color="0xD8D8D8" 
								 color.over="0x9FA0A1" 
								 color.down="0x929496" 
								 alpha="0.85" />
			</s:LinearGradient>
		</s:fill>
	</s:Rect>
	
	
	<!-- layer 3: fill lowlight -->
	
	<s:Rect left="1" right="1" bottom="1" height="9" radiusX="2" radiusY="2">
		
		<s:fill>
			<s:LinearGradient rotation="90">
				<s:GradientEntry color="0x000000" alpha="0.0099" />
				<s:GradientEntry color="0x000000" alpha="0.0627" />
			</s:LinearGradient>
		</s:fill>
	</s:Rect>
	
	
	
	<!-- layer 4: fill highlight -->
	
	<s:Rect left="1" right="1" top="1" height="9" radiusX="2" radiusY="2">
		<s:fill>
			<s:SolidColor color="0xFFFFFF" 
						  alpha="0.33" 
						  alpha.over="0.22" 
						  alpha.down="0.12" />
		</s:fill>
	</s:Rect>
	
	
	
	<!-- layer 5: highlight stroke (all states except down) -->
	<s:Rect left="1" right="1" top="1" bottom="1" radiusX="2" radiusY="2" excludeFrom="down">
		<s:stroke>
			<s:LinearGradientStroke rotation="90" weight="1">
				<s:GradientEntry color="0xFFFFFF" alpha.over="0.22" />
				<s:GradientEntry color="0xD8D8D8" alpha.over="0.22" />
			</s:LinearGradientStroke>
		</s:stroke>
	</s:Rect>
	
	
	<!-- layer 6: highlight stroke (down state only) -->
	
	<s:Rect left="1" top="1" bottom="1" width="1" includeIn="down">
		<s:fill>
			<s:SolidColor color="0x000000" alpha="0.07" />
		</s:fill>
	</s:Rect>
	
	<s:Rect right="1" top="1" bottom="1" width="1" includeIn="down">
		<s:fill>
			<s:SolidColor color="0x000000" alpha="0.07" />
		</s:fill>
	</s:Rect>
	
	<s:Rect left="2" top="1" right="2" height="1" includeIn="down">
		<s:fill>
			<s:SolidColor color="0x000000" alpha="0.25" />
		</s:fill>
	</s:Rect>
	
	<s:Rect left="1" top="2" right="1" height="1" includeIn="down">
		
		<s:fill>
			
			<s:SolidColor color="0x000000" alpha="0.09" />
			
		</s:fill>
		
	</s:Rect>
	
	
	
	<!-- layer 7: border - put on top of the fill so it doesn't disappear when scale is less than 1 -->
	
	<s:Rect left="0" right="0" top="0" bottom="0" width="69" height="20" radiusX="2" radiusY="2">
		
		<s:stroke>
			
			<s:LinearGradientStroke rotation="90" weight="1">
				
				<s:GradientEntry color="0x000000" 
								 
								 alpha="0.5625"
								 
								 alpha.down="0.6375" />
				
				<s:GradientEntry color="0x000000" 
								 
								 alpha="0.75" 
								 
								 alpha.down="0.85" />
				
			</s:LinearGradientStroke>
			
		</s:stroke>
		
	</s:Rect>
	
	
	
	<!-- layer 8: text -->
	
	<!--- 
	
	@copy spark.components.supportClasses.ButtonBase#labelDisplay
	
	-->
	<!--<s:Rect left="1" top="1" width="36" height="16" >
		<s:fill>
			<s:BitmapFill source="@Embed('assets/icon_remove.png')">
			</s:BitmapFill>
		</s:fill>
	</s:Rect>-->
	<!-- The divider between symbol and text -->
	<!--<s:Line blendMode="overlay" verticalCenter="0" height="90%" left="27">
		<s:stroke>
			<s:SolidColorStroke color="#3d3d3d" weight=".25" />
		</s:stroke>
	</s:Line>
	<s:Group id="textGroup" verticalCenter="1" left="33">
		<s:filters>
			<s:DropShadowFilter alpha="0.5" blurX="0" blurY="0" distance="1" />
		</s:filters>  
		<s:SimpleText id="labelDisplay"
					  textAlign="center"
					  verticalAlign="middle"
					  maxDisplayedLines="1"
					  horizontalCenter="0" verticalCenter="1"
					  left="10" right="10" top="2" bottom="2">
		</s:SimpleText>
	</s:Group>-->
	<!-- The divider between symbol and text -->
	<s:Line blendMode="overlay" verticalCenter="0" height="90%" left="27">
		<s:stroke>
			<s:SolidColorStroke color="#3d3d3d" weight=".25" />
		</s:stroke>
	</s:Line>
	
	<!-- Label with a shadow applied to it. In a group for colorization exclusion -->
	<s:Group id="textGroup" verticalCenter="1" left="33">
		<s:filters>
			<s:DropShadowFilter alpha="0.5" blurX="0" blurY="0" distance="1" />
		</s:filters>    
		<s:SimpleText id="labelDisplay"
					  textAlign="center"
					  verticalAlign="middle"
					  lineBreak="toFit"
					  right="10">
		</s:SimpleText>
	</s:Group>
	
	<!-- The group with the symbol with a shadow applied to. In a group for colorization exclusion -->
	<s:Group id="symbol" verticalCenter="0" left="7" top="9" right="7" bottom="7">
		<s:filters>
			<s:DropShadowFilter id="dsfSymbol" blurX="0" blurY="0" distance="1"  strength="1" strength.down="0"/>
		</s:filters>
		<s:Path winding="nonZero" data="M12.6924 0L5.76855 6.92383 2.30762 3.46191 0 5.76855 3.46191 9.23145 5.76855 11.5391 8.07617 9.23145 15 2.30762 12.6924 0Z" >
			<s:fill>
				<s:SolidColor color="#ffffff"/>
			</s:fill>
		</s:Path>
	</s:Group>

</s:SparkSkin>
