﻿var L_CutToolTip_TEXT="Recortar (Ctrl+X)";
var L_CopyToolTip_TEXT="Copiar (Ctrl+C)";
var L_PasteToolTip_TEXT="Colar (Ctrl+V)";
var L_RemoveFormatToolTip_TEXT="Limpar Formato (Ctrl+Espaço)";
var L_BoldToolTip_TEXT="Negrito (Ctrl+B)";
var L_ItalicToolTip_TEXT="Itálico (Ctrl+I)";
var L_UnderlineToolTip_TEXT="Sublinhado (Ctrl+U)";
var L_JustifyLeftToolTip_TEXT="Alinhar à Esquerda (Ctrl+L)";
var L_JustifyCenterToolTip_TEXT="Centralizar (Ctrl+E)";
var L_JustifyRightToolTip_TEXT="Alinhar à Direita (Ctrl+R)";
var L_OrderedListToolTip_TEXT="Lista Numerada (Ctrl+Shift+E)";
var L_UnorderedListToolTip_TEXT="Lista com Marcadores (Ctrl+Shift+L)";
var L_OutdentToolTip_TEXT="Diminuir Recuo (Ctrl+Shift+M)";
var L_IndentToolTip_TEXT="Aumentar Recuo (Ctrl+M)";
var L_ForeColorToolTip_TEXT="Cor do Texto (Ctrl+Shift+C)";
var L_BackColorToolTip_TEXT="Cor de Realce do Texto (Ctrl+Shift+W)";
var L_LTRToolTip_TEXT="Da Esquerda para a Direita (Ctrl+Shift+>)";
var L_RTLToolTip_TEXT="Da Direita para a Esquerda (Ctrl+Shift+<)";
var L_CreateLinkToolTip_TEXT="Abrir uma nova janela para Inserir Hiperlink (Ctrl+K)";
var L_InsertImageToolTip_TEXT="Abrir uma nova janela para Inserir Imagem (Ctrl+Shift+G)";
var L_HtmlSourceToolTip_TEXT="Editar Origem HTML";
var L_FontNameLabel_TEXT="Fonte";
var L_FontNameToolTip_TEXT="Fonte (Ctrl+Shift+F)";
var L_FontSizeLabel_TEXT="Tamanho";
var L_FontSizeToolTip_TEXT="Tamanho da Fonte (Ctrl+Shift+P)";
var L_InsertTableToolTip_TEXT="Abrir uma nova janela para Inserir Tabela (Ctrl+Alt+T)";
var L_InsertTableElementToolTip_TEXT="Inserir Elemento de Tabela";
var L_DeleteTableElementToolTip_TEXT="Excluir Elemento de Tabela";
var L_InsertRowToolTip_TEXT="Inserir Linha";
var L_InsertRowLabel_TEXT="";
var L_InsertRowAboveLabel_TEXT="Inserir Linha Acima (Ctrl+Alt+Up)";
var L_InsertRowBelowLabel_TEXT="Inserir Linha Abaixo (Ctrl+Alt+Down)";
var L_InsertColumnToolTip_TEXT="Inserir Coluna";
var L_InsertColumnLabel_TEXT="";
var L_InsertColumnLeftLabel_TEXT="Inserir Coluna à Esquerda (Ctrl+Alt+Left)";
var L_InsertColumnRightLabel_TEXT="Inserir Coluna à Direita (Ctrl+Alt+Right)";
var L_InsertCellToolTip_TEXT="Inserir Célula";
var L_InsertCellLabel_TEXT="";
var L_InsertCellLeftLabel_TEXT="Inserir Célula à Esquerda (Ctrl+Alt+L)";
var L_InsertCellRightLabel_TEXT="Inserir Célula à Direita (Ctrl+Alt+R)";
var L_MergeCellToolTip_TEXT="Mesclar Célula (Ctrl+Alt+M)";
var L_InvalidMerge_TEXT="Não é possível mesclar a célula porque as células adjacentes não têm a mesma altura ou largura da célula selecionada. Altere o tamanho das células adjacentes para corresponder à célula selecionada antes de tentar mesclar a célula novamente.";
var L_SplitCellToolTip_TEXT="Dividir Célula (Ctrl+Alt+S)";
var L_DeleteRowToolTip_TEXT="Excluir Linha (Ctrl+Alt+SINAL DE MENOS)";
var L_DeleteColumnToolTip_TEXT="Excluir Coluna (Ctrl+Alt+BARRA INVERTIDA)";
var L_UndoToolTip_TEXT="Desfazer (Ctrl+Z)";
var L_RedoToolTip_TEXT="Refazer (Ctrl+Y)";
var L_StylesToolTip_TEXT="Estilos";
var L_StylesLabel_TEXT="Estilos";
var L_ExampleText_TEXT="Texto de Exemplo";
var L_EditorIFrameTitle_TEXT="Editor de Rich Text";
var L_Black_TEXT="Preto";
var L_Brown_TEXT="Marrom";
var L_OliveGreen_TEXT="Verde-oliva";
var L_DarkGreen_TEXT="Verde Escuro";
var L_DarkTeal_TEXT="Azul-petróleo Escuro";
var L_DarkBlue_TEXT="Azul Escuro";
var L_Indigo_TEXT="Índigo";
var L_Gray80_TEXT="Cinza 80%";
var L_DarkRed_TEXT="Vermelho Escuro";
var L_Orange_TEXT="Laranja";
var L_DarkYellow_TEXT="Amarelo Escuro";
var L_Green_TEXT="Verde";
var L_Teal_TEXT="Azul-petróleo";
var L_Blue_TEXT="Azul";
var L_BlueGray_TEXT="Cinza-azulado";
var L_Gray50_TEXT="Cinza 50%";
var L_Red_TEXT="Vermelho";
var L_LightOrange_TEXT="Laranja Claro";
var L_Lime_TEXT="Lima";
var L_SeaGreen_TEXT="Verde-mar";
var L_Aqua_TEXT="Azul-piscina";
var L_LightBlue_TEXT="Azul Claro";
var L_Violet_TEXT="Violeta";
var L_Gray40_TEXT="Cinza 40%";
var L_Pink_TEXT="Rosa";
var L_Gold_TEXT="Dourado";
var L_Yellow_TEXT="Amarelo";
var L_BrightGreen_TEXT="Verde Brilhante";
var L_Turquoise_TEXT="Turquesa";
var L_SkyBlue_TEXT="Azul-céu";
var L_Plum_TEXT="Ameixa";
var L_Gray25_TEXT="Cinza 25%";
var L_Rose_TEXT="Rosa";
var L_Tan_TEXT="Marrom-claro";
var L_LightYellow_TEXT="Amarelo Claro";
var L_LightGreen_TEXT="Verde Claro";
var L_LightTurquoise_TEXT="Turquesa Claro";
var L_PaleBlue_TEXT="Azul Pálido";
var L_Lavender_TEXT="Lavanda";
var L_White_TEXT="Branco";
var L_Font1_TEXT="Arial";
var L_Font2_TEXT="Courier";
var L_Font3_TEXT="Tahoma";
var L_Font4_TEXT="Times";
var L_Font5_TEXT="Verdana";
var L_Font6_TEXT="";
var L_Font7_TEXT="";
var L_Font8_TEXT="";
var L_BoldKey_TEXT="B";
var L_SelectAllKey_TEXT="A";
var L_BoldShiftKey_TEXT="false";
var L_BoldAltKey_TEXT="false";
var L_ItalicKey_TEXT="I";
var L_ItalicShiftKey_TEXT="false";
var L_ItalicAltKey_TEXT="false";
var L_UnderlineKey_TEXT="U";
var L_UnderlineShiftKey_TEXT="false";
var L_UnderlineAltKey_TEXT="false";
var L_JustifyLeftKey_TEXT="L";
var L_JustifyLeftShiftKey_TEXT="false";
var L_JustifyLeftAltKey_TEXT="false";
var L_JustifyCenterKey_TEXT="E";
var L_JustifyCenterShiftKey_TEXT="false";
var L_JustifyCenterAltKey_TEXT="false";
var L_JustifyRightKey_TEXT="R";
var L_JustifyRightShiftKey_TEXT="false";
var L_JustifyRightAltKey_TEXT="false";
var L_SelectFontNameKey_TEXT="F";
var L_SelectFontNameShiftKey_TEXT="true";
var L_SelectFontNameAltKey_TEXT="false";
var L_SelectFontSizeKey_TEXT="P";
var L_SelectFontSizeShiftKey_TEXT="true";
var L_SelectFontSizeAltKey_TEXT="false";
var L_InsertTableKey_TEXT="T";
var L_InsertTableShiftKey_TEXT="false";
var L_InsertTableAltKey_TEXT="true";
var L_SplitCellKey_TEXT="S";
var L_SplitCellShiftKey_TEXT="false";
var L_SplitCellAltKey_TEXT="true";
var L_MergeCellKey_TEXT="M";
var L_MergeCellShiftKey_TEXT="false";
var L_MergeCellAltKey_TEXT="true";
var L_InsertRowAboveKeyCode_TEXT="38";
var L_InsertRowAboveShiftKey_TEXT="false";
var L_InsertRowAboveAltKey_TEXT="true";
var L_InsertRowBelowKeyCode_TEXT="40";
var L_InsertRowBelowShiftKey_TEXT="false";
var L_InsertRowBelowAltKey_TEXT="true";
var L_InsertColumnLeftKeyCode_TEXT="37";
var L_InsertColumnLeftShiftKey_TEXT="false";
var L_InsertColumnLeftAltKey_TEXT="true";
var L_InsertColumnRightKeyCode_TEXT="39";
var L_InsertColumnRightShiftKey_TEXT="false";
var L_InsertColumnRightAltKey_TEXT="true";
var L_InsertCellLeftKey_TEXT="L";
var L_InsertCellLeftShiftKey_TEXT="false";
var L_InsertCellLeftAltKey_TEXT="true";
var L_InsertCellRightKey_TEXT="R";
var L_InsertCellRightShiftKey_TEXT="false";
var L_InsertCellRightAltKey_TEXT="true";
var L_DeleteColumnKeyCode_TEXT="220";
var L_DeleteColumnShiftKey_TEXT="false";
var L_DeleteColumnAltKey_TEXT="true";
var L_DeleteRowKeyCode_TEXT="189";
var L_DeleteRowShiftKey_TEXT="false";
var L_DeleteRowAltKey_TEXT="true";
var L_OutdentKey_TEXT="M";
var L_OutdentShiftKey_TEXT="true";
var L_OutdentAltKey_TEXT="false";
var L_IndentKey_TEXT="M";
var L_IndentShiftKey_TEXT="false";
var L_IndentAltKey_TEXT="false";
var L_UnorderedListKey_TEXT="L";
var L_UnorderedListShiftKey_TEXT="true";
var L_UnorderedListAltKey_TEXT="false";
var L_OrderedListKey_TEXT="E";
var L_OrderedListShiftKey_TEXT="true";
var L_OrderedListAltKey_TEXT="false";
var L_CreateLinkKey_TEXT="K";
var L_CreateLinkShiftKey_TEXT="false";
var L_CreateLinkAltKey_TEXT="false";
var L_SelectForeColorKey_TEXT="C";
var L_SelectForeColorShiftKey_TEXT="true";
var L_SelectForeColorAltKey_TEXT="false";
var L_SelectBackColorKey_TEXT="W";
var L_SelectBackColorShiftKey_TEXT="true";
var L_SelectBackColorAltKey_TEXT="false";
var L_InsertImageKey_TEXT="G";
var L_InsertImageShiftKey_TEXT="true";
var L_InsertImageAltKey_TEXT="false";
var L_HtmlSourceKey_TEXT="S";
var L_HtmlSourceShiftKey_TEXT="true";
var L_HtmlSourceAltKey_TEXT="false";
var L_LTRKey_VALUE=190;
var L_RTLKey_VALUE=188;
var g_strRTEToolbarClassName="ms-rtetoolbarmenu";
var g_strRTEUnselectedClassName="ms-rtetoolbarunsel";
var g_strRTESelectedClassName="ms-rtetoolbarsel";
var g_strRTEDisabledClassName="ms-rtetoolbardis";
var g_strRTEHoverClassName="ms-rtetoolbarhov";
var g_strRTETextEditorPullDownMenuID="RTETextEditorPullDownMenu";
var g_strRTEDialogHelperID="RTEDialogHelper";
var g_strRTECutMnemonic="Cut";
var g_strRTECopyMnemonic="Copy";
var g_strRTEPasteMnemonic="Paste";
var g_strRTERemoveFormatMnemonic="RemoveFormat";
var g_strRTEFontNameMnemonic="FontName";
var g_strRTEFontSizeMnemonic="FontSize";
var g_strRTEBoldMnemonic="Bold";
var g_strRTEItalicMnemonic="Italic";
var g_strRTEUnderlineMnemonic="Underline";
var g_strRTEJustifyLeftMnemonic="JustifyLeft";
var g_strRTEJustifyCenterMnemonic="JustifyCenter";
var g_strRTEJustifyRightMnemonic="JustifyRight";
var g_strRTEOrderedListMnemonic="InsertOrderedList";
var g_strRTEUnorderedListMnemonic="InsertUnorderedList";
var g_strRTEOutdentMnemonic="Outdent";
var g_strRTEIndentMnemonic="Indent";
var g_strRTEForeColorMnemonic="ForeColor";
var g_strRTEBackColorMnemonic="BackColor";
var g_strRTELTRMnemonic="LTR";
var g_strRTERTLMnemonic="RTL";
var g_strRTECreateLinkMnemonic="CreateLink";
var g_strRTEInsertImageMnemonic="InsertImage";
var g_strRTEHtmlSourceMnemonic="HtmlSource";
var g_strRTEInsertTableMnemonic="insert_table";
var g_strRTEInsertTableElementMnemonic="InsertTableElement";
var g_strRTEDeleteTableElementMnemonic="DeleteTableElement";
var g_strRTEInsertRowMnemonic="insert_row";
var g_strRTEInsertRowAbove="InsertRowAbove";
var g_strRTEInsertRowBelow="InsertRowBelow";
var g_strRTEInsertColumnMnemonic="insert_column";
var g_strRTEInsertColumnLeft="InsertColumnLeft";
var g_strRTEInsertColumnRight="InsertColumnRight";
var g_strRTEInsertCellMnemonic="insert_cell";
var g_strRTEInsertCellLeft="InsertCellLeft";
var g_strRTEInsertCellRight="InsertCellRight";
var g_strRTEDeleteRow="delete_row";
var g_strRTEDeleteColumn="delete_column";
var g_strRTEMergeCellMnemonic="merge_cell";
var g_strRTESplitCellMnemonic="split_cell";
var g_strRTEFormatBlockMnemonic="FormatBlock";
var g_strRTEStylesMnemonic="styles";
var g_strRTEUndoMnemonic="Undo";
var g_strRTERedoMnemonic="Redo";
var g_strRTERestrictedModeAttributeName="RestrictedMode";
var g_strRTESimpleTextOnlyAttributeName="SimpleTextOnly";
var g_strRTEUseDynamicHeightSizing="UseDynamicHeightSizing";
var g_strRTEUseDynamicWidthSizing="UseDynamicWidthSizing";
var g_strRTEMaxHeightSizeAttributeName="MaxHeightSize";
var g_strRTEMinHeightSizeAttributeName="MinHeightSize";
var g_strRTEMaxWidthSizeAttributeName="MaxWidthSize";
var g_strRTEMinWidthSizeAttributeName="MinWidthSize";
var g_strRTEAllowHyperlinkAttributeName="AllowHyperlink";
var g_strRTEBaseElementIDAttributeName="BaseElementID";
var g_strRTEWebLocaleAttributeName="WebLocale";
var g_strRTEButtonMnemonicAttributeName="ButtonMnemonic";
var g_strRTECommandToExecuteAttributeName="CommandToExecute";
var g_strRTECommandValueAttributeName="CommandValue";
var g_strRTEFunctionToExecuteAttributeName="FunctionToExecute";
var g_strRTEFunctionParameterToExecuteAttributeName="FunctionParameterToExecute";
var g_strRTEMenuItemBaseName="MenuItem";
var g_strRTEMenuItemAttributeName="MenuItem";
var g_strRTEMenuOpeningAttributeName="MenuOpening";
var g_strRTEMenuTableElementName="MenuTable";
var g_strRTEBegBoldItalicToken="%BEGBI%";
var g_strRTEEndBoldItalicToken="%ENDBI%";
var g_strRTEFontNameToken="%FONTNAME%";
var g_strRTEFontSizeToken="%FONTSIZE%";
var g_ntRTEElement=1;
var g_ntRTEText=3;
var g_iLineHeight=14;
var g_iCharWidth=7;
var g_iDefaultMaxHeightSize=10;
var g_iDefaultMaxWidthSize=10;
var g_iDefaultMinWidthSize=0;
var g_iDefaultMinHeightSize=0;
var g_rgstRTETextEditorSelectionType=new Array();
var g_rgrngRTETextEditorSelection=new Array();
var g_RTE_EnableShortcuts;
var g_RTE_EnableShortcutsKey="2";
var g_RTE_Dialog_Width="400";
var g_RTE_Dialog_Height="152";
function RTE_DialogResize()
{
	var w=window.document.body;
	if (w.scrollWidth > g_RTE_Dialog_Width)
	{
		window.dialogWidth=w.scrollWidth+"px";
	}
	if (w.scrollHeight > g_RTE_Dialog_Height)
	{
		 window.dialogHeight=w.scrollHeight+"px";
	}
}
function RTE_SaveSelection(strBaseElementID)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.overrides.SaveSelection !=null)
	{
		return instanceVariables.overrides.SaveSelection(strBaseElementID);
	}
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	g_rgrngRTETextEditorSelection[strBaseElementID]=docEditor.selection.createRange();
	g_rgstRTETextEditorSelectionType[strBaseElementID]=docEditor.selection.type;
}
var g_fRestoreSelection=false;
function RTE_RestoreSelection(strBaseElementID)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.overrides.RestoreSelection !=null)
	{
		return instanceVariables.overrides.RestoreSelection(strBaseElementID);
	}
	var sel=g_rgrngRTETextEditorSelection[strBaseElementID];
	if (null==sel)
	{
		try
		{
			 sel=parent.g_rgrngRTETextEditorSelection[strBaseElementID];
		}
		catch (e) {}
	}
	if (null !=sel)
	{
		g_fRestoreSelection=true;
		sel.select();
		g_fRestoreSelection=false;
	}
}
function RTE_GetSelection(strBaseElementID)
{
	return g_rgrngRTETextEditorSelection[strBaseElementID];
}
var g_oExtendedRichTextSupport;
function RTE_GetEditorInstanceVariables(strBaseElementID)
{
	if (parent.g_oExtendedRichTextSupport !=null)
	{
		g_oExtendedRichTextSupport=parent.g_oExtendedRichTextSupport
	}
	if (g_oExtendedRichTextSupport !=null)
	{
		if (g_oExtendedRichTextSupport.editors[strBaseElementID] !=null)
		{
			return g_oExtendedRichTextSupport.editors[strBaseElementID];
		}
	}
	return null;
}
function RTE_InitializeExtendedRichTextSupport(strBaseElementID)
{
	if (g_oExtendedRichTextSupport==null)
	{
		g_oExtendedRichTextSupport=new Object;
		g_oExtendedRichTextSupport.editors=new Array();
	}
	g_oExtendedRichTextSupport.editors[strBaseElementID]=new Object;
	g_oExtendedRichTextSupport.editors[strBaseElementID].overrides=new Object;
	g_oExtendedRichTextSupport.editors[strBaseElementID].overrides.DisableToolBar=null;
	g_oExtendedRichTextSupport.editors[strBaseElementID].overrides.ResetAllToolBarStates=null;
	g_oExtendedRichTextSupport.editors[strBaseElementID].overrides.GetEditorDocument=null;
	g_oExtendedRichTextSupport.editors[strBaseElementID].overrides.OnKeyDown=null;
	g_oExtendedRichTextSupport.editors[strBaseElementID].overrides.RestoreSelection=null;
	g_oExtendedRichTextSupport.editors[strBaseElementID].overrides.GiveEditorFocus=null;
	g_oExtendedRichTextSupport.editors[strBaseElementID].overrides.GetToolBarDefinition=null;
	g_oExtendedRichTextSupport.editors[strBaseElementID].RenderFontNamesAsText=false;
	g_oExtendedRichTextSupport.editors[strBaseElementID].hoverButton=null;
	g_oExtendedRichTextSupport.editors[strBaseElementID].functions=new Array();
}
var g_elemRTELastTextAreaConverted=null;
var g_strRTETextEditorWithTheFocus=null;
var g_strRTEPrevTextEditor=null;
var g_strRTEEditorFirstFocus=null;
var g_rgstrRTEAllEditorsInThePage=new Array();
var g_fRTEDialogIsOpen=false;
function RTE_GetEditorIFrameID(strBaseElementID)
{
	return strBaseElementID+"_iframe";
}
function RTE_GetEditorTextArea(strBaseElementID)
{
	var elemTextArea=document.getElementById(strBaseElementID);
	return elemTextArea;
}
function RTE_GetEditorIFrame(strBaseElementID)
{
	var ifmEditor=null;
	var doc=document;
	if ((null !=doc.frames) && (doc.frames.length==0) && (doc.parentWindow.parent !=null))
	{
		doc=doc.parentWindow.parent.document;
	}
	if ((null !=doc.frames) && (doc.frames.length > 0))
	{
		var ifmContainer=doc.getElementById(RTE_GetEditorIFrameID(strBaseElementID));
		if (ifmContainer !=null)
		{
			ifmEditor=doc.frames(RTE_GetEditorIFrameID(strBaseElementID));
		}
	}
	return ifmEditor;
}
function RTE_GetEditorElement(strBaseElementID)
{
	var doc=document;
	try
	{
		if ((null !=doc.frames) && (doc.frames.length==0) && (doc.parentWindow.parent !=null))
		{
			doc=doc.parentWindow.parent.document;
		}
	}
	catch(e)
	{
		doc=document;
	}
	var elemEditorIFrame=doc.getElementById(RTE_GetEditorIFrameID(strBaseElementID));
	return elemEditorIFrame;
}
function RTE_GetEditorToolBar(strBaseElementID)
{
	var strToolBarElementID=strBaseElementID+"_toolbar";
	var toolbarObject=document.getElementById(strToolBarElementID);
	return toolbarObject;
}
function RTE_GetEditorDocument(strBaseElementID)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.overrides.GetEditorDocument !=null)
	{
		return instanceVariables.overrides.GetEditorDocument(strBaseElementID);
	}
	var ifmEditor=RTE_GetEditorIFrame(strBaseElementID);
	if (null==ifmEditor)
	{
		return null;
	}
	var docEditor=ifmEditor.document;
	return docEditor;
}
function RTE_GetWebLocale(strBaseElementID)
{
	return RTE_GetEditorDocument(strBaseElementID).body.getAttribute(g_strRTEWebLocaleAttributeName);
}
function RTE_IsInRestrictedMode(strBaseElementID)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	if (null !=docEditor.body.getAttribute(g_strRTERestrictedModeAttributeName))
	{
		return true;
	}
	return false;
}
function RTE_IsSimpleTextOnly(strBaseElementID)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	if (null !=docEditor.body.getAttribute(g_strRTESimpleTextOnlyAttributeName))
	{
		return true;
	}
	return false;
}
function RTE_UseDynamicHeightSizing(strBaseElementID)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	if (null !=docEditor.body.getAttribute(g_strRTEUseDynamicHeightSizing))
	{
		return true;
	}
	return false;
}
function RTE_MaxHeightSize(strBaseElementID)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	var nMaxHeightSize=docEditor.body.getAttribute(g_strRTEMaxHeightSizeAttributeName);
	if (null !=nMaxHeightSize)
	{
		return nMaxHeightSize;
	}
	return g_iDefaultMaxHeightSize;
}
function RTE_MaxWidthSize(strBaseElementID)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	var nMaxWidthSize=docEditor.body.getAttribute(g_strRTEMaxWidthSizeAttributeName);
	if (null !=nMaxWidthSize)
	{
		return nMaxWidthSize;
	}
	return g_iDefaultMaxWidthSize;
}
function RTE_MinHeightSize(strBaseElementID)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	var nMinHeightSize=docEditor.body.getAttribute(g_strRTEMinHeightSizeAttributeName);
	if (null !=nMinHeightSize)
	{
		return nMinHeightSize;
	}
	return g_iDefaultMinHeightSize;
}
function RTE_MinWidthSize(strBaseElementID)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	var nMinWidthSize=docEditor.body.getAttribute(g_strRTEMinWidthSizeAttributeName);
	if (null !=nMinWidthSize)
	{
		return nMinWidthSize;
	}
	return g_iDefaultMinWidthSize;
}
function RTE_IsHyperlinkAllowed(strBaseElementID)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	if (null !=docEditor.body.getAttribute(g_strRTEAllowHyperlinkAttributeName))
	{
		return true;
	}
	return false;
}
function RTE_ShouldShowDirection()
{
	return true;
}
function RTE_EditorWithTheFocus()
{
	return g_strRTETextEditorWithTheFocus;
}
function RTE_PrevEditor()
{
	return g_strRTEPrevTextEditor;
}
function RTE_GetRichEditTextOnly(strBaseElementID)
{
	return RTE_GetEditorDocument(strBaseElementID).body.innerText;
}
function RTE_DocEditor_AdjustHeight(strBaseElementID)
{
	var iMaxHeightSize=RTE_MaxHeightSize(strBaseElementID);
	var iMinHeightSize=RTE_MinHeightSize(strBaseElementID);
	var ifmContainer=RTE_GetEditorElement(strBaseElementID);
	if (ifmContainer !=null)
	{
		var ifmEditor=RTE_GetEditorIFrame(strBaseElementID);
		var contentheight=ifmEditor.document.body.scrollHeight;
		var clientHeight=ifmEditor.document.body.clientHeight;
		var bodyHeight=ifmEditor.document.body.offsetHeight;
		var MaxHeightPixelSize=iMaxHeightSize * g_iLineHeight;
		var MinHeightPixelSize=iMinHeightSize * g_iLineHeight;
		contentheight=((contentheight < g_iLineHeight)? g_iLineHeight: contentheight);
		if (clientHeight !=contentheight && (contentheight <=MaxHeightPixelSize || clientHeight < MaxHeightPixelSize) && (contentheight >=MinHeightPixelSize || clientHeight > MinHeightPixelSize))
		{
			var newHeight=bodyHeight+((contentheight > MaxHeightPixelSize)? MaxHeightPixelSize : contentheight)   - clientHeight;
			if (newHeight < MinHeightPixelSize)
			{
				newHeight=MinHeightPixelSize;
			}
			ifmContainer.style.height=newHeight;
		}
	}
}
function RTE_DocEditor_AdjustWidth(strBaseElementID)
{
	var iMaxWidthSize=RTE_MaxWidthSize(strBaseElementID);
	var iMinWidthSize=RTE_MinWidthSize(strBaseElementID);
	var ifmContainer=RTE_GetEditorElement(strBaseElementID);
	if (ifmContainer !=null)
	{
		var ifmEditor=RTE_GetEditorIFrame(strBaseElementID);
		var contentWidth=ifmEditor.document.body.scrollWidth;
		var clientWidth=ifmEditor.document.body.clientWidth;
		var bodyWidth=ifmEditor.document.body.offsetWidth;
		var MaxWidthPixelSize=iMaxWidthSize * g_iCharWidth;
		var MinWidthPixelSize=iMinWidthSize * g_iCharWidth;
		contentWidth=((contentWidth < g_iCharWidth)? g_iCharWidth: contentWidth);
		if (clientWidth !=contentWidth && (contentWidth <=MaxWidthPixelSize || clientWidth < MaxWidthPixelSize) && (contentWidth >=MinWidthPixelSize || clientWidth > MinWidthPixelSize))
		{
			var newWidth=ifmContainer.style.width=bodyWidth+((contentWidth > MaxWidthPixelSize)? MaxWidthPixelSize : contentWidth)   - clientWidth;
			if (newWidth < MinWidthPixelSize)
			{
				newWidth=MinWidthPixelSize;
			}
			ifmContainer.style.width=newWidth;
		}
	}
}
function RTE_SetVisibiltyStyle(strBaseElementID,strVisiblity)
{
	var ifmContainer=RTE_GetEditorElement(strBaseElementID);
	var toolbarObject=RTE_GetEditorToolBar(strBaseElementID);
	if (null !=ifmContainer && null !=toolbarObject)
	{
		toolbarObject.style.visibility=strVisiblity;
		ifmContainer.style.visibility=strVisiblity;
	}
}
function RTE_SetWidthHeight(strBaseElementID,width,height)
{
	var ifmContainer=RTE_GetEditorElement(strBaseElementID);
	var toolbarObject=RTE_GetEditorToolBar(strBaseElementID);
	if (null !=toolbarObject && null !=ifmContainer)
	{
		if (width < 0)
		{
			width=0;
		}
		ifmContainer.style.width=width;
		var containterHeight=height - toolbarObject.offsetHeight;
		if (containterHeight < 0)
		{
			containterHeight=0;
		}
		ifmContainer.style.height=containterHeight;
	}
}
function RTE_GetMinimumHeight(strBaseElementID)
{
	var toolbarHeight=0;
	var toolbarObject=RTE_GetEditorToolBar(strBaseElementID);
	if (null !=toolbarObject)
	{
		toolbarHeight=toolbarObject.offsetHeight;
	}
	return toolbarHeight;
}
function RTE_GetMinimumWidth(strBaseElementID)
{
	var toolbarWidth=0;
	var toolbarObject=RTE_GetEditorToolBar(strBaseElementID);
	if (null !=toolbarObject)
	{
		toolbarWidth=toolbarObject.offsetWidth;
	}
	return toolbarWidth;
}
function RTE_GetIFrameContents(strBaseElementID)
{
	var strHtml, strText;
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	if (null==docEditor)
		return;
	strHtml=docEditor.body.innerHTML;
	return strHtml;
}
function RTE_GiveEditorFocus(strBaseElementID)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.overrides.GiveEditorFocus !=null)
	{
		return instanceVariables.overrides.GiveEditorFocus(strBaseElementID);
	}
	RTE_GetEditorIFrame(strBaseElementID).focus();
}
function RTE_GiveEditorFirstFocus(strBaseElementID)
{
	RTE_GiveEditorFocus(strBaseElementID);
	g_strRTEEditorFirstFocus=strBaseElementID;
}
function RTE_ConvertTextAreaToRichEdit(
			strBaseElementID,
			fRestrictedMode,
			fAllowHyperlink,
			strDirection,
			strWebLocale,
			fSimpleTextOnly,
			fEditable,
			fUseDynamicHeightSizing,
			iMaxHeightSize,
			iMinHeightSize,
			strMode,
			urlWebRoot,
			strThemeUrl,
			strBodyClassName,
			fAllowRelativeLinks,
			strBaseUrl,
			fUseDynamicWidthSizing,
			iMaxWidthSize,
			iMinWidthSize,
			fEnforceAccessibilityMode,
			fPreserveScript,
			fHookUpEvents,
			fGenerateToolbar
			)
{
	;
	if (!(browseris.ie5up && browseris.win32))
	{
		return;
	}
	fEnforceAccessibilityMode=(fEnforceAccessibilityMode==null || fEnforceAccessibilityMode);
	if (IsAccessibilityFeatureEnabled() && fEnforceAccessibilityMode)
	{
		return;
	}
	fSimpleTextOnly=(fSimpleTextOnly !=null && fSimpleTextOnly);
	fRestrictedMode=(fSimpleTextOnly)? true : fRestrictedMode;
	fEditable=(null==fEditable)?true:fEditable;
	fUseDynamicHeightSizing=		(fUseDynamicHeightSizing !=null && fUseDynamicHeightSizing);
	iMaxHeightSize=		(null==iMaxHeightSize || iMaxHeightSize <=0) ?
		g_iDefaultMaxHeightSize : iMaxHeightSize;
	iMinHeightSize=		(null==iMinHeightSize || iMinHeightSize <=0 || iMinHeightSize > iMaxHeightSize) ?
		g_iDefaultMinHeightSize : iMinHeightSize;
	fUseDynamicWidthSizing=(fUseDynamicWidthSizing !=null && fUseDynamicWidthSizing);
	iMaxWidthSize=(null==iMaxWidthSize || iMaxWidthSize <=0) ?
		g_iDefaultMaxWidthSize : iMaxWidthSize;
	iMinWidthSize=(null==iMinWidthSize || iMinWidthSize <=0 || iMinWidthSize > iMaxWidthSize) ?
		g_iDefaultMinWidthSize : iMinWidthSize;
	fHookUpEvents=(null==fHookUpEvents || fHookUpEvents);
	fGenerateToolbar=(null==fGenerateToolbar || fGenerateToolbar);
	if (strMode !="FullHtml")
		strMode="Compatible";
	if (null==strBodyClassName)
	{
		strBodyClassName="ms-formbody";
	}
	aSettings=new Array();
	RTE_InitializeExtendedRichTextSupport(strBaseElementID);
	var variables=RTE_GetEditorInstanceVariables(strBaseElementID);
	var fFullHtml=false;
	if (strMode=="FullHtml")
	{
		fFullHtml=true;
		fAllowHyperlink=false;
		variables.overrides.GetToolBarDefinition=			RTE_FullHtmlToolBarDefinitionFactory(
				fEnforceAccessibilityMode );
		aSettings.fRestrictedMode=true;
		aSettings.fAllowHyperlink=false;
		aSettings.fIsVisible=true;
	}
	else
	{
		aSettings.fRestrictedMode=fRestrictedMode;
		aSettings.fAllowHyperlink=fAllowHyperlink;
		aSettings.fIsVisible=!fSimpleTextOnly;
	}
	aSettings.urlWebRoot=(urlWebRoot==null || urlWebRoot=="/") ?
		"" : urlWebRoot;
	aSettings.fAllowRelativeLinks=(fAllowRelativeLinks==null) ? false : fAllowRelativeLinks;
	aSettings.fPreserveScript=(fPreserveScript==null) ? false : fPreserveScript;
	variables.aSettings=aSettings;
	var elemTextArea=RTE_GetEditorTextArea(strBaseElementID);
	var strHtmlToEdit=elemTextArea.innerText;
	if ((null==strHtmlToEdit) || (0==strHtmlToEdit.length))
	{
		strHtmlToEdit="<div></div>";
	}
	g_elemRTELastTextAreaConverted=elemTextArea;
	window.attachEvent("onload",
		new Function(
			"RTE_TextAreaWindow_OnLoad('"+strBaseElementID+"');"));
	var aHtmlToAppend=new Array();
	if (fGenerateToolbar)
	{
		aHtmlToAppend.push(RTE_GenerateToolBarHtmlFromSettings(
			strBaseElementID, strWebLocale, elemTextArea, aSettings));
	}
	aHtmlToAppend.push(RTE_GenerateIFrameEditorHtml(
		strBaseElementID, elemTextArea, fRestrictedMode, fAllowHyperlink));
	var strHtmlToAppend=aHtmlToAppend.join("");
	elemTextArea.insertAdjacentHTML("afterEnd", strHtmlToAppend);
	if (fHookUpEvents)
	{
		elemTextArea.onfocus=			new Function("RTE_TextArea_OnFocus('"+strBaseElementID+"')");
		elemTextArea.style.display="none";
		variables.onBeforeUnloadFunc=			new Function(
				"RTE_TransferIFrameContentsToTextArea('"+				strBaseElementID+"');");
		window.attachEvent("onbeforeunload", variables.onBeforeUnloadFunc);
		var findForm=elemTextArea;
		while (findForm.tagName!="FORM" && findForm.tagName!="WINDOW")
		{
			findForm=findForm.parentElement;
		}
		findForm.attachEvent("onsubmit",
			new Function(
				"RTE_TransferIFrameContentsToTextArea('"+strBaseElementID+"');"));
	}
	var aEditorHtml=new Array();
	aEditorHtml.push("<html><head>");
	if (null !=strBaseUrl && true==fAllowRelativeLinks)
	{
		 aEditorHtml.push("<base href=\"");
		 aEditorHtml.push(strBaseUrl);
		 aEditorHtml.push("\"/>");
	}
	aEditorHtml.push("<link rel=\"stylesheet\" type=\"text/css\" href=\"");
	aEditorHtml.push(RTE_GetServerRelativeStylesheetUrl("core.css", strWebLocale));
	aEditorHtml.push("\">");
	if (null !=strThemeUrl)
	{
		aEditorHtml.push("<link rel=\"stylesheet\" type=\"text/css\" href=\"");
		aEditorHtml.push(strThemeUrl);
		aEditorHtml.push("\">");
	}
	aEditorHtml.push("</head><body class=\"");
	aEditorHtml.push(strBodyClassName);
	aEditorHtml.push("\" style=\"background-color: white;border:none;\"></body></html>");
	var strEditorHtml=aEditorHtml.join("");
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	docEditor.designMode=(fEditable?"on":"off");
	docEditor=RTE_GetEditorDocument(strBaseElementID);
	docEditor.open("text/html", "replace");
	docEditor.write(strEditorHtml);
	docEditor.close();
	docEditor.body.scroll="yes";
	docEditor.body.wordWrap=false;
	docEditor.body.contentEditable=true;
	docEditor.body.innerHTML=strEditorHtml;
   	if (fHookUpEvents)
	{
		RTE_EventHookUp(strBaseElementID);
	}
	if (fRestrictedMode)
	{
		docEditor.body.ondragenter=new Function("RTE_OnDragEnter(this);");
		docEditor.body.ondragover=new Function("RTE_OnDragOver(this);");
		docEditor.body.ondragdrop=new Function("RTE_OnDrop(this);");
	}
	if (strDirection !="" &&
		strDirection !="None")
	{
		docEditor.dir=strDirection;
	}
	else
	{
		docEditor.dir=document.dir;
	}
	if (fRestrictedMode && !fFullHtml)
	{
		docEditor.body.setAttribute(
			g_strRTERestrictedModeAttributeName, "true");
		docEditor.body.onpaste=			new Function("RTE_OnPaste_Restricted('"+				strBaseElementID+"', this);");
	}
	if (fSimpleTextOnly)
	{
		docEditor.body.setAttribute(
			g_strRTESimpleTextOnlyAttributeName, "true");
	}
	if (fUseDynamicHeightSizing || fUseDynamicWidthSizing)
	{
		var strFuncCall="";
		if (fUseDynamicHeightSizing)
		{
			docEditor.body.style.wordWrap="break-word";
			docEditor.body.setAttribute(g_strRTEUseDynamicHeightSizing, "true");
			docEditor.body.setAttribute(
				g_strRTEMinHeightSizeAttributeName, iMinHeightSize);
			docEditor.body.setAttribute(
				g_strRTEMaxHeightSizeAttributeName, iMaxHeightSize);
		   strFuncCall="RTE_DocEditor_AdjustHeight('"+strBaseElementID+"');";
		}
		if (fUseDynamicWidthSizing)
		{
			docEditor.body.style.wordWrap="normal";
			docEditor.body.setAttribute(g_strRTEUseDynamicWidthSizing, "true");
			docEditor.body.setAttribute(
				g_strRTEMaxWidthSizeAttributeName, iMaxHeightSize);
			docEditor.body.setAttribute(
				g_strRTEMinWidthSizeAttributeName, iMinHeightSize);
			strFuncCall+="RTE_DocEditor_AdjustWidth('"+strBaseElementID+"');";
		}
		var ifmEditor=RTE_GetEditorIFrame(strBaseElementID);
		docEditor.attachEvent(
			"onkeydown",
			new Function(
			strFuncCall));
		ifmEditor.attachEvent(
			"onscroll",
			new Function(
			strFuncCall));
		window.attachEvent(
			 "onload",
			 new Function(
			strFuncCall));
		if (fHookUpEvents)
		{
			if (fUseDynamicHeightSizing)
			{
				RTE_DocEditor_AdjustHeight(strBaseElementID);
			}
			if (fUseDynamicWidthSizing)
			{
				RTE_DocEditor_AdjustWidth(strBaseElementID);
			}
		}
	}
	if (fAllowHyperlink)
	{
		docEditor.body.setAttribute(
			g_strRTEAllowHyperlinkAttributeName, "true");
	}
	docEditor.body.setAttribute(
		g_strRTEBaseElementIDAttributeName, strBaseElementID);
	docEditor.body.setAttribute(
		g_strRTEWebLocaleAttributeName, strWebLocale);
	g_rgstrRTEAllEditorsInThePage[g_rgstrRTEAllEditorsInThePage.length]=		strBaseElementID;
	if (fGenerateToolbar)
	{
		RTE_DisableToolBar(strBaseElementID);
			var ifmEditorObj=RTE_GetEditorElement(strBaseElementID);
			ifmEditorObj.tabIndex=elemTextArea.tabIndex;
		RTE_ToolBarMnemonicInitialization(strBaseElementID);
	}
}
function RTE_ToolBarMnemonicInitialization(strBaseElementID)
{
	var buttons=RTE_GetToolBarDefinition(strBaseElementID);
	if (buttons !=null)
	{
		for (var i=0; i < buttons.length; i++)
		{
			if (buttons[i].strMnemonic !=undefined)
			{
				var btn=RTE_TB_GetToolBarButton(strBaseElementID, buttons[i].strMnemonic);
				btn.toolbarButtonIndex=i;
				btn.strBaseElementID=strBaseElementID;
			}
		}
	}
}
function RTE_DeleteEditor(
	strBaseElementID)
{
	var variables=RTE_GetEditorInstanceVariables(strBaseElementID);
	window.detachEvent("onbeforeunload", variables.onBeforeUnloadFunc);
}
function RTE_DisableToolBar(strBaseElementID)
{
	var variables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (variables !=null && variables.overrides.DisableToolBar !=null)
	{
		return variables.overrides.DisableToolBar(strBaseElementID);
	}
	var buttons=RTE_GetToolBarDefinition(strBaseElementID);
	if (buttons !=null)
	{
		for (var i=0; i < buttons.length; i++)
		{
			if (buttons[i].strMnemonic !=undefined)
			{
				RTE_TB_SetButtonDisabled(
					RTE_TB_GetToolBarButton(
						strBaseElementID, buttons[i].strMnemonic));
			}
		}
	}
}
function RTE_ResetAllToolBarStates(strBaseElementID)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=		null && instanceVariables.overrides.ResetAllToolBarStates !=null)
	{
		return instanceVariables.overrides.ResetAllToolBarStates(
			strBaseElementID);
	}
	ifmMenu=RTE_DD_GetMenuFrame();
	if (ifmMenu && ifmMenu.document==document)
	{
		return;
	}
	if ((browseris.ie55up) &&
		(RTE_EditorWithTheFocus() !=strBaseElementID) &&
		(RTE_ToolBarButtonWithTheFocus()==null) &&
		(!RTE_DD_MenuIsOpen()) &&
		(!g_fRTEDialogIsOpen))
	{
		RTE_DisableToolBar(strBaseElementID);
		return;
	}
	var aElemChain=RTE_GetCurrentSelectionChain(strBaseElementID);
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	var hasActiveSelection=RTE_HasActiveSelection(docEditor);
	var buttons=RTE_GetToolBarDefinition(strBaseElementID);
	if (buttons !=null)
	{
		for (var i=0; i < buttons.length; i++)
		{
			if (buttons[i].enabler !=undefined)
			{
				buttons[i].enabler.SetEnabled(
					strBaseElementID, docEditor, aElemChain,
					buttons[i].strMnemonic);
			}
		}
	}
}
function RTE_EventHookUp(strBaseElementID)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	docEditor.body.onkeydown=		new Function("RTE_OnKeyDown('"+strBaseElementID+"', this)");
	docEditor.body.onkeyup=		new Function("RTE_OnKeyUp('"+strBaseElementID+"', this)");
	docEditor.body.onmouseup=		new Function("RTE_OnMouseUp('"+strBaseElementID+"')");
	docEditor.body.onselectstart=		new Function("RTE_OnSelectStart('"+strBaseElementID+"', this)");
	docEditor.body.oncontextmenu=new Function("return false");
	RTE_GetEditorElement(strBaseElementID).onblur=		new Function("RTE_OnBlur('"+strBaseElementID+"');");
	RTE_GetEditorElement(strBaseElementID).onfocus=		new Function("RTE_OnFocus('"+strBaseElementID+"');");
}
function RTE_TransferTextAreaContentsToIFrame(strBaseElementID)
{
	var elemTextArea=RTE_GetEditorTextArea(strBaseElementID);
	var strHtmlToEdit=elemTextArea.innerText;
	var elemSave=document.getElementById(strBaseElementID+"_spSave");
	if (elemSave !=null && elemSave.value !="")
		strHtmlToEdit=elemSave.value;
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	if (null==docEditor)
		return;
	if ((null==strHtmlToEdit) || (0==strHtmlToEdit.length))
	{
		strHtmlToEdit="<div></div>";
	}
	var fPreserveScript=false;
	var variables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (variables !=null && variables.aSettings !=null)
	{
		fPreserveScript=aSettings.fPreserveScript;
	}
	if (fPreserveScript)
	{
		strHtmlToEdit="<body>"+strHtmlToEdit;
	}
	docEditor.body.innerHTML=strHtmlToEdit;
	if (strBaseElementID==g_strRTEEditorFirstFocus)
	{
	   var tr=docEditor.body.createTextRange();
	   tr.collapse(true);
	   tr.select();
	   g_strRTEEditorFirstFocus=null;
	}
}
function RTE_TransferIFrameContentsToTextArea(strBaseElementID)
{
	var strHtml, strText;
	var elemTextArea=RTE_GetEditorTextArea(strBaseElementID);
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	if (null==docEditor)
		return;
	strHtml=docEditor.body.innerHTML;
	var elemSave=document.getElementById(strBaseElementID+"_spSave");
	if (elemSave !=null)
	{
		elemSave.value=strHtml;
		elemTextArea.innerText="<div></div>";
	}
	else
	{
		elemTextArea.innerText=strHtml;
	}
}
function RTE_TextAreaWindow_OnLoad(strBaseElementID)
{
	;
	RTE_TransferTextAreaContentsToIFrame(strBaseElementID);
	RTE_SaveSelection(strBaseElementID);
}
function RTE_TextArea_OnFocus(strBaseElementID)
{
	;
	RTE_GiveEditorFocus(strBaseElementID);
}
function RTE_OnFocus(strBaseElementID)
{
	;
	g_strRTETextEditorWithTheFocus=strBaseElementID;
	RTE_GetEditorDocument(strBaseElementID).body.contentEditable=true;
	if ((g_strRTEPrevTextEditor !=null) && (g_strRTEPrevTextEditor.length > 0) && (g_strRTEPrevTextEditor !=strBaseElementID))
	{
		RTE_DisableToolBar(g_strRTEPrevTextEditor);
	}
	RTE_StartResetToolBarTimer(strBaseElementID);
}
function RTE_OnBlur(strBaseElementID)
{
	;
	try
	{
		RTE_SaveSelection(strBaseElementID);
	}
	catch (e)
	{
	}
	g_strRTEPrevTextEditor=g_strRTETextEditorWithTheFocus;
	g_strRTETextEditorWithTheFocus=null;
	RTE_StartResetToolBarTimer(strBaseElementID);
	RTE_DD_CloseMenu();
	if ((RTE_ToolBarButtonWithTheFocus()==null) &&
		(!g_fRTEDialogIsOpen))
	{
		RTE_DisableToolBar(strBaseElementID);
		RTE_DD_CloseMenu();
	}
}
function RTE_OnDragEnter(elemThis)
{
	;
	var evtThis=elemThis.document.parentWindow.event;
	if (null !=evtThis)
	{
		evtThis.dataTransfer.dropEffect="none";
		evtThis.returnValue=false;
	}
}
function RTE_OnDragOver(elemThis)
{
	;
	var evtThis=elemThis.document.parentWindow.event;
	if (null !=evtThis)
	{
		evtThis.dataTransfer.dropEffect="none";
		evtThis.returnValue=false;
	}
}
function RTE_OnDrop(elemThis)
{
	;
	var evtThis=elemThis.document.parentWindow.event;
	if (null !=evtThis)
	{
		evtThis.dataTransfer.dropEffect="none";
		evtThis.returnValue=false;
	}
}
function RTE_FInterpretTextAsBoolean(strBoolVal)
{
   if (strBoolVal.toLowerCase()=="true")
	  return true;
   else
	  return false;
}
function RTE_ToggleEnableShortcuts(evtSource)
{
	var nKeyCode=evtSource.keyCode;
	var fAltLeft=evtSource.altLeft;
	var fCtrlLeft=evtSource.ctrlLeft;
	var fShiftLeft=evtSource.shiftLeft;
	if (nKeyCode==g_RTE_EnableShortcutsKey.charCodeAt(0) &&
		fAltLeft &&
		fCtrlLeft &&
		fShiftLeft)
	{
		g_RTE_EnableShortcuts=!RTE_ShortcutsEnabled();
	}
}
function RTE_ShortcutsEnabled()
{
	if (typeof(g_RTE_EnableShortcuts)=="undefined")
		return true;
	return g_RTE_EnableShortcuts;
}
function RTE_OnKeyDown(strBaseElementID, elem)
{
	if (RTE_DD_MenuIsOpen())
	{
		RTE_DD_OnKeyDown(elem);
		return;
	}
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.overrides.OnKeyDown !=null)
	{
		return instanceVariables.overrides.OnKeyDown(strBaseElementID, elem);
	}
	RTE_SaveSelection(strBaseElementID);
	var fRestrictedMode=RTE_IsInRestrictedMode(strBaseElementID);
	var fSimpleTextOnly=RTE_IsSimpleTextOnly(strBaseElementID);
	var fAllowHyperlink=RTE_IsHyperlinkAllowed(strBaseElementID);
	var elemDocument=elem.document;
	var evtSource=elem.document.parentWindow.event;
	var nKeyCode=evtSource.keyCode;
	var fAltKey=evtSource.altKey;
	var fCtrlKey=evtSource.ctrlKey;
	var fShiftKey=evtSource.shiftKey;
	var fToolbarNavigate=false;
	RTE_ToggleEnableShortcuts(evtSource);
   if (browseris.ie5up && !browseris.ie55up && (!fCtrlKey && !fAltKey && !fShiftKey))
   {
	  switch (nKeyCode)
	  {
		 case 9:
			var tr=RTE_GetEditorDocument(strBaseElementID).body.createTextRange();
			tr.collapse(true);
			tr.select();
			break;
	  }
   }
	if (!fCtrlKey && !fAltKey && fShiftKey)
	{
		switch (nKeyCode)
		{
			case 9:
				RTE_GetEditorDocument(strBaseElementID).body.contentEditable=false;
				var tr=RTE_GetEditorDocument(strBaseElementID).body.createTextRange();
				tr.collapse(true);
				tr.select();
				break;
		}
	}
	else if (!fCtrlKey && !fAltKey && !fShiftKey)
	{
		switch (nKeyCode)
		{
			case 13:
				if (instanceVariables.hoverButton !=null)
				{
					evtSource.returnValue=false;
					instanceVariables.hoverButton.children(0).click();
				}
				break;
		}
	}
	else if (fCtrlKey && RTE_ShortcutsEnabled())
	{
		switch (nKeyCode)
		{
			case 192:
				fToolbarNavigate=true;
				evtSource.returnValue=RTE_MoveFocusBackwards(strBaseElementID, elemDocument.activeElement);
				break;
			case 49:
				fToolbarNavigate=true;
				evtSource.returnValue=RTE_MoveFocusForwards(strBaseElementID, elemDocument.activeElement);
				break;
		}
		if ((L_BoldKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_BoldShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_BoldAltKey_TEXT )==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEBoldMnemonic).children(0).click();
			}
		}
		else if ((L_SelectAllKey_TEXT.charCodeAt(0)==nKeyCode)
			&& (RTE_FInterpretTextAsBoolean(L_BoldShiftKey_TEXT)==fShiftKey)
			&& (RTE_FInterpretTextAsBoolean(L_BoldAltKey_TEXT )==fAltKey))
		{
			evtSource.returnValue=false;
			var docEditor=RTE_GetEditorDocument(strBaseElementID);
			var docTextRange=docEditor.body.createTextRange();
			docTextRange.select();
		}
		else if (( L_ItalicKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_ItalicShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_ItalicAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEItalicMnemonic).children(0).click();
			}
		}
		else if (( L_UnderlineKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_UnderlineShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_UnderlineAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEUnderlineMnemonic).children(0).click();
			}
		}
		else if (( L_JustifyLeftKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_JustifyLeftShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_JustifyLeftAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEJustifyLeftMnemonic).children(0).click();
			}
		}
		else if (( L_JustifyCenterKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_JustifyCenterShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_JustifyCenterAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEJustifyCenterMnemonic).children(0).click();
			}
		}
		else if (( L_JustifyRightKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_JustifyRightShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_JustifyRightAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEJustifyRightMnemonic).children(0).click();
			}
		}
		else if (( L_IndentKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_IndentShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_IndentAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEIndentMnemonic).children(0).click();
			}
		}
		else if (( L_CreateLinkKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_CreateLinkShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_CreateLinkAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
		   if (!fSimpleTextOnly && (!fRestrictedMode || fAllowHyperlink))
		   {
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTECreateLinkMnemonic).children(0).click();
			}
		}
		else if (( L_SelectFontNameKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_SelectFontNameShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_SelectFontNameAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEFontNameMnemonic).children(0).click();
			}
		}
		else if (( L_SelectFontSizeKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_SelectFontSizeShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_SelectFontSizeAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEFontSizeMnemonic).children(0).click();
			}
		}
		else if (( L_InsertTableKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_InsertTableShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_InsertTableAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEInsertTableMnemonic).children(0).click();
			}
		}
		else if (( L_SplitCellKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_SplitCellShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_SplitCellAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTESplitCellMnemonic).children(0).click();
			}
		}
		else if (( L_MergeCellKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_MergeCellShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_MergeCellAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEMergeCellMnemonic).children(0).click();
			}
		}
		else if (( parseInt(L_DeleteColumnKeyCode_TEXT)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_DeleteColumnShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_DeleteColumnAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_DeleteColumn(strBaseElementID);
			}
		}
		else if (( parseInt(L_DeleteRowKeyCode_TEXT)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_DeleteRowShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_DeleteRowAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_DeleteRow(strBaseElementID);
			}
		}
		else if (( L_InsertCellLeftKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_InsertCellLeftShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_InsertCellLeftAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_InsertCellLeft(strBaseElementID);
			}
		}
		else if (( L_InsertCellRightKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_InsertCellRightShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_InsertCellRightAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_InsertCellRight(strBaseElementID);
			}
		}
		else if (( parseInt(L_InsertColumnLeftKeyCode_TEXT)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_InsertColumnLeftShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_InsertColumnLeftAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_InsertColumnLeft(strBaseElementID);
			}
		}
		else if (( parseInt(L_InsertColumnRightKeyCode_TEXT)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_InsertColumnRightShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_InsertColumnRightAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_InsertColumnRight(strBaseElementID);
			}
		}
		else if (( parseInt(L_InsertRowAboveKeyCode_TEXT)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_InsertRowAboveShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_InsertRowAboveAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_InsertRowAbove(strBaseElementID);
			}
		}
		else if (( parseInt(L_InsertRowBelowKeyCode_TEXT)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_InsertRowBelowShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_InsertRowBelowAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_InsertRowBelow(strBaseElementID);
			}
		}
	  else if (( L_SelectForeColorKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_SelectForeColorShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_SelectForeColorAltKey_TEXT)==fAltKey))
	  {
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEForeColorMnemonic).children(0).click();
			}
	  }
	   else if (( L_SelectBackColorKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_SelectBackColorShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_SelectBackColorAltKey_TEXT)==fAltKey))
	   {
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEBackColorMnemonic).children(0).click();
			}
	   }
		else if (( L_UnorderedListKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_UnorderedListShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_UnorderedListAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEUnorderedListMnemonic).children(0).click();
			}
		}
	  else if (( L_OrderedListKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_OrderedListShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_OrderedListAltKey_TEXT)==fAltKey))
	  {
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEOrderedListMnemonic).children(0).click();
			}
	  }
		else if (( L_OutdentKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_OutdentShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_OutdentAltKey_TEXT)==fAltKey))
		{
			evtSource.returnValue=false;
			if (!fSimpleTextOnly)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEOutdentMnemonic).children(0).click();
			}
		}
	  else if (( L_InsertImageKey_TEXT.charCodeAt(0)==nKeyCode)
		   && (RTE_FInterpretTextAsBoolean(L_InsertImageShiftKey_TEXT)==fShiftKey)
		   && (RTE_FInterpretTextAsBoolean(L_InsertImageAltKey_TEXT)==fAltKey))
	  {
			evtSource.returnValue=false;
			if (!fRestrictedMode)
			{
				RTE_TB_GetToolBarButton(strBaseElementID, g_strRTEInsertImageMnemonic).children(0).click();
			}
	  }
		else if (( L_LTRKey_VALUE==nKeyCode)
		   && (fShiftKey))
		{
			evtSource.returnValue=false;
			RTE_TB_GetToolBarButton(strBaseElementID, g_strRTELTRMnemonic).children(0).click();
		}
		else if (( L_RTLKey_VALUE==nKeyCode)
		   && (fShiftKey))
		{
			evtSource.returnValue=false;
			RTE_TB_GetToolBarButton(strBaseElementID, g_strRTERTLMnemonic).children(0).click();
		}
	}
	if (!fToolbarNavigate)
	{
		RTE_TB_RemoveLastToolBarHover(strBaseElementID);
	}
}
function RTE_OnKeyUp(strBaseElementID, elem)
{
	;
	RTE_StartResetToolBarTimer(strBaseElementID);
	var evtSource=elem.document.parentWindow.event;
	var nKeyCode=evtSource.keyCode;
	if (nKeyCode==16  ||
		nKeyCode==17  ||
		nKeyCode==9 )
		RTE_SaveSelection(strBaseElementID);
}
function RTE_OnSelectStart(strBaseElementID, elem)
{
	var aChain=RTE_GetCurrentSelectionChain(strBaseElementID);
	if (elem.document.parentWindow.event.ctrlKey &&
		!elem.document.parentWindow.event.shiftKey &&
		RTE_IsElementInChain(aChain, "A"))
	{
		RTE_ClickLink(strBaseElementID);
	}
}
function RTE_OnMouseUp(strBaseElementID)
{
	;
	RTE_SaveSelection(strBaseElementID);
	RTE_DD_CloseMenu();
	RTE_TB_RemoveLastToolBarHover(strBaseElementID);
	RTE_StartResetToolBarTimer(strBaseElementID);
}
function RTE_OnPaste_Restricted(strBaseElementID, elem)
{
	;
	RTE_SaveSelection(strBaseElementID);
	elem.document.parentWindow.event.returnValue=false;
	RTE_RestoreSelection(strBaseElementID);
	var rngSelection=RTE_GetSelection(strBaseElementID);
	var strFromClipboard=window.clipboardData.getData("Text");
	if ((null !=rngSelection) && (null !=strFromClipboard))
	{
		rngSelection.text=strFromClipboard;
	}
}
var g_cRTEResetToolBarTimerQueue;
function RTE_StartResetToolBarTimer(strBaseElementID)
{
	if (g_cRTEResetToolBarTimerQueue==null)
	{
		g_cRTEResetToolBarTimerQueue=new Array();
	}
	if (g_cRTEResetToolBarTimerQueue[strBaseElementID]==null)
	{
		g_cRTEResetToolBarTimerQueue[strBaseElementID]=0;
	}
++g_cRTEResetToolBarTimerQueue[strBaseElementID];
	window.setTimeout("RTE_OnResetToolBarTimer(\""+strBaseElementID+"\")", 200);
}
function RTE_OnResetToolBarTimer(strBaseElementID)
{
	;
	--g_cRTEResetToolBarTimerQueue[strBaseElementID];
	if (0==g_cRTEResetToolBarTimerQueue[strBaseElementID])
	{
		RTE_ResetAllToolBarStates(strBaseElementID);
	}
}
var g_fRTEFirstTimeGenerateCalled=true;
function RTE_GenerateIFrameEditorHtml(strBaseElementID, elemTextArea, fRestrictedMode, fAllowHyperlink)
{
	var aHtmlRet=new Array();
	if (g_fRTEFirstTimeGenerateCalled)
	{
		g_fRTEFirstTimeGenerateCalled=false;
		aHtmlRet.push("<iframe id=\"");
		aHtmlRet.push(g_strRTETextEditorPullDownMenuID);
		aHtmlRet.push("\"  src=\"");
		aHtmlRet.push(RTE_GetServerRelativeUnlocalizedImageUrl("blank.gif"));
		aHtmlRet.push("\" class=\"");
		aHtmlRet.push(g_strRTEToolbarClassName);
		aHtmlRet.push("\" TABINDEX=-1 style=\"display:none; position:absolute;\" ");
		aHtmlRet.push(g_strRTEBaseElementIDAttributeName);
		aHtmlRet.push("=\"x\" ");
		aHtmlRet.push(g_strRTEWebLocaleAttributeName);
		aHtmlRet.push("=\"x\" ");
		aHtmlRet.push(g_strRTEButtonMnemonicAttributeName);
		aHtmlRet.push("=\"x\"></iframe>");
		document.body.insertAdjacentHTML("afterBegin", "<object id=\"RTEDialogHelper\" name=\"RTEDialogHelper\" classid=\"clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b\" style=\"width:0px; height:0px;\" TABINDEX=-1></OBJECT>");
	}
	var strWidthNameAndAttribute=""
	var strHeightNameAndAttribute=""
	var strClassNameAndAttribute="";
	var cRows=elemTextArea.getAttribute("rows");
	if ((fRestrictedMode) && (null !=cRows) && (cRows > 0))
	{
		strWidthNameAndAttribute="";
		strHeightNameAndAttribute=" height=\""+cRows * g_iLineHeight+"\"";
		if (fAllowHyperlink)
		{
			strClassNameAndAttribute=" class=\"ms-rtelonger\"";
		}
		else
		{
			strClassNameAndAttribute=" class=\"ms-rtelong\"";
		}
	}
	else
	{
		strWidthNameAndAttribute=" width=\""+(g_iCharWidth*elemTextArea.cols)+"\"";
		strHeightNameAndAttribute=" height=\""+(g_iLineHeight*elemTextArea.rows)+"\"";
		strClassNameAndAttribute="";
	}
	aHtmlRet.push("<div><iframe ");
	aHtmlRet.push(strWidthNameAndAttribute);
	aHtmlRet.push(strHeightNameAndAttribute);
	aHtmlRet.push(strClassNameAndAttribute);
	aHtmlRet.push(" id=\"");
	aHtmlRet.push(RTE_GetEditorIFrameID(strBaseElementID));
	aHtmlRet.push("\" title=\"");
	aHtmlRet.push(L_EditorIFrameTitle_TEXT);
	aHtmlRet.push("\" src=\"");
	aHtmlRet.push(RTE_GetServerRelativeUnlocalizedImageUrl("blank.gif"));
	aHtmlRet.push("\"></iframe></div>");
	return aHtmlRet.join("");
}
function RTE_TB_GenerateSimpleToolBarButtonHtml(
	strBaseElementID, strButtonMnemonic,
	strOnClickJScriptFunction, strOnClickArg,
	strImageUrl, strText, strToolTip)
{
	strJs="if (!(RTE_TB_GetToolBarButton('"+strBaseElementID+		"', '"+strButtonMnemonic+"').disabled)) { ";
	strJs+=strOnClickJScriptFunction+"('"+strBaseElementID+"'";
	if (strOnClickArg !=null)
		strJs+=", "+strOnClickArg;
	strJs+="); }";
	return RTE_TB_GenerateToolBarButtonHtml(
		strBaseElementID, strButtonMnemonic, strJs,
		strImageUrl, strText, strToolTip);
}
function RTE_GenerateFontNameToolBarButtonHtml(strBaseElementID, strWebLanguage, fRestrictedMode, fShowImageWithDropArrow)
{
	var strHtmlRet="";
	strHtmlRet+=RTE_TB_GenerateOpenCellButtonHtml(strBaseElementID, g_strRTEFontNameMnemonic, "RTE_SaveSelection('"+strBaseElementID+"'); RTE_DD_OpenFontNameOrSizeSelector('"+strBaseElementID+"' ,'"+strWebLanguage+"', true)");
	if (fRestrictedMode || fShowImageWithDropArrow)
	{
		strHtmlRet+="<img src=\""+RTE_GetServerRelativeImageUrl("rtefnt.gif")+"\" alt=\""+L_FontNameToolTip_TEXT+"\" border=0 width=16 height=16 unselectable=\"on\">";
		if (fShowImageWithDropArrow)
		{
			strHtmlRet+="<img alt=\""+L_FontSizeToolTip_TEXT+"\" src=\""+RTE_GetServerRelativeUnlocalizedImageUrl("menudark.gif")+"\" border=0 width=13 height=13 unselectable=\"on\">";
		}
	}
	else
	{
		strHtmlRet+="<label style=\"margin-left: 2px; margin-right: 2px;\">"+L_FontNameLabel_TEXT+"</label>&nbsp;<img alt=\""+				L_FontNameToolTip_TEXT+"\" src=\""+RTE_GetServerRelativeImageUrl("rtednar.gif")+"\" border=0 width=13 height=13 unselectable=\"on\">";
	}
	strHtmlRet+=RTE_TB_GenerateCloseCellButtonHtml();
	return strHtmlRet;
}
function RTE_GenerateFontSizeToolBarButtonHtml(strBaseElementID, strWebLanguage, fRestrictedMode, fShowImageWithDropArrow)
{
	var strHtmlRet="";
	strHtmlRet+=RTE_TB_GenerateOpenCellButtonHtml(strBaseElementID, g_strRTEFontSizeMnemonic, "RTE_SaveSelection('"+strBaseElementID+"'); RTE_DD_OpenFontNameOrSizeSelector('"+strBaseElementID+"', '"+strWebLanguage+"', false)");
	if (fRestrictedMode || fShowImageWithDropArrow)
	{
		strHtmlRet+="<img src=\""+RTE_GetServerRelativeImageUrl("rtefntsz.gif")+"\" alt=\""+L_FontSizeToolTip_TEXT+"\" border=0 width=16 height=16 unselectable=\"on\">";
		if (fShowImageWithDropArrow)
		{
			strHtmlRet+="<img alt=\""+L_FontSizeToolTip_TEXT+"\" src=\""+RTE_GetServerRelativeUnlocalizedImageUrl("menudark.gif")+"\" border=0 width=13 height=13 unselectable=\"on\">";
		}
	}
	else
	{
		strHtmlRet+="<label style=\"margin-left: 2px; margin-right: 2px;\">"+L_FontSizeLabel_TEXT+"</label>&nbsp;<img alt=\""+				L_FontSizeToolTip_TEXT+"\" src=\""+RTE_GetServerRelativeImageUrl("rtednar.gif")+"\" border=0 width=13 height=13 unselectable=\"on\">";
	}
	strHtmlRet+=RTE_TB_GenerateCloseCellButtonHtml();
	return strHtmlRet;
}
function RTE_GenerateForeColorToolBarButtonHtml(strBaseElementID, strWebLanguage)
{
	var strHtmlRet="";
	strHtmlRet+=RTE_TB_GenerateOpenCellButtonHtml(strBaseElementID, g_strRTEForeColorMnemonic);
	strHtmlRet+="<a TABINDEX=-1 href=\"#\" onfocus=\"RTE_TB_OnFocus('"+strBaseElementID+"', this);\" onblur=\"RTE_TB_OnBlur('"+strBaseElementID+"', this);\" onclick=\"RTE_DD_OpenForeColorSelector('"+strBaseElementID+"', '"+strWebLanguage+"'); return false;\" unselectable=\"on\"><img src=\""+RTE_GetServerRelativeImageUrl("rtetxclr.gif")+"\" alt=\""+			L_ForeColorToolTip_TEXT+"\" border=0 width=16 height=16 unselectable=\"on\"></a>";
	strHtmlRet+=RTE_TB_GenerateCloseCellButtonHtml();
	return strHtmlRet;
}
function RTE_GenerateToolBarHtml(
	strBaseElementID, strWebLanguage, elemTextArea,
	fRestrictedMode, fAllowHyperlink, fIsVisible)
{
	aSettings=new Array();
	aSettings.fRestrictedMode=fRestrictedMode;
	aSettings.fAllowHyperlink=fAllowHyperlink;
	aSettings.fIsVisible=fIsVisible;
	RTE_GenerateToolBarHtmlFromSettings(
		strBaseElementID, strWebLanguage, elemTextArea, aSettings);
}
function RTE_GenerateToolBarHtmlFromSettings(
	strBaseElementID, strWebLanguage, elemTextArea, aSettings)
{
	var strClassAttribute=" class=\""+g_strRTEToolbarClassName+"\" ";
	var strWidthAttribute=		" width=\""+elemTextArea.currentStyle.width+"\" ";
	var strDisplayStyle=		aSettings.fIsVisible ? " style=\"border:solid 1px #c4c4c4;\"" : " style=\"display:none;\" ";
	if (aSettings.fRestrictedMode)
	{
		if (aSettings.fAllowHyperlink)
		{
			strClassAttribute=" class=\""+g_strRTEToolbarClassName+" ms-longer\" ";
		}
		else
		{
			strClassAttribute=" class=\""+g_strRTEToolbarClassName+" ms-long\" ";
		}
		strWidthAttribute="";
	}
	var aHtmlRet=new Array();
	aHtmlRet.push("<table cellpadding=0 cellspacing=0 id='");
	aHtmlRet.push(strBaseElementID);
	aHtmlRet.push("_toolbar' ");
	aHtmlRet.push(strClassAttribute);
	aHtmlRet.push(strWidthAttribute);
	aHtmlRet.push(strDisplayStyle);
	aHtmlRet.push("><tr><td><table cellspacing=0 cellpadding=0 border=0><tr>");
	var buttons=RTE_GetToolBarDefinition(strBaseElementID, strWebLanguage);
	if (buttons !=null)
	{
		for (var i=0; i < buttons.length; i++)
		{
			aHtmlRet.push(buttons[i].Generate(strBaseElementID, strWebLanguage));
		}
	}
	aHtmlRet.push("</tr></table></td></tr></table>");
	return aHtmlRet.join("");
}
function RTE_GenerateBackColorToolBarButtonHtml(strBaseElementID, strWebLanguage)
{
	var strHtmlRet="";
	strHtmlRet+=RTE_TB_GenerateOpenCellButtonHtml(strBaseElementID, g_strRTEBackColorMnemonic);
	strHtmlRet+="<a TABINDEX=-1 href=\"#\" onfocus=\"RTE_TB_OnFocus('"+strBaseElementID+"', this);\" onblur=\"RTE_TB_OnBlur('"+strBaseElementID+"', this);\" onclick=\"RTE_DD_OpenBackColorSelector('"+strBaseElementID+"', '"+strWebLanguage+"'); return false;\" unselectable=\"on\"><img src=\""+RTE_GetServerRelativeImageUrl("rtebkclr.gif")+"\" alt=\""+			L_BackColorToolTip_TEXT+"\" border=0 width=16 height=16 unselectable=\"on\"></a>";
	strHtmlRet+=RTE_TB_GenerateCloseCellButtonHtml();
	return strHtmlRet;
}
function RTE_InsertTable(strBaseElementID)
{
	var tableOpts=RTE_ModalDialog(
		strBaseElementID, 'InsertTable', g_RTE_Dialog_Width, g_RTE_Dialog_Height, null );
	if (tableOpts !=null)
	{
		var cols=tableOpts[0];
		var rows=tableOpts[1];
		var tableHtml='<TABLE STYLE="display: inline; font-size: 1em; border-collapse: collapse" BORDER="1">';
		for (var i=0; i < rows;++i)
		{
			tableHtml+='<TR>';
			for (var j=0; j < cols;++j)
			{
				tableHtml+='<TD style="vertical-align:TOP;" CLASS="ms-rtetablecells"><div></div></TD>';
			}
			tableHtml+="</TR>";
		}
		tableHtml+="</TABLE>";
		RTE_GetSelection(strBaseElementID).pasteHTML(tableHtml);
		if (RTE_UseDynamicHeightSizing(strBaseElementID))
		{
			RTE_DocEditor_AdjustHeight(strBaseElementID);
		}
	}
}
function RTE_CreateLink(strBaseElementID)
{
	RTE_SaveSelection(strBaseElementID);
	var fAllowRelativeLinks=false;
	var variables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (variables !=null && variables.aSettings !=null)
	{
		fAllowRelativeLinks=variables.aSettings.fAllowRelativeLinks;
	}
	var dialogArgs=new Array();
	dialogArgs.text=RTE_GetCurrentSelectionRange(strBaseElementID).text;
	dialogArgs.allowRelativeLinks=fAllowRelativeLinks;
	var opts=RTE_ModalDialog(
		strBaseElementID,
		'CreateLink',
		g_RTE_Dialog_Width,
		g_RTE_Dialog_Height,
		dialogArgs);
	if (opts !=null)
	{
		var href=STSHtmlEncode(opts[1]);
		var text=STSHtmlEncode(opts[0]);
		if (IsSafeHrefAlert(href,fAllowRelativeLinks))
		{
			RTE_GetSelection(strBaseElementID).pasteHTML(
				'<a href="'+href+'">'+text+'</a>');
		}
	}
}
function RTE_ClickLink(strBaseElementID)
{
	if (g_fRestoreSelection)
	{
		return;
	}
	RTE_SaveSelection(strBaseElementID);
	var aChain=RTE_GetCurrentSelectionChain(strBaseElementID);
	var aElem=null;
	for (var iChain=0; iChain < aChain.length; iChain++)
	{
		aElem=aChain[iChain];
		if (aElem.tagName=="A")
		{
			open(aElem.href);
			break;
		}
	}
}
function RTE_InsertImage(strBaseElementID)
{
	RTE_SaveSelection(strBaseElementID);
	var opts=RTE_ModalDialog(
		strBaseElementID, 'InsertImage', g_RTE_Dialog_Width, g_RTE_Dialog_Height, null );
	if (opts !=null)
	{
		var href=STSHtmlEncode(opts[1]);
		var altText=STSHtmlEncode(opts[0]);
		var fAllowRelativeLinks=false;
		var variables=RTE_GetEditorInstanceVariables(strBaseElementID);
		if (variables !=null && variables.aSettings !=null)
		{
			fAllowRelativeLinks=variables.aSettings.fAllowRelativeLinks;
		}
		if (IsSafeHrefAlert(href,fAllowRelativeLinks))
		{
			var imgHtml='<IMG SRC="'+href+'" ALT="'+altText+'">';
			RTE_GetSelection(strBaseElementID).pasteHTML(imgHtml);
		}
		if(RTE_UseDynamicHeightSizing(strBaseElementID))
		{
			RTE_DocEditor_AdjustHeight(strBaseElementID);
		}
	}
}
function RTE_HtmlSource(strBaseElementID)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	var currentContent=new Array;
	currentContent.value=docEditor.body.innerHTML;
	currentContent.dir=docEditor.dir;
	var variables=RTE_GetEditorInstanceVariables(strBaseElementID);
	docEditor.body.innerHTML=showModalDialog(
		variables.aSettings.urlWebRoot+'/_layouts/zoombldr.aspx',
		currentContent,
		'dialogHeight: 550px; dialogWidth:500px; help: no; status:no; '+			'resizable: yes');
	var docTextRange=docEditor.body.createTextRange();
	docTextRange.select();
	docTextRange.scrollIntoView(false);
	if (RTE_UseDynamicHeightSizing(strBaseElementID))
	{
		RTE_DocEditor_AdjustHeight(strBaseElementID);
	}
}
function RTE_GenerateInsertTableElementToolBarButtonHtml(
	strBaseElementID, strWebLanguage)
{
	var variables=RTE_GetEditorInstanceVariables(strBaseElementID);
	variables.functions[g_strRTEInsertRowAbove]=RTE_InsertRowAbove;
	variables.functions[g_strRTEInsertRowBelow]=RTE_InsertRowBelow;
	variables.functions[g_strRTEInsertColumnLeft]=RTE_InsertColumnLeft;
	variables.functions[g_strRTEInsertColumnRight]=RTE_InsertColumnRight;
	variables.functions[g_strRTEInsertCellLeft]=RTE_InsertCellLeft;
	variables.functions[g_strRTEInsertCellRight]=RTE_InsertCellRight;
	return RTE_GenerateTableToolBarButtonHtml(
		strBaseElementID, strWebLanguage, g_strRTEInsertTableElementMnemonic,
		L_InsertTableElementToolTip_TEXT, "rteirow.gif");
}
function RTE_GenerateDeleteTableElementToolBarButtonHtml(
	strBaseElementID, strWebLanguage)
{
	var variables=RTE_GetEditorInstanceVariables(strBaseElementID);
	variables.functions[g_strRTEDeleteRow]=RTE_DeleteRow;
	variables.functions[g_strRTEDeleteColumn]=RTE_DeleteColumn;
	return RTE_GenerateTableToolBarButtonHtml(
		strBaseElementID, strWebLanguage, g_strRTEDeleteTableElementMnemonic,
		L_DeleteTableElementToolTip_TEXT, "rtedrow.gif");
}
function RTE_GenerateTableToolBarButtonHtml(
	strBaseElementID, strWebLanguage, strMnemonic, strToolTip, strImage)
{
	strHtmlRet=		RTE_TB_GenerateOpenCellButtonHtml(
			strBaseElementID, strMnemonic)+		"<a TABINDEX=-1 href=\"#\" "+		"onfocus=\"RTE_TB_OnFocus('"+strBaseElementID+"', this);\" "+		"onblur=\"RTE_TB_OnBlur('"+strBaseElementID+"', this);\" "+		"onclick=\"RTE_DD_OpenTableOperationSelector('"+		strBaseElementID+"' ,'"+strWebLanguage+"', '"+strMnemonic+		"'); return false;\" "+		"title=\""+strToolTip+"\" "+		"style=\"margin-left: 2px; margin-right: 2px;\" unselectable=\"on\">"+		"<img src=\""+RTE_GetServerRelativeImageUrl(strImage)+		"\" alt=\""+strToolTip+"\" border=0 width=16 height=16 unselectable=\"on\">"+		"<img alt=\""+strToolTip+"\" src=\""+		RTE_GetServerRelativeUnlocalizedImageUrl("menudark.gif")+"\" border=0 width=13 height=13 unselectable=\"on\"></a>"+		RTE_TB_GenerateCloseCellButtonHtml();
	return strHtmlRet;
}
function RTE_DD_OpenTableOperationSelector(
	strBaseElementID, strWebLanguage, strMnemonic)
{
	var rgoMenuInfo=RTE_DD_GetTableOperationSelectorUnformattedHtml(
		strBaseElementID, strWebLanguage, strMnemonic);
	var strMenuHtml=rgoMenuInfo[0];
	var cMenuItems=rgoMenuInfo[1];
	RTE_DD_OpenMenu(strBaseElementID, strMnemonic, strMenuHtml, cMenuItems);
}
function RTE_DD_InsertItemAndGenerateScript(
	strBaseElementID, iItem, strCommand, strLabel, rgstrItemNames, strWebLanguage)
{
	rgstrItemNames[iItem]=strLabel;
	return RTE_DD_GenerateMenuItemScriptHtml(
		1, iItem,
		"RTE_DD_StartAction('"+strCommand+"', '"+strBaseElementID+"')",
		rgstrItemNames[iItem], rgstrItemNames[iItem], null, null, strWebLanguage);
}
function RTE_DD_GetTableOperationSelectorUnformattedHtml(
	strBaseElementID, strWebLanguage, strMnemonic)
{
	strMenuHtml=RTE_DD_GenerateMenuOpenHtml(strWebLanguage);
	var rgstrItemNames=new Array();
	switch (strMnemonic)
	{
		case g_strRTEInsertTableElementMnemonic:
		{
			strMenuHtml+=RTE_DD_InsertItemAndGenerateScript(strBaseElementID,
				0, g_strRTEInsertRowAbove, L_InsertRowAboveLabel_TEXT,
				rgstrItemNames, strWebLanguage);
			strMenuHtml+=RTE_DD_InsertItemAndGenerateScript(strBaseElementID,
				1, g_strRTEInsertRowBelow, L_InsertRowBelowLabel_TEXT,
				rgstrItemNames, strWebLanguage);
			strMenuHtml+=RTE_DD_InsertItemAndGenerateScript(strBaseElementID,
				2, g_strRTEInsertColumnLeft, L_InsertColumnLeftLabel_TEXT,
				rgstrItemNames, strWebLanguage);
			strMenuHtml+=RTE_DD_InsertItemAndGenerateScript(strBaseElementID,
				3, g_strRTEInsertColumnRight, L_InsertColumnRightLabel_TEXT,
				rgstrItemNames, strWebLanguage);
			strMenuHtml+=RTE_DD_InsertItemAndGenerateScript(strBaseElementID,
				4, g_strRTEInsertCellLeft, L_InsertCellLeftLabel_TEXT,
				rgstrItemNames, strWebLanguage);
			strMenuHtml+=RTE_DD_InsertItemAndGenerateScript(strBaseElementID,
				5, g_strRTEInsertCellRight, L_InsertCellRightLabel_TEXT,
				rgstrItemNames, strWebLanguage);
			break;
		}
		case g_strRTEDeleteTableElementMnemonic:
		{
			strMenuHtml+=RTE_DD_InsertItemAndGenerateScript(strBaseElementID,
				0, g_strRTEDeleteRow, L_DeleteRowToolTip_TEXT, rgstrItemNames, strWebLanguage);
			strMenuHtml+=RTE_DD_InsertItemAndGenerateScript(strBaseElementID,
				1, g_strRTEDeleteColumn, L_DeleteColumnToolTip_TEXT,
				rgstrItemNames, strWebLanguage);
			break;
		}
	}
	var cMenuItems=rgstrItemNames.length;
	strMenuHtml+=RTE_DD_GenerateMenuCloseHtml();
	return new Array(strMenuHtml, cMenuItems);
}
function RTE_MoveFocus(strBaseElementID, elemStart, offset)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (RTE_HasActiveSelection(docEditor))
	{
		var selection=RTE_GetCurrentSelection(strBaseElementID);
		if (selection.type=="Control")
		{
			return true;
		}
	}
	var buttons=RTE_GetToolBarDefinition(strBaseElementID);
	var newIndex=0;
	if (instanceVariables.hoverButton==null)
	{
		if (offset==-1 && buttons !=null)
		{
			newIndex=buttons.length - 1;
		}
		else
		{
			newIndex=0;
		}
	}
	else
	{
		newIndex=instanceVariables.hoverButton.toolbarButtonIndex+offset;
	}
	while (true)
	{
		if (newIndex < 0 || newIndex==buttons.length)
		{
			RTE_TB_RemoveLastToolBarHover(strBaseElementID);
			var selection=RTE_GetCurrentSelection(strBaseElementID);
			var textRange=selection.createRange();
			textRange.collapse();
			textRange.select();
			return true;
		}
		if (buttons[newIndex].strMnemonic !=null)
		{
			var toolBarButton=RTE_TB_GetToolBarButton(strBaseElementID, buttons[newIndex].strMnemonic);
			if (toolBarButton !=null
				&& !toolBarButton.disabled
				&& RTE_IsVisible(toolBarButton))
			{
				RTE_TB_OnMouseOver(toolBarButton);
				return false;
			}
		}
		if (offset < 0)
		{
			newIndex--;
		}
		else
		{
			newIndex++;
		}
	}
}
function RTE_IsVisible(element)
{
	if (element==null) return true;
	if (element.currentStyle.visibility=='inherit')
	{
		return RTE_IsVisible(element.parentElement);
	}
	else if (element.currentStyle.visibility=='hidden')
	{
		return false;
	}
	return true;
}
function RTE_TB_RemoveLastToolBarHover(strBaseElementID)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables.hoverButton !=null)
	{
		RTE_TB_OnMouseOut(instanceVariables.hoverButton);
	}
}
function RTE_TB_SetLastToolBarHover(strBaseElementID, elemButton)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	instanceVariables.hoverButton=elemButton;
}
function RTE_MoveFocusBackwards(strBaseElementID, elemStart)
{
	return RTE_MoveFocus(strBaseElementID, elemStart, -1);
}
function RTE_MoveFocusForwards(strBaseElementID, elemStart)
{
	return RTE_MoveFocus(strBaseElementID, elemStart, 1);
}
function RTE_ExecuteCommandOnSelection(strBaseElementID, strCommand, fUserInterface, strValue)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	RTE_RestoreSelection(strBaseElementID);
	if ((strCommand==g_strRTECreateLinkMnemonic) || (strCommand==g_strRTEInsertImageMnemonic))
	{
		g_fRTEDialogIsOpen=true;
	}
	docEditor.execCommand(strCommand, fUserInterface, strValue);
	if (g_fRTEDialogIsOpen)
	{
		g_fRTEDialogIsOpen=false;
		 RTE_OnFocus(strBaseElementID);
	}
	RTE_StartResetToolBarTimer(strBaseElementID);
	var fUseDynamicHeightSizing=RTE_UseDynamicHeightSizing(strBaseElementID);
	if (fUseDynamicHeightSizing)
	{
		RTE_DocEditor_AdjustHeight(strBaseElementID);
	}
}
function RTE_ExecuteFunctionOnSelection(strBaseElementID, strFunctionName, strParameter)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	RTE_RestoreSelection(strBaseElementID);
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	var functionToExecute=instanceVariables.functions[strFunctionName];
	if (functionToExecute !=null)
	{
		functionToExecute(strParameter);
		if (g_fRTEDialogIsOpen)
		{
			g_fRTEDialogIsOpen=false;
			RTE_OnFocus(strBaseElementID);
		}
	}
	RTE_StartResetToolBarTimer(strBaseElementID);
}
function RTE_SetDirectionOfSelection(strBaseElementID, strDirection)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.overrides.SetDirectionOfSelection !=null)
	{
		return instanceVariables.overrides.SetDirectionOfSelection(strBaseElementID, strDirection);
	}
	RTE_SaveSelection(strBaseElementID);
	var rngSelection=RTE_GetSelection(strBaseElementID);
	RTE_RestoreSelection(strBaseElementID);
	var strTagNames;
	strTagNames="|H1|H2|H3|H4|H5|H6|P|PRE|TD|DIV|BLOCKQUOTE|DT|DD|TABLE|HR|IMG|BODY|TR|UL|OL|";
	if (rngSelection.parentElement)
	{
		var elemSelectionParent=rngSelection.parentElement();
		while ((elemSelectionParent !=null) && (strTagNames.indexOf("|"+elemSelectionParent.tagName+"|")==-1))
		{
			elemSelectionParent=elemSelectionParent.parentElement;
		}
		if (elemSelectionParent)
		{
			RTE_SetDirectionOnElement(elemSelectionParent, strDirection);
		}
	}
	else
	{
		var rngLength=rngSelection.length;
		for (var i=0; i < rngLength;++i)
		{
			var elemCurrent=rngSelection.item(i);
			if ((elemCurrent !=null) && (strTagNames.indexOf("|"+elemCurrent.tagName+"|")!=-1))
			{
				RTE_SetDirectionOnElement(elemCurrent, strDirection);
			}
		}
	}
}
function RTE_SetDirectionOnElement(element, strDirection)
{
	if ("ltr"==strDirection)
	{
		element.dir="ltr"    ;
		element.align="left";
	}
	else if ("rtl"==strDirection)
	{
		element.dir="rtl";
		element.align="right";
	}
}
function RTE_GetDirectionOfSelection(strBaseElementID)
{
	var direction="";
	var rngSelection=RTE_GetSelection(strBaseElementID);
	if (!(null !=rngSelection)) { return direction; }
	var strTagNames="|H1|H2|H3|H4|H5|H6|P|PRE|LI|TD|DIV|BLOCKQUOTE|DT|DD|TABLE|HR|IMG|TR|UL|OL|BODY|HTML|";
	var elemSelectionParent=rngSelection.parentElement();
	while ((elemSelectionParent !=null)
	   && ((strTagNames.indexOf("|"+elemSelectionParent.tagName+"|")==-1)
		   || (elemSelectionParent.dir !="ltr") && (elemSelectionParent.dir !="rtl" )))
	{
		elemSelectionParent=elemSelectionParent.parentElement;
	}
	if (elemSelectionParent)
	{
		if (elemSelectionParent.dir=="ltr")
		{
			direction="ltr";
		}
		else if (elemSelectionParent.dir=="rtl")
		{
			direction="rtl";
		}
	}
	return direction;
}
var g_strRTEToolBarButtonWithTheFocus=null;
function RTE_ToolBarButtonWithTheFocus()
{
	return g_strRTEToolBarButtonWithTheFocus;
}
var g_aToolBarButtons;
function RTE_TB_GetToolBarButton(strBaseElementID, strButtonMnemonic)
{
	if (g_aToolBarButtons==null)
	{
		g_aToolBarButtons=new Array();
	}
	var elemToolBarButton=g_aToolBarButtons[strBaseElementID+"_"+strButtonMnemonic];
	if (elemToolBarButton==null)
	{
		elemToolBarButton=document.getElementById(strBaseElementID+"_"+strButtonMnemonic);
		g_aToolBarButtons[strBaseElementID+"_"+strButtonMnemonic]=elemToolBarButton;
	}
	return elemToolBarButton;
}
function RTE_TB_GenerateOpenCellButtonHtml(strBaseElementID, strButtonMnemonic, strOnClickJScript, strTooltip)
{
	var aHtmlRet=new Array();
	aHtmlRet.push("<td class=\"");
	aHtmlRet.push(g_strRTEToolbarClassName);
	aHtmlRet.push("\" unselectable=\"on\"><table cellpadding=1 cellspacing=0 border=0 unselectable=\"on\"><tr unselectable=\"on\"><td class=\"");
	aHtmlRet.push(g_strRTEToolbarClassName);
	aHtmlRet.push(" ");
	aHtmlRet.push(g_strRTEUnselectedClassName);
	aHtmlRet.push("\" nowrap id=\"");
	aHtmlRet.push(strBaseElementID);
	aHtmlRet.push("_");
	aHtmlRet.push(strButtonMnemonic);
	aHtmlRet.push("\" onmouseover=\"RTE_TB_OnMouseOver(this);\" onmouseout=\"RTE_TB_OnMouseOut(this);\"");
	if (strOnClickJScript)
	{
		aHtmlRet.push(" onClick=\"RTE_DD_CloseMenu();");
		aHtmlRet.push(strOnClickJScript);
		aHtmlRet.push("\"");
	}
	if (strTooltip)
	{
		aHtmlRet.push(" title=\"");
		aHtmlRet.push(strTooltip);
		aHtmlRet.push("\"");
	}
	aHtmlRet.push("unselectable=\"on\">");
	return aHtmlRet.join("");
}
function RTE_TB_GenerateCloseCellButtonHtml()
{
	return "</td></tr></table></td>";
}
function RTE_TB_GenerateToolBarSeparatorHtml()
{
	return "<td class=ms-separator unselectable=\"on\">|</td>";
}
function RTE_TB_GenerateToolBarLineBreakHtml()
{
	return "</tr></table></td></tr><tr unselectable=\"on\"><td unselectable=\"on\"><table cellspacing=0 cellpadding=0 border=0 unselectable=\"on\"><tr unselectable=\"on\">";
}
function RTE_TB_GenerateToolBarButtonHtml(strBaseElementID, strButtonMnemonic, strOnClickJScript, strImageUrl, strText, strToolTip)
{
	var aHtmlRet=new Array();
	aHtmlRet.push(RTE_TB_GenerateOpenCellButtonHtml(strBaseElementID, strButtonMnemonic, strOnClickJScript, strToolTip));
	if (0 < strImageUrl.length)
	{
		aHtmlRet.push("<img border=0 width=16 height=16 src=\"");
		aHtmlRet.push(strImageUrl);
		aHtmlRet.push("\" alt=\"");
		aHtmlRet.push(strToolTip);
		aHtmlRet.push("\" unselectable=\"on\">");
	}
	if (0 < strText.length)
	{
		aHtmlRet.push(" ");
		aHtmlRet.push(strText);
	}
	aHtmlRet.push(RTE_TB_GenerateCloseCellButtonHtml());
	return aHtmlRet.join("");
}
function RTE_TB_GenerateExecCommandToolBarButtonHtml(
	strBaseElementID,
	strCommand,
	fUserInterface,
	strImageUrl,
	strText,
	strToolTip,
	fOnlyIfSelectionActive,
	strValueExpression,
	strBeforeExecJScript,
	strAfterExecJScript)
{
	var aOnClickJScript=new Array();
	aOnClickJScript.push("RTE_DD_CloseMenu();");
	if (fOnlyIfSelectionActive)
	{
		aOnClickJScript.push("var sel=RTE_GetEditorDocument('");
		aOnClickJScript.push(strBaseElementID);
		aOnClickJScript.push("').selection; if ((null !=sel) && ('None' !=sel.type)) { ");
	}
	aOnClickJScript.push("RTE_SaveSelection('"+strBaseElementID+"');");
	aOnClickJScript.push("var argValue=");
	aOnClickJScript.push(strValueExpression);
	aOnClickJScript.push(";");
	if (strValueExpression !="null")
	{
		aOnClickJScript.push("if (argValue !=null) { ");
	}
	if (strBeforeExecJScript)
	{
		aOnClickJScript.push(strBeforeExecJScript);
	}
	aOnClickJScript.push("RTE_ExecuteCommandOnSelection('");
	aOnClickJScript.push(strBaseElementID);
	aOnClickJScript.push("', '");
	aOnClickJScript.push(strCommand);
	aOnClickJScript.push("', ");
	aOnClickJScript.push(fUserInterface);
	aOnClickJScript.push(", argValue);");
	if (strAfterExecJScript)
	 aOnClickJScript.push(strAfterExecJScript);
	if (strValueExpression !="null")
	{
		aOnClickJScript.push("}");
	}
	if (fOnlyIfSelectionActive)
	{
		aOnClickJScript.push("}");
	}
	var strOnClickJScript=aOnClickJScript.join("");
	return RTE_TB_GenerateToolBarButtonHtml(strBaseElementID, strCommand, strOnClickJScript, strImageUrl, strText, strToolTip);
}
function RTE_TB_SetButtonCheck(elemButton)
{
	elemButton.className=RTE_RemoveClassFromClassList(elemButton.className, g_strRTEUnselectedClassName);
	elemButton.className=RTE_AddClassToClassList(elemButton.className, g_strRTESelectedClassName);
}
function RTE_TB_ClearButtonCheck(elemButton)
{
	elemButton.className=RTE_RemoveClassFromClassList(elemButton.className, g_strRTESelectedClassName);
	elemButton.className=RTE_AddClassToClassList(elemButton.className, g_strRTEUnselectedClassName);
}
function RTE_TB_SetButtonDisabled(elemButton)
{
	elemButton.className=RTE_AddClassToClassList(elemButton.className, g_strRTEDisabledClassName);
	elemButton.disabled=true;
	var elemChildLink=elemButton.children(0);
	if ((elemChildLink !=null) && (elemChildLink.tagName=="A"))
	{
		elemChildLink.disabled=true;
	}
}
function RTE_TB_ClearButtonDisabled(elemButton)
{
	elemButton.disabled=false;
	var elemChildLink=elemButton.children(0);
	if ((elemChildLink !=null) && (elemChildLink.tagName=="A"))
	{
		elemChildLink.disabled=false;
	}
	elemButton.className=RTE_RemoveClassFromClassList(elemButton.className, g_strRTEDisabledClassName);
}
function RTE_TB_SetButtonHover(elemButton)
{
	RTE_TB_RemoveLastToolBarHover(elemButton.strBaseElementID);
	RTE_TB_SetLastToolBarHover(elemButton.strBaseElementID, elemButton);
	elemButton.className=RTE_AddClassToClassList(elemButton.className, g_strRTEHoverClassName);
}
function RTE_TB_ClearButtonHover(elemButton)
{
	RTE_TB_SetLastToolBarHover(elemButton.strBaseElementID, null);
	elemButton.className=RTE_RemoveClassFromClassList(elemButton.className, g_strRTEHoverClassName);
}
function RTE_TB_SetCheckFromCommandValue(strBaseElementID, docEditor, strCommand)
{
	var btn=RTE_TB_GetToolBarButton(strBaseElementID, strCommand);
	if (docEditor.queryCommandSupported(strCommand) && docEditor.queryCommandValue(strCommand))
	{
		RTE_TB_SetButtonCheck(btn);
	}
	else
	{
		RTE_TB_ClearButtonCheck(btn);
	}
}
function RTE_TB_SetCheckForDirectionButton(strBaseElementID, strCommand)
{
	var btn=RTE_TB_GetToolBarButton(strBaseElementID, strCommand);
	if (((RTE_GetDirectionOfSelection(strBaseElementID)=="ltr") && (strCommand==g_strRTELTRMnemonic))
		|| ((RTE_GetDirectionOfSelection(strBaseElementID)=="rtl") && (strCommand==g_strRTERTLMnemonic)))
	{
		RTE_TB_SetButtonCheck(btn);
	}
	else
	{
		RTE_TB_ClearButtonCheck(btn);
	}
}
function RTE_HasActiveSelection(docEditor)
{
	var fSelectionTestResults=true;
	var sel=docEditor.selection;
	if ((null==sel) || ('none'==sel.type))
	{
		fSelectionTestResults=false;
	}
	else
	{
		var rngSel=docEditor.selection.createRange();
		if ((rngSel !=null) && (rngSel.text !=null) && (0 >=rngSel.text.length))
		{
			fSelectionTestResults=false;
		}
	}
	return fSelectionTestResults;
}
function RTE_TB_SetEnabledFromCommandEnabled(
	strBaseElementID,
	docEditor,
	strCommandToEnable,
	strCommandToCheck)
{
	var btn=RTE_TB_GetToolBarButton(strBaseElementID, strCommandToEnable);
	if (docEditor.queryCommandEnabled(strCommandToCheck))
	{
		RTE_TB_ClearButtonDisabled(btn);
	}
	else
	{
		RTE_TB_SetButtonDisabled(btn);
	}
}
function RTE_TB_SetEnabledIfInElement(
	strBaseElementID, aElemChain, strMnemonic, strElement)
{
	RTE_TB_SetEnabledFromCondition(strBaseElementID,
		RTE_IsElementInChain(aElemChain, strElement), strMnemonic);
}
function RTE_TB_SetEnabledFromCondition(
	strBaseElementID, fCondition, strCommand)
{
	var btn=RTE_TB_GetToolBarButton(strBaseElementID, strCommand);
	if (fCondition)
	{
		RTE_TB_ClearButtonDisabled(btn);
	}
	else
	{
		RTE_TB_SetButtonDisabled(btn);
	}
}
function RTE_TB_OnMouseOver(elemButton)
{
	if (0 > elemButton.className.indexOf(g_strRTEDisabledClassName))
	{
		elemButton.style.cursor="pointer";
		RTE_TB_SetButtonHover(elemButton);
	}
}
function RTE_TB_OnMouseOut(elemButton)
{
	RTE_TB_ClearButtonHover(elemButton);
}
function RTE_TB_OnFocus(strBaseElementID, elemButton)
{
	g_strRTEToolBarButtonWithTheFocus=elemButton.parentElement.id;
}
function RTE_TB_OnBlur(strBaseElementID, elemButton)
{
	g_strRTEToolBarButtonWithTheFocus=null;
}
var g_strRTEDDBaseElementID=null;
var g_strRTEDDButtonMnemonic=null;
var g_fRTEFirstCallToGetMenu=true;
var g_elemRTEHighlightedMenuItem=null;
var g_iRTEHighlightedMenuItem=-1;
var g_iRTEMenuItemMax=-1;
function RTE_DD_GetMenuElement()
{
	var elemMenu=document.getElementById(g_strRTETextEditorPullDownMenuID);
	if ((null==elemMenu) && (document.parentWindow !=null) && (document.parentWindow.document !=null))
	{
		elemMenu=document.parentWindow.parent.document.getElementById(g_strRTETextEditorPullDownMenuID);
	}
	return elemMenu;
}
function RTE_DD_GetMenuFrame()
{
	var ifmMenu=null;
	var elemMenu=RTE_DD_GetMenuElement();
	if (null !=elemMenu)
	{
		if (document.frames.length > 0)
		{
			ifmMenu=document.frames(g_strRTETextEditorPullDownMenuID);
		}
		else
		{
			if ((document.parentWindow !=null) && (document.parentWindow.frames !=null))
			{
				ifmMenu=document.parentWindow.parent.document.frames(g_strRTETextEditorPullDownMenuID);
			}
		}
	}
	if (null==ifmMenu)
	{
		if (g_fRTEFirstCallToGetMenu)
		{
			g_fRTEFirstCallToGetMenu=false;
			return null;
		}
	}
	return ifmMenu;
}
function RTE_DD_GetMenuBaseElementID()
{
	return RTE_DD_GetMenuElement().getAttribute(g_strRTEBaseElementIDAttributeName);
}
function RTE_DD_GetMenuButtonMnemonic()
{
	return RTE_DD_GetMenuElement().getAttribute(g_strRTEButtonMnemonicAttributeName);
}
function RTE_DD_MenuIsOpen()
{
	var elemMenu=RTE_DD_GetMenuElement();
	if (elemMenu !=null && ""==elemMenu.style.display)
	{
		return true;
	}
	return false;
}
var g_fRTEMenuMoved=false;
function RTE_DD_OpenMenu(strBaseElementID, strButtonMnemonic, strMenuHtml, strWebLanguage, cMenuItems)
{
	var elemMenu=RTE_DD_GetMenuElement();
	var ifmMenu=RTE_DD_GetMenuFrame();
	if (!g_fRTEMenuMoved)
	{
		g_elemRTELastTextAreaConverted.insertAdjacentElement("afterEnd", elemMenu);
		elemMenu=RTE_DD_GetMenuElement();
		ifmMenu=RTE_DD_GetMenuFrame();
	}
	if ((g_strRTEDDBaseElementID==strBaseElementID) && (g_strRTEDDButtonMnemonic==strButtonMnemonic))
	{
		RTE_DD_CloseMenu();
		RTE_RestoreSelection(strBaseElementID);
		return;
	}
	if ((null !=g_strRTEDDBaseElementID) && (null !=g_strRTEDDButtonMnemonic))
	{
		RTE_DD_CloseMenu();
	}
	g_strRTEDDBaseElementID=strBaseElementID;
	g_strRTEDDButtonMnemonic=strButtonMnemonic;
	g_iRTEMenuItemMax=cMenuItems - 1;
	RTE_SaveSelection(strBaseElementID);
	var elemToolBarButton=RTE_TB_GetToolBarButton(strBaseElementID, strButtonMnemonic);
	elemMenu.setAttribute(g_strRTEBaseElementIDAttributeName, strBaseElementID);
	elemMenu.setAttribute(g_strRTEButtonMnemonicAttributeName, strButtonMnemonic);
	elemMenu.setAttribute(g_strRTEMenuOpeningAttributeName, "1");
	elemMenu.style.top="0px";
	elemMenu.style.left="0px";
	elemMenu.style.height="";
	elemMenu.style.width="";
	var scriptFile="form.js"
	var strWebLocale=RTE_GetWebLocale(strBaseElementID);
	ifmMenu.document.open("text/html", "replace");
	ifmMenu.document.write("<html><head><link rel=\"stylesheet\" type=\"text/css\" href=\""+RTE_GetServerRelativeStylesheetUrl("core.css", strWebLocale)+			"\"><script language=\"javascript\" src=\""+RTE_GetServerRelativeScriptUrl(scriptFile, strWebLocale)+"\"></script></head>"+			"<body class=\""+g_strRTEToolbarClassName+"\""+g_strRTECommandToExecuteAttributeName+"=\"x\" "+g_strRTECommandValueAttributeName+"=\"x\" "+g_strRTEFunctionToExecuteAttributeName+"=\"x\" "+g_strRTEFunctionParameterToExecuteAttributeName+"=\"x\" unselectable='on'><div class=\""+g_strRTEToolbarClassName+"\" id=\"divAroundMenu\" unselectable='on'>"+			strMenuHtml+"</div></body></html>");
	ifmMenu.document.close();
	elemMenu=RTE_DD_GetMenuElement();
	ifmMenu=RTE_DD_GetMenuFrame();
	ifmMenu.document.body.onkeydown=new Function("RTE_DD_OnKeyDown(this);");
	elemMenu.style.border="0px";
	ifmMenu.document.body.style.border="1px solid black";
	elemMenu.style.display="";
	var elemMenuDivInFrame=ifmMenu.document.all("divAroundMenu");
	var elemMenuTable=ifmMenu.document.all(g_strRTEMenuTableElementName);
	var cyDropDownMax=300;
	var rgnMenuRelativeCoordinates=RTE_GetElementWindowCoordinates(elemMenu);
	var rgnToolBarButtonCoordinates=RTE_GetElementWindowCoordinates(elemToolBarButton);
	var xToolBarButton=rgnToolBarButtonCoordinates[g_iRTELeft];
	var yToolBarButton=rgnToolBarButtonCoordinates[g_iRTETop];
	var cxToolBarButton=elemToolBarButton.offsetWidth;
	var cyToolBarButton=elemToolBarButton.offsetHeight;
	var cxDropDown=elemMenuTable.scrollWidth+4;
	var cyDropDown=elemMenuTable.scrollHeight+4;
	var cxBody=document.body.clientWidth;
	var cyBody=document.body.clientHeight;
	var yDropDown=rgnToolBarButtonCoordinates[g_iRTETop]+elemToolBarButton.offsetHeight - rgnMenuRelativeCoordinates[g_iRTETop];
	var objEditor=RTE_GetEditorDocument(strBaseElementID);
	var xDropDown;
	if (strWebLanguage=="1037" || strWebLanguage=="1025" || objEditor.dir=="rtl")
	{
		xDropDown=rgnToolBarButtonCoordinates[g_iRTERight]-cxDropDown - rgnMenuRelativeCoordinates[g_iRTELeft];
	}
	else
	{
		xDropDown=rgnToolBarButtonCoordinates[g_iRTELeft] - rgnMenuRelativeCoordinates[g_iRTELeft];
	}
	var fNeedVerticalScrollBar=false;
	if (cyDropDown > cyDropDownMax)
	{
		fNeedVerticalScrollBar=true;
		cyDropDown=cyDropDownMax;
	}
	if (cyDropDown > cyBody)
	{
		fNeedVerticalScrollBar=true;
		cyDropDown=cyBody - 30;
	}
	var scrollTopAdjustment=document.body.scrollTop;
	scrollTopAdjustment+=document.body.parentElement.scrollTop;
	if (yDropDown+cyDropDown > cyBody+scrollTopAdjustment)
	{
		yDropDown=rgnToolBarButtonCoordinates[g_iRTETop] - cyDropDown;
		if (scrollTopAdjustment > yDropDown)
		{
			yDropDown=scrollTopAdjustment;
		}
	}
	objEditor=RTE_GetEditorDocument(strBaseElementID);
	if (strWebLanguage=="1037" || strWebLanguage=="1025" || objEditor.dir=="rtl")
	{
		ifmMenu.document.body.dir="rtl";
	}
	if (fNeedVerticalScrollBar)
	{
		ifmMenu.document.body.scroll="yes";
		cxDropDown+=22;
		if (ifmMenu.document.body.dir=="rtl")
		{
			xDropDown -=22;
			if (scrollLeftAdjustment > xDropDown)
			{
				xDropDown=scrollLeftAdjustment;
			}
		}
	}
	else
	{
		ifmMenu.document.body.scroll="";
	}
	var scrollLeftAdjustment=document.body.scrollLeft;
	scrollLeftAdjustment+=document.body.parentElement.scrollLeft;
	if (xDropDown+cxDropDown > cxBody+scrollLeftAdjustment)
	{
	  if (ifmMenu.document.body.dir !="rtl")
	  {
		xDropDown=cxBody+scrollLeftAdjustment - cxDropDown;
	  }
	  if (scrollLeftAdjustment > xDropDown)
	  {
		  xDropDown=scrollLeftAdjustment;
	  }
	}
	elemMenu.style.zIndex=500;
	elemMenu.style.left=xDropDown;
	elemMenu.style.top=yDropDown;
	elemMenu.style.width=cxDropDown;
	elemMenu.style.height=cyDropDown;
	RTE_DD_SetHighlightOnMenuItem(RTE_DD_GetMenuItem(0));
	event.cancelBubble=true;
}
function RTE_DD_CloseMenu()
{
	var elemMenu=RTE_DD_GetMenuElement();
	if (null==elemMenu)
	{
		return;
	}
	elemMenu.style.display="none";
	if ((g_strRTEDDBaseElementID !=null) && (g_strRTEDDButtonMnemonic !=null))
	{
		RTE_TB_ClearButtonHover(RTE_TB_GetToolBarButton(g_strRTEDDBaseElementID, g_strRTEDDButtonMnemonic));
	}
	g_strRTEDDBaseElementID=null;
	g_strRTEDDButtonMnemonic=null;
	g_elemRTEHighlightedMenuItem=null;
	g_iRTEHighlightedMenuItem=-1;
	g_iRTEMenuItemMax=-1;
	var parentDoc=document.parentWindow.parent;
	if (parentDoc)
	{
		try
		{
			parentDoc.g_strRTEDDBaseElementID=null;
			parentDoc.g_strRTEDDButtonMnemonic=null;
			parentDoc.g_elemRTEHighlightedMenuItem=null;
			parentDoc.g_iRTEHighlightedMenuItem=-1;
			parentDoc.g_iRTEMenuItemMax=-1;
		}
		catch (e) {}
	}
}
function RTE_DD_GenerateMenuOpenHtml()
{
	return "<table class=\"ms-rtedropdown\" id=\""+g_strRTEMenuTableElementName+"\"cellspacing=0 border=0 unselectable=\"on\"><tr unselectable=\"on\">";
}
function RTE_DD_GenerateMenuCloseHtml()
{
	return "</tr></table>";
}
function RTE_DD_GenerateMenuItemHtml(cColumns, iMenuItem, strCommandToPerform, strCommandValue, strMenuItemHtml, strMenuItemToolTip, strJSOnMouseOver, strJSOnMouseOut, strWebLanguage)
{
	return RTE_DD_GenerateMenuItemScriptHtml(cColumns, iMenuItem, "return RTE_DD_ExecuteCommand('"+strCommandToPerform+"', '"+STSScriptEncode(strCommandValue)+"')", strMenuItemHtml, strMenuItemToolTip, strJSOnMouseOver, strJSOnMouseOut, strWebLanguage);
}
function RTE_DD_GenerateMenuItemScriptHtml(cColumns, iMenuItem, strScript, strMenuItemHtml, strMenuItemToolTip, strJSOnMouseOver, strJSOnMouseOut, strWebLanguage)
{
	var strHtmlRet="";
	if (((1 >=cColumns) || ((1 < cColumns) && (0==(iMenuItem % cColumns)))) && (0 !=iMenuItem))
	{
		strHtmlRet="</tr><tr unselectable=\"on\">";
	}
	var direction;
	if (strWebLanguage=="1037" || strWebLanguage=="1025")
	{
		direction="rtl";
	}
	else
	{
		direction="ltr";
	}
	strHtmlRet+=		"<td dir=\""+direction+"\" class=\""+g_strRTEToolbarClassName+" "+g_strRTEUnselectedClassName+"\" "+			"nowrap id=\""+g_strRTEMenuItemBaseName+iMenuItem+"\" "+			g_strRTEMenuItemAttributeName+"=\""+iMenuItem+"\" "+			"onfocus=\"if (document.readyState=='complete') {RTE_DD_Item_OnFocus(this)}\" "+			"onclick=\""+strScript+"\" "+			"unselectable=\"on\" "+			"onmouseover=\"if (document.readyState=='complete') {RTE_DDItem_OnMouseOver(this);";
	if (strJSOnMouseOver) strHtmlRet+=strJSOnMouseOver;
	strHtmlRet+="}\" "+			"onmouseout=\"if (document.readyState=='complete') {RTE_DDItem_OnMouseOut(this);";
	if (strJSOnMouseOut) strHtmlRet+=strJSOnMouseOut;
	strHtmlRet+="}\">"+			"<a TABINDEX=-1 href=\"#\" "+				"class=\""+g_strRTEUnselectedClassName+"\" "+				"style=\"text-decoration: none; color: black; cursor: pointer;\" "+				"title=\""+strMenuItemToolTip+"\" "+				"unselectable=\"on\" "+				"onblur=\"if (document.readyState=='complete') {RTE_DD_Item_OnBlur()}\" "+				"onfocus=\"if (document.readyState=='complete') {RTE_DD_Item_OnFocus(this.parentElement)}\">"+				strMenuItemHtml+			"</a>"+		"</td>";
	return strHtmlRet;
}
function RTE_DD_GetMenuItem(iMenuItem)
{
	var elemMenuItem=RTE_DD_GetMenuFrame().document.all(g_strRTEMenuItemBaseName+iMenuItem);
	return elemMenuItem;
}
function RTE_DD_GetHighlightedMenuItem()
{
	return RTE_DD_GetMenuFrame().g_elemRTEHighlightedMenuItem;
}
function RTE_DD_SetHighlightedMenuItem(elem)
{
	var menuFrame=RTE_DD_GetMenuFrame();
	if (menuFrame !=null)
	{
		menuFrame.g_elemRTEHighlightedMenuItem=elem;
	}
	else
	{
		g_elemRTEHighlightedMenuItem=elem;
	}
}
function RTE_DD_ClearHighlightOnMenuItem(elemMenuItem)
{
	elemMenuItem.className=RTE_RemoveClassFromClassList(elemMenuItem.className, g_strRTEHoverClassName);
}
function RTE_DD_HighlightOnMenuItem(elemMenuItem)
{
	elemMenuItem.className=RTE_AddClassToClassList(elemMenuItem.className, g_strRTEHoverClassName);
}
function RTE_DD_ClearHighlightedMenuItem()
{
	RTE_DD_ClearHighlightOnMenuItem(RTE_DD_GetHighlightedMenuItem());
}
function RTE_DD_SetHighlightOnMenuItem(elemMenuItem)
{
	if (!RTE_DD_MenuIsOpen())
	{
		return;
	}
	var strMenuItemAttributeValue=elemMenuItem.getAttribute(g_strRTEMenuItemAttributeName);
	var highlightedElem=RTE_DD_GetHighlightedMenuItem();
	if (null !=highlightedElem)
	{
		RTE_DD_ClearHighlightOnMenuItem(highlightedElem);
		g_iRTEHighlightedMenuItem=-1;
	}
	RTE_DD_HighlightOnMenuItem(elemMenuItem);
	RTE_DD_SetHighlightedMenuItem(elemMenuItem);
	g_iRTEHighlightedMenuItem=parseInt(strMenuItemAttributeValue);
}
function RTE_DD_SetHighlightOnPrevMenuItem(cItemsToMove)
{
	var elemHighlighted=RTE_DD_GetHighlightedMenuItem();
	if (elemHighlighted==null) elemHighlighted=RTE_DD_GetMenuItem(0);
	var strMenuItemAttributeValue=elemHighlighted.getAttribute(g_strRTEMenuItemAttributeName);
	var iMenuItem=parseInt(strMenuItemAttributeValue);
	if (iMenuItem > 0)
	{
		var iNewMenuItem=Math.max(iMenuItem - cItemsToMove, 0);
		var elemPrev=RTE_DD_GetMenuItem(iNewMenuItem);
		elemHighlighted.onmouseout();
		RTE_DD_SetHighlightOnMenuItem(elemPrev);
		elemPrev.onmouseover();
	}
}
function RTE_DD_SetHighlightOnNextMenuItem(cItemsToMove)
{
	var elemHighlighted=RTE_DD_GetHighlightedMenuItem();
	if (elemHighlighted==null) elemHighlighted=RTE_DD_GetMenuItem(0);
	var strMenuItemAttributeValue=elemHighlighted.getAttribute(g_strRTEMenuItemAttributeName);
	var iMenuItem=parseInt(strMenuItemAttributeValue);
	if (iMenuItem < g_iRTEMenuItemMax)
	{
		var iNewMenuItem=Math.min(iMenuItem+cItemsToMove, g_iRTEMenuItemMax);
		var elemNext=RTE_DD_GetMenuItem(iNewMenuItem);
		elemHighlighted.onmouseout();
		RTE_DD_SetHighlightOnMenuItem(elemNext);
		elemNext.onmouseover();
	}
}
function RTE_DD_ExecuteCommand(strCommandToPerform, strCommandValue)
{
	var strBaseElementID=RTE_DD_GetMenuBaseElementID();
	RTE_DD_CloseMenu();
	RTE_GiveEditorFocus(strBaseElementID);
	RTE_RestoreSelection(strBaseElementID);
	RTE_ExecuteCommandOnSelection(RTE_DD_GetMenuBaseElementID(), strCommandToPerform, false, strCommandValue);
}
function RTE_DD_StartAction(strFunctionName, strParameter)
{
	var strBaseElementID=RTE_DD_GetMenuBaseElementID();
	RTE_DD_CloseMenu();
	RTE_GiveEditorFocus(strBaseElementID);
	RTE_RestoreSelection(strBaseElementID);
	RTE_ExecuteFunctionOnSelection(RTE_DD_GetMenuBaseElementID(), strFunctionName, strParameter);
}
function RTE_DD_Item_OnFocus(elemMenuItemCell)
{
	var elemMenu=RTE_DD_GetMenuElement();
	elemMenu.setAttribute(g_strRTEMenuOpeningAttributeName, "0");
	RTE_DD_SetHighlightOnMenuItem(elemMenuItemCell);
}
function RTE_DD_Item_OnBlur()
{
	g_iRTEHighlightedMenuItem=-1;
	window.setTimeout("RTE_OnItemBlurTestCloseMenu()", 30);
}
function RTE_OnItemBlurTestCloseMenu()
{
	if (null==RTE_DD_GetHighlightedMenuItem())
	{
		RTE_DD_CloseMenu();
	}
}
function RTE_DD_OnKeyDown(elem)
{
	var evtSource=elem.document.parentWindow.event;
	var nKeyCode=evtSource.keyCode;
	var fAltKey=evtSource.altKey;
	var fCtrlKey=evtSource.ctrlKey;
	var fShiftKey=evtSource.shiftKey;
	if (!fCtrlKey && !fAltKey && !fShiftKey)
	{
		switch (nKeyCode)
		{
			case 27:
				var strBaseElementID=g_strRTEDDBaseElementID;
				RTE_DD_CloseMenu();
				RTE_GiveEditorFocus(strBaseElementID);
				RTE_StartResetToolBarTimer(strBaseElementID);
				break;
			case 38:
				evtSource.returnValue=false;
				RTE_DD_SetHighlightOnPrevMenuItem(1);
				break;
			case 9:
			   evtSource.returnValue=false;
			   break;
			case 13:
				var menuItem=RTE_DD_GetHighlightedMenuItem();
				if (menuItem !=null)
				{
					menuItem.onclick();
				}
				evtSource.returnValue=false;
				break;
			case 40:
				evtSource.returnValue=false;
				RTE_DD_SetHighlightOnNextMenuItem(1);
				break;
			case 33:
				evtSource.returnValue=false;
				RTE_DD_SetHighlightOnPrevMenuItem(12);
				break;
			case 34:
				evtSource.returnValue=false;
				RTE_DD_SetHighlightOnNextMenuItem(12);
				break;
			case 36:
				evtSource.returnValue=false;
				break;
			case 35:
				evtSource.returnValue=false;
				break;
		}
	}
	if (!fCtrlKey && !fAltKey && fShiftKey)
	{
		switch (nKeyCode)
		{
			case 9:
				evtSource.returnValue=false;
				break;
		}
	}
}
function RTE_DDItem_OnMouseOver(elemTD)
{
	if (null !=elemTD)
	{
		RTE_DD_SetHighlightOnMenuItem(elemTD);
	}
}
function RTE_DDItem_OnMouseOut(elemTD)
{
	if (null !=elemTD)
	{
		RTE_DD_ClearHighlightOnMenuItem(elemTD);
	}
}
var g_rgstrRTEMenuHtml=new Array();
var g_strRTEColorMatrixMenuItemPrefixHtml="<div unselectable=\"on\" style=\"width: 10px; height: 10px; background-color: ";
var g_strRTEColorMatrixMenuItemSufffixHtml=";\"><img unselectable=\"on\" width=10 height=10 src=\""+RTE_GetServerRelativeUnlocalizedImageUrl("blank.gif")+"\" alt=\"%TOOLTIP%\"></div>";
function RTE_DD_OpenFontNameOrSizeSelector(strBaseElementID, strWebLanguage, fGeneratingFontNameSelector)
{
	RTE_RestoreSelection(strBaseElementID);
	var rngSelection=RTE_GetSelection(strBaseElementID);
	if (rngSelection==null)
	{
		return;
	}
	var strSelectionFontName=rngSelection.queryCommandValue(g_strRTEFontNameMnemonic);
	if (null==strSelectionFontName)
	{
		strSelectionFontName="";
	}
	var strSelectionFontSize=rngSelection.queryCommandValue(g_strRTEFontSizeMnemonic);
	var fSelectionBold=rngSelection.queryCommandValue(g_strRTEBoldMnemonic);
	var fSelectionItalic=rngSelection.queryCommandValue(g_strRTEItalicMnemonic);
	var strMenuHtml="";
	var cMenuItems=-1;
	var strButtonMnemonic="";
	var rgoMenuInfo=RTE_DD_GetFontNameOrSizeSelectorUnformattedHtml(strBaseElementID, fGeneratingFontNameSelector, strWebLanguage);
	strMenuHtml=rgoMenuInfo[0];
	cMenuItems=rgoMenuInfo[1];
	if (fGeneratingFontNameSelector)
	{
		strMenuHtml=strMenuHtml.replace(new RegExp(g_strRTEFontSizeToken, "g"), 2);
		strButtonMnemonic=g_strRTEFontNameMnemonic;
	}
	else
	{
		strMenuHtml=strMenuHtml.replace(new RegExp(g_strRTEFontNameToken, "g"), STSHtmlEncode(strSelectionFontName));
		strButtonMnemonic=g_strRTEFontSizeMnemonic;
	}
	var strBegBoldItalicInsert="";
	var strEndBoldItalicInsert="";
	if (fSelectionBold)
	{
		strBegBoldItalicInsert="<b unselectable='on'>";
		strEndBoldItalicInsert="</b>";
	}
	if (fSelectionItalic)
	{
		strBegBoldItalicInsert+="<i unselectable='on'>";
		strEndBoldItalicInsert+="</i>";
	}
	strMenuHtml=strMenuHtml.replace(new RegExp(g_strRTEBegBoldItalicToken, "g"), strBegBoldItalicInsert);
	strMenuHtml=strMenuHtml.replace(new RegExp(g_strRTEEndBoldItalicToken, "g"), strEndBoldItalicInsert);
	RTE_DD_OpenMenu(strBaseElementID, strButtonMnemonic, strMenuHtml, strWebLanguage, cMenuItems);
}
function RTE_DD_GetFontNameOrSizeSelectorUnformattedHtml(strBaseElementID, fGeneratingFontNameSelector, strWebLanguage)
{
	var strCommandToPerform;
	if (fGeneratingFontNameSelector)
	{
		strCommandToPerform=g_strRTEFontNameMnemonic;
	}
	else
	{
		strCommandToPerform=g_strRTEFontSizeMnemonic;
	}
	var strMenuHtml=null;
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.RenderFontNamesAsText !=null && instanceVariables.RenderFontNamesAsText)
	{
		strMenuHtml=g_rgstrRTEMenuHtml[strCommandToPerform+"_text"]
	}
	else
	{
		strMenuHtml=g_rgstrRTEMenuHtml[strCommandToPerform];
	}
	if (null !=strMenuHtml)
	{
		return strMenuHtml;
	}
	strMenuHtml=RTE_DD_GenerateMenuOpenHtml();
	var cMenuItems=-1;
	if (fGeneratingFontNameSelector)
	{
		var rgstrClientFonts=RTE_GetSortedFontNames();
		cMenuItems=rgstrClientFonts.length;
		var iFont;
		for (iFont=0; iFont < cMenuItems; iFont++)
		{
			if (instanceVariables !=null && instanceVariables.RenderFontNamesAsText !=null && instanceVariables.RenderFontNamesAsText)
			{
				strMenuHtml+=RTE_DD_GenerateMenuItemScriptHtml(1, iFont, "return RTE_ApplyFontFace('"+strCommandToPerform+"', '"+rgstrClientFonts[iFont]+"')",
						g_strRTEBegBoldItalicToken+"<font face='' style='height:18px' unselectable='on'>"+						STSHtmlEncode(rgstrClientFonts[iFont])+"</font>"+g_strRTEEndBoldItalicToken, rgstrClientFonts[iFont], "RTE_DD_FontNameOnMouseOver(this);", "RTE_DD_FontNameOnMouseOut(this);", strWebLanguage);
			}
			else
			{
				strMenuHtml+=RTE_DD_GenerateMenuItemScriptHtml(1, iFont, "return RTE_ApplyFontFace('"+strCommandToPerform+"', '"+rgstrClientFonts[iFont]+"')",
						g_strRTEBegBoldItalicToken+"<font size=\""+g_strRTEFontSizeToken+"\" face=\""+rgstrClientFonts[iFont]+"\" unselectable='on'>"+						rgstrClientFonts[iFont]+"</font>"+g_strRTEEndBoldItalicToken, rgstrClientFonts[iFont], null, null, strWebLanguage);
			}
		}
	}
	else
	{
		cMenuItems=7;
		var nFontSize;
		for (nFontSize=1; nFontSize <=cMenuItems; nFontSize++)
		{
			strMenuHtml+=RTE_DD_GenerateMenuItemScriptHtml(1, nFontSize - 1, "return RTE_ApplyFontSize('"+strCommandToPerform+"', '"+nFontSize+"')",
					g_strRTEBegBoldItalicToken+"<font size=\""+nFontSize+"\" face=\""+g_strRTEFontNameToken+"\" unselectable='on'>"+					nFontSize+" - "+L_ExampleText_TEXT+"</font>"+g_strRTEEndBoldItalicToken, nFontSize, null, null, strWebLanguage);
		}
	}
	strMenuHtml+=RTE_DD_GenerateMenuCloseHtml();
	if (instanceVariables !=null && instanceVariables.RenderFontNamesAsText !=null && instanceVariables.RenderFontNamesAsText)
	{
		g_rgstrRTEMenuHtml[strCommandToPerform+"_text"]=new Array(strMenuHtml, cMenuItems);
		return g_rgstrRTEMenuHtml[strCommandToPerform+"_text"];
	}
	else
	{
		g_rgstrRTEMenuHtml[strCommandToPerform]=new Array(strMenuHtml, cMenuItems);;
		return g_rgstrRTEMenuHtml[strCommandToPerform];
	}
}
function RTE_ApplyFontFace(strCommandToPerform,strCommandValue)
{
	var strBaseElementID=RTE_DD_GetMenuBaseElementID();
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.overrides.ApplyFontFace !=null)
	{
		return instanceVariables.overrides.ApplyFontFace(strCommandToPerform,strCommandValue);
	}
	var elements=RTE_GetContainedElements(strBaseElementID);
	for (var i=0; i<elements.length;i++)
	{
		RTE_RemoveFontFamilyStyle(elements[i]);
	}
	return RTE_DD_ExecuteCommand(strCommandToPerform,strCommandValue);
}
function RTE_RemoveFontFamilyStyle(element)
{
	if (element !=null)
	{
		if (element.style !=null && element.style.fontFamily)
		{
			element.style.removeAttribute("fontFamily");
		}
		for (var i=0; i<element.childNodes.length;i++)
		{
			RTE_RemoveFontFamilyStyle(element.childNodes(i));
		}
	}
}
function RTE_ApplyFontSize(strCommandToPerform,strCommandValue)
{
	var strBaseElementID=RTE_DD_GetMenuBaseElementID();
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.overrides.ApplyFontSize !=null)
	{
		return instanceVariables.overrides.ApplyFontSize(strCommandToPerform,strCommandValue);
	}
	var elements=RTE_GetContainedElements(strBaseElementID);
	for (var i=0; i<elements.length;i++)
	{
		RTE_RemoveFontSizeStyle(elements[i]);
	}
	return RTE_DD_ExecuteCommand(strCommandToPerform,strCommandValue);
}
function RTE_RemoveFontSizeStyle(element)
{
	if (element !=null)
	{
		if (element.style !=null && element.style.fontSize)
		{
			element.style.removeAttribute("fontSize");
		}
		for (var i=0; i<element.childNodes.length;i++)
		{
			RTE_RemoveFontSizeStyle(element.childNodes(i));
		}
	}
}
function RTE_DD_FontNameOnMouseOver(elem)
{
	for (var i=0; i<elem.all.length; i++)
	{
		if (elem.all(i).tagName.toUpperCase()=="FONT")
		{
			elem.all(i).face=elem.all(i).innerText;
		}
	}
}
function RTE_DD_FontNameOnMouseOut(elem)
{
	for (var i=0; i<elem.all.length; i++)
	{
		if (elem.all(i).tagName.toUpperCase()=="FONT")
		{
			elem.all(i).face=null;
		}
	}
}
function RTE_DD_OpenForeColorSelector(strBaseElementID, strWebLanguage)
{
	RTE_DD_OpenMenu(strBaseElementID, g_strRTEForeColorMnemonic, RTE_DD_GetColorSelectorHtml(g_strRTEForeColorMnemonic, strWebLanguage), strWebLanguage, g_rgrgstrRTEColorMatrix.length);
}
function RTE_DD_OpenBackColorSelector(strBaseElementID, strWebLanguage)
{
	RTE_DD_OpenMenu(strBaseElementID, g_strRTEBackColorMnemonic, RTE_DD_GetColorSelectorHtml(g_strRTEBackColorMnemonic, strWebLanguage), strWebLanguage, g_rgrgstrRTEColorMatrix.length);
}
function RTE_DD_GetColorSelectorHtml(strCommandToPerform, strWebLanguage)
{
	var strMenuHtml=g_rgstrRTEMenuHtml[strCommandToPerform];
	if (null==strMenuHtml)
	{
		strMenuHtml=RTE_DD_GenerateMenuOpenHtml();
		var iColor;
		for (iColor=0; iColor < g_rgrgstrRTEColorMatrix.length; iColor++)
		{
			strMenuHtml+=RTE_DD_GenerateMenuItemHtml(g_cRTEColorMatrixColumns, iColor, strCommandToPerform,
					g_rgrgstrRTEColorMatrix[iColor][1], g_strRTEColorMatrixMenuItemPrefixHtml+g_rgrgstrRTEColorMatrix[iColor][1]+					g_strRTEColorMatrixMenuItemSufffixHtml.replace("%TOOLTIP%", g_rgrgstrRTEColorMatrix[iColor][0]), "",
					null, null, strWebLanguage);
		}
		strMenuHtml+=RTE_DD_GenerateMenuCloseHtml();
		g_rgstrRTEMenuHtml[strCommandToPerform]=strMenuHtml;
	}
	return strMenuHtml;
}
var g_cRTEColorMatrixColumns=8;
var g_rgrgstrRTEColorMatrix=new Array(
	new Array(L_Black_TEXT, "#000000"), new Array(L_Brown_TEXT, "#993300"), new Array(L_OliveGreen_TEXT, "#333300"), new Array(L_DarkGreen_TEXT, "#003300"),
	new Array(L_DarkTeal_TEXT, "#003366"), new Array(L_DarkBlue_TEXT, "#000080"), new Array(L_Indigo_TEXT, "#333399"), new Array(L_Gray80_TEXT, "#333333"),
	new Array(L_DarkRed_TEXT, "#800000"), new Array(L_Orange_TEXT, "#ff6600"), new Array(L_DarkYellow_TEXT, "#808000"), new Array(L_Green_TEXT, "#008000"),
	new Array(L_Teal_TEXT, "#008080"), new Array(L_Blue_TEXT, "#0000FF"), new Array(L_BlueGray_TEXT, "#666699"), new Array(L_Gray50_TEXT, "#808080"),
	new Array(L_Red_TEXT, "#FF0000"), new Array(L_LightOrange_TEXT, "#ff9900"), new Array(L_Lime_TEXT, "#99cc00"), new Array(L_SeaGreen_TEXT, "#339966"),
	new Array(L_Aqua_TEXT, "#33cccc"), new Array(L_LightBlue_TEXT, "#3366ff"), new Array(L_Violet_TEXT, "#800080"), new Array(L_Gray40_TEXT, "#969696"),
	new Array(L_Pink_TEXT, "#FF00FF"), new Array(L_Gold_TEXT, "#ffcc00"), new Array(L_Yellow_TEXT, "#FFFF00"), new Array(L_BrightGreen_TEXT, "#00FF00"),
	new Array(L_Turquoise_TEXT, "#00FFFF"), new Array(L_SkyBlue_TEXT, "#00ccff"), new Array(L_Plum_TEXT, "#993366"), new Array(L_Gray25_TEXT, "#C0C0C0"),
	new Array(L_Rose_TEXT, "#ff99cc"), new Array(L_Tan_TEXT, "#ffcc99"), new Array(L_LightYellow_TEXT, "#ffff99"), new Array(L_LightGreen_TEXT, "#ccffcc"),
	new Array(L_LightTurquoise_TEXT, "#ccffff"), new Array(L_PaleBlue_TEXT, "#99ccff"), new Array(L_Lavender_TEXT, "#cc99ff"), new Array(L_White_TEXT, "#FFFFFF") );
function RTE_CaseInsensitiveCompare(str1, str2)
{
	strU1=str1.toUpperCase();
	strU2=str2.toUpperCase();
	if (strU1 > strU2)
		return 1;
	else if (strU1 < strU2)
		return -1;
	else
		return 0;
}
function RTE_GetDialogHelper()
{
	return document.all(g_strRTEDialogHelperID);
}
function RTE_GetSortedFontNames()
{
	var rgstrFontNamesRet=new Array();
	var dh=RTE_GetDialogHelper();
	if ((null !=dh) && (null !=dh.fonts) && (0 < dh.fonts.count))
	{
		var iFont;
		for (iFont=1; iFont < dh.fonts.count; iFont++)
		{
			if (!RTE_StringIsNullOrEmpty(dh.fonts(iFont)))
			{
				rgstrFontNamesRet.push(dh.Fonts(iFont));
			}
		}
		return rgstrFontNamesRet.sort(RTE_CaseInsensitiveCompare);
	}
	else
	{
		RTE_InsertIntoSortedArrayIfValid(L_Font1_TEXT, rgstrFontNamesRet);
		RTE_InsertIntoSortedArrayIfValid(L_Font2_TEXT, rgstrFontNamesRet);
		RTE_InsertIntoSortedArrayIfValid(L_Font3_TEXT, rgstrFontNamesRet);
		RTE_InsertIntoSortedArrayIfValid(L_Font4_TEXT, rgstrFontNamesRet);
		RTE_InsertIntoSortedArrayIfValid(L_Font5_TEXT, rgstrFontNamesRet);
		RTE_InsertIntoSortedArrayIfValid(L_Font6_TEXT, rgstrFontNamesRet);
		RTE_InsertIntoSortedArrayIfValid(L_Font7_TEXT, rgstrFontNamesRet);
		RTE_InsertIntoSortedArrayIfValid(L_Font8_TEXT, rgstrFontNamesRet);
	}
	return rgstrFontNamesRet;
}
function RTE_IsChildOfElement(elemSearchingFor, elemToSearch)
{
	var rgelemChildren=elemToSearch.children;
	if ((null==rgelemChildren) || (0 >=rgelemChildren.length))
	{
		return false;
	}
	var iChild=0;
	for (iChild=0; iChild < rgelemChildren.length; iChild++)
	{
		var elemChild=rgelemChildren[iChild];
		if (elemChild==elemSearchingFor)
		{
			return true;
		}
		if (RTE_IsChildOfElement(elemSearchingFor, elemChild))
		{
			return true;
		}
	}
	return false;
}
function RTE_FindParentElementWithTag(elem, strTagName)
{
	if (null==elem.parentElement)
	{
		return null;
	}
	return RTE_FindParentElementOrSelfWithTag(elem.parentElement, strTagName);
}
function RTE_FindParentElementOrSelfWithTag(elem, strTagName)
{
	if (elem.tagName==strTagName)
	{
		return elem;
	}
	else
	{
		if (null==elem.parentElement)
		{
			return null;
		}
		return RTE_FindParentElementOrSelfWithTag(elem.parentElement, strTagName);
	}
}
var g_iRTELeft=0;
var g_iRTETop=1;
var g_iRTEWidth=2;
var g_iRTEHeight=3;
var g_iRTERight=4;
var g_iRTEBottom=5;
function RTE_GetElementWindowCoordinates(elem)
{
	var xLeft=0;
	var yTop=0;
	var cxWidth=elem.offsetWidth;
	var cyHeight=elem.offsetHeight;
	do
	{
		if (elem.currentStyle.position !="relative")
		{
			xLeft+=elem.offsetLeft;
			yTop+=elem.offsetTop;
		}
		if (null==elem.offsetParent)
		{
			var mLeft=parseInt(elem.currentStyle.marginLeft);
			var mTop=parseInt(elem.currentStyle.marginTop);
			if (!isNaN(mLeft))
			{
				xLeft+=mLeft;
			}
			if (!isNaN(mTop))
			{
				yTop+=mTop;
			}
		}
		elem=elem.offsetParent;
	}
	while (elem !=null);
	var rgnRet=new Array();
	rgnRet[g_iRTELeft]=xLeft;
	rgnRet[g_iRTETop]=yTop;
	rgnRet[g_iRTEWidth]=cxWidth;
	rgnRet[g_iRTEHeight]=cyHeight;
	rgnRet[g_iRTERight]=xLeft+cxWidth - 1;
	rgnRet[g_iRTEBottom]=yTop+cyHeight - 1;
	return rgnRet;
}
function RTE_GetServerRelativeUnlocalizedImageUrl(strImageFileName)
{
   return "/_layouts/images/"+strImageFileName;
}
function RTE_GetServerRelativeImageUrl(strImageFileName)
{
	return "/_layouts/"+L_Language_Text+"/images/"+strImageFileName;
}
function RTE_GetServerRelativeStylesheetUrl(strStylesheetFileName, strWebLocale)
{
   return "/_layouts/"+strWebLocale+"/styles/"+strStylesheetFileName;
}
function RTE_GetServerRelativeScriptUrl(strScriptFileName, strWebLocale)
{
   return "/_layouts/"+strWebLocale+"/"+strScriptFileName;
}
function RTE_StripDoubleSpaces(str)
{
	while (str.indexOf("  ") !=-1)
	{
		str=str.replace(/  /g, " ");
	}
	return str;
}
function RTE_AddClassToClassList(strClassList, strNewClass)
{
	if (0 <=strClassList.indexOf(strNewClass))
	{
		return strClassList;
	}
	return RTE_StripDoubleSpaces(strClassList+" "+strNewClass);
}
function RTE_ReplaceClassInClassList(strClassList, strOldClass, strNewClass)
{
	var iSel=strClassList.indexOf(strOldClass);
	var strAheadOfOldClass="";
	if (0 < iSel)
	{
		return RTE_StripDoubleSpaces(strClassList.substr(0, iSel)+" "+strNewClass+" "+strClassList.substr(iSel+strOldClass.length));
	}
	return RTE_AddClassToClassList(strClassList, strNewClass);
}
function RTE_RemoveClassFromClassList(strClassList, strClass)
{
	return RTE_ReplaceClassInClassList(strClassList, strClass, "");
}
function RTE_AddOrRemoveClassFromClassList(fAdd, strClassList, strClass)
{
	if (fAdd)
	{
		return RTE_AddClassToClassList(strClassList, strClass);
	}
	return RTE_RemoveClassFromClassList(strClassList, strClass);
}
function RTE_StringIsNullOrEmpty(str)
{
	return ((str==null) ||
			(str.length==0));
}
function RTE_InsertIntoSortedArrayIfValid(strInsert, rgstrDest)
{
	if (RTE_StringIsNullOrEmpty(strInsert))
	{
		return;
	}
	var i=0;
	for (i=rgstrDest.length; i >=0; i--)
	{
		if ((0==i) || (rgstrDest[i - 1] < strInsert))
		{
			rgstrDest[i]=strInsert;
			return;
		}
		else
		{
			rgstrDest[i]=rgstrDest[i - 1];
		}
	}
}
function RTE_GenerateStylesToolBarButtonHtml(strBaseElementID, strWebLanguage)
{
	var strHtmlRet="";
	strHtmlRet+=RTE_TB_GenerateOpenCellButtonHtml(strBaseElementID, g_strRTEStylesMnemonic);
	strHtmlRet+="<a TABINDEX=-1 href=\"#\" onfocus=\"RTE_TB_OnFocus('"+strBaseElementID+"', this);\" onblur=\"RTE_TB_OnBlur('"+strBaseElementID+"', this);\" onclick=\"RTE_DD_OpenStylesSelector('"+strBaseElementID+"' ,'"+strWebLanguage+"', true); return false;\" title=\""+			L_StylesToolTip_TEXT+"\"";
	strHtmlRet+=" style=\"margin-left: 2px; margin-right: 2px;\" unselectable=\"on\">"+L_StylesLabel_TEXT+"&nbsp;<img alt=\""+			L_StylesToolTip_TEXT+"\" src=\""+RTE_GetServerRelativeUnlocalizedImageUrl("menudark.gif")+"\" border=0 width=13 height=13 unselectable=\"on\">";
	strHtmlRet+="</a>";
	strHtmlRet+=RTE_TB_GenerateCloseCellButtonHtml();
	return strHtmlRet;
}
function RTE_DD_OpenStylesSelector(strBaseElementID, strWebLanguage)
{
	var strMnemonic=g_strRTEStylesMnemonic;
	var rgoMenuInfo=RTE_DD_GetStylesSelectorUnformattedHtml(strWebLanguage);
	var strMenuHtml=rgoMenuInfo[0];
	var cMenuItems=rgoMenuInfo[1];
	RTE_DD_OpenMenu(strBaseElementID, strMnemonic, strMenuHtml, cMenuItems);
}
function RTE_DD_GetStylesSelectorUnformattedHtml(strWebLanguage)
{
	var strMenuHtml=g_rgstrRTEMenuHtml[g_strRTEStylesMnemonic];
	if (null !=strMenuHtml)
	{
		return strMenuHtml;
	}
	var strCommandToPerform=g_strRTEFormatBlockMnemonic;
	strMenuHtml=RTE_DD_GenerateMenuOpenHtml(strWebLanguage);
	var rgstrItemNames=RTE_GetBlockFormatNames();
	var cMenuItems=rgstrItemNames.length;
	for (var iItem=0; iItem < cMenuItems; iItem++)
	{
		strMenuHtml+=RTE_DD_GenerateMenuItemHtml(1, iItem, strCommandToPerform, rgstrItemNames[iItem],
				rgstrItemNames[iItem], "", null, null, strWebLanguage);
	}
	strMenuHtml+=RTE_DD_GenerateMenuCloseHtml();
	g_rgstrRTEMenuHtml[g_strRTEStylesMnemonic]=new Array(strMenuHtml, cMenuItems);
	return g_rgstrRTEMenuHtml[g_strRTEStylesMnemonic];
}
function RTE_GetBlockFormatNames()
{
	var rgstrItemNamesRet=new Array();
	var dh=RTE_GetDialogHelper();
	if ((null !=dh) && (null !=dh.blockFormats) && (0 < dh.blockFormats.count))
	{
		var iItem;
		for (iItem=1; iItem < dh.blockFormats.count; iItem++)
		{
			RTE_InsertIntoSortedArrayIfValid(dh.blockFormats(iItem), rgstrItemNamesRet);
		}
	}
	return rgstrItemNamesRet;
}
function RTE_GenerateInsertRowToolBarButtonHtml(strBaseElementID, strWebLanguage)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	instanceVariables.functions[g_strRTEInsertRowAbove]=RTE_InsertRowAbove;
	instanceVariables.functions[g_strRTEInsertRowBelow]=RTE_InsertRowBelow;
	var strHtmlRet="";
	strHtmlRet+=RTE_TB_GenerateOpenCellButtonHtml(strBaseElementID, g_strRTEInsertRowMnemonic, "RTE_DD_OpenInsertRowSelector('"+strBaseElementID+"' ,'"+strWebLanguage+"')");
	strHtmlRet+=L_InsertRowLabel_TEXT;
	strHtmlRet+="<img src=\""+RTE_GetServerRelativeImageUrl("rteirow.gif")+"\" alt=\""+L_InsertRowToolTip_TEXT+"\" border=0 width=16 height=16 unselectable=\"on\">";
	strHtmlRet+="<img alt=\""+L_InsertRowToolTip_TEXT+"\" src=\""+RTE_GetServerRelativeUnlocalizedImageUrl("menudark.gif")+"\" border=0 width=13 height=13 unselectable=\"on\">";
	strHtmlRet+=RTE_TB_GenerateCloseCellButtonHtml();
	return strHtmlRet;
}
function RTE_DD_OpenInsertRowSelector(strBaseElementID, strWebLanguage)
{
	var strMnemonic=g_strRTEInsertRowMnemonic;
	var rgoMenuInfo=RTE_DD_GetInsertRowSelectorUnformattedHtml(strBaseElementID, strWebLanguage);
	var strMenuHtml=rgoMenuInfo[0];
	var cMenuItems=rgoMenuInfo[1];
	RTE_DD_OpenMenu(strBaseElementID, strMnemonic, strMenuHtml, cMenuItems);
}
function RTE_DD_GetInsertRowSelectorUnformattedHtml(strBaseElementID, strWebLanguage)
{
	var strCommandToPerform=g_strRTEInsertRowMnemonic;
	var strMenuHtml=g_rgstrRTEMenuHtml[strCommandToPerform];
	if (null !=strMenuHtml)
	{
		return strMenuHtml;
	}
	strMenuHtml=RTE_DD_GenerateMenuOpenHtml(strWebLanguage);
	var rgstrItemNames=new Array();
	rgstrItemNames.push(L_InsertRowAboveLabel_TEXT);
	rgstrItemNames.push(L_InsertRowBelowLabel_TEXT);
	var cMenuItems=rgstrItemNames.length;
	var iItem=0;
	strMenuHtml+=RTE_DD_GenerateMenuItemScriptHtml(1, iItem,
		"RTE_DD_StartAction('"+g_strRTEInsertRowAbove+"', '"+strBaseElementID+"')",
		rgstrItemNames[iItem],
		rgstrItemNames[iItem],
		null, null, strWebLanguage);
	iItem=1;
	strMenuHtml+=RTE_DD_GenerateMenuItemScriptHtml(1, iItem,
		"RTE_DD_StartAction('"+g_strRTEInsertRowBelow+"', '"+strBaseElementID+"')",
		rgstrItemNames[iItem],
		rgstrItemNames[iItem],
		null, null, strWebLanguage);
	strMenuHtml+=RTE_DD_GenerateMenuCloseHtml();
	g_rgstrRTEMenuHtml[strCommandToPerform]=new Array(strMenuHtml, cMenuItems);
	return g_rgstrRTEMenuHtml[strCommandToPerform];
}
function RTE_GenerateInsertColumnToolBarButtonHtml(strBaseElementID, strWebLanguage)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	instanceVariables.functions[g_strRTEInsertColumnLeft]=RTE_InsertColumnLeft;
	instanceVariables.functions[g_strRTEInsertColumnRight]=RTE_InsertColumnRight;
	var strHtmlRet="";
	strHtmlRet+=RTE_TB_GenerateOpenCellButtonHtml(strBaseElementID, g_strRTEInsertColumnMnemonic, "RTE_DD_OpenInsertColumnSelector('"+strBaseElementID+"' ,'"+strWebLanguage+"')");
	strHtmlRet+=L_InsertColumnLabel_TEXT;
	strHtmlRet+="<img src=\""+RTE_GetServerRelativeImageUrl("rteicol.gif")+"\" alt=\""+L_InsertColumnToolTip_TEXT+"\" border=0 width=16 height=16 unselectable=\"on\">";
	strHtmlRet+="<img alt=\""+L_InsertColumnToolTip_TEXT+"\" src=\""+RTE_GetServerRelativeUnlocalizedImageUrl("menudark.gif")+"\" border=0 width=13 height=13 unselectable=\"on\">";
	strHtmlRet+=RTE_TB_GenerateCloseCellButtonHtml();
	return strHtmlRet;
}
function RTE_DD_OpenInsertColumnSelector(strBaseElementID, strWebLanguage)
{
	var strMnemonic=g_strRTEInsertColumnMnemonic;
	var rgoMenuInfo=RTE_DD_GetInsertColumnSelectorUnformattedHtml(strBaseElementID, strWebLanguage);
	var strMenuHtml=rgoMenuInfo[0];
	var cMenuItems=rgoMenuInfo[1];
	RTE_DD_OpenMenu(strBaseElementID, strMnemonic, strMenuHtml, cMenuItems);
}
function RTE_DD_GetInsertColumnSelectorUnformattedHtml(strBaseElementID, strWebLanguage)
{
	var strCommandToPerform=g_strRTEInsertColumnMnemonic;
	var strMenuHtml=g_rgstrRTEMenuHtml[strCommandToPerform];
	if (null !=strMenuHtml)
	{
		return strMenuHtml;
	}
	strMenuHtml=RTE_DD_GenerateMenuOpenHtml(strWebLanguage);
	var rgstrItemNames=new Array();
	rgstrItemNames.push(L_InsertColumnLeftLabel_TEXT);
	rgstrItemNames.push(L_InsertColumnRightLabel_TEXT);
	var cMenuItems=rgstrItemNames.length;
	var iItem=0;
	strMenuHtml+=RTE_DD_GenerateMenuItemScriptHtml(1, iItem,
		"RTE_DD_StartAction('"+g_strRTEInsertColumnLeft+"', '"+strBaseElementID+"')",
		rgstrItemNames[iItem],
		rgstrItemNames[iItem],
		null, null, strWebLanguage);
	var iItem=1;
	strMenuHtml+=RTE_DD_GenerateMenuItemScriptHtml(1, iItem,
		"RTE_DD_StartAction('"+g_strRTEInsertColumnRight+"', '"+strBaseElementID+"')",
		rgstrItemNames[iItem],
		rgstrItemNames[iItem],
		null, null, strWebLanguage);
	strMenuHtml+=RTE_DD_GenerateMenuCloseHtml();
	g_rgstrRTEMenuHtml[strCommandToPerform]=new Array(strMenuHtml, cMenuItems);
	return g_rgstrRTEMenuHtml[strCommandToPerform];
}
function RTE_GenerateInsertCellToolBarButtonHtml(strBaseElementID, strWebLanguage)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	instanceVariables.functions[g_strRTEInsertCellLeft]=RTE_InsertCellLeft;
	instanceVariables.functions[g_strRTEInsertCellRight]=RTE_InsertCellRight;
	var strHtmlRet="";
	strHtmlRet+=RTE_TB_GenerateOpenCellButtonHtml(strBaseElementID, g_strRTEInsertCellMnemonic, "RTE_DD_OpenInsertCellSelector('"+strBaseElementID+"' ,'"+strWebLanguage+"')");
	strHtmlRet+=L_InsertCellLabel_TEXT;
	strHtmlRet+="<img src=\""+RTE_GetServerRelativeImageUrl("rteicell.gif")+"\" alt=\""+L_InsertCellToolTip_TEXT+"\" border=0 width=16 height=16 unselectable=\"on\">";
	strHtmlRet+="<img alt=\""+L_InsertCellToolTip_TEXT+"\" src=\""+RTE_GetServerRelativeUnlocalizedImageUrl("menudark.gif")+"\" border=0 width=13 height=13 unselectable=\"on\">";
	strHtmlRet+=RTE_TB_GenerateCloseCellButtonHtml();
	return strHtmlRet;
}
function RTE_DD_OpenInsertCellSelector(strBaseElementID, strWebLanguage)
{
	var strMnemonic=g_strRTEInsertCellMnemonic;
	var rgoMenuInfo=RTE_DD_GetInsertCellSelectorUnformattedHtml(strBaseElementID, strWebLanguage);
	var strMenuHtml=rgoMenuInfo[0];
	var cMenuItems=rgoMenuInfo[1];
	RTE_DD_OpenMenu(strBaseElementID, strMnemonic, strMenuHtml, cMenuItems);
}
function RTE_DD_GetInsertCellSelectorUnformattedHtml(strBaseElementID, strWebLanguage)
{
	var strCommandToPerform=g_strRTEInsertCellMnemonic;
	var strMenuHtml=g_rgstrRTEMenuHtml[strCommandToPerform];
	if (null !=strMenuHtml)
	{
		return strMenuHtml;
	}
	strMenuHtml=RTE_DD_GenerateMenuOpenHtml(strWebLanguage);
	var rgstrItemNames=new Array();
	rgstrItemNames.push(L_InsertCellLeftLabel_TEXT);
	rgstrItemNames.push(L_InsertCellRightLabel_TEXT);
	var cMenuItems=rgstrItemNames.length;
	var iItem=0;
	strMenuHtml+=RTE_DD_GenerateMenuItemScriptHtml(1, iItem,
		"RTE_DD_StartAction('"+g_strRTEInsertCellLeft+"', '"+strBaseElementID+"')",
		rgstrItemNames[iItem],
		rgstrItemNames[iItem],
		null, null, strWebLanguage);
	var iItem=1;
	strMenuHtml+=RTE_DD_GenerateMenuItemScriptHtml(1, iItem,
		"RTE_DD_StartAction('"+g_strRTEInsertCellRight+"', '"+strBaseElementID+"')",
		rgstrItemNames[iItem],
		rgstrItemNames[iItem],
		null, null, strWebLanguage);
	strMenuHtml+=RTE_DD_GenerateMenuCloseHtml();
	g_rgstrRTEMenuHtml[strCommandToPerform]=new Array(strMenuHtml, cMenuItems);
	return g_rgstrRTEMenuHtml[strCommandToPerform];
}
function RTE_GetCurrentSelectionChain(strBaseElementID)
{
	var aChain=new Array();
	var elem=RTE_GetCurrentElement(strBaseElementID);
	while (elem !=null)
	{
		aChain[aChain.length]=elem;
		if (elem.id==strBaseElementID || elem.tagName=="BODY")
		{
			break;
		}
		elem=elem.parentElement;
	}
	return aChain;
}
function RTE_IsElementInChain(aChain, strTagName)
{
	if (aChain==null || aChain.length==0)
	{
		return false;
	}
	var aChain_length=aChain.length;
	if (strTagName==null || strTagName.length==0)
	{
		return false;
	}
	for (var i=0; i<aChain_length; i++)
	{
		if (aChain[i].tagName==strTagName)
		{
			return true;
		}
	}
	return false;
}
var g_aTableCellTagNames;
if (g_aTableCellTagNames==null)
{
	g_aTableCellTagNames=new Array("TD", "TH");
}
function RTE_IsAnyElementInChain(aChain, aTagNames)
{
	if (aChain==null || aChain.length==0)
	{
		return false;
	}
	var aChain_length=aChain.length;
	if (aTagNames==null || aTagNames.length==0)
	{
		return false;
	}
	var aTagNames_length=aTagNames.length;
	for (var i=0; i<aChain_length; i++)
	{
		var currentTagName=aChain[i].tagName;
		for (var j=0; j<aTagNames_length; j++)
		{
			if (currentTagName==aTagNames[j])
			{
				return true;
			}
		}
	}
	return false;
}
function RTE_GetCurrentSelection(strBaseElementID)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	if (docEditor !=null)
	{
		return docEditor.selection;
	}
	return null;
}
function RTE_GetCurrentSelectionType(strBaseElementID)
{
	var selection=RTE_GetCurrentSelection(strBaseElementID);
	if (selection !=null)
	{
		return selection.type;
	}
	return null;
}
function RTE_GetCurrentSelectionRange(strBaseElementID)
{
	var selection=RTE_GetCurrentSelection(strBaseElementID);
	if (selection !=null)
	{
		return selection.createRange();
	}
	return null;
}
function RTE_GetCurrentElement(strBaseElementID)
{
	var selection=RTE_GetCurrentSelection(strBaseElementID);
	if (selection==null) {return null;}
	var range=selection.createRange();
	if (range==null) {return null;}
	if (selection.type.toLowerCase()=="control")
	{
		if (range.length !=1) {return null;}
		return range.item(0);
	}
	else
	{
		var elemParent=range.parentElement();
		if (elemParent !=null)
		{
			var editorDocument=RTE_GetEditorDocument(strBaseElementID);
			if (editorDocument.body.contains(elemParent))
			{
				return elemParent;
			}
		}
	}
	return null;
}
function RTE_IsElementSelected(strBaseElementID, strTagName)
{
	var currentElement=RTE_GetCurrentElement(strBaseElementID);
	if (currentElement !=null)
	{
		if (currentElement.tagName==strTagName)
		{
			return true;
		}
	}
	return false;
}
function RTE_GetNearestContainingParentElementOfType(strBaseElementID, elem, strTagName)
{
	return RTE_GetNearestContainingParentElementOfTypes(strBaseElementID, elem, new Array(strTagName))
}
function RTE_GetNearestContainingParentElementOfTypes(strBaseElementID, elem, aTagNames)
{
	var aTagNames_length=aTagNames.length;
	if (elem==null) return null;
	for (var i=0; i<aTagNames_length; i++)
	{
		if (elem.tagName==aTagNames[i])
		{
			return elem;
		}
	}
	var elemParent=elem.parentElement;
	while (elemParent !=null)
	{
		if (elemParent.id==strBaseElementID)
		{
			return null;
		}
		for (var i=0; i<aTagNames_length; i++)
		{
			if (elemParent.tagName==aTagNames[i])
			{
				return elemParent;
			}
		}
		elemParent=elemParent.parentElement;
	}
	return null;
}
function RTE_GetNearestContainingElementOfType(strBaseElementID, strTagName)
{
	var elem=RTE_GetCurrentElement(strBaseElementID);
	return RTE_GetNearestContainingParentElementOfType(strBaseElementID, elem, strTagName);
}
function RTE_GetNearestContainingElementOfTypes(strBaseElementID, aTagNames)
{
	var elem=RTE_GetCurrentElement(strBaseElementID);
	return RTE_GetNearestContainingParentElementOfTypes(strBaseElementID, elem, aTagNames);
}
function RTE_GetContainedElements(strBaseElementID)
{
	var containedElements=new Array();
	var selection=RTE_GetCurrentSelection(strBaseElementID);
	if (selection !=null && selection.type.toLowerCase()=="control")
	{
		var elemParent=RTE_GetCurrentElement(strBaseElementID);
		var elemParentAll=elemParent.all;
		for (var i=0; i<elemParentAll.length; i++)
		{
			containedElements[containedElements.length]=elemParentAll(i);
		}
		containedElements[containedElements.length]=elemParent;
	}
	else
	{
		var rngSelection=RTE_GetCurrentSelectionRange(strBaseElementID);
		if (rngSelection !=null)
		{
			var elemParent=RTE_GetOutermostSelectionElement(strBaseElementID);
			if (elemParent !=null)
			{
				var elemParentAll=elemParent.all;
				if (rngSelection.text==elemParent.outerText)
				{
					for (var i=0; i<elemParentAll.length; i++)
					{
						containedElements[containedElements.length]=elemParentAll(i);
					}
					containedElements[containedElements.length]=elemParent;
				}
				else
				{
					var rngContainedElement=rngSelection.duplicate();
					for (var i=0; i<elemParentAll.length; i++)
					{
						rngContainedElement.moveToElementText(elemParentAll(i));
						if (rngSelection.inRange(rngContainedElement))
						{
							containedElements[containedElements.length]=elemParentAll(i);
						}
					}
				}
			}
		}
	}
	return containedElements;
}
function RTE_GetOutermostSelectionElement(strBaseElementID)
{
	var elemParent=null;
	var selection=RTE_GetCurrentSelection(strBaseElementID);
	if (selection !=null && selection.type.toLowerCase()=="control")
	{
		elemParent=RTE_GetCurrentElement(strBaseElementID);
		containedElements=elemParent.all;
		containedElements[containedElements.length]=elemParent;
	}
	else
	{
		var rngSelection=RTE_GetCurrentSelectionRange(strBaseElementID);
		if (rngSelection !=null)
		{
			var elemParent=RTE_GetInnerMostContainingElement(rngSelection);
			if (elemParent !=null)
			{
				var elemFullyContainedParent=null;
				while (elemParent !=null && elemParent.tagName !="BODY" && rngSelection.text==elemParent.outerText)
				{
					elemFullyContainedParent=elemParent;
					elemParent=elemParent.parentElement;
				}
				if (elemFullyContainedParent !=null)
				{
					elemParent=elemFullyContainedParent;
				}
			}
		}
	}
	return elemParent;
}
function RTE_GetInnerMostContainingElement(range)
{
	var element=RTE_GetContainingParent(range);
	if (element !=null)
	{
		var rangeElement=range.duplicate();
		var elementFound=false;
		while (!elementFound)
		{
			var containingChildFound=false;
			var elementChildren=element.children;
			for (var i=0; i<elementChildren.length; i++)
			{
				rangeElement.moveToElementText(elementChildren[i]);
				if (rangeElement.inRange(range))
				{
					containingChildFound=true;
					element=elementChildren[i];
					break;
				}
			}
			if (!containingChildFound)
			{
				elementFound=true;
			}
		}
	}
	return element;
}
function RTE_GetContainingParent(range)
{
	var element=range.parentElement();
	if (element !=null)
	{
		var rangeElement=range.duplicate();
		rangeElement.moveToElementText(element);
		while (element !=null && element.tagName !="BODY" && !rangeElement.inRange(range))
		{
			element=element.parentElement;
			rangeElement.moveToElementText(element);
		}
	}
	return element;
}
function RTE_GetSelectedCells(strBaseElementID)
{
	var selectedCells=new Array();
	if (RTE_IsElementSelected(strBaseElementID, "TR"))
	{
		var elemRowCurrent=RTE_GetCurrentElement(strBaseElementID);
		if (elemRowCurrent !=null)
		{
			var rngSelection=RTE_GetCurrentSelectionRange(strBaseElementID);
			var rngContainedElement=rngSelection.duplicate();
			for (var i=0; i<elemRowCurrent.cells.length; i++)
			{
				rngContainedElement.moveToElementText(elemRowCurrent.cells(i));
				if (rngSelection.inRange(rngContainedElement))
				{
					selectedCells[selectedCells.length]=elemRowCurrent.cells(i);
				}
				else if ((rngSelection.compareEndPoints("StartToStart", rngContainedElement)==1)
					&& (rngSelection.compareEndPoints("StartToEnd", rngContainedElement)==-1))
				{
					selectedCells[selectedCells.length]=elemRowCurrent.cells(i);
				}
				else if ((rngSelection.compareEndPoints("EndToStart", rngContainedElement)==1)
					&& (rngSelection.compareEndPoints("EndToEnd", rngContainedElement)==-1))
				{
					selectedCells[selectedCells.length]=elemRowCurrent.cells(i);
				}
			}
		}
	}
	return selectedCells;
}
function RTE_InsertCellLeft(strBaseElementID)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.overrides.InsertCellLeft !=null)
	{
		return instanceVariables.overrides.InsertCellLeft(strBaseElementID);
	}
	if (RTE_GetDirectionOfSelection(strBaseElementID)=="rtl")
	{
		RTE_InsertCellBase(strBaseElementID, "afterEnd");
	}
	else
	{
		RTE_InsertCellBase(strBaseElementID, "beforeBegin");
	}
}
function RTE_InsertCellRight(strBaseElementID)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.overrides.InsertCellRight !=null)
	{
		return instanceVariables.overrides.InsertCellRight(strBaseElementID);
	}
	if (RTE_GetDirectionOfSelection(strBaseElementID)=="rtl")
	{
		RTE_InsertCellBase(strBaseElementID, "beforeBegin");
	}
	else
	{
		RTE_InsertCellBase(strBaseElementID, "afterEnd");
	}
}
function RTE_InsertCellBase(strBaseElementID, strWhere)
{
	var elemCellCurrent=RTE_GetNearestContainingElementOfTypes(strBaseElementID, g_aTableCellTagNames);
	if (elemCellCurrent==null)
	{
		return;
	}
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	if (docEditor==null)
	{
		return;
	}
	var elemCellNew=docEditor.createElement(elemCellCurrent.tagName);
	if (elemCellNew==null)
	{
		return;
	}
	elemCellNew.mergeAttributes(elemCellCurrent, true);
	elemCellNew.runtimeStyle.cssText=elemCellCurrent.runtimeStyle.cssText;
	elemCellCurrent.insertAdjacentElement(strWhere, elemCellNew);
	var textRange=docEditor.body.createTextRange();
	textRange.moveToElementText(elemCellNew);
	textRange.select();
	var elemTableCurrent=RTE_GetNearestContainingParentElementOfType(strBaseElementID, elemCellCurrent, "TABLE");
	if (elemTableCurrent)
	{
		RTE_ReapplyTableStyles(elemTableCurrent);
	}
}
function RTE_InsertRowAbove(strBaseElementID)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.overrides.InsertRowAbove !=null)
	{
		return instanceVariables.overrides.InsertRowAbove(strBaseElementID);
	}
	RTE_InsertRowBase(strBaseElementID, "beforeBegin");
}
function RTE_InsertRowBelow(strBaseElementID)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.overrides.InsertRowBelow !=null)
	{
		return instanceVariables.overrides.InsertRowBelow(strBaseElementID);
	}
	RTE_InsertRowBase(strBaseElementID, "afterEnd");
}
function RTE_InsertRowBase(strBaseElementID, strWhere)
{
	var elemRowSelected=RTE_GetNearestContainingElementOfType(strBaseElementID, "TR");
	if (elemRowSelected==null)
	{
		return;
	}
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	if (docEditor==null)
	{
		return;
	}
	var elemRowNew=docEditor.createElement("TR");
	if (elemRowNew==null)
	{
		return;
	}
	elemRowNew.mergeAttributes(elemRowSelected, true);
	elemRowNew.runtimeStyle.cssText=elemRowSelected.runtimeStyle.cssText;
	elemRowSelected.insertAdjacentElement(strWhere, elemRowNew);
	var cells=elemRowSelected.cells;
	for (var i=0; i<cells.length; i++)
	{
		var elemCellNew=elemRowNew.insertCell();
		elemCellNew.mergeAttributes(cells(i), true);
		elemCellNew.runtimeStyle.cssText=cells(i).runtimeStyle.cssText;
	}
	var textRange=docEditor.body.createTextRange();
	var dir=RTE_GetDirectionOfSelection(strBaseElementID);
	if (dir=="ltr")
	{
		textRange.moveToElementText(elemRowNew.cells(0));
	}
	else
	{
		textRange.moveToElementText(elemRowNew.cells(elemRowNew.cells.length - 1));
	}
	textRange.select();
	var elemTableSelected=RTE_GetNearestContainingParentElementOfType(strBaseElementID, elemRowSelected, "TABLE");
	if (elemTableSelected)
	{
		RTE_ReapplyTableStyles(elemTableSelected);
	}
}
function RTE_InsertColumnLeft(strBaseElementID)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.overrides.InsertColumnLeft !=null)
	{
		return instanceVariables.overrides.InsertColumnLeft(strBaseElementID);
	}
	if (RTE_GetDirectionOfSelection(strBaseElementID)=="rtl")
	{
		return RTE_InsertColumnBase(strBaseElementID, "afterEnd");
	}
	else
	{
		return RTE_InsertColumnBase(strBaseElementID, "beforeBegin");
	}
}
function RTE_InsertColumnRight(strBaseElementID)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (instanceVariables !=null && instanceVariables.overrides.InsertColumnRight !=null)
	{
		return instanceVariables.overrides.InsertColumnRight(strBaseElementID);
	}
	if (RTE_GetDirectionOfSelection(strBaseElementID)=="rtl")
	{
		return RTE_InsertColumnBase(strBaseElementID, "beforeBegin");
	}
	else
	{
		return RTE_InsertColumnBase(strBaseElementID, "afterEnd");
	}
}
function RTE_InsertColumnBase(strBaseElementID, strWhere)
{
	var elemCellSelected=RTE_GetNearestContainingElementOfTypes(strBaseElementID, g_aTableCellTagNames);
	if (elemCellSelected==null)
	{
		return;
	}
	var elemTableSelected=RTE_GetNearestContainingParentElementOfType(strBaseElementID, elemCellSelected, "TABLE");
	if (elemTableSelected==null)
	{
		return false;
	}
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	if (docEditor==null) return;
	var colSpanIndex=0;
	var colSpanCount=0;
	var elemRowSelected=RTE_GetNearestContainingParentElementOfType(strBaseElementID, elemCellSelected, "TR");
	if (elemRowSelected !=null)
	{
		var elemRowSelectedCells=elemRowSelected.cells;
		var elemRowSelectedCellsLength=elemRowSelectedCells.length;
		for (var i=0; i<elemRowSelectedCellsLength; i++)
		{
			colSpanCount=elemRowSelectedCells[i].colSpan;
			if (elemRowSelectedCells[i]==elemCellSelected)
			{
				currentCellPosition=i;
				break;
			}
			colSpanIndex+=colSpanCount;
		}
	}
	var elemTableSelectedRows=elemTableSelected.rows;
	var elemTableSelectedRowsLength=elemTableSelectedRows.length;
	for (var i=0; i<elemTableSelectedRowsLength; i++)
	{
		var elemRow=elemTableSelectedRows[i];
		if (elemRow !=null)
		{
			var currentColSpanIndex=0;
			var currentColSpanCount=0;
			var elemRowCells=elemRow.cells;
			var elemRowCellsLength=elemRowCells.length;
			for (var j=0; j<elemRowCellsLength; j++)
			{
				var elemCell=elemRowCells[j];
				currentColSpanCount=elemCell.colSpan;
				if (strWhere=="beforeBegin")
				{
					if (currentColSpanIndex==colSpanIndex)
					{
						var elemCellNew=docEditor.createElement(elemCell.tagName);
						if (elemCellNew !=null)
						{
							elemCellNew.mergeAttributes(elemCell, true);
							elemCellNew.runtimeStyle.cssText=elemCell.runtimeStyle.cssText;
							elemCellNew.colSpan=1;
							elemCell.insertAdjacentElement(strWhere, elemCellNew);
							if (i==0)
							{
								var textRange=docEditor.body.createTextRange();
								if (textRange !=null)
								{
									textRange.moveToElementText(elemCellNew);
									textRange.select();
								}
							}
						}
						break;
					}
					else if (currentColSpanIndex+currentColSpanCount > colSpanIndex)
					{
						elemCell.colSpan++;
						break;
					}
				}
				else if (strWhere=="afterEnd")
				{
					if (currentColSpanIndex+currentColSpanCount==colSpanIndex+colSpanCount)
					{
						var elemCellNew=docEditor.createElement(elemCell.tagName);
						if (elemCellNew !=null)
						{
							elemCellNew.mergeAttributes(elemCell, true);
							elemCellNew.runtimeStyle.cssText=elemCell.runtimeStyle.cssText;
							elemCellNew.colSpan=1;
							elemCell.insertAdjacentElement(strWhere, elemCellNew);
							if (i==0)
							{
								var textRange=docEditor.body.createTextRange();
								if (textRange !=null)
								{
									textRange.moveToElementText(elemCellNew);
									textRange.select();
								}
							}
						}
						break;
					}
					else if (currentColSpanIndex+currentColSpanCount > colSpanIndex+colSpanCount)
					{
						elemCell.colSpan++;
						break;
					}
				}
				currentColSpanIndex+=currentColSpanCount;
			}
		}
	}
	RTE_ReapplyTableStyles(elemTableSelected);
}
function RTE_DeleteColumn(strBaseElementID)
{
	var elemCellSelected=RTE_GetNearestContainingElementOfTypes(strBaseElementID, g_aTableCellTagNames);
	if (elemCellSelected==null) {    return;    }
	var elemTableSelected=RTE_GetNearestContainingParentElementOfType(strBaseElementID, elemCellSelected, "TABLE");
	if (elemTableSelected==null) { return; }
	var elemCellSelectedIndex=elemCellSelected.cellIndex;
	var colSpanIndex=0;
	var colSpanCount=0;
	var elemRowSelected=RTE_GetNearestContainingParentElementOfType(strBaseElementID, elemCellSelected, "TR");
	if (elemRowSelected !=null)
	{
		var elemRowSelectedCells=elemRowSelected.cells;
		var elemRowSelectedCellsLength=elemRowSelectedCells.length;
		for (var i=0; i<elemRowSelectedCellsLength; i++)
		{
			colSpanCount=elemRowSelectedCells[i].colSpan;
			if (elemRowSelectedCells[i]==elemCellSelected)
			{
				currentCellPosition=i;
				break;
			}
			colSpanIndex+=colSpanCount;
		}
	}
	var elemTableSelectedRows=elemTableSelected.rows;
	var elemTableSelectedRowsLength=elemTableSelectedRows.length;
	for (var i=0; i<elemTableSelectedRowsLength; i++)
	{
		var elemRow=elemTableSelectedRows[i];
		if (elemRow !=null)
		{
			var currentColSpanIndex=0;
			var currentColSpanCount=0;
			var cellsToModify=new Array();
			var elemRowCells=elemRow.cells;
			var elemRowCellsLength=elemRowCells.length;
			for (var j=0; j<=elemRowCellsLength; j++)
			{
				if (currentColSpanIndex >=colSpanIndex+colSpanCount)
				{
					for (var k=0; k<cellsToModify.length; k++)
					{
						var cell=cellsToModify[k][0];
						var decrement=cellsToModify[k][1];
						if (decrement==cell.colSpan)
						{
							cell.removeNode(true);
						}
						else
						{
							cell.colSpan -=decrement;
						}
					}
					break;
				}
				var elemCell=elemRowCells[j];
				currentColSpanCount=elemCell.colSpan;
				if (currentColSpanIndex+currentColSpanCount <=colSpanIndex)
				{
					currentColSpanIndex+=currentColSpanCount;
					continue;
				}
				else
				{
					var colSpanDecrement=0;
					if ((currentColSpanIndex >=colSpanIndex) && (currentColSpanIndex+currentColSpanCount <=colSpanIndex+colSpanCount))
					{
						colSpanDecrement=currentColSpanCount;
					}
					else if ((currentColSpanIndex <=colSpanIndex) && (currentColSpanIndex+currentColSpanCount >=colSpanIndex+colSpanCount))
					{
						colSpanDecrement=colSpanCount;
					}
					else if ((currentColSpanIndex <=colSpanIndex) && (currentColSpanIndex+currentColSpanCount < colSpanIndex+colSpanCount))
					{
						colSpanDecrement=currentColSpanIndex+currentColSpanCount - colSpanIndex;
					}
					else if ((currentColSpanIndex > colSpanIndex)  && (currentColSpanIndex+currentColSpanCount > colSpanIndex+colSpanCount))
					{
						colSpanDecrement=colSpanIndex+colSpanCount - currentColSpanIndex;
					}
					cellsToModify[cellsToModify.length]=new Array(elemCell, colSpanDecrement);
				}
				currentColSpanIndex+=currentColSpanCount;
			}
		}
	}
	var rows=elemTableSelected.rows;
	var rowsLength=rows.length;
	for(var i=rowsLength; i>0; i--)
	{
		if (rows(i-1).cells.length==0)
		{
			rows(i-1).removeNode(true);
		}
	}
	if (elemTableSelected.rows.length==0)
	{
		elemTableSelected.removeNode(true);
	}
	else
	{
		var moveSelectionToCellIndex=0;
		var moveSelectionToSpanCount=0;
		var elemTableTopRowCells=rows[0].cells;
		for (var i=0; i<elemTableTopRowCells.length; i++)
		{
			moveSelectionToCellIndex=i;
			var currentSpanCount=elemTableTopRowCells[i].colSpan;
			if (moveSelectionToSpanCount+currentSpanCount > colSpanIndex)
				break;
			moveSelectionToSpanCount+=currentSpanCount;
		}
		var editorDocument=RTE_GetEditorDocument(strBaseElementID);
		var textRange=editorDocument.body.createTextRange();
		var cellToSelect=elemTableTopRowCells[moveSelectionToCellIndex];
		textRange.moveToElementText(cellToSelect);
		textRange.select();
		textRange.collapse(true);
		RTE_ReapplyTableStyles(elemTableSelected);
	}
	RTE_StartResetToolBarTimer(strBaseElementID);
}
function RTE_DeleteRow(strBaseElementID)
{
	var elemRowSelected=RTE_GetNearestContainingElementOfType(strBaseElementID, "TR");
	if (elemRowSelected !=null)
	{
		var elemTableSelected=RTE_GetNearestContainingParentElementOfType(strBaseElementID, elemRowSelected, "TABLE");
		var elemTableNewSelectionRowIndex=elemRowSelected.rowIndex;
		elemRowSelected.removeNode(true);
		if (elemTableSelected)
		{
			if (elemTableSelected.rows.length > 0)
			{
				if (elemTableNewSelectionRowIndex >=elemTableSelected.rows.length)
				{
					elemTableNewSelectionRowIndex=elemTableSelected.rows.length - 1;
				}
				var elemTableNewSelectionRowCells=elemTableSelected.rows[elemTableNewSelectionRowIndex].cells;
				var editorDocument=RTE_GetEditorDocument(strBaseElementID);
				var textRange=editorDocument.body.createTextRange();
				if (elemTableNewSelectionRowCells.length > 0)
				{
					var cellToSelect=elemTableNewSelectionRowCells[0];
					textRange.moveToElementText(cellToSelect);
					textRange.select();
					textRange.collapse(true);
				}
				RTE_ReapplyTableStyles(elemTableSelected);
			}
			else
			{
				elemTableSelected.removeNode(true);
			}
		}
	}
	RTE_StartResetToolBarTimer(strBaseElementID);
}
function RTE_SplitCell(strBaseElementID)
{
	var elemCellSelected=RTE_GetNearestContainingElementOfTypes(strBaseElementID, g_aTableCellTagNames);
	if (elemCellSelected==null)
	{
		return;
	}
	var currentCellPosition=-1;
	var colSpanCount=0;
	var elemRowSelected=RTE_GetNearestContainingParentElementOfType(strBaseElementID, elemCellSelected, "TR");
	if (elemRowSelected !=null)
	{
		for (var i=0; i<elemRowSelected.cells.length; i++)
		{
			colSpanCount+=elemRowSelected.cells[i].colSpan;
			if (elemRowSelected.cells[i]==elemCellSelected)
			{
				currentCellPosition=i;
				break;
			}
		}
	}
	var elemCellNew=document.createElement(elemCellSelected.tagName);
	if (elemCellNew !=null)
	{
		elemCellNew.mergeAttributes(elemCellSelected, true);
		elemCellNew.runtimeStyle.cssText=elemCellSelected.runtimeStyle.cssText;
		if (elemCellSelected.colSpan > 1)
		{
			elemCellNew.colSpan=elemCellSelected.colSpan/2;
			elemCellSelected.colSpan -=elemCellNew.colSpan;
		}
		else
		{
			elemCellNew.colSpan=1;
			var elemTableSelected=RTE_GetNearestContainingParentElementOfType(strBaseElementID, elemRowSelected, "TABLE");
			for (var i=0; i<elemTableSelected.rows.length; i++)
			{
				var currentColSpanCount=0;
				var elemRow=elemTableSelected.rows[i];
				if (elemRow !=null && elemRow !=elemRowSelected)
				{
					for (var j=0; j<elemRow.cells.length; j++)
					{
						var elemCell=elemRow.cells[j];
						currentColSpanCount+=elemCell.colSpan;
						if (currentColSpanCount >=colSpanCount)
						{
							elemCell.colSpan++;
							break;
						}
					}
				}
			}
		}
		elemCellSelected.insertAdjacentElement("afterEnd", elemCellNew);
		var elemTableSelected=RTE_GetNearestContainingElementOfType(strBaseElementID, "TABLE");
		if (elemTableSelected)
		{
			RTE_ReapplyTableStyles(elemTableSelected);
		}
		RTE_StartResetToolBarTimer(strBaseElementID);
	}
}
function RTE_MergeCells(strBaseElementID)
{
	if (RTE_IsElementSelected(strBaseElementID, "TR"))
	{
		RTE_MergeSelected(strBaseElementID);
	}
	else
	{
		RTE_MergeWithDirection(strBaseElementID, "none");
	}
	RTE_StartResetToolBarTimer(strBaseElementID);
}
function RTE_MergeSelected(strBaseElementID)
{
	var elemRowSelected=RTE_GetCurrentElement(strBaseElementID);
	if (elemRowSelected.tagName !="TR") return;
	if (elemRowSelected !=null)
	{
		var selectedCells=RTE_GetSelectedCells(strBaseElementID);
		if (selectedCells.length > 1)
		{
			for (var i=1; i<selectedCells.length; i++)
			{
				if (selectedCells[i].innerText.length > 0)
				{
					selectedCells[0].innerHTML+=" ";
				}
				selectedCells[0].innerHTML+=selectedCells[i].innerHTML;
				selectedCells[0].colSpan+=selectedCells[i].colSpan;
				elemRowSelected.removeChild(selectedCells[i]);
			}
			var elemTableSelected=RTE_GetNearestContainingParentElementOfType(strBaseElementID, elemRowSelected, "TABLE");
			if (elemTableSelected)
			{
				RTE_ReapplyTableStyles(elemTableSelected);
			}
			if (RTE_GetCurrentElement(strBaseElementID) !=selectedCells[0])
			{
				var editorDocument=RTE_GetEditorDocument(strBaseElementID);
				var textRange=editorDocument.body.createTextRange();
				textRange.moveToElementText(selectedCells[0]);
				textRange.select();
			}
		}
	}
}
function RTE_MergeWithRight(strBaseElementID)
{
	RTE_MergeWithDirection(strBaseElementID, "right");
}
function RTE_MergeWithLeft(strBaseElementID)
{
	RTE_MergeWithDirection(strBaseElementID, "left");
}
function RTE_MergeWithAbove(strBaseElementID)
{
	RTE_MergeWithDirection(strBaseElementID, "above");
}
function RTE_MergeWithBelow(strBaseElementID)
{
	RTE_MergeWithDirection(strBaseElementID, "below");
}
function RTE_MergeWithDirection(strBaseElementID, dir)
{
	RTE_MergeSelected(strBaseElementID);
	var elemSelected=RTE_GetCurrentElement(strBaseElementID);
	if (elemSelected==null) return;
	var elemCellSelected=RTE_GetNearestContainingParentElementOfTypes(strBaseElementID, elemSelected, g_aTableCellTagNames);	
	if (elemCellSelected==null) return;
	var elemRowSelected=RTE_GetNearestContainingParentElementOfType(strBaseElementID, elemCellSelected, "TR");
	if (elemRowSelected==null) return;
	var elemTable=RTE_GetNearestContainingParentElementOfType(strBaseElementID, elemRowSelected, "TABLE");
	if (RTE_GetDirectionOfSelection(strBaseElementID)=="rtl")
	{
		if (dir=="right")
		{
			dir="left";
		}
		else if (dir=="left")
		{
			dir="right";
		}
	}
	switch(dir)
	{
		case "right":
			var mergeFromIndex=elemCellSelected.cellIndex;
			var rowCells=elemRowSelected.cells;
			if (mergeFromIndex+1 >=rowCells.length) return;
			if (rowCells[mergeFromIndex+1].rowSpan==rowCells[mergeFromIndex].rowSpan)
			{
				RTE_MergeHorizontal(strBaseElementID, elemRowSelected, mergeFromIndex);
			}
			else
			{
				alert(L_InvalidMerge_TEXT);
			}
			break;
		case "left":
			var mergeFromIndex=elemCellSelected.cellIndex-1;
			var rowCells=elemRowSelected.cells;
			if (mergeFromIndex < 0) return;
			if (rowCells[mergeFromIndex+1].rowSpan==rowCells[mergeFromIndex].rowSpan)
			{
				RTE_MergeHorizontal(strBaseElementID, elemRowSelected, mergeFromIndex);
				RTE_PutSelectionInCell(strBaseElementID, elemRowSelected.cells[mergeFromIndex]);
			}
			else
			{
				alert(L_InvalidMerge_TEXT);
			}
			break;
		case "above":
			if (elemTable==null) return;
			if (elemRowSelected.rowIndex==0) return;
			var rowBelow=elemRowSelected;
			var rowBelowCells=rowBelow.cells;
			var rowBelowCell=elemCellSelected;
			var spanGrid=RTE_GenerateSpanGridUpToTarget(elemTable, elemCellSelected);
			var rowBelowCellColSpanIndex=spanGrid.targetCellColSpanIndex;
			var spanGridAboveTarget=spanGrid.columns[rowBelowCellColSpanIndex].cells[elemRowSelected.rowIndex-1];
			var rowAboveCell=spanGridAboveTarget.cell;
			if (rowBelowCell.colSpan==rowAboveCell.colSpan && spanGridAboveTarget.colSpanIndex==rowBelowCellColSpanIndex)
			{
				RTE_MergeVertical(strBaseElementID, rowBelow, rowBelowCell, rowAboveCell)
				RTE_PutSelectionInCell(strBaseElementID, rowAboveCell);
			}
			else
			{
				alert(L_InvalidMerge_TEXT);
			}
			break;
		case "below":
			if (elemTable==null) return;
			var rowAboveCell=elemCellSelected;
			var spanGrid=RTE_GenerateSpanGridUpToTarget(elemTable, rowAboveCell);
			var rowAboveCellColSpanIndex=spanGrid.targetCellColSpanIndex;
			var spanGridBelowTarget=spanGrid.columns[rowAboveCellColSpanIndex].cells[elemRowSelected.rowIndex+rowAboveCell.rowSpan];
			if (spanGridBelowTarget==null) return;
			var rowBelowCell=spanGridBelowTarget.cell;
			var rowBelow=RTE_GetNearestContainingParentElementOfType(strBaseElementID, rowBelowCell, "TR");
			if (rowBelow==null) return;
			if (rowBelowCell.colSpan==rowAboveCell.colSpan && spanGridBelowTarget.colSpanIndex==rowAboveCellColSpanIndex)
			{
				RTE_MergeVertical(strBaseElementID, rowBelow, rowBelowCell, rowAboveCell)
			}
			else
			{
				alert(L_InvalidMerge_TEXT);
			}
			break;
		case "none":
			if (elemRowSelected.cells[elemCellSelected.cellIndex] !=null &&
				elemRowSelected.cells[elemCellSelected.cellIndex+1] !=null)
			{
				var dir=RTE_GetDirectionOfSelection(elemCellSelected);
				if (   (dir !="rtl" && elemCellSelected.cellIndex==elemRowSelected.cells.length - 1 )
					|| (dir=="rtl" && elemCellSelected.cellIndex !=0))
				{
					var mergeFromCellIndex=elemCellSelected.cellIndex-1;
					if (mergeFromCellIndex < 0) return;
					RTE_MergeHorizontal(strBaseElementID, elemRowSelected, mergeFromCellIndex);
					RTE_PutSelectionInCell(strBaseElementID, elemRowSelected.cells[mergeFromCellIndex]);
				}
				else
				{
					if (elemCellSelected.cellIndex+1 >=elemRowSelected.length) return;
					RTE_MergeHorizontal(strBaseElementID, elemRowSelected, elemCellSelected.cellIndex);
				}
			}
			break;
	}
	if (elemTable)
	{
		RTE_ReapplyTableStyles(elemTable);
	}
	RTE_StartResetToolBarTimer(strBaseElementID);
}
function RTE_MergeHorizontal(strBaseElementID, elemRow, mergeFromIndex)
{
	var rowCells=elemRow.cells;
	if (rowCells[mergeFromIndex].innerText.length > 0)
	{
		rowCells[mergeFromIndex].innerHTML+=" ";
	}
	rowCells[mergeFromIndex].innerHTML+=rowCells[mergeFromIndex+1].innerHTML;
	rowCells[mergeFromIndex].colSpan+=rowCells[mergeFromIndex+1].colSpan;
	elemRow.removeChild(rowCells[mergeFromIndex+1]);
}
function RTE_MergeVertical(strBaseElementID, rowBelow, rowBelowCell, rowAboveCell)
{
	if (rowAboveCell.innerText.length > 0)
	{
		rowAboveCell.innerHTML+=" ";
	}
	rowAboveCell.innerHTML+=rowBelowCell.innerHTML;
	rowAboveCell.rowSpan+=rowBelowCell.rowSpan;
	rowBelow.removeChild(rowBelowCell);
}
function RTE_PutSelectionInCell(strBaseElementID, newCell)
{
	if (RTE_GetCurrentElement(strBaseElementID) !=newCell)
	{
		var editorDocument=RTE_GetEditorDocument(strBaseElementID);
		var textRange=editorDocument.body.createTextRange();
		textRange.moveToElementText(newCell);
		textRange.select();
	}
}
function RTE_GenerateSpanGridUpToTarget(table, targetCell)
{
	var spanGrid=new Object();
	spanGrid.columns=new Array();
	spanGrid.targetCellColSpanIndex=-1;
	for (var rowIndex=0; rowIndex<table.rows.length; rowIndex++)
	{
		var colSpanIndex=0;
		for (cellIndex=0; cellIndex<table.rows[rowIndex].cells.length; cellIndex++)
		{
			while (spanGrid.columns[colSpanIndex] !=null && spanGrid.columns[colSpanIndex].cells[rowIndex] !=null)
			{
				colSpanIndex++;
			}
			if (spanGrid.columns[colSpanIndex]==null)
			{
				spanGrid.columns[colSpanIndex]=new Object();
				spanGrid.columns[colSpanIndex].cells=new Array();
			}
			var currentCell=table.rows[rowIndex].cells[cellIndex];
			if (currentCell==targetCell) spanGrid.targetCellColSpanIndex=colSpanIndex;
			spanGrid.columns[colSpanIndex].cells[rowIndex]=new Object();
			spanGrid.columns[colSpanIndex].cells[rowIndex].cell=currentCell;
			spanGrid.columns[colSpanIndex].cells[rowIndex].colSpanIndex=colSpanIndex;
			for(var j=0; j<currentCell.colSpan; j++)
			{
				if (spanGrid.columns[colSpanIndex+j]==null)
				{
					spanGrid.columns[colSpanIndex+j]=new Array();
					spanGrid.columns[colSpanIndex+j].cells=new Array();
				}
				for(var i=0; i<currentCell.rowSpan; i++)
				{
					spanGrid.columns[colSpanIndex+j].cells[rowIndex+i]=new Object();
					spanGrid.columns[colSpanIndex+j].cells[rowIndex+i].cell=currentCell;
					spanGrid.columns[colSpanIndex+j].cells[rowIndex+i].colSpanIndex=colSpanIndex;
				}
			}
			colSpanIndex+=currentCell.colSpan;
			if (spanGrid.targetCellColSpanIndex !=-1
			   && colSpanIndex > spanGrid.targetCellColSpanIndex+targetCell.colSpan
			   && rowIndex !=targetCell.parentNode.rowIndex+targetCell.rowSpan - 1) break;
		}
	}
	return spanGrid;
}
function RTE_UrlFileName(href)
{
	var filePath=href;
	filePath=filePath.split("#")[0];
	filePath=filePath.split("?")[0];
	var lastSlashPos=filePath.lastIndexOf('/');
	return filePath.substring(lastSlashPos+1);
}
var g_reservedTablePrefix=".ms-rteTable";
function RTE_GetReservedTableStyleRules(targetDocument)
{
	return RTE_GetReservedStyleRules(targetDocument, g_reservedTablePrefix, "-");
}
function RTE_GetReservedStyleRules(targetDocument, prefix, defaultStyleSheetHref)
{
	var reservedUserRules=new Array();
	var reservedDefaultRules=new Array();
	for (var i=0; i<targetDocument.styleSheets.length; i++)
	{
		var styleSheet=targetDocument.styleSheets[i];
		if (RTE_UrlFileName(styleSheet.href) !=defaultStyleSheetHref)
		{
			RTE_GetReservedStyleRulesFromStyleSheet(styleSheet, prefix, reservedUserRules);
		}
		else
		{
			RTE_GetReservedStyleRulesFromStyleSheet(styleSheet, prefix, reservedDefaultRules);
		}
	}
	if (reservedUserRules.length > 0)
	{
		return reservedUserRules;
	}
	else
	{
		return reservedDefaultRules;
	}
}
function RTE_GetReservedStyleRulesFromStyleSheet(styleSheet, prefix, reservedRules)
{
	try
	{
		var rules=styleSheet.rules;
		for (var j=0; j<rules.length; j++)
		{
			if (rules[j].selectorText.indexOf(prefix) >=0)
			{
				reservedRules.push(rules[j]);
			}
		}
	}
	catch (e) {}
}
var msTableStylePrefix="ms-rteTable";
var msTableClass="-";
var msTableClassHeadingRow="HeaderRow-";
var msTableClassHeadingFirstCol="HeaderFirstCol-";
var msTableClassHeadingOddCol="HeaderOddCol-";
var msTableClassHeadingEvenCol="HeaderEvenCol-";
var msTableClassHeadingLastCol="HeaderLastCol-";
var msTableClassOddRow="OddRow-";
var msTableClassEvenRow="EvenRow-";
var msTableClassFirstCol="FirstCol-";
var msTableClassOddCol="OddCol-";
var msTableClassEvenCol="EvenCol-";
var msTableClassLastCol="LastCol-";
var msTableClassFootingRow="FooterRow-";
var msTableClassFootingFirstCol="FooterFirstCol-";
var msTableClassFootingOddCol="FooterOddCol-";
var msTableClassFootingEvenCol="FooterEvenCol-";
var msTableClassFootingLastCol="FooterLastCol-";
function RTE_ApplyTableStyle(tableStyleSuffix, table, formatHeadingRow, formatLastRow, formatFirstColumn, formatLastColumn, prefix)
{
	if (prefix==null) prefix=msTableStylePrefix;
	if (table !=null)
	{
		RTE_AppendClassName(table, prefix+msTableClass+tableStyleSuffix);
		var rows=table.rows;
		var rowStartIndex=0;
		var rowEndIndex=rows.length-1;
		var doFormatHeadingRow=false;
		var doFormatLastRow=false;
		if (rows.length==1)
		{
			if (formatHeadingRow)
			{
				doFormatHeadingRow=true;
				rowStartIndex++;
			}
			rowEnd=0;
		}
		else
		{
			if (formatHeadingRow)
			{
				doFormatHeadingRow=true;
				rowStartIndex++;
			}
			if (formatLastRow)
			{
				doFormatLastRow=true;
				rowEndIndex--;
			}
		}
		if (doFormatHeadingRow)
		{
			var headingRow=rows(0);
			RTE_AppendClassName(headingRow, prefix+msTableClassHeadingRow+tableStyleSuffix);
			var oddEvenColumnSpecifier=0;
			for (var i=0; i<headingRow.cells.length; i++)
			{
				if (i==0 && formatFirstColumn)
				{
					RTE_AppendClassName(headingRow.cells(i), prefix+msTableClassHeadingFirstCol+tableStyleSuffix);
					oddEvenColumnSpecifier=1;
				}
				else if (i==headingRow.cells.length-1 && formatLastColumn)
				{
					RTE_AppendClassName(headingRow.cells(i), prefix+msTableClassHeadingLastCol+tableStyleSuffix);
				}
				else
				{
					if (i%2==oddEvenColumnSpecifier)
					{
						RTE_AppendClassName(headingRow.cells(i), prefix+msTableClassHeadingOddCol+tableStyleSuffix);
					}
					else
					{
						RTE_AppendClassName(headingRow.cells(i), prefix+msTableClassHeadingEvenCol+tableStyleSuffix);
					}
				}
			}
		}
		if (doFormatLastRow)
		{
			var lastRow=rows(rowEndIndex+1);
			RTE_AppendClassName(lastRow, prefix+msTableClassFootingRow+tableStyleSuffix);
			var oddEvenColumnSpecifier=0;
			for (var i=0; i<lastRow.cells.length; i++)
			{
				if (i==0 && formatFirstColumn)
				{
					RTE_AppendClassName(lastRow.cells(i), prefix+msTableClassFootingFirstCol+tableStyleSuffix);
					oddEvenColumnSpecifier=1;
				}
				else if (i==lastRow.cells.length-1 && formatLastColumn)
				{
					RTE_AppendClassName(lastRow.cells(i), prefix+msTableClassFootingLastCol+tableStyleSuffix);
				}
				else
				{
					if (i%2==oddEvenColumnSpecifier)
					{
						RTE_AppendClassName(lastRow.cells(i), prefix+msTableClassFootingOddCol+tableStyleSuffix);
					}
					else
					{
						RTE_AppendClassName(lastRow.cells(i), prefix+msTableClassFootingEvenCol+tableStyleSuffix);
					}
				}
			}
		}
		var oddEvenRowSpecifier=0;
		if (doFormatHeadingRow)
		{
			oddEvenRowSpecifier=1;
		}
		for (var i=rowStartIndex; i<=rowEndIndex; i++)
		{
			var currentRow=rows(i);
			if (i%2==oddEvenRowSpecifier)
			{
				RTE_AppendClassName(currentRow, prefix+msTableClassOddRow+tableStyleSuffix);
			}
			else
			{
				RTE_AppendClassName(currentRow, prefix+msTableClassEvenRow+tableStyleSuffix);
			}
			var oddEvenColumnSpecifier=0;
			for (var j=0; j<currentRow.cells.length; j++)
			{
				if (j==0 && formatFirstColumn)
				{
					RTE_AppendClassName(currentRow.cells(j), prefix+msTableClassFirstCol+tableStyleSuffix);
					oddEvenColumnSpecifier=1;
				}
				else if (j==currentRow.cells.length-1 && formatLastColumn)
				{
					RTE_AppendClassName(currentRow.cells(j), prefix+msTableClassLastCol+tableStyleSuffix);
				}
				else
				{
					if (j%2==oddEvenColumnSpecifier)
					{
						RTE_AppendClassName(currentRow.cells(j), prefix+msTableClassOddCol+tableStyleSuffix);
					}
					else
					{
						RTE_AppendClassName(currentRow.cells(j), prefix+msTableClassEvenCol+tableStyleSuffix);
					}
				}
			}
		}
	}
}
function RTE_ClearReservedTableStyles(table, prefix)
{
	if (prefix==null) prefix=msTableStylePrefix;
	if (table !=null && table.tagName=="TABLE")
	{
		RTE_ClearReservedTableStylesFromElement(table, prefix);
		for (var i=0; i<table.rows.length; i++)
		{
			var row=table.rows[i];
			RTE_ClearReservedTableStylesFromElement(row, prefix);
			for (var j=0; j<row.cells.length; j++)
			{
				var cell=row.cells[j];
				RTE_ClearReservedTableStylesFromElement(cell, prefix);
			}
		}
	}
}
function RTE_ClearReservedTableStylesFromElement(element, prefix)
{
	if (prefix==null) prefix=msTableStylePrefix;
	if (element.className !=null && element.className.length > 0)
	{
		var classNames=element.className.split(" ");
		var revisedClassNames=new Array();
		for(var i=0; i<classNames.length; i++)
		{
			var className=classNames[i];
			if (className.indexOf(prefix)!=0)
			{
				revisedClassNames[revisedClassNames.length]=className;
			}
		}
		element.className="";
		for (var i=0; i<revisedClassNames.length; i++)
		{
			RTE_AppendClassName(element, revisedClassNames[i]);
		}
	}
}
function RTE_AppendClassName(element, className)
{
	if (element !=null)
	{
		var newClassName=element.className;
		if (newClassName !=null && newClassName.length > 0)
		{
			newClassName+=" ";
		}
		newClassName+=className;
		element.className=newClassName;
	}
}
function RTE_GetReservedTableStyleNumbers(table, prefix)
{
	if (prefix==null) prefix=msTableStylePrefix;
	var styleNumbers=new Array();
	if (table!=null && table.tagName=="TABLE")
	{
		var tableClasses=table.className.split(" ");
		for(var i=0; i<tableClasses.length; i++)
		{
			var tableClassName=tableClasses[i];
			var styleNameIndex=tableClassName.indexOf(prefix+msTableClass);
			if (styleNameIndex >=0)
			{
				var tableStyleNumber=tableClassName.substr(styleNameIndex+prefix.length+msTableClass.length);
				styleNumbers[styleNumbers.length]=tableStyleNumber;
			}
		}
	}
	return styleNumbers;
}
function RTE_ReapplyTableStyles(table, prefix)
{
	if (prefix==null)
	{
		var pos=table.className.indexOf("Table");
		if (pos >=0)
		{
			prefix=table.className.substring(0,pos+5);
		}
		else
		{
			prefix=msTableStylePrefix;
		}
	}
	if (table !=null && table.rows.length > 0)
	{
		var reservedTableStyleNumbers=RTE_GetReservedTableStyleNumbers(table, prefix);
		if (reservedTableStyleNumbers.length > 0)
		{
			var tableStyleSettings=new Array();
			for (var i=0; i<reservedTableStyleNumbers.length; i++)
			{
				var settings=new Array();
				var tableStyleNumber=reservedTableStyleNumbers[i];
				settings["tableStyleNumber"]=tableStyleNumber;
				settings["formatHeadingRow"]=RTE_ShouldFormatHeadingRow(tableStyleNumber, table, prefix);
				settings["formatLastRow"]=RTE_ShouldFormatLastRow(tableStyleNumber, table, prefix);
				settings["formatFirstColumn"]=RTE_ShouldFormatFirstColumn(tableStyleNumber, table, prefix);
				settings["formatLastColumn"]=RTE_ShouldFormatLastColumn(tableStyleNumber, table, prefix);
				tableStyleSettings[tableStyleSettings.length]=settings;
			}
			RTE_ClearReservedTableStyles(table, prefix);
			for (var i=0; i<tableStyleSettings.length; i++)
			{
				var settings=tableStyleSettings[i];
				RTE_ApplyTableStyle(
					settings["tableStyleNumber"],
					table,
					settings["formatHeadingRow"],
					settings["formatLastRow"],
					settings["formatFirstColumn"],
					settings["formatLastColumn"],
					prefix);
			}
		}
	}
}
function RTE_ShouldFormatHeadingRow(tableStyleNumber, table, prefix)
{
	if (prefix==null) prefix=msTableStylePrefix;
	var shouldFormatHeadingRow=false;
	if (tableStyleNumber !=null && table !=null && table.rows.length > 0)
	{
		var headingRow=table.rows.item(0);
		if (headingRow.className !=null && headingRow.className.length > 0)
		{
			var headingRowClasses=headingRow.className.split(" ");
			for(var i=0; i<headingRowClasses.length; i++)
			{
				var rowClassName=headingRowClasses[i];
				var reservedRowClassName=prefix+msTableClassHeadingRow+tableStyleNumber;
				if (rowClassName==reservedRowClassName)
				{
					shouldFormatHeadingRow=true;
					break;
				}
			}
		}
	}
	return shouldFormatHeadingRow;
}
function RTE_ShouldFormatLastRow(tableStyleNumber, table, prefix)
{
	if (prefix==null) prefix=msTableStylePrefix;
	var shouldFormatLastRow=false;
	if (tableStyleNumber !=null && table !=null && table.rows.length > 0)
	{
		if (!(table.rows.length==1 && RTE_ShouldFormatHeadingRow(tableStyleNumber, table, prefix)))
		{
			var lastRow=table.rows.item(table.rows.length-1);
			if (lastRow.className !=null && lastRow.className.length > 0)
			{
				var lastRowClasses=lastRow.className.split(" ");
				for(var i=0; i<lastRowClasses.length; i++)
				{
					var rowClassName=lastRowClasses[i];
					var reservedRowClassName=prefix+msTableClassFootingRow+tableStyleNumber;
					if (rowClassName==reservedRowClassName)
					{
						shouldFormatLastRow=true;
						break;
					}
				}
			}
		}
	}
	return shouldFormatLastRow;
}
function RTE_ShouldFormatFirstColumn(tableStyleNumber, table, prefix)
{
	if (prefix==null) prefix=msTableStylePrefix;
	var shouldFormatFirstColumn=false;
	if (tableStyleNumber !=null && table !=null && table.rows.length > 0)
	{
		var reservedColClassName=prefix+msTableClassFirstCol;
		var testRow=table.rows.item(0);
		if (RTE_ShouldFormatHeadingRow(tableStyleNumber, table, prefix))
		{
			reservedColClassName=prefix+msTableClassHeadingFirstCol;
		}
		else if (table.rows.length==1 && RTE_ShouldFormatLastRow(tableStyleNumber, table, prefix))
		{
			reservedColClassName=prefix+msTableClassFootingFirstCol;
		}
		if (testRow.cells.length > 0)
		{
			reservedColClassName+=tableStyleNumber;
			var firstCell=testRow.cells.item(0);
			if (firstCell.className !=null && firstCell.className.length > 0)
			{
				var firstCellClasses=firstCell.className.split(" ");
				for(var i=0; i<firstCellClasses.length; i++)
				{
					var cellClassName=firstCellClasses[i];
					if (cellClassName==reservedColClassName)
					{
						shouldFormatFirstColumn=true;
						break;
					}
				}
			}
		}
	}
	return shouldFormatFirstColumn;
}
function RTE_ShouldFormatLastColumn(tableStyleNumber, table, prefix)
{
	if (prefix==null) prefix=msTableStylePrefix;
	var shouldFormatLastColumn=false;
	if (tableStyleNumber !=null && table !=null && table.rows.length > 0)
	{
		var reservedColClassName=prefix+msTableClassLastCol;
		var testRow=table.rows.item(0);
		if (RTE_ShouldFormatHeadingRow(tableStyleNumber, table, prefix))
		{
			reservedColClassName=prefix+msTableClassHeadingLastCol;
		}
		else if (table.rows.length==1 && RTE_ShouldFormatLastRow(tableStyleNumber, table, prefix))
		{
			reservedColClassName=prefix+msTableClassFootingLastCol;
		}
		if (testRow.cells.length > 0)
		{
			reservedColClassName+=tableStyleNumber;
			if (!(testRow.cells.length==1 && RTE_ShouldFormatFirstColumn(tableStyleNumber, table, prefix)))
			{
				var lastCell=testRow.cells.item(testRow.cells.length-1);
				if (lastCell.className !=null && lastCell.className.length > 0)
				{
					var lastCellClasses=lastCell.className.split(" ");
					for(var i=0; i<lastCellClasses.length; i++)
					{
						if (lastCellClasses[i]==reservedColClassName)
						{
							shouldFormatLastColumn=true;
							break;
						}
					}
				}
			}
		}
	}
	return shouldFormatLastColumn;
}
function C_RTE_TB_ExecCmdButton(
	mnemonic, tooltip, ui, image, imageloc, onlyif, valueexpr, enable)
{
	function methodGenerate(strBaseElementID, strWebLanguage)
	{
		var strImagePath;
		if (this.fImageLoc)
		{
			strImagePath=RTE_GetServerRelativeImageUrl(this.strImage);
		}
		else
		{
			strImagePath=				RTE_GetServerRelativeUnlocalizedImageUrl(this.strImage);
		}
		return RTE_TB_GenerateExecCommandToolBarButtonHtml(
			strBaseElementID, this.strMnemonic, this.fUi,
			strImagePath, "", this.strToolTip, this.fOnlyIf,
			this.strValueExpr);
	}
	this.strMnemonic=mnemonic;
	this.strToolTip=tooltip;
	this.fUi=ui;
	this.strImage=image;
	this.fImageLoc=imageloc;
	this.fOnlyIf=onlyif;
	this.enabler=enable;
	this.enabler.button=this;
	this.strValueExpr=valueexpr;
	this.Generate=methodGenerate;
}
function C_RTE_TB_JScriptButton(mnemonic, tooltip, func, arg, image, enable)
{
	function methodGenerate(strBaseElementID, strWebLanguage)
	{
		return RTE_TB_GenerateSimpleToolBarButtonHtml(
			strBaseElementID, this.strMnemonic,
			this.strFunction, this.strArgument,
			RTE_GetServerRelativeImageUrl(this.strImage), "", this.strToolTip);
	}
	this.strMnemonic=mnemonic;
	this.strToolTip=tooltip;
	this.strFunction=func;
	this.strArgument=arg;
	this.strImage=image;
	this.enabler=enable;
	this.enabler.button=this;
	this.Generate=methodGenerate;
}
function C_RTE_TB_SpecialButton(mnemonic, func, fRestricted, enable)
{
	function methodGenerate(strBaseElementID, strWebLanguage)
	{
		return this.specialFunction(
			strBaseElementID, strWebLanguage, fRestricted);
	}
	this.specialFunction=func;
	this.strMnemonic=mnemonic;
	this.fRestricted=fRestricted;
	this.enabler=enable;
	this.enabler.button=this;
	this.Generate=methodGenerate;
}
function C_RTE_TB_Separator()
{
	function methodGenerate(strBaseElementID, strWebLanguage)
	{
		return RTE_TB_GenerateToolBarSeparatorHtml();
	}
	this.Generate=methodGenerate;
}
function C_RTE_TB_LineBreak()
{
	function methodGenerate(strBaseElementID, strWebLanguage)
	{
		return RTE_TB_GenerateToolBarLineBreakHtml();
	}
	this.Generate=methodGenerate;
}
function C_RTE_TB_SetEnabledAlways()
{
	function methodSetEnabled(strBaseElementID, docEditor, aElemChain)
	{
		RTE_TB_ClearButtonDisabled(RTE_TB_GetToolBarButton(
			strBaseElementID, this.button.strMnemonic));
	}
	this.SetEnabled=methodSetEnabled;
}
function C_RTE_TB_SetEnabledWhenRemoveFormatEnabled()
{
	function methodSetEnabled(strBaseElementID, docEditor, aElemChain)
	{
		var btn=RTE_TB_GetToolBarButton(
			strBaseElementID, this.button.strMnemonic);
		if (docEditor.queryCommandEnabled("Delete") &&
			docEditor.queryCommandEnabled(g_strRTERemoveFormatMnemonic))
		{
			RTE_TB_ClearButtonDisabled(btn);
		}
		else
		{
			RTE_TB_SetButtonDisabled(btn);
		}
	}
	this.SetEnabled=methodSetEnabled;
}
function C_RTE_TB_SetEnabledFromCommandEnabled()
{
	function methodSetEnabled(strBaseElementID, docEditor, aElemChain)
	{
		RTE_TB_SetEnabledFromCommandEnabled(
			strBaseElementID, docEditor,
			this.button.strMnemonic, this.button.strMnemonic);
	}
	this.SetEnabled=methodSetEnabled;
}
function C_RTE_TB_SetEnabledFromCommandValue()
{
	function methodSetEnabled(strBaseElementID, docEditor, aElemChain)
	{
		RTE_TB_ClearButtonDisabled(RTE_TB_GetToolBarButton(
			strBaseElementID, this.button.strMnemonic));
		RTE_TB_SetCheckFromCommandValue(
			strBaseElementID, docEditor, this.button.strMnemonic);
	}
	this.SetEnabled=methodSetEnabled;
}
function C_RTE_TB_SetEnabledFromCommandValueIfNotInTable()
{
	function methodSetEnabled(strBaseElementID, docEditor, aElemChain)
	{
		if (aElemChain[0] !="TABLE" && aElemChain[0] !="TR")
		{
			RTE_TB_ClearButtonDisabled(RTE_TB_GetToolBarButton(
				strBaseElementID, this.button.strMnemonic));
			RTE_TB_SetCheckFromCommandValue(
				strBaseElementID, docEditor, this.button.strMnemonic);
		}
	}
	this.SetEnabled=methodSetEnabled;
}
function C_RTE_TB_SetEnabledIfInElement(strElement)
{
	function methodSetEnabled(strBaseElementID, docEditor, aElemChain)
	{
		RTE_TB_SetEnabledIfInElement(strBaseElementID, aElemChain,
			this.button.strMnemonic, this.strElement);
	}
	this.strElement=strElement;
	this.SetEnabled=methodSetEnabled;
}
function RTE_GetToolBarDefinition(strBaseElementID, strWebLanguage)
{
	var variables=RTE_GetEditorInstanceVariables(strBaseElementID);
	if (variables !=null && variables.overrides.GetToolBarDefinition !=null)
	{
		return variables.overrides.GetToolBarDefinition(strBaseElementID, strWebLanguage);
	}
	else if (variables !=null)
	{
		return RTE_GetCompatibleToolBarDefinition(
			strWebLanguage,
			variables.aSettings.fRestrictedMode,
			variables.aSettings.fAllowHyperlink,
			variables.aSettings.fIsVisible);
	}
	else
	{
		return null;
	}
}
var g_rgCompatibleToolBarDefinition;
function RTE_GetCompatibleToolBarDefinition(
	strWebLanguage, fRestrictedMode, fAllowHyperlink, fIsVisible)
{
	if (g_rgCompatibleToolBarDefinition==undefined)
	{
		toolBar=new Array();
		if (!fRestrictedMode)
		{
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTECutMnemonic,
					L_CutToolTip_TEXT,
					false, "rtecut.gif", true, true, "null",
					new C_RTE_TB_SetEnabledFromCommandEnabled()));
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTECopyMnemonic,
					L_CopyToolTip_TEXT,
					false, "rtecopy.gif", true, true, "null",
					new C_RTE_TB_SetEnabledFromCommandEnabled()));
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEPasteMnemonic,
					L_PasteToolTip_TEXT,
					false, "rtepaste.gif", true, false, "null",
					new C_RTE_TB_SetEnabledFromCommandEnabled()));
			toolBar.push(new C_RTE_TB_Separator());
		}
		toolBar.push(
			new C_RTE_TB_SpecialButton(
				g_strRTEFontNameMnemonic,
				RTE_GenerateFontNameToolBarButtonHtml,
				fRestrictedMode,
				new C_RTE_TB_SetEnabledAlways()));
		toolBar.push(
			new C_RTE_TB_SpecialButton(
				g_strRTEFontSizeMnemonic,
				RTE_GenerateFontSizeToolBarButtonHtml,
				fRestrictedMode,
				new C_RTE_TB_SetEnabledAlways()));
		toolBar.push(new C_RTE_TB_Separator());
		toolBar.push(
			new C_RTE_TB_ExecCmdButton(
				g_strRTEBoldMnemonic,
				L_BoldToolTip_TEXT,
				false, "rtebold.gif", true, false, "null",
				new C_RTE_TB_SetEnabledFromCommandValue()));
		toolBar.push(
			new C_RTE_TB_ExecCmdButton(
				g_strRTEItalicMnemonic,
				L_ItalicToolTip_TEXT,
				false, "rteital.gif", true, false, "null",
				new C_RTE_TB_SetEnabledFromCommandValue()));
		toolBar.push(
			new C_RTE_TB_ExecCmdButton(
				g_strRTEUnderlineMnemonic,
				L_UnderlineToolTip_TEXT,
				false, "rteundl.gif", true, false, "null",
				new C_RTE_TB_SetEnabledFromCommandValue()));
		toolBar.push(new C_RTE_TB_Separator());
		if (strWebLanguage=="1025" || strWebLanguage=="1037")
		{
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEJustifyRightMnemonic,
					L_JustifyRightToolTip_TEXT,
					false, "rtertal.gif", true, false, "null",
					new C_RTE_TB_SetEnabledFromCommandValue()));
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEJustifyCenterMnemonic,
					L_JustifyCenterToolTip_TEXT,
					false, "rtectral.gif", true, false, "null",
					new C_RTE_TB_SetEnabledFromCommandValue()));
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEJustifyLeftMnemonic,
					L_JustifyLeftToolTip_TEXT,
					false, "rteltal.gif", true, false, "null",
					new C_RTE_TB_SetEnabledFromCommandValue()));
		}
		else
		{
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEJustifyLeftMnemonic,
					L_JustifyLeftToolTip_TEXT,
					false, "rteltal.gif", true, false, "null",
					new C_RTE_TB_SetEnabledFromCommandValue()));
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEJustifyCenterMnemonic,
					L_JustifyCenterToolTip_TEXT,
					false, "rtectral.gif", true, false, "null",
					new C_RTE_TB_SetEnabledFromCommandValue()));
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEJustifyRightMnemonic,
					L_JustifyRightToolTip_TEXT,
					false, "rtertal.gif", true, false, "null",
					new C_RTE_TB_SetEnabledFromCommandValue()));
		}
		toolBar.push(new C_RTE_TB_Separator());
		toolBar.push(
			new C_RTE_TB_ExecCmdButton(
				g_strRTEOrderedListMnemonic,
				L_OrderedListToolTip_TEXT,
				false, "rtenlst.gif", true, false, "null",
				new C_RTE_TB_SetEnabledFromCommandValueIfNotInTable()));
		toolBar.push(
			new C_RTE_TB_ExecCmdButton(
				g_strRTEUnorderedListMnemonic,
				L_UnorderedListToolTip_TEXT,
				false, "rteblst.gif", true, false, "null",
				new C_RTE_TB_SetEnabledFromCommandValueIfNotInTable()));
		if (!fRestrictedMode)
		{
			toolBar.push(new C_RTE_TB_Separator);
		}
		toolBar.push(
			new C_RTE_TB_ExecCmdButton(
				g_strRTEOutdentMnemonic,
				L_OutdentToolTip_TEXT,
				false, "rteuidt.gif", true, false, "null",
				new C_RTE_TB_SetEnabledAlways()));
		toolBar.push(
			new C_RTE_TB_ExecCmdButton(
				g_strRTEIndentMnemonic,
				L_IndentToolTip_TEXT,
				false, "rteidt.gif", true, false, "null",
				new C_RTE_TB_SetEnabledAlways()));
		if (!fRestrictedMode)
		{
			toolBar.push(new C_RTE_TB_Separator);
		}
		if (!fRestrictedMode || fAllowHyperlink)
		{
			toolBar.push(
				new C_RTE_TB_JScriptButton(
					g_strRTECreateLinkMnemonic,
					L_CreateLinkToolTip_TEXT,
					"RTE_CreateLink", null, "rtelnk.gif",
					new C_RTE_TB_SetEnabledWhenRemoveFormatEnabled()));
		}
		if (!fRestrictedMode)
		{
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEInsertImageMnemonic,
					L_InsertImageToolTip_TEXT,
					true, "rteimg.gif", true, false, "null",
					new C_RTE_TB_SetEnabledWhenRemoveFormatEnabled()));
		}
		toolBar.push(new C_RTE_TB_Separator);
		toolBar.push(
			new C_RTE_TB_SpecialButton(
				g_strRTEForeColorMnemonic,
				RTE_GenerateForeColorToolBarButtonHtml,
				fRestrictedMode,
				new C_RTE_TB_SetEnabledAlways()));
		toolBar.push(
			new C_RTE_TB_SpecialButton(
				g_strRTEBackColorMnemonic,
				RTE_GenerateBackColorToolBarButtonHtml,
				fRestrictedMode,
				new C_RTE_TB_SetEnabledAlways()));
		if (RTE_ShouldShowDirection())
		{
			if (!fRestrictedMode)
			{
				toolBar.push(new C_RTE_TB_Separator);
			}
			if (strWebLanguage=="1025" || strWebLanguage=="1037")
			{
				toolBar.push(
					new C_RTE_TB_JScriptButton(
						"rtl", L_RTLToolTip_TEXT,
						"RTE_SetDirectionOfSelection", "'rtl'", "rtertl.gif",
						new C_RTE_TB_SetEnabledAlways()));
				toolBar.push(
					new C_RTE_TB_JScriptButton(
						"ltr", L_LTRToolTip_TEXT,
						"RTE_SetDirectionOfSelection", "'ltr'", "rteltr.gif",
						new C_RTE_TB_SetEnabledAlways()));
			}
			else
			{
				toolBar.push(
					new C_RTE_TB_JScriptButton(
						"ltr", L_LTRToolTip_TEXT,
						"RTE_SetDirectionOfSelection", "'ltr'", "rteltr.gif",
						new C_RTE_TB_SetEnabledAlways()));
				toolBar.push(
					new C_RTE_TB_JScriptButton(
						"rtl", L_RTLToolTip_TEXT,
						"RTE_SetDirectionOfSelection", "'rtl'", "rtertl.gif",
						new C_RTE_TB_SetEnabledAlways()));
			}
		}
		g_rgCompatibleToolBarDefinition=toolBar;
	}
	return g_rgCompatibleToolBarDefinition;
}
function RTE_ModalDialog(
	strBaseElementID,
	strDialogName,
	width,
	height,
	dialogArg)
{
	var variables=RTE_GetEditorInstanceVariables(strBaseElementID);
	return showModalDialog(
		variables.aSettings.urlWebRoot+			"/_layouts/RteDialog.aspx?Dialog="+			strDialogName+			"&LCID="+RTE_GetWebLocale(strBaseElementID),
		dialogArg,
		"resizable: yes; status: no; help: no; "+			"center: yes; dialogWidth:"+width+"px; "+			"dialogHeight:"+height+"px;");
}
function RTE_FullHtmlToolBarDefinitionFactory(editSource)
{
	var rgFullToolBarDefinition;
	return function(strWebLanguage)
	{
		if (rgFullToolBarDefinition==undefined)
		{
			toolBar=new Array();
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTECutMnemonic,
					L_CutToolTip_TEXT,
					false, "rtecut.gif", true, true, "null",
					new C_RTE_TB_SetEnabledFromCommandEnabled()));
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTECopyMnemonic,
					L_CopyToolTip_TEXT,
					false, "rtecopy.gif", true, true, "null",
					new C_RTE_TB_SetEnabledFromCommandEnabled()));
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEPasteMnemonic,
					L_PasteToolTip_TEXT,
					false, "rtepaste.gif", true, false, "null",
					new C_RTE_TB_SetEnabledFromCommandEnabled()));
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTERemoveFormatMnemonic,
					L_RemoveFormatToolTip_TEXT,
					false, "rteclear.gif", true, false, "null",
					new C_RTE_TB_SetEnabledFromCommandEnabled()));
			toolBar.push(new C_RTE_TB_Separator());
			if (strWebLanguage=="1025" || strWebLanguage=="1037")
			{
				toolBar.push(
					new C_RTE_TB_ExecCmdButton(
						g_strRTERedoMnemonic,
						L_RedoToolTip_TEXT,
						false, "redo.gif", false, false, "null",
						new C_RTE_TB_SetEnabledFromCommandEnabled()));
				toolBar.push(
					new C_RTE_TB_ExecCmdButton(
						g_strRTEUndoMnemonic,
						L_UndoToolTip_TEXT,
						false, "undo.gif", false, false, "null",
						new C_RTE_TB_SetEnabledFromCommandEnabled()));
			}
			else
			{
				toolBar.push(
					new C_RTE_TB_ExecCmdButton(
						g_strRTEUndoMnemonic,
						L_UndoToolTip_TEXT,
						false, "undo.gif", false, false, "null",
						new C_RTE_TB_SetEnabledFromCommandEnabled()));
				toolBar.push(
					new C_RTE_TB_ExecCmdButton(
						g_strRTERedoMnemonic,
						L_RedoToolTip_TEXT,
						false, "redo.gif", false, false, "null",
						new C_RTE_TB_SetEnabledFromCommandEnabled()));
			}
			toolBar.push(new C_RTE_TB_Separator());
			toolBar.push(
				new C_RTE_TB_JScriptButton(
					g_strRTEInsertTableMnemonic,
					L_InsertTableToolTip_TEXT,
					"RTE_InsertTable", null, "rteitbl.gif",
					new C_RTE_TB_SetEnabledWhenRemoveFormatEnabled()));
			toolBar.push(
				new C_RTE_TB_SpecialButton(
					g_strRTEInsertTableElementMnemonic,
					RTE_GenerateInsertTableElementToolBarButtonHtml,
					true,
					new C_RTE_TB_SetEnabledIfInElement("TR")));
			toolBar.push(
				new C_RTE_TB_SpecialButton(
					g_strRTEDeleteTableElementMnemonic,
					RTE_GenerateDeleteTableElementToolBarButtonHtml,
					true,
					new C_RTE_TB_SetEnabledIfInElement("TR")));
			toolBar.push(
				new C_RTE_TB_JScriptButton(
					g_strRTESplitCellMnemonic, L_SplitCellToolTip_TEXT,
					"RTE_SplitCell",
					null,
					"rtescell.gif",
					new C_RTE_TB_SetEnabledIfInElement("TR")));
			toolBar.push(
				new C_RTE_TB_JScriptButton(
				g_strRTEMergeCellMnemonic,
				L_MergeCellToolTip_TEXT,
				"RTE_MergeCells",
				null,
				"rtemcell.gif",
				new C_RTE_TB_SetEnabledIfInElement("TR")));
			toolBar.push(new C_RTE_TB_Separator());
			toolBar.push(
				new C_RTE_TB_JScriptButton(
					g_strRTECreateLinkMnemonic,
					L_CreateLinkToolTip_TEXT,
					"RTE_CreateLink", null, "rtelnk.gif",
					new C_RTE_TB_SetEnabledWhenRemoveFormatEnabled()));
			toolBar.push(
				new C_RTE_TB_JScriptButton(
					g_strRTEInsertImageMnemonic,
					L_InsertImageToolTip_TEXT,
					"RTE_InsertImage", null, "rteimg.gif",
					new C_RTE_TB_SetEnabledWhenRemoveFormatEnabled()));
			if (editSource)
			{
				toolBar.push(
					new C_RTE_TB_JScriptButton(
						g_strRTEHtmlSourceMnemonic,
						L_HtmlSourceToolTip_TEXT,
						"RTE_HtmlSource", null, "rtesrced.gif",
						new C_RTE_TB_SetEnabledAlways()));
			}
			toolBar.push(new C_RTE_TB_LineBreak());
			toolBar.push(
				new C_RTE_TB_SpecialButton(
					g_strRTEFontNameMnemonic,
					RTE_GenerateFontNameToolBarButtonHtml,
					true,
					new C_RTE_TB_SetEnabledAlways()));
			toolBar.push(
				new C_RTE_TB_SpecialButton(
					g_strRTEFontSizeMnemonic,
					RTE_GenerateFontSizeToolBarButtonHtml,
					true,
					new C_RTE_TB_SetEnabledAlways()));
			toolBar.push(new C_RTE_TB_Separator());
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEBoldMnemonic,
					L_BoldToolTip_TEXT,
					false, "rtebold.gif", true, false, "null",
					new C_RTE_TB_SetEnabledFromCommandValue()));
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEItalicMnemonic,
					L_ItalicToolTip_TEXT,
					false, "rteital.gif", true, false, "null",
					new C_RTE_TB_SetEnabledFromCommandValue()));
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEUnderlineMnemonic,
					L_UnderlineToolTip_TEXT,
					false, "rteundl.gif", true, false, "null",
					new C_RTE_TB_SetEnabledFromCommandValue()));
			toolBar.push(new C_RTE_TB_Separator());
			if (strWebLanguage=="1025" || strWebLanguage=="1037")
			{
				toolBar.push(
					new C_RTE_TB_ExecCmdButton(
						g_strRTEJustifyRightMnemonic,
						L_JustifyRightToolTip_TEXT,
						false, "rtertal.gif", true, false, "null",
						new C_RTE_TB_SetEnabledFromCommandValue()));
				toolBar.push(
					new C_RTE_TB_ExecCmdButton(
						g_strRTEJustifyCenterMnemonic,
						L_JustifyCenterToolTip_TEXT,
						false, "rtectral.gif", true, false, "null",
						new C_RTE_TB_SetEnabledFromCommandValue()));
				toolBar.push(
					new C_RTE_TB_ExecCmdButton(
						g_strRTEJustifyLeftMnemonic,
						L_JustifyLeftToolTip_TEXT,
						false, "rteltal.gif", true, false, "null",
						new C_RTE_TB_SetEnabledFromCommandValue()));
			}
			else
			{
				toolBar.push(
					new C_RTE_TB_ExecCmdButton(
						g_strRTEJustifyLeftMnemonic,
						L_JustifyLeftToolTip_TEXT,
						false, "rteltal.gif", true, false, "null",
						new C_RTE_TB_SetEnabledFromCommandValue()));
				toolBar.push(
					new C_RTE_TB_ExecCmdButton(
						g_strRTEJustifyCenterMnemonic,
						L_JustifyCenterToolTip_TEXT,
						false, "rtectral.gif", true, false, "null",
						new C_RTE_TB_SetEnabledFromCommandValue()));
				toolBar.push(
					new C_RTE_TB_ExecCmdButton(
						g_strRTEJustifyRightMnemonic,
						L_JustifyRightToolTip_TEXT,
						false, "rtertal.gif", true, false, "null",
						new C_RTE_TB_SetEnabledFromCommandValue()));
			}
			toolBar.push(new C_RTE_TB_Separator());
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEOrderedListMnemonic,
					L_OrderedListToolTip_TEXT,
					false, "rtenlst.gif", true, false, "null",
					new C_RTE_TB_SetEnabledFromCommandValueIfNotInTable()));
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEUnorderedListMnemonic,
					L_UnorderedListToolTip_TEXT,
					false, "rteblst.gif", true, false, "null",
					new C_RTE_TB_SetEnabledFromCommandValueIfNotInTable()));
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEOutdentMnemonic,
					L_OutdentToolTip_TEXT,
					false, "rteuidt.gif", true, false, "null",
					new C_RTE_TB_SetEnabledAlways()));
			toolBar.push(
				new C_RTE_TB_ExecCmdButton(
					g_strRTEIndentMnemonic,
					L_IndentToolTip_TEXT,
					false, "rteidt.gif", true, false, "null",
					new C_RTE_TB_SetEnabledAlways()));
			toolBar.push(new C_RTE_TB_Separator());
			toolBar.push(
				new C_RTE_TB_SpecialButton(
					g_strRTEForeColorMnemonic,
					RTE_GenerateForeColorToolBarButtonHtml,
					true,
					new C_RTE_TB_SetEnabledAlways()));
			toolBar.push(
				new C_RTE_TB_SpecialButton(
					g_strRTEBackColorMnemonic,
					RTE_GenerateBackColorToolBarButtonHtml,
					true,
					new C_RTE_TB_SetEnabledAlways()));
			if (RTE_ShouldShowDirection())
			{
				if (strWebLanguage=="1025" || strWebLanguage=="1037")
				{
					toolBar.push(
						new C_RTE_TB_JScriptButton(
							"rtl", L_RTLToolTip_TEXT,
							"RTE_SetDirectionOfSelection", "'rtl'", "rtertl.gif",
							new C_RTE_TB_SetEnabledAlways()));
					toolBar.push(
						new C_RTE_TB_JScriptButton(
							"ltr", L_LTRToolTip_TEXT,
							"RTE_SetDirectionOfSelection", "'ltr'", "rteltr.gif",
							new C_RTE_TB_SetEnabledAlways()));
				}
				else
				{
					toolBar.push(
						new C_RTE_TB_JScriptButton(
							"ltr", L_LTRToolTip_TEXT,
							"RTE_SetDirectionOfSelection", "'ltr'", "rteltr.gif",
							new C_RTE_TB_SetEnabledAlways()));
					toolBar.push(
						new C_RTE_TB_JScriptButton(
							"rtl", L_RTLToolTip_TEXT,
							"RTE_SetDirectionOfSelection", "'rtl'", "rtertl.gif",
							new C_RTE_TB_SetEnabledAlways()));
				}
			}
			rgFullToolBarDefinition=toolBar;
		}
		return rgFullToolBarDefinition;
	}
}
var FileuploadString="fileupload";
var FileUploadIndex=0;
var FileUploadIndexStart;
var attachmentsOnClientToBeRemoved;
var attachmentsOnClientToBeRemovedIndex;
var attachmentsOnServerToBeRemoved;
var attachmentsOnServerToBeRemovedIndex;
function UploadAttachment()
{
		ShowPartAttachment();
}
function ShowPart1()
{
	document.getElementById("partAttachment").style.display="none";
	document.getElementById("part1").style.display="block";
	if (typeof(frm) !="undefined")
		frm.SetFirstFocus(true);
}
function ShowPartAttachment()
{
	if (document.getElementById("part1")==null ||
		typeof(document.getElementById("part1"))=="undefined")
	{
		var L_FormMissingPart1_Text=			"Este formulário foi personalizado de modo a não trabalhar com anexos.";
		alert(L_FormMissingPart1_Text);
		return;
	}
	document.getElementById("part1").style.display="none";
	document.getElementById("partAttachment").style.display="block";
	GetAttachElement(FileuploadString+FileUploadIndex).focus();
}
function CancelAttach()
{
	fileID=FileuploadString+FileUploadIndex;
	fileInput=GetAttachElement(fileID);
	filename=fileInput.value;
	if (filename)
	{
		fileInput.outerHTML="<input type=file class='ms-longfileinput' name="+fileID+">";
	}
	ShowPart1();
}
function OkAttach()
{
	fileID=FileuploadString+FileUploadIndex;
	fileInput=GetAttachElement(fileID);
	filename=TrimWhiteSpaces(fileInput.value);
	if (!filename)
	{
		var L_FileNameRequired_TXT="Nome de Arquivo não pode ser um valor em branco.";
		alert(L_FileNameRequired_TXT);
		fileInput.focus();
	}
	else
	{
		var L_FileUploadToolTip_text="Nome";
		oRow=document.getElementById("idAttachmentsTable").insertRow(-1);
		RowID='attachRow'+FileUploadIndex;
		oRow.id=RowID;
		oCellFileName=oRow.insertCell(-1);
		oCellFileName.className="ms-vb";
		oCellFileName.innerHTML="<span dir=\"ltr\">"+filename+"</span>&nbsp;&nbsp;&nbsp;&nbsp;";
		oCellControl=oRow.insertCell(-1);
		oCellControl.className="ms-propertysheet";
		oCellControl.innerHTML="<IMG SRC='"+document.getElementsByName("RectGifUrl").item(0).value+			"'>&nbsp;<a href='javascript:RemoveLocal("+RowID+",\""+fileID+			"\")'>"+L_Delete_Text+"</a>";
		fileInput.style.display="none";
++FileUploadIndex;
		oAttachments=document.getElementById("attachmentsOnClient");
		var inputNode=document.createElement("input");
		inputNode.tabIndex="1";
		inputNode.type="File";
		inputNode.className="ms-longfileinput";
		inputNode.title=L_FileUploadToolTip_text;
		inputNode.name=FileuploadString+FileUploadIndex;
		inputNode.id=FileuploadString+FileUploadIndex;
		inputNode.size="56";
		oAttachments.appendChild(inputNode);
		var theForm=fileInput.form;
		theForm.encoding='multipart/form-data';
		document.getElementById("idAttachmentsRow").style.display="";
		ShowPart1();
	}
}
function GetAttachElement(elem)
{
	var ret=document.getElementById(elem);
	if (ret==null)
		ret=document.getElementsByName(elem).item(0);
	return ret;
}
function RemoveLocal(RowID, FileID)
{
	document.getElementById("idAttachmentsTable").deleteRow(RowID.rowIndex);
	var nodeForRemoval=GetAttachElement(FileID);
		nodeForRemoval.parentNode.removeChild(nodeForRemoval);
	if (idAttachmentsTable.rows.length==0)
		idAttachmentsRow.style.display='none';
}
function RemoveFromServer(guid)
{
	RemoveAttachmentFromServer(guid, 0)
}
function RemoveAttachmentFromServer(guid, bRecycleBinEnabled)
{
	var L_ConfirmDelete_TXT="Tem certeza de que deseja excluir este anexo?";
	var L_ConfirmRecycle_TXT="Tem certeza de que deseja enviar este anexo para a Lixeira do site?";
	var strWarning;
	if (bRecycleBinEnabled)
	{
		strWarning=L_ConfirmRecycle_TXT;
	}
	else
	{
		strWarning=L_ConfirmDelete_TXT;
	}
	if (confirm(strWarning))
	{
		document.getElementById("idAttachmentsTable").deleteRow(document.getElementById(guid).rowIndex);
		document.getElementsByName("attachmentsToBeRemovedFromServer").item(0).value+=guid+";";
		if (document.getElementById("idAttachmentsTable").rows.length==0)
		   document.getElementById("idAttachmentsRow").style.display='none';
	}
}
function SetChoiceOption(elementId)
{
	var elem=document.getElementById(elementId);
	if (elem !=null && elem !="undefined")
		elem.checked=true;
}
function SetFocusOnControl(elementId)
{
	var elem=document.getElementById(elementId);
	if (elem !=null && elem !="undefined")
	{
		elem.focus();
		elem.select();
	}
}
function ChangeFillinTextTabindex(fillintextId, checkboxId)
{
	var elem=document.getElementById(checkboxId);
	var tabindex=-1;
	if (elem !=null && typeof(elem) !="undefined" && (elem.type=="checkbox" || elem.type=="radio"))
		tabindex=elem.checked ? 0 : -1;
	SetControlTabIndex(fillintextId, tabindex)
}
function SetControlTabIndex(elementId, iTabindex)
{
	var elem=document.getElementById(elementId);
	if (elem !=null && elem !="undefined")
	{
			elem.tabIndex=iTabindex;
	}
}
function TestURL(elementId)
{
	var stURL="";
	var elem=document.getElementById(elementId);
	if (elem !=null && elem !="undefined")
	{
	    stURL=StURLNormalize(TrimWhiteSpaces(elem.value));
	}
	if (stURL=="")
		return;
	idx=stURL.indexOf("://");
	if (idx+3==stURL.length)
		return;
	if (stURL.substr(0, 7)=="mailto:")
		open(stURL, "_self");
	else
		open(stURL, "_blank");
}
function StURLNormalize(stURL)
{
	if (stURL.substr(0,2)=="\\\\" || stURL.substr(0,2)=="\/\/" )
		stURL="file:"+stURL;
	if (stURL.substr(0,5)=="file:")
		stURL=stURL.replace(/\\/g, "\/");
	return stURL;
}
function UploadDocuments()
{
	if (typeof(fCtl) !="undefined" && fCtl)
	{
		document.getElementById("idUploadCtl").MultipleUpload();
	}
	else
	{
		return true;
	}
}
function PreSaveItem()
{
	  if ("function"==typeof(PreSaveAction))
	  {
		return PreSaveAction();
	  }
	return true;
}
function OnMtgAttendeeStatusChangeParams()
{
	this.respFieldClientID=null;
	this.statusNoResponse=null;
	this.statusAccepted=null;
	this.statusDeclined=null;
	this.statusTentative=null;
	this.emailSubjectNoResponse=null;
	this.emailSubjectAccepted=null;
	this.emailSubjectDeclined=null;
	this.emailSubjectTentative=null;
	this.emailBodyNoResponse=null;
	this.emailBodyAccepted=null;
	this.emailBodyDeclined=null;
	this.emailBodyTentative=null;
	this.lblSubjectId=null;
	this.lblBodyId=null;
	this.cbSendEmailId=null;
}
function OnMtgAttendeeStatusChangeEvent()
{
	OnMtgAttendeeStatusChangeWrapper(false);
}
function OnMtgAttendeeStatusChange(bInit, params)
{
	var statusVal=document.getElementById(params.respFieldClientID).value;
	var subjectStr;
	var emailBodyStr;
	switch (statusVal)
	{
		case params.statusNoResponse:
			subjectStr=params.emailSubjectNoResponse;
			emailBodyStr=params.emailBodyNoResponse;
			break;
		case params.statusAccepted:
			subjectStr=params.emailSubjectAccepted;
			emailBodyStr=params.emailBodyAccepted;
			break;
		case params.statusDeclined:
			subjectStr=params.emailSubjectDeclined;
			emailBodyStr=params.emailBodyDeclined;
			break;
		case params.statusTentative:
			subjectStr=params.emailSubjectTentative;
			emailBodyStr=params.emailBodyTentative;
			break;
	}
	document.getElementById(params.lblSubjectId).innerHTML=STSHtmlEncode(subjectStr);
	document.getElementById("MtgAttendeeEmailSubjectPhrase").value=subjectStr;
	document.getElementById(params.lblBodyId).innerHTML=STSHtmlEncode(emailBodyStr);
	document.getElementById("MtgAttendeeEmailBodyPhrase").value=emailBodyStr;
	document.getElementById("OWS:Status:Dropdown").value=statusVal;
	if (!bInit)
		document.getElementById(params.cbSendEmailId).checked=true;
}

