<?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.

-->
<mx:Application height="375" width="500" xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" backgroundColor="#FFFFFF" backgroundImage="" >
    <mx:Style>
	@namespace "library://ns.adobe.com/flex/mx";
	
		@namespace s "library://ns.adobe.com/flex/spark";
		@namespace mx "library://ns.adobe.com/flex/mx";
	
		@font-face {
			src: url("../../../../Assets/Fonts/PT_Serif/PT_Serif-Web-Regular.ttf");
			fontFamily: EmbeddedArial;
			embedAsCFF: false;
		}

		@font-face {
			src: url("../../../../Assets/Fonts/PT_Serif/PT_Serif-Web-Bold.ttf");
			fontWeight: bold;			
			fontFamily: EmbeddedArial;
			embedAsCFF: false;
		}

		@font-face {
			src: url("../../../../Assets/Fonts/PT_Serif/PT_Serif-Web-Italic.ttf");
			fontStyle: italic;			
			fontFamily: EmbeddedArial;
			embedAsCFF: false;
		}

		@font-face {
			src: url("../../../../Assets/Fonts/Open_Sans/OpenSans-Regular.ttf");
			fontFamily: EmbeddedVerdana;
			embedAsCFF: false;
		}

		@font-face {
			src: url("../../../../Assets/Fonts/Open_Sans/OpenSans-Bold.ttf");
			fontWeight: bold;
			fontFamily: EmbeddedVerdana;
			embedAsCFF: false;
		}

		@font-face {
			src: url("../../../../Assets/Fonts/Open_Sans/OpenSans-Italic.ttf");
			fontStyle: italic;
			fontFamily: EmbeddedVerdana;
			embedAsCFF: false;
		}
		
        mx|TabBar{
            fontFamily: EmbeddedVerdana;
            fontAntiAliasType: normal;
        }
    </mx:Style>
	<mx:Script>
	<![CDATA[

	    [Embed(source="../../../../Assets/Images/greenrect.jpg")]
		public var t1120:Class;

		[Embed(source="../../../../Assets/Images/purplerect.jpg")]
		public var barney:Class;

	    [Embed(source="../../../../Assets/Images/orangerect.jpg")]
        public var ingbear:Class;

        [Embed(source="../../../../Assets/Images/bluerect.jpg")]
        public var blueback:Class;

        public var lengthValue:int;

	]]>
	</mx:Script>

    <mx:Style>
		@font-face {
			src: url("../../../../Assets/Fonts/Cousine/Cousine-Regular.ttf");
			fontFamily: ComicSansMS;
			embedAsCFF: false;
		}
		@font-face {
			src: url("../../../../Assets/Fonts/Lobster_Two/LobsterTwo-Regular.ttf");
			fontFamily: Hancock;
		}

    </mx:Style>



    <mx:TextInput id="ti" />
    <mx:Button id="btn" label="click" />
	<mx:Box id="tabBarParent" paddingLeft="5" paddingRight="5" paddingTop="5" paddingBottom="5">
	   <mx:TabBar id="tb" />
    </mx:Box>
    <MyTabBar id="tb2" />
</mx:Application>
