//Colors of borders and backgrounds for diferent button states
var borderColorNormal = "#e4e2dc";
var borderColorOver = "#4B4B6F";
var borderColorSet = "#4B4B6F";
var borderColorSetOver = "#4B4B6F";

var bgroundColorOver = "#FFC678";
var bgroundColorSet = "#FFC678";
var bgroundColorSetOver = "#FFA658";

// BXButton - class
function BXButton()
{
	this._prevDisabledState = false;
}

BXButton.prototype = {
_Create: function ()
{
	if(this.OnCreate && this.OnCreate()==false)
		return false;

	var pElement, i, j, obj = this;

	if (this.id && this.iconkit)
	{
		this.pWnd = this.CreateElement("IMG", {src: one_gif_src, alt: (this.title ? this.title : this.name), title: (this.title?this.title:this.name), width: '20', height: '20', id: "bx_btn_"+obj.id});
		this.pWnd.className = 'bxedtbutton';
		this.pWnd.style.backgroundImage = "url(" + image_path + "/" + this.iconkit + ")";
	}
	else
	{
		this.pWnd = this.CreateElement("IMG", {'src' : this.src, 'alt' : (this.title ? this.title : this.name), 'title': (this.title ? this.title : this.name), 'width' : '20', 'height' : '20'});
		this.pWnd.className = 'bxedtbutton';
	}

	if (this.show_name)
	{
		var _icon = this.pWnd;
		this.pWnd = BX.create("TABLE", {props: {className: "bxedtbuttonex", title: this.title ? this.title: this.name, id: "bx_btnex_" + obj.id}});

		this.pWnd.checked = false;
		this.pWnd.disabled = false;

		var r = this.pWnd.insertRow(-1);
		r.insertCell(-1).appendChild(_icon);
		BX.adjust(r.insertCell(-1), {props: {className: 'tdbutex_txt'}, html: "<div>" + this.name + "</div>"});
	}
	else
	{
		this.pWnd.style.borderColor  = borderColorNormal;
		this.pWnd.style.borderWidth = "1px";
		this.pWnd.style.borderStyle = "solid";
	}

	if(!this.no_actions || this.no_actions != true) // for context menu
	{
		this.pWnd.onmouseover = function(e)
		{
			if(!this.disabled)
			{
				if (this.nodeName.toLowerCase() == 'table')
				{
					BX.addClass(this, 'bxedtbuttonex-over');
					if (BX.browser.IsOpera())
						this.border = "1px solid #4B4B6F"; // Special for Opera
				}
				else
				{
					this.style.borderColor = borderColorOver;
					this.style.border = "#4B4B6F 1px solid";
					this.style.backgroundColor = this.checked ? bgroundColorSetOver : bgroundColorOver;
				}
			}
		};

		this.pWnd.onmouseout = function(e)
		{
			if(!this.disabled)
			{
				if (this.nodeName.toLowerCase() == 'table')
				{
					BX.removeClass(this, 'bxedtbuttonex-over');
					if (BX.browser.IsOpera())
						this.border = "1px solid #E4E2DC"; // Special for Opera
				}
				else
				{
					this.style.borderColor = this.checked ? borderColorSet : borderColorNormal;
					this.style.backgroundColor = this.checked ? bgroundColorSet : 'transparent';
				}
			}
		};
		if (this.defaultState)
			this.Check(true);

		addCustomElementEvent(this.pWnd, 'click', this.OnClick, this);
		this.pMainObj.AddEventHandler("OnSelectionChange", this._OnSelectionChange, this);
		this.pMainObj.AddEventHandler("OnChangeView", this.OnChangeView, this);
	}
},

_OnChangeView: function (mode, split_mode)
{
	mode = (mode == 'split' ? split_mode : mode);
	if(mode == 'code' && !this.codeEditorMode || (mode=='html' && this.hideInHtmlEditorMode))
	{
		this._prevDisabledState = this.pWnd.disabled;
		this.Disable(true);
	}
	else if(mode == 'code' && this.codeEditorMode || (this.hideInHtmlEditorMode && mode != 'html'))
		this.Disable(false);
	else if(!this.codeEditorMode)
		this.Disable(this._prevDisabledState);
},

OnChangeView: function (mode, split_mode)
{
	this._OnChangeView(mode, split_mode);
},

Disable: function (bFlag)
{
	if(bFlag == this.pWnd.disabled)
		return false;
	this.pWnd.disabled = bFlag;
	if(bFlag)
	{
		BX.addClass(this.pWnd, 'bxedtbutton-disabled');
		if (this.id && this.iconkit)
		{
			//this.pWnd.className = 'bxedtbuttondisabled';
			//this.pWnd.style.backgroundImage = "url(" + image_path + "/" + this.iconkit + ")";
		}
		else
		{
			//this.pWnd.className = 'bxedtbuttondisabled';
		}
		//this.pWnd.style.filter = 'gray() alpha(opacity=30)';
	}
	else
	{
		BX.removeClass(this.pWnd, 'bxedtbutton-disabled');
		//this.pWnd.style.filter = '';
		//this.pWnd.className = 'bxedtbutton';
		if(this.pWnd.checked)
		{
			this.pWnd.style.borderColor = borderColorSet;
			this.pWnd.style.backgroundColor = bgroundColorSet;
		}
		else
		{
			this.pWnd.style.backgroundColor ="";
			this.pWnd.style.borderColor = borderColorNormal;
		}
	}
},

Check: function (bFlag)
{
	if(bFlag == this.pWnd.checked)
		return false;
	this.pWnd.checked = bFlag;
	if(!this.pWnd.disabled)
	{
		if(this.pWnd.checked)
		{
			this.pWnd.style.borderColor = borderColorSet;
			this.pWnd.style.backgroundColor = bgroundColorSet;
		}
		else
		{
			this.pWnd.style.backgroundColor ="";
			this.pWnd.style.borderColor = borderColorNormal;
		}
	}
},

OnMouseOver: function (e)
{
	if(!this.disabled)
	{
		this.style.borderColor = borderColorOver;
		this.style.border = "#4B4B6F 1px solid";
		if(this.checked)
			this.style.backgroundColor = bgroundColorSetOver;
		else
			this.style.backgroundColor = bgroundColorOver;
	}
},

OnMouseOut: function (e)
{
	if(!this.disabled)
	{
		if(this.checked)
		{
			this.style.borderColor = borderColorSet;
			this.style.backgroundColor = bgroundColorSet;
		}
		else
		{
			this.style.backgroundColor ="";
			this.style.borderColor = borderColorNormal;
		}
	}
},

OnClick: function (e)
{
	if(this.pWnd.disabled) return false;
	this.pMainObj.SetFocus();
	var res = false;
	if(this.handler)
		if(this.handler(this.pMainObj) !== false)
			res = true;

	if(!res)
		res = this.pMainObj.executeCommand(this.cmd);

	if(!this.bNotFocus)
		this.pMainObj.SetFocus();

	return res;
},

_OnSelectionChange: function()
{
	if(this.OnSelectionChange)
		this.OnSelectionChange();
	else if(this.cmd)
	{
		var res;

		if(this.cmd=='Unlink' && !BXFindParentByTagName(this.pMainObj.GetSelectionObject(), 'A'))
			res = 'DISABLED';
		else
			res = this.pMainObj.queryCommandState(this.cmd);

		if(res == 'DISABLED')
			this.Disable(true);
		else if(res == 'CHECKED')
		{
			this.Disable(false);
			this.Check(true);
		}
		else
		{
			this.Disable(false);
			this.Check(false);
		}
	}
}
};

function BXButtonSeparator(){}
BXButtonSeparator.prototype._Create = function ()
{
	this.pWnd = this.CreateElement("DIV", {className: 'bxseparator'});
	this.OnToolbarChangeDirection = function(bVertical)
	{
		if(bVertical)
			BX.addClass(this.pWnd, 'bxseparator-ver');
		else
			BX.removeClass(this.pWnd, 'bxseparator-ver');
	};
}

// BXEdList - class
function BXEdList()
{
	this.iSelectedIndex = -1;
	this.disabled = false;
	this.bCreated = false;
	this.bOpened = false;
	this.zIndex = 2090;

	this.CSS = "div.bx-list-cont {background-color: #fff; display: none; overflow: auto; overflow-x: hidden; overflow-y: auto; text-overflow: ellipsis;}" +
"div.bx-list-cont-vis-ef{overflow: hidden!important;}" +
"div.bx-list-cont table.bx-list-popup-tbl{width: 100%!important; border-collapse: collapse !important;}" +
"div.bx-list-cont table.bx-list-popup-tbl td{padding: 0!important;}" +
"div.bx-list-cont .bx-list-item{background: #fff; padding: 0px !important; border: 1px solid #fff; padding: 3px 4px !important; margin: 1px 0!important; cursor: default!important; font-family: Verdana,Tahoma,Courier New !important;}" +
"div.bx-list-cont .bx-list-item-over{border: 1px solid #4B4B6F; background-color: #FFC678 !important;}" +
"div.bx-list-cont .bx-list-item *{padding: 0!important; margin: 0!important; font-family: Verdana,Tahoma,Courier New !important;}" +
"div.bx-list-cont table.bx-list-item{border-collapse: collapse!important; width:100%!important; padding: 0!important;}" +
"div.bx-list-cont table.bx-list-item td{padding: 3px 4px !important;}" +
"div.bx-list-cont a.bx-list-conf-link{display: block!important; font-size: 11px!important; margin: 5px!important; color: #000!important; cursor: pointer!important;}" +
"div.bx-list-cont  td.bx-list-conf-cell{background: #FFF!important; border-top: 2px solid #808080!important;}" +
"div.bx-list-cont  td.bx-list-conf-cell a{color: #000!important; font-weight: normal!important; text-decoration: underline!important; font-size: 14px!important; cursor: pointer!important; display: block!important; margin: 5px 10px;}";
}

BXEdList.prototype = {
_Create: function ()
{
	if(this.OnCreate && this.OnCreate()==false)
		return false;

	if (this.maxHeight)
		this.maxHeight = parseInt(this.maxHeight);

	this.width = parseInt(this.width) || 160;
	this.height = parseInt(this.height) || 250;
	this.field_size = parseInt(this.field_size) || 75;

	if(this.OnSelectionChange)
		this.pMainObj.AddEventHandler("OnSelectionChange", this.OnSelectionChange, this);

	if(this.disableOnCodeView)
		this.pMainObj.AddEventHandler("OnChangeView", this.OnChangeView, this);

	this.pWnd = BX.create("DIV", {props: {className: 'bx-list'}});

	if (BX.browser.IsIE() && !BX.browser.IsDoctype())
		this.pWnd.style.height = "20px";

	var
		pTable = this.pWnd.appendChild(BX.create("TABLE")),
		r = pTable.insertRow(-1);

	if (this.field_size)
		this.pWnd.style.width = pTable.style.width = this.field_size + "px";

	this.pTitleCell = r.insertCell(-1);
	this.pTitle = this.pTitleCell.appendChild(BX.create("DIV", {props: {className: "bx-listtitle", unselectable: "on"}, text: this.title || "", style: {width: (this.field_size - 24) + "px"}}));

	BX.adjust(r.insertCell(-1), {props: {className: 'bx-listbutton', unselectable: "on"}, html: '&nbsp;'});
	this.pWnd.onmouseover = BX.proxy(this.OnMouseOver, this);
	this.pWnd.onmouseout = BX.proxy(this.OnMouseOut, this);
	this.pWnd.onclick = BX.proxy(this.OnClick, this);

	this.Create();

	if (this.values)
		this.SetValues(this.values);

	if(this._OnInit && typeof this._OnInit == 'function')
		this._OnInit();

	if(this.OnInit && this.OnInit() == false)
		return false;

	return true;
},

Create: function ()
{
	if (!BXPopupWindow.bCreated)
		BXPopupWindow.Create();

	this.pPopupNode = BXPopupWindow.pDocument.body.appendChild(BX.create("DIV", {props: {className: "bx-list-cont"}, style: {zIndex: this.zIndex}}, BXPopupWindow.pDocument));

	this.bCreated = true;
	this.pPopupNode.style.width = this.width + "px";
	this.pPopupNode.style.height = this.height + "px";

	this.pDropDownList = this.pPopupNode.appendChild(BX.create("TABLE", {props: {className: "bx-list-popup-tbl", unselectable: 'on'}}, BXPopupWindow.pDocument));
},

OnClick: function (e)
{
	if(this.disabled)
		return false;

	if (this.bOpened)
		return this.Close();

	this.Open();
	this.ShowPopup(true);
},

ShowPopup: function(bOpen)
{
	var pFrame = BXPopupWindow.pFrame;
	if (bOpen)
	{
		pFrame.height = "1px";
		pFrame.width = this.field_size + "px";
	}

	var
		_this = this,
		curHeight = bOpen ? 1 : parseInt(pFrame.height),
		curWidth = bOpen ? this.field_size : parseInt(pFrame.width),
		count = 0,
		timeInt = BX.browser.IsIE() ? 1 : 8,
		maxHeight = 0,
		maxWidth = this.width,
		dx = 20,
		dy = BX.browser.IsIE() ? 20 : 10;

	if (this.Interval)
		clearInterval(this.Interval);

	BX.addClass(_this.pPopupNode, "bx-list-cont-vis-ef");

	this.Interval = setInterval(function()
		{
			if (bOpen)
			{
				if (maxHeight == 0)
				{
					maxHeight = parseInt(_this.pDropDownList.offsetHeight);
					if (_this.maxHeight && maxHeight >= _this.maxHeight)
						maxHeight = _this.maxHeight;
				}

				curHeight += Math.round(dy * count);
				curWidth += Math.round(dx * count);

				if (curWidth > maxWidth)
					curWidth = maxWidth;

				if (curHeight > maxHeight)
				{
					BX.removeClass(_this.pPopupNode, "bx-list-cont-vis-ef");
					clearInterval(_this.Interval);

					if (BX.browser.IsIE())
						_this.pDropDownList.style.width = (parseInt(_this.pDropDownList.offsetWidth) - 2) + "px";

					curHeight = parseInt(_this.pDropDownList.offsetHeight);
					if (_this.maxHeight && curHeight >= _this.maxHeight)
						curHeight = _this.maxHeight;
				}
			}
			else
			{
				curHeight -= Math.round(dy * count);
				curWidth -= Math.round(dx * count);
				if (curWidth < _this.field_size)
					curWidth = _this.field_size;

				if (curHeight < 0)
				{
					BX.removeClass(_this.pPopupNode, "bx-list-cont-vis-ef");
					_this._Close();
					curHeight = 0;
					clearInterval(_this.Interval);
				}
			}

			pFrame.width = _this.pPopupNode.style.width = curWidth + 'px';
			pFrame.height = _this.pPopupNode.style.height = curHeight + 'px';
			count++;
		},
		timeInt
	);
},

Open: function ()
{
	var
		pOverlay = this.pMainObj.oTransOverlay.Show(),
		pos = BX.pos(this.pWnd),
		_this = this;

	BX.bind(document, "keyup", BX.proxy(this.OnKey, this));
	BX.bind(this.pMainObj.pEditorDocument, "keyup", BX.proxy(this.OnKey, this));

	oPrevRange = BXGetSelectionRange(this.pMainObj.pEditorDocument, this.pMainObj.pEditorWindow);
	pOverlay.onclick = function(){_this.Close()};

	if(this.bSetGlobalStyles)
		BXPopupWindow.SetStyles(this.CSS);
	else
		BXPopupWindow.SetStyles(this.CSS + "\n\n" + this.pMainObj.oStyles.sStyles, false);

	BXPopupWindow.Show({
		top: pos.top + (BX.browser.IsIE() && !BX.browser.IsDoctype() ? 17 : 19),
		left: pos.left + (BX.browser.IsIE() && !BX.browser.IsDoctype() ? -2 : 0),
		node: this.pPopupNode,
		width: this.width,
		height: this.height
	});
	this.bOpened = true;
},

Close: function ()
{
	this.ShowPopup(false);
},

_Close: function ()
{
	BXPopupWindow.Hide();
	this.pPopupNode.style.display = 'none';
	this.pMainObj.oTransOverlay.Hide();

	BX.unbind(document, "keyup", BX.proxy(this.OnKey, this));
	BX.unbind(this.pMainObj.pEditorDocument, "keyup", BX.proxy(this.OnKey, this));
	this.bOpened = false;
},

OnKey: function (e)
{
	if(!e)
		e = window.event
	if(e.keyCode == 27 && this.bOpened)
		this.Close();
},

SetValues: function (values)
{
	if (typeof values == 'object')
		this.values = values;

	BX.cleanNode(this.pDropDownList);

	var c, item, _this = this, i, l = this.values.length;
	for(i = 0; i < l; i++)
	{
		this.values[i].index = i;
		c = this.pDropDownList.insertRow(-1).insertCell(-1);
		item = c.appendChild(BX.create("DIV", {props: {className: "bx-list-item", title: this.values[i].name}}, BXPopupWindow.pDocument));
		item.innerHTML = this.OnDrawItem ? this.OnDrawItem(this.values[i]) : this.values[i].name;
		item.value = this.values[i];
		if(this.bSetFontSize)
			item.style.fontSize = "12px";

		item.onmouseover = function (e){BX.addClass(this, "bx-list-item-over");};
		item.onmouseout = function (e){BX.removeClass(this, "bx-list-item-over");};
		item.onclick = function ()
		{
			_this.Close();
			_this._OnChange(this.value);
			_this.FireChangeEvent();
		};
	}

	if (this.bAdminConfigure && false)
	{
		c = this.pDropDownList.insertRow(-1).insertCell(-1);
		c.className = "bx-list-conf-cell";
		var pConf = c.appendChild(BX.create("A", {props: {className: "bx-list-conf-link", title: BX_MESS.ListConfigTitle, href: "javascript:void(0);"}, text: BX_MESS.ListConfig}, BXPopupWindow.pDocument));
		pConf.onclick = function()
		{
			_this.Close();
		}
	}
},

_OnChangeView: function (mode, split_mode)
{
	mode = (mode=='split'?split_mode:mode);
	this.Disable(mode=='code');
},

OnChangeView: function (mode, split_mode)
{
	this._OnChangeView(mode, split_mode);
},

Disable: function(flag)
{
	if(this.disabled == flag)
		return false;
	this.disabled = flag;

	if(flag)
		BX.addClass(this.pWnd, "bx-list-disabled");
	else
		BX.removeClass(this.pWnd, "bx-list-disabled");
},

FireChangeEvent: function()
{
	if(this.OnChange)
		this.OnChange(this.arSelected);
},

_OnChange: function (selected)
{
	this.Select(selected["index"]);
},

SetValue: function(val)
{
	if(!this.pTitle)
		return;

	this.pTitle.innerHTML = val || this.title || '';
},

OnMouseOver: function(e)
{
	if(!this.disabled)
		BX.addClass(this.pWnd, "bx-list-over");
},

OnMouseOut: function(e)
{
	if(!this.disabled)
		BX.removeClass(this.pWnd, "bx-list-over");
},

Select: function(v)
{
	if(this.iSelectedIndex == v || v >= this.values.length)
		return;

	var sel = this.values[v];
	this.iSelectedIndex = v;
	this.arSelected = sel;
	this.SetValue(sel["name"]);
},

SelectByVal: function(val, bAddIfNotList)
{
	if(val)
	{
		var i, l = this.values.length;
		for(i = 0; i < l; i++)
		{
			if(this.values[i].value == val)
				return this.Select(i);
		}

		if (bAddIfNotList)
		{
			var ind = this.values.length;
			this.values.push({name: val, value: val});
			this.SetValues(this.values);
			if (this.CreateListRow)
				this.additionalClass = val;
			return this.Select(ind);
		}
	}
	else
	{
		this.SetValue(this.title || '');
		this.iSelectedIndex = -1;
	}
},

OnToolbarChangeDirection: function (bVertical)
{
	if(bVertical)
	{
		this.pWnd.style.width = "18px";
		this.pTitleCell.style.visibility = "hidden";
	}
	else
	{
		this.pWnd.style.width = this.field_size;
		this.pTitleCell.style.visibility = "inherit";
	}
	//this.pWnd.className = 'bx-list';
}
};

// BXStyleList - class
function BXStyleList(){}
BXStyleList.prototype = new BXEdList;

BXStyleList.prototype._OnInit = function()
{
	this.pMainObj.AddEventHandler("OnTemplateChanged", this.FillList, this);
	this.FillList();
}

BXStyleList.prototype.FillList = function()
{
	var i, j, arStyles, l;

	BX.cleanNode(this.pDropDownList);

	if(!this.filter)
		this._SetFilter();

	this.values = [];
	if(!this.tag_name)
		this.tag_name = '';

	//"clear style" item
	this.CreateListRow('', BX_MESS.DeleteStyleOpt, {value: '', name: BX_MESS.DeleteStyleOptTitle});

	var style_title, counter = 0, arStyleTitle;
	// other styles
	for(i = 0, l = this.filter.length; i < l;  i++)
	{
		arStyles = this.pMainObj.oStyles.GetStyles(this.filter[i]);
		for(j = 0; j < arStyles.length; j++)
		{
			if(arStyles[j].className.length <= 0)
				continue;
			arStyleTitle = this.pMainObj.arTemplateParams["STYLES_TITLE"];

			if(this.pMainObj.arTemplateParams && arStyleTitle && arStyleTitle[arStyles[j].className])
				style_title = arStyleTitle[arStyles[j].className];
			else if(!this.pMainObj.arConfig["bUseOnlyDefinedStyles"])
			 	style_title = arStyles[j].className;
			else
			 	continue;

			this.CreateListRow(arStyles[j].className, style_title, {value: arStyles[j].className, name: style_title});
			counter++;
		}
	}

	if (this.additionalClass)
		this.CreateListRow(this.additionalClass, this.additionalClass, {value: this.additionalClass, name: this.additionalClass});

	if (this.deleteIfNoItems)
		this.pWnd.style.display = (counter == 0) ? "none" : "block";
};

BXStyleList.prototype.CreateListRow = function(className, name, value)
{
	value.index = this.values.length;

	var
		_this = this,
		c = this.pDropDownList.insertRow(-1).insertCell(-1),
		itemTable = c.appendChild(BX.create("TABLE", {props: {className: "bx-list-item", title: name, unselectable: "on"}}, BXPopupWindow.pDocument)),
		itemRow = itemTable.insertRow(-1),
		itemCell = itemRow.insertCell(-1);

	itemCell.innerHTML = name;
	if(this.bSetFontSize)
		itemCell.style.fontSize = "12px";

	if (this.pMainObj.bRenderStyleList)
	{
		switch(this.tag_name.toUpperCase())
		{
			case "TD":
				itemCell.className = className;
				break;
			case "TABLE":
				itemTable.className = className;
				break;
			case "TR":
				itemRow.className = className;
				break;
			default:
				itemCell.innerHTML = '<span class="' + className + '">'+name+'</span>';
		}
	}

	itemTable.value = value;
	itemTable.onmouseover = function (e){BX.addClass(this, "bx-list-item-over");};
	itemTable.onmouseout = function (e){BX.removeClass(this, "bx-list-item-over");};
	itemTable.onclick = function (e)
	{
		_this.Close();
		_this._OnChange(this.value);
		_this.FireChangeEvent();

		if(this.value.value=='')
			_this.SelectByVal();
	};

	this.values.push(value);
};

BXStyleList.prototype.OnChange = function(arSelected)
{
	this.pMainObj.WrapSelectionWith("SPAN", {props: {className: arSelected["value"]}});
};

BXStyleList.prototype._SetFilter = function()
{
	this.filter = ["DEFAULT"];
};

BXStyleList.prototype.OptimizeSelection = function(params)
{
	var
		arNodes = params.nodes,
		node, i, l = arNodes.length;


	for(i = 0; i < l; i++)
	{
		node = arNodes[i];

		// Check parrent nodes
		if (node.parentNode)
		{
		}

		// Check child nodes
		this.CleanChildsClass(node);
	}
},

BXStyleList.prototype.RemoveClass = function(pElement, params)
{
	if(!pElement)
		return;

	var bFind = false, tag;

	while(!bFind)
	{
		if (!pElement)
			break;

		if (pElement.nodeType == 1)
		{
			tag = pElement.nodeName.toLowerCase();
			if (tag == 'span' || tag == 'font' && pElement.className)
			{
				bFind = true;
				break;
			}
		}
		pElement = pElement.parentNode;
	}

	if (bFind)
	{
		pElement.className = '';
		pElement.removeAttribute('class');
		if (this.CheckNodeAttributes(pElement))
			BXCutNode(pElement);

		// Clean childs
		this.CleanChildsClass(pElement);
	}
},

BXStyleList.prototype.CleanChildsClass = function(node)
{
	CheckChilds(node, {func: function(node)
	{
		if (node.nodeType != 1)
			return;
		var tag = node.nodeName.toLowerCase();
		if (tag == 'span' || tag == 'font' && node.className != "")
		{
			node.className = '';
			node.removeAttribute('class');
			if (this.CheckNodeAttributes(node))
				BXCutNode(node);
		}
	}
	, obj: this});
},

BXStyleList.prototype.CheckNodeAttributes = function(node)
{
	var bClean = node.attributes.length <= 0;
	if (!bClean)
	{
		var
			bAtrExists = false, val, name, j,
			n = node.attributes.length,
			checkableAttributes = {
				title: true,
				id: true,
				name: true,
				style: true
			};

		for (j = 0; j < n; j++)
		{
			val = BX.util.trim(node.attributes[j].value);
			name = node.attributes[j].name.toString().toLowerCase();
			if (checkableAttributes[name] && val != "" && val != "null")
			{
				bAtrExists = true;
				break;
			}
		}

		if (!bAtrExists)
			bClean = true;
	}
	return bClean;
}


function BXTransOverlay(arParams)
{
	this.id = 'lhe_trans_overlay';
	this.zIndex = arParams.zIndex || 100;
}

BXTransOverlay.prototype = {
Create: function ()
{
	this.bCreated = true;
	this.bShowed = false;
	var windowSize = BX.GetWindowScrollSize();
	this.pWnd = document.body.appendChild(BX.create("DIV", {props: {id: this.id, className: "bxed-trans-overlay"}, style: {zIndex: this.zIndex, width: windowSize.scrollWidth + "px", height: windowSize.scrollHeight + "px"}}));

	this.pWnd.ondrag = BX.False;
	this.pWnd.onselectstart = BX.False;
},

Show: function(arParams)
{
	if (!this.bCreated)
		this.Create();
	this.bShowed = true;

	var windowSize = BX.GetWindowScrollSize();

	this.pWnd.style.display = 'block';
	this.pWnd.style.width = windowSize.scrollWidth + "px";
	this.pWnd.style.height = windowSize.scrollHeight + "px";

	if (!arParams)
		arParams = {};

	if (arParams.zIndex)
		this.pWnd.style.zIndex = arParams.zIndex;

	BX.bind(window, "resize", BX.proxy(this.Resize, this));
	return this.pWnd;
},

Hide: function ()
{
	if (!this.bShowed)
		return;
	this.bShowed = false;
	this.pWnd.style.display = 'none';
	BX.unbind(window, "resize", BX.proxy(this.Resize, this));
	this.pWnd.onclick = null;
},

Resize: function ()
{
	if (this.bCreated)
		this.pWnd.style.width = BX.GetWindowScrollSize().scrollWidth + "px";
}
};

function BXEdColorPicker()
{
	this.disabled = false;
	this.bCreated = false;
	this.bOpened = false;
	this.zIndex = 2090;

	this.arColors = [
		'#FF0000', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#FF00FF', '#FFFFFF', '#EBEBEB', '#E1E1E1', '#D7D7D7', '#CCCCCC', '#C2C2C2', '#B7B7B7', '#ACACAC', '#A0A0A0', '#959595',
		'#EE1D24', '#FFF100', '#00A650', '#00AEEF', '#2F3192', '#ED008C', '#898989', '#7D7D7D', '#707070', '#626262', '#555', '#464646', '#363636', '#262626', '#111', '#000000',
		'#F7977A', '#FBAD82', '#FDC68C', '#FFF799', '#C6DF9C', '#A4D49D', '#81CA9D', '#7BCDC9', '#6CCFF7', '#7CA6D8', '#8293CA', '#8881BE', '#A286BD', '#BC8CBF', '#F49BC1', '#F5999D',
		'#F16C4D', '#F68E54', '#FBAF5A', '#FFF467', '#ACD372', '#7DC473', '#39B778', '#16BCB4', '#00BFF3', '#438CCB', '#5573B7', '#5E5CA7', '#855FA8', '#A763A9', '#EF6EA8', '#F16D7E',
		'#EE1D24', '#F16522', '#F7941D', '#FFF100', '#8FC63D', '#37B44A', '#00A650', '#00A99E', '#00AEEF', '#0072BC', '#0054A5', '#2F3192', '#652C91', '#91278F', '#ED008C', '#EE105A',
		'#9D0A0F', '#A1410D', '#A36209', '#ABA000', '#588528', '#197B30', '#007236', '#00736A', '#0076A4', '#004A80', '#003370', '#1D1363', '#450E61', '#62055F', '#9E005C', '#9D0039',
		'#790000', '#7B3000', '#7C4900', '#827A00', '#3E6617', '#045F20', '#005824', '#005951', '#005B7E', '#003562', '#002056', '#0C004B', '#30004A', '#4B0048', '#7A0045', '#7A0026'
];
}

BXEdColorPicker.prototype = {
	_Create: function ()
	{
		this.pWnd = BX.create("DIV", {props: {className: 'bx-ed-colorpicker'}});
		var _this = this;

		if(this.OnSelectionChange)
			this.pMainObj.AddEventHandler("OnSelectionChange", this.OnSelectionChange, this);

		if(this.disableOnCodeView)
			this.pMainObj.AddEventHandler("OnChangeView", this.OnChangeView, this);

		if(this.with_input)
		{
			this.pInput = this.pWnd.appendChild(BX.create("INPUT", {props: {size: 7}}));
			if (_this.OnChange)
				this.pInput.onchange = function(){_this.OnChange(this.value);};
		}

		if (!this.id)
			this.id = 'BackColor';

		this.pIcon = this.pWnd.appendChild(BX.create("IMG", {props: {id: 'bx_btn_' + this.id, title: this.title, src: one_gif_src, className: "bxedtbutton"}, style:  {border: '1px solid '+borderColorNormal, backgroundImage: "url(" + image_path + "/_global_iconkit.gif)"}}));

		this.pIcon.onclick = function(e){_this.OnClick(e, this)};
		this.pIcon.onmouseover = function (e){if(!_this.disabled){BX.addClass(this, "bxedtbuttonover");}};
		this.pIcon.onmouseout = function (e){if(!_this.disabled){BX.removeClass(this, "bxedtbuttonover");}};
	},

	Create: function ()
	{
		var _this = this;
		this.pColCont = document.body.appendChild(BX.create("DIV", {props: {className: "bx-colpick-cont"}, style: {zIndex: this.zIndex}}));

		var
			row, cell, colorCell,
			tbl = BX.create("TABLE", {props: {className: 'bx-colpic-tbl'}}),
			i, l = this.arColors.length;

		row = tbl.insertRow(-1);
		cell = row.insertCell(-1);
		cell.colSpan = 8;

		var defBut = cell.appendChild(BX.create("SPAN", {props: {className: 'bx-colpic-def-but'}, text: BX_MESS.CPickDef}));
		colorCell = BX.adjust(row.insertCell(-1), {props: {colSpan: 8, className: 'bx-color-inp-cell'}, style: {backgroundColor: this.arColors[38]}});

		defBut.onmouseover = function()
		{
			this.className = 'bx-colpic-def-but bx-colpic-def-but-over';
			colorCell.style.backgroundColor = 'transparent';
		};
		defBut.onmouseout = function(){this.className = 'bx-colpic-def-but';};
		defBut.onclick = function(e){_this.Select(false);}

		for(i = 0; i < l; i++)
		{
			if (Math.round(i / 16) == i / 16) // new row
				row = tbl.insertRow(-1);

			cell = BX.adjust(row.insertCell(-1), {props: {className: 'bx-col-cell', id: 'bx_color_' + i}, html: '<img src="' + one_gif_src + '" />', style: {backgroundColor: this.arColors[i]}});

			cell.onmouseover = function (e)
			{
				this.className = 'bx-col-cell bx-col-cell-over';
				colorCell.style.backgroundColor = _this.arColors[this.id.substring('bx_color_'.length)];
			};
			cell.onmouseout = function (e){this.className = 'bx-col-cell';};
			cell.onclick = function(e){_this.Select(_this.arColors[this.id.substring('bx_color_'.length)]);};
		}

		this.pColCont.appendChild(tbl);
		this.bCreated = true;
	},

	OnClick: function (e, pEl)
	{
		if(this.disabled)
			return false;

		if (!this.bCreated)
			this.Create();

		if (this.bOpened)
			return this.Close();

		this.Open();
	},

	Open: function ()
	{
		var
			pOverlay = this.pMainObj.oTransOverlay.Show(),
			pos = BX.align(BX.pos(this.pIcon), 325, 155),
			_this = this;

		BX.bind(document, "keyup", BX.proxy(this.OnKey, this));
		BX.bind(this.pMainObj.pEditorDocument, "keyup", BX.proxy(this.OnKey, this));

		oPrevRange = BXGetSelectionRange(this.pMainObj.pEditorDocument, this.pMainObj.pEditorWindow);
		pOverlay.onclick = function(){_this.Close()};

		this.pColCont.style.display = 'block';
		this.pColCont.style.top = pos.top + 'px';
		this.pColCont.style.left = pos.left + 'px';
		this.bOpened = true;
	},

	Close: function ()
	{
		this.pColCont.style.display = 'none';
		this.pMainObj.oTransOverlay.Hide();

		BX.unbind(document, "keyup", BX.proxy(this.OnKey, this));
		BX.unbind(this.pMainObj.pEditorDocument, "keyup", BX.proxy(this.OnKey, this));

		this.bOpened = false;
	},

	OnMouseOver: function (e)
	{
		if(!this.disabled)
		{
			this.pIcon.style.borderColor = borderColorOver;
			this.pIcon.style.border = "#4B4B6F 1px solid";
			this.pIcon.style.backgroundColor = bgroundColorOver;
		}
	},

	OnMouseOut: function (e)
	{
		if(!this.disabled)
		{
			this.pIcon.style.backgroundColor = "";
			this.pIcon.style.borderColor = borderColorNormal;
		}
	},

	OnKey: function(e)
	{
		if(!e)
			e = window.event
		if(e.keyCode == 27)
			this.Close();
	},

	Select: function (color)
	{
		if (!color)
			color = '';

		if(this.pInput)
			this.pInput.value = color;

		BXSelectRange(oPrevRange, this.pMainObj.pEditorDocument, this.pMainObj.pEditorWindow);
		if(this.OnChange)
			this.OnChange(color);

		this.Close();
	},

	OnChangeView: function (mode, split_mode)
	{
		mode = (mode == 'split' ? split_mode : mode);
		this.Disable(mode == 'code');
	},

	Disable: function(bFlag)
	{
		if(bFlag == this.disabled)
			return false;

		this.disabled = this.pIcon.disabled = bFlag;
		if(bFlag)
			BX.addClass(this.pIcon, 'bxedtbutton-disabled');
		else
			BX.removeClass(this.pIcon, 'bxedtbutton-disabled');
	},

	SetValue: function(val)
	{
		if(this.pInput)
			this.pInput.value = val;
	}
};

// BXTAlignPicker - class
function BXTAlignPicker()
{
	this.disabled = false;
	this.bCreated = false;
	this.bOpened = false;
	this.zIndex = 2090;

	this.arIcon = ["tl", "tc", "tr", "cl", "cc", "cr", "bl", "bc", "br"];
	this.arIconH = ["left", "center", "right"];
	this.arIconV = ["top", "middle", "bottom"];
	this.arIconName = [
		BX_MESS.TAlign1, BX_MESS.TAlign2, BX_MESS.TAlign3,
		BX_MESS.TAlign4, BX_MESS.TAlign5, BX_MESS.TAlign6,
		BX_MESS.TAlign7, BX_MESS.TAlign8, BX_MESS.TAlign9];
}

BXTAlignPicker.prototype = {
_Create: function ()
{
	this.pWnd = BX.create("TABLE", {props: {className: 'bx-ed-alignpicker'}});
	var
		pElement, i, j,
		_this = this,
		row = this.pWnd.insertRow(-1),
		cell = row.insertCell(-1);

	this.pIcon = cell.appendChild(BX.create("IMG", {props: {id: 'bx_btn_align_tl', src: one_gif_src, className: "bxedtbutton"}, style:  {border: '1px solid '+borderColorNormal, backgroundImage: "url(" + image_path + "/_global_iconkit.gif)"}}));

	if (this.title)
		this.pIcon.title = this.title;

	this.pIcon.onclick = function(e){_this.OnClick(e, this)};
	this.pIcon.onmouseover = function (e){BX.addClass(this, "bxedtbuttonover");};
	this.pIcon.onmouseout = function (e){BX.removeClass(this, "bxedtbuttonover");};
},

Create: function ()
{
	this.pPopupNode = document.body.appendChild(BX.create("DIV", {props: {className: "bx-alpick-cont"}, style: {zIndex: this.zIndex}}));

	var
		_this = this,
		row, cell, j, but,
		tbl = this.pPopupNode.appendChild(BX.create("TABLE", {props: {className: 'bx-alpic-tbl'}})),
		i;

	row = tbl.insertRow(-1);
	cell = BX.adjust(row.insertCell(-1), {props: {className: 'bx-alpic-default', colSpan: 3}, html: '<nobr>' + BX_MESS.TAlignDef + '</nobr>'});

	cell.onmouseover = function (e) {BX.addClass(this, "bxedtbuttonover");};
	cell.onmouseout = function (e){BX.removeClass(this, "bxedtbuttonover");};
	cell.onclick = function (e){_this._OnChange('', ''); _this.Close();};

	for(i = 0; i < 3; i++)
	{
		row = tbl.insertRow(-1);

		for(j = 0; j < 3; j++)
		{
			cell = row.insertCell(-1);
			cell.className = 'bx-alpic-but';

			if(this.type != 'image' || i == 1 || j == 1)
			{
				but = cell.appendChild(BXPopupWindow.CreateElement("DIV", {id: 'bx_btn_align_'+this.arIcon[i * 3 + j], className: 'bxedtbutton', title: this.arIconName[i * 3 + j]}, {border: '1px solid '+borderColorNormal, backgroundImage: "url(" + global_iconkit_path + ")"}));

				if(this.type == 'image')
				{
					but.val = j==1 ? this.arIconV[i] : this.arIconH[j];
					but.onclick = function (e){_this._OnChangeI(this.val); _this.Close();};
				}
				else
				{
					but.valH = this.arIconH[j];
					but.valV = this.arIconV[i];
					but.onclick = function (e){_this._OnChange(this.valH, this.valV); _this.Close();};
				}

				but.onmouseover = function (e){BX.addClass(this, "bxedtbuttonover");};
				but.onmouseout = function (e){BX.removeClass(this, "bxedtbuttonover");};
			}
		}
	}

	this.bCreated = true;
},

Open: function ()
{
	var
		pOverlay = this.pMainObj.oTransOverlay.Show(),
		pos = BX.align(BX.pos(this.pIcon), 91, 102),
		_this = this;

	BX.bind(document, "keyup", BX.proxy(this.OnKey, this));
	BX.bind(this.pMainObj.pEditorDocument, "keyup", BX.proxy(this.OnKey, this));
	oPrevRange = BXGetSelectionRange(this.pMainObj.pEditorDocument, this.pMainObj.pEditorWindow);
	pOverlay.onclick = function(){_this.Close()};

	this.pPopupNode.style.display = 'block';
	this.pPopupNode.style.top = pos.top + 'px';
	this.pPopupNode.style.left = pos.left + 'px';
	this.bOpened = true;
},

Close: function ()
{
	this.pPopupNode.style.display = 'none';
	this.pMainObj.oTransOverlay.Hide();
	BX.unbind(document, "keyup", BX.proxy(this.OnKey, this));
	BX.unbind(this.pMainObj.pEditorDocument, "keyup", BX.proxy(this.OnKey, this));
	this.bOpened = false;
},

_OnChange: function (valH, valV)
{
	if(this.OnChange)
		this.OnChange(valH, valV);

	this.SetValue(valH, valV);
},

_OnChangeI: function (val)
{
	if(this.OnChange)
		this.OnChange(val);

	this.SetValueI(val);
},

SetValue: function(valH, valV)
{
	if(this.type == 'image')
		return this.SetValueI(valH);

	for(var j = 0; j < 3; j++)
		if(this.arIconH[j] == valH)
			break;

	for(var i = 0; i < 3; i++)
		if(this.arIconV[i] == valV)
			break;

	if(i > 2)
		i = 1;
	if(j > 2)
		j=0;

	this.pIcon.id = "bx_btn_align_"+this.arIcon[i * 3 + j];
	this.pIcon.title = this.arIconName[i * 3 + j];
	return i * 3 + j;
},

SetValueI: function(val)
{
	var i, j = 0;
	for(i = 0; i < 3; i++)
		if(this.arIconV[i] == val)
		{
			j = 1;
			break;
		}
	if(j != 1)
		for(j = 0; j < 3; j++)
			if(this.arIconH[j] == val)
			{
				i = 1;
				break;
			}

	if(i > 2)
		i=1;
	if(j > 2)
		j=0;

	this.pIcon.id = "bx_btn_align_"+this.arIcon[i * 3 + j];
	this.pIcon.title = this.arIconName[i * 3 + j];
	return i * 3 + j;
},

OnClick: function (e)
{
	if(this.disabled)
		return false;

	if (!this.bCreated)
		this.Create();

	if (this.bOpened)
		return this.Close();

	this.Open();
},

OnKey: function(e)
{
	if (this.bOpened)
	{
		if(!e) e = window.event
		if(e.keyCode == 27)
			this.Close();
	}
}
};

// function BXGroupedButton()
// {
	// this.disabled = false;
	// this.bCreated = false;
	// this.bOpened = false;
	// this.zIndex = 2090;
// }

// BXGroupedButton.prototype = {
	// _Create: function()
	// {
		// var _this = this;

		// this.pWnd = BX.create("IMG", {props: {className: 'bxedtbutton', src: one_gif_src, id: "bx_btn_" + this.id}, style: {backgroundImage: "url(" + global_iconkit_path + ")"}});

		// this.pWnd.onmouseover = function(e)
		// {
			// if(!this.disabled)
				// BX.addClass(this, 'bxedtbutton-over');
		// };

		// this.pWnd.onmouseout = function(e)
		// {
			// if(!this.disabled)
				// BX.removeClass(this, 'bxedtbutton-over');
		// };

		// this.pWnd.onclick = BX.proxy(this.OnClick, this);

		// this.pPopupNode = document.body.appendChild(BX.create("DIV", {props: {className: "bx-but-group"}, style: {zIndex: this.zIndex}}));
		// this.bCreated = true;

		// this.pPopupNode.style.height = ((this.buttons.length - 1) * 20) + "px";

		// var i, l = this.buttons.length, pBut;
		// for (i = 0; i < l; i++)
		// {
			// //pBut = this.pMainObj.CreateCustomElement("BXButton", arButton[1]);
			// //this.pPopupNode.appendChild(BX.create("DIV", {props: {className: "bx-g-tlbr-but"}})).appendChild(pBut.pWnd);
		// }

		// // if(!this.no_actions || this.no_actions != true) // for context menu
		// // {
			// //if (this.defaultState)
			// //	this.Check(true);
			// // addCustomElementEvent(this.pWnd, 'click', this.OnClick, this);
			// // this.pMainObj.AddEventHandler("OnSelectionChange", this._OnSelectionChange, this);
			// // this.pMainObj.AddEventHandler("OnChangeView", this.OnChangeView, this);
		// //}
	// },

	// // _OnChangeView: function (mode, split_mode)
	// // {
		// // mode = (mode == 'split' ? split_mode : mode);
		// // if(mode == 'code' && !this.codeEditorMode || (mode=='html' && this.hideInHtmlEditorMode))
		// // {
			// // this._prevDisabledState = this.pWnd.disabled;
			// // this.Disable(true);
		// // }
		// // else if(mode == 'code' && this.codeEditorMode || (this.hideInHtmlEditorMode && mode != 'html'))
			// // this.Disable(false);
		// // else if(!this.codeEditorMode)
			// // this.Disable(this._prevDisabledState);
	// // },

	// OnChangeView: function (mode, split_mode)
	// {
		// //this._OnChangeView(mode, split_mode);
	// },

	// OnClick: function (e)
	// {
		// if(this.disabled)
			// return false;

		// if (this.bOpened)
			// return this.Close();

		// this.Open();
	// },

	// Open: function ()
	// {
		// var
			// pOverlay = this.pMainObj.oTransOverlay.Show(),
			// pos = BX.pos(this.pWnd),
			// _this = this;

		// //BX.bind(document, "keyup", BX.proxy(this.OnKey, this));
		// //BX.bind(this.pMainObj.pEditorDocument, "keyup", BX.proxy(this.OnKey, this));

		// oPrevRange = BXGetSelectionRange(this.pMainObj.pEditorDocument, this.pMainObj.pEditorWindow);
		// pOverlay.onclick = function(){_this.Close()};

		// this.pPopupNode.style.top = pos.top + (BX.browser.IsIE() && !BX.browser.IsDoctype() ? 17 : 19);
		// this.pPopupNode.style.left = pos.left + (BX.browser.IsIE() && !BX.browser.IsDoctype() ? -2 : 0);
		// this.pPopupNode.style.display = 'block';

		// // BXPopupWindow.Show({
			// // top: pos.top + (BX.browser.IsIE() && !BX.browser.IsDoctype() ? 17 : 19),
			// // left: pos.left + (BX.browser.IsIE() && !BX.browser.IsDoctype() ? -2 : 0),
			// // node: this.pPopupNode,
			// // width: this.width,
			// // height: this.height
		// // });
		// this.bOpened = true;
	// },

	// Close: function ()
	// {
		// this._Close();
	// },

	// _Close: function ()
	// {
		// this.pPopupNode.style.display = 'none';
		// this.pMainObj.oTransOverlay.Hide();

		// //BX.unbind(document, "keyup", BX.proxy(this.OnKey, this));
		// //BX.unbind(this.pMainObj.pEditorDocument, "keyup", BX.proxy(this.OnKey, this));
		// this.bOpened = false;
	// },

	// OnKey: function (e)
	// {
		// if(!e)
			// e = window.event
		// if(e.keyCode == 27 && this.bOpened)
			// this.Close();
	// }
// }

function BXDialog() {}
BXDialog.prototype = {
	_Create: function()
	{
		var _this = this;
		this.pMainObj._DisplaySourceFrame(true);

		if(!this.params || typeof(this.params) != "object")
			this.params = {};

		this.params.pMainObj = this.pMainObj;
		pObj = window.pObj = this;

		oPrevRange = BXGetSelectionRange(this.pMainObj.pEditorDocument, this.pMainObj.pEditorWindow);
		var ShowResult = function(result, bFastMode)
		{
			BX.closeWait();

			if (window.oBXEditorDialog && window.oBXEditorDialog.isOpen)
				return false;

			var arDConfig = {
				title : _this.name,
				width: _this.width,
				height: 300,
				resizable: false
			};

			if (bFastMode)
			{
				if (result.title)
					arDConfig.title = result.title;

				if (result.width)
					arDConfig.width = result.width;
				if (result.height)
					arDConfig.height = result.height;

				if (result.resizable)
				{
					arDConfig.resizable = true;
					arDConfig.min_width = result.min_width;
					arDConfig.min_height = result.min_height;
					arDConfig.resize_id = result.resize_id;
				}
			}

			window.oBXEditorDialog = new BX.CEditorDialog(arDConfig);
			window.oBXEditorDialog.editorParams = _this.params;

			BX.addCustomEvent(window.oBXEditorDialog, 'onWindowUnRegister', function()
			{
				if (window.oBXEditorDialog && window.oBXEditorDialog.DIV && window.oBXEditorDialog.DIV.parentNode)
					window.oBXEditorDialog.DIV.parentNode.removeChild(window.oBXEditorDialog.DIV);
			});

			if (bFastMode)
			{
				window.oBXEditorDialog.Show();
				window.oBXEditorDialog.SetContent(result.innerHTML);

				if (result.OnLoad && typeof result.OnLoad == 'function')
					result.OnLoad();
			}
		}
		BX.showWait();

		var potRes = this.GetFastDialog();
		if (potRes !== false)
			return ShowResult(potRes, true);

		var
			addUrl = (this.params.PHPGetParams ? this.params.PHPGetParams : '') + '&mode=public' + (window.bxsessid ? '&sessid=' + bxsessid : '') + (this.not_use_default ? '&not_use_default=Y' : ''),
			handler = this.handler ? '/bitrix/admin/' + this.handler : editor_dialog_path,
			url = handler + '?lang=' + BXLang + '&bxpublic=Y&site=' + BXSite + '&name=' + this.name + addUrl;

		if (_this.params.bUseTabControl)
		{
			BX.closeWait();
			window.oBXEditorDialog = new BX.CAdminDialog({
				title : _this.name,
				content_url: url,
				width: _this.width,
				resizable: false
			});
			window.oBXEditorDialog.bUseTabControl = true;
			window.oBXEditorDialog.Show();
		}
		else
		{
			// hack to loading auth
			url += '&bxsender=core_window_cadmindialog';

			BX.ajax.post(url, {}, ShowResult);
		}
	},

	Close: function(){},

	GetFastDialog: function()
	{
		return window.arEditorFastDialogs[this.name] ? window.arEditorFastDialogs[this.name](this) : false;
	}
}

BXHTMLEditor.prototype.OpenEditorDialog = function(dialogName, obj, width, arParams, notUseDefaultButtons)
{
	this.CreateCustomElement("BXDialog", {width: parseInt(width) || 500, name: dialogName, params: arParams || {}, not_use_default: notUseDefaultButtons});
}