
var ua = navigator.userAgent.toLowerCase();
var	isIE = ((ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1)); 
var	isChrome = ua.indexOf("chrome") != -1;
//var	isIE = ((ua.indexOf("msie") != -1) && (ua.indexOf("webtv") == -1)); 
var isIE5up = isIE;
/*
if (isIE5up)
{alert ( 'ie5up');}
else
{alert ('other');}
*/

var	isGecko = (ua.indexOf("gecko") != -1 && ua.indexOf("safari") == -1);
var s1='';
var s2='';
var s3='';

var rtDiv = document.getElementById('rtDiv');

var rng;
var editMode = 'dev';
var displayMode="RICH";
var editset = false;
var romstring = "";
var currElemTag;
var currInputElem;

var currTa;
var lastTa;

var selLength;
var selStart;
var selEnd;

var hdoc;
var hframe;


var inputLeft;
var inputTop;
var colCommand;

var taName = 'message';

/*
	var editMode = 'dev';
	var editset = false;
	var romstring = "";
	var displayMode="RICH";
*/

function callSpellCheck ()
{
//putText;
spellcheck();
}

function spellCheck()
{

//		var uiurl = "http://www.manogat.com/dev/spell-check-ui.html";
		var uiurl = "http://www.manogat.com/dev/SPAW_spell-check-ui.html";
		var win;
if ( isIE5up )
		 {
//			win = window.open(uiurl, "SC_spell_checker",
//					  "toolbar=no,location=no,directories=no,status=no,menubar=no," +
//					  "scrollbars=no,resizable=yes,width=800,height=600");
			win = window.open(uiurl, "SC_spell_checker",
					  "resizable=yes,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,width=800,height=600");
		} else {
//			win = window.open(uiurl, "SC_spell_checker",
//					  "toolbar=no,menubar=no,personalbar=no,width=600,height=400," +
//					  "scrollbars=no,resizable=yes");
			win = window.open(uiurl, "SC_spell_checker");
		}
		win.focus();



}


	


function setEditMode()
{
//	if (document.forms[formName].elements[inputModeRadioName][0].checked)
	if (document.getElementById('modDev').checked)
	{
		editMode = 'dev';
	}
	else
	{
		editMode = 'rom';
	}
}

function hideHelp()
{
	var helpElem = document.getElementById ( 'devHelp' );
	helpElem.style.visibility="hidden";
}

function showHelp()
{
	var helpElem = document.getElementById ( 'devHelp' );
	helpElem.style.visibility="visible";
	helpElem.style.pixelLeft = document.documentElement.scrollLeft;
	helpElem.style.pixelTop = document.documentElement.scrollTop;
}



function getRealLeft(obj) {
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	if ( isIE5up )
	{
		if ( divRelativePos )
		{
			curleft = curleft / 2;
		}
	}

	return curleft;

}

function getRealTop(obj) {
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	if ( isIE5up )
	{
		if ( divRelativePos )
		{
			curtop = curtop / 2;
		}
	}

	return curtop;

}


function locKeyDown (e)
{
	if ( isIE5up )
	{
		var thisEvent = event;
		var kc = thisEvent.keyCode;
		processKeyDown ( thisEvent, kc );
	}
	else if ( isChrome )
	{
		var thisEvent = e;
		var kc = e.which;
		processKeyDown ( thisEvent, kc );
	}
}


function locKeyPress (e)
{
	if ( isIE5up )
	{
		var thisEvent = event;
		var kc = thisEvent.keyCode;
		processKeyPress ( thisEvent, kc );
	}
	else
	{
		var thisEvent = e;
		var kc = e.which;
		processKeyPress ( thisEvent, kc );
	}
}

function processKeyDown(e, kc)
{
	//alert ( kc );
	var thisEvent = e;

	if ( kc == 84 && thisEvent.ctrlKey )
	{
		//    processInput();
		if ( editMode == 'dev')
		{
//			document.sendform.inputMode[1].checked=document.sendform.inputMode[0].checked;
//	document.forms[formName].elements[inputModeRadioName][1].checked =
//	document.forms[formName].elements[inputModeRadioName][0].checked;
	document.getElementById('modRom').checked =
	document.getElementById('modDev').checked;
			//editMode = 'rom';
		}
		else
		{
//			document.sendform.inputMode[0].checked=document.sendform.inputMode[1].checked;
//	document.forms[formName].elements[inputModeRadioName][0].checked =
//	document.forms[formName].elements[inputModeRadioName][1].checked;
	document.getElementById('modDev').checked =
	document.getElementById('modRom').checked;
			//editMode = 'dev';
		}
		setEditMode();

		thisEvent.returnValue=false;
		romstring = '';
		rtDiv.innerHTML=romstring;
		rtDiv.style.visibility="hidden";
		editset = false;
		return;
		//    status = kc;
	}

	if ( editMode == 'dev' )
	{
		if ( kc == 37 || kc == 38 || kc == 39 || kc == 40 )
		{
			romstring = '';
			rtDiv.innerHTML=romstring;
			rtDiv.style.visibility="hidden";
			editset = false;
			return;
		}
		if ( kc == 8 )
		{
			if ( romstring.length > 0 )
			{
				romstring = romstring.substr(0,romstring.length-1);
				processInput();
				thisEvent.returnValue=false;
			}
			else
			{
				rtDiv.innerHTML="";
				rtDiv.style.visibility="hidden";
			}
		}
	}
}

function processKeyPress(e, kc)
{
	//alert ( kc );

	if ( kc == 116 && e.ctrlKey )
	{
		//    processInput();
		if ( editMode == 'dev')
		{
	//		document.sendform.inputMode[1].checked=document.sendform.inputMode[0].checked;
//	document.forms[formName].elements[inputModeRadioName][1].checked =
//	document.forms[formName].elements[inputModeRadioName][0].checked;
	document.getElementById('modRom').checked =
	document.getElementById('modDev').checked;
			//editMode = 'rom';
		}
		else
		{
	//		document.sendform.inputMode[0].checked=document.sendform.inputMode[1].checked;
//	document.forms[formName].elements[inputModeRadioName][0].checked =
//	document.forms[formName].elements[inputModeRadioName][1].checked;
	document.getElementById('modDev').checked =
	document.getElementById('modRom').checked;
			//editMode = 'dev';
		}
		setEditMode();

		if ( isIE5up )	e.returnValue=false;
		else e.preventDefault();

		romstring = '';
		rtDiv.innerHTML=romstring;
		rtDiv.style.visibility="hidden";
		editset = false;
		return;
		//    status = kc;
	}

	if ( editMode == 'dev' )
	{
		if (kc == 32)
		{
			romstring = '';
			rtDiv.innerHTML=romstring;
			rtDiv.style.visibility="hidden";
                        if (acEnabled) tfWordComplete();
			editset = false;
			return;
		}
		if ( kc == 8 )
		{
			if ( romstring.length > 0 )
			{
				romstring = romstring.substr(0,romstring.length-1);
				processInput();
				if ( isIE5up )	e.returnValue=false;
				else e.preventDefault();

			}
			else
			{
				rtDiv.innerHTML="";
				rtDiv.style.visibility="hidden";
			}
			return;
		}
		if (kc == 13 || kc == 60 || kc == 62 || kc == 0)
		{
			romstring = '';
			rtDiv.innerHTML=romstring;

			rtDiv.style.visibility="hidden";
			editset = false;
			return;
		}
		if (!editset)
		{
			currElemTag =  ( isIE5up )? e.srcElement.tagName: e.target.tagName;
			currInputElem =  ( isIE5up )? e.srcElement : e.target;
			var sel = _getSelection(e);
			deveditselection = _createRange (sel);
			editset = true;
			var range = deveditselection;

			if ( !isIE5up )
			{
					inputLeft = getRealLeft ( currInputElem ) ;
					inputTop = getRealTop ( currInputElem )+ 20;
					selLength = currInputElem.textLength;
					selStart = currInputElem.selectionStart;
					selEnd = currInputElem.selectionEnd;
			 s1 = (currInputElem.value).substring(0,selStart);
			 s3 = (currInputElem.value).substring(selEnd, selLength);
			}
		}
		romstring += String.fromCharCode(kc);

		processInput();
		if ( isIE5up )	e.returnValue=false;
		else e.preventDefault();

		status="pressed: "+ kc;
	}
}

function processInput ()
{
//	var devstring = document.applets[0].setString(romstring);
	var devstring = translitword(romstring);
	if ( isIE5up ) 
	{
		devstring = devstring.substr(0,devstring.length-1);
		udevstring = eval ("String.fromCharCode(" + devstring + ")");
		devlen = udevstring.length;
		deveditselection.text=udevstring;
		deveditselection.scrollIntoView();
		deveditselection.moveStart("character", (0-devlen));
	}
	else 
	{
		devstring = devstring.substr(0,devstring.length-1);
		udevstring = eval ("String.fromCharCode(" + devstring + ")");
		devlen = udevstring.length;

//			var s1 = (currInputElem.value).substring(0,selStart);
			//var s2 = (currInputElem.value).substring(selStart, selEnd);
			s2 = udevstring;
//			var s3 = (currInputElem.value).substring(selEnd, selLength);
			currInputElem.value = s1 + s2 + s3;
			currInputElem.setSelectionRange ( selStart +devlen , selStart +devlen );
	}
	rtDiv.style.visibility="visible";
	rtDiv.style.position="absolute";

	rtDiv.innerHTML=romstring;
	

	if ( isIE5up ) {
			//	rtDiv.style.left = '100px';
			//	rtDiv.style.top = '100px';
			if ( doctype )
			{
				rtDiv.style.pixelLeft = deveditselection.boundingLeft + document.documentElement.scrollLeft + currInputElem.scrollLeft;
				rtDiv.style.pixelTop = deveditselection.boundingTop + deveditselection.boundingHeight + document.documentElement.scrollTop;
			}
			else
			{
				rtDiv.style.pixelLeft = deveditselection.boundingLeft + document.body.scrollLeft + currInputElem.scrollLeft;
				rtDiv.style.pixelTop = deveditselection.boundingTop + deveditselection.boundingHeight + document.body.scrollTop;
			}
	}
	else{
			rtDiv.style.left = inputLeft + "px";
			rtDiv.style.top = inputTop + "px";
	}			       // alert ( rtDiv.style.left );
}

function processClick() {
     romstring = '';
     rtDiv.innerHTML=romstring;
     rtDiv.style.visibility="hidden";
     editset = false;
     return;
}

function processBlur() {
                        if (acEnabled) tfWordComplete();
     romstring = '';
     rtDiv.innerHTML=romstring;
     rtDiv.style.visibility="hidden";
     editset = false;
     return;
}

function processFocus() {
     romstring = '';
     rtDiv.innerHTML=romstring;
     rtDiv.style.visibility="hidden";
     editset = false;
     return;
}

function processPaste() {
                        if (acEnabled) 
{
currInputElem =  event.srcElement;
var iwords = window.clipboardData.getData('Text').replace(eval("/ ([,;!\\?\\.])/g"),"\$1").replace(eval("/([,;!\\?\\.])([^,;!\\?\\.])/g"),"\$1 \$2").split(" ");
var iwc = iwords.length; 
var wi = 0;
var otx = '';
for (wi=0;wi<iwc;wi++)
{
   var ow = SPAW_ac (iwords[wi] );
   if ( otx != '' ) otx += ' ';
   otx += ow;
}

			var sel = _getSelection(event);
			deveditselection = _createRange (sel);
			editset = true;
			var range = deveditselection;
		deveditselection.text=otx;
		deveditselection.scrollIntoView();
event.returnValue = false;
}
     romstring = '';
     rtDiv.innerHTML=romstring;
     rtDiv.style.visibility="hidden";
     editset = false;
     return;
}


// returns the current selection object
function _getSelection () {
	if (isIE5up) {
		return document.selection;
	} else {
		return window.getSelection();
	}
};

// returns a range for the current selection
function _createRange (sel) {
	if (isIE5up) {
		return sel.createRange();
	} else {
			return document.createRange();
	}
};

function prepareTextFields (fs)
{
	for ( var i in fs )
	{
//alert ('i = ' + i);
		//var tf = eval("document.sendform." + fs[i]  )  ;
		//var tf = document.forms[formName].elements[fs[i]];
		var tf = document.getElementById(fs[i]);
		if ( tf )
		{
			if ( isIE5up )
			{
				tf.attachEvent( "onkeypress", locKeyPress );
				tf.attachEvent( "onkeydown", locKeyDown );
				tf.attachEvent( "onclick", processClick );
				tf.attachEvent( "onblur", processBlur );
				tf.attachEvent( "onfocus", processFocus );
				tf.attachEvent( "onpaste", processPaste );
			}
			else if ( isChrome )
			{
				tf.addEventListener("keydown", locKeyDown, true);
				tf.addEventListener("keypress", locKeyPress, true);
				tf.addEventListener("click", processClick, true);
                        }
			else
			{
				tf.addEventListener("keypress", locKeyPress, true);
				tf.addEventListener("click", processClick, true);
			}
		}
	}
}

function toggleHTMLSrc(tf) {
	var rte = tf + "_rte";
	//contributed by Bob Hutzel (thanks Bob!)
	var oRTE;
	if (isIE5up) {
//		oRTE = frames[rte].document;
		oRTE = document.getElementById(rte).contentWindow.document;
	} else {
		oRTE = document.getElementById(rte).contentWindow.document;
	}
	
	if (document.getElementById(tf + "_chkSrc").checked) {
		document.getElementById(tf + "_Buttons1").style.visibility = "hidden";
//		document.getElementById(tf + "_Buttons2").style.visibility = "hidden";
		if (isIE5up) {
			oRTE.body.innerText = oRTE.body.innerHTML;
		} else {
			var htmlSrc = oRTE.createTextNode(oRTE.body.innerHTML);
			oRTE.body.innerHTML = "";
			oRTE.body.appendChild(htmlSrc);
		}
	} else {
		document.getElementById(tf + "_Buttons1").style.visibility = "visible";
//		document.getElementById(tf + "_Buttons2").style.visibility = "visible";
		if (document.all) {
			oRTE.body.innerHTML = oRTE.body.innerText;
		} else {
			var htmlSrc = oRTE.body.ownerDocument.createRange();
			htmlSrc.selectNodeContents(oRTE.body);
			oRTE.body.innerHTML = htmlSrc.toString();
		}
	}
}


if ( devExists )
{
//alert ('before prepareTextFields');
//alert ('len ='+textFieldArr.length);
prepareTextFields(textFieldArr);
}
//alert ('devedit48 loaded');
