// Manifesto: $Id: dtRTE.js,v 1.10 2006/12/22 15:10:11 spud Exp $
// license: GNU LGPL
// copyright 2001-2004: dada typo and contributors

dtdebug = 0;
function dtalert(msg) {
	if (dtdebug == 1) alert(msg);
}
function dtRTEcore() {
	this.majorVersion = "0";
	this.minorVersion = "5";
	this.rteMimeIndex  = 3; // for default mime popups, 0=text/plain,1=text/x-html,2=text/html,3=RichTextEditor
	this.mimeIndex = this.rteMimeIndex;
	this.instances = new Array();
	this.instancect = 0;
	this.current = false;
	this.resizer = false;
	this.field = "";
	this.forms = new Array();
	this.url = dtDOM.g_url;
}
dtRTEcore.prototype.addInstance = function(ed) {
	this.instances[ed.eid] = ed;
	this.loadContent(ed.eid);
	this.addEventHandlers(ed.eid);
	if (!inArray(this.forms,ed.textarea.form)) {
		dtDOM.addEvent(ed.textarea.form,"submit",dtRTEcore.prototype.doSubmit);
		this.forms.push(ed.textarea.form);
	}
};
dtRTEcore.prototype.addEventHandlers = function(eid) {
	ed = this.instances[eid];
	idoc = ed.getIframeDocument();
	dtDOM.addEvent(idoc,"select",g_dtRTE.handleEvent);
	dtDOM.addEvent(idoc,"click",g_dtRTE.handleEvent);
	dtDOM.addEvent(idoc,"mouseup",g_dtRTE.handleEvent);
	dtDOM.addEvent(idoc,"keypress",g_dtRTE.handleEvent);
	dtDOM.addEvent(idoc,"keyup",g_dtRTE.handleEvent);
};
dtRTEcore.prototype.doSubmit = function(e) {
	var evt = e ? e : window.event;
	if (g_dtRTE.mimeIndex == g_dtRTE.rteMimeIndex) {
		try {
			for(var eid in g_dtRTE.instances) {
				var ed = g_dtRTE.instances[eid];
				ed.cleanContent();
				ed.contentFromEditor();
			}
		}
		catch(err) {
			alert(err.message);
			alert("If you have problems submitting the form, try switching to 'HTML formatted' and resubmit.");
			if (evt.returnValue) {
				evt.returnValue = false;
			} else if (evt.preventDefault) {
				evt.preventDefault();
			} else {
				return false;
			}
		}
	}
};
dtRTEcore.prototype.handleEvent = function(e) {
	var evt = e ? e : window.event;
	var targ = dtDOM.getEventTarget(evt);
	if (targ.ownerDocument && targ.ownerDocument.eid) {
		this.current = targ.ownerDocument.eid;
	} else {
		dtalert("Couldn't find target eid; defaulting to 1");
		this.current = "dtRTE_1";
	}
	var ed = g_dtRTE.instances[this.current];
	ed.focusedElement = targ;
	switch(evt.type) {
		case 'select':
		case 'click':
		case 'mouseup':
			g_dtRTE.updateToolbar(this.current);
			break;
		case 'keydown':
		case 'keypress':
			break;
		case 'keyup':
			if (evt.keyCode == 8 || evt.keyCode == 46) {
				ed.getSel();
				if ((ed.selection.parentElement.nodeName == "P" || ed.selection.parentElement.nodeName == "BODY") && ed.selection.parentElement.innerHTML == "<br>") {
					ed.selection.parentElement.removeChild(ed.selection.parentElement.firstChild);
					ed.selection.rng.collapse(false);
				} else if (dtDOM.isGecko && ed.selection.parentElement.nodeName == "BODY" && ed.selection.parentElement.hasChildNodes() && ed.selection.parentElement.childNodes[ed.selection.rng.startOffset].nodeName == "BR") {
					ed.selection.parentElement.removeChild(ed.selection.parentElement.childNodes[ed.selection.rng.startOffset]);
					ed.selection.rng.collapse(false);
				}
				g_dtRTE.updateToolbar(this.current);
			} else if (inArray(ed.arrows,evt.keyCode)) {
				g_dtRTE.updateToolbar(this.current);
			}
			break;
	}
	return;
};
dtRTEcore.prototype.loadContent = function(eid) {
	ed = this.instances[eid];
	if (ed == null || ed == "undefined") {
		return false;
	}
	try {
		var content = ed.getTaContent();
		content = ed.makePlaceholderImages(content);
		if (dtDOM.isMSIE) {
			ed.setDesignMode();
			if (content != "") {
				ed.getIframeDocument().body.innerHTML = content;
			}
		} else {
			if (content != "") {
				ed.setIframeContent(content);
			}
			ed.setDesignMode();
		}
		if (ed.hidden) {
			ed.hide();
		} else {
			ed.getIframeWindow().focus();
			this.updateToolbar(eid);
		}
		window.status = "Design Mode: "+ed.iframeDocument.designMode;
	}
	catch(err) {
		window.status = "Error: "+err.message;
	}
};
dtRTEcore.prototype.setDesignMode = function(eid) {
	ed = this.instances[eid];
	ed.setDesignMode();
}
dtRTEcore.prototype.doExec = function(eid,action) {
	var ed = g_dtRTE.instances[eid];
	var iwindow = ed.getIframeWindow();
	var idoc = ed.getIframeDocument();
	var sel = ed.getSel();
	if (arguments.length == 3) {
		var extra = arguments[2];
	}
	switch (action) {
		case "dtInsertImage":
			this.openMediaBrowser("insert",eid);
			return false;
		case "dtCreateLink":
			if (sel.collapsed) {
				alert("There is no text currently selected for the link.");
			} else {
				var linknode = sel.containsLink();
				if (linknode != null) {
					sel.expandToLink(linknode);
					clnk = linknode.href;
					this.openLinkBrowser(eid,clnk);
				} else {
					this.openLinkBrowser(eid);
				}
			}
			return false;
		case "dtCreateAnchor":
			var extra;
			if (extra = window.prompt("Enter a name for your anchor")) {
				if (dtDOM.isMSIE) {
					var rangeContents = sel.rng.text;
					sel.rng.pasteHTML("");
					sel.rng.pasteHTML('<a id="'+extra+'">'+rangeContents+'</a>');
				} else {
					var newA = dtDOM.buildElement("A",extra,false,idoc);
					newA.appendChild(idoc.createTextNode(sel.text));
					sel.rng.deleteContents();
					sel.rng.insertNode(newA);
					sel.rng.collapse(false);
				}
			}
			break;
		case "dtFixParagraphs":
			var content = ed.getIframeContent();
			if (content.indexOf("<p") == -1) {
				var regex = /[\r\n]{2}/g;
				content = "<p>"+content.replace(regex,"<p>");
				var regex = /<br>{2}/g;
				content = "<p>"+content.replace(regex,"<p>");
				ed.setIframeContent(content);
			}
			this.disableButton(eid,"fixparagraphs");
			break;
		case "dtCleanUp":
			var content = ed.getIframeContent();
			if (content != "") {
				ed.cleanContent();
			}
			break;
		case "formatblock":
		case "fontsize":
			if (extra) {
				if (extra == "blockquote" && dtDOM.isMSIE) {
					idoc.execCommand("indent",false,null);
				} else {
					idoc.execCommand(action,false,extra);
				}
			}
			break;
		case "forecolor":
			if (extra) {
				idoc.execCommand("ForeColor",false,extra);
			}
			break;
		case "unlink":
			if (sel.parentElement.nodeName == "A" && sel.parentElement.id && !sel.parentElement.href) {
				if (dtDOM.isMSIE) {
					var rangeContents = sel.rng.text;
					sel.rng.pasteHTML("");
					sel.rng.pasteHTML(rangeContents);
				} else {
					var rangeContents = sel.rng.extractContents();
					sel.parentElement.parentNode.removeChild(sel.parentElement);
					sel.rng.insertNode(rangeContents);
				}
			} else {
				idoc.execCommand(action,false,null);
			}
			break;
		default:
			idoc.execCommand(action,false,null);
			break;
	}
	var newsel = ed.getSel();
	if (dtDOM.isGecko) {
		var newrng = newsel.rng;
		if (newrng.startContainer.nodeType == 3 && newrng.startOffset == newrng.startContainer.length && newrng.endContainer.nodeType == 3 && newrng.endOffset == newrng.endContainer.length && newrng.endContainer.parentNode == newrng.startContainer.nextSibling) {
			ed.selection.setByNode(newrng.startContainer.nextSibling,true);
		}
	}
	this.updateToolbar(eid);
	iwindow.focus();
	return false;
};
dtRTEcore.prototype.showEditor = function() {
	for(var n in this.instances) {
		this.instances[n].contentToEditor();
		dtDOM.showHide(this.instances[n].textarea,"none");
		dtDOM.showHide(this.instances[n].iframediv,"block");
	}
};
dtRTEcore.prototype.hideEditor = function() {
	for(var n in this.instances) {
		this.instances[n].contentFromEditor();
		dtDOM.showHide(this.instances[n].iframediv,"none");
		dtDOM.showHide(this.instances[n].textarea,"block");
	}
};
dtRTEcore.prototype.disableButton = function(eid,bName) {
	var button = getObjectRef(document,eid+"_"+bName);
	if (button && button.src.indexOf("_d.gif") == -1) {
		button.src = button.src.replace(".gif","_d.gif");
	}
};
dtRTEcore.prototype.enableButton = function(eid,bName) {
	var button = getObjectRef(document,eid+"_"+bName);
	if (button && button.src.indexOf("_d.gif") != -1) {
		button.src = button.src.replace("_d.gif",".gif");
	}
};
dtRTEcore.prototype.resetToolbar = function(eid) {
	var ed = g_dtRTE.instances[eid];
	if (ed.toolbar != "undefined") {
		var tbimgs = ed.toolbar.getElementsByTagName("img");
		for(var i=0;i<tbimgs.length;i++) {
			dtDOM.removeClass(tbimgs[i],"pressed");
			if (tbimgs[i].src.indexOf("_d.gif") != -1) {
				tbimgs[i].src = tbimgs[i].src.replace("_d","");
			}
		}
		var tbselects = ed.toolbar.getElementsByTagName("select");
		for(var i=0;i<tbselects.length;i++) {
			tbselects[i].selectedIndex = 0;
		}
	}
};
dtRTEcore.prototype.updateToolbar = function(eid) {
	this.resetToolbar(eid);
	var ed = g_dtRTE.instances[eid];
	var alignStop = false; // tells loop to stop calculating alignment after the first aligned node
	ed.getSel();
	if (ed.selection) {
		if (ed.selection.collapsed) {
			this.disableButton(eid,"createlink");
			this.disableButton(eid,"anchor");
			this.disableButton(eid,"unlink");
		} else if (ed.focusedElement && ed.focusedElement.nodeName == "IMG") {
			dtDOM.addClass(ed.eid+"_"+"insertimg","pressed");
		} else {
			this.disableButton(eid,"insertimg");
		}
		var parents = dtDOM.getParentArray(ed.selection.parentElement);
		if (ed.selection.doubleclickElement && !parents[ed.selection.doubleclickElement]) {
			parents.unshift(ed.selection.doubleclickElement);
		}
		this.updatePathbar(eid,parents);
		/*
		*/
		for(var i=0;i<parents.length;i++) {
			var n = parents[i];
			var nColor = dtDOM.getStyle(n,"color");
			if (nColor != null && (nColor != "rgb(0, 0, 0)") && (nColor != "#000000")) dtDOM.addClass(ed.eid+"_"+"color","pressed");
			switch(n.nodeName) {
				case 'SPAN':
					break;
				case 'P':
					var menu = getObjectRef(document,ed.eid+"_block");
					dtDOM.setSelectByValue(menu,"<p>");
					break;
				case 'FONT':
					sizeattr = dtDOM.getAttr(n,"size");
					if (sizeattr != "undefined") {
						var menuoption = getObjectRef(document,ed.eid+"_fs_"+sizeattr);
						if (menuoption != null) menuoption.selected = true;
					}
					break;
				case 'UL':
					dtDOM.addClass(ed.eid+"_"+"ul","pressed");
					break;
				case 'OL':
					dtDOM.addClass(ed.eid+"_"+"ol","pressed");
					break;
			}
		}
		if (ed.selection.containsLink() && !ed.selection.collapsed) {
			dtDOM.addClass(ed.eid+"_"+"createlink","pressed");
			this.enableButton(eid,"createlink");
		} else {
			this.disableButton(eid,"unlink");
		}
		var cursorarr = new Array("bold","italic",/*"underline",*/"justifyleft","justifyright","justifycenter","insertorderedlist","insertunorderedlist");
		for (var i=0;i<cursorarr.length;i++) {
			var press = ed.getIframeDocument().queryCommandState(cursorarr[i]);
			if (press) {
				switch (cursorarr[i]) {
					case 'insertorderedlist':
						dtDOM.addClass(ed.eid+"_ol","pressed");
						break;
					case 'insertunorderedlist':
						dtDOM.addClass(ed.eid+"_ul","pressed");
						break;
					default:
						dtDOM.addClass(ed.eid+"_"+cursorarr[i],"pressed");
				}
			}
		}
	}
};
dtRTEcore.prototype.selectNode = function(eid,obj) {
	var ed = g_dtRTE.instances[eid];
	if (!ed.selection) ed.getSel();
	ed.selection.setByNode(obj,true);
	return false;
};
dtRTEcore.prototype.selectNodeFromPath = function(eid,i) {
	var ed = g_dtRTE.instances[eid];
	if (!ed.selection) ed.getSel();
	var parents = dtDOM.getParentArray(ed.selection.parentElement);
	if (ed.selection.doubleclickElement && !parents[ed.selection.doubleclickElement]) {
		if (i == 0) {
			newsel = ed.getIframeDocument().createRange();
			newsel.selectNode(ed.selection.doubleclickElement);
			return false;
		} else {
			parents.unshift(ed.selection.doubleclickElement);
		}
	}
	if (parents[i]) {
		ed.selection.setByNode(parents[i],true);
	}
	ed.iframeWindow.focus();
	this.updateToolbar(eid);
	return false;
};
dtRTEcore.prototype.startVerticalDrag = function(e,eid,elemID) {
	var evt = e ? e : window.event;
	var ed = this.instances[eid];
	this.current = eid;
	this.resizer = new Object();
	this.resizer.ed = ed;
	this.resizer.elem = getObjectRef(document,elemID);
	this.resizer.proxy = getObjectRef(document,elemID+"_proxy");
	this.resizer.active = true;
	this.resizer.vertical = true;
	this.resizer.horizontal = false;
	this.resizer.startX = evt.screenX;
	this.resizer.startY = evt.screenY;
	this.resizer.minH = 100;
	this.resizer.minW = 430;
	this.resizer.startH = parseInt(dtDOM.getStyle(this.resizer.elem,"height"));
	this.resizer.startW = parseInt(dtDOM.getStyle(this.resizer.elem,"width"));
	dtDOM.setStyle(this.resizer.proxy,"height",this.resizer.startH+"px");
	dtDOM.setStyle(this.resizer.proxy,"width",this.resizer.startW+"px");
	dtDOM.setStyle(this.resizer.proxy,"border","1px solid #990000");
	dtDOM.showHide(this.resizer.elem,"none");
	dtDOM.showHide(this.resizer.proxy,"block");
	dtDOM.addEvent(document,"mousemove",g_dtRTE.handleDrag);
	dtDOM.addEvent(document,"mouseup",g_dtRTE.handleDrag);
	if (dtDOM.isMSIE) {
		evt.returnValue = false;
	} else {
		evt.preventDefault();
	}
};
dtRTEcore.prototype.handleDrag = function(e) {
	var evt = e ? e : window.event;
	if (g_dtRTE.resizer.horizontal) {
		var newW = g_dtRTE.resizer.startW + (evt.screenX-g_dtRTE.resizer.startX);
	} else {
		var newW = g_dtRTE.resizer.startW;
	}
	if (g_dtRTE.resizer.vertical) {
		var newH = g_dtRTE.resizer.startH + (evt.screenY-g_dtRTE.resizer.startY);
	} else {
		var newH = g_dtRTE.resizer.startH;
	}
	if (evt.type == "mousemove" && g_dtRTE.resizer.active) {
		if (g_dtRTE.resizer.vertical) dtDOM.setStyle(g_dtRTE.resizer.proxy,"height",newH+"px");
		if (g_dtRTE.resizer.horizontal) dtDOM.setStyle(g_dtRTE.resizer.proxy,"width",newW+"px");
		if (dtDOM.isMSIE) {
			evt.returnValue = false;
		} else {
			evt.preventDefault();
		}
	} else if (evt.type == "mouseup") {
		g_dtRTE.resizer.active = false;
		dtDOM.setStyle(g_dtRTE.resizer.proxy,"border","none");
		dtDOM.showHide(g_dtRTE.resizer.proxy,"none");
		if (g_dtRTE.resizer.vertical) {
			if (newH < g_dtRTE.resizer.minH) newH = g_dtRTE.resizer.minH;
			dtDOM.setStyle(g_dtRTE.resizer.elem,"height",newH+"px");
		}
		if (g_dtRTE.resizer.horizontal) {
			if (newW < g_dtRTE.resizer.minW) newW = g_dtRTE.resizer.minW;
			dtDOM.setStyle(g_dtRTE.resizer.elem,"width",newW+"px");
		}
		dtDOM.showHide(g_dtRTE.resizer.elem,"block");
		dtDOM.removeEvent(document,"mousemove",g_dtRTE.handleDrag);
		dtDOM.removeEvent(document,"mouseup",g_dtRTE.handleDrag);
	}
};
dtRTEcore.prototype.openMediaBrowser = function(type,eid) {
	if (window["m_browser"] && !window["m_browser"].closed) {
		m_browser.focus();
	} else {
		url = this.url+"media_browser.php?type=" + type + "&eid=" + eid;
		if (arguments.length == 3) {
			url += "&lnk=" + arguments[2];
		}
		m_browser = window.open(url,"m_browser","top=80,left=80,width=650,height=400,toolbar=no,menubar=no,scrollbars=yes");
		m_browser.focus();
	}
	return false;
};
dtRTEcore.prototype.openLinkBrowser = function(eid) {
	if (window["l_browser"] && !window["l_browser"].closed) {
		l_browser.focus();
	} else {
		url = this.url+"link_browser.php?eid=" + eid;
		if (arguments.length == 2) {
			url += "&lnk=" + arguments[1];
		}
		l_browser = window.open(url,"l_browser","top=80,left=80,width=650,height=400,toolbar=no,menubar=no,scrollbars=yes");
		l_browser.focus();
	}
	return false;
};
function dtRTE() {
	this.eid = "dtRTE_"+(g_rtes.length + 1);
	this.field = "";
	this.textarea = false;
	this.iframe = false;
	this.iframediv = false;
	this.iframeWindow = false;
	this.iframeDocument = false;
	this.toolbar = false;
	this.pathbar = false;
	this.selection = false;
	this.hidden = false;
	this.iframeclass = "rteIframe";
	this.height = "300px";
	this.width = "430px";
	this.buttons = new Array();
	this.buttons.push(new Array("Bold","Italic","Left Justify","Center Text","Right Justify","Insert Ordered List","Insert Unordered List","Indent","Outdent","Insert Image","Create Link","Remove Link","Create Anchor"));
	this.buttons.push(new Array("Text Color","Font Size","Block Formatting","Remove Formatting","Fix Paragraphs"));
	this.colorarr = new Array("#ffcc00","#cc0000","#00cc00","#0000cc","#ff3300","#660066","#006633","#003366","#000000","#999999","#cccccc","#ffffff");
	this.fsarr = new Array(1,2,3,4,5,6);
	this.fstextarr = new Array("XX Small","Extra Small","Small","Medium","Large","Extra Large");
	this.arrows = new Array(13,45,36,35,33,34,37,38,39,40);
}
dtRTE.prototype.init = function(f) {
	this.field = f;
	this.textareaStr = this.field;
	this.iframeStr = this.eid+"_iframe";
	this.iframedivStr = this.eid+"_iframediv";
	this.toolbarStr = this.eid+"_toolbar";
	this.getTextarea();
	this.buildIframe();
	this.buildToolbar();
	this.buildPathbar();
	try {
		this.setDesignMode();
	}
	catch(err) { window.status = "Failed to set designMode at init()" };
};
dtRTE.prototype.hide = function() {
	dtDOM.showHide(this.iframediv,"none");
	g_dtRTE.mimeIndex = getObjectRef(document,"form_mime_type").selectedIndex;
};
dtRTE.prototype.getTextarea = function() {
	this.textarea = getObjectRef(document,this.textareaStr);
	return this.textarea;
};
dtRTE.prototype.getIframeDiv = function() {
	this.iframediv = getObjectRef(document,this.iframedivStr);
	return this.iframediv;
};
dtRTE.prototype.getIframe = function() {
	this.iframe = getObjectRef(document,this.iframeStr);
	return this.iframe;
};
dtRTE.prototype.getIframeWindow = function() {
	this.iframeWindow = this.iframe.contentWindow;
	return this.iframeWindow;
};
dtRTE.prototype.getIframeDocument = function() {
	if (dtDOM.isMSIE) {
		this.iframeDocument = this.iframe.contentWindow.document;
		this.iframe.contentWindow.document.eid = this.eid;
	} else {
		this.iframeDocument = this.iframe.contentDocument;
		this.iframe.contentDocument.eid = this.eid;
	}
	return this.iframeDocument;
};
dtRTE.prototype.getToolbar = function() {
	this.toolbar = getObjectRef(document,this.toolbarStr);
	return this.toolbar;
};
dtRTE.prototype.getTaContent = function() {
	return this.textarea.value;
};
dtRTE.prototype.getIframeContent = function() {
	return this.getIframeDocument().body.innerHTML;
};
dtRTE.prototype.setIframeContent = function(val) {
	this.getIframeDocument().body.innerHTML = val;
};
dtRTE.prototype.setDesignMode = function() {
	this.getIframeDocument().designMode = "On";
};
dtRTE.prototype.buildIframe = function() {
	var ifdiv = dtDOM.buildElement("div",this.iframedivStr,false);
	dtDOM.setStyle(ifdiv,"backgroundColor","#eeeeee");
	var ifrattrs = { src: dtDOM.g_url+"blank.php", "class": this.iframeclass, height: this.height, width: this.width, contentEditable: true };
	var ifr = dtDOM.buildElement("iframe",this.iframeStr,ifrattrs);
	dtDOM.setStyle(ifr,"borderWidth","1px");
	this.iframe = ifdiv.appendChild(ifr);
	var rsodiv = dtDOM.buildElement("div",this.eid+"_iframe_proxy",false);
	rsodiv.appendChild(document.createTextNode("Drag vertically to resize"));
	dtDOM.setStyle(rsodiv,"fontSize","12px");
	dtDOM.setStyle(rsodiv,"textAlign","center");
	dtDOM.setStyle(rsodiv,"display","none");
	ifdiv.appendChild(rsodiv);
	this.iframediv = this.textarea.parentNode.appendChild(ifdiv);
	this.resizeOutline = getObjectRef(document,this.eid+"_resizeOutline");
};
dtRTE.prototype.buildToolbar = function() {
	var tbdivattrs = { "class": "rteToolbar" }
	var tbdiv = dtDOM.buildElement("div",this.toolbarStr,tbdivattrs);
	var tbdiv1 = dtDOM.buildElement("div",this.toolbarStr+"_1",false);
	for (var i=0;i<this.buttons[0].length;i++) {
		var ab = this.buildButton(this.buttons[0][i]);
		tbdiv1.appendChild(ab);
	}
	tbdiv.appendChild(tbdiv1);
	var tbdiv2 = dtDOM.buildElement("div",this.toolbarStr+"_2");
	dtDOM.setStyle(tbdiv2,"position","relative");
	for (var i=0;i<this.buttons[1].length;i++) {
		var btitle = this.buttons[1][i];
		var ab = this.buildButton(btitle);
		tbdiv2.appendChild(ab);
		switch(btitle) {
			case "Text Color":
				attrs = { "class":"hidden" };
				outercdiv = dtDOM.buildElement("div",this.eid+"_colorgrid",attrs);
				var st = { backgroundColor: "#eeeeee", border: "1px solid #000000", padding: "3px", position: "absolute", height: "60px", width: "76px", top: "22px", left: "0", zIndex: "10" };
				dtDOM.setStyle(outercdiv,st);
				for(var j=0;j<this.colorarr.length;j++) {
					var cdiv = dtDOM.buildElement("div",this.eid+"_"+this.colorarr[j].replace("#",""), { title: this.colorarr[j] } );
					var st = { backgroundColor: this.colorarr[j], cssFloat: "left", margin: "1px", height: "16px", styleFloat: "left", width: "16px" };
					dtDOM.setStyle(cdiv,st);
					dtDOM.setHandler(cdiv,"onmousedown",'g_dtRTE.doExec("'+this.eid+'","forecolor",this.style.backgroundColor);this.parentNode.style.display="none";');
					if (j%4 == 0) {
						dtDOM.setStyle(cdiv,"clear","left");
					}
					outercdiv.appendChild(cdiv);
				}
				tbdiv2.appendChild(outercdiv);
				break;
		}
	}
	tbdiv.appendChild(tbdiv2);
	this.toolbar = this.iframediv.insertBefore(tbdiv,this.iframe);
};
dtRTE.prototype.buildPathbar = function() {
	var fdivattrs = { "class": "rteFooter", title: "For best results, click on the path element to ensure your selection is accurate" }
	var fdiv = dtDOM.buildElement("div",this.eid+"_footer",fdivattrs);
	var pbresizer = dtDOM.buildElement("img",this.eid+"_resizer", { "class": "rteResize", src: dtDOM.g_url+"images/editor_icons/icon_resize.gif", title: "Click and drag to resize the window" } );
	dtDOM.setStyle(pbresizer,"float","right");
	dtDOM.setStyle(pbresizer,"verticalAlign","baseline");
	dtDOM.setHandler(pbresizer,"onmousedown","g_dtRTE.startVerticalDrag(event,'"+this.eid+"','"+this.eid+"_iframe');");
	fdiv.appendChild(pbresizer);
	var pbdivattrs = { "class": "rtePathbar" }
	var pbdiv = dtDOM.buildElement("div",this.eid+"_pathbar",pbdivattrs);
	this.pathbar = fdiv.appendChild(pbdiv);
	this.iframediv.appendChild(fdiv);
};
dtRTEcore.prototype.updatePathbar = function(eid,p) {
	var ed = g_dtRTE.instances[eid];
	var pb = ed.pathbar;
	pb.innerHTML = "";
	pb.appendChild(document.createTextNode("Path: "));
	for(var i=p.length-1;i>=0;i--) {
		var a = dtDOM.buildElement("A",eid+"_path_"+i);
		dtDOM.setHandler(a,"onclick","return g_dtRTE.selectNodeFromPath('"+eid+"','"+i+"');");
		if (i > 0 || (ed.focusedElement && ed.focusedElement.nodeName == "IMG")) {
			a.innerHTML = p[i].nodeName.toLowerCase()+" &raquo; ";
		} else {
			a.innerHTML = p[i].nodeName.toLowerCase();
		}
		pb.appendChild(a);
	}
	if (ed.focusedElement && ed.focusedElement.nodeName == "IMG") {
		pb.appendChild(document.createTextNode("img"));
	}
};
dtRTE.prototype.buildButton = function(action) {
	attrs = { "class": "rteButtonlink" };
	var a = dtDOM.buildElement("A","");
	dtDOM.setStyle(a,"height","21px");
	dtDOM.setStyle(a,"width","21px");
	attrs = { "class": "rteButton", height: "21", width: "21", alt: action, title: action };
	var b = dtDOM.buildElement("IMG","",attrs);
	dtDOM.addEvent(b,"mousedown",rteMouseDown);
	switch(action) {
		case "Bold":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_bold.gif");
			dtDOM.setAttr(b,"id",this.eid+"_bold");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","bold");');
			a.appendChild(b);
			break;
		case "Italic":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_italic.gif");
			dtDOM.setAttr(b,"id",this.eid+"_italic");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","italic");');
			dtDOM.setStyle(a,"marginRight","10px");
			a.appendChild(b);
			break;
		case "Left Justify":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_justifyleft.gif");
			dtDOM.setAttr(b,"id",this.eid+"_justifyleft");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","justifyleft");');
			a.appendChild(b);
			break;
		case "Center Text":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_justifycenter.gif");
			dtDOM.setAttr(b,"id",this.eid+"_justifycenter");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","justifycenter");');
			a.appendChild(b);
			break;
		case "Right Justify":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_justifyright.gif");
			dtDOM.setAttr(b,"id",this.eid+"_justifyright");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","justifyright");');
			dtDOM.setStyle(a,"marginRight","10px");
			a.appendChild(b);
			break;
		case "Insert Ordered List":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_ol.gif");
			dtDOM.setAttr(b,"id",this.eid+"_ol");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","insertorderedlist");');
			a.appendChild(b);
			break;
		case "Insert Unordered List":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_ul.gif");
			dtDOM.setAttr(b,"id",this.eid+"_ul");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","insertunorderedlist");');
			a.appendChild(b);
			break;
		case "Indent":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_indent.gif");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","indent");');
			a.appendChild(b);
			break;
		case "Outdent":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_outdent.gif");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","outdent");');
			dtDOM.setStyle(a,"marginRight","10px");
			a.appendChild(b);
			break;
		case "Insert Image":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_insertimg.gif");
			dtDOM.setAttr(b,"id",this.eid+"_insertimg");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","dtInsertImage");');
			a.appendChild(b);
			break;
		case "Create Link":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_createlink.gif");
			dtDOM.setAttr(b,"id",this.eid+"_createlink");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","dtCreateLink");');
			a.appendChild(b);
			break;
		case "Remove Link":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_unlink.gif");
			dtDOM.setAttr(b,"id",this.eid+"_unlink");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","unlink");');
			a.appendChild(b);
			break;
		case "Create Anchor":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_anchor.gif");
			dtDOM.setAttr(b,"id",this.eid+"_anchor");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","dtCreateAnchor");');
			dtDOM.setStyle(b,"marginRight","10px");
			a.appendChild(b);
			break;
		case "Text Color":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_color.gif");
			dtDOM.setAttr(b,"id",this.eid+"_color");
			dtDOM.setStyle(b,"marginRight","10px");
			dtDOM.setHandler(b,"onclick",'return dtDOM.showHide("'+this.eid+'_colorgrid");');
			a = b;
			break;
		case "Font Size":
			a = dtDOM.buildElement("SELECT",this.eid+"_fontsize");
			dtDOM.setStyle(a,"marginRight","10px");
			dtDOM.setHandler(a,"onchange",'return g_dtRTE.doExec("'+this.eid+'","fontsize",this.options[this.selectedIndex].value);');
			b = dtDOM.buildElement("OPTION","");
			dtDOM.setAttr(b,"value","");
			b.appendChild(document.createTextNode("-- Font Size --"));
			a.appendChild(b);
			for(var i=0;i<this.fsarr.length;i++) {
				b = dtDOM.buildElement("OPTION",this.eid+"_fs_"+this.fsarr[i]);
				dtDOM.setAttr(b,"value",this.fsarr[i]);
				b.appendChild(document.createTextNode(this.fstextarr[i]));
				a.appendChild(b);
			}
			break;
		case "Block Formatting":
			a = dtDOM.buildElement("SELECT",this.eid+"_block");
			dtDOM.setAttr(a,"name",this.eid+"_block");
			dtDOM.setHandler(a,"onchange",'return g_dtRTE.doExec("'+this.eid+'","formatblock",this.options[this.selectedIndex].value);');
			dtDOM.setStyle(a,"marginRight","10px");
			b = dtDOM.buildElement("OPTION");
			dtDOM.setAttr(b,"value","");
			b.appendChild(document.createTextNode("-- Block Formatting --"));
			a.appendChild(b);
			b = dtDOM.buildElement("OPTION");
			dtDOM.setAttr(b,"value","<p>");
			b.appendChild(document.createTextNode("Paragraph"));
			a.appendChild(b);
			b = dtDOM.buildElement("OPTION");
			dtDOM.setAttr(b,"value","<h2>");
			b.appendChild(document.createTextNode("Headline"));
			a.appendChild(b);
			b = dtDOM.buildElement("OPTION");
			dtDOM.setAttr(b,"value","<h3>");
			b.appendChild(document.createTextNode("Subhead"));
			a.appendChild(b);
			b = dtDOM.buildElement("OPTION");
			dtDOM.setAttr(b,"value","<h4>");
			b.appendChild(document.createTextNode("Tinyhead"));
			a.appendChild(b);
			b = dtDOM.buildElement("OPTION");
			dtDOM.setAttr(b,"value","blockquote");
			b.appendChild(document.createTextNode("Blockquote"));
			a.appendChild(b);
			b = dtDOM.buildElement("OPTION");
			dtDOM.setAttr(b,"value","<pre>");
			b.appendChild(document.createTextNode("Preformatted"));
			a.appendChild(b);
			break;
		case "Remove Formatting":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_unformat.gif");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","removeformat");');
			a.appendChild(b);
			break;
		case "Fix Paragraphs":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_fixparagraphs.gif");
			dtDOM.setAttr(b,"title","Add paragraph tags to replace double carriage returns");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","dtFixParagraphs");');
			a.appendChild(b);
			break;
		case "Clean Up":
			dtDOM.setAttr(b,"src",dtDOM.g_url+"images/editor_icons/icon_fixparagraphs.gif");
			dtDOM.setHandler(b,"onclick",'return g_dtRTE.doExec("'+this.eid+'","dtCleanUp");');
			a.appendChild(b);
			break;
	}
	return a;
};
dtRTE.prototype.getSel = function() {
	if (!this.iframeWindow) this.getIframeWindow();
	if (this.iframeWindow.getSelection) {
		var sel = this.iframeWindow.getSelection();
	} else if (this.iframeDocument.getSelection) {
		var sel = this.iframeDocument.getSelection();
	} else if (this.iframeDocument.selection) {
		var sel = this.iframeDocument.selection;
	}
	this.selection = new dtRTEselection(this,sel);
	return this.selection;
};
dtRTE.prototype.contentFromEditor = function() {
	this.textualizePlaceholders();
	var content = this.getIframeContent();
	content = this.rgbToHex(content);
	if (content != "") {
		this.textarea.value = content;
		if (this.textarea.innerHTML) {
			//this.textarea.innerHTML = content;
		}
	}
};
dtRTE.prototype.contentToEditor = function() {
	var content = this.getTaContent();
	if (content != "") {
		if (content.indexOf('<br' == -1)) {
			var reg = /[\r\n]{2,4}/g;
			content = content.replace(reg,"<br><br>");
		}
		content = this.makePlaceholderImages(content);
		this.setIframeContent(content);
		this.textarea.blur();
	}
};
dtRTE.prototype.cleanContent = function() {
	this.textualizePlaceholders();
	this.fontsToSpans();
	var c = this.getIframeContent();
	c = c.replace(/<p>\s*<\/p>/g, "");
	c = c.replace(/<a href="[^"]+"><\/a>/g, "");
	c = c.replace(/<p>\s*<br \/>\s*<\/p>/g, "<p>&nbsp;</p>");
	this.setIframeContent(c);
};
dtRTE.prototype.textualizePlaceholders = function() {
	var doc = this.iframeDocument;
	var imgs = doc.getElementsByTagName("img");
	if (imgs.length) {
		// go in reverse order, since as we replace images with text, the DOM updates
		for(var i=(imgs.length-1);i>=0;i--) {
			if (dtDOM.hasClass(imgs[i],"placeholder")) {
				var alt = dtDOM.getAttr(imgs[i],"alt");
				// file_ refs exclude all alignment/size params
				var incfile = /file_[0-9]+/;
				m = /file_[0-9]+/.exec(alt);
				if (m != null) {
					var txtNode =  doc.createTextNode("#"+m[0]+"#");
				} else {
					var txtNode = doc.createTextNode("#"+alt+"#");
				}
				imgs[i].parentNode.replaceChild(txtNode,imgs[i]);
			}
		}
	}
}
dtRTE.prototype.fontsToSpans = function() {
	var fonts = this.iframeDocument.getElementsByTagName("FONT");
	var sizes = new Array("xx-small","x-small","small","medium","large","x-large","xx-large");
	for(var i=0;i<fonts.length;i++) {
		var fFamily = dtDOM.getAttr(fonts[i],"family");
		var fSize = dtDOM.getAttr(fonts[i],"size");
		var fColor = dtDOM.getAttr(fonts[i],"color");
		var fInner = fonts[i].innerHTML;
		var s = dtDOM.buildElement("SPAN","",false,this.iframeDocument);
		if (fFamily) dtDOM.setStyle(s,"fontFamily",fFamily);
		if (fSize) dtDOM.setStyle(s,"fontSize",sizes[fSize]);
		if (fColor) dtDOM.setStyle(s,"color",fColor);
		s.innerHTML = fInner;
		fonts[i].parentNode.replaceChild(s,fonts[i]);
	}
};
dtRTE.prototype.rgbToHex = function(str) {
		function toHex(N) {
			if (N==null) return "00";
			N=parseInt(N);
			if (N==0 || isNaN(N)) return "00";
			N=Math.max(0,N);
			N=Math.min(N,255);
			N=Math.round(N);
 			return "0123456789ABCDEF".charAt((N-N%16)/16) + "0123456789ABCDEF".charAt(N%16);
 		}
	var regex = /rgb\s?\(([0-9]+),\s?([0-9]+),\s?([0-9]+)\)/gi;
	var rgbarray;
	while ((rgbarray = regex.exec(str)) != null) {
		var hex = toHex(rgbarray[1]) + toHex(rgbarray[2]) + toHex(rgbarray[3]);
 		str = str.replace(rgbarray[0],"#"+hex);
	}
	return str;
};
dtRTE.prototype.makePlaceholderImages = function(str) {
	var ph,aligntxt,picsize,hw;
	var regex = /#((media|file)_([0-9]+);?(left|right|none)?;?(large|thumb)?)#/;
	while ((ph = regex.exec(str)) != null) {
		aligntxt = "";
		picsize = "";
		hw = 60;
		if (typeof ph[4] != "undefined" && ph[4] != "none") aligntxt = " "+ph[4];
		if (typeof ph[5] != "undefined" && ph[5] == "large") {
			picsize = " place"+ph[5];
			hw = 90;
		}
		var repltxt = '<img id="'+ph[1]+'" src="'+dtDOM.g_url+'images/editor_icons/placeholder.gif" class="placeholder imagebox'+aligntxt+picsize+'" height="'+hw+'" width="'+hw+'" alt="'+ph[1]+'" title="'+ph[1]+'" />';
 		str = str.replace(ph[0],repltxt);
	}
	return str;
};
function dtRTEselection(ed,sel) {
	this.editor = ed;
	this.selection = sel;
	this.collapsed = false;
	this.rng = false;
	this.text = "";
	this.htmltext = "";
	this.parentElement = false;
	if (dtDOM.isMSIE) {
		this.rng = sel.createRange();
		if (sel.type == "None") this.collapsed = true;
		this.text = this.rng.text;
		this.htmltext = this.rng.htmlText;
		this.parentElement = this.rng.parentElement();
	} else {
		this.rng = sel.getRangeAt(0);
		this.collapsed = this.rng.collapsed;
		this.text = this.rng.toString();
		this.parentElement = this.rng.commonAncestorContainer;
		if (this.parentElement.nodeType != 1) {
			this.parentText = this.parentElement;
			this.parentElement = this.parentText.parentNode;
		}
		if (!this.collapsed) {
			this.getDoubleclickElement();
		}
	}
};
dtRTEselection.prototype.setByNode = function(node,contents,after) {
	if (dtDOM.isMSIE) {
		this.rng.moveToElementText(node);
		this.rng.select();
	} else {
		this.selection.removeAllRanges();
		if (contents) {
			this.rng.selectNodeContents(node);
		} else {
			this.rng.selectNode(node);
		}
		if (after) {
			this.rng.collapse(false);
		} else {
			this.selection.addRange(this.rng);
		}
	}
};
dtRTEselection.prototype.getDoubleclickElement = function() {
	if (dtDOM.isMSIE) {
	} else {
		if (this.rng.startContainer.nodeType == 3 && (this.rng.startOffset == 0 || this.rng.startOffset == this.rng.startContainer.length) && this.rng.endContainer.nodeType == 3 && this.rng.endOffset == 0) {
			if (this.rng.startContainer.nextSibling == this.rng.endContainer.previousSibling) {
				this.doubleclickElement = this.rng.startContainer.nextSibling;
			} else if (this.rng.startContainer.parentNode == this.rng.endContainer.previousSibling) {
				this.doubleclickElement = this.rng.startContainer.parentNode;
			}
		}
	}
};
dtRTEselection.prototype.containsLink = function() {
	var r = null;
	if (this.parentElement.nodeName == "A") return this.parentElement;
	if (this.parentElement.nodeName != "BODY") {
		var r = dtDOM.seekParentElement(this.parentElement,"A");
		if (r == null) {
			if (this.parentText) {
				r = dtDOM.seekChildElement(this.parentText,"A");
			} else if (!dtDOM.isMSIE) {
				tempr = dtDOM.seekChildElement(this.parentElement,"A");
				if (tempr != null && this.rng.intersectsNode(tempr)) {
					r = tempr;
				}
			}
		}
	}
	return r;
};
dtRTEselection.prototype.expandToLink = function(linknode) {
	if (dtDOM.isMSIE) {
	} else {
		if (this.rng.compareNode(linknode) == 2) {
			dtalert("Extending range backwards and forwards");
			this.rng.selectNode(linknode);
			this.selection.addRange(this.rng);
		} else {
			var arng = this.editor.iframeDocument.createRange();
			arng.selectNode(linknode);
			if (arng.compareBoundaryPoints(arng.START_TO_START,this.rng) == -1) {
				dtalert("Extending range backwards");
				this.rng.setStart(this.parentElement,arng.startOffset);
				this.selection.addRange(this.rng);
			} else if (arng.compareBoundaryPoints(arng.END_TO_END,this.rng) == 1) {
				dtalert("Extending range forwards");
				this.rng.setEnd(this.parentElement,arng.endOffset);
				this.selection.addRange(this.rng);
			}
		}
	}
	return true;
};
function rteToggleButton(obj) {
	if (dtDOM.getAttr(obj,"class").indexOf("pressed") != -1) {
		dtalert("Button is pressed, unsetting");
		dtDOM.removeClass(obj,"pressed");
	} else {
		dtalert("Button is not pressed, setting");
		dtDOM.addClass(obj,"pressed");
	}
}
function rteMouseOver(e) {
	var evt = e ? e : window.event; 
	if (dtDOM.isMSIE) {
		targ = evt.srcElement;
	} else {
		targ = evt.target;
	}
	targ.style.borderBottomColor = "#999999";
	targ.style.borderRightColor = "#999999";
}
function rteMouseOut(e) {
	var evt = e ? e : window.event; 
	if (dtDOM.isMSIE) {
		targ = evt.srcElement;
	} else {
		targ = evt.target;
	}
	targ.style.borderBottomColor = "#eeeeee";
	targ.style.borderRightColor = "#eeeeee";
}
function rteMouseDown(e) {
	var evt = e ? e : window.event; 
	if (evt.returnValue) {
		evt.returnValue = false;
	} else if (evt.preventDefault) {
		evt.preventDefault( );
	} else {
		return false;
	}
}
function rteInsertMediaDiv(eid,str,align) {
	if (eid == "") return false;
	var ed = g_dtRTE.instances[eid];
	if (str.lastIndexOf("/") != -1) {
		var altstr = str.substr(str.lastIndexOf("/")+1);
	} else {
		var altstr = str;
	}
	if (ed.selection && ed.selection.collapsed) {
		if (dtDOM.isMSIE) {
			var aligntxt = align ? " "+align : "";
			var txt = '<div class="imagebox'+aligntxt+'"><img src="'+str+'" alt="'+altstr+'"></div>';
			ed.selection.rng.pasteHTML(txt);
		} else {
			var thediv = dtDOM.buildElement("DIV","", { "class": "imagebox" }, ed.iframeDocument);
			if (align != "") dtDOM.addClass(thediv,align);
			var ph = dtDOM.buildElement("IMG","", { src: str, alt: altstr } );
			thediv.appendChild(ph);
			ed.selection.rng.insertNode(thediv);
		}
	} else {
		alert("There is currently text selected. Please deselect the text and leave only an insertion point.");
	}
	return false;
}
function rteInsertMediaPlaceholder(eid,str,align,large) {
	if (eid == "") return false;
	var ed = g_dtRTE.instances[eid];
	if (large == "large") {
		var hw = 90;
	} else {
		var hw = 60;
	}
	if (ed.selection && ed.selection.collapsed) {
		if (dtDOM.isMSIE) {
			var aligntxt = "";
			if (align != "none") {
				aligntxt += " "+align;
			}
			if (large == "large") aligntext += " placelarge";
			ed.selection.rng.pasteHTML('<img id="'+str+'" src="'+dtDOM.g_url+'images/editor_icons/placeholder.gif" class="placeholder imagebox'+aligntxt+'" height="'+hw+'" width="'+hw+'" alt="'+str+';'+align+';'+large+'" title="'+str+'" />');
		} else {
			var ph = dtDOM.buildElement("IMG",str,{ src: dtDOM.g_url+"images/editor_icons/placeholder.gif", "class": "placeholder imagebox", "height": hw, "width": hw, "alt": str+';'+align+';'+large, "title": str });
			if (align != "none") dtDOM.addClass(ph,align);
			if (large == "large") dtDOM.addClass(ph,"placelarge");
			ed.selection.rng.insertNode(ph);
		}
	} else {
		alert("There is currently text selected. Please deselect the text and leave only an insertion point.");
	}
	return false;
}
function rteInsertLink(eid,path,newwin,add_g_url) {
	var ed = g_dtRTE.instances[eid];
	if (!ed.selection || ed.selection.collapsed) {
		alert("There is no text currently selected for the link.");
		return false;
	}
	if (add_g_url) path = dtDOM.url + path;
	if (dtDOM.isMSIE) {
		if (newwin) {
			if (ed.selection.htmltext) {
				contents = ed.selection.htmltext;
			} else {
				contents = ed.selection.text;
			}
			var txt = '<a href="'+path+'" onclick="return newWin(this.href,600,600);">'+contents+'</a>';
			ed.selection.rng.pasteHTML(txt);
		} else {
			g_dtRTE.doExec(eid,'createlink',path);
		}
	} else {
		var lnk = dtDOM.buildElement("A","", { href: path }, ed.iframeDocument);
		if (newwin) dtDOM.setHandler(lnk,"onclick","return newWin(this.href,600,600);");
		ed.selection.rng.surroundContents(lnk);
	}
}
function rteMimeChange(val) {
	if (typeof g_dtRTE.mimeIndex == "undefined") return true;
	if (val == g_dtRTE.rteMimeIndex) {
		g_dtRTE.showEditor();
	} else {
		g_dtRTE.hideEditor();
	}
	g_dtRTE.mimeIndex = val;
}