Your IP : 18.218.240.193
/*
pMainObj - ����� ������ ������ � ���� ��� �����, ������ �� ���������� ����� ������������
pEditorFrame - ����� �� IFRAME �� ���������� �������������
pFrame - ����� �� ������, � ������� ��� �������
pDocument - cc���� �� ����������� ��������
pEditorDocument
pWnd - ����� �� DIV, � ������� ��� ����� �������
arToolbarSet - ������ ����� �� ���������
pToolbar - ����� �� ����� �������
- AddButton
- CheckButton
-
*/
//var x =
function BXHTMLEditor(name)
{
this.arBarHandlersCache = [];
this.name = name;
if(BXEditorLoaded)
this.onLoad();
else
BXEditorRegister(this);
}
var BX_START_EXEC_TIME = new Date().getTime();
BXHTMLEditor.prototype.CreateElement = BXCreateElement;
BXHTMLEditor.prototype.onLoad = function()
{
BX_START_EXEC_TIME = new Date().getTime();
var obj = this;
this.bShowed = true;
this.bDragging = false;
this.bNotSaved = true; //!!!!!false;
var name = this.name;
this.className = 'BXHTMLEditor';
this.arEventHandlers = Array();
this.pDocument = document;
this.bTableBorder = false;
//this.pDocument.pMainObj = this;
this.pWnd = this.pDocument.getElementById(name + '_object');
this.pWnd.pMainObj = this;
this.arToolbarSet = Array();
this.arTaskbarSet = Array();
this.pParser = new BXParser(this);
this.bEditSource = false;
this.arConfig = eval('('+this.pDocument.getElementById(name + '_config').value+')');
if(!this.arConfig["width"])
this.arConfig["width"] = 750;
this.pWnd.style.width = this.arConfig["width"]+"px";
if(!this.arConfig["height"])
this.arConfig["height"] = 500;
this.pWnd.style.height = this.arConfig["height"]+"px";
if(this.arConfig["arToolbars"])
this.arToolbars = this.arConfig["arToolbars"];
else
this.arToolbars = ["standart", "style", "formating", "source", "template"];
var OnSubmit = function()
{
if(obj.bShowed)
obj.SaveContent(true);
}
this.pForm = BXFindParentByTagName(this.pWnd, "FORM");
if(this.pForm)
{
if(this.pForm.addEventListener)
this.pForm.addEventListener("submit", OnSubmit, false);
else
this.pForm.attachEvent("onsubmit", OnSubmit);
}
/*
this.pTempFrame = this.pDocument.getElementById(name + '_progress_object');
//this.pTempFrame.style.width = 780+"px";
//this.pTempFrame.style.height = 510+"px";
this.pTempFrame.style.width = "100%";
this.pTempFrame.style.height = "100%";
*/
var pFrame = this.pDocument.createElement("TABLE");
pFrame.pMainObj = this;
pFrame.cellSpacing = 0; pFrame.cellPadding = 0; pFrame.border = 0;
pFrame.className = "bxedmainframe";
pFrame.style.width = "100%";
pFrame.style.height = "100%";
this.pFrame = this.pWnd.appendChild(pFrame);
var r, c;
r = pFrame.insertRow(-1); r.style.height="0%"; c = r.insertCell(-1); this.arToolbarSet[0] = new BXToolbarSet(c, this, false);
r = pFrame.insertRow(-1); r.style.height="100%"; c = r.insertCell(-1);
//{
var incTable = c.appendChild(this.pDocument.createElement("TABLE")); incTable.cellSpacing = 0; incTable.cellPadding = 0; incTable.border = 0; incTable.style.width = "100%"; incTable.style.height = "100%";
var incRow = incTable.insertRow(-1);
c = incRow.insertCell(-1); c.style.width = "0%"; this.arToolbarSet[1] = new BXToolbarSet(c, this, true);
c = incRow.insertCell(-1); c.style.width = "100%";
var incTable2 = c.appendChild(this.pDocument.createElement("TABLE")); incTable2.cellSpacing = 0; incTable2.cellPadding = 0; incTable2.border = 0; incTable2.style.width = "100%"; incTable2.style.height = "100%";
//{
var incRow2 = incTable2.insertRow(-1); incRow2.style.height = "0%";
//{
var incCell2 = incRow2.insertCell(-1);
incCell2.colSpan = 3;
this.arTaskbarSet[0] = new BXTaskbarSet(incCell2, this, 0);
//}
incRow2 = incTable2.insertRow(-1); incRow2.style.height = "100%";
//{
incCell2 = incRow2.insertCell(-1); incCell2.style.width = "0%"; this.arTaskbarSet[1] = new BXTaskbarSet(incCell2, this, 1);
cEditor = incRow2.insertCell(-1); cEditor.style.width = "100%";
incCell2 = incRow2.insertCell(-1); incCell2.style.width = "0%"; this.arTaskbarSet[2] = new BXTaskbarSet(incCell2, this, 2);
//}
incRow2 = incTable2.insertRow(-1); incRow2.style.height = "0%";
//{
incCell2 = incRow2.insertCell(-1);
incCell2.colSpan = 3;
this.arTaskbarSet[3] = new BXTaskbarSet(incCell2, this, 3);
//}
//}
c = incRow.insertCell(-1); c.style.width = "0%"; this.arToolbarSet[2] = new BXToolbarSet(c, this, true);
//}
r = pFrame.insertRow(-1); r.style.height="0%"; c = r.insertCell(-1); this.arToolbarSet[3] = new BXToolbarSet(c, this, false);
//this.pFrame.style.border = "1px #FF0000 solid";
//return;
//this.pTempFrame.style.display = "none";
/*
cEditor.unselectable = "on";
var pFrameX = cEditor.appendChild(this.CreateElement("IMG", {src: '/images/top_logo.gif'}));
*/
/* ------- html-editor frame -----*/
var ifrm = document.createElement("IFRAME");
ifrm.id = "ed_"+name;
ifrm.setAttribute("src", "about:blank");
//ifrm.style.border = "1px #FF0000 solid";
//ifrm.style.width = "400px";//(BXIsIE()?"100%":"99%");
//ifrm.style.height = "200px";//(BXIsIE()?"100%":"99%");
ifrm.style.width = (BXIsIE()?"100%":"99%");
ifrm.style.height = (BXIsIE()?"100%":"99%");
this.pEditorFrame = cEditor.appendChild(ifrm);
if(this.pEditorFrame.contentDocument)
this.pEditorDocument = this.pEditorFrame.contentDocument;
else
this.pEditorDocument = this.pEditorFrame.contentWindow.document;
/*
this.pEditorDocument.open();
this.pEditorDocument.write('<html><head></head><body id="C"></body></html>');
this.pEditorDocument.close();
*/
//!!this.pEditorDocument.body.innerHTML = '';
/*
if(this.pEditorDocument.body.contentEditable)
this.pEditorDocument.body.contentEditable=true;
*/
this.pEditorWindow = this.pEditorFrame.contentWindow;
this.pEditorDocument.className = "pEditorDocument";
this.pEditorDocument.pMainObj = this;
// --------------------------------
// ------- edit sources frame -----
/*
ifrm = document.createElement("IFRAME");
ifrm.id = "src_"+name;
ifrm.setAttribute("src", "about:blank");
ifrm.style.width = "100%";
ifrm.style.height = "100%";
ifrm.style.display = "none";
this.pSourceFrame = cEditor.appendChild(ifrm);
if(this.pSourceFrame.contentDocument)
this.pSourceDocument = this.pSourceFrame.contentDocument;
else
this.pSourceDocument = this.pSourceFrame.contentWindow.document;
if(BXIsIE())
{
this.pSourceDocument.open();
this.pSourceDocument.write('<html><body style="margin: 0px 0px 0px 2px; background-color: #FFFFFF; font-family: Courier New; font-size: 10pt; "></body></html>');
this.pSourceDocument.close();
}
else
{
this.pSourceDocument.body.innerHTML = '';
this.pSourceDocument.body.style.cssText = "margin: 0px 0px 0px 2px; background-color: #FFFFFF; font-family: Courier New; font-size: 10pt;";
}
if(this.pSourceDocument.body.contentEditable)
this.pSourceDocument.body.contentEditable=true;
this.pSourceWindow = this.pSourceFrame.contentWindow;
this.pSourceDocument.className = "pSourceDocument";
this.pSourceDocument.pMainObj = this;
----------*/
ifrm = this.pDocument.createElement("TEXTAREA");//, {}, {'width': '100%', 'height': '100%', 'display':'none'});
ifrm.style.display = "none";
ifrm.wrap = "OFF";
ifrm.style.width = "100%";
ifrm.style.height = "100%";
ifrm.style.overflow = "auto";
this.pSourceFrame = cEditor.appendChild(ifrm);
this.pSourceFrame.onkeydown = function (e)
{
var tabKeyCode = 9;
var replaceWith = " ";
if(window.event)
{
if(event.keyCode == tabKeyCode)
{
this.selection = document.selection.createRange();
this.selection.text = replaceWith;
event.returnValue = false;
return false;
}
}
else
{
if(e.keyCode == tabKeyCode)
{
var selectionStart = this.selectionStart;
var selectionEnd = this.selectionEnd;
var scrollTop = this.scrollTop;
var scrollLeft = this.scrollLeft;
this.value = this.value.substring(0, selectionStart)+ replaceWith + this.value.substring(selectionEnd);
this.focus();
this.setSelectionRange(selectionStart + (selectionStart != selectionEnd?0:1), selectionStart + replaceWith.length);
this.scrollTop = scrollTop;
this.scrollLeft = scrollLeft;
return false;
}
}
}
pBXEventDispatcher.__Add(this);
BXHTMLEditor.prototype.onDragDrop = function (e)
{
if(this.nLastDragNDropComponent && this.nLastDragNDropComponent>0)
{
var obj = this;
setTimeout(function ()
{
var pComponent = obj.pEditorDocument.getElementById(obj.nLastDragNDropComponent);
if(obj.pEditorWindow.getSelection)
obj.pEditorWindow.getSelection().selectAllChildren(pComponent);
obj.onClick(e);
//alert(pComponent);
}, 10
);
}
}
BXHTMLEditor.prototype.__ShowTableBorder = function (pTable, bShow)
{
var arTableBorderStyles = ["border", "borderBottom", "borderBottomColor", "borderBottomStyle", "borderBottomWidth", "borderCollapse", "borderColor", "borderLeft", "borderLeftColor", "borderLeftStyle", "borderLeftWidth", "borderRight", "borderRightColor", "borderRightStyle", "borderRightWidth", "borderStyle", "borderTop", "borderTopColor", "borderTopStyle", "borderTopWidth", "borderWidth"]
if(pTable.border == "0")
{
if(bShow)
{
pTable.setAttribute("__bxborderCollapse", pTable.style.borderCollapse);
pTable.style.borderCollapse = "collapse";
}
else
{
pTable.style.borderCollapse = pTable.getAttribute("__bxborderCollapse");
pTable.removeAttribute("__bxborderCollapse");
}
var pCell, arCells = pTable.getElementsByTagName("TD");
for(var j=0; j<arCells.length; j++)
{
pCell = arCells[j];
if(bShow)
{
if(!pCell.getAttribute("__bxborder"))
{
pCell.setAttribute("__bxborder", BXSerializeAttr(pCell.style, arTableBorderStyles));
pCell.style.border = "1px #ACACAC dashed";
}
}
else
{
if(pCell.getAttribute("__bxborder"))
{
pCell.style.borderWidth = "";
pCell.style.borderColor = "";
pCell.style.borderStyle = "";
BXUnSerializeAttr(pCell.getAttribute("__bxborder"), pCell.style, arTableBorderStyles);
pCell.removeAttribute("__bxborder");
}
}
}
}
}
BXHTMLEditor.prototype.Show = function (flag)
{
this.bShowed = flag;
if(flag && this.pWnd.style.display=='none')
{
this.pWnd.style.display='block';
}
else if(!flag && this.pWnd.style.display!='none')
this.pWnd.style.display='none';
}
BXHTMLEditor.prototype.ShowTableBorder = function (bShow)
{
if(this.bTableBorder == bShow)
return false;
this.bTableBorder = bShow;
var arTables = this.pEditorDocument.getElementsByTagName("TABLE");
for(var i=0; i<arTables.length; i++)
this.__ShowTableBorder(arTables[i], bShow);
return true;
}
BXHTMLEditor.prototype.onClick = function (e)
{
if(this.pOnChangeTimer)
clearTimeout(this.pOnChangeTimer);
var obj = this;
this.pOnChangeTimer = setTimeout(function (){obj.OnEvent("OnSelectionChange");}, 400);
//this.OnEvent("OnSelectionChange");
}
//
this.pSourceFrame.onblur = function (e)
{
obj.pEditorFrame.onfocus(e);
}
this.pSourceFrame.onfocus = function (e)
{
if(obj.bEditSource)
return;
obj.bEditSource = true;
if(obj.sEditorMode=='split')
{
obj.SetCodeEditorContent(obj.GetEditorContent(true, true));
obj.sEditorSplitMode = 'code';
obj.OnEvent("OnChangeView", [this.sEditorMode, this.sEditorSplitMode]);
}
}
this.pEditorFrame.onfocus = function (e)
{
if(!obj.bEditSource)
return;
obj.bEditSource = false;
if(obj.sEditorMode=='split')
{
obj.SetEditorContent(obj.GetCodeEditorContent());
obj.sEditorSplitMode = 'html';
obj.OnEvent("OnChangeView", [this.sEditorMode, this.sEditorSplitMode]);
}
}
this.value = this.pDocument.getElementById(name).value+'';
BXStyleParser.Create();
this.oStyles = new BXStyles(this);
/*
if(this.arConfig["styles"])
this.oStyles.Parse(this.arConfig["styles"]);
*/
if(this.arConfig["TEMPLATE"])
this.SetTemplate(this.arConfig["TEMPLATE"]["ID"], this.arConfig["TEMPLATE"]);
var el;
// �������� ��� ������ � ������ � ��
for(var sToolBarId in arToolbars)
{
if(BXSearchInd(this.arToolbars, sToolBarId)<0)
continue;
var pToolbar = new BXToolbar(this, arToolbars[sToolBarId][0]);
for(var i=0; i<arToolbars[sToolBarId][1].length; i++)
{
var arButton = arToolbars[sToolBarId][1][i];
if(arButton!='separator')
{
el = this.CreateCustomElement(arButton[0], arButton[1]);
pToolbar.AddButton(el);
}
else
{
el = this.CreateCustomElement('BXButtonSeparator');
pToolbar.AddButton(el);
}
}
if(arDefaultTBPositions[sToolBarId])
this.arToolbarSet[arDefaultTBPositions[sToolBarId][0]].AddToolbar(pToolbar, arDefaultTBPositions[sToolBarId][1], arDefaultTBPositions[sToolBarId][2]);
else
this.arToolbarSet[0].AddToolbar(pToolbar, 100, 0);
}
// �������� ��� �������
pBXEventDispatcher.OnEditorEvent("OnCreate", this);
this.SetView("html");
this.SetFocus();
}
BXHTMLEditor.prototype.SetContent = function(content)
{
this.value = content;
//alert('Set='+this.value);
}
BXHTMLEditor.prototype.GetContent = function()
{
//alert('Get='+this.value);
return this.value.toString()+'';
}
BXHTMLEditor.prototype.PasteAsText = function(text)
{
text = bxhtmlspecialchars(text);
text = text.replace(/\r/g, '');
text = text.replace(/\n/g, '<br/>');
this.insertHTML(text) ;
}
BXHTMLEditor.prototype.PasteWord = function (text, arParams)
{
text = text.replace(/<!--\[.*?\]-->/g, ""); //<!--[.....]--> - <!--[if gte mso 9]>...<![endif]-->
text = text.replace(/<!\[.*?\]>/g, ""); // <! [if !vml]>
text = text.replace(/<\\?\?xml[^>]*>/gi, ""); //<xml...>, </xml...>
//text = text.replace(/<o:p>.*?<\/o:p>/g, " ");
text = text.replace(/<\/?[a-z1-9]+:[^>]*>/gi, ""); //<o:p...>, </o:p>
text = text.replace(/<([a-z1-9]+[^>]*) class=([^ |>]*)(.*?>)/gi, "<$1$3");
text = text.replace(/<([a-z1-9]+[^>]*) [a-z]+:[a-z]+=([^ |>]*)(.*?>)/gi, "<$1$3"); // xmlns:v="urn:schemas-microsoft-com:vml"
// only in tags:
text = text.replace(/mso-[^:]*:"[^"]*";/gi, "");
text = text.replace(/mso-[^;'"]*;*(\n|\r)*/gi, "");
text = text.replace(/\s*margin: 0cm 0cm 0pt\s*;/gi, "");
text = text.replace(/\s*margin: 0cm 0cm 0pt\s*"/gi, "\"");
/*
text = text.replace(/\s*page-break-after[^;]*;/gi, "");
text = text.replace(/\s*page-break-before: [^\s;]+;?"/gi, "\"" ) ;
text = text.replace(/<([a-z][]*?>) style=['"]tab-interval:[^'"]*['"]/gi, "");
http://office.microsoft.com/en-gb/assistance/HA010549981033.aspx
tab-stops
language
text-underline
text-effect
text-line-through
font-color
horiz-align
list-image-1
list-image-2
list-image-3
separator-image
table-border-color-dark
table-border-color-light
vert-align
vnd.ms-excel.numberformat
*/
//html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, "" ) ;
//html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"" ) ;
//html = html.replace( /\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"" ) ;
//html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"" ) ;
//html = html.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" ) ;
//html = html.replace( /\s*tab-stops:[^;"]*;?/gi, "" ) ;
//html = html.replace( /\s*tab-stops:[^"]*/gi, "" ) ;
//if(bIgnoreFont)
//{
// html = html.replace( /\s*face="[^"]*"/gi, "" ) ;
// html = html.replace( /\s*face=[^ >]*/gi, "" ) ;
// html = html.replace( /\s*FONT-FAMILY:[^;"]*;?/gi, "" ) ;
//}
//if ( bRemoveStyles )
// html = html.replace( /<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3" ) ;
//html = html.replace( /\s*style="\s*"/gi, '' ) ;
//html = html.replace( /<SPAN\s*[^>]*>\s* \s*<\/SPAN>/gi, ' ' ) ;
//html = html.replace( /<SPAN\s*[^>]*><\/SPAN>/gi, '' ) ;
// Remove Lang attributes
text = text.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3") ;
// Remove empty tags
text = text.replace( /<SPAN\s*>(.*?)<\/SPAN>/gi, '$1' );
text = text.replace( /<FONT\s*>(.*?)<\/FONT>/gi, '$1' );
text = text.replace( /<([^\s>]+)[^>]*>\s*<\/\1>/g, '' );
text = text.replace( /<([^\s>]+)[^>]*>\s*<\/\1>/g, '' );
text = text.replace( /<([^\s>]+)[^>]*>\s*<\/\1>/g, '' );
this.insertHTML(text);
}
BXHTMLEditor.prototype.LoadContent = function()
{
switch(this.sEditorMode)
{
case 'code':
this.SetCodeEditorContent(this.GetContent());
break;
case 'split':
this.SetCodeEditorContent(this.GetContent())
this.SetEditorContent(this.GetContent())
break;
case 'html':
this.SetEditorContent(this.GetContent());
}
}
BXHTMLEditor.prototype.SaveContent = function(bFull)
{
//alert('this.sEditorMode='+this.sEditorMode);
switch(this.sEditorMode)
{
case 'code':
this.SetContent(this.GetCodeEditorContent());
break;
case 'split':
if(this.sEditorSplitMode == 'code')
this.SetContent(this.GetCodeEditorContent());
else
this.SetContent(this.GetEditorContent(true, true));
break;
case 'html':
this.SetContent(this.GetEditorContent(true, true));
}
if(bFull)
this.pDocument.getElementById(this.name).value = this.value;
//alert('SaveContent='+this.sEditorMode);
}
BXHTMLEditor.prototype.LoadTemplateParams = function(templateID)
{
var sURL = '/bitrix/admin/fileman_get_xml.php?op=sitetemplateparams&lang='+BXLang+'&site='+BXSite+'&templateID='+templateID;
var ob = this.GetData(sURL);
this.SetTemplate(ob["ID"], ob);
}
BXHTMLEditor.prototype.SetTemplate = function (templateID, arTemplateParams)
{
if(this.templateID && this.templateID == templateID)
return;
if(arTemplateParams === false)
return;
if(!arTemplateParams)
{
this.LoadTemplateParams(templateID);
return ;
}
/*
arTemplateParams["ID"] - id
arTemplateParams["NAME"] - name
arTemplateParams["FOLDERS"] - [
{"ID": id, "NAME": "name", "PARENT": parent_folder},
...
]
arTemplateParams["COMPONENTS"] - [
{"PATH": path, "NAME": name, "ICON": icon, "FOLDER": folderID, "FULL_PATH": phisical path},
...
]
arTemplateParams["STYLES"] - styles (string)
arTemplateParams["STYLES_TITLE"] - styles title
*/
this.templateID = arTemplateParams["ID"];
if(this.pTemplateListbox)
this.pTemplateListbox.SelectByVal(this.templateID);
this.arTemplateParams = arTemplateParams;
if(this.pComponentTaskbar)
this.pComponentTaskbar.BuildList();
// ������� ���������
this.SaveContent();
this.LoadContent();
// ������� �����
this.oStyles.Parse(this.arTemplateParams["STYLES"]);
// ������� �����
this.oStyles.SetToDocument(this.pEditorDocument);
this.OnEvent("OnTemplateChanged");
}
BXHTMLEditor.prototype.FindComponentByPath = function (path)
{
var v = this.arTemplateParams["COMPONENTS"];
for(var i=0; i<v.length; i++)
if(v[i]["PATH"] && v[i]["PATH"] == path)
return v[i];
return false;
}
BXHTMLEditor.prototype.SetFocus = function ()
{
try
{
if(this.bEditSource)
{
}
else
{
//!!!this.pEditorWindow.contentWindow.focus();
if(this.pEditorWindow.focus)
this.pEditorWindow.focus();
else
this.pEditorDocument.body.focus();
}
}
catch(e) {}
}
BXHTMLEditor.prototype.insertHTML = function(sValue)
{
this.SetFocus();
if(BXIsIE())
{
var oRng = this.pEditorDocument.selection.createRange();
oRng.pasteHTML(sValue);
oRng.collapse(false);
oRng.select();
}
else
{
try{
this.pEditorWindow.document.execCommand('insertHTML', false, sValue);
}catch(e){};
}
}
BXHTMLEditor.prototype.onContextMenu = function (e)
{
var obj = this;
obj.OnEvent("OnSelectionChange");
if(obj.pEditorWindow.event)
e = obj.pEditorWindow.event;
var arFramePos = GetRealPos(obj.pEditorFrame);
if(e.pageX || e.pageY)
{
e.realX = e.pageX - obj.pEditorDocument.body.scrollLeft;
e.realY = e.pageY - obj.pEditorDocument.body.scrollTop;
}
else if(e.clientX || e.clientY)
{
e.realX = e.clientX;
e.realY = e.clientY;
}
if(arFramePos)
{
e.realX += arFramePos["left"];
e.realY += arFramePos["top"];
}
this.CreateCustomElement("BXContextMenu", {'x':e.realX, 'y':e.realY});
if(e.stopPropagation)
{
e.preventDefault() ;
e.stopPropagation() ;
}
else
{
e.cancelBubble = true;
e.returnValue = false;
}
return false;
}
BXHTMLEditor.prototype.executeCommand = function(commandName, sValue)
{
this.SetFocus();
try{
var res = this.pEditorWindow.document.execCommand(commandName, false, sValue);
}catch(e){};
this.SetFocus();
this.OnEvent("OnSelectionChange");
return res;
}
BXHTMLEditor.prototype.queryCommand = function(commandName)
{
//this.SetFocus();
var sValue = '' ;
try{
if(!this.pEditorDocument.queryCommandEnabled(commandName))
return null;
}catch(e){return null;}
try{
return this.pEditorDocument.queryCommandValue(commandName);
}catch(e) {}
return null;
}
BXHTMLEditor.prototype.queryCommandState = function(commandName)
{
//this.SetFocus();
var sValue = '' ;
try{
if(!this.pEditorDocument.queryCommandEnabled(commandName))
return 'DISABLED';
}catch(e){return 'DISABLED';}
try{
return (this.pEditorDocument.queryCommandState(commandName)?'CHECKED':'ENABLED');
}catch(e) {
return 'ENABLED';
}
return 'DISABLED';
}
BXHTMLEditor.prototype.update = function()
{
}
BXHTMLEditor.prototype.GetEditorContent = function(bOptimized, bFormatted)
{
if(bOptimized || bFormatted)
{
var bBorders = this.bTableBorder;
if(bBorders)
this.ShowTableBorder(false);
this.pParser.Parse();
if(bOptimized)
this.pParser.Optimize();
if(bBorders)
this.ShowTableBorder(true);
sContent = this.pParser.GetHTML(true);
sContent = sContent.replace(/^[\s\S]*?<body.*?>/i, "");
sContent = sContent.replace(/<\/body>[\s\S]*?$/i, "");
sContent = sContent.replace(/<\/html>[\s\S]*?$/i, "");
sContent = sContent.replace(/\xA0/g, " ");
return sContent;//bFormatted);
}
/*
var html = this.pEditorDocument.createRange();
var xxx = this.pEditorDocument;
html.selectNode(this.pEditorWindow.document.body);
html = html.toString();
*/
return this.pEditorDocument.body.innerHTML;
}
BXHTMLEditor.prototype.SavePosition = function()
{
if(this.bEditSource)
{
}
else
{
var tmpid = 'x' + Math.round(Math.random()*1000000) + 'x';
var oRange = this.pEditorDocument.selection.createRange();
var oRangeLeft = oRange.duplicate();
oRangeLeft.collapse(true);
oRangeLeft.pasteHTML("<span id='L"+tmpid+"'/>");
var elLeft = this.pEditorDocument.getElementById('L'+tmpid);
var oRangeRight = oRange.duplicate();
oRangeRight.collapse(false);
oRangeRight.pasteHTML("<span id='R"+tmpid+"'/>");
var elRight = this.pEditorDocument.getElementById('R'+tmpid);
//elRight.parentElement.removeChild(elRight);
//elLeft.parentElement.removeChild(elLeft);
}
}
BXHTMLEditor.prototype.RestorePosition = function()
{
if(this.bEditSource)
{
}
else
{
}
}
BXHTMLEditor.prototype.__FFFocus = function(e)
{
this.removeEventListener("focus", BXHTMLEditor.prototype.__FFFocus, false);
this.pMainObj.pEditorDocument.designMode = "on";
this.pMainObj = null;
}
BXHTMLEditor.prototype.SetEditorContent = function(sContent)
{
//ToDo: ������� ��������� ����� ������ ������ � <html><head>....</head><body>....</body>
sContent = sContent.replace(/^[\s\S]*?<body.*?>/i, "");
sContent = sContent.replace(/<\/body>[\s\S]*?$/i, "");
//����������� ������� � ���� ������, ������� PHP, ������� �� <img>, �������� � ��������
try{this.pEditorDocument.designMode='off';}catch(e){}
this.pEditorDocument.open();
if(this.arConfig["bWithoutPHP"])
this.pEditorDocument.write('<html><head></head><body>'+sContent+'</body></html>');
else
this.pEditorDocument.write('<html><head></head><body>'+this.pParser.ParsePHP(sContent)+'</body></html>');
this.pEditorDocument.close();
if(this.bTableBorder)
{
this.bTableBorder = false; //���� �� ���� �� ������ ShowTableBorder
this.ShowTableBorder(true);
}
//this.pEditorDocument.body.innerHTML = this.pParser.ParsePHP(sContent);
//alert(this.pEditorDocument.body.innerHTML);
//������ ����� �����
//this.pParser.MakeValid();
//������� ��������
//sContent = this.pParser.GetEditorCode();
//sContent = sContent.replace(/^[\s\S]*?<body.*?>/i, "");
//sContent = sContent.replace(/<\/body>[\s\S]*?$/i, "");
//this.pEditorWindow.document.body.innerHTML = sContent;
//��� ����� DOM � ��� ����������� ������������ ���� (����, ...), ����������� PHP ������
//this.pParser.ConvertTags();
if(BXIsIE())
{
this.pEditorDocument.body.contentEditable = true;
}
else
{
try{
this.pEditorDocument.designMode='on';
this.pEditorDocument.execCommand("styleWithCSS", false, true);
}catch(e){
this.pEditorWindow.pMainObj = this;
this.pEditorWindow.addEventListener("focus", BXHTMLEditor.prototype.__FFFocus, false);
}
}
this.oStyles.SetToDocument(this.pEditorDocument);
this.pEditorDocument.className = 'pEditorDocument';
this.pEditorDocument.pMainObj = this;
var obj = this;
pBXEventDispatcher.SetEvents(this.pEditorDocument);
addEvent(this.pEditorDocument, 'contextmenu', function (e){obj.onContextMenu(e);});
addEvent(this.pEditorDocument, 'dragdrop', function (e){obj.onDragDrop(e);});
addEvent(this.pEditorDocument, 'mouseup', function (e){obj.onClick(e);});
addEvent(this.pEditorDocument, 'keyup', function (e){obj.onClick(e);});
addEvent(this.pEditorDocument, 'focus', function (e){obj.onClick(e);});
pBXEventDispatcher.OnEditorEvent("OnSetEditorContent", this);
}
BXHTMLEditor.prototype.WrapNodeWith = function (node)
{
if(node.nodeType == 1)
alert('element:'+node.innerHTML);
else
alert('text:'+node.nodeValue);
}
BXHTMLEditor.prototype.RemoveElements = function (arParentElement, tagName, arAttributes, oRange)
{
var arChildren;
arChildren = arParentElement.children;
if(arChildren)
{
for(var i=0; i<arChildren.length; i++)
{
var elChild = arChildren[i];
//if(elChild.nodeType!=1)
// continue;
this.RemoveElements(elChild, tagName, arAttributes);
if(elChild.tagName.toLowerCase() != tagName.toLowerCase())
continue;
var bEqual = true;
for(var attrName in arAttributes)
{
attrValue = arAttributes[attrName];
switch(attrName.toLowerCase())
{
case 'style':
var styleValue = attrValue.toLowerCase();
var re = /([^:]+):[^;]+/g;
var arr;
while((arr = re.exec(styleValue)) != null)
{
var styleName = RegExp.$1;
alert(elChild.style.cssText.toLowerCase().indexOf(styleName.toLowerCase()) + ':'+elChild.style.cssText.toLowerCase()+', '+styleName.toLowerCase());
if(elChild.style.cssText.toLowerCase().indexOf(styleName.toLowerCase())==-1)
{
bEqual = false;
break;
}
}
break;
case 'class' :
if(elChild.getAttribute('className', 0) != attrValue)
bEqual = false;
break;
default:
if(elChild.getAttribute(attrNalue, 0) != attrValue)
bEqual = false;
}
}
if(bEqual)
{
elChild.insertAdjacentHTML('beforeBegin', elChild.innerHTML);
elChild.parentElement.removeChild(elChild);
}
}
}
}
BXHTMLEditor.prototype.WrapSelectionWith = function (tagName, arAttributes)
{
this.SetFocus();
//this.pParser.Parse(this.getContent);
//return;
var oRange, oSelection;
//oRange = this.pEditorDocument.selection.createRange();
/*
//������ "����" �� ����� ����� �����
var oRangeLeft = oRange.duplicate();
oRangeLeft.collapse(true);
var tmpid = 'x' + Math.round(Math.random()*1000000) + 'x';
oRangeLeft.pasteHTML("<span id='L"+tmpid+"'/>");
var elLeft = this.pEditorDocument.getElementById('L'+tmpid);
//������ "����" �� ����� ������ �����
var oRangeRight = oRange.duplicate();
oRangeRight.collapse(false);
oRangeRight.pasteHTML("<span id='R"+tmpid+"'/>");
var elRight = this.pEditorDocument.getElementById('R'+tmpid);
return;
var elElement = this.pEditorDocument.createElement(tagName);
for(var attr in arAttributes)
{
switch(attr.toLowerCase())
{
case 'style' :
elElement.style.cssText = arAttributes[attr];
break;
case 'class' :
elElement.className = arAttributes[attr];
break;
default:
elElement[attr] = arAttributes[attr];
}
}
*/
if(this.pEditorDocument.selection)
{
var arB, pEl, arNodes, j;
arB = this.pEditorDocument.getElementsByTagName("FONT");
for(var i=arB.length-1; i>=0; i--)
{
if(arB[i].face)
{
arB[i].setAttribute("__bxtemp", arB[i].face);
arB[i].removeAttribute('face');
}
}
//alert('1='+this.pEditorDocument.body.innerHTML);
this.executeCommand("FontName", "bitrixtemp");
//alert('2='+this.pEditorDocument.body.innerHTML);
arB = this.pEditorDocument.getElementsByTagName("FONT");
for(i=arB.length-1; i>=0; i--)
{
if(arB[i].face && arB[i].face=='bitrixtemp')
{
pEl = this.pEditorDocument.createElement(tagName);
for(var attr in arAttributes)
{
switch(attr.toLowerCase())
{
case 'style' :
pEl.style.cssText = arAttributes[attr];
break;
case 'class':
SAttr(pEl, 'className', arAttributes[attr]);
break;
default:
pEl.setAttribute(attr, arAttributes[attr]);
}
}
arNodes = arB[i].childNodes;
while(arNodes.length>0)
pEl.appendChild(arNodes[0]);
arB[i].parentNode.insertBefore(pEl, arB[i]);
arB[i].parentNode.removeChild(arB[i]);
}
}
//alert('3='+this.pEditorDocument.body.innerHTML);
arB = this.pEditorDocument.getElementsByTagName('FONT');
for(i=arB.length-1; i>=0; i--)
{
if(!arB[i].getAttribute("__bxtemp"))
continue;
arB[i].face = arB[i].getAttribute("__bxtemp");
arB[i].removeAttribute('__bxtemp');
}
//alert('Last='+this.pEditorDocument.body.innerHTML);
/*
oRange = this.pEditorDocument.selection.createRange();
var oRangeLeft = oRange.duplicate();
oRangeLeft.collapse(true);
//var tmpid = 'x' + Math.round(Math.random()*1000000) + 'x';
//oRangeLeft.pasteHTML("<span id='L"+tmpid+"'/>");
//var elLeft = this.pEditorDocument.getElementById('L'+tmpid);
var iMovedLeft = - oRangeLeft.moveStart("character", -10000000);
//alert('L:'+iMovedLeft);
//������ "����" �� ����� ������ �����
var oRangeRight = oRange.duplicate();
oRangeRight.collapse(false);
//oRangeRight.pasteHTML("<span id='R"+tmpid+"'/>");
//var elRight = this.pEditorDocument.getElementById('R'+tmpid);
var iMovedRight = - oRangeRight.moveStart("character", -10000000);
//alert(iMovedRight);
elElement.innerHTML = oRange.htmlText;
this.RemoveElements(elElement, tagName, arAttributes, oRange);
//alert('what:'+oRange.htmlText);
//alert(elElement.outerHTML);
//oRange.pasteHTML('');
oRange.pasteHTML(elElement.outerHTML);
this.pParser.MakeValid();
//alert(this.pParser.GetHTML());
this.pEditorDocument.body.innerHTML = this.pParser.GetHTML();
oRange = this.pEditorDocument.selection.createRange();
oRange.moveEnd("character", -10000000);
oRange.moveEnd("character", iMovedRight);
oRange.moveStart("character", iMovedLeft);
oRange.select();
*/
}
else
{
var arB, pEl, arNodes, j, sBoldTag = 'B';
arB = this.pEditorDocument.getElementsByTagName(sBoldTag);
for(var i=arB.length-1; i>=0; i--)
{
pEl = this.pEditorDocument.createElement("FONT");
pEl.setAttribute("__bxtemp", "yes");
arNodes = arB[i].childNodes;
while(arNodes.length>0)
{
//alert(arNodes[0].innerHTML);
pEl.appendChild(arNodes[0]);
}
arB[i].parentNode.insertBefore(pEl, arB[i]);
arB[i].parentNode.removeChild(arB[i]);
}
//alert('1='+this.pEditorDocument.body.innerHTML);
try{this.pEditorDocument.execCommand("styleWithCSS", false, false);}catch(e){}
this.executeCommand("Bold", true);
try{this.pEditorDocument.execCommand("styleWithCSS", false, true);}catch(e){}
//alert('2='+this.pEditorDocument.body.innerHTML);
arB = this.pEditorDocument.getElementsByTagName(sBoldTag);
for(i=arB.length-1; i>=0; i--)
{
pEl = this.pEditorDocument.createElement(tagName);
for(var attr in arAttributes)
{
switch(attr.toLowerCase())
{
case 'style' :
pEl.style.cssText = arAttributes[attr];
break;
case 'class':
SAttr(pEl, 'className', arAttributes[attr]);
break;
default:
pEl.setAttribute(attr, arAttributes[attr]);
}
}
arNodes = arB[i].childNodes;
while(arNodes.length>0)
pEl.appendChild(arNodes[0]);
arB[i].parentNode.insertBefore(pEl, arB[i]);
arB[i].parentNode.removeChild(arB[i]);
}
//alert('3='+this.pEditorDocument.body.innerHTML);
arB = this.pEditorDocument.getElementsByTagName('FONT');
for(i=arB.length-1; i>=0; i--)
{
if(!arB[i].getAttribute("__bxtemp") || arB[i].getAttribute("__bxtemp", 2) != "yes")
continue;
pEl = this.pEditorDocument.createElement(sBoldTag);
arNodes = arB[i].childNodes;
while(arNodes.length>0)
pEl.appendChild(arNodes[0]);
arB[i].parentNode.insertBefore(pEl, arB[i]);
arB[i].parentNode.removeChild(arB[i]);
}
//alert('Last='+this.pEditorDocument.body.innerHTML);
/*
oSelection = this.pEditorWindow.getSelection();
oRange = oSelection.getRangeAt(0);
//this.RemoveElements(elElement, tagName, arAttributes);
oRange.surroundContents(elElement);
*/
}
}
BXHTMLEditor.prototype.GetToolbarSet = function ()
{
return this.arToolbarSet;
}
BXHTMLEditor.prototype.GetTaskbarSet = function ()
{
return this.arTaskbarSet;
}
BXHTMLEditor.prototype.SelectElement = function (pElement)
{
if(this.pEditorWindow.getSelection)
this.pEditorWindow.getSelection().selectAllChildren(pElement);
else
{
this.pEditorDocument.selection.empty();
var oRange = this.pEditorDocument.selection.createRange();
oRange.moveToElementText(pElement) ;
oRange.select();
}
}
BXHTMLEditor.prototype.GetSelectedNode = function ()
{
var oSelection;
if(this.pEditorDocument.selection)
{
oSelection = this.pEditorDocument.selection;
var s = oSelection.createRange();
if(oSelection.type=="Control")
return s.commonParentElement();
if(s.parentElement() && s.text==s.parentElement().innerText)
return s.parentElement();
return s;
}
else
{
oSelection = this.pEditorWindow.getSelection();
if(!oSelection || oSelection.rangeCount!=1) return false;
var oRange, container;
oRange = oSelection.getRangeAt(0);
container = oRange.startContainer;
if(container.nodeType!=3)
{
if(container.nodeType==1 && container.childNodes.length<=0)
return container;
else if(oRange.endOffset - oRange.startOffset == container.childNodes.length)
return container
else if(oRange.endOffset - oRange.startOffset < 2)
return container.childNodes[oRange.startOffset];
else
return false;
}
return container;
}
}
BXHTMLEditor.prototype.GetSelectionObjects = function ()
{
var oSelection;
if(this.pEditorDocument.selection)
{
oSelection = this.pEditorDocument.selection;
var s = oSelection.createRange();
if(oSelection.type=="Control")
return s.commonParentElement();
return s.parentElement();
}
else
{
oSelection = this.pEditorWindow.getSelection();
if(!oSelection)
return false;
var oRange;
var container, temp;
var res = Array();
for(var i=0; i<oSelection.rangeCount; i++)
{
oRange = oSelection.getRangeAt(i);
container = oRange.startContainer;
if(container.nodeType!=3)
{
if(container.nodeType==1 && container.childNodes.length<=0)
res[res.length] = container;
else
res[res.length] = container.childNodes[oRange.startOffset];
}
else
{
temp = oRange.commonAncestorContainer;
while(temp && temp.nodeType==3)
temp = temp.parentNode;
res[res.length] = temp;
}
}
if(res.length>1)
return res;
return res[0];
}
}
BXHTMLEditor.prototype.GetSelectionObject = function ()
{
var res = this.GetSelectionObjects();
if(res && res.constructor == Array)
{
var root = res[0];
for(var i=1; i<res.length; i++)
root = BXFindParentElement(root, res[i]);
return root;
}
return res;
}
BXHTMLEditor.prototype.CreateElement = BXCreateElement;
BXHTMLEditor.prototype.createEditorElement = function (sTagname, arParams, arStyles)
{
return BXCreateElement(sTagname, arParams, arStyles, this.pEditorDocument);
}
function BXContextMenu()
{
BXContextMenu.prototype._Create = function ()
{
var pElement, i, j, obj = this;
this.className = 'BXContextMenu';
BXPopupWindow.Create();
this.pPopupNode = BXPopupWindow.CreateElement("DIV", {'border': "0"});
this.pPopupNode.className = "bxcontextmenu";
this.onclick = function (e){BXPopupWindow.Hide();};
var t = BXPopupWindow.CreateElement("TABLE", {'border': '0', 'cellSpacing': '0', 'cellPadding': '0'});
t.onclick = function (e){BXPopupWindow.Hide();};
t.className = 'bxcontextmenu';
var r, c, arMenuItems = [], el, el_params;
pElement = this.pMainObj.GetSelectionObject();
var arUsed = [], strPath;
for(i=0; i<arCMButtons["DEFAULT"].length; i++)
arMenuItems.push(arCMButtons["DEFAULT"][i]);
while(pElement && (pElementTemp = pElement.parentNode) != null)
{
if(pElementTemp.nodeType==1 && pElement.tagName && (strPath = pElement.tagName.toUpperCase()) && strPath != 'TBODY' && !arUsed[strPath])
{
arUsed[strPath] = pElement;
if(arCMButtons[strPath])
{
arMenuItems.push('separator');
for(i=0; i<arCMButtons[strPath].length; i++)
arMenuItems.push(arCMButtons[strPath][i]);
}
}
else
{
pElement = pElementTemp;
continue;
}
}
for(i=0; i<arMenuItems.length; i++)
{
if(arMenuItems[i] == 'separator')
{
r = t.insertRow(-1);
c = r.insertCell(-1);
c.colSpan = "2";
r.className = 'bxcontextmenuitemseparator';
c.innerHTML = '<img src="/bitrix/images/1.gif" width="1" height="1"/>';
}
else
{
r = t.insertRow(-1);
c = r.insertCell(-1);
c.style.width = "0%";
c.id = "left";
el_params = arMenuItems[i][1];
el_params["no_actions"] = true;
el = BXPopupWindow.CreateCustomElement(arMenuItems[i][0], el_params);
el.pMainObj = this.pMainObj;
c.appendChild(el.pWnd);
c = r.insertCell(-1);
c.style.width = "100%";
c.innerHTML = el.name;
c.noWrap = true;
r.obj = el;
r.onmouseover = function (e){this.className = 'bxcontextmenuitemover';};
r.onmouseout = function (e){this.className = 'bxcontextmenuitem';};
r.onclick = function (e){BXPopupWindow.Hide(); this.obj.onClick();};
r.className = 'bxcontextmenuitem';
}
}
this.pPopupNode.appendChild(t);
BXPopupWindow.SetCurStyles();
BXPopupWindow.Show(this.x, this.y, this.pPopupNode);
}
}
BXHTMLEditor.prototype.CreateCustomElement = function(sTagName, arParams)
{
var ob = eval('new '+sTagName+'()');
ob.pMainObj = this;
ob.pDocument = this.pDocument;
ob.CreateElement = BXCreateElement;
if(arParams)
{
var sParamName;
for(sParamName in arParams)
if(sParamName.toLowerCase() == '_oncreate')
arParams[sParamName].apply(ob);
else
ob[sParamName] = arParams[sParamName];
}
ob._Create();
return ob;
}
BXHTMLEditor.prototype.AddEventHandler = function (eventName, pEventHandler, pObject)
{
if(!this.arEventHandlers[eventName])
this.arEventHandlers[eventName] = new Array();
this.arEventHandlers[eventName][this.arEventHandlers[eventName].length] = [pEventHandler, pObject];
}
BXHTMLEditor.prototype.OnEvent = function (eventName, arParams)
{
if(!this.arEventHandlers[eventName])
return true;
var res = true;
for(var i=0; i<this.arEventHandlers[eventName].length; i++)
{
if(this.arEventHandlers[eventName][i][1])
{
if(!arParams)
arParams = [];
if(!this.arEventHandlers[eventName][i][0].apply(this.arEventHandlers[eventName][i][1], arParams))
res = false;
}
else
{
if(!this.arEventHandlers[eventName][i][0](arParams))
res = false;
}
}
return res;
}
BXHTMLEditor.prototype.GetData = function (sUrl, arParams, pCallback)
{
var pObj = this;
if(!this.pXML)
{
this.pXML = new BXXML();
this.pXML.pMainObj = this;
}
this.pXML.Load(sUrl, arParams);
return this.pXML.Unserialize();
return true;
if(!this.pLoaderFrame)
{
this.pLoaderFrame = this.CreateElement("IFRAME", {name: "edloader_"+name});
this.pLoaderFrame.setAttribute("src", "about:blank");
this.pLoaderFrame.style.width = "100";
this.pLoaderFrame.style.height = "101";
this.pLoaderFrame = this.pWnd.appendChild(this.pLoaderFrame);
this.pLoaderWindow = this.pEditorFrame.contentWindow;
this.pLoaderWindow.str = 'ssss';
this.pLoaderForm = this.pWnd.appendChild(this.CreateElement("FORM", {target: "edloader_"+name, method: 'post'}));
this.pLoaderHidden = this.pLoaderForm.appendChild(this.CreateElement("INPUT", {type: "hidden", name: 'value'}));
//this.CreateElement("INPUT", {type: "submit", name: '', value: ''});
/*
if(this.pEditorFrame.contentDocument)
this.pEditorDocument = this.pEditorFrame.contentDocument;
else
this.pEditorDocument = this.pEditorFrame.contentWindow.document;
this.pEditorDocument.open();
this.pEditorDocument.write('<html><head></head><body id="C"></body></html>');
this.pEditorDocument.close();
this.pEditorDocument.className = "pEditorDocument";
this.pEditorDocument.pMainObj = this;
*/
}
this.pLoaderForm.action = sUrl;
this.pLoaderHidden.value = BXPHPVal(arParams);
this.pLoaderWindow.pCallback = pCallback;
this.pLoaderForm.submit();
return true;
}
BXHTMLEditor.prototype.SetFullscreen = function (bFull)
{
if(BXIsIE() && !this.__pUnderFrame)
{
this.__pUnderFrame = this.pDocument.createElement("IFRAME");
this.__pUnderFrame.setAttribute("src", "");
this.__pUnderFrame.frameBorder = "0";
this.__pUnderFrame.scrolling = "no";
this.__pUnderFrame.style.position = "absolute";
this.__pUnderFrame.unselectable = "on";
this.__pUnderFrame.style.display = "none";
this.__pUnderFrame.style.left = 0;
this.__pUnderFrame.style.top = 0;
this.pDocument.body.appendChild(this.__pUnderFrame);
}
if(bFull)
{
this.pWnd.style.position = "absolute";
this.pWnd.style.top = "0px";
this.pWnd.style.left = "0px";
this.pDocument.body.style.overflow = "hidden";
this.__oldSize = [this.pWnd.style.width, this.pWnd.style.height];
if(BXIsIE())
{
this.__pUnderFrame.style.display = "block";
this.__pUnderFrame.style.width = this.pDocument.body.clientWidth;
this.__pUnderFrame.style.height = this.pDocument.body.clientHeight;
this.__pUnderFrame.style.zIndex = 1000;
this.pWnd.style.zIndex = 2000;
}
this.pWnd.style.width = this.pDocument.body.clientWidth;
this.pWnd.style.height = this.pDocument.body.clientHeight;
window.scrollTo(0, 0);
}
else
{
if(BXIsIE())
{
this.__pUnderFrame.style.display = "none";
}
this.pWnd.style.position = "relative";
this.pDocument.body.style.overflow = "auto";
this.pWnd.style.width = this.__oldSize[0];
this.pWnd.style.height = this.__oldSize[1];
}
this.bFullscreen = bFull;
}
BXHTMLEditor.prototype.TableOperation = function (type)
{
var pElement;
switch (type)
{
case 'insertrow':
pElement = BXFindParentByTagName(this.GetSelectionObject(), 'TR');
break;
case 'deleterow':
pElement = BXFindParentByTagName(this.GetSelectionObject(), 'TR');
break;
case 'insertcolumn':
break;
case 'deletecolumn':
break;
case 'insertcell':
break;
case 'deletecell':
break;
case 'splitcell':
break;
case 'mergecell':
break;
}
}
BXHTMLEditor.prototype.ParseStyles = function ()
{
this.arStyles = [];
if(obj.arConfig['FULL_DOCUMENT']=="Y")
{
}
}
function BXStyles(pMainObj)
{
this.pMainObj = pMainObj;
this.arStyles = [];
this.sStyles = '';
BXStyles.prototype.Parse = function (styles)
{
this.sStyles = styles;
this.arStyles = BXStyleParser.Parse(styles);
}
BXStyles.prototype.GetStyles = function (sFilter)
{
if(this.arStyles[sFilter.toUpperCase()])
return this.arStyles[sFilter.toUpperCase()];
return [];
}
BXStyles.prototype.SetToDocument = function(pDocument)
{
var cur = pDocument.getElementsByTagName("STYLE");
for(var i=0; i<cur.length; i++)
cur[i].parentNode.removeChild(cur[i]);
var xStyle = pDocument.createElement("STYLE");
if(pDocument.getElementsByTagName("HEAD").length>0)
pDocument.getElementsByTagName("HEAD")[0].appendChild(xStyle);
else
return;
try{
if(BXIsIE())
pDocument.styleSheets[0].cssText = this.sStyles;
else
xStyle.appendChild(pDocument.createTextNode(this.sStyles));
}catch(e){}
}
}
function _BXStyleParser()
{
_BXStyleParser.prototype.Create = function()
{
if(this.pFrame)
return;
var obj = this;
this.pFrame = document.createElement("IFRAME");
this.pFrame.setAttribute("src", "");
this.pFrame.scrolling = "no";
this.pFrame.style.position = "absolute";
this.pFrame.style.zIndex = "0";
this.pFrame.style.left = 0;
this.pFrame.style.top = 0;
this.pFrame.style.width = 0;
this.pFrame.style.height = 0;
//!this.pFrame.unselectable = "on";
this.pFrame.style.display = "none";
this.pFrame = document.body.appendChild(this.pFrame);
if(this.pFrame.contentDocument)
this.pDocument = this.pFrame.contentDocument;
else
this.pDocument = this.pFrame.contentWindow.document;
this.pDocument.write("<html><head></head><body></body></html>");
this.pDocument.close();
}
_BXStyleParser.prototype.Parse = function(strStyles)
{
this.pDocument.write("<html><head><style>\n"+strStyles+"\n</style></head><body></body></html>");
this.pDocument.close();
var arAllSt=[], rules, cssTag, arTags, cssText = '', i, j, k, result = new Object;
if(!this.pDocument.styleSheets)
return result;
var x1 = this.pDocument.styleSheets;
var t1, t2;
for(i=0; i<x1.length; i++)
{
rules = (x1[i].rules ? x1[i].rules : x1[i].cssRules);
for(j=0; j<rules.length; j++)
{
cssTag = rules[j].selectorText;
arTags = cssTag.split(",");
for(k=0; k<arTags.length; k++)
{
t1 = arTags[k].split(" ");
t1 = t1[t1.length-1].trim();
if(t1.substr(0, 1)=='.')
{
t1 = t1.substr(1);
t2 = 'DEFAULT';
}
else
{
t2 = t1.split(".");
if(t2.length>1)
t1 = t2[1];
else
t1 = '';
t2 = t2[0].toUpperCase();
}
if(arAllSt[t1]) continue;
arAllSt[t1] = true;
if(!result[t2])
result[t2] = [{'className': t1, 'original': arTags[k], 'cssText': rules[j].style.cssText}];
else
result[t2].push({'className': t1, 'original': arTags[k], 'cssText': rules[j].style.cssText});
}
}
}
/*
var x = '';
for(var r in result)
{
x = r+':\n';
for(i=0; i<result[r].length; i++)
x = x + '\t' + result[r][i].className+' ---- {'+result[r][i].cssText+'}\n';
alert(x);
}
*/
return result;
}
}
var BXStyleParser = new _BXStyleParser();