var __aspxColorEditIdPostfix = "_CE";
var __aspxColorIndicatorIdPostfix = "_CI";
var __aspxColorNameArray = {
 aliceblue: 'f0f8ff',
 antiquewhite: 'faebd7',
 aqua: '00ffff',
 aquamarine: '7fffd4',
 azure: 'f0ffff',
 beige: 'f5f5dc',
 bisque: 'ffe4c4',
 black: '000000',
 blanchedalmond: 'ffebcd',
 blue: '0000ff',
 blueviolet: '8a2be2',
 brown: 'a52a2a',
 burlywood: 'deb887',
 cadetblue: '5f9ea0',
 chartreuse: '7fff00',
 chocolate: 'd2691e',
 coral: 'ff7f50',
 cornflowerblue: '6495ed',
 cornsilk: 'fff8dc',
 crimson: 'dc143c',
 cyan: '00ffff',
 darkblue: '00008b',
 darkcyan: '008b8b',
 darkgoldenrod: 'b8860b',
 darkgray: 'a9a9a9',
 darkgreen: '006400',
 darkkhaki: 'bdb76b',
 darkmagenta: '8b008b',
 darkolivegreen: '556b2f',
 darkorange: 'ff8c00',
 darkorchid: '9932cc',
 darkred: '8b0000',
 darksalmon: 'e9967a',
 darkseagreen: '8fbc8f',
 darkslateblue: '483d8b',
 darkslategray: '2f4f4f',
 darkturquoise: '00ced1',
 darkviolet: '9400d3',
 deeppink: 'ff1493',
 deepskyblue: '00bfff',
 dimgray: '696969',
 dodgerblue: '1e90ff',
 feldspar: 'd19275',
 firebrick: 'b22222',
 floralwhite: 'fffaf0',
 forestgreen: '228b22',
 fuchsia: 'ff00ff',
 gainsboro: 'dcdcdc',
 ghostwhite: 'f8f8ff',
 gold: 'ffd700',
 goldenrod: 'daa520',
 gray: '808080',
 green: '008000',
 greenyellow: 'adff2f',
 honeydew: 'f0fff0',
 hotpink: 'ff69b4',
 indianred : 'cd5c5c',
 indigo : '4b0082',
 ivory: 'fffff0',
 khaki: 'f0e68c',
 lavender: 'e6e6fa',
 lavenderblush: 'fff0f5',
 lawngreen: '7cfc00',
 lemonchiffon: 'fffacd',
 lightblue: 'add8e6',
 lightcoral: 'f08080',
 lightcyan: 'e0ffff',
 lightgoldenrodyellow: 'fafad2',
 lightgrey: 'd3d3d3',
 lightgreen: '90ee90',
 lightpink: 'ffb6c1',
 lightsalmon: 'ffa07a',
 lightseagreen: '20b2aa',
 lightskyblue: '87cefa',
 lightslateblue: '8470ff',
 lightslategray: '778899',
 lightsteelblue: 'b0c4de',
 lightyellow: 'ffffe0',
 lime: '00ff00',
 limegreen: '32cd32',
 linen: 'faf0e6',
 magenta: 'ff00ff',
 maroon: '800000',
 mediumaquamarine: '66cdaa',
 mediumblue: '0000cd',
 mediumorchid: 'ba55d3',
 mediumpurple: '9370d8',
 mediumseagreen: '3cb371',
 mediumslateblue: '7b68ee',
 mediumspringgreen: '00fa9a',
 mediumturquoise: '48d1cc',
 mediumvioletred: 'c71585',
 midnightblue: '191970',
 mintcream: 'f5fffa',
 mistyrose: 'ffe4e1',
 moccasin: 'ffe4b5',
 navajowhite: 'ffdead',
 navy: '000080',
 oldlace: 'fdf5e6',
 olive: '808000',
 olivedrab: '6b8e23',
 orange: 'ffa500',
 orangered: 'ff4500',
 orchid: 'da70d6',
 palegoldenrod: 'eee8aa',
 palegreen: '98fb98',
 paleturquoise: 'afeeee',
 palevioletred: 'd87093',
 papayawhip: 'ffefd5',
 peachpuff: 'ffdab9',
 peru: 'cd853f',
 pink: 'ffc0cb',
 plum: 'dda0dd',
 powderblue: 'b0e0e6',
 purple: '800080',
 red: 'ff0000',
 rosybrown: 'bc8f8f',
 royalblue: '4169e1',
 saddlebrown: '8b4513',
 salmon: 'fa8072',
 sandybrown: 'f4a460',
 seagreen: '2e8b57',
 seashell: 'fff5ee',
 sienna: 'a0522d',
 silver: 'c0c0c0',
 skyblue: '87ceeb',
 slateblue: '6a5acd',
 slategray: '708090',
 snow: 'fffafa',
 springgreen: '00ff7f',
 steelblue: '4682b4',
 tan: 'd2b48c',
 teal: '008080',
 thistle: 'd8bfd8',
 tomato: 'ff6347',
 turquoise: '40e0d0',
 violet: 'ee82ee',
 violetred: 'd02090',
 wheat: 'f5deb3',
 white: 'ffffff',
 whitesmoke: 'f5f5f5',
 yellow: 'ffff00',
 yellowgreen: '9acd32'
};
ASPxClientColorEdit = _aspxCreateClass(ASPxClientDropDownEditBase, {
 constructor: function(name) {
  this.constructor.prototype.constructor.call(this, name);
  this.color = null;
  this.allowNull = true;
  this.colorOnError = "u";
  this.ColorChanged = new ASPxClientEvent();
 },
 Initialize: function() {
  var method = new Function("sender", "args", "aspxCEColorItemClick(\"" + this.name + "\", sender, args);");
  var colorTable = this.GetColorTableControl();
  if(_aspxIsExists(colorTable)){
   colorTable.ItemClick.AddHandler(method);
   if (this.color != null)
    colorTable.SetColor(this.color);
  }
  ASPxClientDropDownEditBase.prototype.Initialize.call(this);
 },
 InlineInitialize: function() {
  this.InitSpecialKeyboardHandling();
  ASPxClientDropDownEditBase.prototype.InlineInitialize.call(this);
 },
 GetColorTableControl: function() {
  var pc = this.GetPopupControl();
  return _aspxIsExists(pc) ? aspxGetControlCollection().Get(pc.name + __aspxColorEditIdPostfix) : null;
 },
 GetColorIndicatorCell: function() {
  return this.GetChild(__aspxColorIndicatorIdPostfix);
 },
 OnApplyChanges: function() {
  this.OnTextChanged();
 },
 OnTextChanged: function() {
  this.UpdateColor();
 },
 OnColorChanged: function(color) {
  this.SetTextInternal(color);
  this.UpdateColor();
 },
 OnColorItemClick: function() {
  this.HideDropDown();
 },
 OnEnter: function() {
  if (!this.isInitialized) return true;
  this.OnApplyChanges();
  return ASPxClientDropDownEditBase.prototype.OnEnter.call(this);
 },
 UpdateColor: function() {
  var inputElement = this.GetInputElement();
  if (_aspxIsExistsElement(inputElement)) {
   var valueString = inputElement.value;
   var newColor = valueString != "" ? ASPxClientColorEdit.ParseColor(valueString) : "";
   this.ChangeColor(newColor);
  }
 },
 ChangeColor: function(newColor) {
  if (newColor === false) {
   switch (this.colorOnError) {
    case "u":
     newColor = this.color;
     break;
    default:
     newColor = null;
     break;
   }
  }
  if (!this.allowNull && (newColor == null || newColor == ""))
   newColor = this.color;
  var isNew = this.color != newColor;
  this.SetColor(newColor);
  if (isNew)
   this.OnValueChanged();
 },
 ChangeIndicatorColor: function(newColor) {
  var colorIndicator = this.GetColorIndicatorCell();
  colorIndicator.style.backgroundColor = newColor != null ? newColor : "";
 },
 GetFormattedColorString: function(color) {
  if (color == null)
   return "";
  return color.toUpperCase();
 },
 RaiseValueChangedEvent: function() {
  if (!this.isInitialized) return false;
  var processOnServer = ASPxClientEdit.prototype.RaiseValueChangedEvent.call(this);
  processOnServer = this.RaiseColorChanged(processOnServer);
  return processOnServer;
 },
 RaiseColorChanged: function(processOnServer) {
  if (!this.ColorChanged.IsEmpty()) {
   var args = new ASPxClientProcessingModeEventArgs(processOnServer);
   this.ColorChanged.FireEvent(this, args);
   processOnServer = args.processOnServer;
  }
  return processOnServer;
 },
 RaiseNativeOnChange: function() {
  if(this.nativeOnChange)
   this.nativeOnChange();
 },
 GetValue: function() {
  return this.color;
 },
 SetValue: function(color) {
  this.color = color;
  ASPxClientDropDownEditBase.prototype.SetValue.call(this, this.GetFormattedColorString(this.color));
  var colorTable = this.GetColorTableControl();
  if(_aspxIsExists(colorTable))
   colorTable.SetColor(this.color);
  this.ChangeIndicatorColor(this.color);
 },
 GetText: function() {
  return this.GetFormattedColorString(this.color);
 },
 SetText: function(value) {
  ASPxClientDropDownEditBase.prototype.SetValue.call(this, value);
  this.UpdateColor();
 },
 GetColor: function() {
  if (this.color != null)
   return this.color.toUpperCase();
  return null;
 },
 SetColor: function(color) {
  this.SetValue(color);
 }
});
ASPxClientColorEdit.ParseColor = function(colorString) {
 var regExp = new RegExp("^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$");
 var color = __aspxColorNameArray[colorString.toLowerCase()];
 if (!color) {
  if (regExp.test(colorString))
   colorString = _aspxGetFullHexColor(colorString);
  color = _aspxColorToHexadecimal(colorString);
 }
 else 
  color = "#" + color;
 return regExp.test(color) ? color : false;
}
function _aspxGetFullHexColor(colorString) {
 if (colorString == "")
  return null;
 var color = colorString.replace("#", "");
 if (color.length == 3) {
  var newColor = ""; 
  for (var i = 0 ; i < 3; i++)
   newColor += color.charAt(i) + color.charAt(i);
   color = newColor;
 }
 return "#" + color;
}
function aspxCEColorChanged(name, color){
 var control = aspxGetControlCollection().Get(name);
 if(control != null) control.OnColorChanged(color);
}
function aspxCEColorItemClick(name, sender, args){
 var control = aspxGetControlCollection().Get(name);
 if(control != null) control.OnColorItemClick();
}

