function HtmlEdit_init(id) {
	var edit = document.getElementById(id);
	edit.iframe = document.getElementById(id + '_iframe'); 
	edit.iframe.edit = edit;
	edit.check = document.getElementById(id + '_check');
	edit.checked = edit.check.checked;
	edit.check.edit = edit;
	edit.toolbar = document.getElementById(id + '_toolbar');
	edit.panel = document.getElementById(id + '_panel');
	edit.checked = edit.check.checked;
	var fdoc = edit.iframe.contentWindow.document;
	fdoc.open();
	fdoc.write('<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">');
	fdoc.write('<html><head><style type=text/css>');
	for (var i = 0; i < document.styleSheets.length; i++) {
        for (var j = 0; j < document.styleSheets(i).rules.length; j++) {
            var rule = document.styleSheets[i].rules[j];
            if (rule.selectorText.toLowerCase() != 'body')
            fdoc.write(rule.selectorText + ' {' + rule.style.cssText + ' }\n');
        }
    }
	fdoc.write('.srccode {font-size: 9pt; font-family: "Courier New"; background-color: #ffffdd;}');
	fdoc.write('</style></head><body style=\"margin: 3px;\"');
	if (edit.checked)
	    fdoc.write(' class=srccode');
	else
	    fdoc.write(' class=' + edit.iframe.className);
	fdoc.write('>');
	if (edit.checked) {
	    var div = document.createElement("div");
	    div.innerText = edit.value;
	    fdoc.write(div.innerHTML);
	} else
		fdoc.write(edit.value);
	fdoc.write('</body></html>');
	fdoc.close();
	fdoc.designMode = 'on';
}
				
function HtmlEdit_copyText(id) {
	var edit = document.getElementById(id);
	edit.value = HtmlEdit_getHtml(edit);
	HtmlEdit_checkVResize(edit);
}

function HtmlEdit_checkVResize(edit) {
	if (edit.panel.autovresize == 'true') {
		var size = edit.iframe.contentWindow.document.body.scrollHeight;
		if (size > edit.panel.minheight) 
			edit.panel.style.height = size + (edit.panel.clientHeight - edit.iframe.clientHeight);
		else
		    edit.panel.style.height = edit.panel.minheight;
	}
}

function HtmlEdit_changeHtmlText(check) {
    var html = HtmlEdit_getHtml(check.edit);
    check.edit.checked = check.checked;
    HtmlEdit_setHtml(check.edit, html);
    check.edit.toolbar.style.display = check.checked ? 'none' : '';
    if (check.checked) {
		check.edit.toolbar.style.display = 'none';
		check.edit.iframe.contentWindow.document.body.className = 'srccode';
	} else {
		check.edit.toolbar.style.display = '';
		check.edit.iframe.contentWindow.document.body.className = check.edit.iframe.className;
	}
	HtmlEdit_checkVResize(check.edit);
}

function HtmlEdit_getHtml(edit) {
   if (edit.checked)
       return edit.iframe.contentWindow.document.body.innerText;
   else
       return edit.iframe.contentWindow.document.body.innerHTML;
}

function HtmlEdit_setHtml(edit, html) {
   if (edit.checked)
       edit.iframe.contentWindow.document.body.innerText = html;
   else
       edit.iframe.contentWindow.document.body.innerHTML = html;
}

function HtmlEdit_exec(id, cmd, value) {
  var edit = document.getElementById(id);
  edit.iframe.focus();
  document.execCommand(cmd, false, value); 
}

function HtmlEdit_open(id, cmd, value) {
  var edit = document.getElementById(id);
  edit.iframe.focus();
  document.execCommand(cmd, true, value); 
}

function HtmlEdit_callColorDlg(id, sColorType){
    var edit = document.getElementById(id);
	if (edit.sInitColor == null) 
		var sColor = document.dlgHelper.ChooseColorDlg();
	else
		var sColor = document.dlgHelper.ChooseColorDlg(edit.sInitColor);
	sColor = sColor.toString(16);
	if (sColor.length < 6) {
  		var sTempString = "000000".substring(0,6-sColor.length);
  		sColor = sTempString.concat(sColor);
	}
	HtmlEdit_exec(id, sColorType, sColor);
	edit.sInitColor = sColor;
}

function HtmlEdit_OnLoad() {
   var inputs = document.getElementsByTagName("INPUT");
   for (var i = 0; i < inputs.length; i++) {
       var input = inputs[i];
       if (input.panel && input.iframe) {
          input.panel.minheight = input.panel.clientHeight;
          HtmlEdit_checkVResize(input);
       }
   }
}

if (window.attachEvent)
	window.attachEvent('onload', HtmlEdit_OnLoad);
else
    window.addEventListener('load', HtmlEdit_OnLoad, false);
