AnonSec Shell
Server IP : 85.193.89.191  /  Your IP : 3.144.116.22
Web Server : Apache
System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
User : bitrix ( 600)
PHP Version : 8.1.27
Disable Function : NONE
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/bitrix/www/bitrix/admin/htmleditor2/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/bitrix/www/bitrix/admin/htmleditor2/toolbarbuttons.js
var arButtons = [];
arButtons['separator'] = 'separator';
arButtons['Fullscreen']	= ['BXButton',
	{
		id : 'Fullscreen',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.Fullscreen,
		title : BX_MESS.Fullscreen,
		codeEditorMode : true,
		handler : function()
		{
			this.pMainObj.SetFullscreen(!this.pMainObj.bFullscreen);
			this.Check(this.pMainObj.bFullscreen);
		}
	}
];

arButtons['Settings'] = ['BXButton',
	{
		id : 'Settings',
		iconkit : '_global_iconkit.gif',
		name: BX_MESS.TBSettings,
		title: BX_MESS.TBSettings,
		codeEditorMode: true,
		handler: function()
		{
			this.bNotFocus = true;
			this.pMainObj.OpenEditorDialog("settings", false, 500, {bUseTabControl: true, lightMode: lightMode, PHPGetParams: '&light_mode=' + (lightMode ? 'Y' : 'N')});
		}
	}
];

arButtons['Cut'] = ['BXButton',
	{
		id : 'Cut',
		iconkit : '_global_iconkit.gif',
		name: BX_MESS.Cut,
		cmd: 'Cut',
		hideCondition: function() {return !BX.browser.IsIE();}
	}
];

arButtons['Copy'] = ['BXButton',
	{
		id : 'Copy',
		iconkit : '_global_iconkit.gif',
		name: BX_MESS.Copy,
		cmd: 'Copy',
		hideCondition: function() {return !BX.browser.IsIE();}
	}
];

arButtons['Paste'] =['BXButton',
	{
		id : 'Paste',
		iconkit : '_global_iconkit.gif',
		name: BX_MESS.Paste,
		cmd: 'Paste',
		hideCondition: function() {return !BX.browser.IsIE();}
	}
];

arButtons['pasteword'] = ['BXButton',
	{
		id : 'pasteword',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.PasteAsWord,
		handler : function ()
		{
			this.bNotFocus = true;
			this.pMainObj.OpenEditorDialog("pasteword");
		}
	}
];

arButtons['pastetext'] = ['BXButton',
	{
		id : 'pastetext',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.PasteAsText,
		handler : function ()
			{
				if(BX.browser.IsIE())
				{
					if (clipboardData.getData("Text"))
						this.pMainObj.PasteAsText(clipboardData.getData("Text"));
				}
				else
				{
					this.bNotFocus = true;
					this.pMainObj.OpenEditorDialog("pasteastext", false, 450);
				}
			}
	}
];

arButtons['SelectAll'] = ['BXButton',
	{
		id : 'SelectAll',
		iconkit : '_global_iconkit.gif',
		name: BX_MESS.SelectAllTitle,
		cmd: 'SelectAll'
	}
];

if(BX.browser.IsIE())
{
	arButtons['Undo'] = ['BXButton',
	{
		id : 'Undo',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.Undo,
		OnChangeContent : function(){this.Disable(!this.pMainObj.UndoStatus());},
		OnCreate : function(){this.pMainObj.AddEventHandler("OnChange", this.OnChangeContent, this);},
		handler : function(){this.pMainObj.Undo(1);}
	}
	];

	arButtons['Redo'] = ['BXButton',
	{
		id : 'Redo',
		iconkit : '_global_iconkit.gif',
		name: BX_MESS.Redo,
		OnChangeContent: function(){this.Disable(!this.pMainObj.RedoStatus());},
		OnCreate: function(){this.pMainObj.AddEventHandler("OnChange", this.OnChangeContent, this);},
		handler: function(){this.pMainObj.Redo(1);}
	}
	];
}
else
{
	arButtons['Undo'] = ['BXButton',
	{
		id : 'Undo',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.Undo,
		cmd : 'Undo'
	}
	];

	arButtons['Redo'] = ['BXButton',
	{
		id : 'Redo',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.Redo,
		cmd : 'Redo'
	}
	];
}

arButtons['borders'] = ['BXButton',
	{
		name : BX_MESS.BordersTitle,
		id : 'borders',
		iconkit : '_global_iconkit.gif',
		handler : function ()
			{
				this.pMainObj.ShowTableBorder(!this.pMainObj.bTableBorder);
				this.Check(this.pMainObj.bTableBorder);
			},
		OnCreate : function ()
			{
				var _this = this;
				setTimeout(function(){_this.Check(_this.pMainObj.bTableBorder);}, 10);
				return true;
			}
	}
];

arButtons['table'] = ['BXButton',
	{
		id : 'table',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBInsTable,
		title : BX_MESS.TBInsTable,
		handler : function ()
		{
			this.bNotFocus = true;
			this.pMainObj.OpenEditorDialog("table", false, 500);
		}
	}
];

arButtons['anchor'] = ['BXButton',
	{
		id : 'anchor',
		iconkit : '_global_iconkit.gif',
		name: 'Anchor',
		title: BX_MESS.TBAnchor,
		handler: function ()
		{
			this.bNotFocus = true;
			this.pMainObj.OpenEditorDialog("anchor", null, 400);
		}
	}
];

arButtons['CreateLink'] = ['BXButton',
	{
		id : 'CreateLink',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBLink,
		title : BX_MESS.TBLink,
		handler : function ()
		{
			this.bNotFocus = true;
			this.pMainObj.OpenEditorDialog("editlink", null, 520);
		}
	}
];

arButtons['deletelink'] = ['BXButton',
	{
		id : 'deletelink',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBDelLink,
		cmd : 'Unlink',
		handler : function()
		{
			var pElement = BXFindParentByTagName(this.pMainObj.GetSelectionObject(), 'A');
			if(pElement)
			{
				this.pMainObj.SelectElement(pElement);
				this.pMainObj.executeCommand('Unlink');
			}
		}
	}
];

arButtons['image'] = ['BXButton',
	{
		id : 'image',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBImg,
		handler : function ()
		{
			this.bNotFocus = true;
			var p = this.pMainObj.GetSelectionObject();
			if (!p || p.tagName != 'IMG')
				p = false;
			this.pMainObj.OpenEditorDialog("image", p, 500);
		}
	}
];

arButtons['SpecialChar'] = ['BXButton',
	{
		id : 'SpecialChar',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.SpecialCharTitle,
		handler : function ()
		{
			this.bNotFocus = true;
			this.pMainObj.OpenEditorDialog("specialchar", false, 610, {pMainObj:this.pMainObj});
		}
	}
];

arButtons['Bold'] = ['BXButton',
	{
		id : 'Bold',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBBold,
		title : BX_MESS.TBBold + " (Ctrl + B)",
		cmd : 'Bold'
	}
];

arButtons['Italic']	= ['BXButton',
	{
		id : 'Italic',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBItalic,
		title : BX_MESS.TBItalic + " (Ctrl + I)",
		cmd : 'Italic'
	}
];

arButtons['Underline'] = ['BXButton',
	{
		id : 'Underline',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBUnderline,
		title : BX_MESS.TBUnderline + " (Ctrl + U)",
		cmd : 'Underline'
	}
];

arButtons['Strike'] = ['BXButton',
	{
		id : 'Strike',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBStrike,
		handler : function ()
		{
			var
				pElement = this.pMainObj.GetSelectedNode(true),
				bFind = false, st;

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

				if (pElement.nodeType == 1 && (pElement.style.textDecoration == "line-through" ||  pElement.nodeName.toLowerCase() == 'strike'))
					bFind = true;
				else
					pElement = pElement.parentNode;
			}

			if (bFind)
			{
				pElement.style.textDecoration = "";
				this.pMainObj.RidOfNode(pElement, pElement.nodeName.toLowerCase() == 'strike');
				this.Check(false);
			}
			else
			{
				this.pMainObj.WrapSelectionWith("span", {style: {textDecoration : "line-through"}});
				this.pMainObj.OnEvent("OnSelectionChange");
			}
		},
		OnSelectionChange: function ()
		{
			var
				pElement = this.pMainObj.GetSelectedNode(true),
				bFind = false, st;

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

				if (pElement.nodeType == 1 && (BX.style(pElement, 'text-decoration', null) == "line-through" || pElement.nodeName.toLowerCase() == 'strike'))
				{
					bFind = true;
					break;
				}
				else
					pElement = pElement.parentNode;
			}

			this.Check(bFind);
		}
	}
];

arButtons['RemoveFormat'] = ['BXButton',
	{
		id : 'RemoveFormat',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.RemoveFormat,
		cmd : 'RemoveFormat'
	}
];

arButtons['Optimize'] = ['BXButton',
		{
			id : 'Optimize',
			iconkit : '_global_iconkit.gif',
			name : BX_MESS.Optimize,
			handler : function ()
			{
				var pMainObj = this.pMainObj;
				pMainObj.CollapseSelection();
				pMainObj.insertHTML('<a href="#" id="' + pMainObj.SetBxTag(false, {tag: "cursor"}) + '">|</a>');
				pMainObj.OnEvent('ClearResourcesBeforeChangeView');
				pMainObj.SaveContent();

				var content = pMainObj.GetContent();
				content = pMainObj.OptimizeHTML(content); // optimize
				content = pMainObj.pParser.SystemParse(content); // Parse
				pMainObj.pEditorDocument.body.innerHTML = content;

				setTimeout(function()
				{
					try{
						var pCursor = pMainObj.pEditorDocument.getElementById(pMainObj.lastCursorId);
						if (pCursor && pCursor.parentNode)
						{
							pMainObj.SelectElement(pCursor);
							pCursor.parentNode.removeChild(pCursor);
							pMainObj.SetFocus();
							pMainObj.insertHTML('');
						}
					}catch(e){}
				}, 100);
			}
		}
	];

// CELL
arButtons['insertcell_before'] = ['BXButton', {
	id : 'insertcell_before',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBInsCellBefore,
	handler: function () {this.pMainObj.TableOperation('cell', 'insert_before', arguments[0]);}
}];
arButtons['insertcell_after'] = ['BXButton', {
	id : 'insertcell_after',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBInsCellAfter,
	handler: function () {this.pMainObj.TableOperation('cell', 'insert_after', arguments[0]);}
}];
arButtons['deletecell'] = ['BXButton', {
	id : 'deletecell',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBDellCell,
	handler: function () {this.pMainObj.TableOperation('cell', 'delete', arguments[0]);}
}];
arButtons['mergecells'] = ['BXButton', {
	id : 'mergecells',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBMergeCell,
	handler: function () {this.pMainObj.TableOperation('cell', 'merge', arguments[0]);},
	disablecheck: function (oTable, pMainObj)
	{
		var arCells = pMainObj.getSelectedCells();
		if (arCells.length < 2)
			return true;
		return false;
	}
}];
arButtons['merge_right'] = ['BXButton', {
	id : 'merge_right',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBMergeRight,
	handler: function () {this.pMainObj.TableOperation('cell', 'mergeright', arguments[0]);},
	disablecheck: function (oTable, pMainObj)
	{
		var arCells = pMainObj.getSelectedCells();
		if (arCells.length != 1 || !arCells[0].parentNode.cells[arCells[0].cellIndex + 1])
			return true;
		return false;
	}
}];
arButtons['merge_bottom'] = ['BXButton', {
	id : 'merge_bottom',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBMergeBottom,
	handler: function () {this.pMainObj.TableOperation('cell', 'mergebottom', arguments[0]);},
	disablecheck: function (oTable, pMainObj)
	{
		var arCells = pMainObj.getSelectedCells();
		if (arCells.length != 1)
			return true;

		var oTR = arCells[0].parentNode;
		if (!oTR.parentNode.rows[oTR.rowIndex + 1])
			return true;
		return false;
	}
}];
arButtons['split_hor'] = ['BXButton', {
	id : 'split_hor',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBSplitCellHor,
	handler: function () {this.pMainObj.TableOperation('cell', 'splithorizontally', arguments[0]);},
	disablecheck: function (oTable, pMainObj)
	{
		var arCells = pMainObj.getSelectedCells();
		if (arCells.length != 1)
			return true;
		return false;
	}
}];
arButtons['split_ver'] = ['BXButton', {
	id : 'split_ver',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBSplitCellVer,
	handler: function () {this.pMainObj.TableOperation('cell', 'splitvertically', arguments[0]);},
	disablecheck: function (oTable, pMainObj)
	{
		var arCells = pMainObj.getSelectedCells();
		if (arCells.length != 1)
			return true;
		return false;
	}
}];
// ROW
arButtons['insertrow_before'] = ['BXButton', {
	id : 'insertrow_before',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBInsRowUpper,
	handler: function () {this.pMainObj.TableOperation('row', 'insertbefore', arguments[0]);}
}];
arButtons['insertrow_after'] = ['BXButton', {
	id : 'insertrow_after',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBInsRowLower,
	handler: function () {this.pMainObj.TableOperation('row', 'insertafter', arguments[0]);}
}];
arButtons['mergeallcellsinrow'] = ['BXButton', {
	id : 'mergeallcellsinrow',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBMergeRowCells,
	handler: function () {this.pMainObj.TableOperation('row', 'mergecells', arguments[0]);}
}];
arButtons['deleterow'] = ['BXButton', {
	id : 'deleterow',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBDelRow,
	handler: function () {
		this.pMainObj.TableOperation('row', 'delete', arguments[0]);}
}];
// COLUMN
arButtons['insertcolumn_before'] = ['BXButton', {
	id : 'insertcolumn_before',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBInsColLeft,
	handler: function () {this.pMainObj.TableOperation('column', 'insertleft', arguments[0]);}
}];
arButtons['insertcolumn_after'] = ['BXButton', {
	id : 'insertcolumn_after',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBInsColRight,
	handler: function () {this.pMainObj.TableOperation('column', 'insertright', arguments[0]);}
}];
arButtons['mergeallcellsincolumn'] = ['BXButton', {
	id : 'mergeallcellsincolumn',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBMergeColCells,
	handler: function () {this.pMainObj.TableOperation('column', 'mergecells', arguments[0]);},
	disablecheck: function (oTable, pMainObj)
	{
		return false;
		var arCells = pMainObj.getSelectedCells();
		if (arCells.length != 1 || arCells[0].parentNode.rowIndex == arCells[0].parentNode.parentNode.rows.length - 1)
			return true;
		return false;
	}
}];
arButtons['deletecolumn'] = ['BXButton', {
	id : 'deletecolumn',
	iconkit : '_global_iconkit.gif',
	name: BX_MESS.TBDelCol,
	handler: function () {this.pMainObj.TableOperation('column', 'delete', arguments[0]);}
}];

arButtons['deltable'] = ['BXButton',
	{
		id : 'deletetable',
		iconkit : '_global_iconkit.gif',
		name: BX_MESS.DeleteTable,
		title: BX_MESS.DeleteTable,
		handler: function ()
		{
			this.pMainObj.bSkipChanges = false;
			var pElement = BXFindParentByTagName(this.pMainObj.GetSelectionObject(), 'TABLE');
			if (pElement && pElement.nodeName.toUpperCase() == 'TABLE')
				pElement.parentNode.removeChild(pElement);
			this.pMainObj.OnChange("table", "deltable");
		}
	}];

arButtons['tableprop'] = ['BXButton',
	{
		id : 'tableprop',
		iconkit : '_global_iconkit.gif',
		name: BX_MESS.TBTableProp,
		title: BX_MESS.TBTableProp,
		handler: function ()
		{
			this.bNotFocus = true;
			var p = BXFindParentByTagName(this.pMainObj.GetSelectionObject(), 'TABLE');
			if (p) this.pMainObj.OpenEditorDialog("table", p, 450, {check_exists: true});
		}
	}];


arButtons['InsertHorizontalRule'] = ['BXButton',
	{
		id : 'InsertHorizontalRule',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBHr,
		handler: function()
		{
			if (BX.browser.IsIE())
				this.pMainObj.pMainObj.executeCommand('InsertHorizontalRule');
			else
				this.pMainObj.insertHTML('<img style="padding: 2px; width: 100%; height: 2px;" src="' + image_path + '/break_page.gif" id="' + this.pMainObj.SetBxTag(false, {tag: "hr", params: {value: "<hr/>"}}) + '"/>');
		}
	}
];

// arButtons['Justify'] = ['BXGroupedButton',
	// {
		// id: 'Justify',
		// buttons: [
			// {
				// id : 'JustifyLeft',
				// name : BX_MESS.TBJLeft,
				// cmd : 'JustifyLeft'
			// },
			// {
				// id : 'JustifyCenter',
				// name : BX_MESS.TBJCent,
				// cmd : 'JustifyCenter'
			// },
			// {
				// id : 'JustifyRight',
				// name : BX_MESS.TBJRig,
				// cmd : 'JustifyRight'
			// },
			// {
				// id : 'JustifyFull',
				// name : BX_MESS.TBJFull,
				// cmd : 'JustifyFull'
			// }
		// ]
	// }
// ];

arButtons['JustifyLeft'] = ['BXButton',
	{
		id : 'JustifyLeft',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBJLeft,
		cmd : 'JustifyLeft'
	}
];

arButtons['JustifyCenter'] = ['BXButton',
	{
		id : 'JustifyCenter',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBJCent,
		cmd : 'JustifyCenter'
	}
];

arButtons['JustifyRight'] = ['BXButton',
	{
		id : 'JustifyRight',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBJRig,
		cmd : 'JustifyRight'
	}
];

arButtons['JustifyFull'] = ['BXButton',
	{
		id : 'JustifyFull',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBJFull,
		cmd : 'JustifyFull'
	}
];

arButtons['InsertOrderedList'] = ['BXButton',
	{
		id : 'InsertOrderedList',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBOList,
		cmd : 'InsertOrderedList'
	}
];

arButtons['InsertUnorderedList'] = ['BXButton',
	{
		id : 'InsertUnorderedList',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBUnOList,
		cmd : 'InsertUnorderedList'
	}
];

arButtons['Outdent'] = ['BXButton',
	{
		id : 'Outdent',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.TBOutdent,
		title : BX_MESS.TBOutdent + "(Shift + Tab)",
		cmd : 'Outdent'
	}
];

arButtons['Indent'] = ['BXButton',
	{
		id : 'Indent',
		iconkit : '_global_iconkit.gif',
		title : BX_MESS.TBIndent + "(Tab)",
		name : BX_MESS.TBIndent,
		cmd : 'Indent'
	}
];

arButtons['BackColor'] = ['BXEdColorPicker',
	{
		id : 'BackColor',
		title : BX_MESS.Background_Color,
		disableOnCodeView: true,
		OnChange : function (color)
		{
			if(BX.browser.IsIE())
			{
				this.pMainObj.executeCommand('BackColor', color);
			}
			else
			{
				try{
					this.pMainObj.pEditorDocument.execCommand("styleWithCSS", false, true);
					if (!color)
						this.pMainObj.executeCommand('removeFormat'); //BXClearMozDirtyInRange(this.pMainObj);
					else
						this.pMainObj.executeCommand('hilitecolor', color);

					this.pMainObj.pEditorDocument.execCommand("styleWithCSS", false, false);
				}catch(e){_alert('Error: toolbarbuttons.js: arButtons["BackColor"]');}
			}
		}
	}
];

arButtons['ForeColor'] = ['BXEdColorPicker',
	{
		id : 'ForeColor',
		title : BX_MESS.Foreground_Color,
		disableOnCodeView : true,
		OnChange : function (color)
		{
			if (!color && !BX.browser.IsIE())
				this.pMainObj.executeCommand('removeFormat');
			else
				this.pMainObj.executeCommand('ForeColor', color);
		}
	}
];


var __BXSrcBtn = function (mode, split_mode)
{
	this.Check(mode==this.t);
	this._OnChangeView(mode, split_mode);
}

arButtons['wysiwyg'] = ['BXButton',
	{
		id : 'wysiwyg',
		iconkit : '_global_iconkit.gif',
		codeEditorMode : true,
		name : BX_MESS.TBWysiwyg,
		t : 'html',
		OnChangeView : __BXSrcBtn,
		handler : function () {this.pMainObj.SetView('html');}
	}
];

arButtons['source'] = ['BXButton',
	{
		id : 'source',
		iconkit : '_global_iconkit.gif',
		codeEditorMode : true,
		name : BX_MESS.TBSrc,
		t : 'code',
		OnChangeView : __BXSrcBtn,
		handler : function () {this.pMainObj.SetView('code');}
	}
];

arButtons['split'] = ['BXButton',
	{
		id : 'split',
		iconkit : '_global_iconkit.gif',
		codeEditorMode : true,
		name : BX_MESS.TBSplitmode,
		t : 'split',
		OnChangeView : __BXSrcBtn,
		handler : function () {this.pMainObj.SetView('split');}
	}
];


arButtons['Wrap'] = ['BXButton',
	{
		id : 'Wrap',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.WrapTitle,
		codeEditorMode : true,
		hideInHtmlEditorMode : true,
		//hideInFF : true,
		hideCondition: function() {return (navigator.appName=='Netscape');},
		defaultState : true,
		handler : function ()
		{
			if (!this.pWnd.checked)
			{
				this.pMainObj.pSourceFrame.wrap = 'soft';
				this.Check(true);
			}
			else
			{
				this.pMainObj.pSourceFrame.wrap = 'OFF';
				this.Check(false);
			}
			this.pMainObj.pSourceFrame.focus();
		}
	}
];

arButtons['HeadingList'] =
	['BXEdList',
		{
			id: 'HeadingList',
			field_size: 75,
			width: 210,
			title: '(' + BX_MESS.Format + ')',
			disableOnCodeView: true,
			bAdminConfigure: true,
			//bSetGlobalStyles: false,
			values:
			[
				{value: 'p', name: 'Normal'},
				{value: 'h1', name: 'Heading 1'},
				{value: 'h2', name: 'Heading 2'},
				{value: 'h3', name: 'Heading 3'},
				{value: 'h4', name: 'Heading 4'},
				{value: 'h5', name: 'Heading 5'},
				{value: 'h6', name: 'Heading 6'},
				{value: 'pre', name: 'Preformatted'}
			],
			OnSelectionChange: function (){
					var sel = 0;
					var frm = this.pMainObj.queryCommand('FormatBlock');
					if(frm)
					{
						var re = /[1-6]/;
						var r = frm.match(re);
						if(r>0)
							sel = r;
						else if(frm == 'pre')
							sel = 7;
					}

					this.Select(sel);
				},
			OnChange: function (selected){this.pMainObj.executeCommand('FormatBlock', (selected['value'].length>0?'<' + selected['value']+'>':'<p>'));},
			OnDrawItem: function (item)
			{
				if (!styleList_render_style)
					return item['name'];
				return (item['value'].length <= 0 ? item['name'] : '<'+item['value']+'>'+item['name']+'</'+item['value']+'>');
			}
		}
	];

arButtons['FontName'] =
	['BXEdList',
		{
			id: 'FontName',
			field_size: 75,
			title: '('+BX_MESS.Font+')',
			disableOnCodeView: true,
			values:
			[
				{value: 'Times New Roman', name: 'Times New Roman'},
				{value: 'Courier', name: 'Courier'},
				{value: 'Arial', name: 'Arial'},
				{value: 'Tahoma', name: 'Tahoma'},
				{value: 'Verdana', name: 'Verdana'},
				{value: 'Georgia', name: 'Georgia'}
			],
			OnSelectionChange: function (){
					this.SelectByVal(this.pMainObj.queryCommand('FontName'));
				},
			OnChange: function (selected){this.pMainObj.executeCommand('FontName', selected['value']);},
			//text-overflow : ellipsis;
			OnDrawItem: function (item){return '<span style="white-space: nowrap; font-family:'+item['name']+';font-size: 10pt;">'+item['name']+'</span>';}
		}
	];

arButtons['FontSize'] =
	['BXEdList',
		{
			id: 'FontSize',
			width: 250,
			field_size: 75,
			title: '(' + BX_MESS.Size + ')',
			disableOnCodeView: true,
			values:
			[
				{value: '1', name: 'xx-small'},
				{value: '2', name: 'x-small'},
				{value: '3', name: 'small'},
				{value: '4', name: 'medium'},
				{value: '5', name: 'large'},
				{value: '6', name: 'x-large'},
				{value: '7', name: 'xx-large'}
			],
			OnSelectionChange: function (){
					this.SelectByVal(this.pMainObj.queryCommand('FontSize'));
				},
			OnChange: function (selected){this.pMainObj.executeCommand('FontSize', selected['value']);},
			OnDrawItem: function (item){return '<font size="'+item['value']+'">'+item['name']+'</font>';}
		}
	];

arButtons['FontStyle'] = ['BXStyleList',
	{
		id: 'FontStyle',
		width: 200,
		field_size: 130,
		title: '(' + BX_MESS.Style + ')',
		disableOnCodeView: true,
		filter: ['DEFAULT'],
		prevType : false,
		deleteIfNoItems : true,
		OnChangeElement: function (arSelected)
		{
			if (this.pElement.tagName.toUpperCase() == 'BODY')
				this.pElement.innerHTML = '<span class="'+arSelected["value"]+'">'+this.pElement.innerHTML+'</span>';
			else
				SAttr(this.pElement, 'className', arSelected["value"]);
		},
		OnChangeText: function (arSelected)
		{
			var pElement = this.pMainObj.GetSelectedNode(true);
			if(arSelected["value"] == '')
				this.RemoveClass(pElement);
			else
				this.OptimizeSelection(
				{
					nodes: this.pMainObj.WrapSelectionWith("span", {props: {className: arSelected["value"]}}),
					className: arSelected["value"]
				});
		},
		OnSelectionChange: function ()
		{
			var pElement = this.pMainObj.GetSelectedNode();
			if(pElement && pElement.nodeType == 1)
			{
				if(this.prevType != pElement.tagName.toUpperCase())
				{
					this.prevType = pElement.tagName.toUpperCase();
					this.tag_name = pElement.tagName.toUpperCase();
					this.filter = [pElement.tagName.toUpperCase(), 'DEFAULT'];
					this.FillList();
				}

				this.pElement = pElement;
				this.OnChange = this.OnChangeElement;
				this.SelectByVal(this.pElement.className);
			}
			else
			{
				this.OnChange = this.OnChangeText;
				if(this.prevType != 'DEFAULT')
				{
					this.prevType = 'DEFAULT';
					this.filter = ['DEFAULT'];
					this.tag_name = '';
					this.FillList();
				}

				this.SelectByVal();
				if(pElement)
				{
					if(BX.browser.IsIE() && pElement.parentElement && (pElement = pElement.parentElement()))
						pElement = pElement.childNodes[0];

					while(pElement = pElement.parentNode)
					{
						if(pElement.nodeType == 1 && pElement.tagName.toUpperCase() == 'TABLE')
							break;
						if(pElement.nodeType == 1 && pElement.className)
						{
							if(pElement.tagName.toUpperCase() != 'SPAN' && pElement.tagName.toUpperCase() != 'FONT')
								break;
							this.SelectByVal(pElement.className);
							break;
						}
					}
				}
			}
		}
	}
];

arButtons['Template'] =
	['BXEdList',
		{
			id: 'Template',
			width: 240,
			maxHeight: 250,
			field_size: 150,
			title: '('+BX_MESS.Template+')',
			values: window.arBXTemplates,
			bSetFontSize: true,
			bSetGlobalStyles: true,
			OnCreate: function ()
			{
				this.pMainObj.pTemplateListbox = this;
			},
			OnInit: function ()
			{
				this.SelectByVal(this.pMainObj.templateID);
			},
			OnChange: function (selected)
			{
				this.pMainObj.LoadTemplateParams(selected['value']);
				if (this.pMainObj.pComponent2Taskbar)
					checkComp2Template(this.pMainObj);
			}
		}
	];

// FLASH, BREAK, .....
arButtons['page_break'] = [
	'BXButton',
	{
		id : 'page_break',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.PAGE_BREAK,
		handler : function ()
		{
			this.pMainObj.insertHTML('<img style="width: 100%; height: 4px;" src="' + image_path + '/break_page.gif" id="' + this.pMainObj.SetBxTag(false, {tag: "break_page"}) + '"/>');
		}
	}
];

arButtons['break_tag'] = [
	'BXButton',
	{
		id : 'break_tag',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.BREAK_TAG,
		handler : function ()
		{
			this.pMainObj.insertHTML("<img src=\"" + image_path + "/break_tag.gif\" id=\"" + this.pMainObj.SetBxTag(false, {tag: 'break'}) + "\"/>");
		}
	}
];

arButtons['insert_flash'] = [
	'BXButton',
	{
		id : 'insert_flash',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.FLASH,
		handler : function () {this.bNotFocus = true; this.pMainObj.OpenEditorDialog("flash", false, 500, {bUseTabControl: true, pMainObj: this.pMainObj});}
	}
];

arButtons['edit_flash'] = [
	'BXButton',
	{
		id : 'insert_flash',
		iconkit : '_global_iconkit.gif',
		name : BX_MESS.FLASH_MOV,
		handler : function ()
		{
			this.bNotFocus = true;
			this.pMainObj.OpenEditorDialog("flash", false, 500, {bUseTabControl: true, pMainObj: this.pMainObj});
		}
	}
];

arButtons['_taskbar_close'] = ['BXButton', {id : '_taskbar_close', iconkit : '_global_iconkit.gif', name :  BX_MESS.Close, title : BX_MESS.Close_toolbar, handler : function (arParams){arParams.pTaskbar.Close();}}];

arButtons['_taskbar_refresh'] = ['BXButton',{id : '_taskbar_refresh', iconkit : '_global_iconkit.gif', name : BX_MESS.RefreshData, title : BX_MESS.RefreshData, handler: function(arParams){arParams.pTaskbar.ClearCache();}}];

arButtons['_taskbar_hide'] = ['BXButton', {id : '_taskbar_hide', iconkit : '_global_iconkit.gif', name : BX_MESS.Hide, title : BX_MESS.Hide_toolbar, handler : function (arParams){arParams.pTaskbar.pTaskbarSet.Hide();}}];

arButtons['_settings'] = ['BXButton', {id : '_settings', iconkit : '_global_iconkit.gif', name : BX_MESS.Settings, title : BX_MESS.Settings_toolbar, handler :function (arParams) {this.pMainObj.OpenEditorDialog("settings", false, 600, {bUseTabControl: true, lightMode: lightMode, PHPGetParams: '&light_mode=' + (lightMode ? 'Y' : 'N')});}}];

var arCMButtons = [];
if (BX.browser.IsIE())
	arCMButtons["DEFAULT"] = [arButtons['Cut'], arButtons['Copy'], arButtons['Paste']];
else
	arCMButtons["DEFAULT"] = []; // FF - operations 'copy', 'cut' and 'paste' are unallowed

arCMButtons["A"] = [arButtons['CreateLink'], arButtons['deletelink']];
arCMButtons["IMG"] = [arButtons['image']];
arCMButtons["FLASH"] = [arButtons['edit_flash']];

arCMButtons["TABLE"] = [
	{
		isgroup : true,
		id : 'table_cell',
		name : BX_MESS.TBInsCell,
		elements : [
			arButtons['insertcell_before'],
			arButtons['insertcell_after'],
			arButtons['deletecell'],
			arButtons['mergecells'],
			arButtons['merge_right'],
			arButtons['merge_bottom'],
			arButtons['split_hor'],
			arButtons['split_ver']
		]
	},
	{
		isgroup : true,
		id : 'table_row',
		name : BX_MESS.TBInsRow,
		elements : [
			arButtons['insertrow_before'],
			arButtons['insertrow_after'],
			arButtons['deleterow'],
			arButtons['mergeallcellsinrow']
		]
	},
	{
		isgroup : true,
		id : 'table_column',
		name : BX_MESS.TBInsColumn,
		elements : [
			arButtons['insertcolumn_before'],
			arButtons['insertcolumn_after'],
			arButtons['deletecolumn'],
			arButtons['mergeallcellsincolumn']
		]
	},
	arButtons['deltable'],
	arButtons['tableprop']
];

arCMButtons["_TASKBAR_DEFAULT"] = [arButtons['_taskbar_hide'], arButtons['_settings'], arButtons['_taskbar_close']];
arCMButtons["_TASKBAR_PROPERTIES"] = [arButtons['_taskbar_hide'], arButtons['_settings']];
arCMButtons["_TASKBAR_CACHED"] = [arButtons['_taskbar_hide'], arButtons['_taskbar_refresh'], arButtons['_settings'], arButtons['_taskbar_close']];

if (!window.arToolbars)
	arToolbars = {};

arToolbars['standart'] = [
	BX_MESS.TBSStandart,
	[
	arButtons['Fullscreen'], 'separator',
	arButtons['Settings'], arButtons['separator'],
	arButtons['Cut'], arButtons['Copy'], arButtons['Paste'], arButtons['pasteword'], arButtons['pastetext'], arButtons['SelectAll'], arButtons['separator'],
	arButtons['Undo'], arButtons['Redo'], arButtons['separator'],
	arButtons['borders'], 'separator',
	arButtons['table'], arButtons['anchor'], arButtons['CreateLink'], arButtons['deletelink'], arButtons['image'],  'separator',
	arButtons['SpecialChar'],
	arButtons['page_break'],
	arButtons['break_tag'],
	arButtons['insert_flash']
	]
];

arToolbars['style'] = [
	BX_MESS.TBSStyle,
		[arButtons['FontStyle'], arButtons['HeadingList'], arButtons['FontName'], arButtons['FontSize'], arButtons['separator'],
			arButtons['Bold'], arButtons['Italic'], arButtons['Underline'], arButtons['Strike'], 'separator',
			arButtons['RemoveFormat'], arButtons['Optimize']
		]
	];

arToolbars['formating'] = [
	BX_MESS.TBSFormat,
			[arButtons['InsertHorizontalRule'], arButtons['separator'],
				//arButtons['Justify'], arButtons['separator'],
				arButtons['JustifyLeft'], arButtons['JustifyCenter'], arButtons['JustifyRight'], arButtons['JustifyFull'], arButtons['separator'],
				arButtons['InsertOrderedList'], arButtons['InsertUnorderedList'],arButtons['separator'],
				arButtons['Outdent'], arButtons['Indent'], arButtons['separator'],
				arButtons['BackColor'], arButtons['ForeColor']
			]
	];

arToolbars['source'] = [
		BX_MESS.TBSEdit,
		[arButtons['wysiwyg'], arButtons['source'], arButtons['split'], arButtons['Wrap']]
	];

arToolbars['template'] = [
	BX_MESS.TBSTemplate,
	[arButtons['Template']]
	];

var arDefaultTBPositions = {
		standart: [0, 0, 0],
		template: [0, 0, 2],
		source: [1, 0, 0],
		style: [0, 1, 0],
		formating: [0, 1, 1]
	};


pPropertybarHandlers['table'] = function (bNew, pTaskbar, pElement)
{
	if(bNew)
	{
		pTaskbar.arElements = [];
		var tProp;
		var arBarHandlersCache = pTaskbar.pMainObj.arBarHandlersCache;
		if(arBarHandlersCache['table'])
		{
			var tProp = arBarHandlersCache['table'][0];
			pTaskbar.arElements = arBarHandlersCache['table'][1];
		}
		else
		{
			tProp = pTaskbar.pMainObj.pDocument.createElement("TABLE");
			tProp.className = "bxtaskbarprops";
			tProp.style.width = "100%";
			//tProp.style.height = "100%";
			tProp.cellSpacing = 0;
			tProp.cellPadding = 1;
			var row = tProp.insertRow(-1);

			var cell = row.insertCell(-1); cell.align = 'right';
			cell.appendChild(pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML':BX_MESS.TPropSize}));

			cell = row.insertCell(-1); cell.noWrap = true;
			pTaskbar.arElements['width'] = cell.appendChild(pTaskbar.pMainObj.CreateElement("INPUT", {'size':'5', 'title': BX_MESS.TPropW, 'type': 'text'}));
			cell.appendChild(pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML':'x'}));
			pTaskbar.arElements['height'] = cell.appendChild(pTaskbar.pMainObj.CreateElement("INPUT", {'size':'5', 'title': BX_MESS.TPropH, 'type': 'text'}));


			cell = row.insertCell(-1); cell.align = 'right';
			cell.appendChild(pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML':BX_MESS.TPropBord}));

			cell = row.insertCell(-1);
			pTaskbar.arElements['border'] = cell.appendChild(pTaskbar.pMainObj.CreateElement("INPUT", {'type': 'text', 'size': '5'}));
			////
			row = tProp.insertRow(-1);
			cell = row.insertCell(-1); cell.align = 'right';
			cell.appendChild(pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML':BX_MESS.TPropStyle}));
			cell = row.insertCell(-1);
			//1
			var pObjTemp = pTaskbar.pMainObj.CreateCustomElement('BXStyleList',
				{
					id: 'tableStyleList',
					width: 200,
					field_size: 80,
					title: '(' + BX_MESS.Style + ')',
					tag_name: 'TABLE',
					filter: ['TABLE', 'DEFAULT'],
					disableOnCodeView: true,
					OnChangeElement: function (arSelected)
					{
						SAttr(this.pElement, 'className', arSelected["value"]);
					},
					OnChangeText: function (arSelected)
					{
						var pElement = this.pMainObj.GetSelectedNode(true);
						if(arSelected["value"] == '')
							this.RemoveClass(pElement);
						else
							this.OptimizeSelection(
							{
								nodes: this.pMainObj.WrapSelectionWith("span", {props: {className: arSelected["value"]}}),
								className: arSelected["value"]
							});
					},
					OnSelectionChange: function ()
					{
						var pElement = this.pMainObj.GetSelectedNode();
						if(pElement && pElement.nodeType == 1)
						{
							if(this.prevType != pElement.tagName.toUpperCase())
							{
								this.prevType = pElement.tagName.toUpperCase();
								this.tag_name = pElement.tagName.toUpperCase();
								this.filter = [pElement.tagName.toUpperCase(), 'DEFAULT'];
								this.FillList();
							}

							this.pElement = pElement;
							this.OnChange = this.OnChangeElement;
							this.SelectByVal(this.pElement.className);
						}
						else
						{
							this.OnChange = this.OnChangeText;
							if(this.prevType != 'DEFAULT')
							{
								this.prevType = 'DEFAULT';
								this.filter = ['DEFAULT'];
								this.tag_name = '';
								this.FillList();
							}

							this.SelectByVal();
							if(pElement)
							{
								if(BX.browser.IsIE() && pElement.parentElement && (pElement = pElement.parentElement()))
									pElement = pElement.childNodes[0];

								while(pElement = pElement.parentNode)
								{
									if(pElement.nodeType == 1 && pElement.tagName.toUpperCase() == 'TABLE')
										break;
									if(pElement.nodeType == 1 && pElement.className)
									{
										if(pElement.tagName.toUpperCase() != 'SPAN' && pElement.tagName.toUpperCase() != 'FONT')
											break;
										this.SelectByVal(pElement.className);
										break;
									}
								}
							}
						}
					}
				});
			pTaskbar.arElements['cssclass'] = pObjTemp;
			cell.appendChild(pObjTemp.pWnd);
			pObjTemp = null;

			cell = row.insertCell(-1); cell.align = 'right';
			cell.appendChild(pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML':BX_MESS.TPropBG}));
			pObjTemp = null;

			cell = row.insertCell(-1);
			pObjTemp = pTaskbar.pMainObj.CreateCustomElement('BXEdColorPicker', {with_input: true});
			pTaskbar.arElements['bgcolor'] = pObjTemp;
			cell.appendChild(pObjTemp.pWnd);
			pObjTemp = null;

			////
			row = tProp.insertRow(-1);
			cell = row.insertCell(-1); cell.align = 'right';
			cell.appendChild(pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML':'CellPadding: '}));

			cell = row.insertCell(-1);
			pTaskbar.arElements['cellpadding'] = cell.appendChild(pTaskbar.pMainObj.CreateElement("INPUT", {'type': 'text', 'size': '5'}));

			cell = row.insertCell(-1); cell.align = 'right';
			cell.appendChild(pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML':BX_MESS.TPropAlign}));

			cell = row.insertCell(-1);
			pObjTemp = pTaskbar.pMainObj.CreateCustomElement('BXTAlignPicker', {'type': 'table'});
			pTaskbar.arElements['talign'] = pObjTemp;
			cell.appendChild(pObjTemp.pWnd);

			row = tProp.insertRow(-1);
			cell = row.insertCell(-1); cell.align = 'right';
			cell.appendChild(pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML':'CellSpacing: '}));

			cell = row.insertCell(-1);
			pTaskbar.arElements['cellspacing'] = cell.appendChild(pTaskbar.pMainObj.CreateElement("INPUT", {'type': 'text', 'size': '5'}));
			cell = row.insertCell(-1);
			cell = row.insertCell(-1);

			arBarHandlersCache['table'] = [tProp, pTaskbar.arElements];
		}
		tProp.id = 'tProp_leak';
		pTaskbar.pCellProps.appendChild(tProp);
		cell = null;
		row = null;
		tProp = null;
	}

	pTaskbar.arElements['width'].value = GAttr(pElement, 'width');
	pTaskbar.arElements['height'].value = GAttr(pElement, 'height');
	pTaskbar.arElements['border'].value = GAttr(pElement, 'border');
	pTaskbar.arElements['cellpadding'].value = GAttr(pElement, 'cellPadding');
	pTaskbar.arElements['cellspacing'].value = GAttr(pElement, 'cellSpacing');
	pTaskbar.arElements['bgcolor'].SetValue(pElement.bgColor);
	pTaskbar.arElements['talign'].SetValue(pElement.align);
	pTaskbar.arElements['cssclass'].SelectByVal(pElement.className);

	var fChange = function (){
		SAttr(pElement, 'width', pTaskbar.arElements['width'].value);
		SAttr(pElement, 'height', pTaskbar.arElements['height'].value);
		SAttr(pElement, 'border', pTaskbar.arElements['border'].value);
		SAttr(pElement, 'cellPadding', pTaskbar.arElements['cellpadding'].value);
		SAttr(pElement, 'cellSpacing', pTaskbar.arElements['cellspacing'].value);
	};

	pTaskbar.arElements['height'].onchange = fChange;
	pTaskbar.arElements['width'].onchange = fChange;
	pTaskbar.arElements['border'].onchange = fChange;
	pTaskbar.arElements['cellpadding'].onchange = fChange;
	pTaskbar.arElements['cellspacing'].onchange = fChange;
	pTaskbar.arElements['bgcolor'].OnChange = function (color) {pElement.bgColor = color;};
	pTaskbar.arElements['talign'].OnChange = function (alH) {pElement.align = alH;};
	pTaskbar.arElements['cssclass'].OnChange = function (className) {pElement.className=className.value;};
}

pPropertybarHandlers['td'] = function (bNew, pTaskbar, pElement)
{
	if(bNew)
	{
		pTaskbar.arElements = [];

		var tProp;
		var arBarHandlersCache = pTaskbar.pMainObj.arBarHandlersCache;
		if(arBarHandlersCache['td'])
		{
			tProp = arBarHandlersCache['td'][0];
			pTaskbar.arElements = arBarHandlersCache['td'][1];
		}
		else
		{
			tProp = pTaskbar.pMainObj.pDocument.createElement("TABLE");
			tProp.className = "bxtaskbarprops";
			tProp.style.width = "100%";
			tProp.cellSpacing = 0;
			tProp.cellPadding = 1;
			var row = tProp.insertRow(-1);

			var cell = row.insertCell(-1); cell.align = 'right';
			oSpan = pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML':BX_MESS.TPropStyle});
			cell.appendChild(oSpan);
			oSpan = null;

			cell = row.insertCell(-1);

			//2
			var pObjTemp = pTaskbar.pMainObj.CreateCustomElement('BXStyleList',
				{
					id: 'tdStyleList',
					width: 200,
					field_size: 80,
					title: '(' + BX_MESS.Style + ')',
					tag_name: 'TD',
					filter: ['TD', 'DEFAULT'],
					disableOnCodeView: true,
					OnChangeElement: function (arSelected) {SAttr(this.pElement, 'className', arSelected["value"]);},
					OnChangeText: function (arSelected)
					{
						var pElement = this.pMainObj.GetSelectedNode(true);
						if(arSelected["value"] == '')
							this.RemoveClass(pElement);
						else
							this.OptimizeSelection(
							{
								nodes: this.pMainObj.WrapSelectionWith("span", {props: {className: arSelected["value"]}}),
								className: arSelected["value"]
							});
					},
					OnSelectionChange: function ()
					{
						var pElement = this.pMainObj.GetSelectedNode();
						if(pElement && pElement.nodeType == 1)
						{
							if(this.prevType != pElement.tagName.toUpperCase())
							{
								this.prevType = pElement.tagName.toUpperCase();
								this.tag_name = pElement.tagName.toUpperCase();
								this.filter = [pElement.tagName.toUpperCase(), 'DEFAULT'];
								this.FillList();
							}

							this.pElement = pElement;
							this.OnChange = this.OnChangeElement;
							this.SelectByVal(this.pElement.className);
						}
						else
						{
							this.OnChange = this.OnChangeText;
							if(this.prevType != 'DEFAULT')
							{
								this.prevType = 'DEFAULT';
								this.filter = ['DEFAULT'];
								this.tag_name = '';
								this.FillList();
							}

							this.SelectByVal();
							if(pElement)
							{
								if(BX.browser.IsIE() && pElement.parentElement && (pElement = pElement.parentElement()))
									pElement = pElement.childNodes[0];

								while(pElement = pElement.parentNode)
								{
									if(pElement.nodeType == 1 && pElement.tagName.toUpperCase() == 'TABLE')
										break;
									if(pElement.nodeType == 1 && pElement.className)
									{
										if(pElement.tagName.toUpperCase() != 'SPAN' && pElement.tagName.toUpperCase() != 'FONT')
											break;
										this.SelectByVal(pElement.className);
										break;
									}
								}
							}
						}
					}
				});
			pTaskbar.arElements['cssclass'] = pObjTemp;
			cell.appendChild(pObjTemp.pWnd);

			cell = row.insertCell(-1); cell.align = 'right';
			var oSpan = pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML':BX_MESS.TPropSize});
			cell.appendChild(oSpan);
			oSpan = null;

			cell = row.insertCell(-1);
			var oInput = pTaskbar.pMainObj.CreateElement("INPUT", {'size':'5', 'title': BX_MESS.TPropW, 'type': 'text'});
			pTaskbar.arElements['width_val'] = cell.appendChild(oInput);
			oInput = null;
			var oSpan = pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML':'x'});
			cell.appendChild(oSpan);
			oSpan = null;
			var oInput = pTaskbar.pMainObj.CreateElement("INPUT", {'size':'5', 'title': BX_MESS.TPropH, 'type': 'text'});
			pTaskbar.arElements['height_val'] = cell.appendChild(oInput);
			oInput = null;

			row = tProp.insertRow(-1);
			cell = row.insertCell(-1); cell.align = 'right';
			var oSpan = pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML':BX_MESS.TPropAlign});
			cell.appendChild(oSpan);
			oSpan = null;

			cell = row.insertCell(-1);
			pObjTemp = pTaskbar.pMainObj.CreateCustomElement('BXTAlignPicker');
			pTaskbar.arElements['talign'] = pObjTemp;
			cell.appendChild(pObjTemp.pWnd);
			pObjTemp = null;

			cell = row.insertCell(-1); cell.align = 'right';
			var oSpan = pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML':BX_MESS.TPropBG});
			cell.appendChild(oSpan);
			oSpan = null;

			cell = row.insertCell(-1);
			pObjTemp = pTaskbar.pMainObj.CreateCustomElement('BXEdColorPicker', {'with_input': true});
			pTaskbar.arElements['bgcolor'] = pObjTemp;
			cell.appendChild(pObjTemp.pWnd);
			pObjTemp = null;

			row = tProp.insertRow(-1);
			cell = row.insertCell(-1); cell.align = 'right';
			var oSpan = pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML': BX_MESS.TPropNoWrap+':'});
			cell.appendChild(oSpan);
			oSpan = null;

			cell = row.insertCell(-1);
			var oInput = pTaskbar.pMainObj.CreateElement("INPUT", {'title': BX_MESS.TPropNoWrap, 'type': 'checkbox'});
			pTaskbar.arElements['nowrap'] = cell.appendChild(oInput);
			oInput = null;

			arBarHandlersCache['td'] = [tProp, pTaskbar.arElements];
		}
		tProp.id = 'tProp_td_leak';
		pTaskbar.pCellProps.appendChild(tProp);

		pObjTemp = null;
		cell = null;
		row = null
		tProp = null;
	}

	pTaskbar.arElements['width_val'].value = pElement.width;
	pTaskbar.arElements['height_val'].value = pElement.height;
	pTaskbar.arElements['nowrap'].checked = pElement.noWrap;
	pTaskbar.arElements['bgcolor'].SetValue(pElement.bgColor);
	pTaskbar.arElements['talign'].SetValue(pElement.align, pElement.vAlign);
	pTaskbar.arElements['cssclass'].SelectByVal(pElement.className);

	var fChange = function ()
	{
		pElement.width = pTaskbar.arElements['width_val'].value;
		pElement.height = pTaskbar.arElements['height_val'].value;
		pElement.noWrap = pTaskbar.arElements['nowrap'].checked;
	};

	pTaskbar.arElements['height_val'].onchange = fChange;
	pTaskbar.arElements['width_val'].onchange = fChange;
	pTaskbar.arElements['nowrap'].onclick = fChange;
	pTaskbar.arElements['bgcolor'].OnChange = function (color) {pElement.bgColor = color;};
	pTaskbar.arElements['talign'].OnChange = function (alH, alV) {pElement.align = alH; pElement.vAlign = alV;};
	pTaskbar.arElements['cssclass'].OnChange = function (className) {pElement.className = className.value;};
}

pPropertybarHandlers['a'] = function (bNew, pTaskbar, pElement)
{
	var tProp, row, cell;

	if(bNew)
	{
		pTaskbar.arElements = [];
		var arBarHandlersCache = pTaskbar.pMainObj.arBarHandlersCache;
		if(arBarHandlersCache['a'])
		{
			tProp = arBarHandlersCache['a'][0];
			pTaskbar.arElements = arBarHandlersCache['a'][1];
		}
		else
		{
			tProp = BX.create('TABLE', {props: {className : "bxtaskbarprops"}});
			row = tProp.insertRow(-1);

			// Url
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_a_url" class="bxpr-main">' + BX_MESS.TPropURL + ':</label>'});
			pTaskbar.arElements.href = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {size: '40', title: BX_MESS.TPropURL, type: 'text', id: "bxp_a_url"}}));

			// Target
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_a_target">' + BX_MESS.TPropTarget + ':</label>'});
			pTaskbar.arElements.target = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("SELECT", {props: {title: BX_MESS.TPropTarget, id: "bxp_a_target"}}));
			var arOpt = [
				['', '- ' + BX_MESS.NoVal + ' -'],
				['_blank', BX_MESS.TPropTargetBlank],
				['_parent', BX_MESS.TPropTargetParent],
				['_self', BX_MESS.TPropTargetSelf],
				['_top', BX_MESS.TPropTargetTop]
			], i, l = arOpt.length;

			for(i = 0; i < l; i++)
				pTaskbar.arElements.target.options.add(new Option(arOpt[i][1], arOpt[i][0], false, false));

			row = tProp.insertRow(-1);
			// Title
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_a_title" class="bxpr-main">' + BX_MESS.TPropTitle + ':</label>'});
			pTaskbar.arElements.title = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {size: '40', type: 'text', title: BX_MESS.TPropTitle, id: "bxp_a_title"}}));

			// Class
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label>' + BX_MESS.TPropStyle + '</label>'});
			pTaskbar.arElements.cssclass = pTaskbar.pMainObj.CreateCustomElement('BXStyleList',
			{
				id: 'linkStyleList',
				width: 200,
				field_size: 120,
				title: '(' + BX_MESS.Style + ')',
				tag_name: 'A',
				filter: ['A', 'DEFAULT'],
				disableOnCodeView: true,
				OnChange: function (arSelected)
				{
					SAttr(this.pElement, 'className', arSelected["value"]);
				}
			});
			BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(pTaskbar.arElements.cssclass.pWnd);

			row = tProp.insertRow(-1);
			// Noindex
			pTaskbar.arElements.noindex = BX.adjust(row.insertCell(-1), {props: {align: 'right'}}).appendChild(BX.create("INPUT", {props: {type: 'checkbox', title: BX_MESS.LinkNoindex, id: "bxp_a_noindex"}}));
			BX.adjust(row.insertCell(-1), {props: {align: 'left'}, html: '<label for="bxp_a_noindex">' + BX_MESS.LinkNoindex + '</label>'});

			// Id
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_a_id">ID:</label>'});
			pTaskbar.arElements.id = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {type: 'text', title: BX_MESS.TPropTitle, id: "bxp_a_id"}}));

			row = tProp.insertRow(-1);
			row.insertCell(-1);
			row.insertCell(-1);
			// Rel
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_a_rel">' + BX_MESS.Rel + ':</label>'});
			pTaskbar.arElements.rel = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {type: 'text', title: BX_MESS.Rel, id: "bxp_a_rel"}}));

			arBarHandlersCache['a'] = [tProp, pTaskbar.arElements];
		}

		pTaskbar.pCellProps.appendChild(tProp);
	}

	var oTag = pTaskbar.pMainObj.GetBxTag(pElement);
	if (oTag.tag != 'a' || !oTag.params)
		return;

	pTaskbar.arElements.href.value = oTag.params.href || '';
	pTaskbar.arElements.target.value = oTag.params.target || '';
	pTaskbar.arElements.title.value = oTag.params.title || '';
	pTaskbar.arElements.id.value = oTag.params.id || '';
	pTaskbar.arElements.noindex.checked = !!oTag.params.noindex;
	if (oTag.params.noindex)
	{
		oTag.params.rel = "nofollow";
		pTaskbar.arElements.rel.disabled = true;
	}
	else
	{
		pTaskbar.arElements.rel.disabled = false;
	}
	pTaskbar.arElements.rel.value = oTag.params.rel || '';

	pTaskbar.arElements.cssclass.pElement = pElement;
	setTimeout(function()
	{
		//pTaskbar.arElements.cssclass.SelectByVal(oTag.params['class'], true);
		pTaskbar.arElements.cssclass.SelectByVal(pElement.className || "", true);
	}, 10);

	var arEls = ['href', 'title', 'id', 'rel', 'target'];

	pTaskbar.arElements.href.onchange =
	pTaskbar.arElements.title.onchange =
	pTaskbar.arElements.id.onchange =
	pTaskbar.arElements.rel.onchange =
	pTaskbar.arElements.noindex.onclick =
	pTaskbar.arElements.target.onchange = function ()
	{
		oTag.params.href = pTaskbar.arElements.href.value;
		oTag.params.title = pTaskbar.arElements.title.value;
		oTag.params.id = pTaskbar.arElements.id.value;
		oTag.params.target = pTaskbar.arElements.target.value;
		oTag.params.noindex = !!pTaskbar.arElements.noindex.checked;
		if (oTag.params.noindex)
		{
			pTaskbar.arElements.rel.value = "nofollow";
			pTaskbar.arElements.rel.disabled = true;
		}
		else
		{
			if (pTaskbar.arElements.rel.value == "nofollow" && this != pTaskbar.arElements.rel)
				pTaskbar.arElements.rel.value = "";
			pTaskbar.arElements.rel.disabled = false;
		}
		oTag.params.rel = pTaskbar.arElements.rel.value;

		for (i = 0; i < l; i++)
			if (!pTaskbar.pMainObj.pParser.isPhpAttribute(oTag.params[arEls[i]]))
				SAttr(pElement, arEls[i], oTag.params[arEls[i]]);

		pTaskbar.pMainObj.SetBxTag(pElement, oTag);
	};
};

pPropertybarHandlers['anchor'] = function (bNew, pTaskbar, pElement)
{
	if(bNew)
	{
		pTaskbar.arElements = [];
		var tProp;
		var arBarHandlersCache = pTaskbar.pMainObj.arBarHandlersCache;
		if(arBarHandlersCache['anchor'])
		{
			tProp = arBarHandlersCache['anchor'][0];
			pTaskbar.arElements = arBarHandlersCache['anchor'][1];
		}
		else
		{
			tProp = pTaskbar.pMainObj.CreateElement("TABLE");
			tProp.className = "bxtaskbarprops";
			tProp.style.width = "100%";
			tProp.cellSpacing = 0;
			tProp.cellPadding = 1;
			var row, cell;

			row = tProp.insertRow(-1); cell = row.insertCell(-1); cell.align = 'right'; cell.width="50%";
			cell.appendChild(pTaskbar.pMainObj.CreateElement("SPAN", {'innerHTML':BX_MESS.TPropName}));

			cell = row.insertCell(-1); cell.width="50%";
			pTaskbar.arElements['name'] = cell.appendChild(pTaskbar.pMainObj.CreateElement("INPUT", {'size':'40', 'title': BX_MESS.TPropAnchorName, 'type': 'text'}));

			arBarHandlersCache['anchor'] = [tProp, pTaskbar.arElements];
		}

		pTaskbar.pCellProps.appendChild(tProp);
	}

	var bxTag = pTaskbar.pMainObj.GetBxTag(pElement);
	pTaskbar.arElements['name'].value = pTaskbar.pMainObj.pParser.GetAnchorName(bxTag.params.value);

	pTaskbar.arElements['name'].onchange = function ()
	{
		var bxTag = pTaskbar.pMainObj.GetBxTag(pElement);
		bxTag.params.value = pTaskbar.pMainObj.pParser.GetAnchorName(bxTag.params.value, pTaskbar.arElements.name.value);
		pTaskbar.pMainObj.SetBxTag(false, bxTag);
	};
};

pPropertybarHandlers['img'] = function (bNew, pTaskbar, pElement)
{
	var tProp, row, cell;
	if(bNew)
	{
		pTaskbar.arElements = [];
		var arBarHandlersCache = pTaskbar.pMainObj.arBarHandlersCache;
		var arBarHandlersCache = [];

		if(arBarHandlersCache['img'])
		{
			tProp = arBarHandlersCache['img'][0];
			pTaskbar.arElements = arBarHandlersCache['img'][1];
		}
		else
		{
			tProp = BX.create('TABLE', {props: {className : "bxtaskbarprops"}});
			row = tProp.insertRow(-1);

			// Src
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_img_src" class="bxpr-main">'+BX_MESS.TPropImgPath+'</label>'});
			pTaskbar.arElements.src = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {size: '40', title: BX_MESS.TPropImgPath2, type: 'text', id: "bxp_img_src"}}));

			// hspace
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_img_hspace">' + BX_MESS.TPropImgHSpace + '</label>'});

			pTaskbar.arElements.hspace = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {size: '6', title: BX_MESS.TPropImgHSpace, type: 'text', id: "bxp_img_hspace"}}));

			row = tProp.insertRow(-1);
			// Width and height
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_img_width" class="bxpr-main">' + BX_MESS.TPropSize + '</label>'});
			var r = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("TABLE", {props: {className: "bx-sp-props-tbl"}})).insertRow(-1);
			var cell1 = r.insertCell(-1);
			pTaskbar.arElements.width = cell1.appendChild(BX.create("INPUT", {props: {size: '5', title: BX_MESS.TPropW, type: 'text', id: "bxp_img_width"}}));
			cell1.appendChild(BX.create("SPAN", {text : 'x', style: {margin: "0 3px"}}));
			pTaskbar.arElements.height = cell1.appendChild(BX.create("INPUT", {props: {size: '5', title: BX_MESS.TPropH, type: 'text', id: "bxp_img_height"}}));

			pTaskbar.arElements.saveProp = r.insertCell(-1).appendChild(BX.create("INPUT", {props: {title: BX_MESS.TPropW, type: 'checkbox', id: "bxp_img_save_prop", checked: true}, style: {marginLeft: "10px"}}));

			r.insertCell(-1).appendChild(BX.create("LABEL", {text: BX_MESS.SaveProp})).setAttribute("for", "bxp_img_save_prop");

			// Vspace
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_img_vspace">' + BX_MESS.TPropImgVSpace + '</label>'});
			pTaskbar.arElements.vspace = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {size: '6', title: BX_MESS.TPropImgVSpace, type: 'text', id: "bxp_img_vspace"}}));

			row = tProp.insertRow(-1);
			// Title
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_img_title" class="bxpr-main">' + BX_MESS.TPropImgTitle + ':</label>'});
			pTaskbar.arElements.title = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {size: '40', title: BX_MESS.TPropImgTitle, type: 'text', id: "bxp_img_title"}}));

			// Style
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label>' + BX_MESS.TPropStyle + '</label>'});
			pTaskbar.arElements.cssclass = pTaskbar.pMainObj.CreateCustomElement('BXStyleList',
				{
					id: 'imgStyleList',
					width: 200,
					field_size: 120,
					title: '(' + BX_MESS.Style + ')',
					tag_name: 'IMG',
					filter: ['IMG', 'DEFAULT'],
					disableOnCodeView: true,
					OnChange: function(arSelected)
					{
						SAttr(this.pElement, 'className', arSelected["value"]);
					}
				}
			);
			BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(pTaskbar.arElements.cssclass.pWnd);

			row = tProp.insertRow(-1);
			// Alt
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_img_alt">' + BX_MESS.TPropImgAlt + ':</label>'});
			pTaskbar.arElements.alt = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {size: '40', title: BX_MESS.TPropImgAlt, type: 'text', id: "bxp_img_alt"}}));

			// Align
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label>' + BX_MESS.TPropAlign + '</label>'});
			pTaskbar.arElements.talign = pTaskbar.pMainObj.CreateCustomElement('BXTAlignPicker',
				{
					type: 'image',
					OnChange: function (align)
					{
						pElement.align = align;
					}
				}
			);
			BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(pTaskbar.arElements.talign.pWnd);

			row = tProp.insertRow(-1);
			// Border
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_img_border">' + BX_MESS.TPropImgBorder + ':</label>'});
			pTaskbar.arElements.border = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {size: '4', title: BX_MESS.TPropImgBorder, type: 'text', id: "bxp_img_border"}}));

			// Empty cells
			row.insertCell(-1);
			row.insertCell(-1);

			arBarHandlersCache['img'] = [tProp, pTaskbar.arElements];
		}
		pTaskbar.pCellProps.appendChild(tProp);
	}

	var oTag = pTaskbar.pMainObj.GetBxTag(pElement);
	if (oTag.tag != 'img' || !oTag.params)
		return;

	var arEls = ['src', 'alt', 'title', 'hspace', 'vspace', 'border', 'width', 'height'], i, l = arEls.length;

	pTaskbar.arElements.src.value = oTag.params.src || '';
	pTaskbar.arElements.alt.value = oTag.params.alt || '';
	pTaskbar.arElements.title.value = oTag.params.title || '';
	pTaskbar.arElements.hspace.value = oTag.params.hspace || '';
	pTaskbar.arElements.vspace.value = oTag.params.vspace || '';
	pTaskbar.arElements.border.value = oTag.params.border || '';
	pTaskbar.arElements.talign.SetValue(oTag.params.align);

	pTaskbar.arElements.cssclass.pElement = pElement;
	pTaskbar.arElements.cssclass.SelectByVal(pElement.className || "", true);

	var
		w1 = parseInt(pElement.style.width) || parseInt(pElement.width) || parseInt(pElement.offsetWidth),
		h1 = parseInt(pElement.style.height) || parseInt(pElement.height) || parseInt(pElement.offsetHeight);

	pTaskbar.arElements.width.value = w1;
	pTaskbar.arElements.height.value = h1;

	if (w1 && h1)
		pTaskbar.iRatio = w1 / h1;
	else
		pTaskbar.iRatio = 1;

	var fChange = function ()
	{
		oTag.params.src = pTaskbar.arElements.src.value;
		oTag.params.alt = pTaskbar.arElements.alt.value;
		oTag.params.title = pTaskbar.arElements.title.value;
		oTag.params.hspace = pTaskbar.arElements.hspace.value;
		oTag.params.vspace = pTaskbar.arElements.vspace.value;
		oTag.params.border = pTaskbar.arElements.border.value;

		var w = parseInt(pTaskbar.arElements.width.value);
		if (isNaN(w))
		{
			pElement.removeAttribute('width');
			pElement.style.width = "";
		}
		else
		{
			pElement.removeAttribute('width');
			if (parseInt(pElement.style.width) > 0)
				pElement.style.width = w + "px";
			else
				SAttr(pElement, 'width', w);
		}

		var h = parseInt(pTaskbar.arElements.height.value);
		if (isNaN(h))
		{
			pElement.removeAttribute('height');
			pElement.style.height = "";
		}
		else
		{
			pElement.removeAttribute('height');
			if (parseInt(pElement.style.height) > 0)
				pElement.style.height = h + "px";
			else
				SAttr(pElement, 'height', h);
		}

		for (i = 0; i < l; i++)
		{
			if (oTag.params[arEls[i]] && !pTaskbar.pMainObj.pParser.isPhpAttribute(oTag.params[arEls[i]]) && arEls[i] !== 'width' && arEls[i] !== 'height')
				SAttr(pElement, arEls[i], oTag.params[arEls[i]]);
		}

		pTaskbar.pMainObj.SetBxTag(pElement, oTag);
	}

	for (i = 0; i < l; i++)
		if (pTaskbar.arElements[arEls[i]])
			pTaskbar.arElements[arEls[i]].onchange = fChange;

	// Save proportion feature
	pTaskbar.arElements.saveProp.onclick = function()
	{
		if (this.checked)
			pTaskbar.arElements.width.onchange();
	};

	pTaskbar.arElements.width.onchange = function()
	{
		var wval = parseInt(this.value);
		if (isNaN(wval))
			return;
		pTaskbar.arElements.width.value = wval;
		if (pTaskbar.arElements.saveProp.checked && pTaskbar.iRatio)
			pTaskbar.arElements.height.value = Math.round(wval / pTaskbar.iRatio);
		fChange();
	};

	pTaskbar.arElements.height.onchange = function()
	{
		var hval = parseInt(this.value);
		if (isNaN(hval))
			return;

		pTaskbar.arElements.height.value = hval;
		if (pTaskbar.arElements.saveProp.checked)
			pTaskbar.arElements.width.value = parseInt(hval * pTaskbar.iRatio);

		fChange();
	};

	pTaskbar.arElements.cssclass.onchange = function (sel) {pElement.className = sel['value'];};
	pTaskbar.arElements.talign.OnChange = function (align) {pElement.align = align;};
};

pPropertybarHandlers['comments'] =
pPropertybarHandlers['script'] =
pPropertybarHandlers['php'] =
pPropertybarHandlers['code'] = // For .Net
pPropertybarHandlers['aspx_comment'] = // For .Net
pPropertybarHandlers['.net component'] = // For .Net
function (bNew, pTaskbar, pElement)
{
	if(bNew)
	{
		pTaskbar.arElements = {};
		pTaskbar.arElements.text = pTaskbar.pCellProps.appendChild(BX.create("TEXTAREA", {props: {cols: '60'}, style:{width: "100%", height: "120px"}}));

		if (IEplusDoctype)
			pTaskbar.arElements.text.rows = "20";
	}

	var bxTag = pTaskbar.pMainObj.GetBxTag(pElement);

	pTaskbar.arElements.text.value = bxTag.params.value;
	pTaskbar.arElements.text.onchange = function ()
	{
		var bxTag = pTaskbar.pMainObj.GetBxTag(pElement);
		bxTag.params.value = pTaskbar.arElements.text.value;
		pTaskbar.pMainObj.SetBxTag(false, bxTag);
	};
};

pPropertybarHandlers['default'] = function (bNew, pTaskbar, pElement)
{
	if(!bNew)
		return;

	pTaskbar.arElements = [];
	var tProp, row;
	var arBarHandlersCache = pTaskbar.pMainObj.arBarHandlersCache;
	if(arBarHandlersCache['default'])
	{
		tProp = arBarHandlersCache['default'][0];
		pTaskbar.arElements = arBarHandlersCache['default'][1];
	}
	else
	{
		tProp = BX.create('TABLE', {props: {className : "bxtaskbarprops"}});
		row = tProp.insertRow(-1);

		// Style
		BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label>' + BX_MESS.TPropStyle + '</label>'});

		pTaskbar.arElements.cssclass = pTaskbar.pMainObj.CreateCustomElement('BXStyleList',
			{
				id: 'defaultStyleList',
				width: 200,
				field_size: 80,
				title: '(' + BX_MESS.Style + ')',
				filter: ['DEFAULT'],
				disableOnCodeView: true,
				OnChangeElement : function (arSelected)
				{
					SAttr(this.pElement, 'className', arSelected["value"]);
				},
				OnChangeText : function (arSelected)
				{
					var pElement = this.pMainObj.GetSelectedNode(true);
					if(arSelected["value"] == '')
						this.RemoveClass(pElement);
					else
						this.OptimizeSelection(
						{
							nodes: this.pMainObj.WrapSelectionWith("span", {props: {className: arSelected["value"]}}),
							className: arSelected["value"]
						});
				},
				OnSelectionChange: function ()
				{
					var pElement = this.pMainObj.GetSelectedNode();
					if(pElement && pElement.nodeType == 1)
					{
						if(this.prevType != pElement.tagName.toUpperCase())
						{
							this.prevType = pElement.tagName.toUpperCase();
							this.tag_name = pElement.tagName.toUpperCase();
							this.filter = [pElement.tagName.toUpperCase(), 'DEFAULT'];
							this.FillList();
						}

						this.pElement = pElement;
						this.OnChange = this.OnChangeElement;
						this.SelectByVal(this.pElement.className);
					}
					else
					{
						this.OnChange = this.OnChangeText;
						if(this.prevType != 'DEFAULT')
						{
							this.prevType = 'DEFAULT';
							this.filter = ['DEFAULT'];
							this.tag_name = '';
							this.FillList();
						}

						this.SelectByVal();
						if(pElement)
						{
							if(BX.browser.IsIE() && pElement.parentElement && (pElement = pElement.parentElement()))
								pElement = pElement.childNodes[0];

							while(pElement = pElement.parentNode)
							{
								if(pElement.nodeType == 1 && pElement.tagName.toUpperCase() == 'TABLE')
									break;
								if(pElement.nodeType == 1 && pElement.className)
								{
									if(pElement.tagName.toUpperCase() != 'SPAN' && pElement.tagName.toUpperCase() != 'FONT')
										break;
									this.SelectByVal(pElement.className);
									break;
								}
							}
						}
					}
				}
			});
		BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(pTaskbar.arElements.cssclass.pWnd);

		// B I U S
		BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label>' + BX_MESS.TPropBIU + '</label>'});
		cell = BX.adjust(row.insertCell(-1), {props: {align: 'left'}});
		// Bold
		cell.appendChild(pTaskbar.pMainObj.CreateCustomElement(arButtons['Bold'][0], arButtons['Bold'][1]).pWnd);
		// Italic
		cell.appendChild(pTaskbar.pMainObj.CreateCustomElement(arButtons['Italic'][0], arButtons['Italic'][1]).pWnd);
		// Underline
		cell.appendChild(pTaskbar.pMainObj.CreateCustomElement(arButtons['Underline'][0], arButtons['Underline'][1]).pWnd);
		// Strike
		cell.appendChild(pTaskbar.pMainObj.CreateCustomElement(arButtons['Strike'][0], arButtons['Strike'][1]).pWnd);

		row = tProp.insertRow(-1);
		// Font
		BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label>' + BX_MESS.Font + ':</label>'});
		BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(pTaskbar.pMainObj.CreateCustomElement(arButtons['FontName'][0], arButtons['FontName'][1]).pWnd);

		// Font size
		BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label>' + BX_MESS.Size + ':</label>'});
		BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(pTaskbar.pMainObj.CreateCustomElement(arButtons['FontSize'][0], arButtons['FontSize'][1]).pWnd);

		row = tProp.insertRow(-1);
		// Font Color
		BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label>' + BX_MESS.TPropColor + '</label>'});
		BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(pTaskbar.pMainObj.CreateCustomElement(arButtons['ForeColor'][0], arButtons['ForeColor'][1]).pWnd);

		// Background Color
		BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label>' + BX_MESS.TPropBG + '</label>'});
		BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(pTaskbar.pMainObj.CreateCustomElement(arButtons['BackColor'][0], arButtons['BackColor'][1]).pWnd);

		arBarHandlersCache['default'] = [tProp, pTaskbar.arElements];
	}
	pTaskbar.pCellProps.appendChild(tProp);
}

function _DOMHandler(oDocument)
{
	var
		ar = oDocument.getElementsByTagName('DIV'),
		pMainObj = oDocument.pMainObj,
		iLen = ar.length, j;

	for (j = 0; j < iLen; j++)
	{
		try {
			if (ar[j].style.pageBreakAfter == 'always')
			{
				var oImg = BX.adjust(oDocument.createElement("IMG"), {props: {src: image_path + "/break_page.gif"}, style: {height: "4px", width: "100%"}});
				pMainObj.SetBxTag(oImg, {tag: "break_page"});
				ar[j].parentNode.insertBefore(oImg, ar[j]);
				ar[j].parentNode.removeChild(ar[j]);
			}
		}catch(e){continue;}
	}
}
oBXEditorUtils.addDOMHandler(_DOMHandler);

function Flash_Reload(oPreviewCont, src, height, width)
{
	var flash_preview = BX("flash_preview_iframe");
	if (flash_preview)
		flash_preview.parentNode.removeChild(flash_preview);
	oPreviewCont.appendChild(BX.create("IFRAME", {props: {id: "flash_preview_iframe", src: flash_preview_path + "?path=" + BX.util.urlencode(src) + "&width=" + width + "px&height=" + height + "px"}, style: {width: "97%", height: "97%"}}));
}

pPropertybarHandlers['flash'] = function (bNew, pTaskbar, pElement)
{
	var tProp, row, cell, r, tProp1, arOpt;

	if(bNew)
	{
		pTaskbar.arElements = [];
		var arBarHandlersCache = pTaskbar.pMainObj.arBarHandlersCache;

		if(arBarHandlersCache['flash'])
		{
			var tProp = arBarHandlersCache['flash'][0];
			pTaskbar.arElements = arBarHandlersCache['flash'][1];
			pTaskbar.prCell = arBarHandlersCache['flash'][2];
		}
		else
		{
			tProp = BX.create('TABLE', {props: {className : "bxtaskbarprops"}});
			row = tProp.insertRow(-1);

			pTaskbar.prCell = BX.adjust(row.insertCell(-1), {props: {className: 'bxed-flash-prop'}});
			tProp1 = row.insertCell(-1).appendChild(BX.create('TABLE'));

			// Path
			row = tProp1.insertRow(-1);
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_swf_path" class="bxpr-main">' + BX_MESS.PATH2SWF + ':</label>'});
			pTaskbar.arElements.src = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {type: 'text', title: BX_MESS.PATH2SWF, id: "bxp_swf_path", size: '50'}}));

			// Width & Height
			row = tProp1.insertRow(-1);
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_swf_width" class="bxpr-main">' + BX_MESS.TPropSize + '</label>'});
			var r = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("TABLE", {props: {className: "bx-sp-props-tbl"}})).insertRow(-1);
			var cell1 = r.insertCell(-1);
			pTaskbar.arElements.width = cell1.appendChild(BX.create("INPUT", {props: {size: '5', title: BX_MESS.TPropW, type: 'text', id: "bxp_swf_width"}}));
			cell1.appendChild(BX.create("SPAN", {text : 'x', style: {margin: "0 3px"}}));
			pTaskbar.arElements.height = cell1.appendChild(BX.create("INPUT", {props: {size: '5', title: BX_MESS.TPropH, type: 'text', id: "bxp_swf_height"}}));
			//pTaskbar.arElements.saveProp = r.insertCell(-1).appendChild(BX.create("INPUT", {props: {title: BX_MESS.TPropW, type: 'checkbox', id: "bxp_swf_save_prop"}, style: {marginLeft: "10px"}}));
			//r.insertCell(-1).appendChild(BX.create("LABEL", {text: BX_MESS.SaveProp})).setAttribute("for", "bxp_img_save_prop");

			// Id
			row = tProp1.insertRow(-1);
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_swf_id">' + BX_MESS.SWF_ID + ':</label>'});
			pTaskbar.arElements.id = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {type: 'text', title: BX_MESS.SWF_ID, id: "bxp_swf_id", size: '50'}}));

			// Title
			row = tProp1.insertRow(-1);
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_swf_title">' + BX_MESS.SWF_TITLE + ':</label>'});
			pTaskbar.arElements.title = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {type: 'text', title: BX_MESS.SWF_TITLE, id: "bxp_swf_title", size: '50'}}));

			// Class
			row = tProp1.insertRow(-1);
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_swf_className">' + BX_MESS.SWF_CLASSNAME + ':</label>'});
			pTaskbar.arElements.className = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {type: 'text', title: BX_MESS.SWF_CLASSNAME, id: "bxp_swf_className", size: '50'}}));

			// Style
			row = tProp1.insertRow(-1);
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_swf_style">' + BX_MESS.TPropStyle + ':</label>'});
			pTaskbar.arElements.style = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("INPUT", {props: {type: 'text', title: BX_MESS.TPropStyle, id: "bxp_swf_style", size: '50'}}));

			// Quality
			row = tProp1.insertRow(-1);
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_swf_quality">' + BX_MESS.SWF_QUALITY + ':</label>'});
			pTaskbar.arElements.quality = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("SELECT", {props: {title: BX_MESS.SWF_QUALITY, id: "bxp_swf_quality"}}));

			arOpt = [
				['', '- ' + BX_MESS.NoVal + ' -'],
				['low', 'low'],
				['medium', 'medium'],
				['high', 'high'],
				['autolow', 'autolow'],
				['autohigh', 'autohigh'],
				['best', 'best']
			], i, l = arOpt.length;

			for(i = 0; i < l; i++)
				pTaskbar.arElements.quality.options.add(new Option(arOpt[i][1], arOpt[i][0], false, false));

			// WMode
			row = tProp1.insertRow(-1);
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_swf_wmode">' + BX_MESS.SWF_WMODE + ':</label>'});
			pTaskbar.arElements.wmode = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("SELECT", {props: {title: BX_MESS.SWF_WMODE, id: "bxp_swf_wmode"}}));

			arOpt = [
				['', '- ' + BX_MESS.NoVal + ' -'],
				['window', 'window'],
				['opaque', 'opaque'],
				['transparent', 'transparent']
			], i, l = arOpt.length;

			for(i = 0; i < l; i++)
				pTaskbar.arElements.wmode.options.add(new Option(arOpt[i][1], arOpt[i][0], false, false));

			// Scale
			row = tProp1.insertRow(-1);
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_swf_scale">' + BX_MESS.SWF_SCALE + ':</label>'});
			pTaskbar.arElements.scale = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("SELECT", {props: {title: BX_MESS.SWF_SCALE, id: "bxp_swf_scale"}}));

			arOpt = [
				['', '- ' + BX_MESS.NoVal + ' -'],
				['showall', 'showall'],
				['noborder', 'noborder'],
				['exactfit', 'exactfit']
			], i, l = arOpt.length;

			for(i = 0; i < l; i++)
				pTaskbar.arElements.scale.options.add(new Option(arOpt[i][1], arOpt[i][0], false, false));

			// Salign
			row = tProp1.insertRow(-1);
			BX.adjust(row.insertCell(-1), {props: {align: 'right'}, html: '<label for="bxp_swf_salign">' + BX_MESS.SWF_SALIGN + ':</label>'});
			pTaskbar.arElements.salign = BX.adjust(row.insertCell(-1), {props: {align: 'left'}}).appendChild(BX.create("SELECT", {props: {title: BX_MESS.SWF_SALIGN, id: "bxp_swf_salign"}}));

			arOpt = [
				['', '- ' + BX_MESS.NoVal + ' -'],
				['left', 'left'],
				['top', 'top'],
				['right', 'right'],
				['bottom', 'bottom'],
				['top left', 'top left'],
				['top right', 'top right'],
				['bottom left', 'bottom left'],
				['bottom right', 'bottom right']
			], i, l = arOpt.length;

			for(i = 0; i < l; i++)
				pTaskbar.arElements.salign.options.add(new Option(arOpt[i][1], arOpt[i][0], false, false));

			// Autoplay
			row = tProp1.insertRow(-1);
			pTaskbar.arElements.autoplay = BX.adjust(row.insertCell(-1), {props: {align: 'right'}}).appendChild(BX.create("INPUT", {props: {type: 'checkbox', title: BX_MESS.SWF_AUTOPLAY, id: "bxp_swf_autoplay"}}));
			BX.adjust(row.insertCell(-1), {props: {align: 'left'}, html: '<label for="bxp_swf_autoplay">' + BX_MESS.SWF_AUTOPLAY + '</label>'});

			// Loop
			row = tProp1.insertRow(-1);
			pTaskbar.arElements.loop = BX.adjust(row.insertCell(-1), {props: {align: 'right'}}).appendChild(BX.create("INPUT", {props: {type: 'checkbox', title: BX_MESS.SWF_LOOP, id: "bxp_swf_loop"}}));
			BX.adjust(row.insertCell(-1), {props: {align: 'left'}, html: '<label for="bxp_swf_loop">' + BX_MESS.SWF_LOOP + '</label>'});

			// Showmenu
			row = tProp1.insertRow(-1);
			pTaskbar.arElements.showmenu = BX.adjust(row.insertCell(-1), {props: {align: 'right'}}).appendChild(BX.create("INPUT", {props: {type: 'checkbox', title: BX_MESS.SWF_SHOW_MENU, id: "bxp_swf_showmenu"}}));
			BX.adjust(row.insertCell(-1), {props: {align: 'left'}, html: '<label for="bxp_swf_showmenu">' + BX_MESS.SWF_SHOW_MENU + '</label>'});

			arBarHandlersCache['flash'] = [tProp, pTaskbar.arElements, pTaskbar.prCell];
		}
		pTaskbar.pCellProps.appendChild(tProp);
	}

	var oTag = pTaskbar.pMainObj.GetBxTag(pElement);
	if (oTag.tag != 'flash' || !oTag.params)
		return;

	var k, i, el;
	for (i in oTag.params)
	{
		k = (i.toLowerCase() == 'class') ? 'className' : i;
		if (!pTaskbar.arElements[k])
			continue

		if (pTaskbar.arElements[k].type.toLowerCase() == 'checkbox' && oTag.params[i])
			pTaskbar.arElements[k].checked = true;
		else
			pTaskbar.arElements[k].value = oTag.params[i];
	}
	pTaskbar.arElements.width.value = (parseInt(pElement.width) || parseInt(pElement.style.width));
	pTaskbar.arElements.height.value = (parseInt(pElement.height) || parseInt(pElement.style.height));

	Flash_Reload(pTaskbar.prCell, oTag.params.src, 250, 250);

	var fChange = function()
	{
		var
			i = this.id.substr('bxp_swf_'.length),
			k = (i.toLowerCase() == 'classname') ? 'class' : i;

		if (pTaskbar.arElements[i].type.toLowerCase() == 'checkbox')
		{
			oTag.params[k] = pTaskbar.arElements[i].checked || null;
		}
		else
		{
			if (k == 'width' || k == 'height')
			{
				pElement.style.width = (parseInt(pTaskbar.arElements.width.value) || 50) + 'px';
				pElement.style.height = (parseInt(pTaskbar.arElements.height.value) || 25) + 'px';
			}
			else if(k == 'src' && pTaskbar.arElements.src.value)
			{
				Flash_Reload(pTaskbar.prCell, pTaskbar.arElements.src.value, 250, 250);
			}
			oTag.params[k] = pTaskbar.arElements[i].value || null;
		}

		pTaskbar.pMainObj.SetBxTag(pElement, oTag);
	};

	for (i in pTaskbar.arElements)
	{
		el = pTaskbar.arElements[i];
		if (el.type.toLowerCase() == 'checkbox')
			el.onclick = fChange;
		else
			el.onchange = fChange;
	}
};

if (!window.lightMode || window._showAllButtons)
{
	oBXEditorUtils.appendButton("page_break", arButtons['page_break'], "standart");
	oBXEditorUtils.appendButton("break_tag", arButtons['break_tag'], "standart");
	oBXEditorUtils.appendButton("insert_flash", arButtons['insert_flash'], "standart");
}

// *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *
// Light mode Toolbars:
if (window.lightMode || window._showAllButtons)
{
	var arGlobalToolbar = [

		/* arButtons['Fullscreen'], */
		arButtons['Settings'],
		arButtons['Cut'], arButtons['Copy'], arButtons['Paste'], arButtons['pasteword'], arButtons['pastetext'], arButtons['SelectAll'],
		arButtons['Undo'], arButtons['Redo'],
		arButtons['borders'], 'separator',
		arButtons['table'], arButtons['anchor'], arButtons['CreateLink'], arButtons['deletelink'], arButtons['image'],
		arButtons['SpecialChar'],
		arButtons['insert_flash'],
		arButtons['InsertHorizontalRule'], 'separator',
		arButtons['InsertOrderedList'], arButtons['InsertUnorderedList'], 'separator',
		arButtons['Outdent'], arButtons['Indent'], 'separator',
		arButtons['JustifyLeft'], arButtons['JustifyCenter'], arButtons['JustifyRight'], arButtons['JustifyFull'],

		'new_line',

		arButtons['wysiwyg'],
		arButtons['source'],
		arButtons['split'],
		arButtons['Wrap'],

		arButtons['FontStyle'], arButtons['HeadingList'], arButtons['FontName'], arButtons['FontSize'], 'separator',
		arButtons['Bold'], arButtons['Italic'], arButtons['Underline'], arButtons['Strike'], 'separator',
		arButtons['RemoveFormat'], arButtons['Optimize'], 'separator',
		arButtons['BackColor'], arButtons['ForeColor']
	];
}

Anon7 - 2022
AnonSec Team