var xlitObjects = {
	count : 0,
	enWords : [],/*Array to store en words*/
	hiWords : [],/*Array to store hi words*/
	xlitOptions : [],/*Array to store the xlit options returned by the server*/
	tempXlitOptions : [],
	atIndex : null,
	availableOptions : [],
	txtAreaArr : [],
	toggleSwitch : "true",
	toXlit : null
}

/* Left Trim */
function ltrim(str) { 
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
		return str.substring(k, str.length);
}

/* Right Trim */
function rtrim(str) {
	for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
	return str.substring(0,j+1);
}
	
/* Both Trims */
function trim(str) {
	return ltrim(rtrim(str));
}

/* Checks for White Spaces */
function isWhitespace(charToCheck) {
	var whitespaceChars = " \t\n\r\f";
	return (whitespaceChars.indexOf(charToCheck) != -1);
}

function GetXmlHttpObject() {
	var xmlHttp = null;

	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp = new XMLHttpRequest();

	} catch(e) {
		try { // Internet Explorer
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

	  	} catch (f) {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}


function stateChanged(_specialChar) {
	if (xmlHttp.readyState === 4 && xmlHttp.status === 200) {
												
		xlitObjects.hiWords.push(xmlHttp.responseText.split(" ",1));
		var thisWord = "";
		if(_specialChar != null){
			thisWord = xmlHttp.responseText.split(" ",1)+_specialChar;
			CurrTxtAreaArr.splice(indexInCurrWords,1,xmlHttp.responseText.split(" ",1)+_specialChar);
		}else{
			thisWord = xmlHttp.responseText.split(" ",1);
			CurrTxtAreaArr.splice(indexInCurrWords,1,xmlHttp.responseText.split(" ",1));
		}
	
		/*Storing the xlitOptions returned*/
		xlitObjects.tempXlitOptions.push(xmlHttp.responseText.split(" ",5));
		
		document.getElementById("transliterate_textarea").value = CurrTxtAreaArr.join(" ");
		cursorLength = getCursorLength(thisWord, theReqdInitialIndex);
		setCursorTextArea(document.getElementById("transliterate_textarea").value.length-cursorLength+1);

	}else{
		alert("State change(s) not reported. Error : "+xmlHttp.statusText);
		//document.getElementById("just1").innerHTML = "नही हुआ";
	}
}

function getXlatn(str,_specialChar) {

	xlitObjects.count = xlitObjects.count + 1;
	var engRegExp=/^\s*[A-Za-z]+\s*$/;
	//str = engRegExp.exec(str);
	if(engRegExp.test(str))
	{	
	xlitObjects.enWords.push(str);
	var url = "../editor/getXlatn";
	
	xmlHttp = GetXmlHttpObject();
	
	if(xmlHttp)
	{	/*XLit usage */
		
		xmlHttp.open("POST", url, false);
		xmlHttp.setRequestHeader("Content-Type","text/html;charset=utf-8;");
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		//xmlHttp.setRequestHeader("accept-charset","UTF-8");
		//var formData = "srclang=en&trgtlang=hi&inpword="+encodeURIComponent(str)+"&inputval=5&ui=editor";
		var formData = "srclang=en&trgtlang="+document.frmXlitForJS.targetLang.options[document.frmXlitForJS.targetLang.selectedIndex].value+"&inpword="+encodeURIComponent(str)+"&inputval=5&ui=editor";
		//alert(""+formData);			
		xmlHttp.send(formData);
		xmlHttp.onreadystatechange = stateChanged(_specialChar);
					
	}else{
		alert("State change(s) not reported. Error : "+xmlHttp.statusText);
		//document.getElementById("just1").innerHTML = "NO, getXlatn नही हुआ";
	}
	}//first IF ends here
	else{
		/*alert("Malformed word. Sorry");*/
	}
}


/* COOKIES */

var Cookies = {
	init: function () {
		var allCookies = document.cookie.split('; ');
		for (var i=0;i<allCookies.length;i++) {
			var cookiePair = allCookies[i].split('=');
			this[cookiePair[0]] = cookiePair[1];
		}
	},
	create: function (name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
		this[name] = value;
	},
	erase: function (name) {
		this.create(name,'',-1);
		this[name] = undefined;
	}
};
Cookies.init();
/* Cookies section Ends Here */

/* Functions for keyboard */

function refresh() {
	parent.display.document.close();
	parent.display.document.open("text/html");
	parent.display.document.write(parent.controls.theData);
	parent.display.document.close(); }

function addstr(addition) {
	parent.controls.theData += addition;
	refresh();
}

function add(code) {
	addstr('&' + '#' + code + ';');
}

function addnewline() {
	parent.controls.theData += "  <br>";
}

function clearthem() {
	if(confirm("Really erase everything?")) {
		parent.controls.theData = '';
		parent.display.document.close();
		parent.display.document.location = "empty.html";
	}
}

function showMoz() {
	var displaywindow = window.open('keybSampMoz.html','somename','width=625,height=250,resizable=0,toolbar=0,scrollbars=0,menubar=0');
	displaywindow.moveTo(350,430);
}

function showIE() {
	var displaywindow = window.open('keybSampIE.html','somename','width=625,height=250,resizable=0,toolbar=0,scrollbars=0,menubar=0');
	displaywindow.moveTo(350,430);
}
 
function show() {
	var displaywindow = window.open('../editor/keyboard1.html','keyboard','width=625,height=250,resizable=0,toolbar=0,scrollbars=0,menubar=0');
	displaywindow.moveTo(350,430);
}
	
function delchar() {
	pos = parent.controls.theData.length;
	while(parent.controls.theData.charAt(pos) != '&' &&
	      parent.controls.theData.charAt(pos) != '<')
    	pos--;
  	parent.controls.theData = parent.controls.theData.substring(0,pos);
  	refresh();
}

/* Functions for keyboard End here*/

 
function markCalled(id) {
	document.getElementById(id).innerHTML = "This will toggle the transliteration switch!!";
}


var mX;
var mY;

var arr = [];
	if (navigator.appName === "Netscape") {
		document.captureEvents(Event.CLICK);
	}

function printEvent(e) {
	if (navigator.appName === "Microsoft Internet Explorer")
	{
		mX = event.clientX;
		mY = event.clientY;
		arr = [mX,mY];
	}
	else
	{
		mX = e.pageX;
		mY = e.pageY;
		arr = [mX,mY];
	}

return arr;
}

function getSelectionStart(o) {
	if (o.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveEnd('character', o.value.length)
		if (r.text == '') return o.value.length
		return o.value.lastIndexOf(r.text)
	} else return o.selectionStart
}

function getSelectionEnd(o) {
	if (o.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveStart('character', -o.value.length)
		return r.text.length
	} else return o.selectionEnd
}


function getCaretPosition() {
	/*Getting the current caret position */
	o = document.getElementById("transliterate_textarea");
	var t = o.value, s = getSelectionStart(o), e = getSelectionEnd(o);
	return s;
}


function setSelRange(inputEl, selStart, selEnd) { 
	if (inputEl.setSelectionRange) { 
		inputEl.focus(); 
		inputEl.setSelectionRange(selStart, selEnd); 
	}else if (inputEl.createTextRange) { 
		var range = inputEl.createTextRange(); 
		range.collapse(true); 
		range.moveEnd('character', selEnd); 
		range.moveStart('character', selStart); 
		range.select(); 
	} 
}

function getWord() {
	var txtArea = document.getElementById("transliterate_textarea");
	var V= txtArea.value;
	var tempV = trim(V);
        var actualV = tempV+" ";
	var S= txtArea.selectionStart;
	var E= txtArea.selectionEnd;
	var word = actualV.slice( actualV.lastIndexOf(" ", S)+1 , actualV.indexOf(" ", E)  );
	return word;
}


function changeClass(type){
	var cur = document.getElementById(type).className;
	var newClass = (cur == 'preOptionsClass')? 'postOptionsClass': 'preOptionsClass';
	document.getElementById(type).className = newClass;
}

/*========================================================================================================== */
/* Added for product information */

function changeClassProducts(type){
	var cur = document.getElementById(type).className;
	var newClass = (cur == 'prewriteTextProducts')? 'postwriteTextProducts': 'prewriteTextProducts';
	document.getElementById(type).className = newClass;
}
/*========================================================================================================== */

function checkFontSize(size) {
	document.getElementById("transliterate_textarea").style.fontSize = size+"px";
	switch(size)
	{
	case "11"	: document.getElementById("transliterate_textarea").rows = "16";
			  break;
	case "12"	: document.getElementById("transliterate_textarea").rows = "15";
			  break;
	case "14"	: document.getElementById("transliterate_textarea").rows = "13";
			  break;
	case "16"	: document.getElementById("transliterate_textarea").rows = "12";
			  break;
	case "18"	: document.getElementById("transliterate_textarea").rows = "10";
			  break;
	case "20"	: document.getElementById("transliterate_textarea").rows = "9";
			  break;
	case "25"	: document.getElementById("transliterate_textarea").rows = "7";
			  break;
	case "30"	: document.getElementById("transliterate_textarea").rows = "6";
			  break;
	}
}

function ConstructURL(trgtLang) {
	targetLang = trgtLang;	
}

function getTargetLang(){
	return targetLang;
}

function showOptions()
{   
	/*showOptions function should show options only when its a hindi word*/
	optionsArr = [];
	forWord = getWord();
	specialChar = forWord.match(/[^\u0900-\u097F]+/g);
	forWord = forWord.replace(/[^\u0900-\u097F]+/g,'');
	
	if(forWord === "")
	{
	}else{
		if(encodeURIComponent(forWord) === forWord)
		{
		
	    	}else{     
				
			xlitObjects.xlitOptions.push(xlitObjects.tempXlitOptions);
			optionsStr = xlitObjects.xlitOptions.join(",");
			optionsArr = optionsStr.split(",");
			if(optionsArr.indexOf(forWord) !== -1)
			{
				xlitObjects.atIndex = optionsArr.indexOf(forWord);
				var multiplier = Math.floor(xlitObjects.atIndex/5);
				xlitObjects.availableOptions = [];
		
				/*Pushing the available transliterated options*/
				xlitObjects.availableOptions.push(optionsArr[(multiplier*5)],optionsArr[(multiplier*5)+1],optionsArr[(multiplier*5)+2],optionsArr[(multiplier*5)+3],optionsArr[(multiplier*5)+4]); 
	
				/*Now push the english word entered for it by the user
				 *calculate the index at which that word can be found in enIndexAt
				 *currently assumed only the first matches
				 */
				enIndexAt = Math.floor(xlitObjects.atIndex/5);
				
				xlitObjects.availableOptions.push(xlitObjects.enWords[enIndexAt]);
				
				var sHTMLstart = "<ul style='list-style-type:none;padding:0px;padding-bottom:0px;'>";
		
				sHTML1 = "<li id='listId1' style='cursor:default;' class='preOptionsClass' onmouseover=changeClass('listId1') onmouseout=changeClass('listId1') onClick='replaceWord(xlitObjects.availableOptions[0],specialChar);'>"+xlitObjects.availableOptions[0]+"</li>";
				sHTML2 = "<li id='listId2' style='cursor:default;' class='preOptionsClass' onmouseover=changeClass('listId2') onmouseout=changeClass('listId2') onClick='replaceWord(xlitObjects.availableOptions[1],specialChar);'>"+xlitObjects.availableOptions[1]+"</li>"; 
				sHTML3 = "<li id='listId3' style='cursor:default;' class='preOptionsClass' onmouseover=changeClass('listId3') onmouseout=changeClass('listId3') onClick='replaceWord(xlitObjects.availableOptions[2],specialChar);'>"+xlitObjects.availableOptions[2]+"</li>";
				sHTML4 = "<li id='listId4' style='cursor:default;' class='preOptionsClass' onmouseover=changeClass('listId4') onmouseout=changeClass('listId4') onClick='replaceWord(xlitObjects.availableOptions[3],specialChar);'>"+xlitObjects.availableOptions[3]+"</li>";
				sHTML5 = "<li id='listId5' style='cursor:default;' class='preOptionsClass' onmouseover=changeClass('listId5') onmouseout=changeClass('listId5') onClick='replaceWord(xlitObjects.availableOptions[4],specialChar);'>"+xlitObjects.availableOptions[4]+"</li>";    
				sHTML6 = "<li style='cursor:default;' >"+xlitObjects.availableOptions[5]+"</li>";
				sHTMLend = "</ul>";
		    
				sHTML =  sHTMLstart+sHTML1+sHTML2+sHTML3+sHTML4+sHTML5+sHTML6+sHTMLend;
			
				if(xlitObjects.availableOptions.indexOf("undefined") == -1)
				{ 
					document.getElementById("xlit").innerHTML = sHTML;
				}else
		    		{
		    		}
	
			}//if-Ends here
		}//if(encodeURIComponent)-else Ends here     
	}//Outer if-else Ends here
}	
	   
Array.prototype.find = function(searchStr) {
  var returnArray = false;
  for (i=0; i<this.length; i++) {
    if (typeof(searchStr) == 'function') {
      if (searchStr.test(this[i])) {
        if (!returnArray) { returnArray = [] }
        returnArray.push(i);
      }
    } else {
      if (this[i]===searchStr) {
        if (!returnArray) { returnArray = [] }
        returnArray.push(i);
      }
    }
  }
  return returnArray;
}


function checkCache(checkWord){
	var inEnWords = xlitObjects.enWords.find(checkWord);
	
   	if(inEnWords){
 		inCacheAtIndex = inEnWords.pop();
	    return true;
  	}else{
		return false;
	}
}

/* This function will replace the current word in the textarea with the clicked word 
 *  
 *  @rWrd - is the word to be replaced
 *  @rChar - is the special character that follows the word, if any, else is null
 */

function replaceWord(rWrd, rChar) {
	
	if(optionsArr.indexOf(rWrd) !== -1)
	{	
		xlitObjects.txtAreaArr = document.getElementById("transliterate_textarea").value.split(" ");
		trueIndex = document.getElementById("transliterate_textarea").value.split(" ").indexOf(getWord());
		rIndex = optionsArr.indexOf(rWrd);
		/* Handling changes in all the arrays - Handle words for showing available options*/
		/*User should, for every next time, see his/her selected option on entering same word*/
		
		xlitObjects.hiWords.splice(enIndexAt,1,rWrd);	
  		/*Handle words in textarea*/
		if(rChar != null){
			xlitObjects.txtAreaArr.splice(trueIndex,1,rWrd+rChar);
		}else{
			xlitObjects.txtAreaArr.splice(trueIndex,1,rWrd);
		}
		document.getElementById("transliterate_textarea").value = xlitObjects.txtAreaArr.join(" ");
	}
	else{
	}
}

function toggleXlitSwitch(switchFrom) {
	xlitObjects.toggleSwitch = (switchFrom == 'true') ? "false" : "true";
	//alert(xlitObjects.toggleSwitch);
	if(xlitObjects.toggleSwitch == "true"){
		//alert("true");
		document.getElementById("toggle_button").innerHTML = "<img onclick='javascript:toggleXlitSwitch(xlitObjects.toggleSwitch);' src='xlitimg/icon_switchON.png' alt='Click to switch transliteration OFF' title='Transliteration switch ON' style='background-color:transparent;border:0px;font-weight:bold;color:#FFFFFF;cursor:pointer;padding-right:8px;padding-bottom:14px;'/>&nbsp;&nbsp;";
		shortcut.add("space", function() {
			processData();
		});//Adding Shortcut for Space Ends here*/
		/*shortcut.add("Backspace", function() {
			handle();
		});*///Adding Shortcut for Backspace Ends here*/
	}//If Ends here
	else{
		//alert("else");
		document.getElementById("toggle_button").innerHTML = "<img onclick='javascript:toggleXlitSwitch(xlitObjects.toggleSwitch);' src='xlitimg/icon_switchOFF.png' alt='Click to switch transliteration OFF' title='Transliteration switch OFF' style='background-color:transparent;border:0px;font-weight:bold;color:#FFFFFF;cursor:pointer;padding-right:8px;padding-bottom:14px;'/>&nbsp;&nbsp;";
		shortcut.remove("space");
	}
}/*function Ends*/

function getCursorLength(theWord, ItemsFrom) {
	var returnLength = 0;
	textValueLength = document.getElementById("transliterate_textarea").value.length;	
	textValue = document.getElementById("transliterate_textarea").value.substring(ItemsFrom, textValueLength);
	var patt1 = new RegExp(theWord);
	patt1.test(textValue);
	var rightPart = RegExp.rightContext;
	returnLength = rightPart.length;
	return returnLength;
}

function processData() {
	caretPos = getCaretPosition();
	insCursorPos(document.getElementById("transliterate_textarea")," ");
	
	if(xlitObjects.toggleSwitch === "true")
	{
		inputText = document.getElementById("transliterate_textarea").value;
		CurrTxtAreaArr = inputText.split(" ");
	
		/* TO RETURN ALL OCCURRENCES OF REQUIRED STRING */
		foundItems = [];
		var index = inputText.indexOf(" ");
		while(index != -1 && index < caretPos)
		{
			foundItems.push(index);
			index = inputText.indexOf(" ", ++index);
		}
		theReqdInitialIndex = foundItems.pop();
		/*ENDS HERE*/
		
		if(inputText.lastIndexOf(" ") !== -1)
		{
			var w = inputText.slice(theReqdInitialIndex,caretPos);
		}
		else 
		{	
			var w = inputText.slice( 0 , caretPos);
		}
		var specialChar = "";
		specialChar = w.match(/[^\sa-zA-Z0-9]+/g,'');
		w_TrimmedOfSpecialChar = w.replace(/[^a-zA-Z0-9]+/g,'');
		
		if(w !== "" && w !== " " && encodeURIComponent(trim(w_TrimmedOfSpecialChar)) === trim(w_TrimmedOfSpecialChar))
		{	
			tempduplength = CurrTxtAreaArr.find(trim(w)).length;
			if( tempduplength == 1)
			{
				indexInCurrWords = CurrTxtAreaArr.indexOf(trim(w));
			}else if(tempduplength > 1)
			{
				indexInCurrWords = foundItems.length+1;				
			}
			
			if(checkCache(trim(w_TrimmedOfSpecialChar)) && xlitObjects.count !== 0)
			{       var thisWord = "";
				if(specialChar != null){
					thisWord = xlitObjects.hiWords[inCacheAtIndex]+specialChar;
					CurrTxtAreaArr.splice(indexInCurrWords,1,xlitObjects.hiWords[inCacheAtIndex]+specialChar);
				}else{
					thisWord = xlitObjects.hiWords[inCacheAtIndex];
					CurrTxtAreaArr.splice(indexInCurrWords,1,xlitObjects.hiWords[inCacheAtIndex]);
				}
				document.getElementById("transliterate_textarea").value = CurrTxtAreaArr.join(" ");
				cursorLength = getCursorLength(thisWord, theReqdInitialIndex);
				setCursorTextArea(document.getElementById("transliterate_textarea").value.length-cursorLength+1);
			}else
			{  	
				getXlatn(trim(w_TrimmedOfSpecialChar),specialChar);
			}
			
		}else
		{
			
		}
         	
	}
}


function _printText(content) {

contentToPrint = window.open("http://www.cdacmumbai.in/xlit/editor/xlit.html","English to Hindi transliteration",'left=20,top=20,width=800,height=600,toolbar=1,resizable=0');
contentToPrint.document.write(content);
contentToPrint.print();
}

function init() { 

	//alert("This page is under development. Please bear with us ! Do visit again !!\n I know you will want to :D");
	document.getElementById("transliterate_textarea").value = "";
	
	/*shortcut.add("Backspace", function() {
			handle();
		},{
		'type':'keypress',
		'propagate':true,
		'target':document
	});*///Adding Shortcut for Backspace Ends here*/
		
	shortcut.add("space", function() {
		caretPos = getCaretPosition();
		insCursorPos(document.getElementById("transliterate_textarea")," ");
		
		if(xlitObjects.toggleSwitch === "true")
		{
			inputText = document.getElementById("transliterate_textarea").value;
			CurrTxtAreaArr = inputText.split(" ");
			
			/* TO RETURN ALL OCCURRENCES OF REQUIRED STRING */
	
			foundItems = [];
			var index = inputText.indexOf(" ");
			while(index != -1 && index < caretPos)
			{
				foundItems.push(index);
				index = inputText.indexOf(" ", ++index);
			}
			theReqdInitialIndex = foundItems.pop();
			
			//ENDS HERE 	
			
			if(inputText.lastIndexOf(" ") !== -1)
			{
				var w = inputText.slice(theReqdInitialIndex,caretPos);
				
			}
			else 
			{	
				var w = inputText.slice( 0 , caretPos);
			}

			var specialChar = "";
			specialChar = w.match(/[^\sa-zA-Z0-9]+/g,'');
			w_TrimmedOfSpecialChar = w.replace(/[^a-zA-Z0-9]+/g,'');
			
			if(w !== "" && w !== " " && encodeURIComponent(trim(w_TrimmedOfSpecialChar)) === trim(w_TrimmedOfSpecialChar))
			{	
				tempduplength = CurrTxtAreaArr.find(trim(w)).length;
				if( tempduplength == 1)
				{
					indexInCurrWords = CurrTxtAreaArr.indexOf(trim(w));
				}else if(tempduplength > 1)
				{
					indexInCurrWords = foundItems.length+1;				
				}
				
				if(checkCache(trim(w_TrimmedOfSpecialChar)) && xlitObjects.count !== 0)
				{       var thisWord = "";
					if(specialChar != null){
						thisWord = xlitObjects.hiWords[inCacheAtIndex]+specialChar;
						CurrTxtAreaArr.splice(indexInCurrWords,1,xlitObjects.hiWords[inCacheAtIndex]+specialChar);
					}else{
						thisWord = xlitObjects.hiWords[inCacheAtIndex];
						CurrTxtAreaArr.splice(indexInCurrWords,1,xlitObjects.hiWords[inCacheAtIndex]);
					}
					document.getElementById("transliterate_textarea").value = CurrTxtAreaArr.join(" ");
					cursorLength = getCursorLength(thisWord, theReqdInitialIndex);
					setCursorTextArea(document.getElementById("transliterate_textarea").value.length-cursorLength+1);
				}else
				{  	
					getXlatn(trim(w_TrimmedOfSpecialChar),specialChar);
				}
				
			}else
			{
				
			}
          	
		}		
	});//Adding Shortcut for Space Ends here
	

	shortcut.add("Ctrl+1", function() {
		toggleXlitSwitch(xlitObjects.toggleSwitch);
	});
	
}



function setCursorTextArea(setLength){

      var editor = document.getElementById("transliterate_textarea");
      var myColumn = setLength;//document.getElementById("column2").value;

      var myRow = 1;//document.getElementById("row2").value;
      
      // calculate row length - each "row" is ended by a \n in the .value of 
      // the textarea.
      // First, lets split the value by \n
      
      var rows = editor.value.split("\n");
      
      // if we want any row larger than 1, we need to calculate offets
      if (myRow > 1){
        for (var run = 0; run < (myRow-1); run++){
          // + 1 because of the newline character!
          myColumn = parseInt(myColumn,10) + rows[run].length + 1;
        }
      
      }

      editor.selectionStart = myColumn;
      editor.selectionEnd = myColumn;
      editor.focus();

    }



function getSelText()
{	var textarea = document.getElementById("transliterate_textarea");  
   
	var len = textarea.value.length;  
	var start = textarea.selectionStart;  
	var end = textarea.selectionEnd;  
	var sel = textarea.value.substring(start, end);  
	// This is the selected text and alert it or return it 
	return sel;  
}


/*-- For adding value at cursor position  --*/

function insCursorPos(myField, myValue) {				
	//IE support
	if (document.selection) {
		myField.focus();
		sel = document.selection.createRange();
		sel.text = myValue;
		myField.focus();
	}
	//MOZILLA/NETSCAPE support
	else if (myField.selectionStart || myField.selectionStart == '0') {
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		myField.value = myField.value.substring(0, startPos)
		+ myValue
		+ myField.value.substring(endPos, myField.value.length);
		myField.focus();
		myField.selectionStart = startPos + myValue.length;
		myField.selectionEnd = startPos + myValue.length;
	} 
	else {
		myField.value += myValue;
		myField.setValue(myField.value);
		myField.focus();
	}
	return false;
}
	
function sendToCopy(str)
{
textToBeSent = str;
//alert("being sent: "+textToBeSent);
copy_to_clipboard(textToBeSent);	
}

function copy_to_clipboard(text){  
	if(window.clipboardData)  
        {  
        window.clipboardData.setData('text',text);  
        }  
        else  
        {  
            var clipboarddiv=document.getElementById('divclipboardswf');  
        if(clipboarddiv == null)  
       {  
          clipboarddiv=document.createElement('div');  
              clipboarddiv.setAttribute("name", "divclipboardswf");  
          clipboarddiv.setAttribute("id", "divclipboardswf");  
          document.body.appendChild(clipboarddiv);  
       }  
           clipboarddiv.innerHTML='<embed src="clipboard.swf" FlashVars="clipboard='+  
   encodeURIComponent(text)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';  
       }  
       alert('The text is copied to your clipboard: '+text);  
       return false;  
}  

function doCommand(strComm){
	switch(strComm){
		case 'Copy' 	:var copyContent = getSelText();					 
				 toPaste = copyContent;
				 sendToCopy(copyContent);
				 break;

		case 'Paste'	:if(toPaste){
					insCursorPos(document.getElementById("transliterate_textarea"),toPaste);
				 }else if(toPaste == ""){
				        alert("Unable to perform paste operation"); 	
				 }
				 break;

		case 'Cut'	:var cutContent = getSelText();
				 toPaste = cutContent;
				 sendToCopy(cutContent);
				 document.getElementById("transliterate_textarea").value = document.getElementById("transliterate_textarea").value.replace(cutContent,"");
				 break;
				
	}
}

window.onload = init;
