var CookieManager={set:function(_1,_2){
var _3=new Date();
_3.setTime(_3.getTime()+(30*24*60*60*1000));
var _4="; expires="+_3.toGMTString();
document.cookie=_1+"="+escape(_2)+_4;
},get:function(_5){
var dc=document.cookie;
var _7=_5+"=";
var _8=dc.indexOf("; "+_7);
if(_8==-1){
_8=dc.indexOf(_7);
if(_8!==0){
return null;
}
}else{
_8+=2;
}
var _9=document.cookie.indexOf(";",_8);
if(_9==-1){
_9=dc.length;
}
return unescape(dc.substring(_8+_7.length,_9));
},erase:function(_a){
var _b=new Date(2000,1,1,19,30,30);
document.cookie=_a+"=; expires="+_b.toGMTString();
}};
CookieManager.setCookiePair=function(_c,_d,_e){
var _f,end;
var _11=CookieManager.get(_c);
var _12=[_d,"@",_e,"#"].join("");
function trimEntry(s){
var a=s.split(",");
return a.slice(3).join(",");
}
if(!_11){
CookieManager.set(_c,_12);
}else{
_f=_11.search(eval("/(^|#)"+_d+"@/"));
if(_f===-1){
_11+=_12;
}else{
if(_11.charAt(_f)==="#"){
_f+=1;
}
end=_11.indexOf("#",_f);
_11=_11.replace(_11.substring(_f,end+1),_12);
}
while(_11.length>600){
_11=trimEntry(_11);
}
CookieManager.set(_c,_11);
}
};
CookieManager.getCookiePair=function(_15,key){
var _17=CookieManager.get(_15);
if(!_17){
return null;
}
var _18=_17.search(eval("/(^|#)"+key+"@/"));
if(_18===-1){
return null;
}
var end=_17.indexOf("#",_18+1);
var s=_17.substring(_18,end);
return s.split("@")[1];
};
var dFirstTime=true;
function isSpecial(c){
if(c=="."||c=="/"||c=="^"||c=="~"){
return true;
}
return false;
}
function splitSpecial(s){
var m=s.match(/((([a-zA-Z]+[\.\^~\/]*)*[a-zA-Z]+)|([^a-zA-Z])+)/g);
if(!m){
return [];
}
return m;
}
function diffStr(_1e,_1f){
DiffData=function(_20,_21,pos){
this.word=_20;
this.type=_21;
this.pos=pos;
};
function diff(o,n){
var ns={};
var os={};
var i;
try{
for(i=0;i<n.length;++i){
if(!ns.hasOwnProperty(n[i])){
ns[n[i]]={rows:[],o:null};
}
ns[n[i]].rows.push(i);
}
for(i=0;i<o.length;++i){
if(!os.hasOwnProperty(o[i])){
os[o[i]]={rows:[],n:null};
}
os[o[i]].rows.push(i);
}
for(i in ns){
if(ns[i].rows.length==1&&os.hasOwnProperty(i)&&os[i].rows.length==1){
n[ns[i].rows[0]]={text:n[ns[i].rows[0]],row:os[i].rows[0]};
o[os[i].rows[0]]={text:o[os[i].rows[0]],row:ns[i].rows[0]};
}
}
for(i=0;i<n.length-1;++i){
if(n[i].text&&!(n[i+1].text)&&(!(o[n[i].row+1])||!(o[n[i].row+1].text))&&n[i+1]==o[n[i].row+1]){
n[i+1]={text:n[i+1],row:n[i].row+1};
o[n[i].row+1]={text:o[n[i].row+1],row:i+1};
}
}
for(i=n.length-1;i>0;--i){
if(n[i].text&&!(n[i-1].text)&&(!(o[n[i].row-1])||!(o[n[i].row-1].text))&&n[i-1]==o[n[i].row-1]){
n[i-1]={text:n[i-1],row:n[i].row-1};
o[n[i].row-1]={text:o[n[i].row-1],row:i-1};
}
}
return {o:o,n:n};
}
catch(ex){
logger.error("diff(javascript) "+ex);
}
}
function diffArray(o,n){
try{
return diff(extend(["x"," "],splitSpecial(o)),extend(["x"," "],splitSpecial(n)));
}
catch(ex){
logger.error("diffArray(javascript) "+ex);
}
}
try{
return diffArray(_1e,_1f);
}
catch(e){
logger.error(e);
}
}
var QuillUtil={lang:"telugu",getLangLegacy:function(){
if(window.defaultLang){
return window.defaultLang;
}
var arr;
try{
arr=window.location.pathname.match(/\/[a-z]+/g);
if(window.location.pathname.slice(-1)==="/"){
return arr[arr.length-1].substring(1);
}
return arr[arr.length-2].substring(1);
}
catch(e){
return "telugu";
}
},getLang:function(){
return QuillUtil.lang;
},setLang:function(_2b){
QuillUtil.lang=_2b;
},isValidEmailID:function(_2c){
var _2d=_2c.match(/^[0-9a-zA-Z_\.-]+@([0-9a-zA-Z_-]+\.)+[a-zA-Z0-9_-]+$/);
return (_2d!==null);
},isValidEmailIDGroup:function(_2e){
var _2f=_2e.split(/[\s\+,]+/);
var _30;
if(_2f.length<1){
return false;
}
for(var i=0;i<_2f.length;++i){
_30=_2f[i].match(/^[0-9a-zA-Z_\.-]+@([0-9a-zA-Z_-]+\.)+[a-zA-Z0-9_-]+$/);
if(_30===null){
return false;
}
}
return true;
},getRandom:function(_32){
var _33=Math.random()-0.5;
_33=_33*Math.pow(2,32);
return Math.floor(_33);
},getBrowser:function(){
var ua=window.navigator.userAgent.toLowerCase();
var _35;
var _36;
var _37;
if(ua.indexOf("opera")!=-1){
return "opera";
}else{
if(ua.indexOf("safari")!=-1){
return "safari";
}else{
if(ua.indexOf("msie 6.0")!=-1||ua.indexOf("msie 7.0")!=-1){
return "ie";
}else{
if(ua.indexOf("mozilla")!=-1){
_36=ua.indexOf("gecko/");
if(_36==-1){
return "oldmoz";
}
_37=ua.indexOf(" ",_36);
if(_37==-1){
_37=ua.length;
}
_35=parseInt(ua.substring(_36+6,_37),10);
if(_35<20051107){
return "oldmoz";
}
return "moz";
}
}
}
}
return "unknown";
},isBlank:function(_38){
if(_38.match(/^\s*$/)){
return true;
}
return false;
},isValidURL:function(_39){
if(_39.match(/^http:\/\/.*$/)){
return true;
}
return false;
},isAlpha:function(_3a){
if(_3a.match(/^[a-zA-Z]$/)){
return true;
}
return false;
},getServerAddr:function(){
if(document.domain){
return ("http://"+window.location.host);
}else{
return quillConfig.server.location;
}
},getServerPath:function(){
var _3b=window.location.pathname.match(/.*\//g);
return ["http://",window.location.host,_3b].join("");
},isValidAlpha:function(_3c){
if(_3c.match(/[a-zA-Z]+/)){
return true;
}
return false;
},getMeta:function(){
var d=document.getElementsByTagName("meta");
var ret={};
var i;
if(!d||!d.length){
logger.error("Could not read meta tags.");
}else{
for(i=0;i<d.length;i++){
if(d[i].name){
ret[d[i].name]=d[i].content;
}
}
}
return ret;
},makeURL:function(_40,req){
var _42="";
for(var i in req){
_42+=[i,"=",encodeURIComponent(req[i])].join("");
}
if(_42){
return [_40,"?",_42].join("");
}else{
return _40;
}
},setupLogging:function(){
try{
try{
if(console.log){
logger={log:console.log,debug:console.debug,info:console.info,warn:console.warn,error:console.error};
}
}
catch(e){
if(logDebug){
logger={log:log,debug:logDebug,info:logDebug,warn:logWarning,error:logError};
}
}
}
catch(e){
logger={log:function(){
},debug:function(){
},info:function(){
},warn:function(){
},error:function(){
}};
}
},setCharEncoding:function(_44){
try{
if(document.defaultCharset){
document.defaultCharset=_44;
}
if(document.charset){
document.charset=_44;
}
}
catch(e){
}
}};
getNodeText=function(){
var n=SPAN();
if(typeof (n.textContent)!=="undefined"){
return function(_46){
return _46.textContent;
};
}else{
if(typeof (n.innerText)!=="undefined"){
return function(_47){
return _47.innerText;
};
}else{
return function(_48){
return _48.text;
};
}
}
}();
setNodeText=function(){
var n=SPAN();
if(typeof (n.textContent)!=="undefined"){
return function(_4a,_4b){
_4a.textContent=_4b;
};
}else{
if(typeof (n.innerText)!=="undefined"){
return function(_4c,_4d){
_4c.innerText=_4d;
};
}else{
return function(_4e,_4f){
_4e.text=_4f;
};
}
}
}();
function getFontSize(){
if(quillConfig.fontSizes&&quillConfig.fontSizes.hasOwnProperty(QuillUtil.getLang())){
return quillConfig.fontSizes[QuillUtil.getLang()];
}else{
return ["12px","20px"];
}
}
function addStyleSheet(doc,url){
var _52=doc.createElement("LINK");
_52.rel="stylesheet";
_52.type="text/css";
_52.href=url;
var _53=doc.getElementsByTagName("head")[0];
if(_53){
_53.appendChild(_52);
}else{
logger.error("addStyleSheet: document.head not found for",doc);
}
}
function enableLogPane(){
var _54=getElement("logpane");
logger.info=function(){
var s="";
for(var i=0;i<arguments.length;i++){
s+=arguments[i]+" ";
}
_54.appendChild(DIV(s));
if(_54.scrollHeight>_54.clientHeight){
_54.scrollTop=_54.scrollHeight-_54.clientHeight;
}
};
}
function getCursorPosition(_57){
var _58;
if(typeof (_57.selectionStart)!=="undefined"){
_58=_57.selectionEnd;
}else{
if(document.selection){
_57.focus();
var sel=document.selection.createRange();
var _5a=sel.duplicate();
_5a.collapse(true);
var _5b=_5a.moveStart("character",-1000);
return -_5b;
}
}
return _58;
}
function setCursorPosition(_5c,pos){
if(typeof (_5c.selectionStart)!=="undefined"){
_5c.selectionStart=pos;
_5c.selectionEnd=pos;
}else{
if(document.selection){
_5c.focus();
var _5e=_5c.createTextRange();
_5e.collapse(true);
_5e.moveStart("character",pos);
_5e.moveEnd("character",pos);
_5e.select();
}
}
}
iframePos=function(){
return elementPosition("indicOutput");
};
var scriptRequests={};
function doScriptRequest(url,req){
var _61=MochiKit.Async;
var d=new _61.Deferred();
var id=doScriptRequest.id;
req.callback="scriptGot";
req.scid=id;
var qs=queryString(req);
if(qs){
url+="?"+qs;
}
if(!doScriptRequest.head){
doScriptRequest.head=document.getElementsByTagName("head")[0];
}
var _65=document.createElement("script");
setNodeAttribute(_65,"type","text/javascript");
setNodeAttribute(_65,"src",url);
setNodeAttribute(_65,"id","scr"+id);
doScriptRequest.id+=1;
appendChildNodes(doScriptRequest.head,_65);
scriptRequests[id]=d;
return d;
}
doScriptRequest.id=0;
doScriptRequest.head=null;
function scriptGot(obj,id){
if(scriptRequests.hasOwnProperty(id)){
try{
scriptRequests[id].callback(obj);
removeElement("scr"+id);
}
catch(e){
logger.warn(e);
}
}else{
logger.warn("id",id,"not found");
}
}
WordMapping=function(_68,_69,_6a,_6b,_6c){
this.engWord=_68;
this.tWordList=_69;
this.preferred=_6a;
this.itrans=_6b;
this.optmap=_6c;
};
var WordMap=function WordMap(_6d){
this.localCache=_6d;
this.wordMap={};
for(var i in quillConfig.supportedLanguages){
this.wordMap[i]={};
}
};
WordMap.prototype.responseFunc=function(_6f,_70,o,_72,val){
var a=[];
var i;
var itr=true;
var _77=false;
var _78;
var _79;
try{
_78=CookieManager.getCookiePair(_6f+"_prefs",_70);
_79=quillConfig.client.maxWordOptions;
if(val.twords[0].options.length<_79){
_79=val.twords[0].options.length;
}
for(i=0;i<_79;i++){
if(val.twords[0].options[i]===val.itrans){
itr=false;
}
a.push(val.twords[0].options[i]);
}
var _7a=val.twords[0].optmap;
if(!itr){
val.itrans=null;
}else{
a=a.splice(0,quillConfig.client.maxWordOptions-1);
if(val.inString.slice(1).match(/[A-Z]+/)){
a.unshift(val.itrans);
}else{
a.push(val.itrans);
}
}
if(a.length<1){
logger.error("goofup in responseFunc, len(a) < 1");
return;
}
if(_78!=null){
for(i=0;i<a.length;i++){
if(a[i]===_78){
_77=true;
break;
}
}
}
if(!_77){
if(_70.match(/[\.\/~\^]/)){
o.wordMap[_6f][_70]=new WordMapping(_70,[val.itrans],val.itrans,val.itrans,_7a);
}else{
o.wordMap[_6f][_70]=new WordMapping(_70,a,a[0],val.itrans,_7a);
}
}else{
o.wordMap[_6f][_70]=new WordMapping(_70,a,_78,val.itrans,_7a);
}
var _7b=CookieManager.getCookiePair(_6f+"_userMaps",_70);
if(_7b){
_7b=_7b.split(",");
for(i=0;i<_7b.length;i++){
if(_7b[i]===_78){
o.wordMap[_6f][_70].preferred=_78;
break;
}
}
o.wordMap[_6f][_70].userMapping=_7b;
}
_72(o.getMapping(_6f,_70));
}
catch(e){
logger.error(e);
return;
}
};
WordMap.prototype.secondaryResp=function(_7c,_7d,o,_7f,r){
try{
_7f(o.getMapping(_7c,_7d));
}
catch(e){
logger.error(e);
return;
}
};
WordMap.prototype.getMapping=function(_81,_82){
if(_81=="english"){
return (new WordMapping(_82,[_82],_82));
}
var m=this.wordMap[_81][_82];
if(m&&m.engWord){
return m;
}else{
return null;
}
};
WordMap.prototype.getWordMapping=function(_84,_85,_86){
if(_84=="english"){
_86(new WordMapping(_85,[_85],_85));
return;
}
var _87=this.wordMap[_84][_85];
if(_87&&this.wordMap[_84].hasOwnProperty(_85)){
if(_87.def){
_87.def.addCallback(partial(this.secondaryResp,_84,_85,this,_86));
}else{
_86(this.getMapping(_84,_85));
}
return;
}
req={rand:QuillUtil.getRandom(),lang:_84,inString:_85};
var d=doScriptRequest(quillConfig.server.location+quillConfig.server.processWord,req);
d.addCallbacks(partial(this.responseFunc,_84,_85,this,_86),function(e){
logger.error("getWordMapping failed");
});
this.wordMap[_84][_85]={"def":d};
};
WordMap.prototype.setPreferredMapping=function(_8a,_8b,_8c){
if(_8a=="english"){
return;
}
var wm=this.wordMap[_8a][_8b];
wm.preferred=_8c;
CookieManager.setCookiePair(_8a+"_prefs",_8b,_8c);
};
WordMap.prototype.getAllOptions=function(_8e,_8f){
if(this.wordMap[_8e][_8f]){
return this.wordMap[_8e][_8f].tWordList;
}else{
return [];
}
};
WordMap.prototype.correctionRespFunc=function(_90,_91,_92,val){
var _94;
try{
_94=this.wordMap[_90][_91].optmap;
if(_94){
for(var i in val.optmap){
if(val.optmap.hasOwnProperty(i)){
if(!_94[i]){
_94[i]=val.optmap[i];
}
}
}
}
_92(val.options,val.optmap);
}
catch(e){
logger.error(e);
}
};
WordMap.prototype.getCorrections=function(_96,_97,_98,pos,_9a,loc){
req={rand:QuillUtil.getRandom(),lang:_96,currWord:_97.toString(),userInput:_98,pos:pos};
var d=doScriptRequest(quillConfig.server.location+"/quillpad_backend2/"+loc,req);
d.addCallbacks(method(this,partial(this.correctionRespFunc,_96,_98,_9a)),function(e){
console.error("getCorrections failed");
});
};
WordMap.prototype.setUserMapping=function(_9e,_9f,_a0){
var i;
var m=this.wordMap[_9e][_9f];
for(i=0;i<m.tWordList.length;i++){
if(m.tWordList[i]===_a0){
return;
}
}
if(m.userMapping){
for(var i=0;i<m.userMapping.length;i++){
if(m.userMapping[i]===_a0){
return;
}
}
m.userMapping.unshift(_a0);
}else{
m.userMapping=[_a0];
}
CookieManager.setCookiePair(_9e+"_userMaps",_9f,m.userMapping.toString());
};
WordMap.prototype.setUserMappingList=function(_a3,_a4,_a5){
var m=this.wordMap[_a3][_a4];
m.userMapping=_a5;
CookieManager.setCookiePair(_a3+"_userMaps",_a4,_a5.toString());
};
function OptionsManager(_a7){
this.dOptions=getElement(_a7);
this.chosenOption=null;
this.numOptions=0;
this.defaultHighlightColor="#C0DAFF";
this.defaultBgColor="#FFFFFF";
this.specialBgColor="#FFEFF0";
this.specialHighlightColor="#FFBFC2";
this.sig=null;
this.mapping=new WordMapping();
this.dropDownTable=null;
}
OptionsManager.prototype.cleanup=function(){
this.clearOptions();
if(this.dropDownTable){
this.cleanupDropDown();
}
};
OptionsManager.prototype.clearOptions=function(){
var t=TABLE(null,TBODY(null,TR(null,[])));
setElementClass(t,"optionsTable");
t.style.background="white";
if(this.dOptions.childNodes.length===0){
this.dOptions.appendChild(t);
}else{
swapDOM(this.dOptions.childNodes[0],t);
}
this.numOptions=0;
};
OptionsManager.prototype.saveUserMapping=function(){
if(this.mapping.preferred&&this.mapping.engWord){
wm.setUserMapping(QuillUtil.getLang(),this.mapping.engWord,this.mapping.preferred);
wm.setPreferredMapping(QuillUtil.getLang(),this.mapping.engWord,this.mapping.preferred);
}
};
OptionsManager.prototype.setOptions=function(_a9,_aa,_ab,_ac){
if(this.sig){
disconnect(this.sig);
this.sig=null;
}
if(!_a9.engWord){
this.cleanup();
}
this.numOptions=_a9.tWordList.length;
this.mapping=_a9;
var _ad=[];
var _ae=null;
var i;
var _b0;
var d;
this.userOptionIdx=null;
if(_ab){
this.highlightColor=_ab;
}else{
this.highlightColor=this.defaultHighlightColor;
}
if(_aa){
this.bgColor=_aa;
}else{
this.bgColor=this.defaultBgColor;
}
if(_a9.userMapping){
this.numOptions+=1;
this.userOptionIdx=0;
for(i=0;i<_a9.userMapping.length;i++){
if(_a9.userMapping[i]==_a9.preferred){
_ae=this.numOptions;
this.userOptionIdx=i;
}
}
}
_b0=100/this.numOptions+"%";
if(_ac){
_ad.push(TD({"style":{"width":_b0},"class":"options"},_a9.tWordList[0],"   ",A({"href":"correct.html","target":"_blank"},"(Why am I not getting corrections?)")));
if(!_ae&&_a9.tWordList[0]==_a9.preferred){
_ae=1;
}
}else{
for(i=0;i<_a9.tWordList.length;i++){
if(!_ae&&_a9.tWordList[i]==_a9.preferred){
_ae=i+1;
}
_ad.push(TD({"style":{"width":_b0},"class":"options"},_a9.tWordList[i]));
}
}
if(_a9.userMapping){
var _b2=TD({"style":{"width":_b0},"class":"options"},"");
_b2.style.background=this.specialBgColor;
if(this.mapping.userMapping.length>1){
_b2.innerHTML=[_a9.userMapping[this.userOptionIdx],"&nbsp;","&darr;"].join("");
}else{
_b2.innerHTML=[_a9.userMapping[this.userOptionIdx],"&nbsp;"].join("");
}
_ad.push(_b2);
}
var t=TABLE(null,TBODY(null,TR(null,_ad)));
this.sig=connect(t,"onclick",this,this.onOptionClick);
setElementClass(t,"optionsTable");
t.style.background=this.bgColor;
if(this.dOptions.childNodes.length===0){
this.dOptions.appendChild(t);
}else{
swapDOM(this.dOptions.childNodes[0],t);
}
this.dOptions.style.borderColor=this.highlightColor;
this.chosenOption=null;
this.chooseOption(_ae);
};
OptionsManager.prototype.onOptionClick=function(evt){
var td=evt.target();
var s=scrapeText(td);
var i;
for(i=0;i<this.mapping.tWordList.length;i++){
if(s===this.mapping.tWordList[i]){
this.chooseOption(i+1);
tpengine.replaceWordAtCursor(this.getChosenWord());
return;
}
}
if(this.mapping.userMapping){
this.chooseOption(this.numOptions);
tpengine.replaceWordAtCursor(this.getChosenWord());
this.showDropDown(td);
}
};
OptionsManager.prototype.chooseOption=function(pos){
logger.info("chooseOption",pos);
if(pos<1||pos>this.numOptions){
return;
}
if(pos==this.chosenOption){
return;
}
if(this.dropDownTable){
this.cleanupDropDown();
}
var tr;
try{
tr=this.dOptions.childNodes[0].childNodes[0].childNodes[0];
if(this.chosenOption){
if(this.chosenOption===this.numOptions&&this.mapping.userMapping){
tr.childNodes[this.chosenOption-1].style.backgroundColor=this.specialBgColor;
}else{
tr.childNodes[this.chosenOption-1].style.backgroundColor=this.bgColor;
}
tr.childNodes[this.chosenOption-1].style.fontWeight="";
}
if(pos===this.numOptions&&this.mapping.userMapping){
tr.childNodes[pos-1].style.backgroundColor=this.specialHighlightColor;
}else{
tr.childNodes[pos-1].style.backgroundColor=this.highlightColor;
}
tr.childNodes[pos-1].style.fontWeight="bold";
this.chosenOption=pos;
}
catch(e){
logger.error("chooseOption:",e);
}
};
OptionsManager.prototype.chooseNextOption=function(){
var tr=this.dOptions.childNodes[0].childNodes[0].childNodes[0];
if(this.chosenOption==tr.childNodes.length){
this.chooseOption(1);
}else{
this.chooseOption(this.chosenOption+1);
}
};
OptionsManager.prototype.choosePrevOption=function(){
var tr=this.dOptions.childNodes[0].childNodes[0].childNodes[0];
if(this.chosenOption==1){
this.chooseOption(tr.childNodes.length);
}else{
this.chooseOption(this.chosenOption-1);
}
};
OptionsManager.prototype.getChosenWord=function(){
try{
if(this.numOptions<=0){
return null;
}else{
if(this.mapping.userMapping&&this.chosenOption===this.numOptions){
this.mapping.preferred=this.mapping.userMapping[this.userOptionIdx];
}else{
this.mapping.preferred=this.mapping.tWordList[this.chosenOption-1];
}
return this.mapping;
}
}
catch(e){
return null;
}
};
OptionsManager.prototype.showDropDown=function(src){
logger.info("table is",this.dropDownTable);
if(this.dropDownTable){
this.cleanupDropDown();
return;
}
var _bd=[];
var td;
for(var i=0;i<this.mapping.userMapping.length;i++){
if(i!==this.userOptionIdx){
td=TD(null,this.mapping.userMapping[i]);
setElementClass(td,"dropDownTD");
_bd.push(TR(null,td));
}
}
var t=TABLE(null,TBODY(null,_bd));
var pos=elementPosition(src);
var dim=elementDimensions(src);
var _c3=document.getElementsByTagName("body")[0];
pos.y+=dim.h+5;
setElementPosition(t,pos);
t.style.width=dim.w+"px";
t.style.height="auto";
t.style.position="absolute";
t.style.background=this.specialBgColor;
t.style.display="block";
this.dropDownTable=t;
this.sigDropDown=connect(t,"onclick",this,this.clickDropDown);
this.sigMouseOver=connect(t,"onmouseover",this,this.onMouseOver);
this.sigMouseOut=connect(t,"onmousfout",this,this.onMouseOut);
_c3.appendChild(t);
};
OptionsManager.prototype.onMouseOver=function(evt){
var td=evt.target();
if(td.nodeName.toLowerCase()!=="td"){
return;
}
td.style.background=this.specialHighlightColor;
};
OptionsManager.prototype.onMouseOut=function(evt){
var td=evt.target();
if(td.nodeName.toLowerCase()!=="td"){
return;
}
td.style.background=this.specialBgColor;
};
OptionsManager.prototype.cleanupDropDown=function(){
removeElement(this.dropDownTable);
this.dropDownTable=null;
disconnect(this.sigDropDown);
if(this.sigMouseOver){
disconnect(this.sigMouseOver);
disconnect(this.sigMouseOut);
}
};
OptionsManager.prototype.clickDropDown=function(evt){
var t=scrapeText(evt.target());
var tr;
var a=[t,this.mapping.userMapping[this.userOptionIdx]];
for(var i=1;i<this.mapping.userMapping.length;i++){
if(this.mapping.userMapping[i]===t){
this.mapping.preferred=t;
tr=this.dOptions.childNodes[0].childNodes[0].childNodes[0];
tr.childNodes[this.numOptions-1].innerHTML=[t,"&nbsp;","&darr;"].join("");
}else{
a.push(this.mapping.userMapping[i]);
}
}
tpengine.replaceWordAtCursor(this.mapping);
this.cleanupDropDown();
this.mapping.userMapping=a;
wm.setUserMappingList(QuillUtil.getLang(),this.mapping.engWord,a);
};
var TextEngine=function(_cd){
var ifr=getElement(_cd);
this.ifr=getElement("ifrstuff");
this.doc=ifr.contentDocument?ifr.contentDocument:ifr.contentWindow.document;
this.win=ifr.contentWindow;
this.doc.designMode="on";
if(this.doc.body){
this.displayArea=this.doc.body;
}else{
this.doc.write("<head></head><body></body>");
this.doc.close();
this.displayArea=this.doc.body;
}
addStyleSheet(this.doc,QuillUtil.getServerAddr()+quillConfig.server.quillPath+"/ifr.css");
this.setFontSizes();
ifrDoc=this.doc;
this.tooltip=new ToolTip("wordTip","wordTD","optTD","editorInput",this);
this.menu=new OptMenu();
connect(this.doc,"onkeypress",this,this.onKeyPress);
connect(this.doc,"onkeydown",this,this.onKeyDown);
connect(this.doc,"onkeyup",this,this.onKeyUp);
connect(this.doc,"onclick",this,this.showOptions);
if(QuillUtil.getBrowser()==="moz"){
connect(this.doc,"onblur",this,this.onBlur);
this.xlitText=this.xlitTextFF;
}else{
connect(this.win,"onblur",this,this.onBlur);
connect(this.displayArea,"onpaste",this,this.onPaste);
connect(this.displayArea,"oncut",this,this.onCut);
}
this.callback=method(this,this.callbackFunc);
};
TextEngine.prototype.keyboard=function(_cf,_d0,_d1,_d2){
this.ifr.style.display="none";
this.km.show(_cf,_d0,_d1,_d2);
this.km.focus();
};
TextEngine.prototype.keyboardDone=function(){
this.ifr.style.display="block";
this.setFocus();
};
TextEngine.prototype.setFontSizes=function(){
var _d3=getFontSize();
this.doc.body.style.fontSize=_d3[0];
this.doc.body.style.lineHeight=_d3[1];
var _d4=getElement("indicDiv");
if(_d4){
_d4.style.fontSize=_d3[0];
_d4.style.lineHeight=_d3[1];
}
var _d5=getElement("cOptions");
if(_d5){
_d5.style.fontSize=_d3[0];
}
var _d6=getElement("langUnicode");
if(_d6){
_d6.style.fontSize=_d3[0];
}
var ki=getElement("keyInput");
if(ki){
}
};
TextEngine.prototype.prefill=function(_d8){
var sel=this.getSelection();
var _da=QuillUtil.getLang();
var _db=this;
QuillUtil.setLang("english");
this.xlitText(_d8,function(_dc){
if(sel.atAnchorStart){
if(sel.anchorNode){
_db.setCursorBeforeWidget(sel.anchorNode);
}
_db.doc.selection.createRange().pasteHTML(_dc);
}else{
if(sel.anchorNode){
_db.setCursorAfterWidget(sel.anchorNode);
}
_db.doc.selection.createRange().pasteHTML(_dc);
}
QuillUtil.setLang(_da);
});
};
TextEngine.prototype.onPaste=function(evt){
var _de=window.clipboardData.getData("Text");
var sel=this.getSelection();
var _e0=this;
this.xlitText(_de,function(_e1){
if(sel.atAnchorStart){
if(sel.anchorNode){
_e0.setCursorBeforeWidget(sel.anchorNode);
}
_e0.doc.selection.createRange().pasteHTML(_e1);
}else{
if(sel.anchorNode){
_e0.setCursorAfterWidget(sel.anchorNode);
}
_e0.doc.selection.createRange().pasteHTML(_e1);
}
});
evt.stop();
};
TextEngine.prototype.setText=function(_e2){
var _e3=this;
this.xlitText(_e2,function(_e4){
logger.info("got callback",_e4);
_e3.displayArea.innerHTML=_e4;
});
};
TextEngine.prototype.xlitTextFF=function(_e5,_e6){
var _e7=splitSpecial(_e5);
var _e8=_e7.length;
function process(_e9){
var s="<span>";
var i,_ec;
for(i=0;i<_e9.length;i++){
switch(_e9.charAt(i)){
case " ":
_ec=0;
while(i<_e9.length&&_e9.charAt(i)===" "){
_ec+=1;
s+="&nbsp;";
i++;
}
if(_ec>1){
s=[s.slice(0,-6)," "].join("");
}
i--;
break;
case "\n":
s=[s,"</span><br><span>"].join("");
break;
default:
s=[s,_e9.charAt(i)].join("");
}
}
return s+"</span>";
}
function callbk(idx,m){
_e8-=1;
_e7[idx]=["<span word=\"",m.engWord,"\" lang=\"",QuillUtil.getLang(),"\">",m.preferred,"</span>"].join("");
if(_e8<=0){
_e6(_e7.join("")+"<br _moz_editor_bogus_node=\"TRUE\" _moz_dirty=\"\"/>");
}
}
for(var i=0;i<_e7.length;i++){
if(_e7[i].match(/[a-zA-Z]/)){
wm.getWordMapping(QuillUtil.getLang(),_e7[i],partial(callbk,i));
}else{
_e7[i]=process(_e7[i]);
_e8-=1;
if(_e8<=0){
_e6(_e7.join(""));
}
}
}
};
TextEngine.prototype.xlitText=function(_f0,_f1){
var _f2=splitSpecial(_f0);
var _f3=_f2.length;
function process(_f4){
var s="";
var i,_f7;
var _f8=false;
for(i=0;i<_f4.length;i++){
switch(_f4.charAt(i)){
case " ":
if(!_f8){
s+="<span>";
_f8=true;
}
_f7=0;
while(i<_f4.length&&_f4.charAt(i)===" "){
_f7+=1;
s+="&nbsp;";
i++;
}
if(_f7>1){
s=[s.slice(0,-6)," "].join("");
}
i--;
break;
case "\n":
if(_f8){
s=[s,"</span><br>"].join("");
_f8=false;
}else{
s=[s,"<br>"].join("");
}
break;
default:
if(!_f8){
s+="<span>";
_f8=true;
}
s=[s,_f4.charAt(i)].join("");
}
}
if(_f8){
s+="</span>";
}
return s;
}
function callbk(idx,m){
_f3-=1;
_f2[idx]=["<span word=\"",m.engWord,"\" lang=\"",QuillUtil.getLang(),"\">",m.preferred,"</span>"].join("");
if(_f3<=0){
_f1(_f2.join(""));
}
}
for(var i=0;i<_f2.length;i++){
if(_f2[i].match(/[a-zA-Z]/)){
wm.getWordMapping(QuillUtil.getLang(),_f2[i],partial(callbk,i));
}else{
_f2[i]=process(_f2[i]);
_f3-=1;
if(_f3<=0){
_f1(_f2.join(""));
}
}
}
};
TextEngine.prototype.onCut=function(evt){
window.clipboardData.setData("Text",this.getTextSelection());
this.deleteSelection(this.getSelection(),evt);
};
TextEngine.prototype.onBlur=function(evt){
};
TextEngine.prototype.hideMenu=function(){
if(this.menu.enabled()){
this.menu.cleanup();
}
};
TextEngine.prototype.getSelection=function(){
var _fe;
var _ff;
var _100;
var _101;
var that=this;
var sel;
var ret={};
if(this.win.getSelection){
sel=this.win.getSelection();
if(sel.anchorNode.nodeName==="BODY"){
if(sel.anchorOffset===0){
ret.anchorNode=this.displayArea.childNodes[0];
}else{
ret.anchorNode=this.displayArea.childNodes[sel.anchorOffset-1];
}
ret.atAnchorEnd=true;
}else{
if(sel.anchorNode.parentNode&&sel.anchorNode.parentNode.nodeName!=="BODY"){
ret.anchorNode=sel.anchorNode.parentNode;
if(sel.anchorOffset===sel.anchorNode.nodeValue.length){
ret.atAnchorEnd=true;
}
}else{
ret.anchorNode=sel.anchorNode;
if(sel.anchorOffset===sel.anchorNode.nodeValue.length){
ret.atAnchorEnd=true;
}
}
if(sel.anchorOffset===0){
ret.atAnchorStart=true;
}
}
ret.anchorOffset=sel.anchorOffset;
ret.focusNode=sel.focusNode;
ret.focusOffset=sel.focusOffset;
ret.isCollapsed=sel.isCollapsed;
return ret;
}else{
_fe=this.doc.selection.createRange().duplicate();
_fe.collapse(true);
_ff=this.doc.selection.createRange().duplicate();
_ff.collapse(false);
_fe.pasteHTML("<span id=\"fuquaSpan1\"></span>");
_100=this.doc.getElementById("fuquaSpan1");
ret.anchorNode=_100.parentNode;
try{
if(_100.previousSibling&&_100.previousSibling.nodeName==="#text"){
ret.anchorOffset=_100.previousSibling.nodeValue.length;
}
}
catch(e){
if(e.message==="Invalid Argument."){
ret.anchorOffset=0;
}
}
if(!_100.nextSibling||_100.parentNode.nodeName==="BODY"){
ret.atAnchorEnd=true;
}
if(!_100.previousSibling){
ret.atAnchorStart=true;
}
if(_fe.compareEndPoints("StartToStart",_ff)===0){
ret.isCollapsed=true;
withDocument(this.doc,function(){
removeElement(_100);
});
return ret;
}else{
ret.isCollapsed=false;
}
_ff.pasteHTML("<span id=\"fuquaSpan2\"></span>");
_101=this.doc.getElementById("fuquaSpan2");
ret.focusNode=_101.parentNode;
if(_101.previousSibling&&_101.previousSibling.nodeName==="#text"){
ret.focusOffset=_101.previousSibling.nodeValue.length;
}
if(!_101.previousSibling||_101.parentNode.nodeName==="BODY"){
ret.atFocusStart=true;
}
withDocument(this.doc,function(){
removeElement(_100);
});
withDocument(this.doc,function(){
removeElement(_101);
});
return ret;
}
};
TextEngine.prototype.addNewline=function(node){
var n=withDocument(this.doc,BR);
this.add(n,node);
return n;
};
TextEngine.prototype.setCursor=function(_107,node){
var _109;
var sel;
if(this.win.getSelection){
_109=this.doc.createRange();
_109.selectNode(node);
_109.collapse(_107);
sel=this.win.getSelection();
sel.removeAllRanges();
sel.addRange(_109);
}else{
if(this.doc.selection){
_109=this.displayArea.createTextRange();
_109.moveToElementText(node);
_109.collapse(_107);
_109.select();
}
}
};
TextEngine.prototype.setCursorBeforeWidget=partial(TextEngine.prototype.setCursor,true);
TextEngine.prototype.setCursorAfterWidget=partial(TextEngine.prototype.setCursor,false);
TextEngine.prototype.getTextSelection=function(){
if(this.win.getSelection){
return this.win.getSelection().toString();
}else{
return this.doc.selection.createRange().text;
}
};
TextEngine.prototype.getWidgetAtCursor=function(){
var n;
var sel;
var _10d;
var _10e;
var elem;
if(this.win.getSelection){
sel=this.win.getSelection();
n=sel.anchorNode;
if(n.nodeName.toUpperCase()==="BODY"){
_10e=sel.anchorOffset;
if(_10e>0){
_10e-=1;
}
n=this.displayArea.childNodes[_10e];
}else{
if(n.parentNode&&n.parentNode.nodeName.toUpperCase()==="BODY"){
return n;
}
return n.parentNode;
}
return n;
}else{
_10d=this.doc.selection.createRange().duplicate();
_10d.collapse(true);
_10d.pasteHTML("<span id=\"fuquaSpan\"></span>");
elem=this.doc.getElementById("fuquaSpan");
if(elem.parentNode&&elem.parentNode.nodeName!=="BODY"){
n=elem.parentNode;
}else{
n=elem.previousSibling;
}
withDocument(this.doc,function(){
removeElement(elem);
});
return n;
}
return null;
};
TextEngine.prototype.showOptions=function(evt){
var tgt=evt.target();
var _112;
var mgr;
if(this.menu.enabled()){
this.menu.cleanup();
}
this.tooltip.hide();
if(!tgt||tgt===this.displayArea){
return;
}
_112=this.getWidgetContent(tgt);
if(_112[0]!=="word"){
return;
}
if(evt.modifier().ctrl||evt.modifier().alt){
evt.stop();
this.tooltip.editWord(tgt,_112[1]);
}else{
this.menu.update(tgt,wm.getMapping(_112[2],_112[1]));
}
};
TextEngine.prototype.getWidgetContent=function(node){
var c=getNodeAttribute(node,"word");
if(c){
return ["word",c,getNodeAttribute(node,"lang")];
}
return ["",""];
};
TextEngine.prototype.addText=function(_116,_117,text,lang){
var sp=withDocument(this.doc,function(){
var s=SPAN(text);
setElementClass(s,"spanDispArea");
setNodeAttribute(s,"word",_117);
setNodeAttribute(s,"length",_117.length);
setNodeAttribute(s,"lang",lang);
return s;
});
var font=quillConfig.fonts[lang];
if(font){
sp.style.fontFamily=font+",'Arial Unicode MS',Arial, Verdana, Helvetica,sans-serif";
}else{
sp.style.fontFamily="Arial, Verdana, Helvetica,sans-serif";
}
var _11d=getFontSize();
sp.style.fontSize=_11d[0];
this.add(sp,_116);
return sp;
};
TextEngine.prototype.nuke=function(sel){
function removeRecurse(node,stop){
if(!node){
return;
}
if(node==stop){
withDocument(this.doc,partial(removeElement,node));
}else{
removeRecurse(node.nextSibling,stop);
withDocument(this.doc,partial(removeElement,node));
}
}
removeRecurse(sel.anchorNode,sel.focusNode);
};
TextEngine.prototype.replaceText=function(n,_122,text){
if(n){
setNodeText(n,text);
}else{
logger.warn("Tried to replace non-existent widget at",n,_122,text);
}
};
TextEngine.prototype.add=function(node,_125){
this.displayArea.insertBefore(node,_125);
};
TextEngine.prototype.addTextNode=function(text,_127){
var n=this.doc.createTextNode(text);
this.add(n,_127);
return n;
};
TextEngine.prototype.addSpan=function(text,_12a){
var _12b=getFontSize();
var t=withDocument(this.doc,partial(SPAN,text));
t.style.fontSize=_12b[0];
if(text===" "){
t.innerHTML="&nbsp;";
}
this.add(t,_12a);
return t;
};
TextEngine.prototype.remove=function(node){
if(!node){
logger.warn("Tried to remove non-existent widget",node);
}else{
removeElement(node);
}
};
TextEngine.prototype.getText=function(){
var i;
var txt="";
var ret="";
for(i=0;i<this.displayArea.childNodes.length;i++){
txt=this.displayArea.childNodes[i].innerText;
if(txt){
ret+=txt;
}else{
txt=this.displayArea.childNodes[i].textContent;
if(txt){
ret+=txt;
}else{
if(this.displayArea.childNodes[i].nodeName==="BR"){
ret+="\n";
}else{
txt=getNodeText(this.displayArea.childNodes[i]);
txt=txt?txt:this.displayArea.childNodes[i].data;
ret+=txt;
}
}
}
}
return ret;
};
TextEngine.prototype.getHTML=function(){
return this.displayArea.innerHTML;
};
TextEngine.prototype.getEnglishText=function(){
var i;
var word;
var ret="";
for(i=0;i<this.displayArea.childNodes.length;i++){
word=getNodeAttribute(this.displayArea.childNodes[i],"word");
if(word){
ret+=word;
}else{
if(this.displayArea.childNodes[i].nodeName==="BR"){
ret+="\n";
}else{
ret+=getNodeText(this.displayArea.childNodes[i]);
}
}
}
return ret;
};
TextEngine.prototype.doneEditing=function(node,_135,_136){
this.win.focus();
if(_135){
this.remove(node);
}else{
if(_136){
this.setCursorBeforeWidget(node);
}else{
this.setCursorAfterWidget(node);
}
}
};
TextEngine.prototype.forceFocus=function(){
this.win.focus();
};
TextEngine.prototype.onKeyUp=function(evt){
var s=evt.key().string;
var node;
var c;
var mgr;
var sel;
switch(s){
case "KEY_ARROW_UP":
case "KEY_ARROW_DOWN":
case "KEY_PAGE_UP":
case "KEY_PAGE_DOWN":
case "KEY_HOME":
case "KEY_END":
this.hideMenu();
node=this.getWidgetAtCursor();
c=this.getWidgetContent(node);
if(c[0]==="word"){
mgr=new OptMgr(wm.getMapping(c[2],c[1]),getNodeText(node));
this.tooltip.update(node,c[1]);
this.tooltip.updateOpts(mgr.chosenOption,mgr.numOptions);
}else{
this.tooltip.hide();
}
break;
}
};
TextEngine.prototype.onKeyDown=function(evt){
var s=evt.key().string;
var node;
var n;
var c;
var word;
var _143;
var mgr,opt;
var sel;
var _147;
switch(s){
case "KEY_ENTER":
this.tooltip.hide();
if(QuillUtil.getBrowser()==="moz"){
return;
}
node=this.getWidgetAtCursor();
if(node){
n=this.addNewline(node.nextSibling);
}else{
n=this.addNewline(null);
}
var t=withDocument(this.doc,partial(SPAN,""));
t.innerHTML="&nbsp;";
this.add(t,n.nextSibling);
this.setCursorAfterWidget(t);
t.parentNode.removeChild(t);
this.setCursorAfterWidget(n);
evt.stop();
break;
case "KEY_BACKSPACE":
sel=this.getSelection();
node=sel.anchorNode;
if(!sel.isCollapsed){
this.deleteSelection(sel,evt);
return;
}
c=this.getWidgetContent(node);
if(sel.atAnchorStart){
if(QuillUtil.getBrowser()==="moz"){
this.setCursorBeforeWidget(sel.anchorNode);
}else{
if(c[0]==="word"){
this.setCursorBeforeWidget(sel.anchorNode);
}
}
return;
}
word=c[1].slice(0,-1);
if(c[0]==="word"){
evt.stop();
if(word<=0){
_143=node.prevSibling;
this.remove(node);
this.tooltip.hide();
if(_143){
this.setCursorAfterWidget(_143);
}
}else{
setNodeAttribute(node,"word",word);
this.tooltip.update(node,word);
wm.getWordMapping(c[2],word,partial(this.callback,node));
this.setCursorAfterWidget(node);
}
}
break;
case "KEY_ESCAPE":
evt.stop();
break;
case "KEY_ARROW_RIGHT":
sel=this.getSelection();
if(sel.atAnchorEnd&&sel.anchorNode.nextSibling){
c=this.getWidgetContent(sel.anchorNode.nextSibling);
if(c[0]==="word"){
this.tooltip.editWord(sel.anchorNode.nextSibling,c[1]);
this.tooltip.setCursorAtStart();
evt.stop();
}
}else{
if(sel.atAnchorStart){
c=this.getWidgetContent(sel.anchorNode);
if(c[0]==="word"){
this.tooltip.editWord(sel.anchorNode,c[1]);
this.tooltip.setCursorAtStart();
evt.stop();
}
}
}
break;
case "KEY_ARROW_LEFT":
sel=this.getSelection();
if(sel.atAnchorEnd){
c=this.getWidgetContent(sel.anchorNode);
if(c[0]==="word"){
this.tooltip.editWord(sel.anchorNode,c[1]);
evt.stop();
}
}else{
if(sel.atAnchorStart&&sel.anchorNode.previousSibling){
c=this.getWidgetContent(sel.anchorNode.previousSibling);
if(c[0]==="word"){
this.tooltip.editWord(sel.anchorNode.previousSibling,c[1]);
evt.stop();
}
}
}
break;
case "KEY_DELETE":
sel=this.getSelection();
if(sel.isCollapsed){
this.deleteChar(sel,evt);
}else{
this.deleteSelection(sel,evt);
}
break;
case "KEY_TAB":
this.hideMenu();
node=this.getWidgetAtCursor();
c=this.getWidgetContent(node);
if(!c||typeof (c[2])==="undefined"){
break;
}
_147=wm.getMapping(c[2],c[1]);
if(!_147){
break;
}
if(c[0]==="word"){
evt.stop();
mgr=new OptMgr(_147);
if(evt.modifier().shift){
opt=mgr.choosePrevious();
}else{
opt=mgr.chooseNext();
}
this.tooltip.updateOpts(opt[0],mgr.numOptions);
setNodeText(node,opt[1]);
this.setCursorAfterWidget(node);
}
break;
case "KEY_L":
if(evt.modifier().ctrl&&evt.modifier().shift){
if(QuillUtil.getLang()==="english"){
QuillUtil.setLang(QuillUtil.getLangLegacy());
getElement("langind").checked=true;
}else{
QuillUtil.setLang("english");
getElement("langeng").checked=true;
}
evt.stop();
}
break;
}
};
TextEngine.prototype.deleteSelection=function(sel,evt){
if(sel.anchorNode.previousSibling){
this.setCursorAfterWidget(sel.anchorNode.previousSibling);
}
if(sel.focusNode.nextSibling){
this.setCursorBeforeWidget(sel.focusNode.nextSibling);
}
this.nuke(sel);
this.tooltip.hide();
evt.stop();
};
TextEngine.prototype.deleteChar=function(sel,evt){
var c;
if(sel.anchorNode.nodeName==="BODY"){
return;
}
var that=this;
function modWord(node,text,lang,_152){
var _153=that;
if(text.length<=1){
that.remove(node);
that.tooltip.hide();
}else{
text=text.substring(1);
setNodeAttribute(node,"word",text);
that.tooltip.update(node,text);
wm.getWordMapping(lang,text,function(m){
_153.callback(node,m);
if(_152){
_153.setCursorBeforeWidget(node);
}
});
}
}
if(sel.atAnchorEnd){
c=this.getWidgetContent(sel.anchorNode.nextSibling);
logger.info("yo1",c);
if(c[0]==="word"){
evt.stop();
modWord(sel.anchorNode.nextSibling,c[1],c[2]);
}
}else{
if(sel.atAnchorStart){
c=this.getWidgetContent(sel.anchorNode);
if(c[0]==="word"){
evt.stop();
modWord(sel.anchorNode,c[1],c[2],true);
}
}else{
c=this.getWidgetContent(sel.anchorNode);
logger.info("yo2",c);
if(c[0]==="word"){
evt.stop();
}
}
}
};
TextEngine.prototype.callbackFunc=function(node,m){
var mgr=new OptMgr(m);
if(getNodeAttribute(node,"word")===m.engWord){
try{
this.replaceText(node,m.engWord,m.preferred);
}
catch(e){
logger.warn("Exception in callbackFunc",m,node,e);
}
}
if(this.tooltip.getWord()===m.engWord){
this.tooltip.updateOpts(mgr.chosenOption,mgr.numOptions);
}
};
TextEngine.prototype.onKeyPress=function(evt){
var s=evt.key().string;
var node,_15b;
var c;
var word;
var t;
var mod=evt.modifier();
var sel=this.getSelection();
if(mod.alt||mod.ctrl){
return;
}
this.hideMenu();
if(s.match(/[a-zA-Z]/)){
node=this.getWidgetAtCursor();
if(node){
c=this.getWidgetContent(node);
if(c[0]==="word"){
word=c[1]+s;
setNodeAttribute(node,"word",word);
this.tooltip.update(node,word);
wm.getWordMapping(c[2],word,partial(this.callback,node));
this.setCursorAfterWidget(node);
}else{
if(QuillUtil.getBrowser()==="moz"&&node.nodeName==="BR"&&!node.nextSibling){
_15b=this.addText(node,s," ",QuillUtil.getLang());
_15b.innerHTML="&nbsp;";
}else{
_15b=this.addText(node.nextSibling,s," ",QuillUtil.getLang());
if(QuillUtil.getBrowser()==="moz"){
_15b.innerHTML="&nbsp;";
}
}
this.setCursorAfterWidget(_15b);
this.tooltip.update(_15b,s);
wm.getWordMapping(QuillUtil.getLang(),s,partial(this.callback,_15b));
}
}else{
_15b=this.addText(null,s," ",QuillUtil.getLang());
this.setCursorAfterWidget(_15b);
this.tooltip.update(_15b,s);
wm.getWordMapping(QuillUtil.getLang(),s,partial(this.callback,_15b));
}
evt.stop();
}else{
if(s.length!=0){
this.tooltip.hide();
node=this.getWidgetAtCursor();
if(!node){
t=this.addSpan(s,null);
evt.stop();
this.setCursorAfterWidget(t);
return;
}
c=this.getWidgetContent(node);
if(c[0]==="word"){
if(sel.atAnchorStart){
if(sel.anchorNode.previousSibling){
c=this.getWidgetContent(sel.anchorNode.previousSibling);
if(c[0]==="word"){
t=this.addSpan(s,sel.anchorNode);
this.setCursorAfterWidget(t);
evt.stop();
}else{
if(QuillUtil.getBrowser()==="moz"){
this.setCursorAfterWidget(sel.anchorNode.previousSibling);
}else{
t=this.addSpan(s,sel.anchorNode);
this.setCursorAfterWidget(t);
evt.stop();
}
}
}else{
if(QuillUtil.getBrowser()==="moz"){
this.setCursorBeforeWidget(sel.anchorNode);
}else{
t=this.addSpan(s,sel.anchorNode);
this.setCursorAfterWidget(t);
evt.stop();
}
}
return;
}
if(QuillUtil.getBrowser()==="moz"){
this.setCursorAfterWidget(node);
}else{
if(QuillUtil.getBrowser()==="ie"){
t=this.addSpan(s,node.nextSibling);
this.setCursorAfterWidget(t);
evt.stop();
}
}
}
}
}
};
TextEngine.prototype.clearTextArea=function(){
var node=this.displayArea.firstChild;
while(node){
var _162=node.nextSibling;
removeElement(node);
node=_162;
}
this.displayArea.focus();
};
TextEngine.prototype.setFocus=function(){
this.win.focus();
this.displayArea.focus();
};
TextEngine.prototype.getSaveData=function(){
var i;
return serializeJSON(map(function(node){
var word=getNodeAttribute(node,"word");
if(word){
return ["word",word,getNodeText(node),getNodeAttribute(node,"lang")];
}else{
if(node.nodeName==="BR"){
return ["newline"];
}else{
if(node.nodeName==="#text"){
return (node.textContent?["text",node.textContent]:["text",node.data]);
}else{
if(node.nodeName==="SPAN"){
return ["text",getNodeText(node)];
}
}
}
}
},this.displayArea.childNodes));
};
TextEngine.prototype.load=function(data){
var arr;
var i;
var s;
try{
arr=eval("("+data+")");
}
catch(e){
logger.warn("Got exception in load",e);
return;
}
function process(text){
var s="";
var i,_16d;
for(i=0;i<text.length;i++){
switch(text.charAt(i)){
case " ":
_16d=0;
while(i<text.length&&text.charAt(i)===" "){
_16d+=1;
s+="&nbsp;";
i++;
}
if(_16d>1){
s=[s.slice(0,-6)," "].join("");
}
i--;
break;
default:
s=[s,text.charAt(i)].join("");
}
}
return s;
}
for(i=0;i<arr.length;i++){
switch(arr[i][0]){
case "word":
wm.getWordMapping(arr[i][3],arr[i][1],function(){
});
this.addText(null,arr[i][1],arr[i][2],arr[i][3]);
break;
case "text":
s=withDocument(this.doc,SPAN);
setNodeText(s,arr[i][1]);
appendChildNodes(this.displayArea,s);
break;
case "newline":
this.addNewline(null);
break;
default:
logger.warn("Got unknown data in load",arr[i]);
}
}
};
function getLanguageText(){
return t.getText();
}
function setFocus(){
t.setFocus();
}
function clearText(){
t.clearTextArea();
}
function getEnglishText(){
return t.getEnglishText();
}
function loadText(text){
t.prefill(text);
}
function save(){
return t.getSaveData();
}
function load(data){
t.load(data);
}
function setLanguage(lang){
QuillUtil.setLang(lang);
}
fillLangSelection=function(){
var _171=getElement("selectLang");
var lang=QuillUtil.getLang();
var a=[];
a.push([lang,quillConfig.supportedLanguages[lang][0]]);
for(var l in quillConfig.supportedLanguages){
if(l!=lang){
a.push([l,quillConfig.supportedLanguages[l][0]]);
}
}
for(var i=0;i<a.length;i++){
var l=a[i][0];
if(QuillUtil.getBrowser()=="ie"){
var o=OPTION();
o.text=a[i][1];
o.value=l;
_171.add(o);
}else{
var o=OPTION({value:l},a[i][1]);
o.style.fontSize="12px";
_171.appendChild(o);
}
}
connect(_171,"onchange",function(){
QuillUtil.setLang(_171.value);
});
};
function setCloseHandler(func){
setCloseHandler.func=func;
}
function initQuill(){
QuillUtil.setupLogging();
QuillUtil.setCharEncoding("UTF-8");
if(quillConfig.server.domain){
}
fillLangSelection();
wm=new WordMap();
t=new TextEngine("indicOutput");
}
var OptMgr=function(_178,_179,_17a){
var i;
this.mapping=_178;
this.options=[];
var pref;
try{
pref=_179?_179:_178.preferred;
this.lang=_17a?_17a:QuillUtil.getLang();
extend(this.options,_178.tWordList);
extend(this.options,_178.userMapping);
}
catch(e){
pref=null;
this.lang=_17a?_17a:QuillUtil.getLang();
}
this.numOptions=this.options.length;
for(i=0;i<this.options.length;i++){
if(this.options[i]===pref){
this.chosenOption=i+1;
break;
}
}
};
OptMgr.prototype.chooseOptionWord=function(word){
var i;
for(i=0;i<this.options.length;i++){
if(this.options[i]===word){
this.chooseOption(i+1);
break;
}
}
};
OptMgr.prototype.chooseOption=function(idx){
if(idx<1||idx>this.numOptions){
return;
}
if(idx===this.chosenOption){
return [idx,this.options[idx-1]];
}
this.chosenOption=idx;
this.mapping.preferred=this.options[idx-1];
wm.setPreferredMapping(this.lang,this.mapping.engWord,this.options[idx-1]);
return [idx,this.options[idx-1]];
};
OptMgr.prototype.chooseNext=function(){
if(this.chosenOption>=this.numOptions){
return this.chooseOption(1);
}else{
return this.chooseOption(this.chosenOption+1);
}
};
OptMgr.prototype.choosePrevious=function(){
if(this.chosenOption<=1){
return this.chooseOption(this.numOptions);
}else{
return this.chooseOption(this.chosenOption-1);
}
};
var OptMenu=function(){
this.visible=false;
this.table=null;
this.fontSize=getFontSize()[0];
};
OptMenu.prototype={enabled:function(){
return this.visible;
},update:function(node,_181){
this.node=node;
this.mgr=new OptMgr(_181,null,getNodeAttribute(node,"lang"));
var that=this;
function makeTR(opt){
var td;
if(opt===that.mgr.mapping.preferred){
td=TD({style:{background:"#C0DAFF"}},opt);
}else{
td=TD({style:{background:"#FFF"}},opt);
td.onmouseover=function(){
td.style.background="#C0DAFF";
};
td.onmouseout=function(){
td.style.background="#FFF";
};
}
setElementClass(td,"linkCursor");
return TR(null,td);
}
function makeTRUserMapped(opt){
var td;
if(opt===that.mgr.mapping.preferred){
td=TD({style:{background:"#FFBFC2"}},opt);
}else{
td=TD({style:{background:"#FFFEF0"}},opt);
td.onmouseover=function(){
td.style.background="#FFBFC2";
};
td.onmouseout=function(){
td.style.background="#FFFEF0";
};
}
setElementClass(td,"linkCursor");
return TR(null,td);
}
if(!this.mgr.mapping){
return;
}
var trs=map(makeTR,this.mgr.mapping.tWordList);
if(this.mgr.mapping.userMapping){
extend(trs,map(makeTRUserMapped,this.mgr.mapping.userMapping));
}
this.table=TABLE({cellspacing:"1",cellpadding:"10","class":"optsTable"},TBODY(null,trs));
this.table.style.fontSize=this.fontSize;
this.sig=connect(this.table,"onclick",this,this.onTblClick);
var pos=withDocument(ifrDoc,partial(elementPosition,node));
var _189=iframePos();
pos.x+=_189.x;
pos.y+=_189.y+22-ifrDoc.body.scrollTop;
this.table.style.position="absolute";
setElementPosition(this.table,pos);
document.body.appendChild(this.table);
this.visible=true;
},onTblClick:function(evt){
var tgt=evt.target();
var txt;
if(tgt!==this.table&&tgt.nodeName==="TD"){
txt=scrapeText(tgt);
if(txt==="Edit"){
t.keyboard(this.node,this.mgr.mapping.engWord,this.mgr.lang,this.mgr.mapping.preferred);
this.cleanup();
}else{
setNodeText(this.node,scrapeText(tgt));
this.mgr.chooseOptionWord(getNodeText(tgt));
this.cleanup();
}
}
evt.stop();
},cleanup:function(){
disconnect(this.sig);
removeElement(this.table);
this.table=null;
this.visible=false;
}};
function ToolTip(_18d,_18e,_18f,_190,_191){
this.tdiv=getElement(_18d);
this.textengine=_191;
if(QuillUtil.getBrowser()==="moz"){
this.tdiv.style.position="fixed";
this.updatePos=function(node){
var pos=withDocument(this.textengine.doc,partial(elementPosition,node));
var _194=iframePos();
pos.x+=_194.x;
pos.y+=_194.y+24-this.textengine.doc.body.scrollTop;
this.pos=pos;
pos.x-=window.pageXOffset;
pos.y-=window.pageYOffset;
setElementPosition(this.tdiv,pos);
};
window.onscroll=method(this,function(){
var pos=this.pos;
if(!pos){
return;
}
setElementPosition(this.tdiv,{x:pos.x-window.pageXOffset,y:pos.y-window.pageYOffset});
});
}else{
this.tdiv.style.position="absolute";
}
this.wordSpan=getElement(_18e);
this.optSpan=getElement(_18f);
this.editorInput=getElement(_190);
if(QuillUtil.getBrowser()==="ie"){
this.editorInput.onpaste=function(){
window.event.returnValue=false;
};
}else{
if(QuillUtil.getBrowser()==="moz"){
}
}
}
ToolTip.prototype={show:function(){
if(QuillUtil.getBrowser()==="moz"){
this.tdiv.style.display="table";
}else{
this.tdiv.style.display="block";
}
},hide:function(){
this.tdiv.style.display="none";
},updatePos:function(node){
var pos=withDocument(this.textengine.doc,partial(elementPosition,node));
var _198=iframePos();
pos.x+=_198.x;
pos.y+=_198.y+22-this.textengine.doc.body.scrollTop;
setElementPosition(this.tdiv,pos);
},update:function(node,text){
this.node=node;
this.updatePos(node);
this.setWord(text);
setNodeText(this.optSpan,"...");
this.mgr=null;
this.show();
},changeColor:function(){
this.optSpan.style.color="#F66";
},restoreColor:function(){
this.optSpan.style.color="#66F";
},setWord:function(word){
this.word=word;
setNodeText(this.wordSpan,word);
},updateOpts:function(_19c,_19d){
setNodeText(this.optSpan,""+_19c+"/"+_19d);
},getWord:function(){
return this.word;
},doneEditing:function(_19e){
clearInterval(this.timer);
disconnect(this.sig1);
disconnect(this.sig2);
disconnect(this.sig3);
this.editorInput.style.display="none";
if(QuillUtil.getBrowser()==="moz"){
this.wordSpan.style.display="table-cell";
}else{
this.wordSpan.style.display="inline";
}
this.hide();
this.restoreColor();
if(this.mode==="correction"){
wm.setUserMapping(getNodeAttribute(this.node,"lang"),this.editorInput.value,this.mgr.mapping.preferred);
}
if(this.editorInput.value===""){
this.textengine.doneEditing(this.node,true);
}else{
this.textengine.doneEditing(this.node,false,_19e);
}
},editWord:function(node,text){
this.editorInput.style.display="inline";
this.wordSpan.style.display="none";
this.update(node,text);
this.oldText=text;
this.mgr=new OptMgr(wm.getMapping(getNodeAttribute(node,"lang"),text));
this.mode="edit";
this.editorInput.focus();
this.editorInput.value=text;
this.sig1=connect(this.editorInput,"onkeydown",this,this.onKeyDown);
this.sig2=connect(this.editorInput,"onblur",this,this.doneEditing);
this.sig3=connect(this.editorInput,"onkeypress",this,this.onKeyPress);
this.updateOpts(this.mgr.chosenOption,this.mgr.numOptions);
this.timer=setInterval(method(this,this.contentCheck),500);
},contentCheck:function(){
var text=this.editorInput.value;
if(text===this.oldText){
return;
}
this.mode="edit";
this.oldText=text;
if(text.length<=0){
setNodeText(this.node,"");
setNodeAttribute(this.node,"word","");
return;
}
setNodeAttribute(this.node,"word",text);
wm.getWordMapping(getNodeAttribute(this.node,"lang"),text,method(this,this.callbackFunc));
},callbackFunc:function(m){
this.mgr=new OptMgr(m);
this.textengine.replaceText(this.node,m.engWord,m.preferred);
this.updateOpts(this.mgr.chosenOption,this.mgr.numOptions);
this.restoreColor();
},onKeyPress:function(evt){
var s=evt.key().string;
if(!s.match(/[a-zA-Z\^\/~\.]/)&&s.length>0){
evt.stop();
}
},onKeyDown:function(evt){
var s=evt.key().string;
var opt;
switch(s){
case "KEY_BACKSPACE":
case "KEY_DELETE":
case "KEY_HOME":
case "KEY_END":
break;
case "KEY_ARROW_RIGHT":
if(getCursorPosition(this.editorInput)>=this.editorInput.value.length){
this.doneEditing();
}
break;
case "KEY_ARROW_LEFT":
if(getCursorPosition(this.editorInput)<=0){
this.doneEditing(true);
}
break;
case "KEY_Q":
if(evt.modifier().alt){
this.makeCorrection();
evt.stop();
}
break;
case "KEY_ESCAPE":
case "KEY_ENTER":
case "KEY_SPACEBAR":
evt.stop();
this.doneEditing();
break;
case "KEY_TAB":
evt.stop();
if(evt.modifier().shift){
this.chooseOption("previous");
}else{
this.chooseOption("next");
}
}
},chooseOption:function(_1a8){
if(_1a8==="prevous"){
opt=this.mgr.choosePrevious();
}else{
opt=this.mgr.chooseNext();
}
setNodeText(this.node,opt[1]);
this.updateOpts(opt[0],this.mgr.numOptions);
},setCursorAtStart:function(){
setCursorPosition(this.editorInput,0);
},makeCorrection:function(){
var pos=getCursorPosition(this.editorInput);
if(pos<=0){
return;
}
this.mode="correction";
var that=this;
var lang=getNodeAttribute(this.node,"lang");
var opt=wm.getMapping(lang,this.editorInput.value);
var word=opt.optmap[this.editorInput.value];
function callback(opts,_1af){
that.mgr=new OptMgr(new WordMapping(opt.engWord,opts,opts[0],"",_1af),opt.preferred,lang);
that.updateOpts(that.mgr.chosenOption,that.mgr.numOptions);
that.changeColor();
}
setNodeText(this.optSpan,"...");
if(word){
wm.getCorrections(lang,word,opt.engWord,pos-1,callback,"getCorrections");
}else{
wm.getCorrections(lang,opt.preferred,opt.engWord,pos-1,callback,"getCorrectionsStr");
}
}};
function KeyboardManager(){
this.kbDiv=getElement("kb");
this.keyboardArea=getElement("keyboardArea");
this.inputArea=getElement("keyInput");
this.back=getElement("aGoBack");
this.backends={};
var _1b0=getFontSize();
this.inputArea.style.fontSize=_1b0[0];
connect(this.inputArea,"onkeydown",this,this.onKeyDown);
connect(this.back,"onclick",this,this.doneEditing);
}
function mapLoaded(lang){
try{
t.km.doIt(lang);
}
catch(e){
logger.warn("Exception",e);
}
}
KeyboardManager.prototype={focus:function(){
this.inputArea.focus();
},getText:function(){
return this.inputArea.value;
},doIt:function(lang){
if(lang!=this.saveData[2]){
logger.error("Oops got",lang,"expected",this.saveData);
return;
}
if(this.backends.hasOwnProperty(lang)){
logger.error("Oops.. ",lang,"already has a backend");
return;
}
this.backends[lang]=new Backend(lang);
this.doRest(this.saveData[0],this.saveData[1],this.saveData[2],this.saveData[3]);
},toggleLoading:function(on){
if(on){
getElement("loadingDiv").style.display="block";
}else{
getElement("loadingDiv").style.display="none";
}
},doRest:function(node,_1b5,lang,_1b7){
this.backend=this.backends[lang];
this.inputArea.value=_1b7;
this.info=[node,_1b5,lang];
this.toggleLoading(false);
this.kbDiv.style.display="block";
this.mainTable=new MainTable(this,this.backend);
this.inputArea.focus();
},show:function(node,_1b9,lang,_1bb){
var that=this;
function loadScript(){
var loc=QuillUtil.getServerAddr()+quillConfig.server.quillPath+"/";
that.saveData=[node,_1b9,lang,_1bb];
var _1be=document.createElement("script");
var head=document.getElementsByTagName("head")[0];
_1be.setAttribute("type","text/javascript");
_1be.setAttribute("src",loc+lang+"_map.js");
head.appendChild(_1be);
}
if(!this.backends.hasOwnProperty(lang)){
this.toggleLoading(true);
loadScript();
}else{
this.doRest(node,_1b9,lang,_1bb);
}
},hide:function(){
this.kbDiv.style.display="none";
}};
KeyboardManager.prototype.doneEditing=function(evt){
evt.stop();
this.hide();
if(this.inputArea.value.length>0){
t.replaceText(this.info[0],this.info[1],this.inputArea.value);
wm.setUserMapping(this.info[2],this.info[1],this.inputArea.value);
wm.setPreferredMapping(this.info[2],this.info[1],this.inputArea.value);
}
if(this.mainTable){
this.mainTable.cleanup();
this.mainTable=null;
}
t.keyboardDone();
};
KeyboardManager.prototype.getCurrentWord=function(){
var s=this.inputArea.value;
if(s.length<1){
return "";
}else{
if(s.charAt(s.length-1)==" "){
return "";
}
}
var arr=s.split(/\s/);
return arr[arr.length-1];
};
KeyboardManager.prototype.setOptions=function(_1c3){
this.replaceWord(_1c3[0]);
};
KeyboardManager.prototype.replaceWord=function(word){
var s=this.inputArea.value;
if(!s||s.charAt(s.length-1).match(/\s/)){
this.inputArea.value+=word;
}else{
for(var i=s.length-1;i>=0;i--){
if(s.charAt(i).match(/\s/)){
break;
}
}
this.inputArea.value=[s.slice(0,i+1),word].join("");
}
};
KeyboardManager.prototype.refreshDisplay=function(){
};
KeyboardManager.prototype.onKeyDown=function(evt){
var s=evt.key().string;
if(s=="KEY_TAB"){
this.mainTable.tab(evt.modifier().shift);
evt.stop();
}else{
if(s.match(/^KEY_[A-Z]$/)||s.match(/^KEY_[0-9]/)){
if(evt.modifier().ctrl||evt.modifier().alt){
return;
}
s=s.toLowerCase();
this.mainTable.hintMain(s.charAt(4),evt.modifier().shift);
evt.stop();
}else{
if(s.match(/^KEY_ARROW_/)){
if(!evt.modifier().shift){
s=s.toLowerCase();
s=s.slice(10);
this.mainTable.moveCursorMain(s);
evt.stop();
}
}else{
if(evt.modifier().shift){
if(s=="KEY_ENTER"){
}
evt.stop();
}else{
if(s=="KEY_ENTER"){
this.mainTable.select();
evt.stop();
}else{
if(s=="KEY_ESCAPE"){
this.mainTable.kill();
evt.stop();
}else{
if(s=="KEY_SPACEBAR"){
this.refreshDisplay();
evt.stop();
}else{
if(s=="KEY_BACKSPACE"){
this.inputArea.value=this.inputArea.value.slice(0,-1);
this.refreshDisplay();
evt.stop();
}else{
}
}
}
}
}
}
}
}
};
function Backend(lang){
this.pattern=eval(lang+"_pattern");
QuillUtil.setLang(lang);
this.keyMap=eval(["(",lang,"_keymap.map",")"].join(""));
this.interfaceMap=eval(["(",lang,"_interfacemap",")"].join(""));
this.typeMap={};
this.reverseTypeMap={};
this.mathras=[];
this.uHintMap={};
var _1ca=eval(["(",lang,"_zwnjmap",")"].join(""));
this.zwjSignificant=_1ca.zwjSignificant;
this.zwnjSignificant=_1ca.zwnjSignificant;
this.zwjCode=_1ca.zwjCode;
this.zwnjCode=_1ca.zwnjCode;
this.halanth=_1ca.halanth;
this.nukta=_1ca.nukta;
var that=this;
map(function(x){
that.mathras.push(x);
},this.keyMap[0]);
var i,j,t;
for(i=0;i<this.keyMap.length;i++){
for(j=0;j<this.keyMap[i].length;j++){
t=this.keyMap[i][j][1];
if(this.typeMap[t]){
this.typeMap[t][this.keyMap[i][j][0]]=true;
}else{
this.typeMap[t]={};
}
this.reverseTypeMap[this.keyMap[i][j][0]]=t;
this.uHintMap[this.keyMap[i][j][0]]=this.keyMap[i][j][2];
}
}
}
Backend.prototype.getHint=function(_1d0,_1d1){
var _1d2;
for(var i=_1d1;i<_1d0.length;i++){
_1d2=_1d0.charAt(i);
if(_1d2!=this.nuktha&&_1d2!=this.halanth){
return this.uHintMap[_1d2];
}
}
return this.uHintMap[_1d0.charAt(0)];
};
Backend.prototype.getMathras=function(){
return this.mathras;
};
Backend.prototype.getClass=function(_1d4){
if(_1d4){
return this.reverseTypeMap[_1d4];
}
return "";
};
Backend.prototype.belongsTo=function(_1d5,_1d6){
if(this.typeMap[_1d6]&&this.typeMap[_1d6][_1d5]){
return true;
}
return false;
};
Backend.prototype.toAksharaList=function(ustr){
return ustr.match(this.pattern);
};
Backend.prototype.getKeyMap=function(){
var a=[];
extend(a,this.keyMap);
return a;
};
Backend.prototype.getWord=function(_1d9,key){
var prev="^";
var _1dc;
if(_1d9.length>0){
_1dc=this.toAksharaList(_1d9);
if(_1dc){
prev=_1dc[_1dc.length-1];
}
}
var _1dd=prev+"+"+key;
var _1de="#+"+key;
var row1=[];
if(this.interfaceMap[_1de]){
row1=this.interfaceMap[_1de];
}
var row2=[];
if(this.interfaceMap[_1dd]){
row2=this.interfaceMap[_1dd];
}
return [row1,row2];
};
Backend.prototype.getWordOptions=function(_1e1,_1e2){
var key=_1e2.charAt(0);
var _1e4=[_1e1+_1e2];
if(_1e1.length<0||_1e1.charAt(_1e1.length-1)!=this.halanth){
return _1e4;
}
if(this.belongsTo(key,"cons")){
if(this.zwjSignificant){
_1e4.push(_1e1+this.zwjCode+_1e2);
}
if(this.zwnjSignificant){
_1e4.push(_1e1+this.zwnjCode+_1e2);
}
}
return _1e4;
};
function MainTable(_1e5,_1e6){
this.key=null;
this.backend=_1e6;
this.mainmgr=_1e5;
this.table=null;
this.keyArea=getElement("keyboard");
this.secondaryTable=null;
this.coloredCells=[];
this.defaultColor="#E9EEF7";
this.depth=0;
this.sigList=[];
this.populate();
this.setCursor([0,0]);
this.coloredCells=[];
}
MainTable.prototype.setCursor=function(pos){
this.cursorPos=pos;
this.colorCellBasic(pos,quillConfig.client.keyboard.cursorColor);
};
MainTable.prototype.removeSecondaryTable=function(){
if(this.secondaryTable){
this.secondaryTable.cleanup();
this.secondaryTable=null;
}
};
MainTable.prototype.kill=function(){
if(this.secondaryTable){
this.removeSecondaryTable();
}else{
this.highlight(null);
this.coloredCells=[];
this.hKey=null;
this.colorCellBasic(this.cursorPos,quillConfig.client.keyboard.cursorColor);
}
};
MainTable.prototype.hintMain=function(c,_1e9){
if(this.secondaryTable){
this.secondaryTable.hint(c,_1e9);
}else{
this.hint(c,_1e9);
}
};
MainTable.prototype.select=function(){
if(this.secondaryTable){
this.secondaryTable.select();
return;
}
var src=this.getSelectedKey();
this.keyPressed({"src":function(){
return src;
},"stop":function(){
}});
};
MainTable.prototype.moveCursorMain=function(_1eb){
if(this.secondaryTable){
this.secondaryTable.moveCursor(_1eb);
}else{
this.moveCursor(_1eb);
}
};
MainTable.prototype.tab=function(_1ec){
if(this.secondaryTable){
this.secondaryTable.tabMove(_1ec);
}else{
this.tabMove(_1ec);
}
};
MainTable.prototype.onTableClick=function(){
this.removeSecondaryTable();
};
MainTable.prototype.closeTable=function(){
};
MainTable.prototype.populate=function(){
var l=this.backend.getKeyMap();
var that=this;
var _1ef=getFontSize();
this.createHintMap(l);
function getTD(val){
var s=document.createElement("SUB");
var t=document.createTextNode(that.backend.getHint(val[0],that.depth));
var text=SPAN(val[0]);
text.style.fontSize=_1ef[0];
appendChildNodes(s,t);
var td=TD({"class":"keytd"},text,s);
var sig=connect(td,"onclick",that,that.keyPressed);
that.sigList.push(sig);
setNodeAttribute(td,"content",val[0]);
return td;
}
function rowDisplay(row){
return TR(null,map(getTD,row));
}
var t=TABLE({"cellpadding":"2","cellspacing":"2"},TBODY(null,map(rowDisplay,l)));
appendChildNodes(this.keyArea,t);
this.table=t;
connect(t,"onclick",this,this.onTableClick);
};
MainTable.prototype.keyPressed=function(evt){
var c=getNodeAttribute(evt.src(),"content");
var _1fa=this.mainmgr.getCurrentWord();
var _1fb;
var e;
if(c==this.key){
_1fb=this.backend.getWordOptions(_1fa,c);
this.mainmgr.setOptions(_1fb);
this.removeSecondaryTable();
evt.stop();
this.key=null;
return;
}
this.removeSecondaryTable();
this.key=c;
e={pageX:elementPosition(evt.src()).x,pageY:elementPosition(evt.src()).y};
_1fb=this.backend.getWord(_1fa,c);
if(_1fb[0].length<1&&_1fb[1].length<1){
_1fb=this.backend.getWordOptions(_1fa,c);
this.mainmgr.setOptions(_1fb);
}else{
this.secondaryTable=new SecondaryTable(this.mainmgr,this.backend,this,e,_1fb);
}
evt.stop();
};
MainTable.prototype.secondaryDone=function(){
this.secondaryTable=null;
this.key=null;
};
MainTable.prototype.cleanup=function(){
this.removeSecondaryTable();
this.cleanupSigs();
removeElement(this.table);
};
MainTable.prototype.cleanupSigs=function(){
var i=0;
for(i=0;i<this.sigList.length;i++){
disconnect(this.sigList[i]);
}
};
MainTable.prototype.moveCursor=function(_1fe){
var pos=this.calcCursor(_1fe);
for(var i=0;i<this.coloredCells.length;i++){
if(compare(pos,this.coloredCells[i])===0){
break;
}
}
var that=this;
if(i===this.coloredCells.length){
map(function(x){
that.colorCellBasic(x,that.defaultColor);
},this.coloredCells);
this.coloredCells=[];
this.hKey=null;
this.colorCellBasic(this.cursorPos,this.defaultColor);
}else{
this.colorCellBasic(this.cursorPos,quillConfig.client.keyboard.hintColor);
}
this.setCursor(pos);
};
MainTable.prototype.getSelectedKey=function(){
var r=this.cursorPos[0];
var c=this.cursorPos[1];
return this.table.childNodes[0].childNodes[r].childNodes[c];
};
MainTable.prototype.calcCursor=function(_205){
var row=this.cursorPos[0];
var _207=this.cursorPos[1];
var that=this;
function boxRule(r,c){
if(c<that.rowLengths[r]){
return c;
}
return that.rowLengths[r]-1;
}
switch(_205){
case "up":
if(row===0){
row=this.rowLengths.length-1;
}else{
row-=1;
}
_207=boxRule(row,_207);
break;
case "down":
if(row===this.rowLengths.length-1){
row=0;
}else{
row+=1;
}
_207=boxRule(row,_207);
break;
case "right":
if(_207===this.rowLengths[row]-1){
_207=0;
}else{
_207+=1;
}
break;
case "left":
if(_207===0){
_207=this.rowLengths[row]-1;
}else{
_207-=1;
}
break;
default:
logger.error("unknown direction",_205);
}
return [row,_207];
};
MainTable.prototype.highlight=function(c){
for(i=0;i<this.coloredCells.length;i++){
this.colorCellBasic(this.coloredCells[i],this.defaultColor);
}
if(!c){
return;
}
var that=this;
var l=this.hintMap[c];
if(!l||!l.length){
this.colorCellBasic(this.cursorPos,quillConfig.client.keyboard.cursorColor);
return;
}
var i;
for(i=0;i<l.length;i++){
this.colorCellBasic(l[i],quillConfig.client.keyboard.hintColor);
}
this.setCursor(l[0]);
this.coloredCells=l;
};
MainTable.prototype.createHintMap=function(_20f){
var i,j,c,m;
this.hintMap={};
this.rowLengths=[];
for(i=0;i<_20f.length;i++){
this.rowLengths.push(_20f[i].length);
for(j=0;j<_20f[i].length;j++){
c=_20f[i][j][0];
m=this.backend.getHint(c,this.depth);
if(this.hintMap[m]){
this.hintMap[m].push([i,j]);
}else{
this.hintMap[m]=[[i,j]];
}
}
}
};
MainTable.prototype.colorCellBasic=function(pos,_215){
if(!this.table){
return;
}
var i,j;
i=pos[0];
j=pos[1];
var tr=this.table.childNodes[0].childNodes[i];
if(!tr){
return;
}
var td=tr.childNodes[j];
if(!td){
return;
}
var _21a=td.style.background;
td.style.background=_215;
return _21a;
};
MainTable.prototype.tabMove=function(_21b){
if(this.hKey){
if(_21b){
if(this.cursorPosInHint==0){
this.cursorPosInHint=this.coloredCells.length-1;
}else{
this.cursorPosInHint-=1;
}
}else{
if(this.cursorPosInHint==this.coloredCells.length-1){
this.cursorPosInHint=0;
}else{
this.cursorPosInHint+=1;
}
}
this.colorCellBasic(this.cursorPos,quillConfig.client.keyboard.hintColor);
var pos=this.coloredCells[this.cursorPosInHint];
this.setCursor(pos);
}
};
MainTable.prototype.hint=function(c,_21e){
if(this.hKey===c){
if(_21e){
if(this.cursorPosInHint==0){
this.cursorPosInHint=this.coloredCells.length-1;
}else{
this.cursorPosInHint-=1;
}
}else{
if(this.cursorPosInHint==this.coloredCells.length-1){
this.cursorPosInHint=0;
}else{
this.cursorPosInHint+=1;
}
}
this.colorCellBasic(this.cursorPos,quillConfig.client.keyboard.hintColor);
var pos=this.coloredCells[this.cursorPosInHint];
this.setCursor(pos);
return;
}else{
this.colorCellBasic(this.cursorPos,this.defaultColor);
this.highlight(c);
this.hKey=c;
this.cursorPosInHint=0;
}
};
function SecondaryTable(_220,_221,_222,_223,_224){
this.table=null;
this.sigList=null;
this.mainTable=_222;
this.mainmgr=_220;
this.backend=_221;
this.cursorPos=[0,0];
this.coloredCells=[];
this.defaultColor="#FFFFA0";
this.depth=1;
this.keyPos=elementPosition("keyboardArea");
this.keyDim=elementDimensions("keyboardArea");
this.populate(_223,_224);
this.setCursor([0,0]);
}
SecondaryTable.prototype.keyPressed=function(evt){
var c=getNodeAttribute(evt.src(),"content");
var _227=this.mainmgr.getCurrentWord();
var _228;
_228=this.backend.getWordOptions(_227,c);
this.mainmgr.setOptions(_228);
this.cleanup();
};
SecondaryTable.prototype.cleanup=function(evt){
this.cleanupSigs();
removeElement(this.table);
this.mainTable.secondaryDone();
};
SecondaryTable.prototype.select=function(){
var src=this.getSelectedKey();
this.keyPressed({"src":function(){
return src;
},"stop":function(){
}});
};
SecondaryTable.prototype.populate=function(e,_22c){
var that=this;
var a=_22c;
var _22f=getFontSize();
this.sigList=[];
function getTD(val){
var s=document.createElement("SUB");
var t=document.createTextNode(that.backend.getHint(val[0],that.depth));
s.appendChild(t);
var text=SPAN(val[0]);
text.style.fontSize=_22f[0];
var td=TD({"class":"abstable","content":val[0]},text,s);
var sig=connect(td,"onclick",that,that.keyPressed);
that.sigList.push(sig);
return td;
}
var t,t2;
var tr1=TR(null,map(getTD,a[0]));
if(a[1].length>0){
tr2=TR(null,map(getTD,a[1]));
t=TABLE(null,TBODY(null,[tr1,tr2]));
this.createHintMap(a);
}else{
t=TABLE(null,TBODY(null,[tr1]));
this.createHintMap([a[0]]);
}
this.table=t;
setElementClass(t,"abstable");
setElementPosition(t,{x:this.keyPos.x,y:e.pageY+15});
t.style.width=this.keyDim.w+"px";
appendChildNodes(document.getElementsByTagName("body")[0],t);
};
SecondaryTable.prototype.cleanupSigs=MainTable.prototype.cleanupSigs;
SecondaryTable.prototype.moveCursor=MainTable.prototype.moveCursor;
SecondaryTable.prototype.calcCursor=MainTable.prototype.calcCursor;
SecondaryTable.prototype.createHintMap=MainTable.prototype.createHintMap;
SecondaryTable.prototype.getSelectedKey=MainTable.prototype.getSelectedKey;
SecondaryTable.prototype.highlight=MainTable.prototype.highlight;
SecondaryTable.prototype.hint=MainTable.prototype.hint;
SecondaryTable.prototype.tabMove=MainTable.prototype.tabMove;
SecondaryTable.prototype.colorCellBasic=MainTable.prototype.colorCellBasic;
SecondaryTable.prototype.setCursor=MainTable.prototype.setCursor;
connect(window,"onload",initQuill);

