

var cTranslateThis01 = "Set the Paragraph Style";
var cTranslateThis02 = "Create Table";
var cTranslateThis03 = "Rows";
var cTranslateThis04 = "Columns";
var cTranslateThis05 = "Table Width"
var cTranslateThis06 = "pixels";
var cTranslateThis07 = "percent";
var cTranslateThis08 = "Border Thickness";
var cTranslateThis09 = "Cell Padding";
var cTranslateThis10 = "Cell Spacing";
var cTranslateThis11 = "Insert Table";
var cTranslateThis12 = "Pick Color";
var cTranslateThis13 = "Create Hyperlink";
var cTranslateThis14 = "Type in a URL to a page on the web";
var cTranslateThis15 = "Insert Link";
var cTranslateThis16 = "View Source";
var cTranslateThis17 = "Enter Image URL";
var cTranslateThis18 = "Paragraph"
var cTranslateThis19 = "Font Style";
var cTranslateThis20 = "Font Size";
var cTranslateThis21 = "Sorry, any images that you insert must be accessible via HTTP."
var cTranslateThis22 = "Cut";
var cTranslateThis23 = "Copy";
var cTranslateThis24 = "Paste";
var cTranslateThis25 = "Bold";
var cTranslateThis26 = "Italic";
var cTranslateThis27 = "Underline";
var cTranslateThis28 = "Left Justify";
var cTranslateThis29 = "Center Justify";
var cTranslateThis30 = "Right Justify";
var cTranslateThis31 = "Numbered List";
var cTranslateThis32 = "Bulleted List";
var cTranslateThis33 = "Decrease Indent";
var cTranslateThis34 = "Increase Indent";
var cTranslateThis35 = "Insert Line";
var cTranslateThis36 = "Insert Link";
var cTranslateThis37 = "Insert Table";
var cTranslateThis38 = "Insert Picture";
var cTranslateThis39 = "Background Color";
var cTranslateThis40 = "Text Color";
var cTranslateThis41 = "Set the Font Size";
var cTranslateThis42 = "Set the Font Style";



var cTranslateThis60 = "Select a group page";
var cTranslateThis61 = "Select Page";
var cTranslateThis62 = "or";





var paragraphStyleText = cTranslateThis01;
var createTableText = cTranslateThis02;
var rowsText = cTranslateThis03;
var columnsText = cTranslateThis04;
var tableWidthText = cTranslateThis05;
var pixelText = cTranslateThis06;
var percentText = cTranslateThis07;
var borderThicknessText = cTranslateThis08;
var cellPaddingText = cTranslateThis09;
var cellSpacingText = cTranslateThis10;
var insertTableText = cTranslateThis11;
var pickColorText = cTranslateThis12;
var createHyperlinkText = cTranslateThis13;
var typeUrlText = cTranslateThis14;
var insertLinkText = cTranslateThis15;
var viewSourceLinkText = cTranslateThis16;
var enterImageUrlText = cTranslateThis17;
var paragraphText = cTranslateThis18;
var fontStyleText = cTranslateThis19;
var fontSizeText = cTranslateThis20;
var errNoLocalImages = cTranslateThis21;
var cutText = cTranslateThis22;
var copyText = cTranslateThis23;
var pasteText = cTranslateThis24;
var boldText = cTranslateThis25;
var italicText = cTranslateThis26;
var underlineText = cTranslateThis27;
var leftJustifyText = cTranslateThis28;
var centerJustifyText = cTranslateThis29;
var rightJustifyText = cTranslateThis30;
var numberedListText = cTranslateThis31;
var bulletedListText = cTranslateThis32;
var decreaseIndentText = cTranslateThis33;
var increaseIndentText = cTranslateThis34;
var insertLineText = cTranslateThis35;
var insertLinkText = cTranslateThis36;
var insertTableText = cTranslateThis37;
var insertPictureText = cTranslateThis38;
var backgroundColorText = cTranslateThis39;
var textColorText = cTranslateThis40;
var cSetFontSizeText = cTranslateThis41;
var cSetFontStyleText = cTranslateThis42;


var cSelectGroupPage = cTranslateThis60;
var cSelectPage = cTranslateThis61;
var cOrText = cTranslateThis62;





var isRichText = false;
var rng;
var currentRTE;
var allRTEs = "";
var cursorType = "";
var isIE;
var isGecko;
var isSafari;
var isKonqueror;

var imagesPath;
var includesPath;
var cssFile;
var generateXHTML;

var lang = "en";
var encoding = "iso-8859-1";



function initRTE(imgPath, incPath, css, genXHTML) {
	//set browser vars
	var ua = navigator.userAgent.toLowerCase();
	isIE = ((ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1)); 
	isGecko = (ua.indexOf("gecko") != -1);
	isSafari = (ua.indexOf("safari") != -1);
	isKonqueror = (ua.indexOf("konqueror") != -1);
	
	generateXHTML = genXHTML;
	
	//check to see if designMode mode is available
	//Safari/Konqueror think they are designMode capable even though they are not
	if (document.getElementById && document.designMode && !isSafari && !isKonqueror) {
		isRichText = true;
	}
	
	if (isIE) {
		
		document.onmouseover = raiseButton;
		document.onmouseout  = normalButton;
		document.onmousedown = lowerButton;
		document.onmouseup   = raiseButton;
		cursorType="hand";
	}else{
		cursorType="pointer";
	}
	
	//set paths vars
	imagesPath = imgPath;
	includesPath = incPath;
	cssFile = css;
	
	if (isRichText) document.writeln('<style type="text/css">@import "' + includesPath + 'rte.css";</style>');
	
	//for testing standard textarea, uncomment the following line
	//isRichText = false;
}

//Begin Main Edit

function _CPopup_Hide() 
{
   
    document.getElementById('infoBox').style.visibility = "hidden"    

   // idEditbox.focus()
}




// Customize Font List
var L_RTEFONTARIAL_TEXT = 'Arial';
var L_RTEFONTARIALDEF_TEXT = 'Arial, Geneva, Sans-serif';
var L_RTEFONTARIALBLACK_TEXT = 'Arial Black';
var L_RTEFONTARIALBLACKDEF_TEXT = 'Arial Black, Geneva, Arial, Sans-serif';
var L_RTEFONTCOURIERNEW_TEXT = 'Courier New';
var L_RTEFONTCOURIERNEWDEF_TEXT = 'Courier New, Courier, Monospace';
var L_RTEFONTTIMESNEWROMAN_TEXT = 'Times New Roman';
var L_RTEFONTTIMESNEWROMANDEF_TEXT = 'Times New Roman, Times, Serif';
var L_RTEFONTVERDANA_TEXT = 'Verdana';
var L_RTEFONTVERDANADEF_TEXT = 'Verdana, Geneva, Arial, Sans-serif';
var L_RTELUCIDAHAND_TEXT = 'Lucida Handwriting';
var L_RTELUCIDAHANDDEF_TEXT = 'Lucida Handwriting, Cursive';
var L_RTEGARAMOND_TEXT = 'Garamond';
var L_RTEGARAMONDDEF_TEXT = 'Garamond, Times, Serif';
var L_RTEWEBDINGS_TEXT = 'Webdings';
var L_RTEWEBDINGSDEF_TEXT = 'Webdings';
var L_RTEWINGDINGS_TEXT = 'Wingdings';
var L_RTEWINGDINGSDEF_TEXT = 'Wingdings';


function _CFont(szDef,szText,bSymbol) {
    return new Array(szDef,szText,bSymbol);
};


defaultFonts = new Array();
defaultFonts[0] = _CFont(L_RTEFONTARIALDEF_TEXT, L_RTEFONTARIAL_TEXT, false);
defaultFonts[1] = _CFont(L_RTEFONTARIALBLACKDEF_TEXT, L_RTEFONTARIALBLACK_TEXT, false);
defaultFonts[2] = _CFont(L_RTEFONTVERDANADEF_TEXT, L_RTEFONTVERDANA_TEXT, false);
defaultFonts[3] = _CFont(L_RTEFONTTIMESNEWROMANDEF_TEXT, L_RTEFONTTIMESNEWROMAN_TEXT, false);
defaultFonts[4] = _CFont(L_RTEGARAMONDDEF_TEXT,L_RTEGARAMOND_TEXT, false);
defaultFonts[5] = _CFont(L_RTELUCIDAHANDDEF_TEXT,L_RTELUCIDAHAND_TEXT, false);
defaultFonts[6] = _CFont(L_RTEFONTCOURIERNEWDEF_TEXT, L_RTEFONTCOURIERNEW_TEXT, false);
defaultFonts[7] = _CFont(L_RTEWEBDINGSDEF_TEXT, L_RTEWEBDINGS_TEXT, true);
defaultFonts[8] = _CFont(L_RTEWINGDINGSDEF_TEXT, L_RTEWINGDINGS_TEXT, true);


var arrEmoticons = [];
var totalEmoticons = 14;
for(var i=0;i<totalEmoticons;i++){
	var currImage = new Image();
	currImage.src = "http://images.ifriends.net/asg/emoticons/emoticon"+i+".gif";
	arrEmoticons.push(currImage);
}


function dispDiv(rte,cmd,srcID){

    document.getElementById('infoBox').style.visibility = "visible"  

	var cStr = '';
   	cStr += "<DIV ID=puRegion>"
	cStr +=    "<DIV ALIGN=CENTER ID=content style='background-color:#FFFFFF'>"
	cStr +=    "<table ID=Container width=100% cellpadding=0 cellspacing=0><tr><td align=center>" 		
   	cStr +=         "<TABLE ID=Header >"
   	cStr +=             "<tr>"
    	cStr +=                  "<td NOWRAP ID=caption align=left><p id='divHeader'></p></td>"
    	cStr +=                  "<td VALIGN=middle align=right><DIV ID=close style=cursor:"+cursorType+" ONCLICK=\"_CPopup_Hide()\">X</DIV></td>"
   	cStr +=              "</tr>"
   	cStr +=          "</table>"

	cStr += 		"<table width='80%'>"

switch(cmd){

case "fontname":

	document.getElementById('infoBox').style.width = 200;	
	var divHeaderText = "Set the Font Style";
    	for (var i=0; i < defaultFonts.length; i++) 
    	{
 	cStr += 			"<tr>"
 	cStr += 				"<td align=\"center\"  onClick=\"doCommand('" + rte + "','" + cmd + "','" + defaultFonts[i][0] + "');\" onMouseover=\"this.className='myBorder'\" onMouseout=\"this.className=''\">"
        cStr +=          			 "<font face=\"" + defaultFonts[i][0] + "\">" 
        cStr +=              			 defaultFonts[i][1] 
        cStr +=           			"</font><br>"
        cStr += 				"</td>"
 	cStr += 			"</tr>"
    	}

break;




case "addEmoticon":
	document.getElementById('infoBox').style.width = 250;
	var divHeaderText = "Choose Emoticon";
	cStr += 			"<tr><td style='width:200px'>";
    	for (var i=0; i < totalEmoticons; i++) 	{
        cStr +=           			'<img src="'+arrEmoticons[i].src+'" onMouseOver="this.style.cursor=\'hand\'" onClick="insertEmoticon(\''+rte+'\',this.src);" hspace=5 vspace=5>';
    	}
    	cStr += 			"</td></tr>";
break;


case "formatblock":

    document.getElementById('infoBox').style.width = 220;
    var divHeaderText = paragraphStyleText;
    var cStr, defaultParagraphs   = new Array();

    defaultParagraphs[0] = new Array("<P>", "Normal (P)") ;
    for (var i=1; i <= 6; i++){
    defaultParagraphs[i] = new Array("<H"+i+">", "Heading" + i + " (H" + i +")");
    }
    defaultParagraphs[7] = new Array("<PRE>", "Preformatted(PRE)");

    for (var i=0; i < defaultParagraphs.length; i++)
    {

        cStr  +=   "<tr>";
	cStr  += 	"<td nowrap  align=\"center\" onClick=\"doCommand('" + rte + "','" + cmd + "','" + defaultParagraphs[i][0] + "')\" onMouseover=\"this.className='myBorder'\" onMouseout=\"this.className=''\">"
        cStr  +=          defaultParagraphs[i][0] ;
        cStr  +=          defaultParagraphs[i][1] ;
        cStr  +=           "</" + defaultParagraphs[i][0].substring(1) ;
        cStr  +=       "</td>";
        cStr  +=    "</tr>";

    }


break;


case "fontsize":
    document.getElementById('infoBox').style.width = 280;
    var divHeaderText = cSetFontSizeText;
    for (var i=1; i <= 7; i++)
    {
        cStr  +=   "<TR>"
	cStr  += 	"<td nowrap  align=\"center\" onClick=\"doCommand('" + rte + "','" + cmd + "','" + i + "')\" onMouseover=\"this.className='myBorder'\" onMouseout=\"this.className=''\">"
        cStr  +=            "<FONT SIZE=" + i + ">"
        cStr  +=                 "ABCabc12...(" + i + ")"
        cStr  +=             "</FONT>"
        cStr  +=        "</TD>"
        cStr  +=      "</TR>"
  }
break;

case "addTable":
    document.getElementById('infoBox').style.width = 300;
    var divHeaderText = createTableText;
        cStr  +=   "<tr><td>"
        cStr  +=   "<table cellpadding='4' cellspacing='0' border='0'>";
        cStr  +=   "	<tr>";
        cStr  +=   "		<td align='right'>"+rowsText+":</td>";
        cStr  +=   "		<td><input type='text' id='tblRows' value='2' size='4'></td>";
        cStr  +=   "		<td align='left'>"+columnsText+": <input type='text' name='tblColumns' id='tblColumns' value='2' size='4'></td>";
        cStr  +=   "	</tr>";
        cStr  +=   "	<tr>";
        cStr  +=   "		<td align='right'>"+tableWidthText+":</td>";
        cStr  +=   "		<td><input type='text' id='tblWidth' value='100' size='4'></td>";
        cStr  +=   "		<td align='left'>";
        cStr  +=   "			<select name='widthType' id='widthType'>";
        cStr  +=   "				<option value='pixels'>"+pixelText+"</option>";
        cStr  +=   "				<option value='percent' selected>"+percentText+"</option>";
        cStr  +=   "			</select>";
        cStr  +=   "		</td>";
        cStr  +=   "	</tr>";
        cStr  +=   "	<tr>";
        cStr  +=   "		<td align='right'>"+borderThicknessText+":</td>";
        cStr  +=   "		<td><input type='text' name='tblBorder' id='tblBorder' value='1' size='4'></td>";
        cStr  +=   "		<td align='left'>"+pixelText+"</td>";
        cStr  +=   "	</tr>";
        cStr  +=   "	<tr>";
        cStr  +=   "		<td align='right'>"+cellPaddingText+":</td>";
        cStr  +=   "		<td><input type='text'  name='tblPadding'  id='tblPadding' value='4' size='4'></td>";
        cStr  +=   "		<td>"+cellSpacingText+":<input name='tblSpacing' type='text' id='tblSpacing' value='0' size='4'></td>";
        cStr  +=   "	</tr>";
        cStr  +=   "	<tr>";
        cStr  +=   "		<td colspan='3' align='center'>";
        cStr  +=   "			<input type='button' value='"+insertTableText+"' onClick='addTable(\""+rte+"\");' >";
        cStr  +=   "		</td>";
        cStr  +=   "	</tr>";
        cStr  +=   "</table>";
        cStr  +=   "</td></tr>";


break;

case "pickColor":
var szClick = '';
    document.getElementById('infoBox').style.width = 250;
    var divHeaderText = pickColorText;
    var sz, cPick = new Array("00","33","66","99","CC","FF"), iCnt=2
    var iColors = cPick.length, szColor = ""
    cStr  +=   "<tr><td><table width=100%  cellspacing=0 cellpadding=0><tr><td align=center valign=middle><div class=currentColor style=\"border:1px black solid;height:20px;width:20\" id=\"CurrentColor\"></div></td><td align=center>"
    cStr  +=     "<table class=colorTable style=\"cursor:"+cursorType+"\" cellspacing=0 cellpadding=0 id=\"" + rte + "\">"
    for (var r=0;r<iColors;r++) {
        cStr  +=   "<tr>"
        for (var g=iColors-1;g>=0;g--)
            for (var b=iColors-1;b>=0;b--) {
                szColor = cPick[r]+cPick[g]+cPick[b];
                cStr  +=   "<td id=\"#" + szColor+ "\" bgcolor=\"#" + szColor + "\" onClick=\"doCommand('"+rte+"','"+srcID+"',this.id)\"  onMouseOver=\"showColor(this.id)\">&nbsp;</TD>"
            }
      cStr  +=   "</tr>"
    }
    cStr  +=   "</table></td></tr></table></td></tr>"

break;



case "makeHyperlink":

    document.getElementById('infoBox').style.width = 290;

    var divHeaderText = createHyperlinkText;

    cStr  +=   '<tr><td><table cellpadding="4" cellspacing="0" border="0">';
    if(document.getElementById('sideitems')){
    cStr  +=   '	<tr>';
    cStr  +=   '		<td colspan="2">';
    cStr  +=   '			<span class="tagLine" style="margin:0px;">'+cSelectGroupPage+':</span>';
     cStr  +=   ' <select id="rteSelectPages"  class="select">';
    var oSideItems = document.getElementById('sideitems');
    var arrLinks = oSideItems.getElementsByTagName('A');	
    cStr  +=   '<option value="-1">=='+cSelectPage+'==</option>';
	for(var i=0;i<arrLinks.length;i++)
	{
		var cLabel = '';
		var cHref  = '';

		cLabel = arrLinks[i].innerHTML;
		cHref = arrLinks[i].href;
		cStr  +=   '<option value="'+cHref+'">'+cLabel+'</option>';


	}    
    cStr  +=   '</select>';
    cStr  +=   '			<p class="tagLine" style="margin-top:10px;">'+cOrText+'</p>';
    cStr  +=   '		</td>';
    cStr  +=   '	</tr>';  
    }
    cStr  +=   '	<tr>';
    cStr  +=   '		<td colspan="2">';
    cStr  +=   '			<span class="tagLine" style="margin:0px;">'+typeUrlText+':</span>';
    cStr  +=   '		</td>';
    cStr  +=   '	</tr>';
    cStr  +=   '		<td align="right">';
    cStr  +=   '			<select name="protocol" id="protocol">';
    cStr  +=   '				<option value="http://" selected>http://</option>';
    cStr  +=   '				<option value="mailto:">mailto:</option>';
    cStr  +=   '				<option value="ftp://">ftp://</option>';
    cStr  +=   '			</select>';


    cStr  +=   '		</td>';
    cStr  +=   '		<td align="left">';
    cStr  +=   '		<input type="text" name="URL" size="30">';
    cStr  +=   '		</td>';
    cStr  +=   '	</tr>';
    cStr  +=   '	<tr>';
    cStr  +=   '		<td colspan="2" align="center">';
    cStr  +=   '			<input type="button" value="'+insertLinkText+'" onClick="createHyperLink(\''+rte+'\');">';
    cStr  +=   '		</td>';
    cStr  +=   '	</tr>';
    cStr  +=   '</table></td></tr>';

break;

}

	cStr +=    "		</table>" ;
    	cStr += 	   "</div>";
    	cStr +=  "</div>";


	document.getElementById('infoBox').innerHTML = cStr;
	document.getElementById('divHeader').innerHTML = divHeaderText;
        var infoBoxWidth = document.getElementById('infoBox').style.width;
        infoBoxWidth = infoBoxWidth.replace('px','');	
        document.getElementById('infoBox').style.left = (document.getElementById('rteDiv').offsetWidth / 2) - (infoBoxWidth / 2);
		document.getElementById('infoBox').style.top = document.getElementById('forecolor').offsetTop + 35;
		addEvent(window, 'resize', moveDiv);
		function moveDiv(){
			window.onresize= function(){
			document.getElementById('infoBox').style.top = document.getElementById('forecolor').offsetTop + 35;
			document.getElementById('infoBox').style.left = (document.getElementById('rteDiv').offsetWidth / 2) - (infoBoxWidth / 2);
			}
		}
	
}

function createHyperLink(rte){

	//function to store range of current selection
	var oRTE ;

	if (document.all) {
		oRTE = frames[rte];
		var selection = oRTE.document.selection; 
		if (selection != null) rng = selection.createRange();
	} else {
		oRTE = document.getElementById(rte).contentWindow;
		var selection = oRTE.getSelection();
		rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange();
	}

	
	
	if(document.getElementById('rteSelectPages')){
		var oSelect = document.getElementById('rteSelectPages');
		if(oSelect.value != "-1"){
			if(currentSelection.text != ''){
			currentSelection.pasteHTML("<a href="+oSelect.value+">"+ currentSelection.text+"</a>");
			}else{
			currentSelection.pasteHTML("<a href="+oSelect.value+">"+oSelect.value+"</a>");
			}				
		}else{		
			if(currentSelection.text != ''){
				currentSelection.pasteHTML("<a href="+document.getElementById('protocol').value+document.getElementById('URL').value+">"+ currentSelection.text+"</a>");
			}else{
				currentSelection.pasteHTML("<a href="+document.getElementById('protocol').value+document.getElementById('URL').value+">"+document.getElementById('protocol').value+document.getElementById('URL').value+"</a>");
			}		
		}	
	}else{
		if(currentSelection.text != ''){
			currentSelection.pasteHTML("<a href="+document.getElementById('protocol').value+document.getElementById('URL').value+">"+ currentSelection.text+"</a>");
		}else{
			currentSelection.pasteHTML("<a href="+document.getElementById('protocol').value+document.getElementById('URL').value+">"+document.getElementById('protocol').value+document.getElementById('URL').value+"</a>");
		}
	}
	currentSelection.select();
	_CPopup_Hide();
}




    function showColor(currentColor){
	document.getElementById('CurrentColor').style.background = currentColor;
    }



function addEvent(obj, evType, fn){ 
 if (obj.addEventListener){ 
   obj.addEventListener(evType, fn, false); 
   return true; 
 } else if (obj.attachEvent){ 
   var r = obj.attachEvent("on"+evType, fn); 
   return r; 
 } else { 
   return false; 
 } 
}




function addTable(rte) {
	var widthType = (document.getElementById('widthType').value == "pixels") ? "" : "%";

	var html = '<table border="' + document.getElementById('tblBorder').value + '" cellpadding="' + document.getElementById('tblPadding').value + '" ';
	
	html += 'cellspacing="' + document.getElementById('tblSpacing').value + '" width="' + document.getElementById('tblWidth').value + widthType + '">\n';
	for (var rows = 0; rows < document.getElementById('tblRows').value; rows++) {
		html += "<tr>\n";
		for (cols = 0; cols < document.getElementById('tblColumns').value; cols++) {
			html += "<td>&nbsp;</td>\n";
		}
		html+= "</tr>\n";
	}
	html += "</table>\n";
	
	insertHTML(html,rte);

}


function writeRichText(rte, html, width, height, buttons, readOnly) {
	if (isRichText) {
		if (allRTEs.length > 0) allRTEs += ";";
		allRTEs += rte;
		 var cStr  =   '';
		 cStr  +=   '<div id="rteDiv" class="rteDiv" style="width:'+width+';margin-left:11px;">';
		if (buttons == true) {

			cStr  +=   '<table cellpadding="0" style="width:100%;" cellspacing="0" class="tdodd bordersubtable" >';
			cStr  +=   '	<tr>';
			cStr  +=   '		<td>';
			cStr  +=   '		<table class="rteBack" style="width:100%;" cellpadding="0" cellspacing="0" id="Buttons1_' + rte + '">'; 
			cStr  +=   '		<tr>';
			cStr  +=   '		<td style="font-size:10px">';
			cStr  +=   '		<img class="rteImage" alt="'+ cutText +'"  src="' + imagesPath + 'cut.gif" width="25" height="24"  onClick="rteCommand(\'' + rte + '\', \'cut\')">';
			cStr  +=   '		<img class="rteImage" alt="'+ copyText +'" src="' + imagesPath + 'copy.gif" width="25" height="24"  onClick="rteCommand(\'' + rte + '\', \'copy\')">';
			cStr  +=   '		<img class="rteImage" alt="'+ pasteText +'" src="' + imagesPath + 'paste.gif" width="25" height="24"  onClick="rteCommand(\'' + rte + '\', \'paste\')">';
			cStr  +=   '		<img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt="">';

			cStr  +=   '		<img class="rteImage" src="' + imagesPath + 'font_paragraph.gif" width="72" height="24"  onMouseDown="saveSelection(\'' + rte + '\')"  onClick="dispDiv(\'' + rte + '\', \'formatblock\')">';
			cStr  +=   '		<img class="rteImage" src="' + imagesPath + 'font_style.gif" width="72" height="24"  onMouseDown="saveSelection(\'' + rte + '\')" onClick="dispDiv(\'' + rte + '\', \'fontname\')">';
			cStr  +=   '		<img class="rteImage" src="' + imagesPath + 'font_size.gif" width="70" height="24"  onMouseDown="saveSelection(\'' + rte + '\')"  onClick="dispDiv(\'' + rte + '\', \'fontsize\')">';
			//cStr  +=   '		<span class="rteImage2" title="' + paragraphText + '" style="position: relative; height:24;padding:3px;" onMouseDown="saveSelection(\'' + rte + '\')" onClick="dispDiv(\'' + rte + '\', \'formatblock\')"><span  onMouseOver="this.parentNode.className = \'rteImageRaised2\'" onMouseOut="this.parentNode.className = \'rteImage2\'" style="font-family: Verdana, Arial, Helvetica; font-size: 10px; font-weight: bold;">'+paragraphText+'</span></span>';
			//cStr  +=   '		<span class="rteImage" title="' + fontStyleText + '" style="position: relative;height:24;padding:3px;" onMouseDown="saveSelection(\'' + rte + '\')" onClick="dispDiv(\'' + rte + '\', \'fontname\')"><span  onMouseOver="this.parentNode.className = \'rteImageRaised\'" onMouseOut="this.parentNode.className = \'rteImage\'" style="font-family: Verdana, Arial, Helvetica; font-size: 10px; font-weight: bold;">'+fontStyleText+'</span></span>';
			//cStr  +=   '		<span class="rteImage" title="' + fontSizeText + '"  style="position: relative; height:24;padding:3px;" onMouseDown="saveSelection(\'' + rte + '\')" onClick="dispDiv(\'' + rte + '\', \'fontsize\')"><span  onMouseOver="this.parentNode.className = \'rteImageRaised\'" onMouseOut="this.parentNode.className = \'rteImage\'" style="font-family: Verdana, Arial, Helvetica; font-size: 10px; font-weight: bold;">'+fontSizeText+'</span></span>';			
			cStr  +=   '		<img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt="">';
			cStr  +=   '		<img class="rteImage" alt="'+ boldText +'" src="' + imagesPath + 'bold.gif" width="25" height="24"  onClick="rteCommand(\'' + rte + '\', \'bold\', \'\')">';
			cStr  +=   '		<img class="rteImage" alt="'+ italicText +'" src="' + imagesPath + 'italic.gif" width="25" height="24"  onClick="rteCommand(\'' + rte + '\', \'italic\', \'\')">';
			cStr  +=   '		<img class="rteImage" alt="'+ underlineText +'" src="' + imagesPath + 'underline.gif" width="25" height="24"  onClick="rteCommand(\'' + rte + '\', \'underline\', \'\')">';

			cStr  +=   '		<img class="rteImage" alt="'+ leftJustifyText +'" src="' + imagesPath + 'left_just.gif" width="25" height="24" onClick="rteCommand(\'' + rte + '\', \'justifyleft\', \'\')">';
			cStr  +=   '		<img class="rteImage" alt="'+ rightJustifyText +'" src="' + imagesPath + 'centre.gif" width="25" height="24" alt="Center" title="Center" onClick="rteCommand(\'' + rte + '\', \'justifycenter\', \'\')">';
			cStr  +=   '		<img class="rteImage" alt="'+ centerJustifyText +'" src="' + imagesPath + 'right_just.gif" width="25" height="24"  onClick="rteCommand(\'' + rte + '\', \'justifyright\', \'\')">';
		        //cStr  +=   '		<img class="rteImage" src="' + imagesPath + 'justifyfull.gif" width="25" height="24"  onclick="rteCommand(\'' + rte + '\', \'justifyfull\', \'\')">';
			cStr  +=   '		<img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt="">';
			cStr  +=   '		<img class="rteImage" alt="'+ numberedListText +'" src="' + imagesPath + 'numbered_list.gif" width="25" height="24"  onClick="rteCommand(\'' + rte + '\', \'insertorderedlist\', \'\')">';
			cStr  +=   '		<img class="rteImage" alt="'+ bulletedListText +'" src="' + imagesPath + 'list.gif" width="25" height="24"  onClick="rteCommand(\'' + rte + '\', \'insertunorderedlist\', \'\')">';
			cStr  +=   '		<img class="rteImage" alt="'+ decreaseIndentText +'" src="' + imagesPath + 'outdent.gif" width="25" height="24"  onClick="rteCommand(\'' + rte + '\', \'outdent\', \'\')">';
			cStr  +=   '		<img class="rteImage" alt="'+ increaseIndentText +'" src="' + imagesPath + 'indent.gif" width="25" height="24"  onClick="rteCommand(\'' + rte + '\', \'indent\', \'\')">';
			cStr  +=   '		<img class="rteVertSep"  src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" >';
			cStr  +=   '		<img class="rteImage" alt="'+ insertLineText +'" src="' + imagesPath + 'hr.gif" width="25" height="24"  onClick="rteCommand(\'' + rte + '\', \'inserthorizontalrule\', \'\')">';
			cStr  +=   '		<img class="rteImage" alt="'+ insertLinkText +'" src="' + imagesPath + 'hyperlink.gif" width="25" height="24" onMouseDown="saveSelection(\'' + rte + '\')" onClick="dispDiv(\'' + rte + '\', \'makeHyperlink\')">';
			cStr  +=   '		<img class="rteImage" alt="'+ insertTableText +'" src="' + imagesPath + 'insert_table.gif" width="25" height="24"  onClick="dispDiv(\'' + rte + '\', \'addTable\')">';
			cStr  +=   '		<img class="rteImage" alt="'+ insertPictureText +'" src="' + imagesPath + 'image.gif" width="25" height="24"  onClick="addImage(\'' + rte + '\')">';
	

			cStr  +=   '		<img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt="">';
			cStr  +=   '		<img class="rteImage" alt="'+ backgroundColorText +'" src="' + imagesPath + 'bgcolor.gif" width="25" height="24"  id="hilitecolor" onMouseDown="saveSelection(\'' + rte + '\')"  onClick="dispDiv(\'' + rte + '\', \'pickColor\',this.id)">';
			cStr  +=   '		<img class="rteImage" alt="'+ textColorText +'" id="forecolor" src="' + imagesPath + 'textcolor.gif" width="25" height="24"  onMouseDown="saveSelection(\'' + rte + '\')"  onClick="dispDiv(\'' + rte + '\', \'pickColor\',this.id)">';

	//		cStr  +=   '		<img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt="">';
			cStr  +=   '		<img class="rteImage"  src="' + imagesPath + 'smiley.gif" width="25" height="24"  onClick="dispDiv(\'' + rte + '\', \'addEmoticon\')">';
	//		cStr  +=   '		<img class="rteVertSep" src="' + imagesPath + 'blackdot.gif" width="1" height="20" border="0" alt="">';

	//		cStr  +=   '		<img class="rteImage" src="' + imagesPath + 'undo.gif" width="25" height="24" onClick="rteCommand(\'' + rte + '\', \'undo\')">';
	//		cStr  +=   '		<img class="rteImage" src="' + imagesPath + 'redo.gif" width="25" height="24" onClick="rteCommand(\'' + rte + '\', \'redo\')">';
			cStr  +=   '		</td></tr>';
			cStr  +=   '		</table>';
			cStr  +=   '		</td>';
			cStr  +=   '	</tr>';
			cStr  +=   '	<tr>';
			cStr  +=   '		<td>';
			cStr  +=   ' <iframe  onfocus="_CPopup_Hide();validateImages('+rte+');" id="' + rte + '" name="' + rte + '" style="width:100%;" height="' + height + 'px" src="about:blank"></iframe>';

			cStr  +=   '		</td>';
			cStr  +=   '	</tr>';
			cStr  +=   '</table>';

		}
		

		if (!readOnly) {
		cStr  +=   '<br /><input type="checkbox" id="chkSrc' + rte + '" onclick="toggleHTMLSrc(\'' + rte + '\',' + buttons + ');" />&nbsp;<label class="viewSourceLink" for="chkSrc' + rte + '">'+viewSourceLinkText+'</label>';
		}
		cStr  +=   '<input type="hidden"  id="hdn' + rte + '" name="' + rte + '" value="">';
		//alert(document.getElementById('rteDiv').width);
		cStr  +=   '<div id="infoBox" style="position:absolute; top: 50; left: 150;z-index:1"></div>';

		cStr  +=   '</div>';
		document.writeln(cStr);
		if(html != ''){
		document.getElementById('hdn' + rte).value = html;
		}
		enableDesignMode(rte, html, readOnly);
	} else {
		cStr = '';
		if (!readOnly) {
			cStr  +=   '<textarea name="' + rte + '" id="' + rte + '" style="width: ' + width + '; height: ' + height + 'px;">' + html + '</textarea>';
		} else {
			cStr  +=   '<textarea name="' + rte + '" id="' + rte + '" style="width: ' + width + '; height: ' + height + 'px;" readonly>' + html + '</textarea>';
		}
		document.writeln(cStr);
	}
		
	
}

function enableDesignMode(rte, html, readOnly) {
	var frameHtml = "<html id=\"" + rte + "\">";
	frameHtml += "<head>";
	if (cssFile.length > 0) {
		frameHtml += "<link media=\"all\" type=\"text/css\" href=\"" + cssFile + "\" rel=\"stylesheet\">";
	} else {
		frameHtml += "<style>";
		frameHtml += "body {";
		frameHtml += "	background: #FFFFFF;";
		frameHtml += "	margin: 0px;";
		frameHtml += "	padding: 0px;";
		frameHtml += "  font-family: "+L_RTEFONTARIALDEF_TEXT+";"; 
		frameHtml += "}";
		frameHtml += "</style>";
	}
	frameHtml += "</head>";
	frameHtml += "<body>";
	frameHtml += html + "";
	frameHtml += "</body>";
	frameHtml += "</html>";
	
	if (document.all) {
	
		var oRTE = frames[rte].document;
		
		oRTE.open();
		oRTE.write(frameHtml);
		oRTE.close();
		if (!readOnly) {
			oRTE.designMode = "On";
			frames[rte].document.attachEvent("onkeypress", function evt_ie_keypress(event) {ieKeyPress(event, rte);});
		}
	} else {
		try {
			if (!readOnly) document.getElementById(rte).contentDocument.designMode = "on";
			try {
				var oRTE = document.getElementById(rte).contentWindow.document;
				oRTE.open();
				oRTE.write(frameHtml);
				oRTE.close();
				if (isGecko && !readOnly) {
					//attach a keyboard handler for gecko browsers to make keyboard shortcuts work
					oRTE.addEventListener("keypress", geckoKeyPress, true);
				}
			} catch (e) {
				alert("Error preloading content.");
			}
		} catch (e) {
			//gecko may take some time to enable design mode.
			//Keep looping until able to set.
			if (isGecko) {
				setTimeout("enableDesignMode('" + rte + "', '" + html + "', " + readOnly + ");", 10);
			} else {
				return false;
			}
		}
	}
}

function updateRTE(rte) {
	if (!isRichText) return;
	
	//check for readOnly mode
	var readOnly = false;

	if (document.all) {
		if (frames[rte].document.designMode != "On") readOnly = true;			
	
	} else {
		if (document.getElementById(rte).contentDocument.designMode != "on") readOnly = true;
		
	}
	
	if (isRichText && !readOnly) {
		//if viewing source, switch back to design view
		if (document.getElementById("chkSrc" + rte).checked) document.getElementById("chkSrc" + rte).click();
		setHiddenVal(rte);
	}
	
}

function setHiddenVal(rte) {
	//set hidden form field value for current rte
	var oHdnField = document.getElementById('hdn' + rte);
	
	//convert html output to xhtml (thanks Timothy Bell and Vyacheslav Smolin!)
	if (oHdnField.value == null) oHdnField.value = "";
	if (document.all) {
		if (generateXHTML) {
			oHdnField.value = get_xhtml(frames[rte].document.body, lang, encoding);
		} else {
			oHdnField.value = frames[rte].document.body.innerHTML;
		}
	} else {
		if (generateXHTML) {
			oHdnField.value = get_xhtml(document.getElementById(rte).contentWindow.document.body, lang, encoding);
		} else {
			oHdnField.value = document.getElementById(rte).contentWindow.document.body.innerHTML;
		}
	}
	
	//if there is no content (other than formatting) set value to nothing
	if (stripHTML(oHdnField.value.replace("&nbsp;", " ")) == "" &&
		oHdnField.value.toLowerCase().search("<hr") == -1 &&
		oHdnField.value.toLowerCase().search("<img") == -1) oHdnField.value = "";
}

function updateRTEs() {
	var vRTEs = allRTEs.split(";");
	for (var i = 0; i < vRTEs.length; i++) {
		updateRTE(vRTEs[i]);
	}
}





function rteCommand(rte, command, option) {
	//function to perform command
	var oRTE;

	if (document.all) {
		oRTE = frames[rte];
	} else {
		oRTE = document.getElementById(rte).contentWindow;
	}
	
	if(typeof(oRTE) != 'undefined'){
		try {
			oRTE.focus();
			oRTE.document.execCommand(command, false, option);
			oRTE.focus();
		} catch (e) {
			//alert(e);
			setTimeout("rteCommand('" + rte + "', '" + command + "', '" + option + "');", 10);
		}
	}
}


function saveSelection(rte) 
{
    	if(document.all){
    		oRTE = document.getElementById(rte).contentWindow
		oRTE.focus();
		currentSelection = oRTE.document.selection.createRange();
	}
}
function toggleHTMLSrc(rte, buttons) {

	//contributed by Bob Hutzel (thanks Bob!)
	var oHdnField = document.getElementById('hdn' + rte);
	
	if (document.getElementById("chkSrc" + rte).checked) {
		//we are checking the box
		if (buttons) {
			showHideElement("Buttons1_" + rte, "hide");
			//showHideElement("Buttons2_" + rte, "hide");
		}
		setHiddenVal(rte);
		if (document.all) {
		
		
			frames[rte].document.body.innerText = oHdnField.value;

		} else {
			var oRTE = document.getElementById(rte).contentWindow.document;
			var htmlSrc = oRTE.createTextNode(oHdnField.value);
			oRTE.body.innerHTML = "";
			oRTE.body.appendChild(htmlSrc);
		}
	} else {
		//we are unchecking the box
		if (buttons) {
			showHideElement("Buttons1_" + rte, "show");
			//showHideElement("Buttons2_" + rte, "show");
		}
		if (document.all) {
			//fix for IE
			var output = escape(frames[rte].document.body.innerText);
			output = output.replace("%3CP%3E%0D%0A%3CHR%3E", "%3CHR%3E");
			output = output.replace("%3CHR%3E%0D%0A%3C/P%3E", "%3CHR%3E");
			frames[rte].document.body.innerHTML = unescape(output);
		} else {
			var oRTE = document.getElementById(rte).contentWindow.document;
			var htmlSrc = oRTE.body.ownerDocument.createRange();
			htmlSrc.selectNodeContents(oRTE.body);
			oRTE.body.innerHTML = htmlSrc.toString();
		}
	}
}



function addImage(rte) {
	//function to add image
	imagePath = prompt(enterImageUrlText+':', 'http://');
	if(imagePath){
		if(imagePath.substr(0,7) != "http://"){

		alert(errNoLocalImages);
		return;
		}
		if ((imagePath != null) && (imagePath != "")) {
			rteCommand(rte, 'InsertImage', imagePath);
		}
	}
	
	
}

function validateImages(rte){

var errCount = 0;
	var oRTE;
	if (document.all) {
		oRTE = frames[rte.name];
	} else {
		oRTE = document.getElementById(rte.name).contentWindow;
	}

	for(var i = 0; i<oRTE.document.images.length;i++){

		if (oRTE.document.images[i].src.substr(0,7).toLowerCase() != "http://"){
		oRTE.document.images[i].removeNode(false);
		errCount++;
		
		}
	}
	if(errCount > 0){
	alert(errNoLocalImages);
	}
	
}


function getOffsetTop(elm) {
	var mOffsetTop = elm.offsetTop;
	var mOffsetParent = elm.offsetParent;
	var parents_up = 2; //the positioning div is 2 elements up the tree
	
	while(parents_up > 0) {
		mOffsetTop += mOffsetParent.offsetTop;
		mOffsetParent = mOffsetParent.offsetParent;
		parents_up--;
	}
	
	return mOffsetTop;
}

// Ernst de Moor: Fix the amount of digging parents up, in case the RTE editor itself is displayed in a div.
// KJR 11/12/2004 Changed to position palette based on parent div, so palette will always appear in proper location regardless of nested divs
function getOffsetLeft(elm) {
	var mOffsetLeft = elm.offsetLeft;
	var mOffsetParent = elm.offsetParent;
	var parents_up = 2;
	
	while(parents_up > 0) {
		mOffsetLeft += mOffsetParent.offsetLeft;
		mOffsetParent = mOffsetParent.offsetParent;
		parents_up--;
	}
	
	return mOffsetLeft;
}


function doCommand(rte,cmd,arg){


if(cmd=='hilitecolor' && (document.all)){
cmd = "backcolor";		
}

if(document.all){
currentSelection.select();
}

rteCommand(rte, cmd, arg);

if(document.all){
currentSelection.select();// re-sets the cursor to the right positsion 
}

_CPopup_Hide();
	

}


function insertEmoticon(rte,imageSrc) {

		rteCommand(rte, 'InsertImage', imageSrc);

}

function insertHTML(html, rte) {
	//function to add HTML -- thanks dannyuk1982
	//var rte = currentRTE;
	
	var oRTE;
	if (document.all) {
		oRTE = frames[rte];
	} else {
		oRTE = document.getElementById(rte).contentWindow;
	}
	
	oRTE.focus();
	if (document.all) {
		var oRng = oRTE.document.selection.createRange();
		oRng.pasteHTML(html);
		oRng.collapse(false);
		oRng.select();
	} else {
		oRTE.document.execCommand('insertHTML', false, html);
	}
}

function showHideElement(element, showHide) {
	//function to show or hide elements
	//element variable can be string or object
	if (document.getElementById(element)) {
		element = document.getElementById(element);
	}
	
	if (showHide == "show") {
		element.style.visibility = "visible";
	} else if (showHide == "hide") {
		element.style.visibility = "hidden";
	}
}

function setRange(rte) {
	//function to store range of current selection
	var oRTE;
	if (document.all) {
		oRTE = frames[rte];
		var selection = oRTE.document.selection; 
		if (selection != null) rng = selection.createRange();
	} else {
		oRTE = document.getElementById(rte).contentWindow;
		var selection = oRTE.getSelection();
		rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange();
	}
	return rng;
}

function stripHTML(oldString) {
	//function to strip all html
	var newString = oldString.replace(/(<([^>]+)>)/ig,"");
	
	//replace carriage returns and line feeds
   newString = newString.replace(/\r\n/g," ");
   newString = newString.replace(/\n/g," ");
   newString = newString.replace(/\r/g," ");
	
	//trim string
	newString = trim(newString);
	
	return newString;
}

function trim(inputString) {
   // Removes leading and trailing spaces from the passed string. Also removes
   // consecutive spaces and replaces it with one space. If something besides
   // a string is passed in (null, custom object, etc.) then return the input.
   if (typeof inputString != "string") return inputString;
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
	
   while (ch == " ") { // Check for spaces at the beginning of the string
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length - 1, retValue.length);
	
   while (ch == " ") { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length - 1);
      ch = retValue.substring(retValue.length - 1, retValue.length);
   }
	
	// Note that there are two spaces in the string - look for multiple spaces within the string
   while (retValue.indexOf("  ") != -1) {
		// Again, there are two spaces in each of the strings
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ") + 1, retValue.length);
   }
   return retValue; // Return the trimmed string back to the user
}

//********************
//Gecko-Only Functions
//********************
function geckoKeyPress(evt) {
	//function to add bold, italic, and underline shortcut commands to gecko RTEs
	//contributed by Anti Veeranna (thanks Anti!)
	var rte = evt.target.id;
	
	if (evt.ctrlKey) {
		var key = String.fromCharCode(evt.charCode).toLowerCase();
		var cmd = '';
		switch (key) {
			case 'b': cmd = "bold"; break;
			case 'i': cmd = "italic"; break;
			case 'u': cmd = "underline"; break;
		};

		if (cmd) {
			rteCommand(rte, cmd, null);
			
			// stop the event bubble
			evt.preventDefault();
			evt.stopPropagation();
		}
 	}
}

//*****************
//IE-Only Functions
//*****************
function ieKeyPress(evt, rte) {
	var key = (evt.which || evt.charCode || evt.keyCode);
	var stringKey = String.fromCharCode(key).toLowerCase();

}

function checkspell() {
	//function to perform spell check
	try {
		var tmpis = new ActiveXObject("ieSpell.ieSpellExtension");
		tmpis.CheckAllLinkedDocuments(document);
	}
	catch(exception) {
		if(exception.number==-2146827859) {
			if (confirm("ieSpell not detected.  Click Ok to go to download page."))
				window.open("http://www.iespell.com/download.php","DownLoad");
		} else {
			alert("Error Loading ieSpell: Exception " + exception.number);
		}
	}
}

function raiseButton(e) {
	var el = window.event.srcElement;
	
	className = el.className;
	if (className == 'rteImage' || className == 'rteImageLowered') {
		el.className = 'rteImageRaised';
	}
}

function normalButton(e) {
	var el = window.event.srcElement;
	
	className = el.className;
	if (className == 'rteImageRaised' || className == 'rteImageLowered') {
		el.className = 'rteImage';
	}
}

function lowerButton(e) {
	var el = window.event.srcElement;
	
	className = el.className;
	if (className == 'rteImage' || className == 'rteImageRaised') {
		el.className = 'rteImageLowered';
	}
}

