﻿/*CViet 12AC 8/20/03: mViet10 by SPham [mviet@socal.rr.com] 
* Copyright (c) 1999, 2000-2005 MDSS. Inc All Rights Reserved.
* This code is free on noncommercial. 
* This copyright notice must remain intact within this code.
*/
var undoNonV=true;
var telexPure=false;
var folder="./" 
var jvmload=false,rep=0,rq=0,pK 
var BoDauDef="'1s|`2f|?3r|~4x|j.5|^6aeo|u0+*7=w|(8w|d9|",BoDauMV=BoDauDef,sep=" ~!@#$%^&*()_+`-={}|[]:|\";'<>?,.&\r\n/",qk=1,mvframe=null
	
var noMViet='email|emailconfirm|BoDau|',isR=false;lW='',aD='',noL="0123456789"+sep
var MVOff=false,eT=0,i,j,s,S,S2,S3,u,v,tI,tO,vt=1,mvHTML=false,key,nK,isA,kL,msg
var Fonoff=123,Ftcc=121,bBD=document.getElementById('showBD')

var opera =(navigator.userAgent.toLowerCase().indexOf("opera 8")>-1)?true:false; 
var f=document.all?true:false
var D="mv|dz|ch|c|b|d|\u0111|gh|gi|g|h|kh|k|l|m|ngh|ng|nh|n|ph|qu|q|r|s|th|tr|t|v|x".split('|')
var Ca="|nh|ch|hn|hc|",Cb="gn|ng|c|",Cc="m|n|p|t|",Cd="o|u|i|y|a";
var C=(Ca+Cb+Cc+Cd).split('|')
var A="";
var B3= new Array("'|`|?|~|.|^|+*|(|d|", 's|f|r|x|j|aeo|w|w|d|', '1|2|3|4|5|6|7|8|9|',"'1s|`2f|?3r|~4x|j.5|^6aeo|u0+*7=w|(8w|d9|");
var B31=new Array('\'|`|?|~|.|aeo^|u0)+*|w(|d|', 's|f|r|x|j|aeo|u0)w|w|d|', '1|2|3|4|5|aeo6|u0)7|w8|9|','\'1|`2|?/3|~4|.5j|aeo^6|u0)+*=87|w89(|-d|');

var cD=new Array(0,0,0,0),ds=true,mct=7,uCt=0
function sD(kL){if(!ds){if ('aeou0w)'.indexOf(kL)>-1)uCt++;else for(i=0;i<4;i++) if(B3[i].indexOf(kL)>-1)cD[i]++
for(i=0;i<4;i++)if(cD[i]>mct){if (uCt>0) BoDauMV=B31[i];else BoDauMV=B3[i];setMV(BoDauMV,'BoDau');if(bBD)DisplayTCC(); else button(i+1);ds=true;break}
}}

function sW() {lW='';rep=0}
function set(){
var ln=lW.length 
if(isA && !isR && ((rep==1 && ln>5)||(rep==0))){tO=lW;isR=true 
Wl=lW.toLowerCase()
if(Wl.charAt(ln-1)==kL && Wl.charAt(ln-2)==kL)eT=0
} else aK();
}
function initMVB(){
var oB=document.getElementsByTagName("textarea"); evB(oB,0);
oB=document.getElementsByTagName("input"); evB(oB,1);}
//event
function evB(oB,typ){
   if(typ==0)for(i=0;i<oB.length;i++) evBX(oB[i]); else for( var i=0; i<oB.length ;i++) if (noMViet.indexOf(oB[i].name) == -1 &&oB[i].type=='text') evBX(oB[i])
}    
function evBX(X){
   if(f){X.onkeydown=mvKD; X.onkeypress=mvKP;X.onclick=mvCK}
   else{X.addEventListener("keydown", mvKD, true);X.addEventListener("keypress", mvKP, true);X.addEventListener("click", mvCK, true)}}	

function mvnK(xK){
if(xK==118) {if (confirm ('Nho Bo Dau: '+BoDauMV)) setMV(BoDauMV, 'BoDau')}
else if(xK==Fonoff){ 
if(bBD)MVietOnOffButton();else { if(MVOff)MVOff=false;else {MVOff=true; isR=true;}}}
else if(xK==Ftcc && !bBD)window.open(folder+'XemBoDau.htm','mvframe','toolbar=no,location=no, scrollbars=yes, resizable=yes, width=370,height=270');
else if(xK==120){
	
if (MVOff){MVOff=false;button(1)}
else if(BoDauMV==B3[0])button(2); 
else if(BoDauMV==B3[1])button(3); 
else if(BoDauMV==B3[2])button(4); 
else if (BoDauMV==B3[3])button(5); 
else if (BoDauMV==getMV('BoDau',B3[0]+'*')) {MVOff=true; button(0)}
if(bBD)DisplayTCC(); 
}
}
function mvCK(e){ elm= f?event.srcElement:e.target;V(elm);if(ready){rq=1; isR=false}}
function KD(nK){if(nK==17)qk=0
else if (nK==8 ||(nK>36 && nK<41)) {rq=1; isR=false} //arrow
isA=(nK>64 && nK<91)||(nK>96 && nK < 123)
V(elm);
mvnK(nK)
if((nK==119) && document.all){S=document.selection.createRange();S.moveStart("word",-1);
if(lW!='')S.text=lW;isR=true;}
}

function mvKD(e){
elm= f?event.srcElement:e.target
nK=f?event.keyCode:(e&&e.which)?e.which:0;
KD(nK)
}	
function V(x){ready=x.type=='textarea'||x.type=='text';if (ready)mvHTML=false}
function mvKP(e){ 
if(MVOff)return 
else {
key=f?String.fromCharCode(event.keyCode):String.fromCharCode(e.which)
kL=key.toLowerCase()
if(BoDauMV.indexOf(kL)==-1 && noL.indexOf(kL)>-1) {sW(); isR=false; return} 
if(opera)pLZ(e); else f?pL(event):pLZ(e)
}}

function fD(t,k){
var iD=-1,nD=BoDauMV.indexOf(k); 
if(nD>-1){
var iT=0;for(i=0;i<12;i++)if(BoDauMV.indexOf(k,iT)>-1)iT=BoDauMV.indexOf('|',iT+1);else{iD=i;break}}
return iD}

function aK(){
if(!isA) isR=true;
if(!isR) lW+=key}

function VB9(t,key){

if (f) {if(rq==1){lW=t; rq=0}
}else { if (rq==1) rq++; else if(rq==2){lW=t; rq=0}
} //arrow
tO="";kL=key.toLowerCase()	
var tL=t.toLowerCase(),tLn=t.length
if(tLn>0){var n=0, kLi='aeou'.indexOf(kL)
 var iD=fD(t,kL)
 s=Parsing(tL,iD)
 s1=s.split('|');if((Ca+Cb+Cc).indexOf(kL)>-1 && iD>-1 && s1[2]!='') iD=-1//restrict 13  
 if(kLi>-1 && (iD==6||iD==7||iD==8)) { n=5; iD=-1} else if(iD>-1&&iD<12)n=3;else if(isA) n=4 //99
 
 if (n==3 || n==5){
  if (n==3 && pK==kL) rep=1;  //99
  if ( ck(s,n,iD,kL)==0){
     tO=ModifyWord(s,n,kL,iD); 
     if(tO!=null)tO=match(t,tO)   	 
     if (n!=5 || tO!=null){aK();sD(kL)} //null are
  } else if (undoNonV) set()
 }
 //
 if (n==4||(n==5 && tO==null)){t=t+key;s=Parsing(t.toLowerCase(),iD);
        if(ck(s,4,iD,kL)==0){tO=ModifyWord(s,4,'',-1);if(tO!=null){tO=match(t,tO);eT=0;aK();sD(kL)}  
        }else if (undoNonV) set()
       } 
}else aK();
pK=kL //99

return tO
}
function Parsing(W,ord){u=-1;v=-1
if(W=="gi")return "g|31,0,i||";else if(W=="gin")return "g|31,0,i|n|";else if(W=="gim")return "g|31,0,i|m|";
var L0="",L1="",L2="",xD=-1
for(i=0;i<D.length;i++)if(W.indexOf(D[i])==0){xD=i;break}
if(xD!=-1){L0=D[xD];W=W.substring(D[xD].length)}
if(W.length!=0)
if (W=='oa'&&vt==1&&ord<6&&ord>0) return L0+"|"+"30,0,o"+"|a|" 
else if(W=='uy'&&vt==1&&ord<6&&ord>0){return L0+"|"+"24,0,u"+"|y|"}	
else {
for(i=0;i<A.length;i++){for(j=0;j<A[i].length;j++){var iT=W.indexOf(A[i][j])	
if(iT==0){u=i;v=j;if(iT>0){if(L0=="")L0=W.substring(0,iT);W=W.substring(iT)}break}}
if(u!=-1)break}if(u!=-1){var base=A[u][0];
W=W.substring(base.length);
if(base=='o'&&vt==1&&W.charAt(0)=='a' && W.length>1) {u=1;W=W.substring(1);base='oa'}
L1=u+","+v+","+base}
if(W.length!=0){xD=-1
for(i=1;i<C.length;i++)if(W.indexOf(C[i])==0){xD=i;break}if(xD!=-1){L2=W.substring(0,C[xD].length);W=W.substring(L2.length)}
}}
if(v>0){ v1=v;
 var P2=Parsing(L0+base+L2+W); P2=P2.split('|'); P2[1]=P2[1].split(',')
 var nRet=P2[0];
 for(i=1; i<P2.length; i++) if(i==1) nRet += "|"+P2[1][0]+","+v1+","+P2[1][2]; else nRet+="|"+P2[i];
 return nRet
}
return L0+"|"+L1+"|"+L2+"|"+W}

var tra="2\u0103|xâ|ya|1o\u0103|xoa|"
var moc="2\u01B0a|yua|1\u01B0|xu|2\u01A1|xô|yo|4\u01B0\u01A1|x\u01B0o|yu\u01A1|xuô|yuo|"
var non="9\u0103|1â|xa|1ê|xe|1ô|xo|1uâ|xua|1yê|xye|1uyê|xuye|yuy|1uê|xue|1iê|xie|1yê|xye|7\u01B0\u01A1|8\u01B0o|9u\u01A1|1uô|xuo|"

var L="|2\u01A10|yo0|0\u01B0u|xuu|1êe|xee|2\u01A1o|xôo|xoo|2\u0103a|xâa|xaa|1o\u0103a|xoaa|1uâa|xuaa|1yêe|xyee|1uyêe|xuyee|1uêe|xuee|1iêe|xiee|1\u01B0\u01A1o|x\u01B0oo|yu\u01A1o|xuôo|xuoo|"
if (telexPure) L="|2\u01A10|yo0|0\u01B0u|xuu|1êe|xee|2\u01A1o|1ôo|xoo|2\u0103a|1âa|xaa|1o\u0103a|xoaa|1uâa|xuaa|1yêe|xyee|1uyêe|xuyee|1uêe|xuee|1iêe|xiee|1\u01B0\u01A1o|x\u01B0oo|yu\u01A1o|xuôo|xuoo|"
function xoay(M,y,val,z){
var iM=M.indexOf(y+val+'|') 
eT=1
if (iM>-1){var M1=M.charAt(iM-1)
 if(M1=='x'){z--;eT=0} 
 else if(M1=='y') {z=z-2;eT=0}
 else {var iz=parseInt(M1); if(iz<5)z+=iz;else {z+=10-iz;eT=0;}}
} else return -1
return z}

function ModifyWord(s,n,value,ord){
eT=0;if(n==4)eT=1
var nW='';s=s.split('|')
if(s[1]=="" && ord!=9) {ord=-1;eT=1}
else {var c=s[1].split(','),z=parseInt(c[0]),y=c[2],c1=parseInt(c[1])}
switch(n){	
case 5: var zz=xoay(L,y,value,z); if (zz!=-1)z=zz; else return null; break
case 3:
switch(ord){
	case 1:case 2:case 3:case 4:case 5: if(ord==c1){c[1]=0;eT=1}else c[1]=ord;break			
	case 6:	if (n!=5 && y=='â') {z++;eT=1} 	else z=xoay(non,y,"",z);break
	case 7: z=xoay(moc,y,"",z);break
	case 8: z1=xoay(tra,y,"",z);if(z1!=z&&z1!=-1)z=z1; else z=xoay(moc,y,"",z); break
	case 9: if(s[0]=='d'){s[0]='\u0111';eT=0;z=-2}else if(s[0]=='\u0111'){s[0]='d'; eT=1}break
}break	
}
if(s[2]){var s2L=s[2].length //moz
if(((s[0]=='th'&& s2L>0)||(s[0]=='h'&& s2L>1)||(s[0]!='th'&&s[0]!='h'&& s2L>0))&&(z==16||z==17)){z=15}//delay
else if( (z==19 || z==16 || z==17) && s2L>0)z=15
}
if(z>-1){c[0]=z;c[2]=A[z][0]}else if (z!=-2) eT=1  //c[2]	
return bo(cor(s,c),c)}

function cor(s,c){
if(c && c!=null){var z=parseInt(c[0])//firefox

if (s[0]!="" && s[1]!="" ){//&& s[3]==''
	if (s[0]=="ng"  && (z==26||z==31)) s[0]="ngh"
	else if (s[0]=="ngh" && (z!=26 && z!=25 && z!=31 && z!=12 && z!=11)) s[0]="ng"
	if ( s[0]=="g" ||s[0]=="gh")
	 if (s[2].length>0 || z!=31){
	    if (s[0]=="g" && (z==26||(z==31 && s[2].length>0 && s[2]!='n')) ) s[0]="gh" 
	    else if (s[0]=="gh" && z!=25 && z!=26 && !(z==31 && s[2].length>0 && s[2]!='n') )  s[0]="g";
	 }
}
var p=c[2], q=s[2];
if (q=="gn")q="ng";else if (q=="hc")q="ch";else if (q=="hn")q="nh";
if (("o\u0103ô\u01B0uâu\u01B0\u01A1".indexOf(p)>-1) && q=="nh") q="ng";
if (s[2]) s[2]=q //undefined
	 
}
return s}

function bo(s,c){var W=""
for(i=0;i<s.length;i++){
  if(s[i]!="")
    if(i!=1)W+=s[i];
    else{
       u=c[0];v=parseInt(c[1]); 
          if(W=="qu"&&A[u][v].charAt(0)=="u")W="q"
var X=A[u][0]
if((((W=="th"||W=="q"||W=="kh")&&s[2]=="")||(W=="h"&& (s[2]=="t"||s[2]=="n")))&& X=="\u01B0o")W+=A[u+1][v]
else W+=A[u][v]}}
return W
}
function match( O, N ){
var r=''; var n= O.length;
if (n==0) r=N;
else if (n==1) {if (O==O.toUpperCase()) r=N.toUpperCase(); else r=N;}
else if (n!=N.length){
if (O.charAt(0)==O.toLowerCase().charAt(0)) r=N
else {if (O.charAt(1)==O.toLowerCase().charAt(1)) r=N.toUpperCase().charAt(0)+N.substring(1)
else r=N.toUpperCase();}
}else for (var i=0; i<n; i++)
if (O.charAt(i)==O.toLowerCase().charAt(i)) r += N.charAt(i);
else r += N.toUpperCase().charAt(i);
return r;
}
function ck(s1,n1,o1,kL){var iR=0,c=null	
var nhom=['aâ\u0103','eê','oô\u01A1'], ix='aeo'.indexOf(kL)
s1=s1.split("|");if(s1[1]!='')c=s1[1].split(",")	
c4=false;
if(f)c4=s1[3].length>0;else {for(i=3;i<s1.length;i++) if(s1[i]!=''){c4=true;break}}
if(c4) {iR=33;eT=1}
else if(o1==9 && ((s1[0]!='\u0111'&& s1[0]!='d'))) iR=36 
else if(s1[1]!=''&& s1[2]) {
    if(c[2]=='o'&&s1[2]=='u') iR=37
       else if (n1==5 && s1[2].length>0)iR=35
       else { 
var p=c[2], q=s1[2],r=parseInt(c[1])
if ("|uê|uy|ua|ê|i|".indexOf('|'+p+'|')>-1 && (Ca+Cc+Cb+'u|a|').indexOf(q+'|')==-1 && q!='') iR=41
else if ("|iê|uyê|oa|a|".indexOf('|'+p+'|')>-1 && (Ca+Cb+Cc+'u|y|i|o|').indexOf(q+'|')==-1 && q!='') iR=42
else if ("â\u0103uôaioye\u01B0\u01A1".indexOf(p)>-1 && "aiouy".indexOf(q)>-1 && q!='' 
&& "|ai|ao|au|ay|âu|ây|ia|oa|oi|ua|ui|uo|uu|uy|iu|eo|eu|\u01A1i|\u01B0i|\u01B0\u01A1i|\u01B0\u01A1u|\u01B0u|ôi|uôi|".indexOf('|'+p+q+'|')==-1)iR=40               
else if ("e".indexOf(p)>-1 && "|p|t|".indexOf("|"+q+"|")>-1 && ((r!=1 && r!=5&& r!=0) ||(o1!=-1&&o1!=1 && o1!=5&& r==0))  )iR=46 
else if ("i".indexOf(p)>-1 && q=="ng")iR=61
}}
if(iR>0) eT=1
return iR}

function pL(mve){if (ready)pLB(mve);else if (mvHTML) pLX(mve);}
function pLB(mve){S=document.selection.createRange()	
key=String.fromCharCode(mve.keyCode);kL=key.toLowerCase(); //mvietRTE
if(!ready||S.text.length!=0||BoDauMV==""){sW();return}
S2=S.duplicate();S2.moveStart("character",-1);
if(S2.text.length==0){if(noL.indexOf(key)==-1)sW();aK(); return}
if(S2.text==' '){if(key=='.'||key=='?'){S2.text="";sW();return} else {sW();aK();return} }
var cH= "aeou".indexOf(kL)>-1 ||BoDauMV.indexOf(kL)>-1
if(!cH) if(sep.indexOf(kL)>-1) {isR=false; sW();return} //check for correction	
S3=S.duplicate()
if(qk==0){S3=S2;qk=1} else //hookup
S3.moveStart("word",-1)
t=S3.text
tO=VB9(t,key);
if(tO!=''&& tO!=null)S3.text=tO;
else eT=1;//add mvietRTE
if(eT==0)mve.returnValue=false
}

function glue(elm,st,t,bg){ var moz=elm.scrollTop;
elm.value = elm.value.substring(0,st)+t+elm.value.substring(bg)
var caret= elm.value.substring(0,st).length+t.length;elm.setSelectionRange(caret,caret); 
elm.scrollTop=moz;
}	

function pLZ(e){
//key = String.fromCharCode(e.charCode);kL=key.toLowerCase(); //mvietRTE w/o to get opera
var elm=e.currentTarget,strOri=key,ta=elm.value,lastInd =-1,n = ta.length,start= elm.selectionStart,end= elm.selectionEnd,t= ta.substring(0,start), dd= ta.substring(end)
if(t.charAt(start-1)==' '){if(key=='.'||key=='?'){glue(elm,start-1,key,start);sW(); e.preventDefault();return}else {sW();aK();return}}

var cH= "aeou".indexOf(kL)>-1 ||BoDauMV.indexOf(kL)>-1
if(!cH) if(sep.indexOf(kL)>-1) {isR=false; sW();return} 
if(qk==0){lastInd=start-2;qk=1}  else   //hookup
for (i=0; i<sep.length; i++)if (t.lastIndexOf(sep.charAt(i))>lastInd) lastInd = t.lastIndexOf(sep.charAt(i))
t=t.substring(lastInd+1);
	
n = t.length;start=end-n
if (t.length<1){sW();aK();return}
else {tO=VB9(t,key);if(tO!=''&& tO!=null){glue(elm,start,tO,end);if (eT==0) e.preventDefault()}
}}
function getcookie(name){var dc = document.cookie,pfix = name + '=';bn = dc.indexOf('; ' + pfix);if (bn == -1) {bn = dc.indexOf(pfix);if (bn != 0) return null} else bn += 2;var ed = dc.indexOf(';', bn);if (ed == -1)ed = dc.length;return unescape(dc.substring(bn + pfix.length, ed));}
function getMV(mvName, mvDef){var t = getcookie(mvName),tp=mvDef; if(t) tp=t; return tp;}
function setMV(mvVal, mvName){document.cookie = mvName+'='+mvVal+'; expires=Monday, 04-Apr-2010 05:00:00 GMT';}
	
var Ag;A='o259|o7855|o7857|o7859|o7861|o7863*oa|oá|oà|o7843|oã|o7841*432a|7913a|7915a|7917a|7919a|7921a*uâ|u7845|u7847|u7849|u7851|u7853*ua|úa|ùa|7911a|361a|7909a*oe|oé|oè|o7867|o7869|o7865*uyê|uy7871|uy7873|uy7875|uy7877|uy7879*uye|uyé|uyè|uy7867|uy7869|uy7865*uy|uý|u7923|u7927|u7929|u7925*uê|u7871|u7873|u7875|u7877|u7879*ue|ué|uè|u7867|u7869|u7865*iê|i7871|i7873|i7875|i7877|i7879*ie|ié|iè|i7867|i7869|i7865*yê|y7871|y7873|y7875|y7877|y7879*ye|yé|yè|y7867|y7869|y7865*432417|4327899|4327901|4327903|4327905|4327907*432o|7913o|7915o|7917o|7919o|7921o*u417|u7899|u7901|u7903|u7905|u7907*uô|u7889|u7891|u7893|u7895|u7897*uo|uó|uò|u7887|uõ|u7885*259|7855|7857|7859|7861|7863*â|7845|7847|7849|7851|7853*a|á|à|7843|ã|7841*432|7913|7915|7917|7919|7921*u|ú|ù|7911|361|7909*ê|7871|7873|7875|7877|7879*e|é|è|7867|7869|7865*oo|oó|oò|o7887|oõ|o7885*417|7899|7901|7903|7905|7907*ô|7889|7891|7893|7895|7897*o|ó|ò|7887|õ|7885*i|í|ì|7881|297|7883*y|ý|7923|7927|7929|7925*417|7899|7901|7903|7905|7907'
var A1 = new Array(7929,7928,7927,7926,7925,7924,7923,7922,7921,7920,7919,7918,7917,7916,7915,7914,7913,7912,7911,7910,7909,7908,7907,7906,7905,7904,7903,7902,7901,7900,7899,7898,7897,7896,7895,7894,7893,7892,7891,7890,7889,7888,7887,7886,7885,7884,7883,7882,7881,7880,7879,7878,7877,7876,7875,7874,7873,7872,7871,7870,7869,7868,7867,7866,7865,7864,7863,7862,7861,7860,7859,7858,7857,7856,7855,7854,7853,7852,7851,7850,7849,7848,7847,7846,7845,7844,7843,7842,7841,7840,432,431,417,416,361,360,297,296,273,272,259,258); 
for (i=0; i<A1.length; i++) {Ag = new RegExp(A1[i], "g");A=A.replace(Ag,String.fromCharCode(A1[i]))}
A=A.split('*');for(i=0;i<A.length; i++) A[i]=A[i].split('|')
	
function button(i){
if (i==0) {MVOff = true; setMV(0,'ibdcn'); msg='mViet Off'}
else {MVOff = false;
  if (i==1)msg='VIQR:'; else if (i==2)msg='Telex:'; else if (i==3)msg='VNI:'; else if (i==4)msg='ALL:'; else msg='Tự Chọn:';
  if (i!=5)BoDauMV=B3[i-1]; else BoDauMV=getMV('BoDau',B3[0]+'*');
  msg += ' '+BoDauMV;
  setMV(i,'ibdcn');}
var mv10jsName=document.getElementsByName("mv10js");
if (mv10jsName[i]) mv10jsName[i].checked=true; //else alert(msg);
}
initMVB();
var iB=parseInt(getMV('ibdcn',-1));
if (iB>-1) button(iB);
else {ds=false;button(4)}