<?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 backgroundColor="0xFFFFFF" backgroundImage="" height="375" width="500" xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*"
    xmlns:comps="comps.*"  >
	<mx:Script>
	<![CDATA[
        import mx.controls.TextInput;

		public var mValue:String="frm_initialize_evt";
		
        public function getRidOfCursor(): void
        {
            var dropDownTextInput:TextInput = application.myColorPicker.mx_internal::dropdown.getChildAt(2);
            dropDownTextInput.mx_internal::getTextField().type ="dynamic";
        }

	]]>
	</mx:Script>
	<mx:Style>
	@namespace "library://ns.adobe.com/flex/mx";
        .myStyle {
           color: #FF0000;
           fontWeight: "bold";
        }

        .myStyle2 {
		   color: #00FF00;
		   fontStyle: "italic";
		   borderColor: #FF0000;
        }

        .customColumnCount {
		   columnCount: 10;
        }

        .customColumnCount2 {
		   columnCount: 40;
        }
        .customBackgroundColor {
		   backgroundColor: #FF0000;
		   highlightColor: #FF0000;
        }

        .customBackgroundColor2 {
		   backgroundColor: #FF0000;
        }
        .customBorderColor {
           borderColor: #FF0000;
        }

        .customFontSize {
           fontSize: 12;
        }

        .customFontWeight {
           fontWeight: "bold";
        }
        .customTextFieldWidth {
           textFieldWidth: 120;
        }

        .customPaddingRight {
           paddingRight: 10;
        }

        .customPaddingLeft {
           paddingLeft: 10;
        }

        .customPaddingTop {
           paddingTop: 10;
        }

        .customPaddingBottom {
           paddingBottom: 10;
        }

        .customHorizontalGap {
           horizontalGap: 10;
        }

        .customHorizontalGap2 {
           horizontalGap: 20;
        }

        .customVerticalGap {
           verticalGap: 10;
        }

        .customVerticalGap2 {
           verticalGap: 20;
        }

        .customSwatchGridBorderSize {
            swatchGridBorderSize: 3;
        }

        .customSwatchHeight {
           swatchHeight: 10;
        }

        .customSwatchWidth {
           swatchWidth: 10;
        }

        .customTextFieldStyleName {
            textFieldStyleName: "myStyle" ;
        }

        .customSwatchBorderColor {
            swatchBorderColor: #FF0000;
        }

        .customSwatchBorderSize {
            swatchBorderSize: 3;
        }

        .customPreviewWidth {
            previewWidth: 10;
        }

        .customPreviewHeight {
            previewHeight: 12;
        }

        .customTextFieldStyleName2 {
            textFieldStyleName: "myStyle2";
        }
        
        .customSwatchGridBackgroundColor{
            swatchBorderSize: 2;
            horizontalGap: 3;
            verticalGap: 3;
            swatchGridBackgroundColor: #FF0000;
        }

    </mx:Style>
    <mx:Style>
	@namespace "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;
		}
		
        global{
            fontFamily: EmbeddedVerdana;
            fontAntiAliasType: normal;
        }
    </mx:Style>
	<mx:ColorPicker id="myColorPicker" />
	<mx:ColorPicker id="myColorPicker2" swatchPanelStyleName="customTextFieldStyleName2" />

    <comps:CustomColorPicker2 id="myColorPicker4" />
</mx:Application>
