
/**
 * This is the non-generated part of nsCSSProps
 */

#include "nsCSSProps.h"
#include "nsCSSKeywordIDs.h"
#include "nsStyleConsts.h"
#include "nsCSSKeywords.h"


// Keyword id tables for variant/enum parsing
const PRInt32 nsCSSProps::kAzimuthKTable[] = {
  KEYWORD_LEFT_SIDE,    NS_STYLE_AZIMUTH_LEFT_SIDE,
  KEYWORD_FAR_LEFT,     NS_STYLE_AZIMUTH_FAR_LEFT,
  KEYWORD_LEFT,         NS_STYLE_AZIMUTH_LEFT,
  KEYWORD_CENTER_LEFT,  NS_STYLE_AZIMUTH_CENTER_LEFT,
  KEYWORD_CENTER,       NS_STYLE_AZIMUTH_CENTER,
  KEYWORD_CENTER_RIGHT, NS_STYLE_AZIMUTH_CENTER_RIGHT,
  KEYWORD_RIGHT,        NS_STYLE_AZIMUTH_RIGHT,
  KEYWORD_FAR_RIGHT,    NS_STYLE_AZIMUTH_FAR_RIGHT,
  KEYWORD_RIGHT_SIDE,   NS_STYLE_AZIMUTH_RIGHT_SIDE,
  KEYWORD_BEHIND,       NS_STYLE_AZIMUTH_BEHIND,
  KEYWORD_LEFTWARDS,    NS_STYLE_AZIMUTH_LEFTWARDS,
  KEYWORD_RIGHTWARDS,   NS_STYLE_AZIMUTH_RIGHTWARDS,
  -1,-1
};

const PRInt32 nsCSSProps::kBackgroundAttachmentKTable[] = {
  KEYWORD_FIXED, NS_STYLE_BG_ATTACHMENT_FIXED,
  KEYWORD_SCROLL, NS_STYLE_BG_ATTACHMENT_SCROLL,
  -1,-1
};

const PRInt32 nsCSSProps::kBackgroundColorKTable[] = {
  KEYWORD_TRANSPARENT, NS_STYLE_BG_COLOR_TRANSPARENT,
  -1,-1
};

const PRInt32 nsCSSProps::kBackgroundRepeatKTable[] = {
  KEYWORD_NO_REPEAT,  NS_STYLE_BG_REPEAT_OFF,
  KEYWORD_REPEAT,     NS_STYLE_BG_REPEAT_XY,
  KEYWORD_REPEAT_X,   NS_STYLE_BG_REPEAT_X,
  KEYWORD_REPEAT_Y,   NS_STYLE_BG_REPEAT_Y,
  -1,-1
};

const PRInt32 nsCSSProps::kBorderCollapseKTable[] = {
  KEYWORD_COLLAPSE,  NS_STYLE_BORDER_COLLAPSE,
  KEYWORD_SEPARATE,  NS_STYLE_BORDER_SEPARATE,
  -1,-1
};

const PRInt32 nsCSSProps::kBorderColorKTable[] = {
  KEYWORD_TRANSPARENT, NS_STYLE_COLOR_TRANSPARENT,
  -1,-1
};

const PRInt32 nsCSSProps::kBorderStyleKTable[] = {
  KEYWORD_HIDDEN, NS_STYLE_BORDER_STYLE_HIDDEN,
  KEYWORD_DOTTED, NS_STYLE_BORDER_STYLE_DOTTED,
  KEYWORD_DASHED, NS_STYLE_BORDER_STYLE_DASHED,
  KEYWORD_SOLID,  NS_STYLE_BORDER_STYLE_SOLID,
  KEYWORD_DOUBLE, NS_STYLE_BORDER_STYLE_DOUBLE,
  KEYWORD_GROOVE, NS_STYLE_BORDER_STYLE_GROOVE,
  KEYWORD_RIDGE,  NS_STYLE_BORDER_STYLE_RIDGE,
  KEYWORD_INSET,  NS_STYLE_BORDER_STYLE_INSET,
  KEYWORD_OUTSET, NS_STYLE_BORDER_STYLE_OUTSET,
  -1,-1
};

const PRInt32 nsCSSProps::kBorderWidthKTable[] = {
  KEYWORD_THIN, NS_STYLE_BORDER_WIDTH_THIN,
  KEYWORD_MEDIUM, NS_STYLE_BORDER_WIDTH_MEDIUM,
  KEYWORD_THICK, NS_STYLE_BORDER_WIDTH_THICK,
  -1,-1
};

const PRInt32 nsCSSProps::kCaptionSideKTable[] = {
  KEYWORD_TOP,    NS_SIDE_TOP,
  KEYWORD_RIGHT,  NS_SIDE_RIGHT,
  KEYWORD_BOTTOM, NS_SIDE_BOTTOM,
  KEYWORD_LEFT,   NS_SIDE_LEFT,
  -1,-1
};

const PRInt32 nsCSSProps::kClearKTable[] = {
  KEYWORD_LEFT, NS_STYLE_CLEAR_LEFT,
  KEYWORD_RIGHT, NS_STYLE_CLEAR_RIGHT,
  KEYWORD_BOTH, NS_STYLE_CLEAR_LEFT_AND_RIGHT,
  -1,-1
};

const PRInt32 nsCSSProps::kContentKTable[] = {
  KEYWORD_OPEN_QUOTE, NS_STYLE_CONTENT_OPEN_QUOTE,
  KEYWORD_CLOSE_QUOTE, NS_STYLE_CONTENT_CLOSE_QUOTE,
  KEYWORD_NO_OPEN_QUOTE, NS_STYLE_CONTENT_NO_OPEN_QUOTE,
  KEYWORD_NO_CLOSE_QUOTE, NS_STYLE_CONTENT_NO_CLOSE_QUOTE,
  -1,-1
};

const PRInt32 nsCSSProps::kCursorKTable[] = {
  KEYWORD_CROSSHAIR, NS_STYLE_CURSOR_CROSSHAIR,
  KEYWORD_DEFAULT, NS_STYLE_CURSOR_DEFAULT,
  KEYWORD_POINTER, NS_STYLE_CURSOR_POINTER,
  KEYWORD_MOVE, NS_STYLE_CURSOR_MOVE,
  KEYWORD_E_RESIZE, NS_STYLE_CURSOR_E_RESIZE,
  KEYWORD_NE_RESIZE, NS_STYLE_CURSOR_NE_RESIZE,
  KEYWORD_NW_RESIZE, NS_STYLE_CURSOR_NW_RESIZE,
  KEYWORD_N_RESIZE, NS_STYLE_CURSOR_N_RESIZE,
  KEYWORD_SE_RESIZE, NS_STYLE_CURSOR_SE_RESIZE,
  KEYWORD_SW_RESIZE, NS_STYLE_CURSOR_SW_RESIZE,
  KEYWORD_S_RESIZE, NS_STYLE_CURSOR_S_RESIZE,
  KEYWORD_W_RESIZE, NS_STYLE_CURSOR_W_RESIZE,
  KEYWORD_TEXT, NS_STYLE_CURSOR_TEXT,
  KEYWORD_WAIT, NS_STYLE_CURSOR_WAIT,
  KEYWORD_HELP, NS_STYLE_CURSOR_HELP,
  -1,-1
};

const PRInt32 nsCSSProps::kDirectionKTable[] = {
  KEYWORD_LTR,      NS_STYLE_DIRECTION_LTR,
  KEYWORD_RTL,      NS_STYLE_DIRECTION_RTL,
  -1,-1
};

const PRInt32 nsCSSProps::kDisplayKTable[] = {
  KEYWORD_INLINE,             NS_STYLE_DISPLAY_INLINE,
  KEYWORD_BLOCK,              NS_STYLE_DISPLAY_BLOCK,
  KEYWORD_LIST_ITEM,          NS_STYLE_DISPLAY_LIST_ITEM,
  KEYWORD_RUN_IN,             NS_STYLE_DISPLAY_RUN_IN,
  KEYWORD_COMPACT,            NS_STYLE_DISPLAY_COMPACT,
  KEYWORD_MARKER,             NS_STYLE_DISPLAY_MARKER,
  KEYWORD_TABLE,              NS_STYLE_DISPLAY_TABLE,
  KEYWORD_INLINE_TABLE,       NS_STYLE_DISPLAY_INLINE_TABLE,
  KEYWORD_TABLE_ROW_GROUP,    NS_STYLE_DISPLAY_TABLE_ROW_GROUP,
  KEYWORD_TABLE_HEADER_GROUP, NS_STYLE_DISPLAY_TABLE_HEADER_GROUP,
  KEYWORD_TABLE_FOOTER_GROUP, NS_STYLE_DISPLAY_TABLE_FOOTER_GROUP,
  KEYWORD_TABLE_ROW,          NS_STYLE_DISPLAY_TABLE_ROW,
  KEYWORD_TABLE_COLUMN_GROUP, NS_STYLE_DISPLAY_TABLE_COLUMN_GROUP,
  KEYWORD_TABLE_COLUMN,       NS_STYLE_DISPLAY_TABLE_COLUMN,
  KEYWORD_TABLE_CELL,         NS_STYLE_DISPLAY_TABLE_CELL,
  KEYWORD_TABLE_CAPTION,      NS_STYLE_DISPLAY_TABLE_CAPTION,
  -1,-1
};

const PRInt32 nsCSSProps::kElevationKTable[] = {
  KEYWORD_BELOW,  NS_STYLE_ELEVATION_BELOW,
  KEYWORD_LEVEL,  NS_STYLE_ELEVATION_LEVEL,
  KEYWORD_ABOVE,  NS_STYLE_ELEVATION_ABOVE,
  KEYWORD_HIGHER, NS_STYLE_ELEVATION_HIGHER,
  KEYWORD_LOWER,  NS_STYLE_ELEVATION_LOWER,
  -1,-1
};

const PRInt32 nsCSSProps::kEmptyCellsKTable[] = {
  KEYWORD_SHOW,  NS_STYLE_TABLE_EMPTY_CELLS_SHOW,
  KEYWORD_HIDE,  NS_STYLE_TABLE_EMPTY_CELLS_HIDE,
  -1,-1
};

const PRInt32 nsCSSProps::kFloatKTable[] = {
  KEYWORD_LEFT,  NS_STYLE_FLOAT_LEFT,
  KEYWORD_RIGHT, NS_STYLE_FLOAT_RIGHT,
  -1,-1
};

const PRInt32 nsCSSProps::kFontKTable[] = {
  KEYWORD_CAPTION, NS_STYLE_FONT_CAPTION,
  KEYWORD_ICON, NS_STYLE_FONT_ICON,
  KEYWORD_MENU, NS_STYLE_FONT_MENU,
  KEYWORD_MESSAGE_BOX, NS_STYLE_FONT_MESSAGE_BOX,
  KEYWORD_SMALL_CAPTION, NS_STYLE_FONT_SMALL_CAPTION,
  KEYWORD_STATUS_BAR, NS_STYLE_FONT_STATUS_BAR,
  -1,-1
};

const PRInt32 nsCSSProps::kFontSizeKTable[] = {
  KEYWORD_XX_SMALL, NS_STYLE_FONT_SIZE_XXSMALL,
  KEYWORD_X_SMALL, NS_STYLE_FONT_SIZE_XSMALL,
  KEYWORD_SMALL, NS_STYLE_FONT_SIZE_SMALL,
  KEYWORD_MEDIUM, NS_STYLE_FONT_SIZE_MEDIUM,
  KEYWORD_LARGE, NS_STYLE_FONT_SIZE_LARGE,
  KEYWORD_X_LARGE, NS_STYLE_FONT_SIZE_XLARGE,
  KEYWORD_XX_LARGE, NS_STYLE_FONT_SIZE_XXLARGE,
  KEYWORD_LARGER, NS_STYLE_FONT_SIZE_LARGER,
  KEYWORD_SMALLER, NS_STYLE_FONT_SIZE_SMALLER,
  -1,-1
};

const PRInt32 nsCSSProps::kFontStretchKTable[] = {
  KEYWORD_WIDER, NS_STYLE_FONT_STRETCH_WIDER,
  KEYWORD_NARROWER, NS_STYLE_FONT_STRETCH_NARROWER,
  KEYWORD_ULTRA_CONDENSED, NS_STYLE_FONT_STRETCH_ULTRA_CONDENSED,
  KEYWORD_EXTRA_CONDENSED, NS_STYLE_FONT_STRETCH_EXTRA_CONDENSED,
  KEYWORD_CONDENSED, NS_STYLE_FONT_STRETCH_CONDENSED,
  KEYWORD_SEMI_CONDENSED, NS_STYLE_FONT_STRETCH_SEMI_CONDENSED,
  KEYWORD_SEMI_EXPANDED, NS_STYLE_FONT_STRETCH_SEMI_EXPANDED,
  KEYWORD_EXPANDED, NS_STYLE_FONT_STRETCH_EXPANDED,
  KEYWORD_EXTRA_EXPANDED, NS_STYLE_FONT_STRETCH_EXTRA_EXPANDED,
  KEYWORD_ULTRA_EXPANDED, NS_STYLE_FONT_STRETCH_ULTRA_EXPANDED,
  -1,-1
};

const PRInt32 nsCSSProps::kFontStyleKTable[] = {
  KEYWORD_ITALIC, NS_STYLE_FONT_STYLE_ITALIC,
  KEYWORD_OBLIQUE, NS_STYLE_FONT_STYLE_OBLIQUE,
  -1,-1
};

const PRInt32 nsCSSProps::kFontVariantKTable[] = {
  KEYWORD_SMALL_CAPS, NS_STYLE_FONT_VARIANT_SMALL_CAPS,
  -1,-1
};

const PRInt32 nsCSSProps::kFontWeightKTable[] = {
    KEYWORD_BOLD, NS_STYLE_FONT_WEIGHT_BOLD,
    KEYWORD_BOLDER, NS_STYLE_FONT_WEIGHT_BOLDER,
    KEYWORD_LIGHTER, NS_STYLE_FONT_WEIGHT_LIGHTER,
    -1,-1
};

const PRInt32 nsCSSProps::kListStylePositionKTable[] = {
  KEYWORD_INSIDE, NS_STYLE_LIST_STYLE_POSITION_INSIDE,
  KEYWORD_OUTSIDE, NS_STYLE_LIST_STYLE_POSITION_OUTSIDE,
  -1,-1
};

const PRInt32 nsCSSProps::kListStyleKTable[] = {
  KEYWORD_DISC, NS_STYLE_LIST_STYLE_DISC,
  KEYWORD_CIRCLE, NS_STYLE_LIST_STYLE_CIRCLE,
  KEYWORD_SQUARE, NS_STYLE_LIST_STYLE_SQUARE,
  KEYWORD_DECIMAL, NS_STYLE_LIST_STYLE_DECIMAL,
  KEYWORD_DECIMAL_LEADING_ZERO, NS_STYLE_LIST_STYLE_DECIMAL_LEADING_ZERO,
  KEYWORD_LOWER_ROMAN, NS_STYLE_LIST_STYLE_LOWER_ROMAN,
  KEYWORD_UPPER_ROMAN, NS_STYLE_LIST_STYLE_UPPER_ROMAN,
  KEYWORD_LOWER_GREEK, NS_STYLE_LIST_STYLE_LOWER_GREEK,
  KEYWORD_LOWER_ALPHA, NS_STYLE_LIST_STYLE_LOWER_ALPHA,
  KEYWORD_LOWER_LATIN, NS_STYLE_LIST_STYLE_LOWER_LATIN,
  KEYWORD_UPPER_ALPHA, NS_STYLE_LIST_STYLE_UPPER_ALPHA,
  KEYWORD_UPPER_LATIN, NS_STYLE_LIST_STYLE_UPPER_LATIN,
  KEYWORD_HEBREW, NS_STYLE_LIST_STYLE_HEBREW,
  KEYWORD_ARMENIAN, NS_STYLE_LIST_STYLE_ARMENIAN,
  KEYWORD_GEORGIAN, NS_STYLE_LIST_STYLE_GEORGIAN,
  KEYWORD_CJK_IDEOGRAPHIC, NS_STYLE_LIST_STYLE_CJK_IDEOGRAPHIC,
  KEYWORD_HIRAGANA, NS_STYLE_LIST_STYLE_HIRAGANA,
  KEYWORD_KATAKANA, NS_STYLE_LIST_STYLE_KATAKANA,
  KEYWORD_HIRAGANA_IROHA, NS_STYLE_LIST_STYLE_HIRAGANA_IROHA,
  KEYWORD_KATAKANA_IROHA, NS_STYLE_LIST_STYLE_KATAKANA_IROHA,
  -1,-1
};

const PRInt32 nsCSSProps::kOutlineColorKTable[] = {
  KEYWORD_INVERT, NS_STYLE_COLOR_INVERT,
  -1,-1
};

const PRInt32 nsCSSProps::kOverflowKTable[] = {
  KEYWORD_VISIBLE, NS_STYLE_OVERFLOW_VISIBLE,
  KEYWORD_HIDDEN, NS_STYLE_OVERFLOW_HIDDEN,
  KEYWORD_SCROLL, NS_STYLE_OVERFLOW_SCROLL,
  -1,-1
};

const PRInt32 nsCSSProps::kPageBreakKTable[] = {
  KEYWORD_ALWAYS, NS_STYLE_PAGE_BREAK_ALWAYS,
  KEYWORD_AVOID, NS_STYLE_PAGE_BREAK_AVOID,
  KEYWORD_LEFT, NS_STYLE_PAGE_BREAK_LEFT,
  KEYWORD_RIGHT, NS_STYLE_PAGE_BREAK_RIGHT,
  -1,-1
};

const PRInt32 nsCSSProps::kPageBreakInsideKTable[] = {
  KEYWORD_AVOID, NS_STYLE_PAGE_BREAK_AVOID,
  -1,-1
};

const PRInt32 nsCSSProps::kPageMarksKTable[] = {
  KEYWORD_CROP, NS_STYLE_PAGE_MARKS_CROP,
  KEYWORD_CROSS, NS_STYLE_PAGE_MARKS_REGISTER,
  -1,-1
};

const PRInt32 nsCSSProps::kPageSizeKTable[] = {
  KEYWORD_LANDSCAPE, NS_STYLE_PAGE_SIZE_LANDSCAPE,
  KEYWORD_PORTRAIT, NS_STYLE_PAGE_SIZE_PORTRAIT,
  -1,-1
};

const PRInt32 nsCSSProps::kPitchKTable[] = {
  KEYWORD_X_LOW, NS_STYLE_PITCH_X_LOW,
  KEYWORD_LOW, NS_STYLE_PITCH_LOW,
  KEYWORD_MEDIUM, NS_STYLE_PITCH_MEDIUM,
  KEYWORD_HIGH, NS_STYLE_PITCH_HIGH,
  KEYWORD_X_HIGH, NS_STYLE_PITCH_X_HIGH,
  -1,-1
};

const PRInt32 nsCSSProps::kPlayDuringKTable[] = {
  KEYWORD_MIX, NS_STYLE_PLAY_DURING_MIX,
  KEYWORD_REPEAT, NS_STYLE_PLAY_DURING_REPEAT,
  -1,-1
};

const PRInt32 nsCSSProps::kPositionKTable[] = {
  KEYWORD_STATIC, NS_STYLE_POSITION_NORMAL,
  KEYWORD_RELATIVE, NS_STYLE_POSITION_RELATIVE,
  KEYWORD_ABSOLUTE, NS_STYLE_POSITION_ABSOLUTE,
  KEYWORD_FIXED, NS_STYLE_POSITION_FIXED,
  -1,-1
};

const PRInt32 nsCSSProps::kSpeakKTable[] = {
  KEYWORD_SPELL_OUT, NS_STYLE_SPEAK_SPELL_OUT,
  -1,-1
};

const PRInt32 nsCSSProps::kSpeakHeaderKTable[] = {
  KEYWORD_ONCE, NS_STYLE_SPEAK_HEADER_ONCE,
  KEYWORD_ALWAYS, NS_STYLE_SPEAK_HEADER_ALWAYS,
  -1,-1
};

const PRInt32 nsCSSProps::kSpeakNumeralKTable[] = {
  KEYWORD_DIGITS, NS_STYLE_SPEAK_NUMERAL_DIGITS,
  KEYWORD_CONTINUOUS, NS_STYLE_SPEAK_NUMERAL_CONTINUOUS,
  -1,-1
};

const PRInt32 nsCSSProps::kSpeakPunctuationKTable[] = {
  KEYWORD_CODE, NS_STYLE_SPEAK_PUNCTUATION_CODE,
  -1,-1
};

const PRInt32 nsCSSProps::kSpeechRateKTable[] = {
  KEYWORD_X_SLOW, NS_STYLE_SPEECH_RATE_X_SLOW,
  KEYWORD_SLOW, NS_STYLE_SPEECH_RATE_SLOW,
  KEYWORD_MEDIUM, NS_STYLE_SPEECH_RATE_MEDIUM,
  KEYWORD_FAST, NS_STYLE_SPEECH_RATE_FAST,
  KEYWORD_X_FAST, NS_STYLE_SPEECH_RATE_X_FAST,
  KEYWORD_FASTER, NS_STYLE_SPEECH_RATE_FASTER,
  KEYWORD_SLOWER, NS_STYLE_SPEECH_RATE_SLOWER,
  -1,-1
};

const PRInt32 nsCSSProps::kTableLayoutKTable[] = {
  KEYWORD_FIXED, NS_STYLE_TABLE_LAYOUT_FIXED,
  -1,-1
};

const PRInt32 nsCSSProps::kTextAlignKTable[] = {
  KEYWORD_LEFT, NS_STYLE_TEXT_ALIGN_LEFT,
  KEYWORD_RIGHT, NS_STYLE_TEXT_ALIGN_RIGHT,
  KEYWORD_CENTER, NS_STYLE_TEXT_ALIGN_CENTER,
  KEYWORD_JUSTIFY, NS_STYLE_TEXT_ALIGN_JUSTIFY,
  -1,-1
};

const PRInt32 nsCSSProps::kTextDecorationKTable[] = {
  KEYWORD_UNDERLINE, NS_STYLE_TEXT_DECORATION_UNDERLINE,
  KEYWORD_OVERLINE, NS_STYLE_TEXT_DECORATION_OVERLINE,
  KEYWORD_LINE_THROUGH, NS_STYLE_TEXT_DECORATION_LINE_THROUGH,
  KEYWORD_BLINK, NS_STYLE_TEXT_DECORATION_BLINK,
  -1,-1
};

const PRInt32 nsCSSProps::kTextTransformKTable[] = {
  KEYWORD_CAPITALIZE, NS_STYLE_TEXT_TRANSFORM_CAPITALIZE,
  KEYWORD_LOWERCASE, NS_STYLE_TEXT_TRANSFORM_LOWERCASE,
  KEYWORD_UPPERCASE, NS_STYLE_TEXT_TRANSFORM_UPPERCASE,
  -1,-1
};

const PRInt32 nsCSSProps::kUnicodeBidiKTable[] = {
  KEYWORD_EMBED, NS_STYLE_UNICODE_BIDI_EMBED,
  KEYWORD_BIDI_OVERRIDE, NS_STYLE_UNICODE_BIDI_OVERRIDE,
  -1,-1
};

const PRInt32 nsCSSProps::kVerticalAlignKTable[] = {
  KEYWORD_BASELINE, NS_STYLE_VERTICAL_ALIGN_BASELINE,
  KEYWORD_SUB, NS_STYLE_VERTICAL_ALIGN_SUB,
  KEYWORD_SUPER, NS_STYLE_VERTICAL_ALIGN_SUPER,
  KEYWORD_TOP, NS_STYLE_VERTICAL_ALIGN_TOP,
  KEYWORD_TEXT_TOP, NS_STYLE_VERTICAL_ALIGN_TEXT_TOP,
  KEYWORD_MIDDLE, NS_STYLE_VERTICAL_ALIGN_MIDDLE,
  KEYWORD_BOTTOM, NS_STYLE_VERTICAL_ALIGN_BOTTOM,
  KEYWORD_TEXT_BOTTOM, NS_STYLE_VERTICAL_ALIGN_TEXT_BOTTOM,
  -1,-1
};

const PRInt32 nsCSSProps::kVisibilityKTable[] = {
  KEYWORD_VISIBLE, NS_STYLE_VISIBILITY_VISIBLE,
  KEYWORD_HIDDEN, NS_STYLE_VISIBILITY_HIDDEN,
  KEYWORD_COLLAPSE, NS_STYLE_VISIBILITY_COLLAPSE,
  -1,-1
};

const PRInt32 nsCSSProps::kVolumeKTable[] = {
  KEYWORD_SILENT, NS_STYLE_VOLUME_SILENT,
  KEYWORD_X_SOFT, NS_STYLE_VOLUME_X_SOFT,
  KEYWORD_SOFT, NS_STYLE_VOLUME_SOFT,
  KEYWORD_MEDIUM, NS_STYLE_VOLUME_MEDIUM,
  KEYWORD_LOUD, NS_STYLE_VOLUME_LOUD,
  KEYWORD_X_LOUD, NS_STYLE_VOLUME_X_LOUD,
  -1,-1
};

const PRInt32 nsCSSProps::kWhitespaceKTable[] = {
  KEYWORD_PRE, NS_STYLE_WHITESPACE_PRE,
  KEYWORD_NOWRAP, NS_STYLE_WHITESPACE_NOWRAP,
  -1,-1
};

static const char* SearchKeywordTable(PRInt32 aID, const PRInt32 aTable[])
{
  PRInt32 i = 1;
  if (aID >= 0)
  {
    for (;;) {
      if (aTable[i] < 0) {
        break;
      }
      if (aID == aTable[i]) {
        return nsCSSKeywords::kNameTable[aTable[i-1]].name;
      }
      i += 2;
    }
  }
  return nsnull;
}



const char* nsCSSProps::LookupProperty(PRInt32 aProp, PRInt32 aIndex)
{
static const PRInt32 kBackgroundXPositionKTable[] = {
  KEYWORD_LEFT,   0,
  KEYWORD_CENTER, 50,
  KEYWORD_RIGHT,  100,
  -1,-1
};

static const PRInt32 kBackgroundYPositionKTable[] = {
  KEYWORD_TOP,    0,
  KEYWORD_CENTER, 50,
  KEYWORD_BOTTOM, 100,
  -1,-1
};

  switch (aProp)  {
  
  case PROP_AZIMUTH:
    return SearchKeywordTable(aIndex, kAzimuthKTable);

  case PROP_BACKGROUND:
    break;
  
  case PROP_BACKGROUND_ATTACHMENT:
    return SearchKeywordTable(aIndex, kBackgroundAttachmentKTable);

  case PROP_BACKGROUND_COLOR:
    return SearchKeywordTable(aIndex, kBackgroundColorKTable);
  
  case PROP_BACKGROUND_FILTER:
    break;
    
  case PROP_BACKGROUND_IMAGE:
    break;

  case PROP_BACKGROUND_POSITION:
    break;

  case PROP_BACKGROUND_REPEAT:
    return SearchKeywordTable(aIndex, kBackgroundRepeatKTable);

  case PROP_BACKGROUND_X_POSITION:
    return SearchKeywordTable(aIndex, kBackgroundXPositionKTable);

  case PROP_BACKGROUND_Y_POSITION:
    return SearchKeywordTable(aIndex, kBackgroundYPositionKTable);

  case PROP_BORDER:
    break;

  case PROP_BORDER_COLLAPSE:
    return SearchKeywordTable(aIndex, kBorderCollapseKTable);

  case PROP_BORDER_COLOR:
  case PROP_BORDER_SPACING:
  case PROP_BORDER_STYLE:
  case PROP_BORDER_BOTTOM:
  case PROP_BORDER_LEFT:
  case PROP_BORDER_RIGHT:
  case PROP_BORDER_TOP:
    break;

  case PROP_BORDER_BOTTOM_COLOR:
  case PROP_BORDER_LEFT_COLOR:
  case PROP_BORDER_RIGHT_COLOR:
  case PROP_BORDER_TOP_COLOR:
    return SearchKeywordTable(aIndex, kBorderColorKTable);

  case PROP_BORDER_BOTTOM_STYLE:
  case PROP_BORDER_LEFT_STYLE:
  case PROP_BORDER_RIGHT_STYLE:
  case PROP_BORDER_TOP_STYLE:
    return SearchKeywordTable(aIndex, kBorderStyleKTable);

  case PROP_BORDER_BOTTOM_WIDTH:
  case PROP_BORDER_LEFT_WIDTH:
  case PROP_BORDER_RIGHT_WIDTH:
  case PROP_BORDER_TOP_WIDTH:
    return SearchKeywordTable(aIndex, kBorderWidthKTable);
  
  case PROP_BORDER_WIDTH:
  case PROP_BORDER_X_SPACING:
  case PROP_BORDER_Y_SPACING:
  case PROP_BOTTOM:
    break;

  case PROP_CAPTION_SIDE:
    return SearchKeywordTable(aIndex, kCaptionSideKTable);  

  case PROP_CLEAR:
    return SearchKeywordTable(aIndex, kClearKTable);  
    
  case PROP_CLIP:
  case PROP_CLIP_BOTTOM:
  case PROP_CLIP_LEFT:
  case PROP_CLIP_RIGHT:
  case PROP_CLIP_TOP:
  case PROP_COLOR:
    break;

  case PROP_CONTENT:
    return SearchKeywordTable(aIndex, kContentKTable);  

  case PROP_COUNTER_INCREMENT:
  case PROP_COUNTER_RESET:
  case PROP_CUE:
  case PROP_CUE_AFTER:
  case PROP_CUE_BEFORE:
    break;

  case PROP_CURSOR:
    return SearchKeywordTable(aIndex, kCursorKTable);  

  case PROP_DIRECTION:
    return SearchKeywordTable(aIndex, kDirectionKTable);  
  
  case PROP_DISPLAY:
    return SearchKeywordTable(aIndex, kDisplayKTable);  

  case PROP_ELEVATION:
    return SearchKeywordTable(aIndex, kElevationKTable);  

  case PROP_EMPTY_CELLS:
    return SearchKeywordTable(aIndex, kEmptyCellsKTable);  

  case PROP_FILTER:
    break;
  
  case PROP_FLOAT:
    return SearchKeywordTable(aIndex, kFloatKTable);  

  case PROP_FONT:
    break;

  case PROP_FONT_FAMILY:
    return SearchKeywordTable(aIndex, kFontKTable);  
    
  case PROP_FONT_SIZE:
    return SearchKeywordTable(aIndex, kFontSizeKTable);  

  case PROP_FONT_SIZE_ADJUST:
    break;

  case PROP_FONT_STRETCH:
    return SearchKeywordTable(aIndex, kFontStretchKTable);  

  case PROP_FONT_STYLE:
    return SearchKeywordTable(aIndex, kFontStyleKTable);  

  case PROP_FONT_VARIANT:
    return SearchKeywordTable(aIndex, kFontVariantKTable);  
  
  case PROP_FONT_WEIGHT:
    return SearchKeywordTable(aIndex, kFontWeightKTable);  

  case PROP_HEIGHT:
  case PROP_LEFT:
  case PROP_LETTER_SPACING:
  case PROP_LINE_HEIGHT:
  case PROP_LIST_STYLE:
  case PROP_LIST_STYLE_IMAGE:
    break;

  case PROP_LIST_STYLE_POSITION:
    return SearchKeywordTable(aIndex, kListStylePositionKTable);  
  
  case PROP_LIST_STYLE_TYPE:
    return SearchKeywordTable(aIndex, kListStyleKTable);

  case PROP_MARGIN:
  case PROP_MARGIN_BOTTOM:
  case PROP_MARGIN_LEFT:
  case PROP_MARGIN_RIGHT:
  case PROP_MARGIN_TOP:
  case PROP_MARKER_OFFSET:
    break;

  case PROP_MARKS:
    return SearchKeywordTable(aIndex, kPageMarksKTable);

  case PROP_MAX_HEIGHT:
  case PROP_MAX_WIDTH:
  case PROP_MIN_HEIGHT:
  case PROP_MIN_WIDTH:
  case PROP_OPACITY:
  case PROP_ORPHANS:
  case PROP_OUTLINE:
    break;

  case PROP_OUTLINE_COLOR:
    return SearchKeywordTable(aIndex, kOutlineColorKTable);

  case PROP_OUTLINE_STYLE:
    return SearchKeywordTable(aIndex, kBorderStyleKTable);

  case PROP_OUTLINE_WIDTH:
    return SearchKeywordTable(aIndex, kBorderWidthKTable);

  case PROP_OVERFLOW:
    return SearchKeywordTable(aIndex, kOverflowKTable);
  
  case PROP_PADDING:
  case PROP_PADDING_BOTTOM:
  case PROP_PADDING_LEFT:
  case PROP_PADDING_RIGHT:
  case PROP_PADDING_TOP:
  case PROP_PAGE:
    break;

  case PROP_PAGE_BREAK_BEFORE:
  case PROP_PAGE_BREAK_AFTER:
    return SearchKeywordTable(aIndex, kPageBreakKTable);

  case PROP_PAGE_BREAK_INSIDE:
    return SearchKeywordTable(aIndex, kPageBreakInsideKTable);
  
  case PROP_PAUSE:
  case PROP_PAUSE_AFTER:
  case PROP_PAUSE_BEFORE:
    break;

  case PROP_PITCH:
    return SearchKeywordTable(aIndex, kPitchKTable);

  case PROP_PITCH_RANGE:
  case PROP_PLAY_DURING:
    break;

  case PROP_PLAY_DURING_FLAGS:
    return SearchKeywordTable(aIndex, kPlayDuringKTable);

  case PROP_POSITION:
    return SearchKeywordTable(aIndex, kPositionKTable);
  
  case PROP_QUOTES:
  case PROP_QUOTES_CLOSE:
  case PROP_QUOTES_OPEN:
  case PROP_RICHNESS:
  case PROP_RIGHT:
  case PROP_SIZE:
    break;

  case PROP_SIZE_HEIGHT:
  case PROP_SIZE_WIDTH:
    return SearchKeywordTable(aIndex, kPageSizeKTable);

  case PROP_SPEAK:
    return SearchKeywordTable(aIndex, kSpeakKTable);

  case PROP_SPEAK_HEADER:
    return SearchKeywordTable(aIndex, kSpeakHeaderKTable);

  case PROP_SPEAK_NUMERAL:
    return SearchKeywordTable(aIndex, kSpeakNumeralKTable);

  case PROP_SPEAK_PUNCTUATION:
    return SearchKeywordTable(aIndex, kSpeakPunctuationKTable);

  case PROP_SPEECH_RATE:
    return SearchKeywordTable(aIndex, kSpeechRateKTable);

  case PROP_STRESS:
    break;

  case PROP_TABLE_LAYOUT:
    return SearchKeywordTable(aIndex, kTableLayoutKTable);

  case PROP_TEXT_ALIGN:
    return SearchKeywordTable(aIndex, kTextAlignKTable);
  
  case PROP_TEXT_DECORATION:
    return SearchKeywordTable(aIndex, kTextDecorationKTable);

  case PROP_TEXT_INDENT:
  case PROP_TEXT_SHADOW:
  case PROP_TEXT_SHADOW_COLOR:
  case PROP_TEXT_SHADOW_RADIUS:
  case PROP_TEXT_SHADOW_X:
  case PROP_TEXT_SHADOW_Y:
    break;
  
  case PROP_TEXT_TRANSFORM:
    return SearchKeywordTable(aIndex, kTextTransformKTable);
  
  case PROP_TOP:
    break;

  case PROP_UNICODE_BIDI:
    return SearchKeywordTable(aIndex, kUnicodeBidiKTable);

  case PROP_VERTICAL_ALIGN:
    return SearchKeywordTable(aIndex, kVerticalAlignKTable);
  
  case PROP_VISIBILITY:
    return SearchKeywordTable(aIndex, kVisibilityKTable);

  case PROP_VOICE_FAMILY:
    break;

  case PROP_VOLUME:
    return SearchKeywordTable(aIndex, kVolumeKTable);
    
  case PROP_WHITE_SPACE:
    return SearchKeywordTable(aIndex, kWhitespaceKTable);

  case PROP_WIDOWS:
  case PROP_WIDTH:
  case PROP_WORD_SPACING:
  case PROP_Z_INDEX:
    break;

  default:
    NS_ERROR("unsupported property");
    break;
  }
  return nsnull;
}


const PRInt32 nsCSSProps::kHintTable[PROP_MAX] = {
  NS_STYLE_HINT_AURAL,  // PROP_AZIMUTH
  NS_STYLE_HINT_VISUAL, // PROP_BACKGROUND
  NS_STYLE_HINT_VISUAL, // PROP_BACKGROUND_ATTACHMENT 
  NS_STYLE_HINT_VISUAL, // PROP_BACKGROUND_COLOR 
  NS_STYLE_HINT_VISUAL, // PROP_BACKGROUND_FILTER 
  NS_STYLE_HINT_VISUAL, // PROP_BACKGROUND_IMAGE 
  NS_STYLE_HINT_VISUAL, // PROP_BACKGROUND_POSITION 
  NS_STYLE_HINT_VISUAL, // PROP_BACKGROUND_REPEAT 
  NS_STYLE_HINT_VISUAL, // PROP_BACKGROUND_X_POSITION 
  NS_STYLE_HINT_VISUAL, // PROP_BACKGROUND_Y_POSITION 
  NS_STYLE_HINT_REFLOW, // PROP_BORDER 
  NS_STYLE_HINT_REFLOW, // PROP_BORDER_BOTTOM 
  NS_STYLE_HINT_VISUAL, // PROP_BORDER_BOTTOM_COLOR 
  NS_STYLE_HINT_VISUAL, // PROP_BORDER_BOTTOM_STYLE 
  NS_STYLE_HINT_REFLOW, // PROP_BORDER_BOTTOM_WIDTH 
  NS_STYLE_HINT_REFLOW, // PROP_BORDER_COLLAPSE
  NS_STYLE_HINT_VISUAL, // PROP_BORDER_COLOR 
  NS_STYLE_HINT_REFLOW, // PROP_BORDER_LEFT 
  NS_STYLE_HINT_VISUAL, // PROP_BORDER_LEFT_COLOR 
  NS_STYLE_HINT_VISUAL, // PROP_BORDER_LEFT_STYLE 
  NS_STYLE_HINT_REFLOW, // PROP_BORDER_LEFT_WIDTH 
  NS_STYLE_HINT_REFLOW, // PROP_BORDER_RIGHT 
  NS_STYLE_HINT_VISUAL, // PROP_BORDER_RIGHT_COLOR 
  NS_STYLE_HINT_VISUAL, // PROP_BORDER_RIGHT_STYLE 
  NS_STYLE_HINT_REFLOW, // PROP_BORDER_RIGHT_WIDTH
  NS_STYLE_HINT_REFLOW, // PROP_BORDER_SPACING
  NS_STYLE_HINT_VISUAL, // PROP_BORDER_STYLE 
  NS_STYLE_HINT_REFLOW, // PROP_BORDER_TOP 
  NS_STYLE_HINT_VISUAL, // PROP_BORDER_TOP_COLOR 
  NS_STYLE_HINT_VISUAL, // PROP_BORDER_TOP_STYLE 
  NS_STYLE_HINT_REFLOW, // PROP_BORDER_TOP_WIDTH 
  NS_STYLE_HINT_REFLOW, // PROP_BORDER_WIDTH 

  NS_STYLE_HINT_REFLOW, // PROP_BORDER_X_SPACING XXX
  NS_STYLE_HINT_REFLOW, // PROP_BORDER_Y_SPACING XXX

  NS_STYLE_HINT_REFLOW, // PROP_BOTTOM
  NS_STYLE_HINT_REFLOW, // PROP_CAPTION_SIDE
  NS_STYLE_HINT_REFLOW, // PROP_CLEAR 
  NS_STYLE_HINT_VISUAL, // PROP_CLIP 
  NS_STYLE_HINT_VISUAL, // PROP_CLIP_BOTTOM 
  NS_STYLE_HINT_VISUAL, // PROP_CLIP_LEFT 
  NS_STYLE_HINT_VISUAL, // PROP_CLIP_RIGHT 
  NS_STYLE_HINT_VISUAL, // PROP_CLIP_TOP 
  NS_STYLE_HINT_VISUAL, // PROP_COLOR 
  NS_STYLE_HINT_FRAMECHANGE, // PROP_CONTENT
  NS_STYLE_HINT_REFLOW, // PROP_COUNTER_INCREMENT
  NS_STYLE_HINT_REFLOW, // PROP_COUNTER_RESET
  NS_STYLE_HINT_AURAL,  // PROP_CUE
  NS_STYLE_HINT_AURAL,  // PROP_CUE_AFTER
  NS_STYLE_HINT_AURAL,  // PROP_CUE_BEFORE
  NS_STYLE_HINT_VISUAL, // PROP_CURSOR 
  NS_STYLE_HINT_REFLOW, // PROP_DIRECTION 
  NS_STYLE_HINT_FRAMECHANGE, // PROP_DISPLAY 
  NS_STYLE_HINT_AURAL,  // PROP_ELEVATION
  NS_STYLE_HINT_VISUAL, // PROP_EMPTY_CELLS
  NS_STYLE_HINT_VISUAL, // PROP_FILTER 
  NS_STYLE_HINT_FRAMECHANGE, // PROP_FLOAT 
  NS_STYLE_HINT_REFLOW, // PROP_FONT 
  NS_STYLE_HINT_REFLOW, // PROP_FONT_FAMILY 
  NS_STYLE_HINT_REFLOW, // PROP_FONT_SIZE 
  NS_STYLE_HINT_REFLOW, // PROP_FONT_SIZE_ADJUST
  NS_STYLE_HINT_REFLOW, // PROP_FONT_STRETCH
  NS_STYLE_HINT_REFLOW, // PROP_FONT_STYLE 
  NS_STYLE_HINT_REFLOW, // PROP_FONT_VARIANT 
  NS_STYLE_HINT_REFLOW, // PROP_FONT_WEIGHT 
  NS_STYLE_HINT_REFLOW, // PROP_HEIGHT 
  NS_STYLE_HINT_REFLOW, // PROP_LEFT 
  NS_STYLE_HINT_REFLOW, // PROP_LETTER_SPACING 
  NS_STYLE_HINT_REFLOW, // PROP_LINE_HEIGHT 
  NS_STYLE_HINT_REFLOW, // PROP_LIST_STYLE 
  NS_STYLE_HINT_REFLOW, // PROP_LIST_STYLE_IMAGE 
  NS_STYLE_HINT_REFLOW, // PROP_LIST_STYLE_POSITION 
  NS_STYLE_HINT_REFLOW, // PROP_LIST_STYLE_TYPE 
  NS_STYLE_HINT_REFLOW, // PROP_MARGIN 
  NS_STYLE_HINT_REFLOW, // PROP_MARGIN_BOTTOM 
  NS_STYLE_HINT_REFLOW, // PROP_MARGIN_LEFT 
  NS_STYLE_HINT_REFLOW, // PROP_MARGIN_RIGHT 
  NS_STYLE_HINT_REFLOW, // PROP_MARGIN_TOP 
  NS_STYLE_HINT_REFLOW, // PROP_MARKER_OFFSET
  NS_STYLE_HINT_VISUAL, // PROP_MARKS
  NS_STYLE_HINT_REFLOW, // PROP_MAX_HEIGHT
  NS_STYLE_HINT_REFLOW, // PROP_MAX_WIDTH
  NS_STYLE_HINT_REFLOW, // PROP_MIN_HEIGHT
  NS_STYLE_HINT_REFLOW, // PROP_MIN_WIDTH
  NS_STYLE_HINT_VISUAL, // PROP_OPACITY 
  NS_STYLE_HINT_REFLOW, // PROP_ORPHANS
  NS_STYLE_HINT_VISUAL, // PROP_OUTLINE
  NS_STYLE_HINT_VISUAL, // PROP_OUTLINE_COLOR
  NS_STYLE_HINT_VISUAL, // PROP_OUTLINE_STYLE
  NS_STYLE_HINT_VISUAL, // PROP_OUTLINE_WIDTH
  NS_STYLE_HINT_REFLOW, // PROP_OVERFLOW 
  NS_STYLE_HINT_REFLOW, // PROP_PADDING 
  NS_STYLE_HINT_REFLOW, // PROP_PADDING_BOTTOM 
  NS_STYLE_HINT_REFLOW, // PROP_PADDING_LEFT 
  NS_STYLE_HINT_REFLOW, // PROP_PADDING_RIGHT
  NS_STYLE_HINT_REFLOW, // PROP_PADDING_TOP 
  NS_STYLE_HINT_REFLOW, // PROP_PAGE
  NS_STYLE_HINT_REFLOW, // PROP_PAGE_BREAK_AFTER
  NS_STYLE_HINT_REFLOW, // PROP_PAGE_BREAK_BEFORE
  NS_STYLE_HINT_REFLOW, // PROP_PAGE_BREAK_INSIDE
  NS_STYLE_HINT_AURAL,  // PROP_PAUSE
  NS_STYLE_HINT_AURAL,  // PROP_PAUSE_AFTER
  NS_STYLE_HINT_AURAL,  // PROP_PAUSE_BEFORE
  NS_STYLE_HINT_AURAL,  // PROP_PITCH
  NS_STYLE_HINT_AURAL,  // PROP_PITCH_RANGE
  NS_STYLE_HINT_AURAL,  // PROP_PLAY_DURING
  NS_STYLE_HINT_AURAL,  // PROP_PLAY_DURING_FLAGS
  NS_STYLE_HINT_FRAMECHANGE, // PROP_POSITION 
  NS_STYLE_HINT_REFLOW, // PROP_QUOTES
  NS_STYLE_HINT_REFLOW, // PROP_QUOTES_CLOSE
  NS_STYLE_HINT_REFLOW, // PROP_QUOTES_OPEN
  NS_STYLE_HINT_AURAL,  // PROP_RICHNESS
  NS_STYLE_HINT_REFLOW, // PROP_RIGHT
  NS_STYLE_HINT_REFLOW, // PROP_SIZE
  NS_STYLE_HINT_REFLOW, // PROP_SIZE_HEIGHT
  NS_STYLE_HINT_REFLOW, // PROP_SIZE_WIDTH
  NS_STYLE_HINT_AURAL,  // PROP_SPEAK
  NS_STYLE_HINT_AURAL,  // PROP_SPEAK_HEADER
  NS_STYLE_HINT_AURAL,  // PROP_SPEAK_NUMERAL
  NS_STYLE_HINT_AURAL,  // PROP_SPEAK_PUNCTUATION
  NS_STYLE_HINT_AURAL,  // PROP_SPEECH_RATE
  NS_STYLE_HINT_AURAL,  // PROP_STRESS
  NS_STYLE_HINT_REFLOW, // PROP_TABLE_LAYOUT
  NS_STYLE_HINT_REFLOW, // PROP_TEXT_ALIGN 
  NS_STYLE_HINT_VISUAL, // PROP_TEXT_DECORATION 
  NS_STYLE_HINT_REFLOW, // PROP_TEXT_INDENT 
  NS_STYLE_HINT_VISUAL, // PROP_TEXT_SHADOW
  NS_STYLE_HINT_VISUAL, // PROP_TEXT_SHADOW_COLOR
  NS_STYLE_HINT_VISUAL, // PROP_TEXT_SHADOW_RADIUS
  NS_STYLE_HINT_VISUAL, // PROP_TEXT_SHADOW_X
  NS_STYLE_HINT_VISUAL, // PROP_TEXT_SHADOW_Y
  NS_STYLE_HINT_REFLOW, // PROP_TEXT_TRANSFORM 
  NS_STYLE_HINT_REFLOW, // PROP_TOP 
  NS_STYLE_HINT_REFLOW, // PROP_UNICODE_BIDI
  NS_STYLE_HINT_REFLOW, // PROP_VERTICAL_ALIGN 
  NS_STYLE_HINT_REFLOW, // PROP_VISIBILITY (for collapse)
  NS_STYLE_HINT_AURAL,  // PROP_VOICE_FAMILY
  NS_STYLE_HINT_AURAL,  // PROP_VOLUME
  NS_STYLE_HINT_REFLOW, // PROP_WHITE_SPACE 
  NS_STYLE_HINT_REFLOW, // PROP_WIDOWS
  NS_STYLE_HINT_REFLOW, // PROP_WIDTH 
  NS_STYLE_HINT_REFLOW, // PROP_WORD_SPACING 
  NS_STYLE_HINT_REFLOW  // PROP_Z_INDEX (XXX visual?)
};

