/* --------------------------------------- */
//JavaScript Unicode Keyboard Handler
//By: Jawish Hameed
//jaa.technova.com.mv
//Version: 2.0 ( Jan 2006 )
/* --------------------------------------- */


function HandleKeyPress( evt )
{
//if(navigator.userAgent.indexOf("Firefox")!=-1){
//var versionindex=navigator.userAgent.indexOf("Firefox")+8
//if (parseInt(navigator.userAgent.charAt(versionindex))>=1)
//alert("You are using Firefox 1.x or above")
//}	
	// cross browser workaround for accessing events
    var evt 	= ( evt ) ? evt : window.event;
	
	// cross browser workaround for accessing target element
	var elem 	= ( evt.target ) ? evt.target : evt.srcElement;
	
	// cross browser workaround for getting the pressed key
	var keycode = ( evt.which ) ? evt.which : evt.keyCode;
	
	//unicode u202E RIGHT TO LEFT OVERRIDE u200A thinnest space u200A 0 width space
	var english_ascii = "hSnrbLkwvmfdtlgNsDzTypjcXHKJRxBMYZWGQVaAiIuUeEoOqFC,;?.";
	var dhivehi_unicode = [ '\u0780','\u0781','\u0782','\u0783','\u0784','\u0785','\u0786',
							'\u0787','\u0788','\u0789','\u078A','\u078B','\u078C','\u078D',
							'\u078E','\u078F','\u0790','\u0791','\u0792','\u0793','\u0794',
							'\u0795','\u0796','\u0797','\u0798','\u0799','\u079A','\u079B',
							'\u079C','\u079D','\u079E','\u079F','\u07A0','\u07A1','\u07A2',
							'\u07A3','\u07A4','\u07A5','\u07A6','\u07A7','\u07A8','\u07A9',
							'\u07AA','\u07AB','\u07AC','\u07AD','\u07AE','\u07AF','\u07B0',
							'\uFDF2','\u079D','\u060C','\u061B','\u061F','\u002E\u202B\u200B' ]
	
	// get the position of the character from the english list
	var pos = english_ascii.indexOf( String.fromCharCode( keycode ) );
	
	// if character is to be switched for dhivehi equivalent
	if (pos != -1 && evt.ctrlKey == false )
	{
		
		// update the text
		if ( document.selection )
		{
			// for ie
		    sel = document.selection.createRange();
		    sel.text = dhivehi_unicode[ pos ];
			
		} 
		
		else {

			// for mozilla
			
			//added .. not in the original script
			if ( evt.keycode == 46)
			{
				return false;
							
			}
			//			
			var selstart = elem.selectionStart;
			elem.value = elem.value.substring( 0, selstart ) + dhivehi_unicode[ pos ] + elem.value.substring( elem.selectionEnd );
		}
		
		// IE specific cancellation of pressed key
		if ( navigator.appName == "Microsoft Internet Explorer") {	
			evt.keyCode = 0;
		}
		
		// set the caret (removing this block will make it woirk in opera ) - with this it works only in IE and firefox
		//selstart = selstart+1;
		//elem.setSelectionRange( selstart, selstart );
		//
		
		// stop the normal processing of the entered key
		return false;
		
	} else {
		


		if ( keycode == 32 || keycode == 10 || keycode == 13)
		{
			/*
			var selstart = elem.selectionStart + 1;
			elem.setSelectionRange( selstart, selstart );
			*/
		
		document.getElementById('msg').innerText = "a" + String.fromCharCode(keycode).length + "a";
		// set the caret
		var selstart = elem.selectionStart+1;
		elem.value = elem.value.substring( 0, selstart ) + String.fromCharCode(keycode) + elem.value.substring( elem.selectionEnd );
		
		// set the caret
		selstart = selstart+1;
		elem.setSelectionRange( selstart, selstart );

		//return false;
		}
		
		
	}
}