//**Start Encode**
var dirty=false;
var oRichTextEditor = null;
var sRTEditorEditorCanvas = "RTEditorEditorCanvas";
var oCurrentDownButton = null;
/----------------------------------------------------------------------------------/
/* RTEditor */
function RTEditor(parent,editorcanvas,mode,width,height,features,content,enabled,toolbarBorderStyle,toolbarButtonStyle,fontFaces,saveSubmitForm) {
	if (parent) {
		oEditor = document.createElement("TABLE");
		parent.appendChild(oEditor);
		oEditor._Mode							= (mode.toLowerCase()=="document"?"document":"fragment");
		oEditor._Width							= (width?Clean_Length(width):"100%");
		oEditor._Height							= (height?Clean_Length(height):"100%");
		oEditor._Features						= (features?features:"new, save, |, publish, preview , |, cut, copy, paste, |, whole-document-properties, properties, |, insert-hyperlink, insert-special-character, insert-HR, insert-image, insert-table, |, bold, italic, underline, |, paragraph-style, font-face, font-size, font-colour, |, indent, outdent, |, left-justify, centre, right-justify, |, numbered-list, bulleted-list, |,  view-source");
		oEditor._Enabled						= (enabled!=null||enabled==true?true:false);
		oEditor._ToolbarBorderStyle				= (toolbarBorderStyle?toolbarBorderStyle:"raised");
		oEditor._ToolbarButtonStyle				= (toolbarButtonStyle?toolbarButtonStyle:"flat");
		oEditor._FontFaces						= (fontFaces?fontFaces:"Arial, Helvetica, Geneva,sans-serif|Arial Black, Helvetica, Geneva,sans-serif|Comic Sans MS, Verdana, Arial,sans-serif|Courier New, Courier, monospace|Georgia, Times new Roman, Times, serif|System, monospace|Trebuchet MS, Geneva, Arial, sans-serif|Times New Roman, Georgia, Times, serif|Verdana, Geneva, Arial, sans-serif|Webdings, fantasy|Wingdings, fantasy");
		oEditor._ToolBar;
		oEditor._EditorCanvas;
		oEditor._SaveSubmitForm					= saveSubmitForm;

		if (content && content!="" && content!="undefined") {
			if (oEditor._Mode=="document") {
				oEditor._Content				= content;
			} else {
				oEditor._Content				= "<HTML><HEAD><STYLE> P { margin:0px;padding:0px; }</STYLE><TITLE>Untitled</TITLE><META NAME='keywords' CONTENT=''><META NAME='description' CONTENT=''></HEAD><BODY>"+content+"</BODY></HTML>";
			}
		} else {
			oEditor._Content					= "<HTML><HEAD><STYLE> P { margin:0px;padding:0px; }</STYLE><TITLE>Untitled</TITLE><META NAME='keywords' CONTENT=''><META NAME='description' CONTENT=''></HEAD><BODY></BODY></HTML>";
		}
		oEditor.cellSpacing						= 0;
		oEditor.cellPadding						= 0;
		oEditor.style.width						= oEditor._Width;
		oEditor.style.height					= oEditor._Height;
		oEditor.border							= 0;
		oEditor.style.padding					= "0px";
		oEditor.getHtmlContent					= RTEditor_GetHtmlContent;
		oEditor.getTextContent					= RTEditor_GetTextContent;
		oEditor.enable							= RTEditor_Enable;
		oEditor.disable							= RTEditor_Disable;
		oEditor.getWidth						= RTEditor_GetWidth;
		oEditor.setWidth						= RTEditor_SetWidth;
		oEditor.getHeight						= RTEditor_GetHeight;
		oEditor.setHeight						= RTEditor_SetHeight;
		oEditor._viewSourceOnClick				= RTEditor_ViewSource_OnClick;
		oEditor.oncontextmenu="return false";
		oEditor.onselectstart="return false";
		oEditor.onscroll="return false";
		var oToolBarCell = oEditor.insertRow().insertCell();
		var oEditorCanvasCell = oEditor.insertRow().insertCell();
		oEditorCanvasCell.style.height = "100%";
		oEditor._EditorCanvas = new EditorCanvas(oEditorCanvasCell,editorcanvas,RTEditor_OnSelectionChange,"100%","100%",oEditor._Mode,oEditor._Content,oEditor._Enabled);
		var toolbarItems = new Array();
		var arButtons = oEditor._Features.split(",");
		for (var i=0;i<arButtons.length;i++) {
			switch(String_Trim(arButtons[i])) {
			case "|"				:	toolbarItems[toolbarItems.length] = new Separator("sep1","images/sep.gif"); break;
			case "new"				:	toolbarItems[toolbarItems.length] = new Button("new","New","images/new.gif","images/new_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_New)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "save"				:	toolbarItems[toolbarItems.length] = new Button("save","Save (disabled)","images/save.gif","images/save_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_Save)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "publish"		:	toolbarItems[toolbarItems.length] = new Button("publish","Publish Page (disabled)","images/publish.gif","images/publish_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_Publish)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "preview"			:	toolbarItems[toolbarItems.length] = new Button("preview","Preview","images/preview.gif","images/preview_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_Preview)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "copy"				:	toolbarItems[toolbarItems.length] = new Button("copy","Copy to Clipboard","images/copy.gif","images/copy_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_Copy)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "cut"				:	toolbarItems[toolbarItems.length] = new Button("cut","Cut to Clipboard","images/cut.gif","images/cut_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_Cut)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "paste"			:	toolbarItems[toolbarItems.length] = new Button("paste","Paste from Clipboard","images/paste.gif","images/paste_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_Paste)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "bold"				:	toolbarItems[toolbarItems.length] = new Button("bold","Bold","images/bold.gif","images/bold_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_SetSelectionBold)"),oEditor._Enabled,true,oEditor._ToolbarButtonStyle); break;
			case "italic"			:	toolbarItems[toolbarItems.length] = new Button("italic","Italic","images/italic.gif","images/italic_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_SetSelectionItalic)"),oEditor._Enabled,true,oEditor._ToolbarButtonStyle); break;
			case "underline"		:	toolbarItems[toolbarItems.length] = new Button("underline","Underline","images/underline.gif","images/underline_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_SetSelectionUnderline)"),oEditor._Enabled,true,oEditor._ToolbarButtonStyle); break;
			case "paragraph-style"	:	var dropdownItems = new Array();
										dropdownItems[dropdownItems.length] = new Array("Normal");
										dropdownItems[dropdownItems.length] = new Array("Heading 1");
										dropdownItems[dropdownItems.length] = new Array("Heading 2");
										dropdownItems[dropdownItems.length] = new Array("Heading 3");
										dropdownItems[dropdownItems.length] = new Array("Heading 4");
										dropdownItems[dropdownItems.length] = new Array("Heading 5");
										dropdownItems[dropdownItems.length] = new Array("Heading 6");
																										 
										toolbarItems[toolbarItems.length] = new Dropdown("paragraph-style",EditorCanvas_SetSelectionParagraph,dropdownItems,oEditor._Enabled);
										break;
			case "font-face"		:	var dropdownItems = new Array();
										var arrFontFaces = oEditor._FontFaces.split("|");
										dropdownItems[dropdownItems.length] = new Array("(font face)","","(font face)");
										for (var n=0;n<arrFontFaces.length;n++) {
											dropdownItems[dropdownItems.length] = new Array(arrFontFaces[n].split(",")[0],arrFontFaces[n],arrFontFaces[n].split(",")[0]);
										}
										toolbarItems[toolbarItems.length] = new Dropdown("font-face",EditorCanvas_SetSelectionFontFace,dropdownItems,oEditor._Enabled);
										break;
			case "font-size"		:	var dropdownItems = new Array();
										dropdownItems[dropdownItems.length] = new Array("(font size)","","(font size)");
										dropdownItems[dropdownItems.length] = new Array("1 (8pt)","1","1");
										dropdownItems[dropdownItems.length] = new Array("2 (10pt)","2","2");
										dropdownItems[dropdownItems.length] = new Array("3 (12pt)","3","3");
										dropdownItems[dropdownItems.length] = new Array("4 (14pt)","4","4");
										dropdownItems[dropdownItems.length] = new Array("5 (18pt)","5","5");
										dropdownItems[dropdownItems.length] = new Array("6 (24pt)","6","6");
										dropdownItems[dropdownItems.length] = new Array("7 (36pt)","7","7");

										toolbarItems[toolbarItems.length] = new Dropdown("font-size",EditorCanvas_SetSelectionFontSize,dropdownItems,oEditor._Enabled);
										break;
			case "font-colour"		:	var dropdownItems = new Array();
										dropdownItems[dropdownItems.length] = new Array(" ","#000000","000000","#000000");
										dropdownItems[dropdownItems.length] = new Array("         ","#333333","333333","#333333");
										dropdownItems[dropdownItems.length] = new Array(" ","#666666","666666","#666666");
										dropdownItems[dropdownItems.length] = new Array(" ","#999999","999999","#999999");
										dropdownItems[dropdownItems.length] = new Array(" ","#CCCCCC","CCCCCC","#CCCCCC");
										dropdownItems[dropdownItems.length] = new Array(" ","#FFFFFF","FFFFFF","#FFFFFF");
										dropdownItems[dropdownItems.length] = new Array(" ","#996699","996699","#996699");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC99CC","CC99CC","#CC99CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC66CC","CC66CC","#CC66CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC33CC","CC33CC","#CC33CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#663366","663366","#663366");
										dropdownItems[dropdownItems.length] = new Array(" ","#330033","330033","#330033");
										dropdownItems[dropdownItems.length] = new Array(" ","#660066","660066","#660066");
										dropdownItems[dropdownItems.length] = new Array(" ","#990099","990099","#990099");
										dropdownItems[dropdownItems.length] = new Array(" ","#993399","993399","#993399");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC00CC","CC00CC","#CC00CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF00FF","FF00FF","#FF00FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF33FF","FF33FF","#FF33FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF99FF","FF99FF","#FF99FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#FFCCFF","FFCCFF","#FFCCFF");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF66FF","FF66FF","#FF66FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF00CC","FF00CC","#FF00CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF33CC","FF33CC","#FF33CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC0099","CC0099","#CC0099");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC3399","CC3399","#CC3399");
										dropdownItems[dropdownItems.length] = new Array(" ","#990066","990066","#990066");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF66CC","FF66CC","#FF66CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF0099","FF0099","#FF0099");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC6699","CC6699","#CC6699");
										dropdownItems[dropdownItems.length] = new Array(" ","#993366","993366","#993366");
										dropdownItems[dropdownItems.length] = new Array(" ","#660033","660033","#660033");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC0066","CC0066","#CC0066");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF3399","FF3399","#FF3399");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF99CC","FF99CC","#FF99CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF6699","FF6699","#FF6699");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF3366","FF3366","#FF3366");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF0033","FF0033","#FF0033");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF0066","FF0066","#FF0066");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC3366","CC3366","#CC3366");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC0033","CC0033","#CC0033");
										dropdownItems[dropdownItems.length] = new Array(" ","#990033","990033","#990033");
										dropdownItems[dropdownItems.length] = new Array(" ","#993333","993333","#993333");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC3333","CC3333","#CC3333");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC6666","CC6666","#CC6666");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC9999","CC9999","#CC9999");
										dropdownItems[dropdownItems.length] = new Array(" ","#996666","996666","#996666");
										dropdownItems[dropdownItems.length] = new Array(" ","#663333","663333","#663333");
										dropdownItems[dropdownItems.length] = new Array(" ","#330000","330000","#330000");
										dropdownItems[dropdownItems.length] = new Array(" ","#660000","660000","#660000");
										dropdownItems[dropdownItems.length] = new Array(" ","#990000","990000","#990000");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC0000","CC0000","#CC0000");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF0000","FF0000","#FF0000");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF3333","FF3333","#FF3333");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF3300","FF3300","#FF3300");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF6666","FF6666","#FF6666");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF9999","FF9999","#FF9999");
										dropdownItems[dropdownItems.length] = new Array(" ","#FFCCCC","FFCCCC","#FFCCCC");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF9966","FF9966","#FF9966");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF6600","FF6600","#FF6600");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF6633","FF6633","#FF6633");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC3300","CC3300","#CC3300");
										dropdownItems[dropdownItems.length] = new Array(" ","#993300","993300","#993300");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC6633","CC6633","#CC6633");
										dropdownItems[dropdownItems.length] = new Array(" ","#996633","996633","#996633");
										dropdownItems[dropdownItems.length] = new Array(" ","#663300","663300","#663300");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC6600","CC6600","#CC6600");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF9933","FF9933","#FF9933");
										dropdownItems[dropdownItems.length] = new Array(" ","#FF9900","FF9900","#FF9900");
										dropdownItems[dropdownItems.length] = new Array(" ","#FFCC99","FFCC99","#FFCC99");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC9966","CC9966","#CC9966");
										dropdownItems[dropdownItems.length] = new Array(" ","#996600","996600","#996600");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC9900","CC9900","#CC9900");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC9933","CC9933","#CC9933");
										dropdownItems[dropdownItems.length] = new Array(" ","#FFCC66","FFCC66","#FFCC66");
										dropdownItems[dropdownItems.length] = new Array(" ","#FFCC33","FFCC33","#FFCC33");
										dropdownItems[dropdownItems.length] = new Array(" ","#FFCC00","FFCC00","#FFCC00");
										dropdownItems[dropdownItems.length] = new Array(" ","#FFFF66","FFFF66","#FFFF66");
										dropdownItems[dropdownItems.length] = new Array(" ","#999933","999933","#999933");
										dropdownItems[dropdownItems.length] = new Array(" ","#999966","999966","#999966");
										dropdownItems[dropdownItems.length] = new Array(" ","#666633","666633","#666633");
										dropdownItems[dropdownItems.length] = new Array(" ","#CCCC99","CCCC99","#CCCC99");
										dropdownItems[dropdownItems.length] = new Array(" ","#CCCC66","CCCC66","#CCCC66");
										dropdownItems[dropdownItems.length] = new Array(" ","#CCCC33","CCCC33","#CCCC33");
										dropdownItems[dropdownItems.length] = new Array(" ","#333300","333300","#333300");
										dropdownItems[dropdownItems.length] = new Array(" ","#666600","666600","#666600");
										dropdownItems[dropdownItems.length] = new Array(" ","#999900","999900","#999900");
										dropdownItems[dropdownItems.length] = new Array(" ","#CCCC00","CCCC00","#CCCC00");
										dropdownItems[dropdownItems.length] = new Array(" ","#FFFF00","FFFF00","#FFFF00");
										dropdownItems[dropdownItems.length] = new Array(" ","#FFFF33","FFFF33","#FFFF33");
										dropdownItems[dropdownItems.length] = new Array(" ","#FFFF99","FFFF99","#FFFF99");
										dropdownItems[dropdownItems.length] = new Array(" ","#FFFFCC","FFFFCC","#FFFFCC");
										dropdownItems[dropdownItems.length] = new Array(" ","#CCFF99","CCFF99","#CCFF99");
										dropdownItems[dropdownItems.length] = new Array(" ","#CCFF66","CCFF66","#CCFF66");
										dropdownItems[dropdownItems.length] = new Array(" ","#CCFF00","CCFF00","#CCFF00");
										dropdownItems[dropdownItems.length] = new Array(" ","#CCFF33","CCFF33","#CCFF33");
										dropdownItems[dropdownItems.length] = new Array(" ","#99CC00","99CC00","#99CC00");
										dropdownItems[dropdownItems.length] = new Array(" ","#99CC33","99CC33","#99CC33");
										dropdownItems[dropdownItems.length] = new Array(" ","#669900","669900","#669900");
										dropdownItems[dropdownItems.length] = new Array(" ","#669933","669933","#669933");
										dropdownItems[dropdownItems.length] = new Array(" ","#99CC66","99CC66","#99CC66");
										dropdownItems[dropdownItems.length] = new Array(" ","#336600","336600","#336600");
										dropdownItems[dropdownItems.length] = new Array(" ","#339900","339900","#339900");
										dropdownItems[dropdownItems.length] = new Array(" ","#66CC00","66CC00","#66CC00");
										dropdownItems[dropdownItems.length] = new Array(" ","#66CC33","66CC33","#66CC33");
										dropdownItems[dropdownItems.length] = new Array(" ","#33CC00","33CC00","#33CC00");
										dropdownItems[dropdownItems.length] = new Array(" ","#99FF33","99FF33","#99FF33");
										dropdownItems[dropdownItems.length] = new Array(" ","#99FF00","99FF00","#99FF00");
										dropdownItems[dropdownItems.length] = new Array(" ","#99FF66","99FF66","#99FF66");
										dropdownItems[dropdownItems.length] = new Array(" ","#66FF00","66FF00","#66FF00");
										dropdownItems[dropdownItems.length] = new Array(" ","#66FF33","66FF33","#66FF33");
										dropdownItems[dropdownItems.length] = new Array(" ","#33FF00","33FF00","#33FF00");
										dropdownItems[dropdownItems.length] = new Array(" ","#66CC66","66CC66","#66CC66");
										dropdownItems[dropdownItems.length] = new Array(" ","#99CC99","99CC99","#99CC99");
										dropdownItems[dropdownItems.length] = new Array(" ","#669966","669966","#669966");
										dropdownItems[dropdownItems.length] = new Array(" ","#336633","336633","#336633");
										dropdownItems[dropdownItems.length] = new Array(" ","#339933","339933","#339933");
										dropdownItems[dropdownItems.length] = new Array(" ","#003300","003300","#003300");
										dropdownItems[dropdownItems.length] = new Array(" ","#006600","006600","#006600");
										dropdownItems[dropdownItems.length] = new Array(" ","#009900","009900","#009900");
										dropdownItems[dropdownItems.length] = new Array(" ","#33CC33","33CC33","#33CC33");
										dropdownItems[dropdownItems.length] = new Array(" ","#00CC00","00CC00","#00CC00");
										dropdownItems[dropdownItems.length] = new Array(" ","#00FF00","00FF00","#00FF00");
										dropdownItems[dropdownItems.length] = new Array(" ","#33FF33","33FF33","#33FF33");
										dropdownItems[dropdownItems.length] = new Array(" ","#66FF66","66FF66","#66FF66");
										dropdownItems[dropdownItems.length] = new Array(" ","#99FF99","99FF99","#99FF99");
										dropdownItems[dropdownItems.length] = new Array(" ","#CCFFCC","CCFFCC","#CCFFCC");
										dropdownItems[dropdownItems.length] = new Array(" ","#00FF33","00FF33","#00FF33");
										dropdownItems[dropdownItems.length] = new Array(" ","#33FF66","33FF66","#33FF66");
										dropdownItems[dropdownItems.length] = new Array(" ","#00FF66","00FF66","#00FF66");
										dropdownItems[dropdownItems.length] = new Array(" ","#33CC66","33CC66","#33CC66");
										dropdownItems[dropdownItems.length] = new Array(" ","#00CC33","00CC33","#00CC33");
										dropdownItems[dropdownItems.length] = new Array(" ","#009933","009933","#009933");
										dropdownItems[dropdownItems.length] = new Array(" ","#006633","006633","#006633");
										dropdownItems[dropdownItems.length] = new Array(" ","#339966","339966","#339966");
										dropdownItems[dropdownItems.length] = new Array(" ","#66CC99","66CC99","#66CC99");
										dropdownItems[dropdownItems.length] = new Array(" ","#00CC66","00CC66","#00CC66");
										dropdownItems[dropdownItems.length] = new Array(" ","#00FF99","00FF99","#00FF99");
										dropdownItems[dropdownItems.length] = new Array(" ","#33FF99","33FF99","#33FF99");
										dropdownItems[dropdownItems.length] = new Array(" ","#66FF99","66FF99","#66FF99");
										dropdownItems[dropdownItems.length] = new Array(" ","#99FFCC","99FFCC","#99FFCC");
										dropdownItems[dropdownItems.length] = new Array(" ","#33CC99","33CC99","#33CC99");
										dropdownItems[dropdownItems.length] = new Array(" ","#009966","009966","#009966");
										dropdownItems[dropdownItems.length] = new Array(" ","#00CC99","00CC99","#00CC99");
										dropdownItems[dropdownItems.length] = new Array(" ","#66FFCC","66FFCC","#66FFCC");
										dropdownItems[dropdownItems.length] = new Array(" ","#33FFCC","33FFCC","#33FFCC");
										dropdownItems[dropdownItems.length] = new Array(" ","#00FFCC","00FFCC","#00FFCC");
										dropdownItems[dropdownItems.length] = new Array(" ","#669999","669999","#669999");
										dropdownItems[dropdownItems.length] = new Array(" ","#336666","336666","#336666");
										dropdownItems[dropdownItems.length] = new Array(" ","#99CCCC","99CCCC","#99CCCC");
										dropdownItems[dropdownItems.length] = new Array(" ","#66CCCC","66CCCC","#66CCCC");
										dropdownItems[dropdownItems.length] = new Array(" ","#339999","339999","#339999");
										dropdownItems[dropdownItems.length] = new Array(" ","#006666","006666","#006666");
										dropdownItems[dropdownItems.length] = new Array(" ","#003333","003333","#003333");
										dropdownItems[dropdownItems.length] = new Array(" ","#009999","009999","#009999");
										dropdownItems[dropdownItems.length] = new Array(" ","#33CCCC","33CCCC","#33CCCC");
										dropdownItems[dropdownItems.length] = new Array(" ","#00CCCC","00CCCC","#00CCCC");
										dropdownItems[dropdownItems.length] = new Array(" ","#00FFFF","00FFFF","#00FFFF");
										dropdownItems[dropdownItems.length] = new Array(" ","#33FFFF","33FFFF","#33FFFF");
										dropdownItems[dropdownItems.length] = new Array(" ","#66FFFF","66FFFF","#66FFFF");
										dropdownItems[dropdownItems.length] = new Array(" ","#99FFFF","99FFFF","#99FFFF");
										dropdownItems[dropdownItems.length] = new Array(" ","#CCFFFF","CCFFFF","#CCFFFF");
										dropdownItems[dropdownItems.length] = new Array(" ","#99CCFF","99CCFF","#99CCFF");
										dropdownItems[dropdownItems.length] = new Array(" ","#66CCFF","66CCFF","#66CCFF");
										dropdownItems[dropdownItems.length] = new Array(" ","#33CCFF","33CCFF","#33CCFF");
										dropdownItems[dropdownItems.length] = new Array(" ","#00CCFF","00CCFF","#00CCFF");
										dropdownItems[dropdownItems.length] = new Array(" ","#6699FF","6699FF","#6699FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#3399FF","3399FF","#3399FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#3399CC","3399CC","#3399CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#9999CC","9999CC","#9999CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#6699CC","6699CC","#6699CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#3366CC","3366CC","#3366CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#6666CC","6666CC","#6666CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#336699","336699","#336699");
										dropdownItems[dropdownItems.length] = new Array(" ","#666699","666699","#666699");
										dropdownItems[dropdownItems.length] = new Array(" ","#006699","006699","#006699");
										dropdownItems[dropdownItems.length] = new Array(" ","#3366FF","3366FF","#3366FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#6600FF","6600FF","#6600FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#0033CC","0033CC","#0033CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#3333CC","3333CC","#3333CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#003399","003399","#003399");
										dropdownItems[dropdownItems.length] = new Array(" ","#333399","333399","#333399");
										dropdownItems[dropdownItems.length] = new Array(" ","#333366","333366","#333366");
										dropdownItems[dropdownItems.length] = new Array(" ","#003366","003366","#003366");
										dropdownItems[dropdownItems.length] = new Array(" ","#000033","000033","#000033");
										dropdownItems[dropdownItems.length] = new Array(" ","#000066","000066","#000066");
										dropdownItems[dropdownItems.length] = new Array(" ","#000099","000099","#000099");
										dropdownItems[dropdownItems.length] = new Array(" ","#0000CC","0000CC","#0000CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#0000FF","0000FF","#0000FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#0033FF","0033FF","#0033FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#3333FF","3333FF","#3333FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#6666FF","6666FF","#6666FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#9999FF","9999FF","#9999FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#CCCCFF","CCCCFF","#CCCCFF");
										dropdownItems[dropdownItems.length] = new Array(" ","#3300FF","3300FF","#3300FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#3300CC","3300CC","#3300CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#6633FF","6633FF","#6633FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#6633CC","6633CC","#6633CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#330099","330099","#330099");
										dropdownItems[dropdownItems.length] = new Array(" ","#9966FF","9966FF","#9966FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#6600FF","6600FF","#6600FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#6600CC","6600CC","#6600CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#9933FF","9933FF","#9933FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#9900FF","9900FF","#9900FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#9966CC","9966CC","#9966CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC99FF","CC99FF","#CC99FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC66FF","CC66FF","#CC66FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC33FF","CC33FF","#CC33FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#CC00FF","CC00FF","#CC00FF");
										dropdownItems[dropdownItems.length] = new Array(" ","#9933CC","9933CC","#9933CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#9900CC","9900CC","#9900CC");
										dropdownItems[dropdownItems.length] = new Array(" ","#663399","663399","#663399");
										dropdownItems[dropdownItems.length] = new Array(" ","#660099","660099","#660099");
										dropdownItems[dropdownItems.length] = new Array(" ","#330066","330066","#330066");
										toolbarItems[toolbarItems.length] = new Dropdown("font-colour",EditorCanvas_SetSelectionFontColour,dropdownItems,oEditor._Enabled);
										break;
			case "indent"			:	toolbarItems[toolbarItems.length] = new Button("indent","Indent","images/indent.gif","images/indent_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_Indent)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "outdent"			:	toolbarItems[toolbarItems.length] = new Button("oudent","Outdent","images/outdent.gif","images/outdent_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_Outdent)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "left-justify"		:	toolbarItems[toolbarItems.length] = new Button("left-justify","Justify Left","images/justifyleft.gif","images/justifyleft_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_SetSelectionJustifyLeft)"),oEditor._Enabled,true,oEditor._ToolbarButtonStyle,1); break;
			case "centre"			:	toolbarItems[toolbarItems.length] = new Button("centre","Centre","images/justifycentre.gif","images/justifycentre_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_SetSelectionJustifyCentre)"),oEditor._Enabled,true,oEditor._ToolbarButtonStyle,1); break;
			case "right-justify"	:	toolbarItems[toolbarItems.length] = new Button("right-justify","Justify Right","images/justifyright.gif","images/justifyright_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_SetSelectionJustifyRight)"),oEditor._Enabled,true,oEditor._ToolbarButtonStyle,1); break;
			case "numbered-list"	:	toolbarItems[toolbarItems.length] = new Button("numbered-list","Numbered List","images/numberlist.gif","images/numberlist_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_SetSelectionNumberedList)"),oEditor._Enabled,true,oEditor._ToolbarButtonStyle,2); break;
			case "bulleted-list"	:	toolbarItems[toolbarItems.length] = new Button("bulleted-list","Bulleted List","images/bulletlist.gif","images/bulletlist_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_SetSelectionBulletedList)"),oEditor._Enabled,true,oEditor._ToolbarButtonStyle,2); break;
			case "insert-hyperlink"	:	toolbarItems[toolbarItems.length] = new Button("insert-hyperlink","Insert Hyperlink","images/link.gif","images/link_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_SetSelectionLink)"),oEditor._Enabled,true,oEditor._ToolbarButtonStyle); break;
			case "insert-special-character"	:
										toolbarItems[toolbarItems.length] = new Button("insert-special-character","Insert Special Character","images/specialcharacter.gif","images/specialcharacter_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_InsertSpecialCharacter)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "insert-HR"		:	toolbarItems[toolbarItems.length] = new Button("insert-HR","Insert Horizontal Rule","images/hr.gif","images/hr_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_InsertHR)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "insert-image"		:	toolbarItems[toolbarItems.length] = new Button("insert-image","Insert Image","images/image.gif","images/image_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_InsertImage)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "insert-table"		:	toolbarItems[toolbarItems.length] = new Button("insert-table","Insert Table","images/table.gif","images/table_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_InsertTable)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "whole-document-properties":
										if (oEditor._Mode=="document") toolbarItems[toolbarItems.length] = new Button("whole-document-properties","Document Properties","images/wholedocument.gif","images/wholedocument_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_DocumentProperties)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "view-source"		:	toolbarItems[toolbarItems.length] = new Button("view-source","Toggle between Source and Editor Modes","images/viewsource.gif","images/viewsource_disabled.gif",new Function("return ToolBar_ButtonOnClick(RTEditor_ViewSource_OnClick)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			case "properties"		:	toolbarItems[toolbarItems.length] = new Button("properties","Object Properties","images/properties.gif","images/properties_disabled.gif",new Function("return ToolBar_ButtonOnClick(EditorCanvas_ObjectProperties)"),oEditor._Enabled,false,oEditor._ToolbarButtonStyle); break;
			}
		}
		oEditor._ToolBar = new ToolBar(oToolBarCell,"100%",toolbarItems,oEditor._Enabled,oEditor._ToolbarBorderStyle);
		oRichTextEditor = oEditor;
		RTEditor_OnSelectionChange(EditorCanvas_GetIFrame().document.selection);
		return oEditor;
	}
	return null;
}
function RTEditor_GetHtmlContent() {
	if (this._EditorCanvas) {
		if (this._Mode=="document") {
			return this._EditorCanvas.document.documentElement.outerHTML;
		} else {
			return this._EditorCanvas.document.body.innerHTML;
		}
	}
}
function RTEditor_GetTextContent() {
	return this._EditorCanvas.document.body.innerText;
}
function RTEditor_Enable() {
	this._Enabled = true;
	if (this._EditorCanvas && this._ToolBar) {
		this._EditorCanvas.enable();
		this._ToolBar.enable();
	}
}
function RTEditor_Disable() {
	this._Enabled = false;
	if (this._EditorCanvas && this._ToolBar) {
		this._EditorCanvas.disable();
		this._ToolBar.disable();
	}
}
function RTEditor_GetWidth() {
	return this._Width;
}
function RTEditor_SetWidth(value) {
	this._Width = Clean_Length(value);
	if (this._EditorCanvas && this._ToolBar) {
		this._EditorCanvas.setWidth((this.style.pixelWidth-2)+"px");
		this._ToolBar.setWidth((this.style.pixelWidth-2)+"px");
	}
}
function RTEditor_GetHeight() {
	return this._Height;
}
function RTEditor_SetHeight(value) {
	this._Height = Clean_Length(value);
	this.style.height = value;
}
function RTEditor_ViewSource_OnClick() {
	EditorCanvas_ToggleViewMode();
	if (EditorCanvas_GetViewMode()=="editor") {
		oRichTextEditor._ToolBar.enable();
	} else {
		oRichTextEditor._ToolBar.disable();
		for (var n=0;n<oRichTextEditor._ToolBar.numItems();n++) {
			var b=oRichTextEditor._ToolBar.getItem(n);
			if (b!=null && b.getType()=="btn" && b.getName()=="view-source") {
				b.enable();
			}
		}
	}
}
function RTEditor_OnSelectionChange(sel) {
	var oToolBar = oRichTextEditor._ToolBar;
	if (sel && ((sel.type=="Text") || (sel.type=="None"))) {
		var oTextRange = sel.createRange();
		var isLink=false;
		var parent = oTextRange.parentElement();
		while (parent && parent.tagName!="BODY") {
			if (parent.tagName=="A") {
				oToolBar.getItem("insert-hyperlink").setDown();
				isLink=true;
			}
			parent = parent.parentElement;
		}
		var setDownBtnsNames = new Array("bold","italic","underline","left-justify","centre","right-justify","bulleted-list","numbered-list");
		var setDownBtnsCmdIDs = new Array("Bold","Italic","Underline","JustifyLeft","JustifyCenter","JustifyRight","InsertUnorderedList","InsertOrderedList");
		for (var n=0;n<setDownBtnsNames.length;n++) {
			if (oToolBar.getItem(setDownBtnsNames[n]) && oToolBar.getItem(setDownBtnsNames[n])._SetDownOnClick && !oToolBar.getItem(setDownBtnsNames[n])._InClick) {
				if ((sel.type!="None" && oTextRange.queryCommandValue(setDownBtnsCmdIDs[n])) || EditorCanvas_GetIFrame().document.queryCommandValue(setDownBtnsCmdIDs[n])) {
					oToolBar.getItem(setDownBtnsNames[n]).setDown();
				} else if (oToolBar.getItem(setDownBtnsNames[n])) {
					oToolBar.getItem(setDownBtnsNames[n]).releaseDown();
				}
			}
		}
		
		if (sel.type!="None"){
			if (oToolBar.getItem("paragraph-style")) {
				oToolBar.getItem("paragraph-style").setSelected(oTextRange.queryCommandValue("FormatBlock"));
			}
			
			if (oToolBar.getItem("font-face")) {
				oToolBar.getItem("font-face").setSelected(oTextRange.queryCommandValue("FontName"));
			}
			if (oToolBar.getItem("font-size")) {
				oToolBar.getItem("font-size").setSelected(oTextRange.queryCommandValue("FontSize"));
			}
			if (oToolBar.getItem("font-colour")) {
				oToolBar.getItem("font-colour").setSelected(Colour2Hex(oTextRange.queryCommandValue("ForeColor")).substr(1));
			}
			if (oToolBar.getItem("properties")) {
				oToolBar.getItem("properties").disable();
			}
		}

	} else if (sel && sel.type=="Control") {
		var oControlRange = sel.createRangeCollection();
		
		if (oControlRange.length > 0){
			if (oControlRange(0).outerHTML != ""){
				var ControlType = oControlRange(0).outerHTML.toLowerCase();
				if (ControlType.indexOf("<hr") != -1){
						oToolBar.getItem("font-colour").setSelected(Colour2Hex(oControlRange.queryCommandValue("ForeColor")).substr(1));
				}
			}
		}
	
		if (oToolBar.getItem("properties")) {
			oToolBar.getItem("properties").enable();
		}
	}
}
function ToolBar(parent,width,items,enabled,borderStyle) {
	if (parent) {
		var oToolBar 							= document.createElement("DIV");
		oToolBar._BorderStyle					= (borderStyle?borderStyle:"raised")+"";
		oToolBar._Items							= (items?items:new Array());
		oToolBar._Width							= (width?width:"100%");
		oToolBar._Enabled						= (enabled?enabled:true);
		oToolBar.style.cursor					= "default";
		oToolBar.style.backgroundColor			= "#E7E2CD";
		oToolBar.style.padding					= "1px";
		oToolBar.style.height					= "1px";
		oToolBar.style.width					= oToolBar._Width;
		if (oToolBar._BorderStyle=="none") {
			oToolBar.style.borderStyle="none";
		} else if (oToolBar._BorderStyle=="raised") {
			oToolBar.style.borderTop = "solid 1px #CDCABB";
			oToolBar.style.borderRight = "solid 1px #CDCABB";
			oToolBar.style.borderBottom = "solid 1px #CDCABB";
			oToolBar.style.borderLeft = "solid 1px #CDCABB";
		} else { //assume css
			try {
				oToolBar.style.border = oToolBar._BorderStyle;
			} catch(e) { }
		}
		for (var n=0;n<oToolBar._Items.length;n++) {
			oToolBar.appendChild(oToolBar._Items[n]);
			oToolBar._Items[n].expand();
		}
		oToolBar.setWidth						= ToolBar_SetWidth;
		oToolBar.getWidth						= ToolBar_GetWidth;
		oToolBar.enable							= ToolBar_Enable;
		oToolBar.disable						= ToolBar_Disable;
		oToolBar.getItem						= ToolBar_GetItem;
		oToolBar.numItems						= ToolBar_NumItems;
		oToolBar.onselectstart				= new Function("return false");
		oToolBar.oncontextmenu			= new Function("return false");
		oToolBar.onselectstart				= new Function("return false");
		oToolBar.onselect						= new Function("return false");
		oToolBar.ondragstart					= new Function("return false");
		oToolBar.onclick						= new Function("EditorCanvas_GetIFrame().focus();");
		oToolBar.onfocus						= new Function("EditorCanvas_GetIFrame().focus();");
		parent.appendChild(oToolBar);
		return oToolBar;
	}
	return false
}

function ToolBar_GetWidth() {
	return this._Width;
}
function ToolBar_SetWidth(value) {
	value = Clean_Length(value);
	this._Width = value;
	if (this._ToolBar) {
		this._ToolBar.style.width = value;
	}
}
function ToolBar_Enable() {
	for (var i=0;i<this._Items.length;i++) {
		if (this._Items[i].getType()=="btn" || this._Items[i].getType()=="drp") {
			this._Items[i].enable();
		}
	}
}
function ToolBar_Disable() {
	for (var i=0;i<this._Items.length;i++) {
		if (this._Items[i].getType()=="btn" || this._Items[i].getType()=="drp") {
			this._Items[i].disable();
		}
	}
}
function ToolBar_GetItem(index) {
	if (typeof(index)=="string") {
		for (var n=0;n<this._Items.length;n++) {
			if (this._Items[n] && (this._Items[n].getType()=="btn" || this._Items[n].getType()=="drp") && this._Items[n].getName()==index) {
				return this._Items[n];
			}
		}
	} else if (typeof(index)=="number") {
		if ((index>-1) && (index<this._Items.length)) {
			return this._Items[index];
		}
	}
	return null;
}
function ToolBar_NumItems() {
	return this._Items.length;
}
function ToolBar_ButtonOnClick(buttonHandler) {
	oToolBar = oRichTextEditor._ToolBar;
	var oButton = (event.srcElement.tagName=="SPAN"?event.srcElement:event.srcElement._Holder);//event.srcElement._Holder;
	for (var i=0;i<oToolBar.numItems();i++) {
		if (oToolBar.getItem(i).getType()=="btn" && oButton.getGroup()!=-1 && oToolBar.getItem(i).getGroup()==oButton.getGroup() && oToolBar.getItem(i)!=oButton) {
			oToolBar.getItem(i).releaseDown();
		}
	}
	return buttonHandler();
}
function Button(name,tooltip,iconUrl,disabledIconUrl,onClickHandler,enabled,setDownOnClick,borderStyle,group) {
	var oButton								= document.createElement("SPAN");
	oButton._BorderStyle					= (borderStyle?borderStyle:"flat");
	oButton._Enabled						= (enabled==true || enabled==null?true:false);
	oButton._Type							= "btn";
	oButton._IconUrl						= (iconUrl?iconUrl:"");
	oButton._DisabledIconUrl				= (disabledIconUrl?disabledIconUrl:"");
	oButton._OnClick						= (onClickHandler?onClickHandler:new Function("return false"));
	oButton._Name							= (name?name:"");
	oButton._SetDown						= false;
	oButton._DoSetDown						= -1;//-1=nothing;0=make setdown false;1=make setdown true;
	oButton._SetDownOnClick					= (setDownOnClick?setDownOnClick:false);
	oButton._Group							= (!isNaN(parseInt(group))?parseInt(group):-1);
	oButton._InClick						= false;
	oButton.style.width						= "1px";
	oButton.style.height					= "1px";
	oButton.disabled						= false;
	oButton.title							= tooltip;
	oIcon									= document.createElement("IMG");
	oIcon.src								= oButton._IconUrl;
	oButton._Icon							= oIcon;
	oIcon._Holder							= oButton;
	oButton.appendChild(oIcon);
	if (oButton._BorderStyle=="standard") {
		Button_SetStyle_3dUp(oButton);
	} else {
		Button_SetStyle_None(oButton);
	}
	oButton.getName							= Button_GetName;
	oButton.disable							= Button_Disable;
	oButton.enable							= Button_Enable;
	oButton.getType							= Button_GetType;
	oButton.setDown							= Button_SetDown;
	oButton.isSetDown						= Button_IsSetDown;
	oButton.releaseDown						= Button_ReleaseDown;
	oButton.expand							= new Function("return false");
	oButton.getGroup						= Button_GetGroup;
	oButton.onmousedown						= Button_OnMouseDown;
	oButton.onmouseup						= Button_OnMouseUp;
	oButton.onmouseover						= Button_OnMouseOver;
	oButton.onmouseout						= Button_OnMouseOut;
	oButton.onselectstart					= new Function("return false");
	oButton.onselect						= new Function("return false");
	oButton.oncontextmenu					= new Function("return false");
	return oButton;
}
function Button_GetGroup() {
	return this._Group;
}
function Button_Disable() {
	this._Enabled = false;
	Button_SetStyle_Disabled(this);
	this.disabled = true;
	this._Icon.src=this._DisabledIconUrl;
}
function Button_Enable() {
	this._Enabled = true;
	this.disabled = false;

	if (this._BorderStyle=="standard") {
		Button_SetStyle_3dUp(this);
	} else {
		Button_SetStyle_None(this);
	}
	this._Icon.src=this._IconUrl;
}
function Button_GetName() {
	return this._Name;
}
function Button_GetType() {
	return this._Type;
}
function Button_SetDown() {
	this._SetDown = true;
	Button_SetStyle_3dSetDown(this);
}
function Button_IsSetDown() {
	return this._SetDown;
}
function Button_ReleaseDown() {
	this._SetDown = false;
	Button_SetStyle_None(this);
}
function Button_OnMouseOver() {
	var isInBounds = (event.srcElement.tagName=="IMG"&&event.srcElement._Holder!=null&&oCurrentDownButton!=null&&oCurrentDownButton._Name==event.srcElement._Holder._Name&&event.offsetX>=0&&event.offsetX<=event.srcElement.width&&event.offsetY>=0&&event.offsetY<=event.srcElement.height);
	if (this._Enabled) {// && event.srcElement.tagName=="IMG"
		if (this._SetDown) {
			Button_SetStyle_3dDown(this);
		} else {
			if (isInBounds) {
				if (this._DoSetDown==1) {
					Button_SetStyle_3dDown(this);
				} else if (this._DoSetDown==0) {

				} else {
					if (this._BorderStyle=="flat") {
						Button_SetStyle_3dUp(this);
					} else if (this._BorderStyle=="xp") {
						Button_SetStyle_XP(this);
					}
				}
			} else {
				if (this._BorderStyle=="flat") {
					Button_SetStyle_3dUp(this);
				} else if (this._BorderStyle=="xp") {
					Button_SetStyle_XP(this);
				}
			}
		}
	}
}

function Button_OnMouseOut() {																																																																																																																	                           
	if (this._Enabled) {
		if (this._SetDown) {
				Button_SetStyle_3dSetDown(this);
		} else {
			if (this._BorderStyle=="standard") {
				Button_SetStyle_3dUp(this);
			} else {
				Button_SetStyle_None(this);
			}
		}
	}					   
}

function Button_OnMouseDown() {
	this._InClick=true;
	oCurrentDownButton=this;
	if (this._Enabled && event.button==1 && event.srcElement.tagName=="IMG") {
		if (this._SetDownOnClick) {
			if (!this._SetDown) {
				this._DoSetDown=1;
				Button_SetStyle_3dSetDown(this);
			} else {
				this._DoSetDown=0;
				Button_SetStyle_3dDown(this);
			}
		} else {
			Button_SetStyle_3dDown(this);
		}
	}
}
function Button_OnMouseUp() {
	var isInBounds = (event.srcElement.tagName=="IMG"&&event.srcElement._Holder!=null&&oCurrentDownButton!=null&&oCurrentDownButton._Name==event.srcElement._Holder._Name&&event.offsetX>=0&&event.offsetX<=event.srcElement.width&&event.offsetY>=0&&event.offsetY<=event.srcElement.height);
	if (this._Enabled && event.button==1 && event.srcElement.tagName=="IMG") {
		if (isInBounds) {
			if (this._DoSetDown==1) {
				if (this._OnClick()) {
					this._SetDown=true;
				}
			} else if (this._DoSetDown==0) {
				if (this._OnClick()) {
					this._SetDown=false;
					if (this._BorderStyle=="flat") {
						Button_SetStyle_3dUp(this);
					} else if (this._BorderStyle=="xp") {
						Button_SetStyle_XP(this);
					}
				}
			} else {
				this._OnClick();
				if (this._BorderStyle=="flat") {
					Button_SetStyle_3dUp(this);
				} else if (this._BorderStyle=="xp") {
					Button_SetStyle_XP(this);
				}
			}
		} else {
			if (this._DoSetDown!=0) {
				Button_SetStyle_None(this);
			}
		}
		this._DoSetDown=-1;
	} else if (this._DoSetDown==1) {
		Button_SetStyle_None(this);
	}
	this._InClick=false;
	oCurrentDownButton=null;
}
function Button_SetStyle_Disabled(obj) {
	obj.style.border						= "solid 1px #E7E2CD";
	obj._Icon.style.border					= "solid 1px #E7E2CD";
	obj.style.backgroundColor				= "#E7E2CD";
}
function Button_SetStyle_None(obj) {
	obj.style.border						= "solid 1px #E7E2CD";
	obj._Icon.style.border					= "solid 1px #E7E2CD";
	obj.style.backgroundColor				= "#E7E2CD";
}
function Button_SetStyle_3dUp(obj) {
	obj.style.border						= "solid 1px #E7E2CD";
	obj.style.borderTop						= "solid 1px buttonhighlight";
	obj.style.borderRight					= "solid 1px buttonshadow";
	obj.style.borderBottom					= "solid 1px buttonshadow";
	obj.style.borderLeft					= "solid 1px buttonhighlight";

	obj._Icon.style.border					= "solid 1px #E7E2CD";
	obj.style.backgroundColor				= "#E7E2CD";
}
function Button_SetStyle_3dDown(obj) {
	obj.style.border						= "solid 1px #E7E2CD";
	obj.style.borderTop						= "solid 1px buttonshadow";
	obj.style.borderRight					= "solid 1px buttonhighlight";
	obj.style.borderBottom					= "solid 1px buttonhighlight";
	obj.style.borderLeft					= "solid 1px buttonshadow";

	obj._Icon.style.borderTop				= "solid 2px #E7E2CD";
	obj._Icon.style.borderLeft				= "solid 2px #E7E2CD";
	obj._Icon.style.borderRight				= "solid 0px #E7E2CD";
	obj._Icon.style.borderBottom			= "solid 0px #E7E2CD";

	obj.style.backgroundColor				= "#E7E2CD";
}
function Button_SetStyle_3dSetDown(obj) {
	obj.style.border						= "solid 1px #E7E2CD";
	obj.style.borderTop						= "solid 1px buttonshadow";
	obj.style.borderRight					= "solid 1px buttonhighlight";
	obj.style.borderBottom					= "solid 1px buttonhighlight";
	obj.style.borderLeft					= "solid 1px buttonshadow";

	obj._Icon.style.borderTop				= "solid 2px threedlightshadow";
	obj._Icon.style.borderLeft				= "solid 2px threedlightshadow";
	obj._Icon.style.borderRight				= "solid 0px threedlightshadow";
	obj._Icon.style.borderBottom			= "solid 0px threedlightshadow";

	obj.style.backgroundColor				= "threedlightshadow";//"#E7E2CD";
}
function Button_SetStyle_XP(obj) {
	obj.style.border						= "solid 1px #003399";
	obj._Icon.style.border					= "solid 1px #CCCCFF";
	
	obj.style.backgroundColor				= "#CCCCFF";
}
function Dropdown(name,onChangeHandler,items,enabled) { //items:text,value,name,bgcolour
	var oSpan								= document.createElement("SPAN");
	var oSelect 							= document.createElement("<SELECT ALIGN='top'>");
	oSelect._Enabled						= (enabled==true||enabled==null?true:false);
	oSelect._Type							= "drp";
	oSelect._Options						= (items?items:new Array());
	oSelect._OnChangeFunct			= (onChangeHandler?onChangeHandler:new Function("return false"));
	oSelect._Name							= (name?name:"");
	oSelect._Span							= oSpan;
	oSelect.id								= oSelect._Name;
	oSelect.disabled						= !oSelect._Enabled;
	oSelect.style.fontSize					= "8pt";
	oSelect.style.top						= "1px";
	oSelect.style.position					= "relative";
	oSelect.disable							= Dropdown_Disable;
	oSelect.enable							= Dropdown_Enable;
	oSelect.getType							= Dropdown_GetType;
	oSelect.getName							= Dropdown_GetName;
	oSelect.setSelected						= Dropdown_SetSelected;
	oSelect.expand							= Dropdown_Expand;
	oSelect.onchange						= Dropdown_ChangeHandler;
	oSelect.onselectstart					= new Function("return false");
	oSelect.onselect						= new Function("return false");
	oSelect.oncontextmenu					= new Function("return false");
	oSelect.onclick							= new Function("window.event.cancelBubble=true;");
	return oSelect;
}
function Dropdown_SetSelected(name) {
	if (this.options.item(name)) {
		this.options.item(name).selected=true;
	}
}

function Dropdown_ChangeHandler() {
	if (typeof(this._OnChangeFunct)=="function") {
		var s = this.options[this.selectedIndex].value;
		if (s=="") {
			s = this.options[this.selectedIndex].text;
		}
		this._OnChangeFunct(s);
	}
	RTEditor_OnSelectionChange(EditorCanvas_GetIFrame().document.selection);
}
function Dropdown_Disable() {
	this._Enabled = false;
	this.disabled = true;
}
function Dropdown_Enable() {
	this._Enabled = true;
	this.disabled = false;
}
function Dropdown_GetType() {
	return this._Type;
}
function Dropdown_GetName() {
	return this._Name;
}
function Dropdown_Expand() {
	if (this._Options.length>0) {
		for (var n=0;n<this._Options.length;n++) {
			var oOption						= document.createElement("OPTION");	//text,value,name,bgcolour
			var text						= (this._Options[n][0]?this._Options[n][0]:this._Options[n]);
			var value						= (this._Options[n][1]?this._Options[n][1]:text);
			var id							= (this._Options[n][2]?this._Options[n][2]:text);
			var bgColour					= (this._Options[n][3]?this._Options[n][3]:"");

			oOption.text					= text;
			oOption.value					= value;
			oOption.id						= id;
			oOption.style.backgroundColor	= bgColour;
			this.add(oOption);
		}
	}
}
function Separator(name,iconUrl) {
	var oSeparator							= document.createElement("SPAN");
	oSeparator._Type						= "sep";
	oSeparator._Icon						= (iconUrl?iconUrl:"");
	oSeparator._Name						= (name?name:"");
	oSeparator.style.width					= "1px";
	oSeparator.style.height					= "1px";
	oSeparator.innerHTML					= "<IMG SRC='"+oSeparator._Icon+"'>";
	oSeparator.getType						= Separator_GetType;
	oSeparator.getName						= Separator_GetName;
	oSeparator.expand						= new Function("return false");
	return oSeparator;
}
function Separator_GetType() {
	return this._Type;
}
function Separator_GetName() {
	return this._Name;
}
var defaultHtml = "<HTML><HEAD><STYLE> P { margin:0px;padding:0px; }</STYLE><TITLE>Untitled</TITLE><META NAME='keywords' CONTENT=''><META NAME='description' CONTENT=''></HEAD><BODY></BODY></HTML>";
function EditorCanvas(parent,iframe,onSelChangeHandler,width,height,mode,content,enabled) {
	if (parent) {
		content								= (content&&content!=""&&content!="undefined"?content:defaultHtml);
		width								= (width?(width.indexOf("%")>-1?parseInt(width)+"%":parseInt(width)):"100%");
		height								= (height?(height.indexOf("%")>-1?parseInt(height)+"%":parseInt(height)):"100%");

		var name							= iframe.id+"";
		sRTEditorEditorCanvas				= name;

		var oCanvas							= iframe;
		oCanvas.id							= name+"";
		oCanvas.style.height				= height;
		oCanvas.style.width					= width;
		parent.appendChild(oCanvas);
		oCanvas								= frames(name+"");

		oCanvas.document.designMode			= "On";
		oCanvas.document.open("text/html","replace");
		oCanvas.document.write(content);
		oCanvas.document.close();
		oCanvas._Width						= width;
		oCanvas._Height						= height
		oCanvas._Mode						= (mode=="document"?"document":"fragment");
		oCanvas._OnSelChange				= (onSelChangeHandler?onSelChangeHandler:new Function("return false"));
		oCanvas._Content					= content;
		oCanvas._Enabled					= (enabled==true||enabled==null?true:false);
		oCanvas._ViewMode					= "editor";
		oCanvas.width						= oCanvas._Width;
		oCanvas.height						= oCanvas._Height;
		oCanvas.document.body.style.borderStyle	= "none";
		oCanvas.document.body.style.position	= "absolute";
		if (navigator.userAgent.indexOf("MSIE 6.")>-1) {
			oCanvas.document.onselectionchange	= EditorCanvas_OnSelectionChange;
			//oCanvas.document.body.onkeydown		= EditorCanvas_OnKeyDown;  //rg
		} else if (navigator.userAgent.indexOf("MSIE 5.5")>-1) {
			oCanvas.document.onselectionchange	= EditorCanvas_OnSelectionChange;
			//oCanvas.document.body.onkeydown		= EditorCanvas_OnKeyDown;  //rg
		} else if (navigator.userAgent.indexOf("MSIE 5.")>-1) {
			oCanvas.document.body.onselect		= EditorCanvas_OnSelectionChange;
			//moved onkeydown below
		}
		oCanvas.document.body._Flag				= 1;
		oCanvas.document.body.ondblclick			= EditorCanvas_OnDblClick;
		oCanvas.document.body.onkeydown		= EditorCanvas_OnKeyDown;
  	    oCanvas.document.execCommand("2D-Position",false,true);
		EditorCanvas_ConnectMethods(oCanvas);
		oCanvas.focus();
		return oCanvas;
	}
	return null;
}
function EditorCanvas_ConnectMethods(obj) {
	var oEditorCanvas = obj;
	if (oEditorCanvas==null) {
		oEditorCanvas=EditorCanvas_GetIFrame();
	}
	if (oEditorCanvas) {
		oEditorCanvas.getWidth						= EditorCanvas_GetWidth;
		oEditorCanvas.setWidth		 				= EditorCanvas_SetWidth;
		oEditorCanvas.getHeight						= EditorCanvas_GetHeight;
		oEditorCanvas.setHeight		 				= EditorCanvas_SetHeight;
		oEditorCanvas.enable						= EditorCanvas_Enable;
		oEditorCanvas.disable						= EditorCanvas_Disable;
		oEditorCanvas.hasSelection 					= EditorCanvas_HasSelection;
		oEditorCanvas.getSelectedText 				= EditorCanvas_GetSelectedText;
		oEditorCanvas.setSelectedText 				= EditorCanvas_SetSelectedText;
		oEditorCanvas.getSelectedHtml 				= EditorCanvas_GetSelectedHtml;
		oEditorCanvas.setSelectedHtml 				= EditorCanvas_SetSelectedHtml;
		oEditorCanvas.getSelectedObject 			= EditorCanvas_GetSelectedObject;
		oEditorCanvas.getSelectionBold 				= EditorCanvas_GetSelectionBold;
		oEditorCanvas.setSelectionBold 				= EditorCanvas_SetSelectionBold;
		oEditorCanvas.getSelectionItalic 			= EditorCanvas_GetSelectionItalic;
		oEditorCanvas.setSelectionItalic 			= EditorCanvas_SetSelectionItalic;
		oEditorCanvas.getSelectionUnderline 		= EditorCanvas_GetSelectionUnderline;
		oEditorCanvas.setSelectionUnderline 		= EditorCanvas_SetSelectionUnderline;
		oEditorCanvas.getSelectionLink 				= EditorCanvas_GetSelectionLink;
		oEditorCanvas.setSelectionLink 				= EditorCanvas_SetSelectionLink;
		oEditorCanvas.getSelectionFontFace 			= EditorCanvas_GetSelectionFontFace;
		oEditorCanvas.setSelectionFontFace 			= EditorCanvas_SetSelectionFontFace;
		oEditorCanvas.getSelectionFontSize 			= EditorCanvas_GetSelectionFontSize;
		oEditorCanvas.setSelectionFontSize 			= EditorCanvas_SetSelectionFontSize;
		oEditorCanvas.getSelectionFontColour 		= EditorCanvas_GetSelectionFontColour;
		oEditorCanvas.setSelectionFontColour 		= EditorCanvas_SetSelectionFontColour;
		oEditorCanvas.getSelectionParagraph 		= EditorCanvas_GetSelectionParagraph;
		oEditorCanvas.setSelectionParagraph 		= EditorCanvas_SetSelectionParagraph;
		oEditorCanvas.getSelectionNumberedList 		= EditorCanvas_GetSelectionNumberedList;
		oEditorCanvas.setSelectionNumberedList 		= EditorCanvas_SetSelectionNumberedList;
		oEditorCanvas.getSelectionBulletedList 		= EditorCanvas_GetSelectionBulletedList;
		oEditorCanvas.setSelectionBulletedList 		= EditorCanvas_SetSelectionBulletedList;
		oEditorCanvas.getSelectionJustifyLeft 		= EditorCanvas_GetSelectionJustifyLeft;
		oEditorCanvas.setSelectionJustifyLeft 		= EditorCanvas_SetSelectionJustifyLeft;
		oEditorCanvas.getSelectionJustifyCentre 	= EditorCanvas_GetSelectionJustifyCentre;
		oEditorCanvas.setSelectionJustifyCentre 	= EditorCanvas_SetSelectionJustifyCentre;
		oEditorCanvas.getSelectionJustifyRight 		= EditorCanvas_GetSelectionJustifyRight;
		oEditorCanvas.setSelectionJustifyRight 		= EditorCanvas_SetSelectionJustifyRight;
		oEditorCanvas.getDocumentTitle 				= EditorCanvas_GetDocumentTitle;
		oEditorCanvas.setDocumentTitle 				= EditorCanvas_SetDocumentTitle;
		oEditorCanvas.getDocumentKeywords 			= EditorCanvas_GetDocumentKeywords;
		oEditorCanvas.setDocumentKeywords 			= EditorCanvas_SetDocumentKeywords;
		oEditorCanvas.getDocumentDescription 		= EditorCanvas_GetDocumentDescription;
		oEditorCanvas.setDocumentDescription 		= EditorCanvas_SetDocumentDescription;
		oEditorCanvas.getDocumentLinkColour 		= EditorCanvas_GetDocumentLinkColour;
		oEditorCanvas.setDocumentLinkColour 		= EditorCanvas_SetDocumentLinkColour;
		oEditorCanvas.getDocumentActiveLinkColour 	= EditorCanvas_GetDocumentActiveLinkColour;
		oEditorCanvas.setDocumentActiveLinkColour 	= EditorCanvas_SetDocumentActiveLinkColour;
		oEditorCanvas.getDocumentVisitedLinkColour	= EditorCanvas_GetDocumentVisitedLinkColour;
		oEditorCanvas.setDocumentVisitedLinkColour	= EditorCanvas_SetDocumentVisitedLinkColour;
		oEditorCanvas.getDocumentBackgroundColour 	= EditorCanvas_GetDocumentBackgroundColour;
		oEditorCanvas.setDocumentBackgroundColour 	= EditorCanvas_SetDocumentBackgroundColour;
		oEditorCanvas.getDocumentBackgroundImage 	= EditorCanvas_GetDocumentBackgroundImage;
		oEditorCanvas.setDocumentBackgroundImage 	= EditorCanvas_SetDocumentBackgroundImage;
		oEditorCanvas.getDocumentFontFace		 	= EditorCanvas_GetDocumentFontFace;
		oEditorCanvas.setDocumentFontFace		 	= EditorCanvas_SetDocumentFontFace;
		oEditorCanvas.getDocumentFontSize 			= EditorCanvas_GetDocumentFontSize;
		oEditorCanvas.setDocumentFontSize		 	= EditorCanvas_SetDocumentFontSize;
		oEditorCanvas.getDocumentFontColour 		= EditorCanvas_GetDocumentFontColour;
		oEditorCanvas.setDocumentFontColour 		= EditorCanvas_SetDocumentFontColour;
		oEditorCanvas.cut 							= EditorCanvas_Cut;
		oEditorCanvas.copy 							= EditorCanvas_Copy;
		oEditorCanvas.paste 						= EditorCanvas_Paste;
		oEditorCanvas.indent 						= EditorCanvas_Indent;
		oEditorCanvas.outdent 						= EditorCanvas_Outdent;
		oEditorCanvas.insertSpecialCharacter		= EditorCanvas_InsertSpecialCharacter;
		oEditorCanvas.insertText 					= EditorCanvas_InsertText;
		oEditorCanvas.insertHR						= EditorCanvas_InsertHR;
		oEditorCanvas.insertImage					= EditorCanvas_InsertImage;
		oEditorCanvas.insertTable					= EditorCanvas_InsertTable;
		oEditorCanvas.insertHtml 					= EditorCanvas_InsertHtml;
		oEditorCanvas.toggleViewMode				= EditorCanvas_ToggleViewMode;
		oEditorCanvas.getViewMode					= EditorCanvas_GetViewMode;
		oEditorCanvas.documentProperties			= EditorCanvas_DocumentProperties;
		oEditorCanvas.objectProperties				= EditorCanvas_ObjectProperties;
	}
}
function EditorCanvas_SaveExpandos() {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	var aAttribs = new Array();
	if (oEditorCanvas) {
		aAttribs[aAttribs.length]					= oEditorCanvas._Width;
		aAttribs[aAttribs.length]					= oEditorCanvas._Height;
		aAttribs[aAttribs.length]					= oEditorCanvas._Mode;
		aAttribs[aAttribs.length]					= oEditorCanvas._OnSelChange;
		aAttribs[aAttribs.length]					= oEditorCanvas._Content;
		aAttribs[aAttribs.length]					= oEditorCanvas._Enabled;
		aAttribs[aAttribs.length]					= oEditorCanvas._LinkColour;
		aAttribs[aAttribs.length]					= oEditorCanvas._VLinkColour;
		aAttribs[aAttribs.length]					= oEditorCanvas._ALinkColour;
		aAttribs[aAttribs.length]					= oEditorCanvas._BackgroundColour;
		aAttribs[aAttribs.length]					= oEditorCanvas._BackgroundImage;
		aAttribs[aAttribs.length]					= oEditorCanvas._FontFace;
		aAttribs[aAttribs.length]					= oEditorCanvas._FontSize;
		aAttribs[aAttribs.length]					= oEditorCanvas._FontColour;
		aAttribs[aAttribs.length]					= oEditorCanvas._ViewMode;
	}
	return aAttribs;
}
function EditorCanvas_RestoreExpandos(aAttribs) {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	for (var n=0;n<aAttribs.length;n++) {
		oEditorCanvas._Width = aAttribs[0];
		oEditorCanvas._Height = aAttribs[1];
		oEditorCanvas._Mode = aAttribs[2];
		oEditorCanvas._OnSelChange = aAttribs[3];
		oEditorCanvas._Content = aAttribs[4];
		oEditorCanvas._Enabled = aAttribs[5];
		oEditorCanvas._LinkColour = aAttribs[6];
		oEditorCanvas._VLinkColour = aAttribs[7];
		oEditorCanvas._ALinkColour = aAttribs[8];
		oEditorCanvas._BackgroundColour = aAttribs[9];
		oEditorCanvas._BackgroundImage = aAttribs[10];
		oEditorCanvas._FontFace = aAttribs[11];
		oEditorCanvas._FontSize = aAttribs[12];
		oEditorCanvas._FontColour = aAttribs[13];
		oEditorCanvas._ViewMode = aAttribs[14];
	}
}
function EditorCanvas_GetIFrame() {
	return (oRichTextEditor?oRichTextEditor._EditorCanvas:null);
}
function EditorCanvas_GetRange() {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas) {
		var oRange = oEditorCanvas.document.selection.createRange();
		if (oRange.parentElement!=null) { //if is a textrange, check that it is in the right document
			var oParent = oRange.parentElement();
			while (oParent!=null && oParent.tagName!="BODY") {
				oParent = oParent.parentElement;
			}
			return (oParent._Flag==1?oRange:null);
		} else {//if its a controlRange, just return it
			return oRange;
		}
	}
	
	return null;
}
function EditorCanvas_SelectionType() {
	if (EditorCanvas_GetIFrame()) {
		EditorCanvas_GetIFrame().focus();
		return EditorCanvas_GetIFrame().document.selection.type;
	}
	return null;
}

function EditorCanvas_FindMetaTag(sTag) {
	var oHead = EditorCanvas_FindHeadTag();
	if (oHead!=null) {
		for (var n=0;n<oHead.childNodes.length;n++)
			if (oHead.childNodes[n].tagName=="META"&&String(oHead.childNodes[n].name).toLowerCase()==sTag)
				return oHead.childNodes[n];
	}
	return null;
}
function EditorCanvas_FindHeadTag() {
	for (var n=0;n<EditorCanvas_GetIFrame().document.documentElement.childNodes.length;n++) {
		if (EditorCanvas_GetIFrame().document.documentElement.childNodes[n].tagName=="HEAD") {
			return EditorCanvas_GetIFrame().document.documentElement.childNodes[n];
		}
	}
	return null;
}
function EditorCanvas_GetWidth () {
	return EditorCanvas_GetIFrame()._Width;
}
function EditorCanvas_SetWidth(value) {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	value = Clean_Length(value);
	oEditorCanvas._Width = value;
	if (oEditorCanvas) {
		oEditorCanvas.style.width = value;
	}
}

function EditorCanvas_GetHeight() {
	return EditorCanvas_GetIFrame()._Height;
}
function EditorCanvas_SetHeight(value) {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	value = Clean_Length(value);
	oEditorCanvas._Height = value;
	if (oEditorCanvas) {
		oEditorCanvas.style.height = value;
	}
}

function EditorCanvas_GetSelectedText() {	
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.text;
	}
	return "";
}
function EditorCanvas_SetSelectedText(value) {	
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas) {
		oEditorCanvas.focus();
		var oTextRange = EditorCanvas_GetRange();
		oTextRange.text = value;
	}
}

function EditorCanvas_GetSelectedHtml() {		
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.htmlText;
	}
	return "";
}
function EditorCanvas_SetSelectedHtml(value) {	
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas) {
		oEditorCanvas.focus();
		var oTextRange = EditorCanvas_GetRange();
		oTextRange.pasteHTML(value);
	}
}

function EditorCanvas_GetSelectedObject() {		
	if (EditorCanvas_GetIFrame() && (EditorCanvas_SelectionType()=="Control")) {
		var oControlRange = EditorCanvas_GetRange();
		if (oControlRange.length>0) {
			return oControlRange.item(0);
		}
	}
	return "";
}
function EditorCanvas_GetSelectionBold() {	
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.queryCommandValue("Bold");
	}
	return "";
}
function EditorCanvas_SetSelectionBold() {	
	EditorCanvas_GetIFrame().focus();
	var oTextRange = EditorCanvas_GetRange();

	if (EditorCanvas_SelectionType()!="None" && oTextRange) {
		return oTextRange.execCommand("Bold");
	} else {
		return EditorCanvas_GetIFrame().document.execCommand("Bold");
	}
	return false;
}

function EditorCanvas_GetSelectionItalic() {	
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.queryCommandValue("Italic");
	}
	return "";
}
function EditorCanvas_SetSelectionItalic() {	
	EditorCanvas_GetIFrame().focus();
	var oTextRange = EditorCanvas_GetRange();

	if (EditorCanvas_SelectionType()!="None" && oTextRange) {
		return oTextRange.execCommand("Italic");
	} else {
		return EditorCanvas_GetIFrame().document.execCommand("Italic");
	}
	return false;
}

function EditorCanvas_GetSelectionUnderline() {	
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.queryCommandValue("Underline");
	}
	return "";
}
function EditorCanvas_SetSelectionUnderline() {	
	EditorCanvas_GetIFrame().focus();
	var oTextRange = EditorCanvas_GetRange();

	if (EditorCanvas_SelectionType()!="None" && oTextRange) {
		return oTextRange.execCommand("Underline");
	} else {
		return EditorCanvas_GetIFrame().document.execCommand("Underline");
	}
	return false;
}

function EditorCanvas_GetSelectionLink() {		
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		var parent = oTextRange.parentElement();
		while (parent && parent.tagName!="BODY") {
			if (parent.tagName=="A") {
				return parent.href;
			}
			parent = parent.parentElement;
		}
		return "";
	}
	return "";
}
	function Replace(p, find, replace_str){
		var i;

		while (i != -1){
			i = p.indexOf(find, i+1);
			if (i != -1){
				p = p.substr(0, i) + replace_str + p.substr(i + find.length, p.length);
			}
		}
		return p;
	}
	
function EditorCanvas_SetSelectionLink(value) {	
	window.showModalDialog("dummy_window.html", null, "dialogHeight:0px;dialogWidth:0px;dialogLeft:1px;dialogTop:1px;edge:none;help:no;resizable:no;scroll:no;status:no;")+"";
	var oEditorCanvas = EditorCanvas_GetIFrame();
	var oRange = EditorCanvas_GetRange();
	var param;
	var RangeType;
	
	if (oRange){
		if (EditorCanvas_SelectionType() == "Control"){
				//its a control
				if (oRange.length>0) {
					var oRange = oRange.item(0);
					if (oRange.tagName=="IMG") {
						RangeType="Control";
						if (oRange.parentNode.outerHTML.indexOf("<A") !=-1){
							oRange=oRange.parentNode;
							param=oRange.outerHTML;
						}else{
							param = oRange.outerHTML;
						}
					}
				}
			}else{
				RangeType="Text";
				param = oRange.htmlText; 
			}
			var sImg = window.showModalDialog("dialog_link.aspx", param  , "dialogHeight:250px;dialogWidth:400px;center:yes;edge:raised;help:no;resizable:no;scroll:no;status:no;")+"";

			if (sImg!="" && sImg!="undefined") {
				if (RangeType=="Text")
					oRange.pasteHTML(sImg);
				else
					oRange.outerHTML=sImg;
				}
			return true;
	} else {
		alert("Error: No text selected. Please select the text to become the link's label.");
	}
	return false;//return false if unsuccessful
}

function EditorCanvas_GetSelectionFontFace() {	
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.queryCommandValue("FontName");
	}
	return "";
}

function EditorCanvas_SetSelectionFontFace(value) {
	var oTextRange = EditorCanvas_GetRange();

	if (EditorCanvas_SelectionType()!="None" && (value!="") && oTextRange) {
		return oTextRange.execCommand("FontName",false,value);
	} else {
		return EditorCanvas_GetIFrame().document.execCommand("FontName",false,value);
	}
	return false;
}
function EditorCanvas_GetSelectionFontSize() {	
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.queryCommandValue("FontSize");
	}
	return "";
}
function EditorCanvas_SetSelectionFontSize(value) {
	var oTextRange = EditorCanvas_GetRange();

	if (EditorCanvas_SelectionType()!="None" && (value!="") && oTextRange) {
		return oTextRange.execCommand("FontSize",false,value);
	} else {
		return EditorCanvas_GetIFrame().document.execCommand("FontSize",false,value);
	}
	return false;
}

function EditorCanvas_GetSelectionFontColour() {
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.queryCommandValue("ForeColor");
	}
	return "";
}
function EditorCanvas_SetSelectionFontColour(value) {
	var oTextRange = EditorCanvas_GetRange();

	if (EditorCanvas_SelectionType()!="None" && (value!="") && oTextRange) {
		return oTextRange.execCommand("ForeColor",false,value);
	} else {
		return EditorCanvas_GetIFrame().document.execCommand("ForeColor",false,value);
	}
	return false;
}
function EditorCanvas_GetSelectionParagraph() {		//"Heading 1"|..|"Heading 6"|"Normal"
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.queryCommandValue("FormatBlock");
	}
	return "";
}
//rg
function EditorCanvas_SetSelectionParagraph(value) {	//"Heading 1"|..|"Heading 6"|"Normal"
	var oTextRange = EditorCanvas_GetRange();
	if (EditorCanvas_SelectionType()!="None" && value!="" && oTextRange) {
		return oTextRange.execCommand("FormatBlock",false,value);
	}else{
		return oTextRange.execCommand("FormatBlock",false,value);
	}
	return false;
}

function EditorCanvas_GetSelectionNumberedList() {
	var oTextRange = EditorCanvas_GetRange();
	return (oTextRange && oTextRange.queryCommandValue("InsertOrderedList"));
}
function EditorCanvas_SetSelectionNumberedList() {
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.execCommand("InsertOrderedList");
	}
	return false;
}
function EditorCanvas_GetSelectionBulletedList() {
	var oTextRange = EditorCanvas_GetRange();
	return (oTextRange && oTextRange.queryCommandValue("InsertUnorderedList"));
}
function EditorCanvas_SetSelectionBulletedList() {
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.execCommand("InsertUnorderedList");
	}
	return false;
}
function EditorCanvas_GetSelectionJustifyLeft() {
	var oTextRange = EditorCanvas_GetRange();
	return (oTextRange && oTextRange.queryCommandValue("JustifyLeft"))
}
function EditorCanvas_SetSelectionJustifyLeft() {
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.execCommand("JustifyLeft");
	}
	return false;
}
function EditorCanvas_GetSelectionJustifyCentre() {
	var oTextRange = EditorCanvas_GetRange();
	return (oTextRange && oTextRange.queryCommandValue("JustifyCenter"))
}
function EditorCanvas_SetSelectionJustifyCentre() {
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.execCommand("JustifyCenter");
	} 
	return false;
}
function EditorCanvas_GetSelectionJustifyRight() {
	var oTextRange = EditorCanvas_GetRange();
	return (oTextRange && oTextRange.queryCommandValue("JustifyRight"))
}
function EditorCanvas_SetSelectionJustifyRight() {
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.execCommand("JustifyRight");
	}
	return false;
}
function EditorCanvas_GetDocumentTitle() {		
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas && oEditorCanvas.document.title+""!="undefined") {
		return oEditorCanvas.document.title;
	}
	return "";
}
function EditorCanvas_SetDocumentTitle(value) {	
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas) {
		oEditorCanvas.document.title = value;
		return true;
	}
	return false;
}

function EditorCanvas_GetDocumentKeywords() {	
	var metaKeywords = EditorCanvas_FindMetaTag("keywords");
	if (metaKeywords!=null) {
		return metaKeywords.content;
	}
	return "";
}
function EditorCanvas_SetDocumentKeywords(value) {
	var metaKeywords = EditorCanvas_FindMetaTag("keywords");
	if (metaKeywords!=null) {
		metaKeywords.content = value;
		return true;
	} else {
	}
	return false;
}

function EditorCanvas_GetDocumentDescription() {	
	var metaDescription = EditorCanvas_FindMetaTag("description");
	if (metaDescription!=null) {
		return metaDescription.content;
	}
	return "";
}
function EditorCanvas_SetDocumentDescription(value) {
	var metaDescription = EditorCanvas_FindMetaTag("description");
	if (metaDescription!=null) {
		metaDescription.content = value;
		return true;
	} else {
	}
	return false;
}

function EditorCanvas_GetDocumentLinkColour() {	
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas && oEditorCanvas.document.body.link+""!="undefined") {
		return oEditorCanvas.document.body.link;
	}
	return "";
}
function EditorCanvas_SetDocumentLinkColour(value) {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas) {
		oEditorCanvas.document.body.link = value;
		return true;
	}
	return false;
}

function EditorCanvas_GetDocumentActiveLinkColour() {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas && oEditorCanvas.document.body.aLink+""!="undefined") {
		return oEditorCanvas.document.body.aLink;
	}
	return "";
}
function EditorCanvas_SetDocumentActiveLinkColour(value) {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas) {
		oEditorCanvas.document.body.aLink = value;
		return true;
	}
	return false;
}

function EditorCanvas_GetDocumentVisitedLinkColour() {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas && oEditorCanvas.document.body.vLink+""!="undefined") {
		return oEditorCanvas.document.body.vLink;
	}
	return "";
}
function EditorCanvas_SetDocumentVisitedLinkColour(value) {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas) {
		oEditorCanvas.document.body.vLink = value;
		return true;
	}
	return false;
}

function EditorCanvas_GetDocumentBackgroundColour() {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas && oEditorCanvas.document.body.bgColor+""!="undefined") {
		return oEditorCanvas.document.body.bgColor;
	}
	return "";
}
function EditorCanvas_SetDocumentBackgroundColour(value) {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas) {
		oEditorCanvas.document.body.bgColor = value;
		return true;
	}
	return false;
}

function EditorCanvas_GetDocumentBackgroundImage() {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas && oEditorCanvas.document.body.background+""!="undefined") {
		return oEditorCanvas.document.body.background;
	}
	return "";
}
function EditorCanvas_SetDocumentBackgroundImage(value) {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas) {
		oEditorCanvas.document.body.background = value;
		return true;
	}
	return false;
}
function EditorCanvas_GetDocumentFontFace() {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas && oEditorCanvas.document.body.style.fontFamily+""!="undefined") {
		return oEditorCanvas.document.body.style.fontFamily;
	}
	return "";
}
function EditorCanvas_SetDocumentFontFace(value) {	
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas) {
		oEditorCanvas.document.body.style.fontFamily = value;
		return true;
	}
	return false;
}
function EditorCanvas_GetDocumentFontSize() {	
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas && oEditorCanvas.document.body.style.fontSize+""!="undefined") {
		return oEditorCanvas.document.body.style.fontSize;
	}
	return "";
}
function EditorCanvas_SetDocumentFontSize(value) {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas) {
		oEditorCanvas.document.body.style.fontSize = value;
		return true;
	}
	return false;
}
function EditorCanvas_GetDocumentFontColour() {	
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas && oEditorCanvas.document.body.style.color+""!="undefined") {
		return oEditorCanvas.document.body.style.color;
	}
	return "";
}
function EditorCanvas_SetDocumentFontColour(value) {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas) {
		oEditorCanvas.document.body.style.color = value;
		return true;
	}
	return false;
}

function EditorCanvas_HasSelection() {		
	return (EditorCanvas_SelectionType()!="None")
}



function EditorCanvas_New() {
	if(!confirm("Creating a new page will overwrite your existing home page.\n\nIs this what you want to do?")){
		return false;
	}
	oEditorCanvas						= EditorCanvas_GetIFrame();

	var aExpandos = EditorCanvas_SaveExpandos();
	oEditorCanvas.document.open("text/html","replace");
	oEditorCanvas.document.write(defaultHtml);
	oEditorCanvas.document.close();
	EditorCanvas_RestoreExpandos(aExpandos);
	oEditorCanvas.width						= oEditorCanvas._Width;
	oEditorCanvas.height						= oEditorCanvas._Height;
	oEditorCanvas.document.body.style.margin	= "0px";
	oEditorCanvas.document.body.style.borderStyle	= "none";
	oEditorCanvas.document.body.style.position	= "absolute";
	if (navigator.userAgent.indexOf("MSIE 6.")>-1) {
		oEditorCanvas.document.onselectionchange	= EditorCanvas_OnSelectionChange;
		//oEditorCanvas.document.body.onkeydown		= EditorCanvas_OnKeyDown;
	} else if (navigator.userAgent.indexOf("MSIE 5.5")>-1) {
		oEditorCanvas.document.onselectionchange	= EditorCanvas_OnSelectionChange;
		//oEditorCanvas.document.body.onkeydown		= EditorCanvas_OnKeyDown;
	} else if (navigator.userAgent.indexOf("MSIE 5.")>-1) {
		oEditorCanvas.document.body.onselect		= EditorCanvas_OnSelectionChange;
		oEditorCanvas.document.body.onkeydown		= EditorCanvas_OnKeyDown;
	}
	oEditorCanvas.document.body._Flag				= 1;
	oEditorCanvas.document.execCommand("2D-Position",false,true);
	EditorCanvas_ConnectMethods(oEditorCanvas);
	oEditorCanvas.focus();
	return true;
}

function EditorCanvas_Publish() {
alert("You cannot publish your page in demo mode.\nYou can see what your page would look like\nby using the 'preview' button.");
return true; // demo mode
	copyContent();
	document.forms[0].publish.value = 1;
	document.forms[0].submit();
	}
function EditorCanvas_Save() {
alert("You cannot save your page in demo mode.\nYou can see what your page would look like\nby using the 'preview' button.");
return true; // demo mode
	if (oRichTextEditor._SaveSubmitForm && oRichTextEditor._SaveSubmitForm.submit) {
		if (oRichTextEditor._SaveSubmitForm.onsubmit) 
			oRichTextEditor._SaveSubmitForm.onsubmit();
		document.all.content.value = oRTEditor.getHtmlContent();
		oRichTextEditor._SaveSubmitForm.submit();
	} else if (document.forms.length>0) {
		if (document.forms[0].onsubmit) {
				copyContent();
				document.all.content.value = oRTEditor.getHtmlContent();
				document.forms[0].onsubmit();}
	}
	return true;
}

function EditorCanvas_Preview() {
	PreviewPage();
	return true;
}
function EditorCanvas_Cut() {
	EditorCanvas_GetIFrame().focus();
	var oTextRange = EditorCanvas_GetIFrame().document.selection.createRange();
	if (oTextRange) {
		return oTextRange.execCommand("Cut");
	}
	return false;
}
function EditorCanvas_Copy() {
	EditorCanvas_GetIFrame().focus();
	var oTextRange = EditorCanvas_GetIFrame().document.selection.createRange();
	if (oTextRange) {
		return oTextRange.execCommand("Copy");
	}
	return false;
}
function EditorCanvas_Paste() {
	EditorCanvas_GetIFrame().focus();
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.execCommand("Paste");
	}
	return false;
}
function EditorCanvas_Indent() {
	EditorCanvas_GetIFrame().focus();
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.execCommand("Indent");
	}
	return false;
}
function EditorCanvas_Outdent() {
	EditorCanvas_GetIFrame().focus();
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange) {
		return oTextRange.execCommand("Outdent");
	}
	return false;
}
function EditorCanvas_InsertHR(left,top) {
	EditorCanvas_GetIFrame().focus();
	var oTextRange = EditorCanvas_GetRange();
	var oHR = document.createElement("HR");
	if (top!=null) {
		oHR.style.position="absolute";
		oHR.style.top=top;
	}
	if (oTextRange) {
		oTextRange.pasteHTML(oHR.outerHTML);
		return true;
	}
	return false;
}
function EditorCanvas_InsertImage(left,top) {
	var sDim = null;
	if (left!=null && top!=null) {
		sDim=left+"|"+top;
	}
	EditorCanvas_GetIFrame().focus();
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange){
		if (oTextRange.text==""){
				var sImg = window.showModalDialog("dialog_image.aspx", sDim, "dialogHeight:375px;dialogWidth:400px;center:yes;edge:raised;help:no;resizable:no;scroll:no;status:no;")+"";
				if (oTextRange && sImg!="" && sImg!="undefined") {
					oTextRange.pasteHTML(sImg);
					return true;
				}
		}else{
			alert("Sorry, you cannot insert an image in a selected item.\nTo view image properties press the Object Properties button.");
			return false;
		}
	}else{
			alert("No Text Range");
			}
	return false;
}

function EditorCanvas_InsertSpecialCharacter() {
	EditorCanvas_GetIFrame().focus();
	var oTextRange = EditorCanvas_GetRange();
	var sChar = window.showModalDialog("dialog_special.aspx", null, "dialogHeight:400px;dialogWidth:400px;center:yes;edge:raised;help:no;resizable:no;scroll:no;status:no;")+"";
	if (oTextRange && sChar!="" && sChar!="undefined") {
		oTextRange.text = sChar;
		return true;
	}
	return false;
}
function EditorCanvas_InsertTable(left,top) {
	var sDim = null;
	if (left!=null && top!=null) {
		sDim=left+"|"+top;
	}

	EditorCanvas_GetIFrame().focus();
	var oTextRange = EditorCanvas_GetRange();
	if (oTextRange.text==""){
		var sTable = window.showModalDialog("dialog_table.aspx", sDim, "dialogHeight:270px;dialogWidth:400px;center:yes;edge:raised;help:no;resizable:no;scroll:no;status:no;")+"";
		if (oTextRange && sTable!="" && sTable!="undefined") {
			oTextRange.pasteHTML(sTable);
			return true;
		}
	}else{
		alert("Sorry, you cannot insert a table in a selected item.\nTo view table properties press the Object Properties button.");
		return false;
	}
	return false;
}
function EditorCanvas_DocumentProperties() {
	var oIFrame = EditorCanvas_GetIFrame();
	var aDocProperties = new Array();
	var I_MARGIN=0, I_BACKGROUND_IMAGE=1, I_BACKGROUND_COLOUR=2, I_FONT_COLOUR=3, I_FONT_SIZE=4, I_FONT_FACE=5, I_ALINK_COLOUR=6, I_VLINK_COLOUR=7, I_LINK_COLOUR=8, I_TITLE=9, I_DESCRIPTION=10, I_KEYWORDS=11;
	aDocProperties[I_MARGIN] = parseInt(oIFrame.document.body.style.margin)+"";
	aDocProperties[I_BACKGROUND_IMAGE] = EditorCanvas_GetDocumentBackgroundImage()+"";
	aDocProperties[I_BACKGROUND_COLOUR] = EditorCanvas_GetDocumentBackgroundColour()+"";
	aDocProperties[I_FONT_COLOUR] = EditorCanvas_GetDocumentFontColour()+"";
	aDocProperties[I_FONT_SIZE] = EditorCanvas_GetDocumentFontSize()+"";
	aDocProperties[I_FONT_FACE] = EditorCanvas_GetDocumentFontFace()+"";
	aDocProperties[I_ALINK_COLOUR] = EditorCanvas_GetDocumentActiveLinkColour()+"";
	aDocProperties[I_VLINK_COLOUR] = EditorCanvas_GetDocumentVisitedLinkColour()+"";
	aDocProperties[I_LINK_COLOUR] = EditorCanvas_GetDocumentLinkColour()+"";
	aDocProperties[I_TITLE] = EditorCanvas_GetDocumentTitle()+"";
	aDocProperties[I_DESCRIPTION] = EditorCanvas_GetDocumentDescription()+"";
	aDocProperties[I_KEYWORDS] = EditorCanvas_GetDocumentKeywords()+"";
	aDocProperties = window.showModalDialog("dialog_page.aspx", aDocProperties, "dialogHeight:490px;dialogWidth:450px;center:yes;edge:raised;help:no;resizable:no;scroll:no;status:no;");
	if (aDocProperties!=null) {
		if (aDocProperties[I_MARGIN]!="") {
			oIFrame.document.body.style.margin = parseInt(aDocProperties[I_MARGIN])+"px";
		}
		if (aDocProperties[I_BACKGROUND_IMAGE]!="") {
			EditorCanvas_SetDocumentBackgroundImage(aDocProperties[I_BACKGROUND_IMAGE]);
		}
		if (aDocProperties[I_BACKGROUND_COLOUR]!="") {
			EditorCanvas_SetDocumentBackgroundColour(aDocProperties[I_BACKGROUND_COLOUR]);
		}
		if (aDocProperties[I_FONT_COLOUR]!="") {
			EditorCanvas_SetDocumentFontColour(aDocProperties[I_FONT_COLOUR]);
		}
		if (aDocProperties[I_FONT_SIZE]!="") {
			EditorCanvas_SetDocumentFontSize(aDocProperties[I_FONT_SIZE]);
		}
		if (aDocProperties[I_FONT_FACE]!="") {
			EditorCanvas_SetDocumentFontFace(aDocProperties[I_FONT_FACE]);
		}
		if (aDocProperties[I_ALINK_COLOUR]!="") {
			EditorCanvas_SetDocumentActiveLinkColour(aDocProperties[I_ALINK_COLOUR]);
		}
		if (aDocProperties[I_VLINK_COLOUR]!="") {
			EditorCanvas_SetDocumentVisitedLinkColour(aDocProperties[I_VLINK_COLOUR]);
		}
		if (aDocProperties[I_LINK_COLOUR]!="") {
			EditorCanvas_SetDocumentLinkColour(aDocProperties[I_LINK_COLOUR]);
		}
		if (aDocProperties[I_TITLE]!="") {
			EditorCanvas_SetDocumentTitle(aDocProperties[I_TITLE]);
		}
		if (aDocProperties[I_DESCRIPTION]!="") {
			EditorCanvas_SetDocumentDescription(aDocProperties[I_DESCRIPTION]);
		}
		if (aDocProperties[I_KEYWORDS]!="") {
			EditorCanvas_SetDocumentKeywords(aDocProperties[I_KEYWORDS]);
		}
	}
	return true;
}

function EditorCanvas_InsertText(string) {
	EditorCanvas_SetSelectedText(string);
}
function EditorCanvas_InsertHtml(string) {
	EditorCanvas_SetSelectedHtml(string);
}
function EditorCanvas_GetViewMode() {
	return EditorCanvas_GetIFrame()._ViewMode;
}
function EditorCanvas_ToggleViewMode() { 
	EditorCanvas_GetIFrame().focus();
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas._ViewMode=="editor") {
		if (oEditorCanvas._Mode=="document") {
			oEditorCanvas.document.body.innerText = oEditorCanvas.document.documentElement.outerHTML;
			oEditorCanvas._Mode="document";
		} else {
			oEditorCanvas.document.body.innerText = oEditorCanvas.document.body.innerHTML;
			oEditorCanvas._Mode="fragment";
		}
		oEditorCanvas.document.body.style.fontFamily = "Verdana, Geneva";
		oEditorCanvas.document.body.style.fontSize = "10pt";
		oEditorCanvas.document.body.style.color = "#000000";
		oEditorCanvas.document.body.style.margin = "0px";
		oEditorCanvas.document.body.style.backgroundColor = "#FFFFFF";
		oEditorCanvas.document.body.background="";
		oEditorCanvas.document.onselectionchange=new Function("return false");
		oEditorCanvas.document.execCommand("2D-Position",false,false);

		oEditorCanvas._ViewMode = "source";
	} else {
		if (oEditorCanvas._Mode=="document") {
			var oExpandos = EditorCanvas_SaveExpandos();
			var html = oEditorCanvas.document.body.innerText;
			oEditorCanvas.document.open("text/html","replace");
			oEditorCanvas.document.write(html);
			oEditorCanvas.document.close();
			oEditorCanvas._Mode="document";
			EditorCanvas_RestoreExpandos(oExpandos);
		} else {
			oEditorCanvas.document.body.innerHTML = oEditorCanvas.document.body.innerText;
			oEditorCanvas.document.body.style.fontFamily = "";
			oEditorCanvas.document.body.style.fontSize = "";
			oEditorCanvas.document.body.style.foreColor = "";
			oEditorCanvas._Mode="fragment";
		}
		oEditorCanvas.document.onselectionchange=EditorCanvas_OnSelectionChange;
		oEditorCanvas.document.ondblclick=EditorCanvas_OnDblClick;
		oEditorCanvas.document.execCommand("2D-Position",false,true);

		oEditorCanvas._ViewMode = "editor";
	}
	return true;
}
function EditorCanvas_Enable() {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	oEditorCanvas.focus();
	if (oEditorCanvas) {
		oEditorCanvas.document.disabled=true;
	}
}
function EditorCanvas_Disable() {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	oEditorCanvas.focus();
	if (oEditorCanvas) {
		oEditorCanvas.document.disabled=false;
	}
}
function EditorCanvas_ObjectProperties() {
//alert("EditorCanvas_ObjectProperties");
	var oEditorCanvas = EditorCanvas_GetIFrame();
	oEditorCanvas.focus();
	if (oEditorCanvas && oEditorCanvas.document && oEditorCanvas.document.selection && (oEditorCanvas.document.selection.type=="Control")) {
		var oSource = oEditorCanvas.document.selection.createRange();
		if (oSource.length>0) {
			oSource = oSource.item(0);
			if (oSource.tagName=="IMG") {
				var oReturn = window.showModalDialog("dialog_image.aspx", oSource, "dialogHeight:375px;dialogWidth:400px;center:yes;edge:raised;help:no;resizable:no;scroll:no;status:no;")+"";
			} else if (oSource.tagName=="TABLE") {
				var oReturn = window.showModalDialog("dialog_table.aspx", oSource, "dialogHeight:270px;dialogWidth:400px;center:yes;edge:raised;help:no;resizable:no;scroll:no;status:no;")+"";
			} 
		}
	}
	return true;
}

function EditorCanvas_OnSelectionChange() {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	if (oEditorCanvas && oEditorCanvas._OnSelChange!=null) {
		oEditorCanvas._OnSelChange(oEditorCanvas.document.selection);
	}
}

function EditorCanvas_OnDblClick() {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	var oEvent = oEditorCanvas.event;

	EditorCanvas_ObjectProperties();
	oEvent.returnValue=true;
}
function EditorCanvas_OnKeyDown() {
	var oEditorCanvas = EditorCanvas_GetIFrame();
	var oEvent = oEditorCanvas.event;

	if (oEvent.ctrlKey
		||	oEvent.keyCode==39 //right arrow
		||	oEvent.keyCode==37 //left arrow
		||	oEvent.keyCode==40 //down arrow
		||	oEvent.keyCode==38 //up arrow
		||	oEvent.keyCode==34 //page down
		||	oEvent.keyCode==33 //page up
		||	oEvent.keyCode==46 //delete
		||	oEvent.keyCode==8  //backspace
		||	oEvent.keyCode==35 //end
		||	oEvent.keyCode==36 //home
		) {
		EditorCanvas_OnSelectionChange();
		oEvent.returnValue=true;
	}
}
function Array_Delete(aArray,iIndex) {
	var aTemp = new Array();
	for (var n=0;n<aArray.length;n++) {
		if (n!=iIndex) aTemp[aTemp.length] = aArray[n];
	}
	return aTemp
}
function Clean_Boolean(value) {
	value = value.toLowerCase();
	return (value=="true"||value=="t"||value=="on"||value=="yes"||value=="y"||value>0)
}
function Clean_Length(value) {
	value = value.toLowerCase();

	var num = parseFloat(value);
	var r = /em|px|ex|pt|in|cm|mm|pc|%/i;
	var unit = "px";

	if (r.test(value)) {
		unit = RegExp.lastMatch;
	}
	return num+""+unit;
}
function String_Trim(str) {
	while (str.charCodeAt(0)==12||str.charCodeAt(0)==10||str.charCodeAt(0)==13||str.charCodeAt(0)==9||str.charCodeAt(0)==32) {
		str = str.substr(1);
	}
	while (str.charCodeAt(str.length-1)==12||str.charCodeAt(str.length-1)==10||str.charCodeAt(str.length-1)==13||str.charCodeAt(str.length-1)==9||str.charCodeAt(str.length-1)==32) {
		str = str.substr(0,str.length-1);
	}
	return str;
}
function IntToHex(n) {//0 to 255
	var s = "";
	var i = Math.floor(n/16);
	if (isNaN(i)) i=0;
	switch(i) {
		case 10: s="A";break;
		case 11: s="B";break;
		case 12: s="C";break;
		case 13: s="D";break;
		case 14: s="E";break;
		case 15: s="F";break;
		default: s=i+"";break;
	}
	var i = Math.floor(n%16);
	if (isNaN(i)) i=0;
	switch(i) {
		case 10: s+="A";break;
		case 11: s+="B";break;
		case 12: s+="C";break;
		case 13: s+="D";break;
		case 14: s+="E";break;
		case 15: s+="F";break;
		default: s+=i+"";break;
	}
	return s;
}
function Colour2Hex(colour) {
	var red=0,green=0,blue=0;

	blue = Math.floor(colour/65536);
	colour -= blue*65536;

	green = Math.floor(colour/256);
	colour -= green*256;

	red = colour;
	return "#"+IntToHex(red)+IntToHex(green)+IntToHex(blue);
}


