var g_aRemoveBlockElementNames=new Array("Heading 1");
var g_aRemoveBlockElementTags=new Array("H1");

///Overrides default functionality when saving text from the HTML editor to the rich text field
///Any tags defined in g_aRemoveBlockElementTags array are removed
function RTE2_LaunchEditorDialog(args, callbackFunction)
{
     var callback=function(newHtmlArray)
	{
	    var arrayLength= newHtmlArray.length;
	    for(var iItem=0; iItem < arrayLength; iItem++)
        {
            newHtmlArray[iItem]= RTE2_RemoveOnPaste(newHtmlArray[iItem].toString(), g_aRemoveBlockElementTags);
        }
		callbackFunction(newHtmlArray);
	};
   
	var fullUrl=args.webUrl+"_layouts/RTE2PUEditor.aspx";
	commonShowModalDialog(fullUrl, "help:no;dialogHeight:550px;dialogWidth:750px;resizable:yes;status:off;scroll:off;", callback, args);
}


///Overrides default functionality when populating the rich text fields during page opening
///Any tags defined in g_aRemoveBlockElementTags array are removed
function RTE2_PageLoadScript(clientId)
{
	if (!RTE2_IsBrowserSupported()) return;
	/********/
	RTE2_RemoveOnLoad(clientId, g_aRemoveBlockElementTags);
	/********/
	var displayContentElement=document.getElementById(clientId+"_displayContent");
	displayContentElement.designMode="on";
	displayContentElement.contentEditable=true;
	var emptyPanel=document.getElementById(clientId+"_EmptyHtmlPanel");
	if (emptyPanel.children.length==3)
	{
		var emptyChildren=emptyPanel.children[1];
		emptyChildren.designMode="on";
		emptyChildren.contentEditable=true;
	}
	var controlWrapper=RTE2_GetControlWrapper(displayContentElement);
	controlWrapper.style.display="inline-block";
	var findForm=displayContentElement;
	while (findForm.tagName!="FORM" && findForm.tagName!="WINDOW")
	{
		findForm=findForm.parentElement;
	}
	findForm.attachEvent("onsubmit",new Function("RTE2_TransferContentsToTextArea('"+clientId+"');"));
}

///Overrides default SharePoint RTE2_OnPaste method
///Removes formatting defined in the g_aRemoveBlockElementTags array from the text pasted
function RTE2_OnPaste(strBaseElementID, body)
{
	if (!RTE2_IsSourceView(strBaseElementID))
	{
		var clipboardText=body.document.parentWindow.clipboardData.getData("Text");
		if (clipboardText !=null && clipboardText.length > 100000)
		{
			alert(L_ClipboardTextTooLarge_TEXT);
			body.document.parentWindow.event.returnValue=false;
		}
		else
		{
			var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
			if (clipboardText==null) clipboardText="";
			var safeHtmlDocument=RTE2_GetSafeHtmlDocument(strBaseElementID);
			if (safeHtmlDocument==null) return;
			var selection=RTE_GetCurrentSelection(strBaseElementID);
			if (selection !=null)
			{
				if (selection.type !="Control")
				{
					var textRange=selection.createRange();
					if (textRange !=null)
					{
						RTE2_ResetSafeHtmlDocument(safeHtmlDocument);
						var safeRange=safeHtmlDocument.body.createTextRange();
						safeRange.execCommand("Paste")
						var elements=RTE2_GetAllElements(safeHtmlDocument);
						if (elements.length > 2000)
						{
							var userWantsToWait=confirm(L_DoYouWannaWaitForLongPaste_TEXT);
							if (!userWantsToWait)
							{
								body.document.parentWindow.event.returnValue=false;
								return;
							}
						}
						RTE2_ApplyContentFilters(elements, instanceVariables);
						var clipboardTextReturns=clipboardText.replace(/\n/g,"<BR>");
						instanceVariables.pasteData.text=clipboardTextReturns;
						instanceVariables.pasteData.stripped=null;
						/***************************/
						var clipboardTextUpdated= RTE2_RemoveOnPaste(safeHtmlDocument.body.innerHTML, g_aRemoveBlockElementTags); 
						instanceVariables.pasteData.html=clipboardTextUpdated;
						/***************************/
						
						RTE_RestoreSelection(strBaseElementID);
						RTE2_SaveHtmlStateIfChanged(strBaseElementID);
						instanceVariables.pasteData.textRange=textRange;
						textRange.pasteHTML("");
						var pasteTextRange=textRange.duplicate();
						pasteTextRange.collapse();
						pasteTextRange.pasteHTML(clipboardTextUpdated);
						body.document.parentWindow.event.returnValue=false;
						RTE2_RemoveEditorPathFromUrls(strBaseElementID);
						RTE2_AddHtmlEditorTags(strBaseElementID);
						RTE2_SaveHtmlState(strBaseElementID);
						var pasteHtmlNoReturns=clipboardTextUpdated;
						pasteHtmlNoReturns=pasteHtmlNoReturns.replace(/<P>/g,"");
						pasteHtmlNoReturns=pasteHtmlNoReturns.replace(/<\/P>/g,"");
						pasteHtmlNoReturns=pasteHtmlNoReturns.replace(/<BR>/g,"");
						pasteHtmlNoReturns=pasteHtmlNoReturns.replace(/&nbsp;/g,"");
						pasteHtmlNoReturns=pasteHtmlNoReturns.replace(/\r/g,"");
						pasteHtmlNoReturns=pasteHtmlNoReturns.replace(/\n/g,"");
						pasteHtmlNoReturns=pasteHtmlNoReturns.replace(/ /g,"");
						var clipboardTextNoReturns=clipboardText;
						clipboardTextNoReturns=clipboardTextNoReturns.replace(/\r/g,"");
						clipboardTextNoReturns=clipboardTextNoReturns.replace(/\n/g,"");
						clipboardTextNoReturns=clipboardTextNoReturns.replace(/ /g,"");
						if (clipboardTextNoReturns !=pasteHtmlNoReturns)
						{
							RTE2_ShowOnPasteMenu(strBaseElementID, textRange);
						}
						RTE_SaveSelection(strBaseElementID);
					}
				}
			}
		}
	}
}

function RTE2_RemoveOnPaste(clipboardText, removeElementTags)
{
    var changed=0;
    var cMenuItems=removeElementTags.length;
    for(var iItem=0; iItem < cMenuItems; iItem++)
    {
        var tag= removeElementTags[iItem].toString().toLowerCase();
        clipboardText= clipboardText.replace("<"+tag+">", "");
        clipboardText= clipboardText.replace("</"+tag+">", "");
        
        tag= tag.toUpperCase();
        clipboardText= clipboardText.replace("<"+tag+">", "");
        clipboardText= clipboardText.replace("</"+tag+">", "");
    }
    return clipboardText;
}
function RTE2_RemoveOnLoad(clientId, removeElementTags)
{
	var hiddenFieldInDisplayFormat=document.getElementById(clientId+"_hiddenDisplay")
	hiddenFieldInDisplayFormat.value= RTE2_RemoveOnPaste(hiddenFieldInDisplayFormat.value, removeElementTags); 
}



///Overrides default SharePoint RTE2_DD_GetParagraphStylesSelectorUnformattedHtml method
///Updates formatiing options of RichText Editor
///Removes taks defined in the g_aRemoveBlockElementNames array
function RTE2_DD_GetParagraphStylesSelectorUnformattedHtml(strBaseElementID, strWebLanguage)
{
	var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
	var strMenuHtml=instanceVariables.menuHtml[g_strRTEStylesMnemonic];
	if (null !=strMenuHtml)
	{
		return strMenuHtml;
	}
	var strCommandToPerform=g_strRTEFormatBlockMnemonic;
	strMenuHtml=RTE_DD_GenerateMenuOpenHtml(strWebLanguage);
	var rgstrItemNames=RTE_GetBlockFormatNames();
	/*************************/
	rgstrItemNames= RTE2_DD_RemoveParagraphStylesSelectorUnformattedHtml(rgstrItemNames, g_aRemoveBlockElementNames);
	/*************************/
	var restrictions=instanceVariables.restrictions;
	var cMenuItems=rgstrItemNames.length;
	var currentItem=0;
	for (var iItem=0; iItem < cMenuItems; iItem++)
	{
		if (RTE2_IsStyleAllowed(rgstrItemNames[iItem], restrictions) )
		{
			strMenuHtml+=RTE2_DD_GenerateMenuItemHtmlWithSaveHtmlState(strBaseElementID, 1, currentItem, strCommandToPerform, rgstrItemNames[iItem],
						rgstrItemNames[iItem], "", strWebLanguage);
            ++currentItem;
		}
	}
	strMenuHtml+=RTE_DD_GenerateMenuCloseHtml();
	instanceVariables.menuHtml[g_strRTEStylesMnemonic]=new Array(strMenuHtml, currentItem);
	return instanceVariables.menuHtml[g_strRTEStylesMnemonic];
}

function RTE2_DD_RemoveParagraphStylesSelectorUnformattedHtml(registeredItemNames, removeElementNames)
{
    var removeNames= removeElementNames.join();
    var cMenuItems=registeredItemNames.length;
    for(var iItem=0; iItem < cMenuItems; iItem++)
    {
        if(removeNames.indexOf(registeredItemNames[iItem])!= -1)
        {
            registeredItemNames.splice(iItem, 1);
        }
    }
    return registeredItemNames;
}

// JScript source code
function RTE2_InsertOrChangeReusableText(strBaseElementID)
{
	var docEditor=RTE_GetEditorDocument(strBaseElementID);
	if (docEditor==null) return;
	RTE_RestoreSelection(strBaseElementID);
	var configObj=new AssetPickerConfig("");
	configObj.ClientID=strBaseElementID;
	configObj.DefaultAssetLocation="";
	configObj.CurrentWebBaseUrl=RTE2_GetDialogParameter(strBaseElementID, "CurrentWebBaseUrl");
	configObj.AllowExternalUrls=RTE2_ShouldAllowExternalUrls(strBaseElementID);
	var bInserting=false;
	var elemToReplace=null;
	var fragmentId=null;
	var elemViewToEdit=RTE_GetNearestContainingElementOfType(strBaseElementID, "SPAN");
	if ((elemViewToEdit !=null) && (elemViewToEdit.id==g_strRTE2ReusableFragmentCommonToken))
	{
		fragmentId=elemViewToEdit.getAttribute("fragmentid");
	}
	var dialogInput=new Object();
	dialogInput.fragmentId=fragmentId;
	var callback=function(dialogOutput)
	{
		if ((dialogOutput !=null) && (dialogOutput.fragmentView !=null))
		{
			var selection=RTE_GetCurrentSelection(strBaseElementID);
			if (selection !=null)
			{
				if (selection.type=="Control")
				{
					var controlRange=selection.createRange();
					if (controlRange !=null)
					{
						controlRange.execCommand("Delete");
					}
				}
				if (selection.type !="Control")
				{
					var textRange=selection.createRange();
					if (textRange !=null)
					{
		                var safeHtmlDocument=RTE2_GetSafeHtmlDocument(strBaseElementID);
		                if (safeHtmlDocument==null) return;
		                safeHtmlDocument.body.innerHTML=dialogOutput.fragmentView;
		                var elements=RTE2_GetAllElements(safeHtmlDocument);
		                var instanceVariables=RTE_GetEditorInstanceVariables(strBaseElementID);
		                RTE2_ApplyContentFilters(elements, instanceVariables);
						textRange.pasteHTML(safeHtmlDocument.body.innerHTML);
						RTE2_AddHtmlEditorTags(strBaseElementID);
					}
				}
			}
		}
	};
	var dialogUrl=RTE2_GetServerRelativeDialogUrl(strBaseElementID, "SwissReusableTextPicker.aspx");
	commonShowModalDialog(dialogUrl, "dialogHeight:600px; dialogWidth:800px; center:yes; resizable:yes; scroll:no; status:yes;", callback, dialogInput);
	RTE_GiveEditorFocus(strBaseElementID);
}

