
var uniphonetic=new Array();uniphonetic['k']="\u0995";uniphonetic['i']='\u09BF';uniphonetic['I']='\u0987';uniphonetic['ii']='\u09C0';uniphonetic['II']='\u0988';uniphonetic['e']='\u09C7';uniphonetic['E']='\u098F';uniphonetic['U']='\u0989';uniphonetic['u']='\u09C1';uniphonetic['uu']='\u09C2';uniphonetic['UU']='\u098A';uniphonetic['r']='\u09B0';uniphonetic['WR']='\u098B';uniphonetic['a']='\u09BE';uniphonetic['A']='\u0986';uniphonetic['ao']='\u0985';uniphonetic['s']='\u09B8';uniphonetic['t']='\u099f';uniphonetic['K']='\u0996';uniphonetic['kh']='\u0996';uniphonetic['n']='\u09A8';uniphonetic['N']='\u09A3';uniphonetic['T']='\u09A4';uniphonetic['Th']='\u09A5';uniphonetic['d']='\u09A1';uniphonetic['dh']='\u09A2';uniphonetic['b']='\u09AC';uniphonetic['bh']='\u09AD';uniphonetic['v']='\u09AD';uniphonetic['R']='\u09DC';uniphonetic['Rh']='\u09DD';uniphonetic['g']='\u0997';uniphonetic['G']='\u0998';uniphonetic['gh']='\u0998';uniphonetic['h']='\u09B9';uniphonetic['NG']='\u099E';uniphonetic['j']='\u099C';uniphonetic['J']='\u099D';uniphonetic['jh']='\u099D';uniphonetic['c']='\u099A';uniphonetic['ch']='\u099A';uniphonetic['C']='\u099B';uniphonetic['th']='\u09A0';uniphonetic['p']='\u09AA';uniphonetic['f']='\u09AB';uniphonetic['ph']='\u09AB';uniphonetic['D']='\u09A6';uniphonetic['Dh']='\u09A7';uniphonetic['z']='\u09AF';uniphonetic['y']='\u09DF';uniphonetic['Ng']='\u0999';uniphonetic['ng']='\u0982';uniphonetic['l']='\u09B2';uniphonetic['m']='\u09AE';uniphonetic['sh']='\u09B6';uniphonetic['S']='\u09B7';uniphonetic['O']='\u0993';uniphonetic['ou']='\u099C';uniphonetic['OU']='\u0994';uniphonetic['Ou']='\u0994';uniphonetic['Oi']='\u0990';uniphonetic['OI']='\u0990';uniphonetic['tt']='\u09CE';uniphonetic['H']='\u0983';uniphonetic["."]="\u0964";uniphonetic[".."]=".";uniphonetic['HH']='\u09CD'+'\u200c';uniphonetic['NN']='\u0981';uniphonetic['Y']='\u09CD'+'\u09AF';uniphonetic['w']='\u09CD'+'\u09AC';uniphonetic['W']='\u09C3';uniphonetic['wr']='\u09C3';uniphonetic['x']="\u0995"+'\u09CD'+'\u09B8';uniphonetic['rY']=uniphonetic['r']+'\u200c'+'\u09CD'+'\u09AF';uniphonetic['L']=uniphonetic['l'];uniphonetic['Z']=uniphonetic['z'];uniphonetic['P']=uniphonetic['p'];uniphonetic['V']=uniphonetic['v'];uniphonetic['B']=uniphonetic['b'];uniphonetic['M']=uniphonetic['m'];uniphonetic['V']=uniphonetic['v'];uniphonetic['X']=uniphonetic['x'];uniphonetic['V']=uniphonetic['v'];uniphonetic['F']=uniphonetic['f'];uniphonetic['0']='\u09E6';uniphonetic['1']='\u09E7';uniphonetic['2']='\u09E8';uniphonetic['3']='\u09E9';uniphonetic['4']='\u09EA';uniphonetic['5']='\u09EB';uniphonetic['6']='\u09EC';uniphonetic['7']='\u09ED';uniphonetic['8']='\u09EE';uniphonetic['9']='\u09EF';var carry='';var old_len=0;var ctrlPressed=false;var len_to_process_oi_kar=0;var first_letter=false;isIE=document.all?1:0;function checkKeyDown(ev)
{var e=(window.event)?event.keyCode:ev.which;if(e=='17')
{ctrlPressed=true;}}
function checkKeyUp(ev)
{var e=(window.event)?event.keyCode:ev.which;if(e=='17'){ctrlPressed=false;}}
function parseuniphonetic(evnt)
{var t=BanglaKeyboardUtil.mActiveField;var e=(window.event)?event.keyCode:evnt.which;if(e=='113')
{if(ctrlPressed){return true;}}
if(ctrlPressed)
{e=0;}
var char_e=String.fromCharCode(e);if(e==8||e==32)
{carry=" ";old_len=1;return;}
lastcarry=carry;carry+=""+char_e;bangla=parseuniphoneticCarry(carry);tempBangla=parseuniphoneticCarry(char_e);if(tempBangla==".."||bangla=="..")
{return false;}
if(char_e=="+")
{if(carry=="++")
{insertJointAtCursor("+",old_len);old_len=1;return false;}
insertAtCursor("\u09CD");old_len=1;carry="+";return false;}
else if(old_len==0)
{insertJointAtCursor(bangla,1);old_len=1;return false;}
else if(carry=="ao")
{insertJointAtCursor(parseuniphoneticCarry("ao"),old_len);old_len=1;return false;}
else if(carry=="ii")
{insertJointAtCursor(uniphonetic['ii'],1);old_len=1;return false;}
else if(carry=="oi")
{insertJointAtCursor('\u09C8',1);return false;}
else if(char_e=="o")
{old_len=1;insertAtCursor('\u09CB');carry="o";return false;}
else if(carry=="ou")
{insertJointAtCursor("\u09CC",old_len);old_len=1;return false;}
else if((bangla==""&&tempBangla!=""))
{bangla=tempBangla;if(bangla=="")
{carry="";return;}
else
{carry=char_e;insertAtCursor(bangla);old_len=bangla.length;return false;}}
else if(bangla!="")
{insertJointAtCursor(bangla,old_len);old_len=bangla.length;return false;}}
function parseuniphoneticCarry(code)
{if(!uniphonetic[code])
{return'';}
else
{return(uniphonetic[code]);}}
function insertAtCursor(myValue){var myField=BanglaKeyboardUtil.mActiveField;if(document.selection){myField.focus();sel=document.selection.createRange();sel.text=myValue;sel.collapse(true);sel.select();}
else if(myField.selectionStart||myField.selectionStart==0){var startPos=myField.selectionStart;var endPos=myField.selectionEnd;var scrollTop=myField.scrollTop;startPos=(startPos==-1?myField.value.length:startPos);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;myField.scrollTop=scrollTop;}else{var scrollTop=myField.scrollTop;myField.value+=myValue;myField.focus();myField.scrollTop=scrollTop;}}
function insertJointAtCursor(myValue,len){var myField=BanglaKeyboardUtil.mActiveField;if(document.selection){myField.focus();var sel=document.selection.createRange();if(myField.value.length>=len){sel.moveStart('character',-1*(len));}
sel.text=myValue;sel.collapse(true);sel.select();}
else if(myField.selectionStart||myField.selectionStart==0){myField.focus();var startPos=myField.selectionStart-len;var endPos=myField.selectionEnd;var scrollTop=myField.scrollTop;startPos=(startPos==-1?myField.value.length:startPos);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;myField.scrollTop=scrollTop;}else{var scrollTop=myField.scrollTop;myField.value+=myValue;myField.focus();myField.scrollTop=scrollTop;}}
function makeUniPhoneticEditor(pInputElement)
{pInputElement.onkeypress=parseuniphonetic;pInputElement.onkeydown=checkKeyDown;pInputElement.onkeyup=checkKeyUp;}
var unijoy=new Array();unijoy['j']="\u0995";unijoy['d']='\u09BF';unijoy['gd']='\u0987';unijoy['D']='\u09C0';unijoy['gD']='\u0988';unijoy['c']='\u09C7';unijoy['gc']='\u098F';unijoy['gs']='\u0989';unijoy['s']='\u09C1';unijoy['S']='\u09C2';unijoy['gS']='\u098A';unijoy['v']='\u09B0';unijoy['a']='\u098B';unijoy['f']='\u09BE';unijoy['gf']='\u0986';unijoy['F']='\u0985';unijoy['n']='\u09B8';unijoy['t']='\u099f';unijoy['J']='\u0996';unijoy['b']='\u09A8';unijoy['B']='\u09A3';unijoy['k']='\u09A4';unijoy['K']='\u09A5';unijoy['e']='\u09A1';unijoy['E']='\u09A2';unijoy['h']='\u09AC';unijoy['H']='\u09AD';unijoy['p']='\u09DC';unijoy['P']='\u09DD';unijoy['o']='\u0997';unijoy['O']='\u0998';unijoy['i']='\u09B9';unijoy['I']='\u099E';unijoy['u']='\u099C';unijoy['U']='\u099D';unijoy['y']='\u099A';unijoy['Y']='\u099B';unijoy['T']='\u09A0';unijoy['r']='\u09AA';unijoy['R']='\u09AB';unijoy['l']='\u09A6';unijoy['L']='\u09A7';unijoy['w']='\u09AF';unijoy['W']='\u09DF';unijoy['q']='\u0999';unijoy['Q']='\u0982';unijoy['V']='\u09B2';unijoy['m']='\u09AE';unijoy['M']='\u09B6';unijoy['N']='\u09B7';unijoy['gx']='\u0993';unijoy['X']='\u09CC';unijoy['gX']='\u0994';unijoy['gC']='\u0990';unijoy['\\']='\u09CE';unijoy['|']='\u0983';unijoy["G"]="\u0964";unijoy['g']=' ';unijoy['&']='\u0981';unijoy['Z']='\u09CD'+'\u09AF';unijoy['gh']='\u09CD'+'\u09AC';unijoy['ga']='\u098B';unijoy['a']='\u09C3';unijoy['rZ']=unijoy['r']+'\u200c'+'\u09CD'+'\u09AF';unijoy['z']='\u09CD'+unijoy['v'];unijoy['x']='\u09CB';unijoy['C']='\u09C8';unijoy['0']='\u09E6';unijoy['1']='\u09E7';unijoy['2']='\u09E8';unijoy['3']='\u09E9';unijoy['4']='\u09EA';unijoy['5']='\u09EB';unijoy['6']='\u09EC';unijoy['7']='\u09ED';unijoy['8']='\u09EE';unijoy['9']='\u09EF';var carry='';var old_len=0;var ctrlPressed=false;var first_letter=false;var lastInserted;isIE=document.all?1:0;function checkKeyDown(ev)
{var e=(window.event)?event.keyCode:ev.which;if(e=='17')
{ctrlPressed=true;}}
function checkKeyUp(ev)
{var e=(window.event)?event.keyCode:ev.which;if(e=='17')
{ctrlPressed=false;}}
function parseunijoy(evnt)
{var t=BanglaKeyboardUtil.mActiveField;var e=(window.event)?event.keyCode:evnt.which;if(e=='113')
{if(ctrlPressed){return true;}}
if(ctrlPressed)
{e=0;}
var char_e=String.fromCharCode(e);if(e==8||e==32)
{carry=" ";old_len=1;return;}
lastcarry=carry;carry+=""+char_e;bangla=parseunijoyCarry(carry);tempBangla=parseunijoyCarry(char_e);if(tempBangla==".."||bangla=="..")
{return false;}
if(char_e=="g")
{if(carry=="gg")
{insertConjunction('\u09CD'+'\u200c',old_len);old_len=1;return false;}
insertAtCursor("\u09CD");old_len=1;carry="g";return false;}
else if(old_len==0)
{insertConjunction(bangla,1);old_len=1;return false;}
else if(char_e=="A")
{newChar=unijoy['v']+'\u09CD'+lastInserted;insertConjunction(newChar,lastInserted.length);old_len=lastInserted.length;return false;}
else if((bangla==""&&tempBangla!=""))
{bangla=tempBangla;if(bangla=="")
{carry="";return;}
else
{carry=char_e;insertAtCursor(bangla);old_len=bangla.length;return false;}}
else if(bangla!="")
{insertConjunction(bangla,old_len);old_len=bangla.length;return false;}}
function parseunijoyCarry(code)
{if(!unijoy[code])
{return'';}
else
{return(unijoy[code]);}}
function insertAtCursor(myValue){lastInserted=myValue;var myField=BanglaKeyboardUtil.mActiveField;if(document.selection){myField.focus();sel=document.selection.createRange();sel.text=myValue;sel.collapse(true);sel.select();}
else if(myField.selectionStart||myField.selectionStart==0){var startPos=myField.selectionStart;var endPos=myField.selectionEnd;var scrollTop=myField.scrollTop;startPos=(startPos==-1?myField.value.length:startPos);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;myField.scrollTop=scrollTop;}else{var scrollTop=myField.scrollTop;myField.value+=myValue;myField.focus();myField.scrollTop=scrollTop;}}
function insertConjunction(myValue,len){lastInserted=myValue;var myField=BanglaKeyboardUtil.mActiveField;if(document.selection){myField.focus();sel=document.selection.createRange();if(myField.value.length>=len){sel.moveStart('character',-1*(len));}
sel.text=myValue;sel.collapse(true);sel.select();}
else if(myField.selectionStart||myField.selectionStart==0){myField.focus();var startPos=myField.selectionStart-len;var endPos=myField.selectionEnd;var scrollTop=myField.scrollTop;startPos=(startPos==-1?myField.value.length:startPos);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;myField.scrollTop=scrollTop;}else{var scrollTop=myField.scrollTop;myField.value+=myValue;myField.focus();myField.scrollTop=scrollTop;}}
function makeUnijoyEditor(pInputElement)
{pInputElement.onkeypress=parseunijoy;pInputElement.onkeydown=checkKeyDown;pInputElement.onkeyup=checkKeyUp;}
var BanglaKeyboardUtil={mActiveField:null,mGlobalOptionPhoneticEnabled:false,mGlobalOptionUnijoyEnabled:false,parseBooleanValue:function(pValue){if(pValue==null){return false;}else{return pValue.toLowerCase()=="true";}},detectKeyboardMode:function(pInputElement){if(BanglaKeyboardUtil.mGlobalOptionPhoneticEnabled){makeUniPhoneticEditor(pInputElement);}
else if(BanglaKeyboardUtil.mGlobalOptionUnijoyEnabled){makeUnijoyEditor(pInputElement);}else{pInputElement.onkeypress=null;pInputElement.onkeydown=null;pInputElement.onkeyup=null;}},convertToAscii:function(FromElement,ToElement){var unicode=$(FromElement).value;$(ToElement).value=ConvertToASCII('bijoy',unicode);},applyBanglaKeyboardSupport:function(pElement){Event.observe(pElement,'focus',function(pEvent){BanglaKeyboardUtil.mActiveField=pEvent.target;BanglaKeyboardUtil.detectKeyboardMode(BanglaKeyboardUtil.mActiveField);});},getCookie:function(name){var start=document.cookie.indexOf(name+"=");var len=start+name.length+1;if((!start)&&(name!=document.cookie.substring(0,name.length))){return null;}
if(start==-1)return null;var end=document.cookie.indexOf(';',len);if(end==-1)end=document.cookie.length;return unescape(document.cookie.substring(len,end));},setCookie:function(name,value,expires,path,domain,secure){var today=new Date();today.setTime(today.getTime());if(expires){expires=expires*1000*60*60*24;}
var expires_date=new Date(today.getTime()+(expires));document.cookie=name+'='+escape(value)+
((expires)?';expires='+expires_date.toGMTString():'')+
((path)?';path='+path:'/')+
((domain)?';domain='+domain:'')+
((secure)?';secure':'');},deleteCookie:function(name,path,domain){if(getCookie(name))document.cookie=name+'='+
((path)?';path='+path:'')+
((domain)?';domain='+domain:'')+';expires=Thu, 01-Jan-1970 00:00:01 GMT';}}
var KeyboardAction={handler:{unijoy:function(pElement){KeyboardOptions.debug("unijoy");BanglaKeyboardUtil.mGlobalOptionPhoneticEnabled=false;BanglaKeyboardUtil.mGlobalOptionUnijoyEnabled=true;BanglaKeyboardUtil.detectKeyboardMode(KeyboardOptions.mActiveTextField);},phonetic:function(pElement){KeyboardOptions.debug("phonetic");BanglaKeyboardUtil.mGlobalOptionPhoneticEnabled=true;BanglaKeyboardUtil.mGlobalOptionUnijoyEnabled=false;BanglaKeyboardUtil.detectKeyboardMode(KeyboardOptions.mActiveTextField);},english:function(pElement){KeyboardOptions.debug("english");BanglaKeyboardUtil.mGlobalOptionPhoneticEnabled=false;BanglaKeyboardUtil.mGlobalOptionUnijoyEnabled=false;BanglaKeyboardUtil.detectKeyboardMode(KeyboardOptions.mActiveTextField);},hideAction:function(pElement){KeyboardOptions.keyboardOptionsPanel.hide();}}}
var KeyboardOptions={SUPPORTED_KEYBOARD_INTERFACE:[{label:"<u>p</u>honetic",accesskey:"P",type:"option",invoke:KeyboardAction.handler.phonetic},{label:"<u>u</u>nijoy",accesskey:"U",type:"option",invoke:KeyboardAction.handler.unijoy},{label:"<u>e</u>nglish",accesskey:"E",type:"option",invoke:KeyboardAction.handler.english},{label:"<u>h</u>ide",accesskey:"H",type:"link",invoke:KeyboardAction.handler.hideAction}],keyboardOptionsPanel:null,mActiveTextField:null,getKeyboardOptionsPanel:function(pEvent,obj){if(KeyboardOptions.keyboardOptionsPanel==null){KeyboardOptions.createKeyboardOptionsPanel(pEvent,obj);}
return KeyboardOptions.keyboardOptionsPanel;},mHideTimeout:null,mHideLock:false,mKeyboardOptionsPanelFocused:false,COOKIE_NAME:"___KeyboardOptions_SET",createKeyboardOptionsPanel:function(pEvent,obj){KeyboardOptions.keyboardOptionsPanel=new Element('div',{'class':'keyboard-options'});var ulElement=new Element("ul");KeyboardOptions.keyboardOptionsPanel.appendChild(ulElement);var keyboardOptionsCount=KeyboardOptions.SUPPORTED_KEYBOARD_INTERFACE.length;var existingCookieValue=BanglaKeyboardUtil.getCookie(KeyboardOptions.COOKIE_NAME);for(var i=0;i<keyboardOptionsCount;i++){var liElement=new Element("li");if(i==(keyboardOptionsCount-1)){liElement.className="last";}
var keyboardInterface=KeyboardOptions.SUPPORTED_KEYBOARD_INTERFACE[i];var elementId=i+":"+keyboardInterface.label;var selected=(elementId==existingCookieValue);if(keyboardInterface.type.toLowerCase()=="option"){var inputElement=new Element("input",{"class":"keyboard_option_button",type:"radio",name:"keyboard_options"});inputElement.id=elementId;inputElement.accessKey=keyboardInterface.accesskey;if(selected){inputElement.checked="checked";keyboardInterface.invoke(null);}
var labelElement=new Element("label",{"class":"keyboard_option_label"});labelElement.update(keyboardInterface.label);Event.observe(inputElement,"click",KeyboardOptions.defaultHandler);liElement.appendChild(inputElement);liElement.appendChild(labelElement);}else if(keyboardInterface.type.toLowerCase()=="link"){var element=new Element("a",{"class":"keyboard_option_link",href:"javascript: void(0)"});element.update(keyboardInterface.label);element.id=elementId;element.rel="link";element.accessKey=keyboardInterface.accesskey;Event.observe(element,"click",KeyboardOptions.defaultHandler)
liElement.appendChild(element);}
ulElement.appendChild(liElement);}
Event.observe(KeyboardOptions.keyboardOptionsPanel,"mouseover",function(pEvent){KeyboardOptions.mKeyboardOptionsPanelFocused=true;});Event.observe(KeyboardOptions.keyboardOptionsPanel,"mouseout",function(pEvent){KeyboardOptions.mKeyboardOptionsPanelFocused=false;});Event.observe(KeyboardOptions.keyboardOptionsPanel,"keypress",function(pEvent){KeyboardOptions.mKeyboardOptionsPanelFocused=false;});document.body.appendChild(KeyboardOptions.keyboardOptionsPanel);},defaultHandler:function(pEvent){var targetElement=pEvent.target;if(targetElement){BanglaKeyboardUtil.setCookie(KeyboardOptions.COOKIE_NAME,targetElement.id,30,'/');if("link"!=targetElement.rel){KeyboardOptions.mActiveTextField.focus();}
new Effect.Highlight(KeyboardOptions.mActiveTextField,{duration:0.2});KeyboardOptions.SUPPORTED_KEYBOARD_INTERFACE[targetElement.id.split(":")[0]].invoke(KeyboardOptions.keyboardOptionsPanel);}},findPosition:function(oElement){if(typeof(oElement.offsetParent)!='undefined'){for(var posX=0,posY=0;oElement;oElement=oElement.offsetParent){posX+=oElement.offsetLeft;posY+=oElement.offsetTop;}
return[posX,posY];}else{return[oElement.x,oElement.y];}},addKeyboardOptions:function(pEvent){KeyboardOptions.mActiveTextField=pEvent.target;var optionsPanel=KeyboardOptions.getKeyboardOptionsPanel(pEvent,KeyboardOptions.mActiveTextField);optionsPanel.style.position="absolute";var position=KeyboardOptions.findPosition(KeyboardOptions.mActiveTextField);optionsPanel.style.top=(position[1]-(KeyboardOptions.mActiveTextField.clientHeight+35)+KeyboardOptions.mActiveTextField.offsetHeight)+"px";optionsPanel.style.left=(position[0]-2)+"px";optionsPanel.style.width=KeyboardOptions.mActiveTextField.offsetWidth+"px";optionsPanel.style.zIndex="10020";if(Number(optionsPanel.style.width.replace("px",""))<300){optionsPanel.style.width=300;}
optionsPanel.hide();optionsPanel.show();optionsPanel.setOpacity(0.8);},removeKeyboardOptions:function(pEvent){if(!KeyboardOptions.mKeyboardOptionsPanelFocused){KeyboardOptions.getKeyboardOptionsPanel().hide();}},debug:function(pMsg){},apply:function(pElement){Event.observe(pElement,"focus",KeyboardOptions.addKeyboardOptions);Event.observe(pElement,"blur",KeyboardOptions.removeKeyboardOptions);BanglaKeyboardUtil.applyBanglaKeyboardSupport(pElement);},langBangla:"bangla",startBanglaSupport:function(){$$('input','textarea').each(function(pElement){if(KeyboardOptions.langBangla==pElement.lang){KeyboardOptions.apply(pElement);}});},applyAll:function(pBaseElement){var inputElements=pBaseElement.getElementsByTagName("input");for(var i=0;i<inputElements.length;i++){var inputElement=inputElements[i];if(KeyboardOptions.langBangla==inputElement.lang){KeyboardOptions.apply(inputElement);}}
var textareaElements=pBaseElement.getElementsByTagName("textarea");for(var i=0;i<textareaElements.length;i++){var textareaElement=textareaElements[i];if(KeyboardOptions.langBangla==textareaElement.lang){KeyboardOptions.apply(textareaElement);}}}}