﻿var L_CutToolTip_TEXT="Cortar (Ctrl+X)";
var L_CopyToolTip_TEXT="Copiar (Ctrl+C)";
var L_PasteToolTip_TEXT="Pegar (Ctrl+V)";
var L_RemoveFormatToolTip_TEXT="Borrar formato (Ctrl+Espacio)";
var L_BoldToolTip_TEXT="Negrita (Ctrl+N)";
var L_ItalicToolTip_TEXT="Cursiva (Ctrl+I)";
var L_UnderlineToolTip_TEXT="Subrayado (Ctrl+S)";
var L_JustifyLeftToolTip_TEXT="Alinear a la izquierda (Ctrl+L)";
var L_JustifyCenterToolTip_TEXT="Centrar (Ctrl+E)";
var L_JustifyRightToolTip_TEXT="Alinear a la derecha (Ctrl+R)";
var L_OrderedListToolTip_TEXT="Lista numerada (Ctrl+Mayús+E)";
var L_UnorderedListToolTip_TEXT="Lista con viñetas (Ctrl+Mayús+L)";
var L_OutdentToolTip_TEXT="Disminuir sangría (Ctrl+Mayús+M)";
var L_IndentToolTip_TEXT="Aumentar sangría (Ctrl+M)";
var L_ForeColorToolTip_TEXT="Color del texto (Ctrl+Mayús+C)";
var L_BackColorToolTip_TEXT="Color de de resaltado de texto (Ctrl+Mayús+W)";
var L_LTRToolTip_TEXT="De izquierda a derecha (Ctrl+Mayús+>)";
var L_RTLToolTip_TEXT="De derecha a izquierda (Ctrl+Mayús+<)";
var L_CreateLinkToolTip_TEXT="Abrir una ventana nueva para insertar hipervínculo (Ctrl+K)";
var L_InsertImageToolTip_TEXT="Abrir una ventana nueva para insertar imagen (Ctrl+Mayús+G)";
var L_HtmlSourceToolTip_TEXT="Editar código fuente HTML";
var L_FontNameLabel_TEXT="Fuente";
var L_FontNameToolTip_TEXT="Fuente (Ctrl+Mayús+F)";
var L_FontSizeLabel_TEXT="Tamaño";
var L_FontSizeToolTip_TEXT="Tamaño de fuente (Ctrl+Mayús+P)";
var L_InsertTableToolTip_TEXT="Abrir una nueva ventana para insertar una tabla (Ctrl+Alt+T)";
var L_InsertTableElementToolTip_TEXT="Insertar elemento de tabla";
var L_DeleteTableElementToolTip_TEXT="Eliminar elemento de tabla";
var L_InsertRowToolTip_TEXT="Insertar fila";
var L_InsertRowLabel_TEXT="";
var L_InsertRowAboveLabel_TEXT="Insertar fila encima (Ctrl+Alt+Arriba)";
var L_InsertRowBelowLabel_TEXT="Insertar fila debajo (Ctrl+Alt+Abajo)";
var L_InsertColumnToolTip_TEXT="Insertar columna";
var L_InsertColumnLabel_TEXT="";
var L_InsertColumnLeftLabel_TEXT="Insertar columna a la izquierda (Ctrl+Alt+Izquierda)";
var L_InsertColumnRightLabel_TEXT="Insertar columna a la derecha (Ctrl+Alt+Derecha)";
var L_InsertCellToolTip_TEXT="Insertar celda";
var L_InsertCellLabel_TEXT="";
var L_InsertCellLeftLabel_TEXT="Insertar celda a la izquierda (Ctrl+Alt+L)";
var L_InsertCellRightLabel_TEXT="Insertar celda a la derecha (Ctrl+Alt+R)";
var L_MergeCellToolTip_TEXT="Combinar celda (Ctrl+Alt+M)";
var L_InvalidMerge_TEXT="No se puede combinar la celda porque las celdas adyacentes no tienen su mismo ancho ni alto. Cambie el tamaño de las celdas adyacentes para que coincida con el de la celda seleccionada antes de volver a intentar combinarlas.";
var L_SplitCellToolTip_TEXT="Dividir celda (Ctrl+Alt+S)";
var L_DeleteRowToolTip_TEXT="Eliminar fila (Ctrl+Alt+SIGNO MENOS)";
var L_DeleteColumnToolTip_TEXT="Eliminar columna (Ctrl+Alt+BARRA INVERTIDA)";
var L_UndoToolTip_TEXT="Deshacer (Ctrl+Z)";
var L_RedoToolTip_TEXT="Rehacer (Ctrl+Y)";
var L_StylesToolTip_TEXT="Estilos";
var L_StylesLabel_TEXT="Estilos";
var L_ExampleText_TEXT="Texto de ejemplo";
var L_EditorIFrameTitle_TEXT="Editor de texto enriquecido";
var L_Black_TEXT="Negro";
var L_Brown_TEXT="Marrón";
var L_OliveGreen_TEXT="Verde oliva";
var L_DarkGreen_TEXT="Verde oscuro";
var L_DarkTeal_TEXT="Verde azulado oscuro";
var L_DarkBlue_TEXT="Azul marino";
var L_Indigo_TEXT="Añil";
var L_Gray80_TEXT="Gris 80%";
var L_DarkRed_TEXT="Rojo oscuro";
var L_Orange_TEXT="Naranja";
var L_DarkYellow_TEXT="Amarillo oscuro";
var L_Green_TEXT="Verde";
var L_Teal_TEXT="Verde azulado";
var L_Blue_TEXT="Azul";
var L_BlueGray_TEXT="Gris azulado";
var L_Gray50_TEXT="Gris 50%";
var L_Red_TEXT="Rojo";
var L_LightOrange_TEXT="Anaranjado claro";
var L_Lime_TEXT="Lima";
var L_SeaGreen_TEXT="Verde mar";
var L_Aqua_TEXT="Aguamarina";
var L_LightBlue_TEXT="Azul claro";
var L_Violet_TEXT="Violeta";
var L_Gray40_TEXT="Gris 40%";
var L_Pink_TEXT="Rosa";
var L_Gold_TEXT="Oro";
var L_Yellow_TEXT="Amarillo";
var L_BrightGreen_TEXT="Verde vivo";
var L_Turquoise_TEXT="Turquesa";
var L_SkyBlue_TEXT="Azul cielo";
var L_Plum_TEXT="Ciruela";
var L_Gray25_TEXT="Gris 25%";
var L_Rose_TEXT="Rosa";
var L_Tan_TEXT="Canela";
var L_LightYellow_TEXT="Amarillo 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="Blanco";
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" || strWebLanguage=="1164" || 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" || strWebLanguage=="1164" || 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" || strWebLanguage=="1164")
	{
		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" || strWebLanguage=="1164")
		{
			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" || strWebLanguage=="1164")
			{
				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" || strWebLanguage=="1164")
			{
				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" || strWebLanguage=="1164")
			{
				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" || strWebLanguage=="1164")
				{
					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=			"Se personalizó este formulario sin los datos adjuntos.";
		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="Debe especificar un valor para Nombre de archivo";
		alert(L_FileNameRequired_TXT);
		fileInput.focus();
	}
	else
	{
		var L_FileUploadToolTip_text="Nombre";
		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="¿Confirma que desea eliminar estos datos adjuntos?";
	var L_ConfirmRecycle_TXT="¿Confirma que desea enviar estos datos adjuntos a la Papelera de reciclaje del sitio?";
	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;
}

