// constants
DECMD_BOLD = 5000 
DECMD_COPY = 5002 
DECMD_CUT = 5003 
DECMD_DELETE = 5004 
DECMD_DELETECELLS = 5005 
DECMD_DELETECOLS = 5006 
DECMD_DELETEROWS = 5007 
DECMD_FINDTEXT = 5008 
DECMD_FONT = 5009 
DECMD_GETBACKCOLOR = 5010 
DECMD_GETBLOCKFMTNAMES = 5012 
DECMD_GETFONTNAME = 5013 
DECMD_GETFONTSIZE = 5014 
DECMD_GETFORECOLOR = 5015 
DECMD_HYPERLINK = 5016 
DECMD_IMAGE = 5017 
DECMD_INDENT = 5018 
DECMD_INSERTCELL = 5019 
DECMD_INSERTCOL = 5020 
DECMD_INSERTROW = 5021 
DECMD_INSERTTABLE = 5022 
DECMD_ITALIC = 5023 
DECMD_JUSTIFYCENTER = 5024 
DECMD_JUSTIFYLEFT = 5025 
DECMD_JUSTIFYRIGHT = 5026 
DECMD_LOCK_ELEMENT = 5027 
DECMD_MAKE_ABSOLUTE = 5028 
DECMD_MERGECELLS = 5029 
DECMD_ORDERLIST = 5030 
DECMD_OUTDENT = 5031 
DECMD_PASTE = 5032 
DECMD_REDO = 5033 
DECMD_REMOVEFORMAT = 5034 
DECMD_SELECTALL = 5035 
DECMD_SEND_BACKWARD = 5036 
DECMD_BRING_FORWARD = 5037 
DECMD_SEND_BELOW_TEXT = 5038 
DECMD_BRING_ABOVE_TEXT = 5039 
DECMD_SEND_TO_BACK = 5040 
DECMD_BRING_TO_FRONT = 5041 
DECMD_SETBACKCOLOR = 5042 
DECMD_SETBLOCKFMT = 5043 
DECMD_SETFONTNAME = 5044 
DECMD_SETFONTSIZE = 5045 
DECMD_SETFORECOLOR = 5046 
DECMD_SPLITCELL = 5047 
DECMD_UNDERLINE = 5048 
DECMD_UNDO = 5049 
DECMD_UNLINK = 5050 
DECMD_UNORDERLIST = 5051 
DECMD_PROPERTIES = 5052 
 
// OLECMDEXECOPT   
OLECMDEXECOPT_DODEFAULT = 0  
OLECMDEXECOPT_PROMPTUSER = 1 
OLECMDEXECOPT_DONTPROMPTUSER = 2 
 
// DHTMLEDITCMDF 
DECMDF_NOTSUPPORTED = 0  
DECMDF_DISABLED = 1  
DECMDF_ENABLED = 3 
DECMDF_LATCHED = 7 
DECMDF_NINCHED = 11 
 
// DHTMLEDITAPPEARANCE 
DEAPPEARANCE_FLAT = 0 
DEAPPEARANCE_3D = 1  
 
// OLE_TRISTATE 
OLE_TRISTATE_UNCHECKED = 0 
OLE_TRISTATE_CHECKED = 1 
OLE_TRISTATE_GRAY = 2 
  
// color processing globals
var zColor = new Array();
var iColors = 0;
var iRed, iGreen, iBlue;
  
for(r=0; r<6; r++)	{
	for(g=0; g<6; g++) {
		for(b=0; b<6; b++) {
			iRed = 51*r;
			iGreen = 51*g;
			iBlue = 51*b;
  		
			iRed = iRed.toString(16);
			iGreen = iGreen.toString(16);
			iBlue = iBlue.toString(16);
  		
			if(iRed=="0") iRed = "00";
			if(iGreen=="0") iGreen = "00";
			if(iBlue=="0") iBlue = "00";
  		
			zColor[iColors] =  "#" + iGreen + iRed + iBlue;
			iColors++;
		}
	}
}
 
// v2 global variables
var sAgent = navigator.userAgent.toLowerCase();
var sAgentType = "unknown";
if ( sAgent.indexOf("msie") != -1 && sAgent.indexOf("mac") == -1 && sAgent.indexOf("opera") == -1 ) {
    if ( navigator.appVersion.match(/MSIE (.\..)/)[1] >= 5.5 ) { sAgentType = "msie"; }
}
else if ( navigator.product == "Gecko" && navigator.productSub >= 20030210 ) { sAgentType = "gecko"; }

var selImgObj = null;	// selected image object

// v2 functions
function insertNodeAtSelection(ptr_editor, insertNode) {
	var sel = ptr_editor.contentDocument.defaultView.getSelection();
	var range = sel.getRangeAt(0);

	sel.removeAllRanges();
	range.deleteContents();
	var container = range.startContainer;
	var pos = range.startOffset;
	range=document.createRange();
	
	if (container.nodeType==3 && insertNode.nodeType==3) {
		container.insertData(pos, insertNode.nodeValue);
		range.setEnd(container, pos+insertNode.length);
		range.setStart(container, pos+insertNode.length);
	}
	else {
		var afterNode;
		if (container.nodeType==3) {
			var textNode = container;
			container = textNode.parentNode;
			var text = textNode.nodeValue;
			var textBefore = text.substr(0,pos);
			var textAfter = text.substr(pos);
			var beforeNode = document.createTextNode(textBefore);
			var afterNode = document.createTextNode(textAfter);
			container.insertBefore(afterNode, textNode);
			container.insertBefore(insertNode, afterNode);
			container.insertBefore(beforeNode, insertNode);
			container.removeChild(textNode);
		} 
		else {
			afterNode = container.childNodes[pos];
			container.insertBefore(insertNode, afterNode);
		}
		range.setEnd(afterNode, 0);
		range.setStart(afterNode, 0);
	}
	sel.addRange(range);
}

function insertHtmlGecko(this_ptr_editor,source) {
	try {
		var oSel = this_ptr_editor.contentDocument.defaultView.getSelection(); 
		for ( var i = 0 ; i < oSel.rangeCount ; i++ ) {
			oSel.getRangeAt(i).deleteContents() ;
		}
		var oRange = oSel.getRangeAt(0);
		var oContainer = oRange.startContainer;
		var oFragment = oRange.createContextualFragment(source);
		var oLastNode = oFragment.lastChild;
		var pos = oRange.startOffset;
		
		oRange.insertNode(oFragment);
		
		oSel.empty();
		return oRange;
	}
	catch (errorInfo) { }
}
 
function insertElementGecko(this_ptr_editor,element) {
	try {
		var oSel = this_ptr_editor.contentDocument.defaultView.getSelection();
		for ( var i = 0 ; i < oSel.rangeCount ; i++ ) {
			oSel.getRangeAt(i).deleteContents();
		}
		var oRange = oSel.getRangeAt(0);
		oRange.insertNode(element);
	}
	catch (errorInfo) { }
}
 
function getSelectedElement(ptr_editor) {
	try {
		var oSel = ptr_editor.contentDocument.defaultView.getSelection(); 
		if ( oSel.rangeCount == 1 ) {
		var oRange = oSel.getRangeAt(0) ;
			if ( oRange.startContainer == oRange.endContainer && (oRange.endOffset - oRange.startOffset) == 1 )
				return oSel.anchorNode.childNodes[oSel.anchorOffset];
		}
	}
	catch (errorInfo) { }
}

function getSelectedAncestor(oElement, ancestorTagName ) {
	try {
		var oNode = oElement.parentNode ;
		while (oNode)	{
			if (oNode.nodeName == ancestorTagName) {
				return oNode;
			}
			oNode = oNode.parentNode ;
		}
	}
	catch (errorInfo) { }
}

function getSelectedAncestorElement(ptr_editor,nodeTagName) {
	try {
	 	if (sAgentType == "msie") {
			var oSel = ptr_editor.DOM.selection;
			var oNode = oSel.createRange().parentElement();
		}
		else {
			var oSel = ptr_editor.contentDocument.defaultView.getSelection(); 
			var oNode = oSel.anchorNode;
		}
		while (oNode) {
			if (oNode.tagName == nodeTagName) { 
				return oNode;
			}
			else {
				oNode = oNode.parentNode;
			}
		}
	}
	catch (errorInfo) { }
}

function moveToAncestorNode(ptr_editor,nodeTag) {
	try {
	 	if (sAgentType == "msie") {
			var oSel = ptr_editor.DOM.selection;
		}
		else {
			var oSel = ptr_editor.contentDocument.defaultView.getSelection(); 
		}
		var oRange = oSel.createRange();
		var oNode = oRange.parentElement() ;
		while ( oNode && oNode.nodeName != nodeTag ) {
			oNode = oNode.parentNode;
		}
		return oNode;
	}
	catch (errorInfo) { }
}

function moveToNode(ptr_editor,node) {
	try {
		var oSel = ptr_editor.contentDocument.defaultView.getSelection();

		for (i=oSel.rangeCount-1;i>= 0;i--) {
			if (i==0) {
				oSel.getRangeAt(i).selectNodeContents(node);
			}
			else {
				oSel.removeRange(oSel.getRangeAt(i));
			}
		}
	}
	catch (errorInfo) { }
}

function getPtrEditor(nom_editor) {
	return eval('document.getElementById(nom_editor)');
}
 
function isDisplayHTML(nom_editor) {
	editor_parm_obj = eval(nom_editor + '_parm_obj');
	return (editor_parm_obj.boolDisplayHTML);
}
 
function functionNotAvailableInBrowser() {
 alert(lgArr["notavailable"]);
}

function setHTMLGecko(ptr_editor,source) {
	ptr_editor.contentDocument.designMode = "off";
	ptr_editor.contentDocument.body.innerHTML = source;
	ptr_editor.contentDocument.designMode = "on";
}

function getHTMLGecko(ptr_editor) {
	return ptr_editor.contentDocument.body.innerHTML;
}

function setAttribute(element,attName,attValue){
	if (attValue == null || attValue.length == 0 )
		element.removeAttribute(attName,0 );
	else
		element.setAttribute(attName,attValue,0);

}

function setStyleSheetGecko(gecko_ptr_editor,stylesheet) {
	var head = gecko_ptr_editor.contentDocument.getElementsByTagName("head")[0];
	var links = gecko_ptr_editor.contentDocument.getElementsByTagName("link");
	var styleBase = null;
	var styleAlt = null;
	for (var i = links.length; --i >= 0;) {
		var oLink = links[i];
		if (/stylesheet/i.test(oLink.rel)) {
			if (/alternate/i.test(oLink.rel))
				styleAlt = oLink;
			else
				styleBase = oLink;
		}
	}
	if (styleAlt) {
		styleBase.href = stylesheet;
	}
}

function getParentElement(ptr_editor) {
	var oSel = ptr_editor.contentDocument.defaultView.getSelection();
	var oRange = oSel.getRangeAt(0);

	try {
		var p = oRange.commonAncestorContainer;
		if (!oRange.collapsed && oRange.startContainer == oRange.endContainer &&
		    oRange.startOffset - oRange.endOffset <= 1 && oRange.startContainer.hasChildNodes())
			p = oRange.startContainer.childNodes[oRange.startOffset];

		while (p.nodeType == 3) {
			p = p.parentNode;
		}
		return p;
	} catch (e) {
		return null;
	}
}

function getAllAncestors(ptr_editor) {
	var p = getParentElement(ptr_editor);

	var a = [];
	while (p && (p.nodeType == 1) && (p.tagName.toLowerCase() != 'body')) {
		a.push(p);
		p = p.parentNode;
	}
	a.push(ptr_editor.contentDocument.body);
	return a;
};

function getClosest(ptr_editor, tagName) {
	var ancestors = getAllAncestors(ptr_editor);

	var oRet = null;
	tagName = ("" + tagName).toLowerCase();
	for (var i in ancestors) {
		var element = ancestors[i];
		if (element.tagName.toLowerCase() == tagName) {
			oRet = element;
			break;
		}
	}
	return oRet;
}

function selectNodeContents(ptr_editor, oNode, pos) {
	var collapsed = (typeof pos != "undefined");
	var oSel = ptr_editor.contentDocument.defaultView.getSelection();
	var oRange = ptr_editor.contentDocument.createRange();
	
	oRange.selectNodeContents(oNode);
	(collapsed) && oRange.collapse(pos);
	oSel.removeAllRanges();
	oSel.addRange(oRange);
}

function actionTableChangeGecko(ptr_editor, action) {

	function clearRow(tr) {
		var tds = tr.getElementsByTagName("td");
		for (var i = tds.length; --i >= 0;) {
			var td = tds[i];
			td.rowSpan = 1;
			td.innerHTML = "<br>";
		}
	};

	function splitRow(td) {
		var n = parseInt("" + td.rowSpan);
		var nc = parseInt("" + td.colSpan);
		td.rowSpan = 1;
		tr = td.parentNode;
		var itr = tr.rowIndex;
		var trs = tr.parentNode.rows;
		var index = td.cellIndex;
		while (--n > 0) {
			tr = trs[++itr];
			var otd = ptr_editor.contentDocument.createElement("td");
			otd.colSpan = td.colSpan;
			otd.innerHTML = "<br>";
			tr.insertBefore(otd, tr.cells[index]);
		}
	};

	function splitCol(td) {
		var nc = parseInt("" + td.colSpan);
		td.colSpan = 1;
		tr = td.parentNode;
		var ref = td.nextSibling;
		while (--nc > 0) {
			var otd = ptr_editor.contentDocument.createElement("td");
			otd.rowSpan = td.rowSpan;
			otd.innerHTML = "<br>";
			tr.insertBefore(otd, ref);
		}
	};

	function splitCell(td) {
		var nc = parseInt("" + td.colSpan);
		splitCol(td);
		var items = td.parentNode.cells;
		var index = td.cellIndex;
		while (nc-- > 0) {
			splitRow(items[index++]);
		}
	};

	function selectNextNode(el) {
		var node = el.nextSibling;
		while (node && node.nodeType != 1) {
			node = node.nextSibling;
		}
		if (!node) {
			node = el.previousSibling;
			while (node && node.nodeType != 1) {
				node = node.previousSibling;
			}
		}
		if (!node) {
			node = el.parentNode;
		}
		selectNodeContents(ptr_editor,node);
	};

	switch (action) {
		// ROWS
	    case "cRowInsertAbove":
	    case "cRowInsertBelow":
		var tr = getClosest(ptr_editor,"tr");
		if (!tr) {
			break;
		}
		var otr = tr.cloneNode(true);
		clearRow(otr);
		tr.parentNode.insertBefore(otr, /under/.test(action) ? tr.nextSibling : tr);
		break;
		
	    case "cRowDelete":
		var tr = getClosest(ptr_editor,"tr");
		if (!tr) {
			break;
		}
		var par = tr.parentNode;
		if (par.rows.length == 1) {
			break;
		}
		selectNextNode(tr);
		par.removeChild(tr);
		break;
		
	    case "cRowSplit":
		var td = getClosest(ptr_editor,"td");
		if (!td) {
			break;
		}
		splitRow(td);
		break;

		// COLUMNS
	    case "cColInsertBefore":
	    case "cColInsertAbove":
		var td = getClosest(ptr_editor,"td");
		if (!td) {
			break;
		}
		var rows = td.parentNode.parentNode.rows;
		var index = td.cellIndex;
		for (var i = rows.length; --i >= 0;) {
			var tr = rows[i];
			var ref = tr.cells[index + (/after/.test(action) ? 1 : 0)];
			var otd = ptr_editor.contentDocument.createElement("td");
			otd.innerHTML = "<br>";
			tr.insertBefore(otd, ref);
		}
		break;

	    case "cColSplit":
		var td = getClosest(ptr_editor,"td");
		if (!td) {
			break;
		}
		splitCol(td);
		break;

	    case "cColDelete":
		var td = getClosest(ptr_editor,"td");
		if (!td) {
			break;
		}
		var index = td.cellIndex;
		if (td.parentNode.cells.length == 1) {
			break;
		}
		selectNextNode(td);
		var rows = td.parentNode.parentNode.rows;
		for (var i = rows.length; --i >= 0;) {
			var tr = rows[i];
			tr.removeChild(tr.cells[index]);
		}
		break;

		// CELLS
	    case "cCellSplit":
		var td = getClosest(ptr_editor,"td");
		if (!td) {
			break;
		}
		splitCell(td);
		break;
		
	    case "cCellInsertBefore":
	    case "cCellInsertAfter":
		var td = getClosest(ptr_editor,"td");
		if (!td) {
			break;
		}
		var tr = td.parentNode;
		var otd = ptr_editor.contentDocument.createElement("td");
		otd.innerHTML = "<br>";
		tr.insertBefore(otd, /after/.test(action) ? td.nextSibling : td);
		break;

	    case "cCellDelete":
		var td = getClosest(ptr_editor,"td");
		if (!td) {
			break;
		}
		if (td.parentNode.cells.length == 1) {
			break;
		}
		selectNextNode(td);
		td.parentNode.removeChild(td);
		break;

	    case "cCellMerge":
		var sel = ptr_editor.contentDocument.defaultView.getSelection();
		var range, i = 0;
		var rows = [];
		var row = null;
		var cells = null;
		try {
			while (range = sel.getRangeAt(i++)) {
				var td = range.startContainer.childNodes[range.startOffset];
				if (td.parentNode != row) {
					row = td.parentNode;
					(cells) && rows.push(cells);
					cells = [];
				}
				cells.push(td);
			}
		} catch(e) { }
		rows.push(cells);

		if (!cells) {
			break;
		}
		var HTML = "";
		for (i = 0; i < rows.length; ++i) {
			var cells = rows[i];
			for (var j = 0; j < cells.length; ++j) {
				var cell = cells[j];
				HTML += cell.innerHTML;
				(i || j) && (cell.parentNode.removeChild(cell));
			}
		}
		var td = rows[0][0];
		td.innerHTML = HTML;
		td.rowSpan = rows.length;
		td.colSpan = rows[0].length;
		selectNodeContents(ptr_editor,td);
		break;

	    default:
			// do nothing
	}
}
// end v2 functions

// load gif icon image 
function load_icon(nom_editor,nom_img,graf) { 
	document.images[nom_img].src = graf; 
	return true; 
} 

function make_grid(nom_editor) {
var t=0,text 
	editor_parm_obj = eval(nom_editor + '_parm_obj');
	strImgSrc = editor_parm_obj.imgpath + 'trans.gif';

	text='<center><table border=1 cellspacing=0 cellpadding=0>'; 
	for(i=0; i<12; i++) {
		text+='<tr>';
		for(j=0; j<18; j++) {
			iCellCount = (i*18) + j;
			text+='<td bgcolor="'+zColor[iCellCount]+'" ><a href=javascript:canvas("'+zColor[iCellCount]+'"); ><img src="'+strImgSrc+'" border=0 width=16 height=16 alt="'+zColor[iCellCount]+'" onMouseOver="showHex(\''+zColor[iCellCount]+'\')"></a></td>'; 
		}
		text+='</tr>'
	} 
	text+='</tr></table></center>' 
	return text 
}
   
function color_pallete(color_funct,nom_editor){ 
	if (isDisplayHTML(nom_editor)) return;

	var pal_col, k, tc 
	pal_col=window.open("","color_pallete","screenX=80,screenY=80,width=360,height=320") 
	pal_col.document.open() 
	k=pal_col.document; 
	k.writeln("<html><head>");
	k.writeln('<link rel="stylesheet" href="tgstyle.css">') 
	k.writeln("<script> function canvas(hexa) { "+color_funct+"(hexa,'" + nom_editor + "'); window.close(); }   function closeHex() { "+color_funct+"(document.getElementById('colorSelect').value,'" + nom_editor + "'); window.close(); }  function showHex(hexa) { document.getElementById('colorSelect').value = hexa; ; document.getElementById('example').color = hexa; } function showHexBox() { document.getElementById('example').color = document.getElementById('colorSelect').value; }</"+"script></head><body bgcolor=white ><center>") 
	k.writeln('<table width="95%" border="1" cellpadding="5" bgcolor="#FFFFFF"><tr><td>');
	k.writeln("<font color=black face=arial size=-1 ><b>" + lgArr["Selectcolour"] + "</b></font>") 
	tc=make_grid(nom_editor)
	k.writeln(tc) 
	k.writeln("<table border=0 cellpadding=2><tr><td><font color=black face=arial size=-1 ><b>"+lgArr["orentervalue"]+"</b></font> <input type='text' size=7 id='colorSelect' onKeyPress='showHexBox()'>&nbsp;")
	k.writeln("<input type='button' value='OK' onClick='closeHex()' ><br><font id=example face=arial size=-1 color=#000000><b>" + lgArr["exampletext"] + "</b></font></td></tr></table>")
	k.writeln("</td></tr></table>")
 	k.writeln("</center></body></html>")
	k.close() 
	pal_col.focus() 
} 

function get_editor_html(nom_editor) { 
	ptr_editor = eval('document.getElementById(nom_editor)');
	var cont = ptr_editor.DocumentHTML;   
	var texto = "" + cont   

	editor_parm_obj = eval(nom_editor + '_parm_obj');
	if(!editor_parm_obj.complete_doc) { 
		texto = strip_body(texto); 
	} 
	return texto 
} 

function set_editor_html(nom_editor,source) { 
	var this_ptr_editor = eval('document.getElementById(nom_editor)');

	if (sAgentType == "msie") {
		this_ptr_editor.DocumentHTML = source;
	}
	else {
		insertHtmlGecko(this_ptr_editor,source)
	}
} 

function strip_body(cont) { 
var  ini_cos = cont.search(/<BODY/i); 

	if( ini_cos == -1 ){ 
		return cont; 
	} 
	var  lon = cont.length 
	var  fi = false 
	var prob = false 
	var  i = ini_cos + 5 

	while( !fi ){ 
 		car = cont.charAt(i); 
		if( car == '>' ){ 
			ini_cos = i + 1  
			fi = true 
		} 
		if( car == '"' || car == "'" ) { 
			fi_com = false 
			i++ 
			if( i >= lon ){ 
				fi = true; 
				prob = true; 
				fi_com = true; 
			} 
			while( !fi_com ) { 
				car_aux = cont.charAt(i); 
				if( car_aux == car ) { 
					fi_com = true 
				} 
				else { 
					i++; 
				} 
				if( i >= lon ) { 
					fi = true; 
					prob = true; 
					fi_com = true; 
				} 
			} 
		} 
		i++; 
		if( i >= lon ) { 
			fi = true; 
			prob = true; 
		} 
	}
 
	if( prob == true ) { 
		alert(lgArr["HTMLProblems"]); 
 	} 
	else { 
		var fi_cos = cont.search(/<\/BODY/i); 
		var aux = cont.substring(ini_cos,fi_cos)
		cont = aux 
	} 
	return cont;
}

function new_doc(nom_editor){ 

	try {
		if( confirm(lgArr["CheckBlank1"]) && confirm(lgArr["CheckBlank2"]) ) { 
			ptr_editor = getPtrEditor(nom_editor);
	  		if (sAgentType=="msie") {
				ptr_editor.NewDocument(); 
			}
			else {
				setHTMLGecko(ptr_editor,'');
			}
		} 
	}
	catch (errorInfo) { }
} 

function geckoCutCopyPaste() {
	var gecko_info=window.open("","color_pallete","screenX=40,screenY=40,width=580,height=300") 
	gecko_info.document.open() 
	k=gecko_info.document; 
	k.writeln("<html><head>");
	k.writeln('<link rel="stylesheet" href="tgstyle.css">') 
	k.writeln('<table width="95%" border="1" cellpadding="5" bgcolor="#FFFFFF"><tr><td>');	
	k.writeln(lgArr["Mozilla1"]);	
	k.writeln(lgArr["Mozilla2"]);
	k.writeln(lgArr["Mozilla3"]);
	k.writeln('<font size=1>');
	k.writeln('user_pref("capability.policy.policynames", "allowclipboard");<br>');
	k.writeln('user_pref("capability.policy.allowclipboard.sites", "http://www.sitenametoedit.com");<br>');
	k.writeln('user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess");<br>');
	k.writeln('user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess");<br>');
	k.writeln('</font>');
	k.writeln(lgArr["Mozilla4"]);
	k.writeln('</td></tr><tr><td align=center><input type=button name=OK value=' + lgArr["OK"] + ' onclick="window.close()">') 
	k.writeln("</td></tr></table></center></body></html>") 
	k.close() 
	gecko_info.focus() 
}

function cut(nom_editor) { 
	ptr_editor = getPtrEditor(nom_editor);
	
	if (sAgentType == "msie") {
		ptr_editor.ExecCommand(DECMD_CUT,OLECMDEXECOPT_DODEFAULT); 
	}
	else {
		try {
			ptr_editor.contentDocument.execCommand('cut', false, null);
		}
		catch (errorInfo) { 
			if (sAgentType == "gecko") {
				geckoCutCopyPaste();
			}
		}
	}
} 

function copy(nom_editor) { 
	ptr_editor = getPtrEditor(nom_editor);
	
	if (sAgentType == "msie") {
		ptr_editor.ExecCommand(DECMD_COPY,OLECMDEXECOPT_DODEFAULT); 
	}
	else {
		try {
			ptr_editor.contentDocument.execCommand('cut', false, null);
		}
		catch (errorInfo) { 
			if (sAgentType == "gecko") {
				geckoCutCopyPaste();
			}
		}
	}
} 

function paste(nom_editor){ 
	ptr_editor = getPtrEditor(nom_editor);
	
	if (sAgentType == "msie") {
		ptr_editor.ExecCommand(DECMD_PASTE,OLECMDEXECOPT_DODEFAULT); 
	}
	else {
		try {
			ptr_editor.contentDocument.execCommand('cut', false, null);
		}
		catch (errorInfo) { 
			if (sAgentType == "gecko") {
				geckoCutCopyPaste();
			}
		}
	}
} 

function undo(nom_editor) { 
	ptr_editor = getPtrEditor(nom_editor);

	try {
		if (sAgentType == "msie") {
			ptr_editor.ExecCommand(DECMD_UNDO,OLECMDEXECOPT_DODEFAULT); 
		}
		else {
			ptr_editor.contentDocument.execCommand('undo', false, null);
		}
	}
	catch (errorInfo) { }
} 

function redo(nom_editor) { 
	ptr_editor = getPtrEditor(nom_editor);

	try {
		if (sAgentType == "msie") {
			ptr_editor.ExecCommand(DECMD_REDO,OLECMDEXECOPT_DODEFAULT); 
		}
		else {
			ptr_editor.contentDocument.execCommand('redo', false, null);
		}
	}
	catch (errorInfo) { }
} 

function link_editor(nom_editor){ 
var sProtocol = "";
var sURL = "";
var sSel = "";

	if (isDisplayHTML(nom_editor)) return;
	ptr_editor = getPtrEditor(nom_editor);
	var oLink = getSelectedAncestorElement(ptr_editor,'A');
	if (oLink) {
		moveToNode(ptr_editor,oLink);	
		var rRegexp = new RegExp('') ; 
		rRegexp.compile( '^(((http|https|ftp|news):\/\/)|mailto:)', 'gi' ) ;
		var sTarget = oLink.getAttribute('target',2);
		var sHRef = oLink.getAttribute('href',2);
		sProtocol = rRegexp.exec(sHRef);
		if (sProtocol==null) {
			sProtocol = "";
		}
		else {
			sProtocol = sProtocol[0].toLowerCase();
		}
		sURL = sHRef.replace(rRegexp,'');
	}
	var funct = 'opener.action_link_editor';
	var link_win, k, tc;
	link_win=window.open("","link_editor","screenX=80,screenY=80,width=480,height=180");
	link_win.document.open();
	k=link_win.document; 
	k.writeln("<html><head><title>" + lgArr["LinkProperties"] + "</title></head>");
	k.writeln('<link rel="stylesheet" href="tgstyle.css">');
	k.writeln("<script> function check_values() { ") 
	k.writeln(funct+"('"+nom_editor+"', document.info_table.cmbLinkProtocol.value, document.info_table.urltext.value, document.info_table.cmbLinkTarget.value);");
	k.writeln("window.close();");
	k.writeln("return true;") 
	k.writeln("} </script>") 
	k.writeln('<form name=info_table onsubmit="check_values();" >'); 
	k.writeln('<table cellspacing="2" cellpadding="2" width="100%" border="1"><tr CLASS="backgrounddark"><td>');
	k.writeln("<font color=black face=arial size=-1 ><b> " + lgArr["enterparmpressok"] + "</b><br>&nbsp;</font>") 
	k.writeln('<table cellspacing="2" cellpadding="2" width="100%" border="0" CLASS="backgroundmedium">');
	k.writeln('<tr><td><b>Protocol</b></td><td>');
	k.writeln('<select name="cmbLinkProtocol" id="cmbLinkProtocol">');
	if (sProtocol=="") { sSel = 'selected="selected"'; } else { sSel = ''; } 
	k.writeln('<option value="" ' + sSel + '>none</option>');
	if (sProtocol=="http://") { sSel = 'selected="selected"'; } else { sSel = ''; } 
	k.writeln('<option value="http://" ' + sSel + '>http://</option>');
	if (sProtocol=="https://") { sSel = 'selected="selected"'; } else { sSel = ''; } 
	k.writeln('<option value="https://" ' + sSel + '>https://</option>');
	if (sProtocol=="ftp://") { sSel = 'selected="selected"'; } else { sSel = ''; } 
	k.writeln('<option value="ftp://" ' + sSel + '>ftp://</option>');
	if (sProtocol=="mailto://") { sSel = 'selected="selected"'; } else { sSel = ''; } 
	k.writeln('<option value="mailto://" ' + sSel + '>mailto://</option>');
	if (sProtocol=="news://") { sSel = 'selected="selected"'; } else { sSel = ''; } 
	k.writeln('<option value="news://" ' + sSel + '>news://</option>'); 
	k.writeln('<option value="unlink">' + lgArr["removelink"] + '</option>'); 
	k.writeln('</select>&nbsp;' + lgArr["removelinktext"] + '</td></tr><tr><td><b>' + lgArr["Target"] + '</b></td><td>');
	k.writeln('<select name="cmbLinkTarget" id="cmbLinkTarget">');
	if (sTarget=="") { sSel = 'selected="selected"'; } else { sSel = ''; } 
	k.writeln('<option value="none" ' + sSel + '>Not set</option>');
	if (sTarget=="popup") { sSel = 'selected="selected"'; } else { sSel = ''; } 
	k.writeln('<option value="popup" ' + sSel + '>popup</option>');
	if (sTarget=="_blank") { sSel = 'selected="selected"'; } else { sSel = ''; } 
	k.writeln('<option value="_blank" ' + sSel + '>_blank</option>');
	if (sTarget=="_parent") { sSel = 'selected="selected"'; } else { sSel = ''; } 
	k.writeln('<option value="_parent" ' + sSel + '>_parent</option>');
	if (sTarget=="_self") { sSel = 'selected="selected"'; } else { sSel = ''; } 
	k.writeln('<option value="_self" ' + sSel + '>_self</option>');
	if (sTarget=="_top") { sSel = 'selected="selected"'; } else { sSel = ''; } 
	k.writeln('<option value="_top" ' + sSel + '>_top</option>');
	k.writeln('</select>');
	k.writeln('</select></td></tr><tr><td><b>URL</b></td>');
	k.writeln('<td><input name="urltext" type="text" id="urltext" style="WIDTH: 100%" value='+sURL+'></td></tr></table>');
	k.writeln('<table width="100%" border="0" cellpadding="1" CLASS="backgroundlight"><tr><td><center>');
	k.writeln('<INPUT TYPE=BUTTON NAME=OK VALUE=' + lgArr["OK"] + ' onclick="check_values()" >&nbsp;<INPUT TYPE=BUTTON NAME=CANCEL VALUE=' + lgArr["Cancel"] + ' onclick="window.close()"');
	k.writeln("</center></td></tr></table></tr></td></table></td></tr></table></form></form></body></html>") 
	k.close() 
	link_win.focus() 
} 

function action_link_editor(nom_editor,protocol,urltext,urltarget) {
	if (isDisplayHTML(nom_editor)) return;
	ptr_editor = getPtrEditor(nom_editor);

	var target = "";
	if (urltarget!="none") {
		target = " target='" + urltarget + "'";
	}

	var tempStr = "http://xxx.xxx";
	var tempStrSrch = "//a[@href='http://xxx.xxx']";
	if (sAgentType == "msie") {
		ptr_editor.ExecCommand(DECMD_UNLINK); 		
		if (protocol!="unlink") {
			ptr_editor.ExecCommand(DECMD_HYPERLINK,OLECMDEXECOPT_DONTPROMPTUSER,tempStr); 
			var oLinks = ptr_editor.DOM.links; // replace so we can add target
			for (i=0;i<oLinks.length;i++ ) {
				if (oLinks[i].href==tempStr) {
					oLinks[i].href = protocol + urltext;
					if (urltarget=="none") {
						urltarget = "";
					}
					oLinks[i].target = urltarget;
					break;
				}
			}
		}
	}
	else {
		ptr_editor.contentDocument.execCommand('unlink',false,null);
		if (protocol!="unlink") {
			ptr_editor.contentDocument.execCommand('createlink',false,tempStr);
			var oLink = document.evaluate(tempStrSrch,ptr_editor.contentDocument.body,null,9,null).singleNodeValue;
			if (oLink) {
				oLink.href = protocol + urltext;
				if (urltarget=="none") {
					urltarget = "";
				}
				oLink.target = urltarget;
			}
		}
	}
}

function add_link(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;
	
	ptr_editor = getPtrEditor(nom_editor);
	link_editor(nom_editor);
} 

function insertImage(imageTag,nom_editor,imgSrc,imgAlt,imgHeight,imgWidth,imgHSpace,imgVSpace,imgBorder,imgAlign) {
	ptr_editor = getPtrEditor(nom_editor);
	
	if (sAgentType == "msie") {
		var obj_Selection = ptr_editor.DOM.selection;
		var obj_Tag = obj_Selection.createRange();
      
		if (obj_Selection.type == "Control"){
    		obj_Tag.item(0).outerHTML = imageTag;
		} else {
    		obj_Tag.pasteHTML(imageTag);
		}
	}
	else {
		var imgObj = selImgObj;
		if (imgObj) {
			moveToNode(ptr_editor,imgObj);
			setAttribute(imgObj,"src",imgSrc);		
			setAttribute(imgObj,"alt",imgAlt);		
			setAttribute(imgObj,"width",imgWidth);		
			setAttribute(imgObj,"height",imgHeight);		
			setAttribute(imgObj,"vspace",imgVSpace);		
			setAttribute(imgObj,"hspace",imgHSpace);		
			setAttribute(imgObj,"border",imgBorder);		
			setAttribute(imgObj,"align",imgAlign);
		}
		else {
			insertHtmlGecko(ptr_editor,imageTag);
			ptr_editor.contentDocument.execCommand('insertimage', false, imgSrc); // dummy insert to make select work more intuitively
			ptr_editor.contentDocument.execCommand('undo', false, null);
		}
	}	
}
   
function ins_img(nom_editor,techsuffix) { 
var img_win;
var img_params = '';
var imgSrc = '';
var imgBaseURL = '';

	editor_parm_obj = eval(nom_editor + '_parm_obj');
	if (editor_parm_obj.boolDisplayHTML) return;
  	var baseURL = editor_parm_obj.baseURL;
  	var absimgURL = editor_parm_obj.absimgURL;
    selImgObj = null;	// global
  
	ptr_editor = getPtrEditor(nom_editor); 
	if (absimgURL.length > 0) {
		imgBaseURL = absimgURL; 
	}
	else {
		imgBaseURL = baseURL; 
	}

	if (sAgentType == "msie") {
		if(ptr_editor.DOM.selection.type == "Control") {
			var imgObj = ptr_editor.DOM.selection.createRange().item(0);
			if (imgObj.tagName.toLowerCase() == "img") {
			    var imgSrc = '';
			    if (imgBaseURL.length > 0) {
					var regExp = new RegExp(imgBaseURL,"");
					imgSrc = imgObj.src.replace(regExp,'');
				}
				else {
					imgSrc = imgObj.src
				}
				img_params = "&src=" + imgSrc + "&alt=" + imgObj.alt + "&width=" + imgObj.width + "&height=" + imgObj.height + "&hspace=" + imgObj.hspace + "&vspace=" + imgObj.vspace + "&border=" + imgObj.border + "&align=" + imgObj.align;
			}
		} 
	}
	else {
		var imgObj = getSelectedElement(ptr_editor,"IMG");
		if (imgObj) {
			selImgObj = imgObj;
			moveToNode(ptr_editor,imgObj);
		    var imgSrc = '';
		    if (imgBaseURL.length > 0) {
				var regExp = new RegExp(imgBaseURL,"");
				imgSrc = imgObj.src.replace(regExp,'');
			}
			else {
				imgSrc = imgObj.src
			}
			img_params = "&src=" + imgSrc + "&alt=" + imgObj.alt + "&width=" + imgObj.width + "&height=" + imgObj.height + "&hspace=" + imgObj.hspace + "&vspace=" + imgObj.vspace + "&border=" + imgObj.border + "&align=" + imgObj.align;
		}
	}
	
	if (editor_parm_obj.aupl == "true") {
    	img_winheight = 590;
	}
	else {
	    img_winheight = 450;
	}
	img_win=window.open("tgimg."+techsuffix+"?baseURL=" + editor_parm_obj.baseURL + "&absimgURL=" + editor_parm_obj.absimgURL + "&start=" + editor_parm_obj.initiallocation + "&adel=" + editor_parm_obj.adel + "&aupl=" + editor_parm_obj.aupl + "&nom_editor=" + nom_editor + img_params,"insertImage","screenX=80,screenY=80,width=620,height=" + img_winheight + ",scrollbars=no") 
} 

function set_doc_bgcolor(nom_editor) { 
	color_pallete('opener.doc_bgcolor_reset',nom_editor) 
	return true; 
} 

function doc_bgcolor_reset(hex_color,nom_editor) { 
	ptr_editor = getPtrEditor(nom_editor);
	if (sAgentType == "msie") {
		ptr_editor.DOM.body.style.backgroundColor = hex_color;  
	}
	else {
		ptr_editor.contentDocument.execCommand('backcolor', false, hex_color);
	}
}
 
function tableManager(nom_editor) {
	if (isDisplayHTML(nom_editor)) return;

	var pVar = eval('document.' + nom_editor + 'ObjTableInfo'); 
	var varRows = "3";
	var varColumns = "3";
	var varPadding = "1";
	var varSpacing = "1";
	var varWidth = "";
	var varHeight = "";      
	var varBorder = "1";
	var varTableWidth = "100%";
	var varBgColor = "";
	var boolNew = true;      

	ptr_editor = getPtrEditor(nom_editor);
	if (sAgentType == "msie") {
		if(ptr_editor.DOM.selection.type == "Control") {
			var tblObj = ptr_editor.DOM.selection.createRange().item(0);
			if (tblObj.tagName.toLowerCase() == "table") {
				varRows = tblObj.rows.length;
				varColumns = Math.round(tblObj.cells.length/tblObj.rows.length);
				varPadding = tblObj.cellPadding;
				varSpacing = tblObj.cellSpacing;
				varBorder = tblObj.border;
				varBgColor = tblObj.bgColor; 
				varTableWidth = tblObj.width;
				boolNew = false;      
			}
		}
	}
	else {
		var tblObj = getSelectedAncestorElement(ptr_editor,"TABLE");
		if (tblObj) {
			varRows = tblObj.rows.length;
			varColumns = tblObj.rows[0].cells.length;
			varPadding = tblObj.cellPadding;
			varSpacing = tblObj.cellSpacing;
			varBorder = tblObj.border;
			varBgColor = tblObj.bgColor; 
			varTableWidth = tblObj.width;
			boolNew = false;      
		}
	}

	var funct = 'opener.action_table_manager' 
	var par_tab, k, tc 
	par_tab=window.open("","param_tables","screenX=80,screenY=80,width=320,height=295") 
	par_tab.document.open() 
	k=par_tab.document 
	k.writeln('<HTML><HEAD><TITLE>' + lgArr["DefineTable"] + '</TITLE>') 
	k.writeln('<link rel="stylesheet" href="tgstyle.css">') 
	k.writeln("<script> function check_values() { ") 
	k.writeln("           var varRows, varColumns, varPadding, varSpacing, varWidth, varHeight, varBorder, varBgColor, varTableWidth, nerr=0 , errortext") 
	k.writeln("           errortext = '" + lgArr["Tablecantbecreated"] + "' ") 
	if (boolNew) { 
		k.writeln("           varRows = document.info_table.numRows.value") 
		k.writeln("           varColumns = document.info_table.numCols.value") 
	}
	k.writeln("           varPadding = document.info_table.numPadding.value") 
	k.writeln("           varSpacing = document.info_table.numSpacing.value")
	if (boolNew) { 
		k.writeln("           varWidth = document.info_table.numWidth.value"); 
		k.writeln("           varHeight = document.info_table.numHeight.value");
	} 
	else {
		k.writeln("           varWidth = '0'"); 
		k.writeln("           varHeight = '0'");
	}
	k.writeln("           varBorder = document.info_table.numBorder.value") 
	k.writeln("           varBgColor = document.info_table.txtBgColor.value") 
	if (boolNew) { 
		k.writeln("           varTableWidth = document.info_table.txtTableWidth.value");
		k.writeln("           if( varRows != parseInt(varRows) || varRows < 0 ){ ") 
		k.writeln("               nerr++") 
		k.writeln("               avis += '\\n\\n" + lgArr["rowsmustbeposint"] + "'") 
		k.writeln("           }") 
		k.writeln("           if( varColumns != parseInt(varColumns) || varColumns < 0 ){ ") 
		k.writeln("               nerr++") 
		k.writeln("               avis += '\\n\\n" + lgArr["colsmustbeposint"] + "'") 
		k.writeln("           }") 
	}
	k.writeln("           if( varPadding != parseInt(varPadding) || varPadding < 0 ){ ") 
	k.writeln("               nerr++") 
	k.writeln("               avis += '\\n\\n" + lgArr["paddingmustbeposint"] + "'") 
	k.writeln("           }") 
	k.writeln("           if( varSpacing != parseInt(varSpacing) || varSpacing < 0 ){ ") 
	k.writeln("               nerr++") 
	k.writeln("               avis += '\\n\\n" + lgArr["spacingmustbeposint"] + "'") 
	k.writeln("           }") 
	k.writeln("           if( varBorder != parseInt(varBorder) || varBorder < 0 ){ ") 
	k.writeln("               nerr++") 
	k.writeln("               avis += '\\n\\n" + lgArr["bordermustbeposint"] + "'") 
	k.writeln("           }") 
	k.writeln("           if( nerr == 0){ ") 
	k.writeln("               "+funct+"('"+nom_editor+"', varRows, varColumns, varPadding, varSpacing, varWidth, varHeight, varBorder, varBgColor, varTableWidth) ") 
	k.writeln("               window.close(); ") 
	k.writeln("           }") 
	k.writeln("           else") 
	k.writeln("           {") 
	k.writeln("             alert(errortext)") 
	k.writeln("           }") 
	k.writeln("           return true ") 
	k.writeln("         }</"+"script>") 
	k.writeln('</HEAD><BODY><center>') 
	k.writeln('<form name=info_table onsubmit="check_values();" >'); 
	k.writeln('<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" BORDERCOLORLIGHT="#DCE1E7" WIDTH="95%">'); 
	k.writeln('<TR CLASS="backgrounddark"><TD>'); 
	k.writeln("<font color=black face=arial size=-1 ><b> " + lgArr["enterparmpressok"] + "</b><br>&nbsp;</font>") 
	k.writeln('<TABLE CELLSPACING=0 BORDERCOLORLIGHT="#DCE1E7">')
	if (boolNew) { 
		k.writeln('<TR CLASS="backgroundlight"><TD>' + lgArr["Rows"] + ':&nbsp;</TD><TD><INPUT TYPE=TEXT style="width:30px;" maxlength=2 NAME=numRows value='+varRows+' ></TD>') 
		k.writeln('<TD>&nbsp;</TD><TD>' + lgArr["Columns"] + ':&nbsp;</TD><TD><INPUT TYPE=TEXT style="width:30px;" maxlength=2 NAME=numCols value='+varColumns+'></TD></TR>') 
	}
	k.writeln('<TR CLASS="backgroundlight"><TD>' + lgArr["CellPadding"] + ':&nbsp;</TD><TD><INPUT TYPE=TEXT style="width:30px;" maxlength=2 NAME=numPadding value='+varPadding+' ></TD>') 
	k.writeln('<TD>&nbsp;</TD><TD>' + lgArr["CellSpacing"] + ':&nbsp;</TD><TD><INPUT TYPE=TEXT style="width:30px;" maxlength=2 NAME=numSpacing value='+varSpacing+'></TD></TR>') 
	if (boolNew) { 
		k.writeln('<TR CLASS="backgroundlight"><TD>' + lgArr["CellWidth"] + ':&nbsp;</TD><TD><INPUT TYPE=TEXT style="width:40px;" maxlength=3 NAME=numWidth value='+varWidth+' ></TD>') 
		k.writeln('<TD>&nbsp;</TD><TD>' + lgArr["CellHeight"] + ':&nbsp;</TD><TD><INPUT TYPE=TEXT style="width:40px;" maxlength=3 NAME=numHeight value='+varHeight+'></TD></TR>');
	}
	k.writeln('<TR CLASS="backgroundlight"><TD>' + lgArr["BorderWidth"] + ':&nbsp;</TD><TD><INPUT TYPE=TEXT style="width:30px;" maxlength=2 NAME=numBorder value='+varBorder+' ></TD>');
	k.writeln('<TD>&nbsp;</TD><TD>' + lgArr["BackgroundColor"] + ':&nbsp;</TD><TD><INPUT TYPE=TEXT style="width:60px;" maxlength=12 NAME=txtBgColor value='+varBgColor+'></TD></TR>') 
	if (boolNew) { 
		k.writeln('<TR CLASS="backgroundlight"><TD>' + lgArr["TableWidth"] + ':&nbsp;</TD><TD><INPUT TYPE=TEXT style="width:50px;" maxlength=4 NAME=txtTableWidth value='+varTableWidth+' ></TD>');
		k.writeln('<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>') 
	}
	k.writeln('<TR CLASS="backgroundmedium"><TD valign=absmiddle colspan=5 align=center ><INPUT TYPE=BUTTON NAME=OK VALUE=' + lgArr["OK"] + ' onclick="check_values()" >&nbsp;<INPUT TYPE=BUTTON NAME=CANCEL VALUE=' + lgArr["Cancel"] + ' onclick="window.close()"></TD></TR></TABLE></form>') 
	k.writeln('</TR></TD></TABLE>'); 
	k.writeln('</center></BODY></HTML>');
	k.close() 
	par_tab.focus() 
	return true;
}   
 
 function action_table_manager(nom_editor, varRows, varColumns, varPadding, varSpacing, varWidth, varHeight, varBorder, varBgColor, varTableWidth) { 
	if (isDisplayHTML(nom_editor)) return;
 
	ptr_editor = getPtrEditor(nom_editor); 
	if (sAgentType == "msie") {
		if(ptr_editor.DOM.selection.type == "Control"){
			var tblObj = ptr_editor.DOM.selection.createRange().item(0);
			if (tblObj.tagName.toLowerCase() == "table") {
				tblObj.cellPadding = varPadding;
				tblObj.cellSpacing = varSpacing;    
				tblObj.border = varBorder;     
				tblObj.bgColor = varBgColor; 
				//tblObj.width = varTableWidth;
			}
		}
		else {
			var pVar = eval('document.' + nom_editor + 'ObjTableInfo'); 
			pVar.NumRows = varRows; 
			pVar.NumCols = varColumns; 
			pVar.TableAttrs = "border=" + varBorder + " cellPadding=" + varPadding + " cellSpacing=" + varSpacing  + " width=" + varTableWidth + " bgcolor=" + varBgColor;
			pVar.CellAttrs = " width=" + varWidth + " height=" + varHeight; 
			ptr_editor.ExecCommand(DECMD_INSERTTABLE,OLECMDEXECOPT_DODEFAULT, pVar); 
		}
	}
	else {
		var tblObj = getSelectedAncestorElement(ptr_editor,"TABLE");
		if (tblObj) {
			//varRows = tblObj.rows.length;
			//varColumns = tblObj.rows[0].cells.length;
			tblObj.width	   = varTableWidth;
			tblObj.cellPadding = varPadding;
			tblObj.cellSpacing = varSpacing;
			tblObj.border = varBorder;
			//tblObj.bgColor = varBgColor; 
		}
		else {
			table = ptr_editor.contentDocument.createElement("table");
			table.width			= varTableWidth;
			table.bgcolor		= varBgColor;
			table.border		= varBorder;
			table.cellPadding	= varPadding;
			table.cellSpacing	= varSpacing;
			for ( var r = 0 ; r < varRows ; r++ ) {
				var oRow = table.insertRow(-1) ;
				for ( var c = 0 ; c < varColumns ; c++ ) {
					var oCell = oRow.insertCell(-1) ;
					oCell.innerHTML = "&nbsp;" ;
				}
			}
			insertElementGecko(ptr_editor,table);
		}
	}
	return true; 
}

function insert_table_row(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;
	ptr_editor = getPtrEditor(nom_editor);

	if (sAgentType != "msie") {
		actionTableChangeGecko(ptr_editor,'cRowInsertAbove');
		return;
	}
	try {
		ptr_editor.ExecCommand(DECMD_INSERTROW,OLECMDEXECOPT_DODEFAULT); 
	} catch (errorInfo) { }
} 

function delete_table_row(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;
	ptr_editor = getPtrEditor(nom_editor);

	if (sAgentType != "msie") {
		actionTableChangeGecko(ptr_editor,'cRowDelete');
		return;
	}
	try {
		ptr_editor.ExecCommand(DECMD_DELETEROWS,OLECMDEXECOPT_DODEFAULT); 
	} catch (errorInfo) { }
} 

function insert_table_col(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;
	ptr_editor = getPtrEditor(nom_editor);

	if (sAgentType != "msie") {
		actionTableChangeGecko(ptr_editor,'cColInsertBefore');
		return;
	}
	try {
		ptr_editor.ExecCommand(DECMD_INSERTCOL,OLECMDEXECOPT_DODEFAULT); 
	} catch (errorInfo) { }
} 

function delete_table_col(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;
	ptr_editor = getPtrEditor(nom_editor);

	if (sAgentType != "msie") {
		actionTableChangeGecko(ptr_editor,'cColDelete');
		return;
	}
	try {
		ptr_editor.ExecCommand(DECMD_DELETECOLS,OLECMDEXECOPT_DODEFAULT); 
	} catch (errorInfo) { }
} 

function insert_table_cell(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;
	ptr_editor = getPtrEditor(nom_editor);

	if (sAgentType != "msie") {
		actionTableChangeGecko(ptr_editor,'cCellInsertBefore');
		return;
	}
	try {
		ptr_editor.ExecCommand(DECMD_INSERTCELL,OLECMDEXECOPT_DODEFAULT); 
	} catch (errorInfo) { }
} 

function delete_table_cell(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;
	ptr_editor = getPtrEditor(nom_editor);

	if (sAgentType != "msie") {
		actionTableChangeGecko(ptr_editor,'cCellDelete');
		return;
	}
	try {
		ptr_editor.ExecCommand(DECMD_DELETECELLS,OLECMDEXECOPT_DODEFAULT); 
	} catch (errorInfo) { }
} 

function merge_table_cell(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;
	ptr_editor = getPtrEditor(nom_editor);

	if (sAgentType != "msie") { 
		actionTableChangeGecko(ptr_editor,'cCellMerge');
		return;
	}
	try {
		ptr_editor.ExecCommand(DECMD_MERGECELLS,OLECMDEXECOPT_DODEFAULT); 
	} catch (errorInfo) { }
} 

function split_table_cell(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;
	ptr_editor = getPtrEditor(nom_editor);

	if (sAgentType != "msie") {
		actionTableChangeGecko(ptr_editor,'cCellSplit');
		return;
	}
	try {
		ptr_editor.ExecCommand(DECMD_SPLITCELL,OLECMDEXECOPT_DODEFAULT); 
	} catch (errorInfo) { }
} 

function insertText(startText, endText, asHTML, allowEmpty, nom_editor) {  
	ptr_editor = getPtrEditor(nom_editor);
	var obj_Selection = ptr_editor.DOM.selection;
	var obj_Tag = obj_Selection.createRange();
 
	if (!allowEmpty && obj_Selection.type == "None") return;
	if (obj_Selection.type == "Control") {
		var elementHTML = obj_Tag.item(0).outerHTML;
		obj_Tag.item(0).outerHTML = startText + elementHTML + endText;
	}
	else {
		if (asHTML) {
			if (obj_Selection.type == "None") {
				obj_Tag.pasteHTML(startText + endText);
			} 
			else {
				obj_Tag.pasteHTML(startText + obj_Tag.htmlText + endText);
			}
		}
		else {
			obj_Tag.text = sStart + obj_Tag.text + sEnd;
		}
	}
	obj_Tag.collapse();
	obj_Tag.select();
}

function SpecialChar_onchange(sel_obj,nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;
	 
	try {
		var sc = sel_obj.options[sel_obj.selectedIndex].value; 
		ptr_editor = getPtrEditor(nom_editor);

		if (sAgentType == "msie") {
			var obj_Selection = ptr_editor.DOM.selection;
			var obj_Tag = obj_Selection.createRange();
      
			if (obj_Selection.type == "Control"){
				obj_Tag.item(0).outerHTML = sc;
			} 
			else {
				obj_Tag.pasteHTML(sc);
			}
		}
		else {
			insertHtmlGecko(ptr_editor,sc);
		}	
		sel_obj.options[0].selected = true
	}
	catch (errorInfo) { }
}

function FontName_onchange(sel_obj,nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;

	try {
		var ty = sel_obj.options[sel_obj.selectedIndex].value; 
		if (ty != 0) { 
			ptr_editor = getPtrEditor(nom_editor);
			if (sAgentType == "msie") {
				ptr_editor.ExecCommand(DECMD_SETFONTNAME, OLECMDEXECOPT_DODEFAULT, ty); 
			}
			else {
				ptr_editor.contentDocument.execCommand('fontname', false, ty);
			}
		} 
		sel_obj.options[0].selected = true 
	}
	catch (errorInfo) { }
} 

function FontSize_onchange(sel_obj,nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;

	try {
		var sz = sel_obj.options[sel_obj.selectedIndex].value; 
		if (sz != 0) { 
			ptr_editor = getPtrEditor(nom_editor);
			if (sAgentType == "msie") {
				ptr_editor.ExecCommand(DECMD_SETFONTSIZE, OLECMDEXECOPT_DODEFAULT, sz); 
			}
			else {
				ptr_editor.contentDocument.execCommand('fontsize', false, sz);
			}	
		} 
		sel_obj.options[0].selected = true 
	}
	catch (errorInfo) { }
} 

function Format_onchange(sel_obj,nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;

	try {
		var bf = sel_obj.options[sel_obj.selectedIndex].value; 
		if (bf != 0) { 
			ptr_editor = getPtrEditor(nom_editor);
			if (sAgentType == "msie") {
				if (bf == "normal") {
					ptr_editor.ExecCommand(DECMD_SETBLOCKFMT, OLECMDEXECOPT_DODEFAULT, bf); 
				}
				else {
					var bfe = bf.split(" ");
					insertText("<" + bf + ">","</" + bfe[0] + ">", true, false, nom_editor);
				}
			}
			else {
				ptr_editor.contentDocument.execCommand('formatblock', false, bf);
			}
		} 
		sel_obj.options[0].selected = true 
	}
	catch (errorInfo) { }
} 

function change_bold(nom_editor){ 
	if (isDisplayHTML(nom_editor)) return;

	try {
		ptr_editor = getPtrEditor(nom_editor);
		if (sAgentType == "msie") {
			ptr_editor.ExecCommand(DECMD_BOLD,OLECMDEXECOPT_DODEFAULT); 
		}
		else {
			ptr_editor.contentDocument.execCommand('bold', false, null);
		}	
	}
	catch (errorInfo) { }
} 

function change_italic(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;

	try {
		ptr_editor = getPtrEditor(nom_editor);
		if (sAgentType == "msie") {
			ptr_editor.ExecCommand(DECMD_ITALIC,OLECMDEXECOPT_DODEFAULT); 
		}
		else {
			ptr_editor.contentDocument.execCommand('italic', false, null);
		}	
	}
	catch (errorInfo) { }
} 

function change_underline(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;

	try {
		ptr_editor = getPtrEditor(nom_editor);
		if (sAgentType == "msie") {
			ptr_editor.ExecCommand(DECMD_UNDERLINE,OLECMDEXECOPT_DODEFAULT); 
		}
		else {
			ptr_editor.contentDocument.execCommand('underline', false, null);
		}	
	}
	catch (errorInfo) { }
} 

function change_hr(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;

	try {
		ptr_editor = getPtrEditor(nom_editor);
		if (sAgentType == "msie") {
			var sHr = '<hr style="width: 100%; height: 2px;">';
			var obj_Selection = ptr_editor.DOM.selection;
			var obj_Tag = obj_Selection.createRange();
			obj_Tag.pasteHTML(sHr)
		}
		else {
			ptr_editor.contentDocument.execCommand('inserthorizontalrule', false, null);
		}	
	}
	catch (errorInfo) { }
} 

function show_pal_fg_color(nom_editor){ 
	if (isDisplayHTML(nom_editor)) return;

	color_pallete('opener.set_fg_color',nom_editor) 
	return true; 
} 

function set_fg_color(arr, nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;
 
	if (arr != null) { 
		ptr_editor = getPtrEditor(nom_editor);
		if (sAgentType == "msie") {
			ptr_editor.ExecCommand(DECMD_SETFORECOLOR,OLECMDEXECOPT_DODEFAULT, arr); 
		}
		else {
			ptr_editor.contentDocument.execCommand('forecolor', false, arr);
		}
	} 
} 

function show_pal_bg_color(nom_editor){ 
	if (isDisplayHTML(nom_editor)) return;

	color_pallete('opener.set_bg_color',nom_editor);
	return true; 
} 

function set_bg_color(arr,nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;
 
	if (arr != null) { 
		ptr_editor = getPtrEditor(nom_editor);
		if (sAgentType == "msie") {
			ptr_editor.ExecCommand(DECMD_SETBACKCOLOR,OLECMDEXECOPT_DODEFAULT, arr); 
		}
		else {
			ptr_editor.contentDocument.execCommand('hilitecolor', false, arr);
		}
	} 
} 

function justify_right(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;
 
	try {
		ptr_editor = getPtrEditor(nom_editor);
		if (sAgentType == "msie") {
			ptr_editor.ExecCommand(DECMD_JUSTIFYRIGHT,OLECMDEXECOPT_DODEFAULT); 
		}
		else {
			ptr_editor.contentDocument.execCommand('justifyright', false, null);
		}	
	}
	catch (errorInfo) { }
} 

function justify_centre(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;

	try {
		ptr_editor = getPtrEditor(nom_editor);
		if (sAgentType == "msie") {
			ptr_editor.ExecCommand(DECMD_JUSTIFYCENTER,OLECMDEXECOPT_DODEFAULT); 
		}
		else {
			ptr_editor.contentDocument.execCommand('justifycenter', false, null);
		}	
	}
	catch (errorInfo) { }
} 

function justify_left(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;

	try {
		ptr_editor = getPtrEditor(nom_editor);
		if (sAgentType == "msie") {
			ptr_editor.ExecCommand(DECMD_JUSTIFYLEFT,OLECMDEXECOPT_DODEFAULT); 
		}
		else {
			ptr_editor.contentDocument.execCommand('justifyleft', false, null);
		}	
	}
	catch (errorInfo) { }
} 

function ordered_list(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;

	try {
		ptr_editor = getPtrEditor(nom_editor);
		if (sAgentType == "msie") {
			ptr_editor.ExecCommand(DECMD_ORDERLIST,OLECMDEXECOPT_DODEFAULT); 
		}
		else {
			ptr_editor.contentDocument.execCommand('insertorderedlist', false, null);
		}	
	}
	catch (errorInfo) { }
} 

function unordered_list(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;

	try {
		ptr_editor = getPtrEditor(nom_editor);
		if (sAgentType == "msie") {
			ptr_editor.ExecCommand(DECMD_UNORDERLIST,OLECMDEXECOPT_DODEFAULT); 
		}
		else {
			ptr_editor.contentDocument.execCommand('insertunorderedlist', false, null);
		}	
	}
	catch (errorInfo) { }
} 

function indent(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;

	try {
		ptr_editor = getPtrEditor(nom_editor);
		if (sAgentType == "msie") {
			ptr_editor.ExecCommand(DECMD_INDENT,OLECMDEXECOPT_DODEFAULT); 
		}
		else {
			ptr_editor.contentDocument.execCommand('indent', false, null);
		}
	}
	catch (errorInfo) { }
} 

function outdent(nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;

	try {
		ptr_editor = getPtrEditor(nom_editor);
		if (sAgentType == "msie") {
			ptr_editor.ExecCommand(DECMD_OUTDENT,OLECMDEXECOPT_DODEFAULT); 
		}
		else {
			ptr_editor.contentDocument.execCommand('outdent', false, null);
		}
	}
	catch (errorInfo) { }
} 
 
function get_raw_html(nom_editor) {
	var cont = '';
 
	editor_parm_obj = eval(nom_editor + '_parm_obj');
	ptr_editor = eval('document.' + nom_editor);
 
	if (!editor_parm_obj.complete_doc) {
		cont = strip_body(ptr_editor.DocumentHTML);
	}
	else {
		cont = ptr_editor.DocumentHTML;
	}
	return cont;
}
  
function codecleaner(nom_editor) {
	if (isDisplayHTML(nom_editor)) return;

	var cont = '';
	if ( confirm(lgArr["codecleanercont"]) ) {
		ptr_editor = getPtrEditor(nom_editor);
		
		if (sAgentType == "msie") {
			cont = ptr_editor.DocumentHTML;
		}
		else {
			cont = getHTMLGecko(ptr_editor);
		}
		cont = cont.replace((new RegExp("<\\?xml[^>]*>","ig")),"");
		cont = cont.replace((new RegExp("<\/?[a-z]+:[^>]*>","ig")),"");
		cont = cont.replace((new RegExp("(<[^>]+) style=\"[^\"]*\"([^>]*>)","ig")),"$1 $2");
		cont = cont.replace((new RegExp("(<[^>]+) class=[^ |^>]*([^>]*>)","ig")),"$1 $2");
		cont = cont.replace((new RegExp("<span[^>]*><\/span[^>]*>","ig")),"");
  
		if (sAgentType == "msie") {
			ptr_editor.DocumentHTML = cont;
			ptr_editor.focus();
		}
		else {
			setHTMLGecko(ptr_editor,cont);
		}
	}	
}  
 
function toggleborders(nom_editor) {
	if (isDisplayHTML(nom_editor)) return;

	ptr_editor = getPtrEditor(nom_editor);
	if (sAgentType == "msie") {
		ptr_editor.ShowBorders = !ptr_editor.ShowBorders;
	}
	else {
		functionNotAvailableInBrowser();
	}
}

function toggledetails(nom_editor) {
	if (isDisplayHTML(nom_editor)) return;

	ptr_editor = getPtrEditor(nom_editor);
	if (sAgentType == "msie") {
		ptr_editor.ShowDetails = !ptr_editor.ShowDetails;
	}
	else {
		functionNotAvailableInBrowser();
	}
}

function find(nom_editor,techsuffix) { 
	if (isDisplayHTML(nom_editor)) return;
	ptr_editor = getPtrEditor(nom_editor);

	if (sAgentType != "msie") {
		var find_win = window.open("tgfindgecko."+techsuffix,"findWindow","width=385, height=115") 
		return;
	}
	try {
		showModelessDialog("tgfindie."+techsuffix+"?nom="+nom_editor, window,"dialogWidth:385px; dialogHeight:120px; scroll:no; status:no; help:no;" );
	} catch (errorInfo) { }
}

function showgeomantics() {
	window.open("http://www.geomantics.net","Geomantics","") 
}

// New 2.1 functions

function make_character_grid(nom_editor) {
var t=0,text 
	editor_parm_obj = eval(nom_editor + '_parm_obj');
	strImgSrc = editor_parm_obj.imgpath + 'special.gif';

	text='<center><table border=1 cellspacing=0 cellpadding=3><tr><td>'; 
	for ( i=163; i<255; ++i) {
		var chr = '&#' + i + ';';
		text+='<a href=javascript:chr_panel("'+chr+'"); > ' + chr + ' </a>'; 
	} 
	text+='</td></tr></table></center>' 
	return text 
}

function show_panel_sp_characters(nom_editor){ 
	if (isDisplayHTML(nom_editor)) return;

	insert_special_character('opener.set_sp_character',nom_editor) 
	return true; 
} 

function insert_special_character(chr_funct,nom_editor){ 
	if (isDisplayHTML(nom_editor)) return;

	var chr_panel, k, tc 
	chr_panel=window.open("","character_panel","screenX=80,screenY=80,height=190,width=240") 
	chr_panel.document.open() 
	k=chr_panel.document; 
	k.writeln("<html><head>");
	k.writeln('<link rel="stylesheet" href="tgstyle.css">') 
	k.writeln("<script> function chr_panel(chr) { "+chr_funct+"(chr,'" + nom_editor + "'); window.close(); }</"+"script></head><body bgcolor=white ><center>") 
	k.writeln('<table width="95%" border="1" cellpadding="5" bgcolor="#FFFFFF"><tr><td>');
	k.writeln("<font color=black face=arial size=-1 ><b>Select a special character</b></font>") 
	tc=make_character_grid(nom_editor)
	k.writeln(tc) 
	k.writeln("</td></tr></table>") 
	k.writeln("</center></body></html>") 
	k.close() 
	chr_panel.focus() 
} 

function set_sp_character(arr, nom_editor) { 
	if (isDisplayHTML(nom_editor)) return;
 
	try {
		var sc = arr; 
		ptr_editor = getPtrEditor(nom_editor);

		if (sAgentType == "msie") {
			var obj_Selection = ptr_editor.DOM.selection;
			var obj_Tag = obj_Selection.createRange();
      
			if (obj_Selection.type == "Control"){
				obj_Tag.item(0).outerHTML = sc;
			} 
			else {
				obj_Tag.pasteHTML(sc);
			}
		}
		else {
			insertHtmlGecko(ptr_editor,sc);
		}	
		sel_obj.options[0].selected = true
	}
	catch (errorInfo) { }
} 

function getSelectedCellsIE(ptr_editor) {
	var oRange = ptr_editor.DOM.selection.createRange();
	var oParent = oRange.parentElement() ;
	var aCells = new Array();

	if (oParent && oParent.tagName=="TD" ) {
		aCells[0] = oParent;
	}
	else {
		var oParent = moveToAncestorNode(ptr_editor,"TABLE");
		if (oParent) { // find all cells inside the selection and assemble in array
			for (var i=0; i<oParent.cells.length;i++) {
				var oCellRange = ptr_editor.DOM.selection.createRange() ;
				oCellRange.moveToElementText(oParent.cells[i]) ;
				if ( oRange.inRange( oCellRange ) 
					|| ( oRange.compareEndPoints('StartToStart',oCellRange) >= 0 &&  oRange.compareEndPoints('StartToEnd',oCellRange) <= 0 )
					|| ( oRange.compareEndPoints('EndToStart',oCellRange) >= 0 &&  oRange.compareEndPoints('EndToEnd',oCellRange) <= 0 ) ) {
					aCells[aCells.length] = oParent.cells[i] ;
				}
			}
		}
	}
	return aCells ;
}

function getSelectedCellsGecko(ptr_editor) {
	var aCells = new Array() ;
	var oSel = ptr_editor.contentDocument.defaultView.getSelection();

	// check if selection is a text.
	if ((oSel.rangeCount==1) && (oSel.anchorNode.nodeType==3)) {
		var oParent = getSelectedAncestor(oSel.anchorNode,'TD');
		if (oParent) {
			aCells[0] = oParent;
			return aCells;
		}	
	}
	for (var i=0; i<oSel.rangeCount;i++) {
		var oRange = oSel.getRangeAt(i) ;
		var oCell = oRange.startContainer.childNodes[oRange.startOffset ] ;
		
		if (oCell.tagName == 'TD') {
			aCells[aCells.length] = oCell;
		}
	}
	return aCells ;
}

function cellManager(nom_editor) {
	if (isDisplayHTML(nom_editor)) return;

	var varWidth = "";
	var varHeight = "";      
	var varBgColor = "";
	var varBorderColor = "";
	var varHorzAlign = "";
	var varVertAlign = "";
	var aCells; 

	ptr_editor = getPtrEditor(nom_editor);
	if (sAgentType == "msie") {
		aCells = getSelectedCellsIE(ptr_editor);
	}
	else {
		aCells = getSelectedCellsGecko(ptr_editor);
	}
	
	// if single cell then pull in data
	switch (aCells.length) {
		case 0: return;
				break;
		case 1: 
				varWidth = aCells[0].width;
				varHeight = aCells[0].height;
			    varBgColor = aCells[0].bgColor; 
				if (sAgentType == "msie") {
			    	varBorderColor = aCells[0].borderColor; 
				}
				varHorzAlign = aCells[0].align; 
				varVertAlign = aCells[0].vAlign; 
				break;
	}

	var funct = 'opener.action_cell_manager' 
	var par_tab, k, tc 
	par_tab=window.open("","param_tables","screenX=80,screenY=80,width=340,height=245") 
	par_tab.document.open() 
	k=par_tab.document 
	k.writeln('<HTML><HEAD><TITLE>' + lgArr["DefineCell"] + '</TITLE>') 
	k.writeln('<link rel="stylesheet" href="tgstyle.css">') 
	k.writeln("<script> function check_values() { ") 
	k.writeln("           var varWidth, varHeight, varBorderColor, varBgColor, varHorzAlign, varVertAlign, nerr=0 , errortext") 
	k.writeln("           errortext = '" + lgArr["Tablecantbecreated"] + "' ") 
	k.writeln("           varWidth = document.info_table.numWidth.value"); 
	k.writeln("           varHeight = document.info_table.numHeight.value");
	k.writeln("           varHorzAlign = document.info_table.txtHorzAlign.value") 
	k.writeln("           varVertAlign = document.info_table.txtVertAlign.value") 
	k.writeln("           varBorderColor = document.info_table.txtBorderColor.value") 
	k.writeln("           varBgColor = document.info_table.txtBgColor.value") 
	k.writeln("           if( nerr == 0){ ") 
	k.writeln("               "+funct+"('"+nom_editor+"', varWidth, varHeight, varBorderColor, varBgColor, varHorzAlign, varVertAlign) ") 
	k.writeln("               window.close(); ") 
	k.writeln("           }") 
	k.writeln("           else") 
	k.writeln("           {") 
	k.writeln("             alert(errortext)") 
	k.writeln("           }") 
	k.writeln("           return true ") 
	k.writeln("         }</"+"script>") 
	k.writeln('</HEAD><BODY><center>') 
	k.writeln('<form name=info_table onsubmit="check_values();" >'); 
	k.writeln('<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" BORDERCOLORLIGHT="#DCE1E7" WIDTH="95%">'); 
	k.writeln('<TR CLASS="backgrounddark"><TD>'); 
	k.writeln("<font color=black face=arial size=-1 ><b> " + lgArr["enterparmpressok"] + "</b></font>") 
	k.writeln('<TABLE BORDER="0" CELLSPACING=0 BORDERCOLORLIGHT="#DCE1E7">')
	k.writeln('<TR CLASS="backgroundlight"><TD>' + lgArr["CellWidth"] + ':&nbsp;</TD><TD><INPUT TYPE=TEXT style="width:40px;" maxlength=3 NAME=numWidth value='+varWidth+' ></TD>') 
	k.writeln('<TD>&nbsp;</TD><TD>' + lgArr["CellHeight"] + ':&nbsp;</TD><TD><INPUT TYPE=TEXT style="width:40px;" maxlength=3 NAME=numHeight value='+varHeight+'></TD></TR>');
	k.writeln('<TR CLASS="backgroundlight"><TD>' + lgArr["HorzAlign"] + ':&nbsp;</TD><TD><SELECT NAME=txtHorzAlign><OPTION value='+varHorzAlign+'>'+varHorzAlign+'</OPTION><OPTION value="left">left</OPTION><OPTION value="center">center</OPTION><OPTION value="right">right</OPTION></SELECT></TD>') 
	k.writeln('<TD>&nbsp;</TD><TD>' + lgArr["VertAlign"] + ':&nbsp;</TD><TD><SELECT NAME=txtVertAlign><OPTION value='+varVertAlign+'>'+varVertAlign+'</OPTION><OPTION value="top">top</OPTION><OPTION value="middle">middle</OPTION><OPTION value="bottom">bottom</OPTION><OPTION value="baseline">baseline</OPTION></SELECT></TD></TR>') 
	k.writeln('<TR CLASS="backgroundlight"><TD>' + lgArr["BorderColor"] + ':&nbsp;</TD><TD><INPUT TYPE=TEXT style="width:60px;" maxlength=12 NAME=txtBorderColor value='+varBorderColor+' ></TD>');
	k.writeln('<TD>&nbsp;</TD><TD>' + lgArr["BackgroundColor"] + ':&nbsp;</TD><TD><INPUT TYPE=TEXT style="width:60px;" maxlength=12 NAME=txtBgColor value='+varBgColor+'></TD></TR>') 
	k.writeln('<TR CLASS="backgroundmedium"><TD valign=absmiddle colspan=5 align=center ><INPUT TYPE=BUTTON NAME=OK VALUE=' + lgArr["OK"] + ' onclick="check_values()" >&nbsp;<INPUT TYPE=BUTTON NAME=CANCEL VALUE=' + lgArr["Cancel"] + ' onclick="window.close()"></TD></TR></TABLE></form>') 
	k.writeln('</TR></TD></TABLE>'); 
	k.writeln('</center></BODY></HTML>');
	k.close() 
	par_tab.focus() 
	return true;
}   

 function action_cell_manager(nom_editor, varWidth, varHeight, varBorderColor, varBgColor, varHorzAlign, varVertAlign) { 
	if (isDisplayHTML(nom_editor)) return;
 
	ptr_editor = getPtrEditor(nom_editor); 
	if (sAgentType == "msie") {
		aCells = getSelectedCellsIE(ptr_editor);
	}
	else {
		aCells = getSelectedCellsGecko(ptr_editor);
	}
	for (var i=0;i<aCells.length;i++) {
		aCells[i].width = varWidth;
		aCells[i].height = varHeight;
		aCells[i].bgColor = varBgColor;
		if (sAgentType == "msie") {
			aCells[i].borderColor = varBorderColor;
		}
		aCells[i].align = varHorzAlign;
		aCells[i].vAlign = varVertAlign;
	}
	return true; 
}

