ho scaricato del codice javascript che in realtà è un editor html
ovviamente con tutti i limiti del caso ...
mo ti posto il codice :

codice:
<html>
<head>
<title>editor</title>
<script language="JavaScript">

var bHtmlMode = false;
var str_iFrameDoc = (document.all)? "document.frames(\"Composition\").document\;": "document.getElementById(\"Composition\").contentDocument\;";

// Inizializzazione
onload = initialize;
function initialize() {
	iFrameDoc = eval(str_iFrameDoc);
	iFrameDoc.open();
	iFrameDoc.write("<html><body MONOSPACE style='font:10pt arial,sans-serif'><div id='anteprima'></div></body></html>");
	iFrameDoc.close();
	iFrameDoc.designMode = "On";
	
	document.getElementById("switchMode").checked = false;
	
	if (!document.all) {
	    document.getElementById("taglia").style.visibility = "hidden";
	    document.getElementById("copia").style.visibility = "hidden";
	    document.getElementById("incolla").style.visibility = "hidden";
	}
}

// Porta il focus al riquadro di testo
function setFocus() {
if (document.all)
	document.frames("Composition").focus();
else
	document.getElementById('Composition').contentWindow.focus()
return;
}

// Controlla se la toolbar è abilitata nella modalità testo
function validateMode() {
	if (! bHtmlMode)
		return true;
	alert("Deselezionare \"Visualizza HTML\" per utilizzare le barre degli strumenti");
	
	setFocus();
	return false;
}

// Formatta il testo
function formatC(what,opt) {
	if (!validateMode())
		return;

	iFrameDoc = eval(str_iFrameDoc);
	iFrameDoc.execCommand(what,false,opt);
	setFocus();
	document.all.anteprima3.anteprima2.value=iFrameDoc.body.value
}

//Scambia tra la modalità testo e la modalità HTML.
function setMode(newMode) {
	var testo;
	
	bHtmlMode = newMode;
	
	iFrameDoc = eval(str_iFrameDoc);
	riquadro = iFrameDoc.body;
	
	if (document.all) {
		if (bHtmlMode) {
			testo = riquadro.innerHTML;
			riquadro.innerText = testo; 
					} else {
			testo = riquadro.innerText;
			riquadro.innerHTML = testo;
		}
		
	} else if(document.getElementById && document.createTextNode) {
		if (bHtmlMode) {
			testo = document.createTextNode(riquadro.innerHTML);
			riquadro.innerHTML = "";
			riquadro.appendChild(testo);
		} else {
			testo = document.createRange();
			testo.selectNodeContents(riquadro);
			riquadro.innerHTML = testo.toString();
		}	
	}

	setFocus();
}

function anteprima(){
alert(document.anteprima3.anteprima2.value)

	aaa=window.open();

	aaa.document.write("<html><body MONOSPACE style='font:10pt arial,sans-serif'>" + document.anteprima3.anteprima2.value  + "</body></html>");

	aaa.document.close();	

}
</script>
</head>

<body bgcolor="#FFFFFF" topmargin="0" marginheight="2">

<form name="anteprima3">

 	<input type="hidden"   name="anteprima2" value="">
	<input type="Button" value="Anteprima" onClick="anteprima()">
</form>
<form action="#" method="POST" name="composeForm">



<hr>
<table border="0" cellpadding="5" cellspacing="0" bgcolor="#FFFFFF" width="100%" class="greyborder">
	<tr>
		<td>
			<div id="ParaToolbar">
				<select id="ParagraphStyle" onchange="formatC('formatBlock',this[this.selectedIndex].value);this.selectedIndex=0">
					<option selected>Paragrafo
					<option value="&lt;H1&gt;">Testo Grandissimo
					<option value="&lt;H2&gt;">Testo Grande
					<option value="&lt;H3&gt;">Testo Medio Grande
					<option value="&lt;H4&gt;">Testo Medio
					<option value="&lt;H5&gt;">Testo Medio Piccolo 
					<option value="&lt;H6&gt;">Testo Piccolo
					<option value="&lt;PRE&gt;">Testo PRE Formattato
				</select>
				<select id="FontName" onchange="formatC('fontname',this[this.selectedIndex].value);this.selectedIndex=0">
					<option class="heading" selected>Tipo Carattere
					<option value="Arial">Arial
					<option value="Arial Black">Arial Black
					<option value="Arial Narrow">Arial Narrow
					<option value="Comic Sans MS">Comic Sans MS
					<option value="Courier New">Courier New
					<option value="System">System
					<option value="Times New Roman">Times New Roman
					<option value="Verdana">Verdana
					<option value="Wingdings">Wingdings
				</select>
				<select id="FontSize" onchange="formatC('fontsize',this[this.selectedIndex].value);this.selectedIndex=0">
					<option class="heading" selected>Dimensione
					<option value="1">1
					<option value="2">2
				    	<option value="3">3
					<option value="4">4
					<option value="5">5
					<option value="6">6
					<option value="7">7
				</select>
		    	<select id="FontColor" onchange="formatC('forecolor',this[this.selectedIndex].value);this.selectedIndex=0">
			    	<option class="heading" selected>Colore Testo
				    <option value="maroon">Marrone
				    <option value="purple">Viola Scuro
				    <option value="violet">Viola Chiaro
				    <option value="darkorange">Arancione Scuro
				    <option value="orange">Arancione
				    <option value="gray">Grigio
				    <option value="red">rosso
				    <option value="blue">blu
				    <option value="green">verde
				    <option value="black">nero
  	                            <option value="yellow">giallo
				    <option value="">BIANCO

				</select>
			   	<select id="FontBackColor" onchange="formatC('backcolor',this[this.selectedIndex].value);this.selectedIndex=0">
			    	<option class="heading" selected>Colore Sfondo
				    <option value="maroon">Marrone
				    <option value="purple">Viola Scuro
				    <option value="violet">Viola Chiaro
				    <option value="darkorange">Arancione Scuro
				    <option value="orange">Arancione
				    <option value="gray">Grigio
				    <option value="red">rosso
				    <option value="blue">blu
				    <option value="green">verde
				    <option value="black">nero
  	                            <option value="yellow">giallo
				    <option value="">BIANCO
				</select>
				<hr>
				<div id="EditMode">
					<input type=hidden name="switchMode" id="switchMode" onclick="setMode(switchMode.checked)">

					Rimuovi Formattazione Carattere
				</div>
				<hr>
			</div>

			<table>
				<tr>
					<td>
						<div title="Grassetto" onclick="formatC('bold');">
						    [img]img/bold.gif[/img]
						</div>
					</td>
					<td>
						<div title="Corsivo" onclick="formatC('italic')">
						    [img]img/italic.gif[/img]
						</div>
					</td>
				    <td>
						<div title="Sottolineato" onclick="formatC('underline')">
						    [img]img/under.gif[/img]
					    </div>
					</td>
					<td>
						<div title="Allinea a sinistra" onclick="formatC('justifyleft')">
						    [img]img/aleft.gif[/img]
					    </div>
					</td>
					<td>
						<div title="Centra" onclick="formatC('justifycenter')">
						    [img]img/center.gif[/img]
						</div>
					</td>
					<td>
						<div title="Allinea a destra" onclick="formatC('justifyright')">
						    [img]img/aright.gif[/img]
						</div>
					</td>
					<td>
						<div title="Elenco puntato" onclick="formatC('insertorderedlist')">
						    [img]img/nlist.gif[/img]
					    </div>
					</td>
					<td>
						<div title="Elenco numerato" onclick="formatC('insertunorderedlist')">
						    [img]img/blist.gif[/img]
					  	</div>
					</td>
					<td>
						<div title="Riduci rientro" onclick="formatC('outdent')">
						    [img]img/ileft.gif[/img]
						</div>
					</td>
					<td>
						<div title="Aumenta rientro" onclick="formatC('indent')">
						    [img]img/iright.gif[/img]
						</div>
					</td>
					<td>
						<div id="taglia" title="Taglia" onclick="formatC('cut')">
					    	[img]img/cut.gif[/img]
					 	</div>
					</td>
					<td>
						<div id="copia" title="Copia"  onclick="formatC('copy')">
						    [img]img/copy.gif[/img]
  						</div>
					</td>
				  	<td>
						<div id="incolla" title="Incolla" onclick="formatC('paste')">
						    [img]img/paste.gif[/img]
					    </div>
					</td>
			  	</tr>
			</table>

			<iframe class="Composition" width="100%" id="Composition" height="190">
			</iframe>
		</td>
	</tr>
</table>
</body>
</html>