/*
 *
 *  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.
 *
 */

@namespace "library://ns.adobe.com/flex/mx";

/*
//------------------------------
//  Accordion
//------------------------------
*/

Accordion
{
	backgroundColor: #FFFFFF;
	borderSkin: ClassReference("mx.skins.spark.BorderSkin");
	borderStyle: "solid";
	/* headerHeight: 22; */
	paddingBottom: -1;
	paddingLeft: -1;
	paddingRight: -1;
	paddingTop: -1;
	verticalGap: -1;
}

/*
//------------------------------
//  AccordionHeader
//------------------------------
*/

AccordionHeader
{
/*	selectedFillColors: #FFFFFF, #FFFFFF; */ /* overrides the calculated fillcolors */
/*	fontSize: "10";
	fontWeight: "bold";  */
/*	disabledIcon: null; */
	disabledSkin: ClassReference(null);
/*	downIcon: null; */
	downSkin: ClassReference(null);
	horizontalGap: 2;
/*	overIcon: null; */
	overSkin: ClassReference(null);
	paddingLeft: 5;
	paddingRight: 5;
	paddingBottom: 0;
	paddingTop: 0;
/*	selectedDisabledIcon: null; */
	selectedDisabledSkin: ClassReference(null);
/*	selectedDownIcon: null; */
	selectedDownSkin: ClassReference(null);
/*	selectedOverIcon: null; */
	selectedOverSkin: ClassReference(null);
/*	selectedUpIcon: null; */
	selectedUpSkin: ClassReference(null);
	skin: ClassReference("mx.skins.spark.AccordionHeaderSkin");
	textAlign: "start";
/*	upIcon: null; */
	upSkin: ClassReference(null);
}

/*
//------------------------------
//  Alert
//------------------------------
*/

Alert
{
	/* borderThicknessBottom is NaN */
	/* buttonStyleName: "alertButtonStyle"; */
	paddingBottom: 10;
	paddingLeft: 10;
	paddingRight: 10;
	paddingTop: 2;
}

/*
//------------------------------
//  .alertButtonStyle
//------------------------------
*/

/*
//------------------------------
//  Application
//------------------------------
*/

Application
{
	backgroundColor: #FFFFFF; 
	horizontalAlign: "center";
	paddingBottom: 24;
	paddingLeft: 24;
	paddingRight: 24;
	paddingTop: 24;
}

/*
//------------------------------
//  ApplicationControlBar
//------------------------------
*/

ApplicationControlBar
{
    borderSkin: ClassReference("mx.skins.halo.HaloBorder");
	cornerRadius: 5;
	fillAlphas: 0, 0;
	fillColors: #FFFFFF, #FFFFFF;
	paddingBottom: 4;
	paddingLeft: 8;
	paddingRight: 8;
	paddingTop: 5;
}

/*
//------------------------------
//  Box
//------------------------------
*/

/*
//------------------------------
//  Button
//------------------------------
*/

Button
{
/*	cornerRadius: 4;
	disabledIcon: null; 
	disabledSkin: null;
	downIcon: null; 
	downSkin: null */
/*	fontWeight: "bold"; */
	horizontalGap: 2;
/*	overIcon: null; 
	overSkin: null */
	labelVerticalOffset: 1;
/*	paddingBottom: -1; */
	paddingLeft: 6;
	paddingRight: 6;
/*	paddingTop: 2;
	selectedDisabledIcon: null; 
	selectedDisabledSkin: null 
 	selectedDownIcon: null; 
	selectedDownSkin: null 
	selectedOverIcon: null; 
	selectedOverSkin: null 
	selectedUpIcon: null; 
	selectedUpSkin: null */
	textAlign: "center";
/*	upIcon: null; 
	upSkin: null */
	skin: ClassReference("mx.skins.spark.ButtonSkin");
	emphasizedSkin: ClassReference("mx.skins.spark.DefaultButtonSkin");
	verticalGap: 2;
}

/*
//------------------------------
//  ButtonBar
//------------------------------
*/

ButtonBar
{
	firstButtonStyleName: buttonBarFirstButtonStyle;
	horizontalAlign: "center";
	horizontalGap: -1;
	lastButtonStyleName: buttonBarLastButtonStyle;
	textAlign: "center";
	verticalAlign: "middle";
	verticalGap: 0;
}

/*
//------------------------------
//  ButtonBarButton
//------------------------------
*/

ButtonBarButton.buttonBarFirstButtonStyle
{
    focusRoundedCorners: "tl bl";
	skin: ClassReference("mx.skins.spark.ButtonBarFirstButtonSkin");
}

ButtonBarButton.buttonBarLastButtonStyle
{
    focusRoundedCorners: "tr br";
	skin: ClassReference("mx.skins.spark.ButtonBarLastButtonSkin");
}

ButtonBarButton
{
/*	disabledIcon: null; */
	disabledSkin: ClassReference(null);
/*	downIcon: null; */
	downSkin: ClassReference(null);
	horizontalGap: 1;
/*	overIcon: null; */
	overSkin: ClassReference(null);
/*	selectedDisabledIcon: null; */
	selectedDisabledSkin: ClassReference(null);
/*	selectedDownIcon: null; */
	selectedDownSkin: ClassReference(null);
/*	selectedOverIcon: null; */
	selectedOverSkin: ClassReference(null);
/*	selectedUpIcon: null; */
	selectedUpSkin: ClassReference(null); 
	skin: ClassReference("mx.skins.spark.ButtonBarMiddleButtonSkin"); 
/*	upIcon: null; */
	upSkin: ClassReference(null);
}

/*
//------------------------------
//  CalendarLayout
//------------------------------
*/

CalendarLayout
{
	horizontalGap: 7;
	paddingBottom: 10;
	paddingLeft: 6;
	paddingRight: 6;
	paddingTop: 6;
	textAlign: "center";
	todayColor: #818181;
	verticalGap: 6;
}

/*
//------------------------------
//  Canvas
//------------------------------
*/

/*
//------------------------------
//  CheckBox
//------------------------------
*/

CheckBox
{
	disabledIcon: ClassReference(null);
	disabledSkin: ClassReference(null);
	downIcon: ClassReference(null);
	downSkin: ClassReference(null); 
	fontWeight: "normal";
	horizontalGap: 3;
	icon: ClassReference("mx.skins.spark.CheckBoxSkin");
	labelVerticalOffset: 1;
	overIcon: ClassReference(null);
	overSkin: ClassReference(null);
	paddingBottom: -1;
	paddingLeft: 0;
	paddingRight: 0;	
	paddingTop: -1;
	selectedDisabledIcon: ClassReference(null);
	selectedDisabledSkin: ClassReference(null);
	selectedDownIcon: ClassReference(null);
	selectedDownSkin: ClassReference(null);
	selectedOverIcon: ClassReference(null);
	selectedOverSkin: ClassReference(null);
	selectedUpIcon: ClassReference(null);
	selectedUpSkin: ClassReference(null); 
	skin: ClassReference(null);
	textAlign: "start";
	upIcon: ClassReference(null);
	upSkin: ClassReference(null); 
}

/*
//------------------------------
//  ColorPicker
//------------------------------
*/

ColorPicker
{
/*	disabledSkin: null;
	downSkin: null; */
	fontSize: 11;
/*	overSkin: null; */
	skin: ClassReference("mx.skins.spark.ColorPickerSkin");
	swatchBorderSize: 0;
/*	upSkin: null; */
	verticalGap: 0;
}

/*
//------------------------------
//  ComboBase
//------------------------------
*/

ComboBase
{
    borderSkin: ClassReference("mx.skins.spark.BorderSkin");
}

/*
//------------------------------
//  ComboBox
//------------------------------
*/

ComboBox
{
	arrowButtonWidth: 18;
/*	cornerRadius: 5; */
/*	disabledSkin: null 
	downSkin: null */
	dropdownStyleName: "comboDropdown";
/*	editableDisabledSkin: null
	editableDownSkin: null
	editableOverSkin: null */
	editableSkin: ClassReference("mx.skins.spark.EditableComboBoxSkin");
/*	editableUpSkin: null 
	fontWeight: "bold"; */
	leading: 0;
/*	overSkin: null */
	paddingBottom: -2;
	paddingLeft: 5;
	paddingRight: 5;
	paddingTop: -1;
	skin: ClassReference("mx.skins.spark.ComboBoxSkin");
/*	upSkin: null */
}

/*
//------------------------------
//  .comboDropDown
//------------------------------
*/

List.comboDropdown
{
	fontWeight: "normal";
	leading: 0;
	paddingLeft: 5;
	paddingRight: 5;
}

/*
//------------------------------
//  Container
//------------------------------
*/

Container
{
    borderSkin: ClassReference("mx.skins.spark.ContainerBorderSkin");
	borderStyle: "none";
    cornerRadius: 0;
}

/*
//------------------------------
//  ControlBar
//------------------------------
*/

ControlBar
{
    borderStyle: "none";
	disabledOverlayAlpha: 0; 
	paddingBottom: 11;
	paddingLeft: 11;
	paddingRight: 11;
	paddingTop: 11;
	verticalAlign: "middle";
}

/*
//------------------------------
//  DataGrid
//------------------------------
*/

DataGrid
{
	alternatingItemColors: #EFF3FA, #FFFFFF;
	columnDropIndicatorSkin: ClassReference("mx.skins.halo.DataGridColumnDropIndicator");
	columnResizeSkin: ClassReference("mx.skins.halo.DataGridColumnResizeSkin");
	headerDragProxyStyleName: "headerDragProxyStyle";
	headerBackgroundSkin: ClassReference("mx.skins.spark.DataGridHeaderBackgroundSkin");
	headerSeparatorSkin: ClassReference("mx.skins.spark.DataGridHeaderSeparatorSkin");
	sortArrowSkin: ClassReference("mx.skins.spark.DataGridSortArrow");
	stretchCursor: Embed(source="Assets.swf",symbol="cursorStretch");
	verticalGridLineColor: #696969;
}

/*
//------------------------------
//  DataGridItemRenderer
//------------------------------
*/

DataGridItemRenderer
{
	paddingLeft: 5;
}

/*
//------------------------------
//  DateChooser
//------------------------------
*/
DateChooser
{
    borderSkin: ClassReference("mx.skins.spark.BorderSkin");
    cornerRadius: 0;
/*	headerStyleName: "headerDateText";
	nextMonthDisabledSkin: null
	nextMonthDownSkin: null
	nextMonthOverSkin: null */
	nextMonthSkin: ClassReference("mx.skins.spark.DateChooserNextMonthSkin");
/*	nextMonthUpSkin: null
	nextYearDisabledSkin: null
	nextYearDownSkin: null
	nextYearOverSkin: null */
	nextYearSkin: ClassReference("mx.skins.spark.DateChooserNextYearSkin");
/*	nextYearUpSkin: null
	prevMonthDisabledSkin: null
	prevMonthDownSkin: null
	prevMonthOverSkin: null */
	prevMonthSkin: ClassReference("mx.skins.spark.DateChooserPrevMonthSkin");
/*	prevMonthUpSkin: null
	prevYearDisabledSkin: null
	prevYearDownSkin: null
	prevYearOverSkin: null */
	prevYearSkin: ClassReference("mx.skins.spark.DateChooserPrevYearSkin");
/*	prevYearUpSkin: null */
	rollOverIndicatorSkin: ClassReference("mx.skins.spark.DateChooserRollOverIndicatorSkin");
	selectionIndicatorSkin: ClassReference("mx.skins.spark.DateChooserSelectionIndicatorSkin");
	todayIndicatorSkin: ClassReference("mx.skins.spark.DateChooserTodayIndicatorSkin");
    todayColor: #C6D0DB;	
    todayStyleName: "todayStyle";
	weekDayStyleName: "weekDayStyle";
}

/*
//------------------------------
//  DateField
//------------------------------
*/

DateField
{
	/* borderColor: #C4CCCC; */
	cornerRadius: 0;
	dateChooserStyleName: "dateFieldPopup";
	disabledSkin: Embed(source="assets/CalendarIcon.png");
	downSkin: Embed(source="assets/CalendarIcon.png");
	overSkin: Embed(source="assets/CalendarIcon.png");
	upSkin: Embed(source="assets/CalendarIcon.png"); 
}

/*
//------------------------------
//  .dateFieldPopup
//------------------------------
*/

.dateFieldPopup
{
	backgroundColor: #FFFFFF;
	borderThickness: 1;
	dropShadowVisible: true;
}

/*
//------------------------------
//  DividedBox
//------------------------------
*/

DividedBox
{
	dividerAffordance: 6;
	dividerAlpha: 0.75;
	dividerColor: #6F7777;
	dividerSkin: Embed(source="Assets.swf",symbol="mx.skins.BoxDividerSkin");
	dividerThickness: 3;
	horizontalDividerCursor: Embed(source="Assets.swf",symbol="mx.skins.cursor.HBoxDivider");
	horizontalGap: 10;
	verticalDividerCursor: Embed(source="Assets.swf",symbol="mx.skins.cursor.VBoxDivider");
	verticalGap: 10;
}

/*
//------------------------------
//  DragManager
//------------------------------
*/

DragManager
{
	copyCursor: Embed(source="Assets.swf",symbol="mx.skins.cursor.DragCopy");
	defaultDragImageSkin: ClassReference("mx.skins.halo.DefaultDragImage");
	linkCursor: Embed(source="Assets.swf",symbol="mx.skins.cursor.DragLink");
	moveCursor: Embed(source="Assets.swf",symbol="mx.skins.cursor.DragMove");
	rejectCursor: Embed(source="Assets.swf",symbol="mx.skins.cursor.DragReject");
}

/*
//------------------------------
//  .errorTip
//------------------------------
*/

.errorTip
{
	borderColor: #CE2929;
	borderStyle: "errorTipRight";
	color: #FFFFFF;
	fontSize: 10;
	fontWeight: "bold";
	shadowColor: #000000;
	paddingBottom: 4;
	paddingLeft: 4;
	paddingRight: 4;
	paddingTop: 4;
}

/*
//------------------------------
//  Form
//------------------------------
*/

Form
{
	paddingBottom: 16;
	paddingLeft: 16;
	paddingRight: 16;
	paddingTop: 16;
	verticalGap: 6;
}

/*
//------------------------------
//  FormHeading
//------------------------------
*/

FormHeading
{
	fontSize: 12;
	fontWeight: "bold";
}

/*
//------------------------------
//  FormItem
//------------------------------
*/

FormItem
{
	indicatorSkin: Embed(source="Assets.swf",symbol="mx.containers.FormItem.Required");
}

/*
//------------------------------
//  FormItemLabel
//------------------------------
*/
FormItemLabel
{
	textAlign: "right";
}


/*
//------------------------------
//  Grid
//------------------------------
*/

/*
//------------------------------
// GridItem
//------------------------------
*/

/*
//------------------------------
//  GridRow
//------------------------------
*/

/*
//------------------------------
//  .headerDragProxyStyle
//------------------------------
*/

.headerDragProxyStyle
{
	fontWeight: "bold";
}

/*
//------------------------------
//  HBox
//------------------------------
*/

/*
//------------------------------
//  HDividedBox
//------------------------------
*/

HDividedBox
{
	dividerAffordance: 6;
	dividerAlpha: 0.75;
	dividerColor: #6F7777;
	dividerSkin: Embed(source="Assets.swf",symbol="mx.skins.BoxDividerSkin");
	dividerThickness: 3;
	horizontalDividerCursor: Embed(source="Assets.swf",symbol="mx.skins.cursor.HBoxDivider");
	horizontalGap: 10;
	verticalDividerCursor: Embed(source="Assets.swf",symbol="mx.skins.cursor.VBoxDivider");
	verticalGap: 10;
}

/*
//------------------------------
//  HorizontalList
//------------------------------
*/

HorizontalList
{
	textAlign: "center";
}

/*
//------------------------------
//  HRule
//------------------------------
*/

HRule
{
	strokeColor: #C4CCCC;
	strokeWidth: 2;
}

/*
//------------------------------
//  HScrollBar
//------------------------------
*/

/*
//------------------------------
//  HSlider
//------------------------------
*/

HSlider
{
	dataTipPlacement: "top";
	tickLength: 4;
}

/*
//------------------------------
//  Image
//------------------------------
*/

Image
{
    layoutDirection: "ltr";
}

/*
//------------------------------
//  Label
//------------------------------
*/

/*
//------------------------------
//  LinkButton
//------------------------------
*/

LinkButton
{
/*	disabledIcon: null; */
	disabledSkin: ClassReference(null);
/*	downIcon: null; */
	downSkin: ClassReference(null);
/*	overIcon: null; */
	overSkin: ClassReference(null);
	paddingLeft: 7;
	paddingRight: 7;	
/*	selectedDisabledIcon: null; */ 
	selectedDisabledSkin: ClassReference(null);
/*	selectedDownIcon: null; */
	selectedDownSkin: ClassReference(null);
/*	selectedOverIcon: null; */
	selectedOverSkin: ClassReference(null);
/*	selectedUpIcon: null; */
	selectedUpSkin: ClassReference(null); 
	skin: ClassReference("mx.skins.spark.LinkButtonSkin");
/*	upIcon: null; */
	upSkin: ClassReference(null); 
}

LinkButton.linkButtonStyle
{
	paddingBottom: 2;
	paddingLeft: 2;
	paddingRight: 2;
	paddingTop: 2;
}

/*
//------------------------------
//  LinkBar
//------------------------------
*/

LinkBar
{
	horizontalGap: 8;
	linkButtonStyleName: "linkButtonStyle";
	paddingBottom: 2;
	paddingLeft: 2;
	paddingRight: 2;
	paddingTop: 2;
	separatorColor: #C4CCCC;
	separatorSkin: ClassReference("mx.skins.halo.LinkSeparator");
	separatorWidth: 1;
	verticalGap: 8;
}

/*
//------------------------------
//  ListBase
//------------------------------
*/

ListBase
{
	borderStyle: "solid";
    _creationPolicy: "auto";
	dropIndicatorSkin: ClassReference("mx.skins.halo.ListDropIndicator");
	paddingBottom: 2;
	paddingLeft: 2;
	paddingRight: 0;
	paddingTop: 2;
}

/*
//------------------------------
//  List
//------------------------------
*/

/*
//------------------------------
//  Menu
//------------------------------
*/

Menu
{
	borderStyle: "menuBorder";
	branchDisabledIcon : ClassReference("mx.skins.spark.MenuArrowDisabled");
	branchIcon : ClassReference("mx.skins.spark.MenuArrow");
	checkDisabledIcon : ClassReference("mx.skins.spark.MenuCheckDisabled");
	checkIcon : ClassReference("mx.skins.spark.MenuCheck");
	dropIndicatorSkin: ClassReference("mx.skins.halo.ListDropIndicator");
/*	dropShadowVisible: true;  in spark.css */
	horizontalGap: 6;
	leftIconGap: 18;
	rightIconGap: 15;
	paddingBottom: 1;
	paddingLeft: 1;
	paddingRight: 0;
	paddingTop: 1;
	radioDisabledIcon : ClassReference("mx.skins.spark.MenuRadioDisabled");
	radioIcon : ClassReference("mx.skins.spark.MenuRadio");
	separatorSkin: ClassReference("mx.skins.spark.MenuSeparatorSkin");
	verticalAlign: "middle";
}

/*
//------------------------------
//  MenuBar
//------------------------------
*/

MenuBar
{
	backgroundSkin: ClassReference("mx.skins.spark.ButtonSkin");
	itemSkin: ClassReference("mx.skins.spark.MenuItemSkin");
/*	itemUpSkin: null
	itemOverSkin: null
	itemDownSkin: null */
}

/*
//------------------------------
//  NavBar
//------------------------------
*/
NavBar
{
    borderSkin: ClassReference("mx.skins.spark.BorderSkin");
}

/*
//------------------------------
//  NumericStepper
//------------------------------
*/

NumericStepper
{
/*	cornerRadius: 5; */
/*	downArrowDisabledSkin: null
	downArrowDownSkin: null
	downArrowOverSkin: null */
	downArrowSkin: ClassReference("mx.skins.spark.StepperDecrButtonSkin");
/*	downArrowUpSkin: null */
	focusRoundedCorners: "tr br"; /* Only round the right corners of the focus rect */
/*	upArrowDisabledSkin: null
	upArrowDownSkin: null
	upArrowOverSkin: null */
	upArrowSkin: ClassReference("mx.skins.spark.StepperIncrButtonSkin");
/*	upArrowUpSkin: null */
}

/*
//------------------------------
//  Panel
//------------------------------
*/

/*
	Note the use of effect triggers, below.
	For now, adding a default effect trigger is a three step process:
	1) Add it to the style sheet, as shown here.
	2) Create a linker dependency so that the effect class
	   ("mx.effects.Dissolve in this case") is linked into the app.
	   See the bottom of Panel.as.
	3) Register the EffectManager as an event listener.  See Panel.createChildren("").
*/

Panel
{
	/* backgroundAlpha: 1.0; controls the alpha of the panel content area. */
	backgroundColor: #FFFFFF;
    borderAlpha: 0.5;
    borderColor: 0;
	borderSkin: ClassReference("mx.skins.spark.PanelBorderSkin");
	borderStyle: "default";
	/* cornerRadius: 4; */
    cornerRadius: 0;
/*	dropShadowVisible: true; in spark.css */
	paddingBottom: 0;
	paddingLeft: 0;
	paddingRight: 0;
	paddingTop: 0;
    resizeEndEffect: "Dissolve";
    resizeStartEffect: "Dissolve";
	statusStyleName: "windowStatus";
	titleBackgroundSkin: ClassReference("mx.core.UIComponent");
	titleStyleName: "windowStyles";
}

/*
//------------------------------
//  PopUpButton
//------------------------------
*/

PopUpButton
{
	arrowButtonWidth: 18;
/*	disabledSkin: null;
	downSkin: null; */
	paddingLeft: 3;
	paddingRight: 3;
/*	overSkin: null;
	popUpDownSkin: null; */
	popUpIcon: ClassReference("mx.skins.halo.PopUpIcon"); 
	popUpGap: 0;
/*	popUpOverSkin: null; */
	skin: ClassReference("mx.skins.spark.PopUpButtonSkin");
/*	upSkin: null; */
}

Menu.popUpMenu
{
	fontWeight: "normal";
	textAlign: "start";
}

/*
//------------------------------
//  PopUpMenuButton
//------------------------------
*/

PopUpMenuButton
{
/*	disabledSkin: null
	downSkin: null 
	overSkin: null */
	popUpStyleName: "popUpMenu";
/*	popUpDownSkin: null */
	popUpIcon: ClassReference("mx.skins.halo.PopUpMenuIcon");
/*	popUpOverSkin: null 
	skin: ClassReference("mx.skins.halo.PopUpButtonSkin");
	upSkin: null */
}

/*
//------------------------------
//  PrintDataGrid
//------------------------------
*/

PrintDataGrid
{
	alternatingItemColors: #FFFFFF, #FFFFFF;
	borderColor: 0;
	headerSeparatorSkin: ClassReference("mx.skins.halo.DataGridHeaderSeparator");
	headerStyleName: "dataGridStyles";
	horizontalGridLineColor: 0;
	horizontalGridLines: true;
	sortArrowSkin: ClassReference("mx.skins.spark.DataGridSortArrow");
	stretchCursor: Embed(source="Assets.swf",symbol="cursorStretch");
	verticalGridLineColor: #000000;
}

/*
//------------------------------
//  ProgressBar
//------------------------------
*/

ProgressBar
{
	barSkin: ClassReference("mx.skins.spark.ProgressBarSkin");
	fontWeight: "bold";
	indeterminateMoveInterval: 14;
	indeterminateSkin: ClassReference("mx.skins.spark.ProgressIndeterminateSkin");
    leading: 0;
    maskSkin: ClassReference("mx.skins.spark.ProgressMaskSkin");
	trackSkin: ClassReference("mx.skins.spark.ProgressBarTrackSkin");
}

/*
//------------------------------
//  RadioButton
//------------------------------
*/

RadioButton
{
	disabledIcon: ClassReference(null);
	disabledSkin: ClassReference(null);
	downIcon: ClassReference(null);
	downSkin: ClassReference(null);
	fontWeight: "normal";
	horizontalGap: 3;	
	icon: ClassReference("mx.skins.spark.RadioButtonSkin");
	labelVerticalOffset: 1;
	overIcon: ClassReference(null);
	overSkin: ClassReference(null);
	paddingBottom: -1;
	paddingLeft: 0;
	paddingRight: 0;	
	paddingTop: -1;
	selectedDisabledIcon: ClassReference(null);
	selectedDisabledSkin: ClassReference(null);
	selectedDownIcon: ClassReference(null);
	selectedDownSkin: ClassReference(null);
	selectedOverIcon: ClassReference(null);
	selectedOverSkin: ClassReference(null);
	selectedUpIcon: ClassReference(null);
	selectedUpSkin: ClassReference(null);
	skin: ClassReference(null);
	textAlign: "start";
	upIcon: ClassReference(null);
	upSkin: ClassReference(null);
}

/*
//------------------------------
//  RichTextEditor
//------------------------------
*/

RichTextEditor
{
	textAreaStyleName: "richTextEditorTextAreaStyle";
}

/*
//------------------------------
//  .richTextEditorTextAreaStyle
//------------------------------
*/

TextArea.richTextEditorTextAreaStyle
{
}

/*
//------------------------------
//  ScrollBar
//------------------------------
*/

ScrollBar
{
	/*cornerRadius: 4;*/
/*	downArrowDisabledSkin: null
	downArrowDownSkin: null
	downArrowOverSkin: null */
	downArrowSkin: ClassReference("mx.skins.spark.ScrollBarDownButtonSkin");
/*	downArrowUpSkin: null
	fillColors: #FFFFFF, #E7E7E7; // bailed these as ScrollBar is now a translucent component backed by backgroundColor-derived solid shapes */
    paddingBottom: 0;
    paddingLeft: 0;
    paddingRight: 0;
    paddingTop: 0;
    thumbOffset: 0;
/*	thumbDownSkin: null
	thumbOverSkin: null */
	thumbSkin: ClassReference("mx.skins.spark.ScrollBarThumbSkin");
/*	thumbUpSkin: null */
	trackSkin: ClassReference("mx.skins.spark.ScrollBarTrackSkin");
/*	upArrowDisabledSkin: null
	upArrowDownSkin: null
	upArrowOverSkin: null */
	upArrowSkin: ClassReference("mx.skins.spark.ScrollBarUpButtonSkin");
/*	upArrowUpSkin: null */
}

/*
//------------------------------
//  ScrollControlBase
//------------------------------
*/

ScrollControlBase 
{
	borderSkin: ClassReference("mx.skins.spark.BorderSkin");
    focusRoundedCorners : " ";
}


/*
//------------------------------
//  Slider
//------------------------------
*/

Slider
{
	dataTipOffset: 16;
	dataTipPrecision: 2;
	labelOffset: -10;
	showTrackHighlight: false;
	slideDuration: 300;
/*	thumbDisabledSkin: null
	thumbDownSkin: null */
	thumbOffset: 0;
/*	thumbOverSkin: null */
	thumbSkin: ClassReference("mx.skins.spark.SliderThumbSkin");
/*	thumbUpSkin: null */
	tickColor: #6F7777;
	tickOffset: -6;
	tickThickness: 1;
	trackHighlightSkin: ClassReference("mx.skins.spark.SliderTrackHighlightSkin");
	trackSkin: ClassReference("mx.skins.spark.SliderTrackSkin");
}

/*
//------------------------------
//  SwatchPanel
//------------------------------
*/

SwatchPanel
{
	backgroundColor: #E5E6E7;
	borderColor: #A5A9AE;
	columnCount: 20;
	fontSize: 11;
	highlightColor: #FFFFFF;
	horizontalGap: 0;
	paddingBottom: 5;
	paddingLeft: 5;
	paddingRight: 5;
	paddingTop: 4;
	previewHeight: 22;
	previewWidth: 45;
	shadowColor: #4D555E;
	swatchBorderColor: #000000;
	swatchBorderSize: 1;
	swatchGridBackgroundColor: #000000;
	swatchGridBorderSize: 0;
	swatchHeight: 12;
	swatchHighlightColor: #FFFFFF;
	swatchHighlightSize: 1;
	swatchWidth: 12;
	textFieldStyleName: "swatchPanelTextField";
	textFieldWidth: 72;
	verticalGap: 0;
}

/*
//------------------------------
//  swatchPanelTextField
//------------------------------
*/
.swatchPanelTextField
{
	backgroundColor: #FFFFFF;
	borderCapColor: #919999;
	borderColor: #D5DDDD;
	borderStyle: "inset";
	buttonColor: #6F7777;
	highlightColor: #C4CCCC;
	paddingLeft: 5;
	paddingRight: 5;
	shadowCapColor: #D5DDDD;
	shadowColor: #D5DDDD;
}


/*
//------------------------------
//  SWFLoader
//------------------------------
*/

SWFLoader
{
	brokenImageBorderSkin: ClassReference("mx.skins.halo.BrokenImageBorderSkin");
	brokenImageSkin: Embed(source="Assets.swf",symbol="__brokenImage");
}

/*
//------------------------------
//  Tab
//------------------------------
*/

Tab
{
/*	disabledIcon: null; */
	disabledSkin: ClassReference(null);
/*	downIcon: null; */
	downSkin: ClassReference(null);
/*	overIcon: null; */
	overSkin: ClassReference(null);
	paddingBottom: 1;
	paddingTop: 1;
/*	selectedDisabledIcon: null; */
	selectedDisabledSkin: ClassReference(null);
/*	selectedDownIcon: null; */
	selectedDownSkin: ClassReference(null);
/*	selectedOverIcon: null; */
	selectedOverSkin: ClassReference(null);
/*	selectedUpIcon: null; */
	selectedUpSkin: ClassReference(null); 
	skin: ClassReference("mx.skins.spark.TabSkin");
/*	upIcon: ClassReference(null); */
	upSkin: ClassReference(null); 
}

/*
//------------------------------
//  TabBar
//------------------------------
*/

TabBar
{
	horizontalAlign: "left";
	horizontalGap: -1;
	textAlign: "center";
	verticalAlign: "top";
	verticalGap: -1;
}

/*
//------------------------------
//  TabNavigator
//------------------------------
*/

TabNavigator
{
	backgroundColor: #FFFFFF;
	borderColor: #696969;	/* used for edge of tab's content area, */
	borderStyle: "solid";
	horizontalAlign: "left";
	horizontalGap: -1;
	paddingTop: 10;
	tabOffset: 0;
}

/*
//------------------------------
//  Text
//------------------------------
*/

/*
//------------------------------
//  TextArea
//------------------------------
*/

TextArea
{
	borderStyle: "solid";
	horizontalScrollBarStyleName: "textAreaHScrollBarStyle";
	verticalScrollBarStyleName: "textAreaVScrollBarStyle";
}

/*
//------------------------------
//  .textAreaVScrollBarStyle
//------------------------------
*/

HScrollBar.textAreaVScrollBarStyle
{
}

/*
//------------------------------
//  .textAreaHScrollBarStyle
//------------------------------
*/

VScrollBar.textAreaHScrollBarStyle
{
}

/*
//------------------------------
//  TextInput
//------------------------------
*/

TextInput
{
	borderSkin: ClassReference("mx.skins.spark.TextInputBorderSkin");
	paddingTop: 2;
	paddingLeft: 2;
	paddingRight: 2;
}

/*
//------------------------------
//  Tile
//------------------------------
*/

/*
//------------------------------
//  TileList
//------------------------------
*/

TileList
{
	paddingLeft: 2;
	paddingRight: 2;
	textAlign: "center";
	verticalAlign: "middle";
}

/*
//------------------------------
//  TitleWindow
//------------------------------
*/

/*
	Note the use of effect triggers, below.
	For now, adding a default effect trigger is a three step process:
	1) Add it to the style sheet, as shown here.
	2) Create a linker dependency so that the effect class
	   (mx.effects.Dissolve in this case) is linked into the app.
	   See the bottom of Panel.as.
	3) Register the EffectManager as an event listener.  See Panel.createChildren("").
*/

TitleWindow
{
	backgroundColor: #FFFFFF;
	closeButtonDisabledSkin: Embed(source="Assets.swf",symbol="CloseButtonDisabled");
	closeButtonDownSkin: Embed(source="Assets.swf",symbol="CloseButtonDown");
	closeButtonOverSkin: Embed(source="Assets.swf",symbol="CloseButtonOver");
	closeButtonUpSkin: Embed(source="Assets.swf",symbol="CloseButtonUp");
	/*cornerRadius: 8;*/
/*	dropShadowVisible: true; in spark.css */
	paddingBottom: 4;
	paddingLeft: 4;
	paddingRight: 4;
	paddingTop: 4;
}

/*
//------------------------------
//  .todayStyle
//------------------------------
*/

.todayStyle
{
	color: 0;
	textAlign: "center";
}

/*
//------------------------------
//  ToggleButtonBar
//------------------------------
*/

/*
//------------------------------
//  Tree
//------------------------------
*/

Tree
{
	defaultLeafIcon: Embed(source="Assets.swf",symbol="TreeNodeIcon");
	disclosureClosedIcon: Embed(source="Assets.swf",symbol="TreeDisclosureClosed");
	disclosureOpenIcon: Embed(source="Assets.swf",symbol="TreeDisclosureOpen");
	folderClosedIcon: Embed(source="Assets.swf",symbol="TreeFolderClosed");
	folderOpenIcon: Embed(source="Assets.swf",symbol="TreeFolderOpen");
	paddingLeft: 2;
	paddingRight: 0;
	verticalAlign: "middle";
}

/*
//------------------------------
//  VBox
//------------------------------
*/

/*
//------------------------------
//  VDividedBox
//------------------------------
*/

VDividedBox
{
	dividerAffordance: 6;
	dividerAlpha: 0.75;
	dividerColor: #6F7777;
	dividerSkin: Embed(source="Assets.swf",symbol="mx.skins.BoxDividerSkin");
	dividerThickness: 3;
	horizontalDividerCursor: Embed(source="Assets.swf",symbol="mx.skins.cursor.HBoxDivider");
	horizontalGap: 10;
	verticalDividerCursor: Embed(source="Assets.swf",symbol="mx.skins.cursor.VBoxDivider");
	verticalGap: 10;
}

/*
//------------------------------
//  ViewStack
//------------------------------
*/

/*
//------------------------------
//  VideoDisplay
//------------------------------
*/

VideoDisplay
{
    borderSkin: ClassReference("mx.skins.spark.BorderSkin");
    borderStyle: "none";
/*    contentBackgroundColor: #000000;  in spark.css */
    layoutDirection: "ltr";
}

/*
//------------------------------
//  VRule
//------------------------------
*/

VRule
{
	strokeColor: #C4CCCC;
	strokeWidth: 2;
}

/*
//------------------------------
//  VScrollBar
//------------------------------
*/


/*
//------------------------------
//  VSlider
//------------------------------
*/

VSlider
{
	dataTipPlacement: "left";
	tickLength: 3;
}

/*
//------------------------------
//  .weekDayStyle
//------------------------------
*/

.weekDayStyle
{
	fontWeight: "bold";
	textAlign: "center";
}

/*
//------------------------------
//  .windowStatus
//------------------------------
*/

/*
	This style declaration is required to make the status field of Panel/Window
	correctly pick up global default style properties.
*/

.windowStatus
{
	color: #666666;
}

/*
//------------------------------
//  .windowStyles
//------------------------------
*/

.windowStyles
{
	fontWeight: "bold";
/*	fontSize: 12; */
}
