var lf_host = 'www.learnhanzi.com';
var lf_x = '3';
var lf_y = '3';
var lf_rel=false;
var lf_br='';
var lf_imgdir = 'http://www.learnhanzi.com/images';
var lf_maintab; 
var lf_startOk; 
var lf_lginstattab; 
var lf_lgoutstattab; 
var lf_lsize = 5; 
var lf_lpnt = 6; 
var lf_sessid = ''; 
var lf_st = true; 
var lf_buf = new Array();
var lf_wbuff = new Array();
var lf_mess= new Array(new Array(new Array(),3,5000),new Array(new Array(),3,5000));
var lf_messid=0; 
var lf_ms = '#!#';
var lf_curh;
var lf_fbh;
var lf_clcmd=''; 
var lf_it=0; 
var lf_lt=0; 
var lf_nr=0; 
var lf_nw=0; 
var lf_tmax=15;
var lf_ldto=500; 
var lf_ldng = false;
var lf_wtsa = false; 
var lf_lstans, lf_lstsix, lf_lstres;
var lf_region;
var lf_host;
var lf_focus='';
var lf_fbcBgRight='#EEEEEE';
var lf_fbcBgWrong='#FFFF99';
var lf_fbtmo;
var lf_actOpttab=1;
var lf_deflevel = 2;
var lf_preflevel = -1; 
var lf_settings = new Array(lf_deflevel,'T',0,0);
var lf_levtop = new Array(51,101,501,2001,7001);
var lf_h0=0; 
var lf_hs=0; 
var lf_dbhigh=0; 
var lf_six; 
var lf_mxtotal=lf_lsize; 
var lf_isOpt=false; 
var lf_isLgin=false; 
var lf_evstat=new Array(0,0,0);
var lf_levopts = new Array('Just starting','Beginner','Intermediate','Advanced','Expert','Personal');
var lf_cookie=new Array();
if(document.cookie.length>10){
if(document.cookie.indexOf(';') > -1){
var exp=new Date();
var nexp = exp.getTime()-(100000000);
exp.setTime(nexp);
document.cookie='lf_cookie=;expires='+exp.toGMTString();
}else{
lf_cookie=document.cookie.substr(10).split('¤');
}
}
var lf_mxopts = new Array(0,'Normal mode',90,'Tone','I','Initials',10,'b- p-',12,'d- t-',14,'g- k- h-',16,'s- z- c-',18,'zh- ch-',20,'s- sh-',22,'z- zh-',24,'c- ch-',26,'x- j- q-',28,'r- l-','F','Finals',80,'-n -ng',40,'-un -uan',42,'-in -ian',44,'-an -en',46,'-ang -eng',48,'-a -e',50,'-e -i',52,'-ou -uo',54,'-o -ou',56,'-iao -iu',58,'-u -ue',60,'-ü -üe',62,'-ui -uai');
function lf_$(id){ return document.getElementById(id); }
function lf_init(){
if(lf_it<lf_tmax){
if(((lf_rel) &&! lf_$('lf_div')) || !document.getElementsByTagName('body')[0]){
setTimeout(lf_init,1000);
lf_it++;
return;
}
}else{
return;
}
var html = "<table width='170' cellpadding='0' cellspacing='0' id='lf_flashcard'><tr><td id='lf_list' style='border-bottom:#000000 solid 1px;'><table width='100%' border='0' cellspacing='0' cellpadding='4'><tr><td class='lf_liststyle' align='left'><a href='http://"+lf_host+"' target='_blank'>Learnhanzi</a>&nbsp;Flashcards</td><td class='lf_liststyle' id='lf_flash' align='right'>&nbsp;</td></tr></table></td></tr><tr><td id='lf_main' style='padding:2px;' height='150' valign='top'></td></tr><tr><td id='lf_down' style='border-top:#000000 solid 1px;'><table width='100%' border='0' cellspacing='0' cellpadding='0'><tr><td width='68' id='lf_stat' align='center' valign='middle' style='padding:2px'></td><td align='center'><input type='button' name='lf_strt' id='lf_strt' value='Start' /></td><td width='36' nowrap='nowrap' id='lf_downr' align='center' style='padding:2px'><a href='javascript:lf_dispOpt()'>Options</a><br /><span id='lf_lgio'><a href='javascript:lf_dispLogin()'>Log in</a></span></td></tr><form name='lf_fbform' method='post' action='http://"+lf_host+"/flashcards/feedback/' target='_blank'><input type='hidden' name='lf_wh' /><input type='hidden' name='lf_lev' /><input type='hidden' name='lf_e' /><input type='hidden' name='lf_allev' /></form></table></td></tr></table><span id='lf_fbc'></span><span id='lf_alert'></span>";
var lf_span=document.createElement('span');
lf_span.id='lf_id';
if(lf_y!='' && (lf_y.length<3 || lf_y.substr(lf_y.length-2)!='px')){
lf_y=lf_y+'px';
}
if(lf_x!='' && (lf_x.length<3 || lf_x.substr(lf_x.length-2)!='px')){
lf_x=lf_x+'px';
}
lf_span.style.top=lf_y;
lf_span.style.left=lf_x;
lf_span.innerHTML=html;
var fbcX;
var fbcY
if(lf_rel){
lf_span.style.position='relative';
lf_$('lf_div').appendChild(lf_span);
if(lf_br=='mozilla'){
fbcX = 12;
for(var i=0;i<lf_$('lf_div').attributes.length; i++){
if(typeof lf_$('lf_div').attributes[i].value == 'string' && lf_$('lf_div').attributes[i].value == 'center'){
fbcX = -70;
break;
}
}
fbcY = -178;
}else{
fbcX = 12;
fbcY = 12;
}
}else{
lf_span.style.position='absolute';
var bd=document.getElementsByTagName('body')[0];
bd.appendChild(lf_span);
fbcY = 12;
fbcX = 12;
}
lf_createMaintab();
lf_startOk = true;
lf_createLoggedinStat();
lf_createLoggedoutStat();
var fbc = lf_$('lf_fbc');
fbc.style.position = 'absolute';
fbc.style.visibility = 'hidden';
fbc.style.zIndex = '1';
fbc.style.left = fbcX+'px';
fbc.style.bottom = fbcY+'px';
fbc.style.height = '160px';
fbc.style.width = '139px';
fbc.style.padding = '0px 0px 0px';
fbc.style.fontFamily = 'Arial, Helvetica, sans-serif';
fbc.style.fontSize = '12px';
fbc.style.textAlign = 'center';
fbc.style.lineHeight = '14px';
fbc.style.border = 'solid #000000 1px';
fbc.onclick= lf_closeFB;
var ale = lf_$('lf_alert');
if(lf_br.indexOf('msie')!=-1){
var aleX = fbcX-9;
}else{
var aleX = fbcX-12;
}
var aleY = fbcY+37;
ale.style.position = 'absolute';
ale.style.visibility = 'hidden';
ale.style.zIndex = '1';
ale.style.left = aleX+'px';
ale.style.bottom = aleY+'px';
ale.style.width = '158px';
ale.style.padding = '0px';
ale.style.fontFamily = 'Arial, Helvetica, sans-serif';
ale.style.fontSize = '11px';
ale.style.textAlign = 'center';
ale.style.backgroundColor='#eeeeee';
ale.style.border = 'solid #000000 3px';
var cval = lf_getCookieVal('level');
if(typeof cval=='number' && cval < 6 && cval > -1){lf_preflevel=lf_settings[0]=cval;}
cval = lf_getCookieVal('mode');
if(cval=='T' || cval=='L'){lf_settings[1]=cval;}
cval = lf_getCookieVal('content');
if(typeof cval=='number' && cval <= 100 && cval > -1){lf_settings[2]=cval;}
cval = lf_getCookieVal('ditm');
if(typeof cval=='number' && cval < 4 && cval > -1){lf_settings[3]=cval;}
var exmx=false;
var exlev=false;
if(typeof lf_emxu == 'number' && lf_emxu > 0 && lf_emxu < 100){
lf_settings[2] = lf_emxu;
exmx=true;
}
if(typeof lf_elev == 'number' && lf_elev > -1 && lf_elev < 5){
if(lf_settings[2] == 90){
if(lf_elev==0){ 
lf_settings[0] = 1;
}else{
lf_settings[0] = lf_elev;
}
}else if(lf_settings[2] != 0 && lf_elev < 3 ){ 
lf_settings[0] = 3;
}else{
lf_settings[0] = lf_elev;
}
exlev=true;
}
if(lf_settings[2] == 90 && lf_settings[0] == 0){
lf_settings[0] = 1; 
}else if(lf_settings[2] != 0 && lf_settings[0] < 3){
lf_settings[0] = 3;
}
lf_$('lf_strt').onclick = lf_start;
lf_$('lf_strt').value = 'Start';
var lf_startmess='';
if(!exmx){ 
lf_startmess='<div style=\'font-size:10px;text-align:center;\'><a href=\'javascript:'+((lf_settings[1]=='L')?'lf_showLmodeHelp()':'lf_showTmodeHelp()')+'\' style=\'color:#000;\'>Help</a><br /><br /><br /><br /><br />No account yet?<br /><a href=\'http://www.learnhanzi.com/register\' target=\'_blank\'>Register here!</a></div>';
}else{
lf_startmess='<div style=\'font-size:10px;text-align:center\'>Practice on '+lf_getmxstr(lf_settings[2])+' mixup!</div>';
}
lf_showMessage(lf_startmess,'lf_main');
lf_dispStat();
lf_resetLevel(lf_settings[0]);
if(typeof lf_newreg == 'string' && lf_newreg.indexOf('&')!=-1){
var lf_reglgin = lf_newreg.split('&');
if(lf_validateString(lf_reglgin[0],4,20,'username','',true) && lf_validateString(lf_reglgin[1],6,20,'password','',true)){
lf_doLogin(lf_reglgin[0],lf_reglgin[1]);
}
}
else if(lf_getCookieVal('autologin')=='1'){
var un=lf_getCookieVal('un');
var pw=lf_getCookieVal('pw');
if(lf_validateString(un,4,20,'username','',false) && lf_validateString(pw,6,20,'password','',false)){
lf_doLogin(un,pw);
}
}
}
function lf_createMaintab(){
lf_maintab = document.createElement('table');
lf_maintab.width='100%';
lf_maintab.border='0';
lf_maintab.cellSpacing='0';
lf_maintab.cellPadding='2';
var tb = document.createElement('tbody');
var tr = document.createElement('tr');
var td = document.createElement('td');
td.id = 'lf_top';
td.width = '100%';
td.height = '12';
td.vAlign = 'top';
td.style.textAlign = 'right';
td.style.fontSize = '10px';
td.style.padding = '0px';
td.appendChild(document.createTextNode(' '));
tr.appendChild(td);
tb.appendChild(tr);
tr = document.createElement('tr');
td = document.createElement('td');
td.id = 'lf_mid';
td.width = '100%';
td.height = '108';
td.vAlign = 'top';
td.appendChild(document.createTextNode(' '));
tr.appendChild(td);
tb.appendChild(tr);
tr = document.createElement('tr');
td = document.createElement('td');
td.id = 'lf_inp';
td.align = 'right';
var inp = document.createElement('input');
inp.type='text';
inp.id='lf_py';
inp.size='3';
td.appendChild(inp);
inp = document.createElement('input');
inp.type='button';
inp.id='lf_ok';
inp.value='OK';
inp.onclick=lf_answ;
td.appendChild(inp);
tr.appendChild(td);
tb.appendChild(tr);
lf_maintab.appendChild(tb);
}
function lf_dispMaintab(){
lf_clearScreen(lf_$('lf_main'));
lf_$('lf_main').appendChild(lf_maintab);
if(lf_curh==null){
lf_dispTop(false);
}
if(typeof lf_$('lf_py')=='object' && lf_$('lf_py').style.display!='none'){
}
}
function lf_createLoggedinStat(){
lf_lginstattab = document.createElement('table');
lf_lginstattab.width='100%';
lf_lginstattab.cellSpacing='0';
lf_lginstattab.cellPadding='2';
lf_lginstattab.style.border = 'solid #000000 1px';
var tb = document.createElement('tbody');
var tr = document.createElement('tr');
var td = document.createElement('td');
td.id = 'lf_e0';
td.style.textAlign = 'center';
td.style.borderRight = 'solid #000000 1px';
td.style.backgroundColor='#339933';
td.style.color='#000000';
td.appendChild(document.createTextNode(' ')); 
td.title='Mastered characters';
tr.appendChild(td);
td = document.createElement('td');
td.id = 'lf_e1';
td.style.textAlign = 'center';
td.style.borderRight = 'solid #000000 1px';
td.style.backgroundColor='#FFFF00';
td.style.color='#000000';
td.appendChild(document.createTextNode(' '));
td.title='Problematic characters';
tr.appendChild(td);
td = document.createElement('td');
td.id = 'lf_e2';
td.style.textAlign = 'center';
td.style.backgroundColor='#3300CC';
td.style.color='#ffffff';
td.appendChild(document.createTextNode(' '));
td.title='Difficult characters';
tr.appendChild(td);
tb.appendChild(tr);
tb.appendChild(tr);
lf_lginstattab.appendChild(tb);
}
function lf_createLoggedoutStat(){
lf_lgoutstattab = document.createElement('table');
lf_lgoutstattab.width='100%';
lf_lgoutstattab.cellSpacing='0';
lf_lgoutstattab.cellPadding='2';
lf_lgoutstattab.border='0';
var tb = document.createElement('tbody');
var tr = document.createElement('tr');
var td = document.createElement('td');
td.width = '30';
td.style.color='#ffffff';
td.style.textAlign='center';
td.style.verticalAlign='top';
td.appendChild(document.createTextNode('Right'));
td.appendChild(document.createElement('br'));
var span = document.createElement('span');
span.id = 'lf_r';
span.appendChild(document.createTextNode(lf_nr));
td.appendChild(span);
tr.appendChild(td);
td = document.createElement('td');
td.width = '30';
td.style.color='#ffffff';
td.style.textAlign='center';
td.style.verticalAlign='top';
td.appendChild(document.createTextNode('Wrong'));
td.appendChild(document.createElement('br'));
span = document.createElement('span');
span.id = 'lf_w';
span.appendChild(document.createTextNode(lf_nw));
td.appendChild(span);
tr.appendChild(td);
tb.appendChild(tr);
lf_lgoutstattab.appendChild(tb);
}
function lf_dispStat(){
var stattd = lf_$('lf_stat');
lf_clearScreen(stattd);
if(lf_settings[0]==5){
stattd.appendChild(lf_lginstattab);
}else{
stattd.appendChild(lf_lgoutstattab);
}
}
function lf_resetLevel(level){
if(lf_settings[2]!=0){ 
lf_h0 = Math.ceil(Math.random()*10); 
if(lf_settings[2]==90){ 
lf_six = Math.ceil(Math.random()*5); 
lf_h0 = 0; 
}
else{
lf_six = Math.ceil(Math.random()*3); 
lf_h0 = Math.ceil(Math.random()*10); 
}
}else if(level != 5){ 
lf_h0=Math.ceil(Math.random()*lf_levtop[level]);
if(level > 2 && lf_h0 < lf_levtop[level]/4){ 
lf_h0 = (int) (lf_h0 + lf_levtop[level]/4);
}
lf_hs=Math.ceil(Math.random()*(level+3))+(level*2);
}
}
function lf_answ(){
var val = lf_$('lf_py').value.replace(/ /g,'');
if(lf_curh == null || typeof lf_curh != 'object'){
return;
}else if(val.length < 2){
lf_alert('The pinyin value must be at least one letter and a number at the end, like this: \'a4\'.','lf_py');
return;
}else if(isNaN(val.charAt(val.length-1))){
lf_alert('Please give the tone of the character as a number at the end, like this: \'ma3\'.','lf_py');
return;
}else if(val.charAt(val.length-1) > 4){
lf_alert('The tone of the character must be a number between 0 and 4.','lf_py');
return;
}
lf_lstans = val.toLowerCase().replace(/v/,'ü');
lf_lstres=0;
for(var i=0;i<lf_curh.subh.length;i++){
if(lf_lstans==lf_curh.subh[i].p+lf_curh.subh[i].t){
lf_lstres=1;
break;
}
}
lf_fbh=lf_curh;
if(lf_lstres==0){
lf_wbuff.push(lf_fbh.uniint);
lf_wbuff.push(lf_lstans);
i=0;
}
lf_lstsix = i;
lf_dispA(lf_lstres,i);
lf_saveAndNext();
}
function lf_saveAndNext(){
if(lf_sessid != ''){
if(lf_saveAnswer()==-1){
if(!lf_wtsa){
lf_wtsa=true;
lf_showMessage('Saving answer, wait...','lf_main');
}
setTimeout(lf_saveAndNext,100);
return;
}
lf_wtsa=false;
}
lf_next();
}
function lf_usernext(){
if(lf_$('lf_wtld')){
return;
}else{
lf_next();
}
}
function lf_next(){
if(lf_buf.length > 0 && lf_buf[0].img.complete){
lf_curh=lf_buf.shift();
if(lf_settings[0]!=5){
lf_curh.img.title=lf_curh.subh[0].d;
}
lf_dispH();
if(lf_st){
lf_prep();
}
if(lf_buf.length < lf_lpnt){
lf_ldBuf();
}
}else if(lf_lt < lf_tmax){
var lf_myldto = lf_ldto;
lf_dispW();
if(lf_buf.length < lf_lpnt){
lf_ldBuf();
}
if(lf_lt < 4){
lf_myldto=lf_ldto;
}else if(lf_lt < 8){
lf_myldto=lf_ldto*2;
}else{
lf_myldto=lf_ldto*6;
}
setTimeout(lf_next,lf_myldto);
return;
}else{
lf_lt = 0;
lf_ldng=false;
lf_dispErr();
}
}
function lf_dispH(){
if(lf_$('lf_mid')==null){
lf_dispMaintab();
}
lf_clearScreen(lf_$('lf_mid'));
var d=document.createElement('div');
d.style.textAlign='center';
d.appendChild(lf_curh.img);
if(lf_settings[1]=='L' || lf_settings[3]==2){
if(lf_settings[1]=='L'){
d.style.marginTop='0px';
var e=document.createElement('div');
var s=document.createElement('span');
s.style.fontSize='16px';
s.innerHTML=getFullP(lf_curh.subh[0].p,lf_curh.subh[0].t);
e.appendChild(s);
if(lf_curh.subh.length>1){
e.appendChild(document.createTextNode('    ('));
for(var i=1;i<lf_curh.subh.length;i++){
s=document.createElement('span');
s.style.fontSize='10px';
s.innerHTML=getFullP(lf_curh.subh[i].p,lf_curh.subh[i].t);
e.appendChild(s);
if(i!=lf_curh.subh.length-1){
e.appendChild(document.createTextNode(', '));
}
}
e.appendChild(document.createTextNode(')'));
}
d.appendChild(e);
}
e=document.createElement('div');
e.style.fontSize='10px';
if(lf_curh.subh[0].d.length > 32){
e.title=lf_curh.subh[0].d;
e.appendChild(document.createTextNode(lf_curh.subh[0].d.substr(0,30)+'..'));
}else{
e.appendChild(document.createTextNode(lf_curh.subh[0].d));
}
d.appendChild(e);
}
if(lf_settings[1]=='T'){
d.style.marginTop='12px';
}
lf_$('lf_mid').appendChild(d);
lf_dispTop(lf_settings[1]=='T');
if(typeof lf_$('lf_py')=='object' && lf_$('lf_py').style.display!='none'){
lf_$('lf_py').value='';
}
}
function lf_cheat(){
document.onkeypress=null;
lf_clearScreen(lf_$('lf_mid'));
var d=document.createElement('div');
d.style.textAlign='center';
d.appendChild(lf_curh.img);
d.style.marginTop='4px';
var e=document.createElement('div');
var s=document.createElement('span');
s.style.fontSize='16px';
s.innerHTML=getFullP(lf_curh.subh[0].p,lf_curh.subh[0].t);
e.appendChild(s);
if(lf_curh.subh.length>1){
e.appendChild(document.createTextNode('    ('));
for(var i=1;i<lf_curh.subh.length;i++){
s=document.createElement('span');
s.style.fontSize='10px';
s.innerHTML=getFullP(lf_curh.subh[i].p,lf_curh.subh[i].t);
e.appendChild(s);
if(i!=lf_curh.subh.length-1){
e.appendChild(document.createTextNode(', '));
}
}
e.appendChild(document.createTextNode(')'));
}
d.appendChild(e);
e=document.createElement('div');
e.style.fontSize='10px';
if(lf_curh.subh[0].d.length > 32){
e.title=lf_curh.subh[0].d;
e.appendChild(document.createTextNode(lf_curh.subh[0].d.substr(0,30)+'..'));
}else{
e.appendChild(document.createTextNode(lf_curh.subh[0].d));
}
d.appendChild(e);
lf_$('lf_mid').appendChild(d);
lf_$('lf_ok').value='Next';
lf_$('lf_ok').onclick = lf_leaveCheat;
lf_$('lf_py').style.display='none';
lf_$('lf_ok').focus();
lf_dispTop(false);
}
function lf_leaveCheat(){
lf_next();
lf_$('lf_ok').value='OK';
lf_$('lf_ok').onclick = lf_answ;
lf_$('lf_py').style.display='inline';
lf_$('lf_py').value='';
lf_$('lf_py').focus();
}
function lf_dispTop(cheat){
if(cheat){
lf_$('lf_top').innerHTML='<a href=\'javascript:lf_cheat()\' style=\'color:#000000\'>Cheat</a>';
}else{
lf_$('lf_top').innerHTML='&nbsp';
}
}
function lf_closeFB(){
document.onkeypress=null;
var fs = lf_$('lf_fbc');
fs.style.visibility='hidden';
while(fs.hasChildNodes()){
fs.removeChild(fs.firstChild);
}
if(typeof lf_$('lf_py')=='object'){
lf_$('lf_py').focus();
}
}
function lf_alert(message,fieldref){
var ale = lf_$('lf_alert');
lf_focus = fieldref;
ale.innerHTML='<table width=\'100%\' border=\'0\' cellspacing=\'2\' cellpadding=\'6\' style=\'text-align:center;\'><tr><td>'+message+'</td></tr><tr><td><input type=\'button\' name=\'aleb\' id=\'aleb\' value=\'OK\' onclick=\'lf_closeAle()\' /></td></tr></table>';
ale.style.visibility='visible';
}
function lf_closeAle(){
var ale= lf_$('lf_alert');
ale.style.visibility='hidden';
ale.innerHTML='';
if(lf_focus!='' && typeof document.getElementById(lf_focus)=='object'){
document.getElementById(lf_focus).focus();
}
}
function lf_dispA(res,subix){
document.onkeypress=null;
clearTimeout(lf_fbtmo);
var fs = lf_$('lf_fbc');
while(fs.hasChildNodes()){
fs.removeChild(fs.firstChild);
}
if(res){
fs.style.backgroundColor=lf_fbcBgRight;
lf_nr++;
}else{
fs.style.backgroundColor=lf_fbcBgWrong;
lf_nw++;
}
if(lf_settings[0]!=5){ 
if(res){
lf_$('lf_r').innerHTML=lf_nr;
}else{
lf_$('lf_w').innerHTML=lf_nw;
}
}
fs.innerHTML=lf_printFb(res,subix);
lf_$('lf_py').blur();
fs.style.visibility='visible';
lf_fbtmo = setTimeout(lf_setupFB,500);
}
function lf_setupFB(){
document.onkeypress=lf_closeFB;
lf_fbtmo = setTimeout(lf_closeFB,12000);
}
function lf_printFb(res,subix){
if(res){
var t='RIGHT';
}else{
var t='WRONG';
}
var s='<table width=\'100%\' style=\'text-align:center;\' border=\'0\' cellspacing=\'0\' cellpadding=\'1\'><tr><td style=\'font-weight:bold;\'>'+t+'</td><tr><td>&nbsp;</td></tr><tr><td ><img src=\''+lf_fbh.imgfb.src+'\' /></td></tr><tr><td><div><span style=\'font-size:16px\'>'+getFullP(lf_fbh.subh[subix].p,lf_fbh.subh[subix].t)+'</span>';
if(lf_fbh.subh.length>1){
s+='    (';
for(var i=0;i<lf_fbh.subh.length;i++){
if(i==subix){
continue;
}
s+='<span style=\'font-size:10px\'>'+getFullP(lf_fbh.subh[i].p,lf_fbh.subh[i].t)+'</span>';
if(i!=lf_fbh.subh.length-1){
s+=', ';
}
}
s+=')';
}
s+='</div><div style=\'font-size:10px;margin-top:5px;\' title=\''+lf_fbh.subh[subix].d+'\'>';
if(lf_fbh.subh[subix].d.length > 32){
s+=lf_fbh.subh[subix].d.substr(0,30)+'..';
}else{
s+=lf_fbh.subh[subix].d;
}
s+='</div></td></tr></table><div style=\'position:absolute;bottom:0px;left:20px;font-size:9px;\'>Click card or hit any key!</div>';
return s;
}
function lf_selOptTab(n){
lf_regOpt(lf_actOpttab);
lf_actOpttab=n;
if(n==1){
lf_$('lf_optTab1').style.borderBottom='';
lf_$('lf_optTab1').style.backgroundColor='#eeeeee';
lf_$('lf_optTab1').style.borderRight='2px solid #000000';
lf_$('lf_optTab2').style.borderBottom='1px solid #000000';
lf_$('lf_optTab2').style.backgroundColor='#bbbbbb';
lf_$('lf_optTab2').style.borderRight='1px solid #000000';
lf_$('lf_optTab3').style.borderBottom='1px solid #000000';
lf_$('lf_optTab3').style.backgroundColor='#bbbbbb';
lf_$('lf_optTab3').style.borderRight='1px solid #000000';
lf_$('lf_optcell').innerHTML=lf_getOptcont(1);
}else if(n==2){
lf_$('lf_optTab2').style.borderBottom='';
lf_$('lf_optTab2').style.backgroundColor='#eeeeee';
lf_$('lf_optTab2').style.borderRight='2px solid #000000';
lf_$('lf_optTab1').style.borderBottom='1px solid #000000';
lf_$('lf_optTab1').style.backgroundColor='#bbbbbb';
lf_$('lf_optTab1').style.borderRight='1px solid #000000';
lf_$('lf_optTab3').style.borderBottom='1px solid #000000';
lf_$('lf_optTab3').style.backgroundColor='#bbbbbb';
lf_$('lf_optTab3').style.borderRight='1px solid #000000';
lf_$('lf_optcell').innerHTML=lf_getOptcont(2);
}else{
lf_$('lf_optTab3').style.borderBottom='';
lf_$('lf_optTab3').style.backgroundColor='#eeeeee';
lf_$('lf_optTab3').style.borderRight='2px solid #000000';
lf_$('lf_optTab1').style.borderBottom='1px solid #000000';
lf_$('lf_optTab1').style.backgroundColor='#bbbbbb';
lf_$('lf_optTab1').style.borderRight='1px solid #000000';
lf_$('lf_optTab2').style.borderBottom='1px solid #000000';
lf_$('lf_optTab2').style.backgroundColor='#bbbbbb';
lf_$('lf_optTab2').style.borderRight='1px solid #000000';
lf_$('lf_optcell').innerHTML=lf_getOptcont(3);
}
}
function lf_dispOpt(){
document.onkeypress=null;
if(lf_isLgin){
lf_isLgin=false;
}
lf_startOk = false;
lf_actOpttab=1;
var opthtml = '<table width=\'100%\' border=\'0\' cellpadding=\'1\' cellspacing=\'0\' style=\'font-size:10px;text-align:left;background-color:#eeeeee;\'><tr><td id=\'lf_optTab1\' style=\'border-left:1px #000000 solid;border-top:1px #000000 solid;border-right:2px #000000 solid;text-align:center;cursor:pointer;padding:0px;\' onclick=\'lf_selOptTab(1)\'>Mode</td><td id=\'lf_optTab2\' onclick=\'lf_selOptTab(2)\' style=\'border-top:1px #000000 solid;border-bottom:1px #000000 solid;border-right:1px #000000 solid;text-align:center;background-color:#cccccc;cursor:pointer;padding:0px;\'>Level</td><td id=\'lf_optTab3\' onclick=\'lf_selOptTab(3)\' style=\'border-top:1px #000000 solid;border-bottom:1px #000000 solid;border-right:1px #000000 solid;text-align:center;background-color:#cccccc;cursor:pointer;padding:0px;\'>Advanced</td><td style=\'background-color:#ffffff; border-bottom:1px #000000 solid;\'>&nbsp;</td></tr><tr><td style=\'border-left:1px #000000 solid;border-right:1px #000000 solid;padding:4px;\' colspan=\'4\'><table width=\'100%\' cellpadding=\'2\' cellspacing=\'0\' style=\'border:1px solid #CCCCCC;\'><tr><td id=\'lf_optcell\' height=\'90\'>';
opthtml+=lf_getOptcont(1);
opthtml+='</td></tr></table></td></tr><tr><td style=\'border-left:1px #000000 solid;border-bottom:1px #000000 solid;border-right:1px #000000 solid;text-align:right;\' colspan=\'4\'><table width=\'100%\' border=\'0\' cellspacing=\'0\' cellpadding=\'0\'><tr><td width=\'45%\' style=\'text-align:right\'><input type=\'button\' value=\'OK\' onclick=\'lf_setOpt()\' style=\'font-family:Arial,Helvetica,sans-serif;font-size:10px; font-weight:bold;\' /></td><td>&nbsp;&nbsp;&nbsp;&nbsp;<input type=\'button\' value=\'Cancel\' onclick=\'lf_closeOpt()\' style=\'font-family:Arial,Helvetica,sans-serif;font-size:10px; font-weight:bold;\' />&nbsp;&nbsp;</td></tr></table></td></tr></table>';
lf_clearScreen(lf_$('lf_main'));
lf_$('lf_main').innerHTML=opthtml;
lf_isOpt=true;
lf_startOk = false;
lf_$('lf_strt').disabled=true;
}
function lf_getOptcont(tab){
var html;
if(tab==1){
html='<table width=\'100%\' border=\'0\' cellpadding=\'0\' cellspacing=\'0\'><tr><td><input name=\'lf_mode\' id=\'lf_modeT\' type=\'radio\' value=\'T\' '+(lf_settings[1]=='T'?'checked=\'checked\' ':'')+' onClick=\'lf_selMode("T")\'/>Test&nbsp;mode</td><td><input name=\'lf_ditm\' id=\'lf_ditm\' type=\'checkbox\' value=\'DITM\' '+(lf_settings[3]>1?'checked=\'checked\' ':'')+((lf_settings[3]==1||lf_settings[3]==3)?' disabled=\'disabled\' ':'')+'/>Show<br/>definition</td></tr><tr><td colspan=2><input name=\'lf_mode\' id=\'lf_modeL\' type=\'radio\' value=\'L\' '+(lf_settings[1]=='L'?'checked=\'checked\' ':'')+' onClick=\'lf_selMode("L")\'/>Learn&nbsp;mode</td></tr>';
if(lf_getCookieVal('autologin')=='1'){
html+='<tr><td colspan=2><input name=\'lf_autolin\' type=\'checkbox\' id=\'lf_autolin\' style=\'margin-top:8px;\' checked />Autologin</td></tr>';
}
html+='</table>';
}
else if(tab==2){
html='&nbsp;Level:<br />&nbsp;<select name=\'lf_level\' id=\'lf_level\' style=\'font-size:10px;\' onChange=\'lf_selLev(this)\''+((lf_settings[0]==5)?' disabled':'')+'>';
for(var i=0;i<lf_levopts.length;i++){
html+='<option value=\''+i+'\'';
if(i==lf_settings[0]){
html+=' selected';
}
html+='>'+lf_levopts[i]+'</option>';
}
html+='</select>';
}else{
html='&nbsp;Tone and pinyin mixup:<br />&nbsp;<select name=\'lf_mxopts\' id=\'lf_mxopts\' style=\'font-size:10px;margin-top:2px;\' onChange=\'lf_selMx(this)\'>';
for(var i=0;i<lf_mxopts.length;i+=2){
html+='<option value=\''+lf_mxopts[i]+'\'';
if(lf_mxopts[i]==lf_settings[2]){
html+=' selected';
}
if(lf_mxopts[i]=='I' || lf_mxopts[i]=='F' ){
html+=' style=\'color:#ffffff;background-color:#ff0000;border:1px solid #000000;\'';
}
html+='>'+lf_mxopts[i+1]+'</option>';
}
html+='</select>';
}
return html;
}
function lf_selMode(m){ 
if(m=='T'){ 
lf_$('lf_ditm').disabled=false;
}else{ 
lf_$('lf_ditm').disabled=true;
}
}
function lf_selLev(sel){ 
if(sel.options[sel.selectedIndex].value==5){
if(lf_sessid==''){
lf_alert('Level \'Personal\' is only available when you are logged in to Learnhanzi.com.\nFollow the link below to the right to log in, or register for a new account!','');
}else if(lf_settings[2]!=0){
lf_alert('Level \'Personal\' is not available for advanced settings \'Tone mixup\' or \'Pinyin mixup\'.','');
}
sel.selectedIndex = 2;
return;
}
if(lf_settings[2]==90){ 
if(sel.options[sel.selectedIndex].value == 0){
lf_alert('Level \'Just starting\' is not available for advanced settings \'Tone mixup\'.','');
sel.selectedIndex = 1;
}
}
else if(lf_settings[2]!=0 && sel.options[sel.selectedIndex].value < 3){ 
lf_alert('Level below \'Advanced\' is not available for advanced settings \'Pinyin mixup\'.','');
sel.selectedIndex = 3;
}
}
function lf_selMx(sel){ 
if(typeof sel.options[sel.selectedIndex].value == 'string' && (sel.options[sel.selectedIndex].value.charAt(0)=='I'||sel.options[sel.selectedIndex].value.charAt(0)=='F')){
sel.selectedIndex=0;
}
else{
if(sel.options[sel.selectedIndex].value == 90){
if(lf_settings[0]==0){
lf_alert('\'Tone mixup\' is not available for level \'Just starting\'.','');
sel.selectedIndex = 0;
}
}
else if(sel.options[sel.selectedIndex].value != 0 && lf_settings[0] < 3){
lf_alert('\'Pinyin mixup\' is not available for level lower than \'Advanced\'.\nSwitch to level \'Advanced\' or above.','');
sel.selectedIndex = 0;
}
}
}
function lf_regOpt(tab){ 
if(tab==1){ 
if(lf_$('lf_modeT').checked){
lf_settings[1]='T';
}else{
lf_settings[1]='L';
}
lf_setCookieVal('mode',lf_settings[1]);
if(lf_$('lf_ditm').checked){
if(lf_$('lf_ditm').disabled){
lf_settings[3]=3;
}else{
lf_settings[3]=2;
}
}else{
if(lf_$('lf_ditm').disabled){
lf_settings[3]=1;
}else{
lf_settings[3]=0;
}
}
lf_setCookieVal('ditm',lf_settings[3]);
if(lf_$('lf_autolin')!=null && !lf_$('lf_autolin').checked){
lf_setCookieVal('autologin','0');
lf_remCookieVal('un');
lf_remCookieVal('pw');
}
}
else if(tab==2){ 
lf_preflevel=lf_settings[0]=lf_$('lf_level').options[lf_$('lf_level').selectedIndex].value;
if(lf_settings[0]!=5){lf_setCookieVal('level',lf_settings[0]);}
}else{ 
lf_settings[2]=lf_$('lf_mxopts').options[lf_$('lf_mxopts').selectedIndex].value;
lf_setCookieVal('content',lf_settings[2]);
}
lf_setCookie();
}
function lf_setOpt(){ 
lf_regOpt(lf_actOpttab);
lf_resetLevel(lf_settings[0]);
lf_buf = new Array();
lf_curh = null;
lf_clcmd = 'clcb'; 
lf_dispMaintab();
var bs = lf_$('lf_strt');
var ok = lf_$('lf_ok');
if(lf_settings[1]=='T'){
ok.value='OK';
ok.onclick=lf_answ;
lf_$('lf_py').style.display='inline';
lf_$('lf_py').value='';
bs.value = 'Start';
bs.onclick = lf_start;
bs.disabled=false;
bs.style.visibility='visible';
lf_st = true;
lf_showHelplink('T');
}else{
ok.value='Next';
ok.onclick = lf_usernext;
lf_$('lf_py').style.display='none';
bs.disabled=true;
bs.style.visibility='hidden';
lf_showHelplink('L');
lf_st = false;
}
if(lf_settings[0]!=5){
lf_nr=0;
lf_nw=0;
lf_$('lf_r').innerHTML=lf_nr;
lf_$('lf_w').innerHTML=lf_nw;
lf_wbuff = new Array();
}
lf_isOpt=false;
}
function lf_closeOpt(){ 
lf_dispMaintab();
lf_$('lf_strt').disabled=false;
lf_isOpt=false;
}
function lf_dispLogin(){
document.onkeypress=null;
if(lf_isOpt){
lf_isOpt=false;
}
lf_actOpttab=1;
var html = '<form id=\'lf_loginform\' name=\'lf_loginform\' style=\'margin:0px;padding:0px;\' onsubmit=\'return lf_login(this)\'><table width=\'100%\' border=\'0\' cellpadding=\'1\' cellspacing=\'0\' style=\'font-size:10px;text-align:left;background-color:#eeeeee;\'><tr><td style=\'border:1px #000000 solid;padding:4px;vertical-align:top;\' height=\'135\' >Login to Learnhanzi.com and work on your personal level.<table width=\'100%\' cellpadding=\'2\' cellspacing=\'0\' style=\'border:1px solid #CCCCCC;margin-bottom:4px;\'><tr><td><table width=\'100%\' border=\'0\' cellspacing=\'0\' cellpadding=\'2\'><tr><td><label for=\'lf_usr\'>Username:</label></td><td><input style=\'font-family:Arial,Helvetica,sans-serif;font-size:10px;\' name=\'lf_usr\' type=\'text\' id=\'lf_usr\' size=\'10\' /></td></tr><tr><td><label for=\'lf_pwd\'>Password:</label></td><td><input style=\'font-family:Arial,Helvetica,sans-serif;font-size:10px;\' name=\'lf_pwd\' type=\'password\' id=\'lf_pwd\' size=\'10\' /></td></tr></table></td></tr></table><table width=\'100%\' border=\'0\' cellspacing=\'0\' cellpadding=\'3\'><tr><td width=\'45%\' style=\'text-align:right\'><input type=\'submit\' value=\'Login\' style=\'font-family:Arial,Helvetica,sans-serif;font-size:10px; font-weight:bold;\' /></td><td>&nbsp;&nbsp;&nbsp;<input type=\'button\' value=\'Cancel\' onclick=\'lf_closeLogin()\' style=\'font-family:Arial,Helvetica,sans-serif;font-size:10px; font-weight:bold;\' />&nbsp;&nbsp;</td></tr><tr><td style=\'padding:0px;vertical-align:bottom;\'><span style=\'float:left;\'>Auto-<br />login</span><input name=\'lf_autolin\' type=\'checkbox\' id=\'lf_autolin\' style=\'margin-top:8px;\' /></td><td style=\'padding:0px 8px;\'>&#8226;&nbsp;<a style=\'font-size:10px;color:#000;\' href=\'javascript:lf_reg()\'>New&nbsp;user</a><br />&#8226;&nbsp;<a style=\'font-size:10px;color:#000;\' href=\'javascript:lf_recov()\'>I can\'t login!</a></td></tr></table></td></tr></table></form>';
lf_clearScreen(lf_$('lf_main'));
lf_$('lf_main').innerHTML=html;
lf_isLgin=true;
lf_$('lf_strt').disabled=true;
lf_$('lf_usr').focus();
}
function lf_closeLogin(){ 
lf_dispMaintab();
lf_$('lf_strt').disabled=false;
lf_isLgin=false;
}
function lf_updateUserStatus(e0,e1,e2){
lf_evstat[0]=e0;
lf_evstat[1]=e1;
lf_evstat[2]=e2;
if(e0>0){
lf_$('lf_e0').innerHTML='<a style=\'text-decoration:none;color:#000;\' href=\'javascript:lf_showE(0)\'>'+e0+'</a>';
}else{
lf_$('lf_e0').innerHTML=e0;
}
if(e1>0){
lf_$('lf_e1').innerHTML='<a style=\'text-decoration:none;color:#000;\' href=\'javascript:lf_showE(1)\'>'+e1+'</a>';
}else{
lf_$('lf_e1').innerHTML=e1;
}
if(e2>0){
lf_$('lf_e2').innerHTML='<a style=\'text-decoration:none;color:#fff;\' href=\'javascript:lf_showE(2)\'>'+e2+'</a>';
}else{
lf_$('lf_e2').innerHTML=e2;
}
}
function lf_showE(n){
var f = document.lf_fbform;
var oldact = f.action;
f.action = 'http://'+lf_host+'/flashcards/feedback/showe.php?lf_sessid='+lf_sessid;
f.lf_e.value = n;
f.lf_allev.value = lf_evstat.toString();
f.submit();
f.action = oldact;
}
function lf_showMessage(mess,elemid){
lf_clearScreen(lf_$(elemid));
lf_$(elemid).innerHTML=mess;
lf_isOpt=false; 
lf_isLgin=false; 
}
function lf_showHelplink(mode){
var mess='<div style=\'font-size:10px;text-align:center;\'><a href=\'javascript:lf_show'+mode+'modeHelp()\' style=\'color:#000;\'>Help</a></div>';
lf_showMessage(mess,'lf_mid');
}
function lf_showLmodeHelp(){
var mess='<div style=\'text-align:left;font-size:10px;\'>Press \'Next\' to show a new character!<br /><br />Klick on Options to go to Test mode or change level.</div>';
lf_showMessage(mess,'lf_mid');
}
function lf_showTmodeHelp(){
var mess='<div style=\'text-align:left;font-size:10px;\'>Write the pinyin for every character in the textbox, with the tone as a number (0-4) at the end, and press \'OK\' or just hit Enter.<br />Example: ma3<br />Press \'Start\' to begin!<br /><br />Klick on Options to go to Learn mode or change level.</div>';
if(lf_$('lf_mid')!=null){
lf_showMessage(mess,'lf_mid');
}else{
lf_showMessage(mess,'lf_main');
}
}
function lf_dispW(){
var d=document.createElement('div');
d.style.textAlign='center';
d.style.marginTop='40px';
d.appendChild(document.createTextNode('Loading...'));
var i=document.createElement('span');
i.id='lf_wtld';
lf_clearScreen(lf_$('lf_mid'));
lf_$('lf_mid').appendChild(d);
d.appendChild(i);
}
function lf_dispErr(){
var d=document.createElement('div');
d.style.textAlign='center';
d.style.marginTop='40px';
d.appendChild(document.createTextNode('Error loading content'));
lf_clearScreen(lf_$('lf_mid'));
lf_$('lf_mid').appendChild(d);
}
function lf_clearScreen(td){
while(td.hasChildNodes()){
td.removeChild(td.firstChild);
}
}
function lf_keyA(event){
var ev = event||window.event;
if((typeof(ev.keyCode)=='number'&&ev.keyCode==13)||(typeof(ev.charCode)=='number'&&ev.charCode==13)) {
lf_answ();
}
}
function lf_ev(){
var f = document.lf_fbform;
if(lf_settings[0]==5 && lf_sessid!=''){ 
var oldact = f.action;
f.action = 'http://'+lf_host+'/flashcards/feedback/showe.php?lf_sessid='+lf_sessid;
if(lf_evstat[2] > 0){
f.lf_e.value=2;
}else if(lf_evstat[1] > 0){
f.lf_e.value=1;
}
f.lf_allev.value = lf_evstat.toString();
f.submit();
f.action = oldact;
}else{
lf_wbuff.push(lf_nr);
lf_wbuff.push(lf_nw);
f.lf_wh.value=lf_wbuff.join(',');
f.lf_lev.value=lf_settings[0];
f.submit();
}
}
function lf_startCond(){
if(!lf_startOk){
lf_startOk=true;
return;
}
lf_start();
}
function lf_start(){
lf_startOk=false;
if(typeof lf_$('lf_strt')=='object'){
lf_$('lf_strt').onclick = null;
}
lf_st = true;
lf_lt = 0;
lf_nr=0;
lf_nw=0;
if(!lf_$('lf_mid')){
lf_dispMaintab();
}
if(lf_settings[1]=='L'){
lf_$('lf_ok').value='Next';
lf_$('lf_ok').onclick = lf_usernext;
lf_$('lf_py').style.display='none';
lf_$('lf_strt').disabled=true;
lf_$('lf_strt').style.visibility='hidden';
lf_st = false;
}
lf_next();
}
function lf_startCustomized(args){
var r = lf_parseMess(args);
if(args['rm']=='L'){ 
lf_settings[1]='L';
}else{
lf_settings[1]='T';
}
lf_start();
}
function lf_prep(){
var bs = lf_$('lf_strt');
bs.value = 'Eval';
bs.onclick = lf_ev;
var py = lf_$('lf_py');
py.onkeydown = lf_keyA;
py.focus();
lf_st = false;
}
function lf_getmxstr(mxu){
for(var i=0;i<lf_mxopts.length;i+=2){
if(lf_mxopts[i]==mxu){
if(mxu==90){ 
return lf_mxopts[i+1];
}else{
return lf_mxopts[i+1]+' pinyin';
}
}
}
return '';
}
function lf_saveAnswer(){
if(lf_settings[3] > 1){ 
extypeid = 3;
}else{
extypeid = 2;
}
return lf_serverSend('saveans','h='+lf_curh.subh[lf_lstsix].i+'&u='+lf_curh.uniint+'&ldas='+lf_curh.ldas+'&ex='+extypeid+'&res='+lf_lstres+'&ans='+lf_lstans+'&si='+lf_sessid,false,1);
}
function lf_ldBuf(){
if(lf_ldng){
lf_lt++;
return;
}
lf_ldng = true;
lf_lt=0;
var js=document.createElement('script');
js.type='text/javascript';
js.id='lf_ldhjs';
js.src='http://'+lf_host+'/flashcards/lf_ldhjs.php?h='+location.href+'&lev='+lf_settings[0]+'&n='+lf_lsize;
if(lf_settings[0]==5 && lf_sessid!=''){ 
var lbuf=lf_buf.length;
if(lf_curh != null && typeof lf_curh == 'object'){
lbuf++;
}
js.src += '&si='+lf_sessid+'&rm='+lf_settings[1]+'&cb='+lbuf;
if(lf_clcmd!=''){
js.src += '&clcmd='+lf_clcmd;
lf_clcmd='';
}
}
if(lf_settings[2]!=0){ 
js.src += '&mxu='+lf_settings[2]+'&six='+lf_six+'&start='+lf_h0;
}
else if(lf_settings[0]!=5){ 
js.src += '&step='+lf_hs+'&start='+lf_h0;
}
var now = new Date();
js.src += '&t='+now.getTime();
if(lf_$('lf_ldhjs')){
document.getElementsByTagName('head')[0].removeChild(lf_$('lf_ldhjs'));
}
document.getElementsByTagName('head')[0].appendChild(js);
}
function lf_addH(uniint,cursix,ldas){
lf_buf.push(new Hanzi(uniint,cursix,ldas));
}
function lf_addS(hid,pin,tone,def,fr){
var sa=lf_buf[lf_buf.length-1].subh;
sa[sa.length]={'i':hid,'p':pin,'t':tone,'d':def,'f':fr};
}
function lf_mxCount(nmx){
lf_mxtotal = nmx;
}
function lf_afterLoadH(status){
lf_ldng = false;
lf_lt=0;
if(status=='1'){ 
lf_alert('Not authorized to load characters.','');
return;
}else if(status=='-1'){ 
lf_dispLogin();
return;
}else if(status!='0'){
lf_alert(status,'');
return;
}
if(lf_settings[2]!=0){ 
if(lf_h0 >= lf_mxtotal){ 
lf_h0 = lf_h0-lf_mxtotal+1;
}else{
lf_h0=lf_h0+(lf_lsize);
}
}else if(lf_settings[0]!=5){ 
if(lf_h0 >= lf_levtop[lf_settings[0]]){ 
lf_h0 = lf_h0-lf_levtop[lf_settings[0]]+1;
}else{
lf_h0=lf_h0+(lf_lsize*lf_hs);
}
lf_hs=Math.ceil(Math.random()*(lf_settings[0]+3))+(lf_settings[0]*2);
}
}
function lf_serverSend(type,mess,async,cls){
if(lf_mess[cls][0].length >= lf_mess[cls][1]){
return -1; 
}
var js=document.createElement('script');
var query;
js.type='text/javascript';
if(async){ 
js.id='lf_messjs_async';
query = 'type='+type+'&'+mess;
if(lf_$('lf_messjs')){
document.getElementsByTagName('head')[0].removeChild(lf_$('lf_messjs'));
}
}else{
js.id='lf_messjs_'+lf_messid;
query = 'type='+type+'&id='+lf_messid+'&class='+cls+'&'+mess;
}
js.src='http://'+lf_host+'/flashcards/lf_messjs.php?'+query;
if(!async){
var m = new ServerMessage(lf_messid);
if(cls==0){
m.timeout=setTimeout(lf_answTO_0,lf_mess[cls][2]);
}else{
m.timeout=setTimeout(lf_answTO_1,lf_mess[cls][2]);
}
lf_mess[cls][0].push(m);
lf_messid ++;
}
document.getElementsByTagName('head')[0].appendChild(js);
return 0; 
}
function lf_answTO_0(){
lf_answTO(0);
}
function lf_answTO_1(){
lf_answTO(1);
}
function lf_answTO(cls){
var m = lf_mess[cls][0].shift();
clearTimeout(m.timeout);
if(lf_$('lf_messjs_'+m.id)){
document.getElementsByTagName('head')[0].removeChild(lf_$('lf_messjs_'+m.id));
}
if(cls==1){ 
lf_showMessage('<span style=\'text-align:center;\'>Your answer could not be saved because of problem contacting the server.<br><br><input type=\'button\' value=\'Continue\' onClick=\'lf_dispMaintab()\'></span>','lf_main');
}else if(cls==0){ 
lf_showMessage('Error contacting server.','lf_main');
}
}
function lf_removeMess(cls,id){
for(var i=0;i<lf_mess[cls][0].length;i++){
if(lf_mess[cls][0][i].id==id){
var ma = lf_mess[cls][0].splice(i,1);
clearTimeout(ma[0].timeout);
if(lf_$('lf_messjs_'+ma[0].id)){
document.getElementsByTagName('head')[0].removeChild(lf_$('lf_messjs_'+ma[0].id));
}
return true;
}
}
return false;
}
function lf_debugMessage(mess){
lf_alert(mess,'');
}
function lf_serverResponse(resp,messid,cls){
if(!lf_removeMess(cls,messid)){
return; 
}
var r = lf_parseMess(resp);
if(typeof r['type'] != 'string'){
return;
}
if(r['type'] == 'login'){
if(r['status'] == 'error' || r['status'] == 'fail'){
lf_setCookieVal('autologin','0');
lf_remCookieVal('un');
lf_remCookieVal('pw');
if(r['status'] == 'error'){
lf_showMessage('<br /><div style=\'text-align:center;font-size:12px;color:#f00;\'>Login error:<br />'+r['message']+'</div>','lf_main');
}else{ 
lf_sessid = '';
lf_showMessage('<br /><div style=\'text-align:center;font-size:12px;color:#f00;\'>Wrong username or password.<br /><br /><a style=\'color:#f00;\' href=\'javascript:lf_dispLogin()\'>Please try again!</a></div>','lf_main');
}
}else if(r['status'] == 'ok' && r['sessid']!=''){
lf_buf = new Array();
lf_curh = null;
lf_nr = 0;
lf_nw = 0;
lf_wbuff = new Array();
lf_clcmd = 'clcb';
lf_sessid = r['sessid'];
lf_$('lf_lgio').innerHTML='<a class=\'lf_smalltxt\' href=\'javascript:lf_logout()\'>Log out</a>';
lf_$('lf_flash').innerHTML='<img src=\''+lf_imgdir+'/icon/flash10.png\' title=\'You are logged in\' />&nbsp;';
lf_settings[0] = 5; 
lf_showMessage('<br /><div style=\'text-align:center;font-size:12px;\'>You are now online!</div>','lf_main');
lf_dispStat();
lf_updateUserStatus(r['e0'],r['e1'],r['e2']);
lf_$('lf_strt').value = 'Start';
lf_$('lf_strt').onclick = lf_start;
lf_$('lf_strt').disabled=false;
lf_$('lf_strt').style.visibility='visible';
lf_st = true;
lf_startOk = true;
setTimeout(lf_startCond,3500);
lf_isLgin=false;
}
}
else if(r['type'] == 'logout'){
lf_sessid='';
if(lf_preflevel!=-1 & lf_preflevel!=5){
lf_settings[0]=lf_preflevel;
}else{
lf_settings[0] = lf_deflevel;
}
lf_buf = new Array();
lf_curh = null;
lf_dispMaintab();
if(lf_settings[1]=='T'){
lf_$('lf_strt').value = 'Start';
lf_$('lf_strt').onclick = lf_start;
lf_$('lf_strt').disabled=false;
lf_$('lf_strt').style.visibility='visible';
lf_st = true;
lf_showHelplink('T');
}
lf_$('lf_lgio').innerHTML='<a class=\'lf_smalltxt\' href=\'javascript:lf_dispLogin()\'>Log in</a>';
lf_$('lf_flash').innerHTML='&nbsp;';
lf_nr = 0;
lf_nw = 0;
lf_wbuff = new Array();
lf_dispStat();
lf_$('lf_r').innerHTML=lf_nr;
lf_$('lf_w').innerHTML=lf_nw;
}
else if(r['type'] == 'saveans'){
if(r['status']!='ok'){
lf_showMessage('<span style=\'text-align:center;\'>Your answer could not be saved because of problem contacting the server.<br>('+r['status']+':'+r['message']+')<br><input type=\'button\' value=\'Continue\' onClick=\'lf_dispMaintab()\'></span>','lf_main');
}else{
lf_updateUserStatus(r['e0'],r['e1'],r['e2']);
}
}
}
function lf_parseMess(mess){
var tmp = mess.split(lf_ms);
var a = new Array();
for(var i=0;i<tmp.length;i+=2){
a[tmp[i]]=tmp[i+1];
}
return a;
}
function lf_login(form){
if(!lf_validateString(form.lf_usr.value,4,20,'username','lf_usr',true)){
return false;
}
if(!lf_validateString(form.lf_pwd.value,6,20,'password','lf_pwd',true)){
return false;
}
lf_doLogin(form.lf_usr.value,form.lf_pwd.value);
if(!form.lf_autolin.checked){
lf_setCookieVal('autologin','0');
lf_remCookieVal('un');
lf_remCookieVal('pw');
}else{
lf_setCookieVal('autologin','1');
lf_setCookieVal('un',form.lf_usr.value);
lf_setCookieVal('pw',form.lf_pwd.value);
}
lf_setCookie();
return false;
}
function lf_validateString(string,minlen,maxlen,type,lffocus,lfalert){
var not = new Array('?','=','&',';',':','¤','#','%','!','+');
if(string.length < minlen || string.length > maxlen){
if(lfalert){
lf_alert('Your '+type+' must be at least '+minlen+' characters and not more than '+maxlen+' characters.',lffocus);
}
return false;
}
for(var i=0;i<not.length;i++){
if(string.indexOf(not[i])!=-1){
if(lfalert){
lf_alert('Your '+type+' can not contain \''+not[i]+'\'.',lffocus);
}
return false;
}
}
return true;
}
function lf_doLogin(username,password){
lf_serverSend('login','username='+username+'&password='+password,false,0);
lf_showMessage('<div style=\'text-align:center;\'>Logging in ...</div>','lf_main');
}
function lf_logout(){
lf_startOk = false;
lf_serverSend('logout','si='+lf_sessid,false,0);
}
function lf_reg(){
var f = document.lf_fbform;
var oldact = f.action;
f.action = 'http://'+lf_host+'/register';
f.submit();
f.action = oldact;
}
function lf_recov(){
var f = document.lf_fbform;
var oldact = f.action;
f.action = 'http://'+lf_host+'/register/pwrecov.php';
f.submit();
f.action = oldact;
}
function lf_setCookie(){
if(lf_cookie.length > 0){
var exp=new Date();
var nexp = exp.getTime()+(365*24*60*60*1000);
exp.setTime(nexp);
var cstr = 'lf_cookie='+lf_cookie.join('¤')+';expires='+exp.toGMTString();
document.cookie = cstr;
}
}
function lf_setCookieVal(name,val){
for(i=0;i<lf_cookie.length;i++){
if(lf_cookie[i].indexOf(name)==0){
lf_cookie[i]=name+'#'+val;
return;
}
}
lf_cookie[i]=name+'#'+val;
}
function lf_getCookieVal(name){
for(i=0;i<lf_cookie.length;i++){
if(lf_cookie[i].indexOf(name)==0){
return lf_cookie[i].substr(name.length+1);
}
}
return '';
}
function lf_remCookieVal(name){
for(i=0;i<lf_cookie.length;i++){
if(lf_cookie[i].indexOf(name)==0){
lf_cookie.splice(i,1);
return;
}
}
}
function ServerMessage(id){
this.id=id; 
this.timeout=null; 
}
function Hanzi(uniint,cursix,ldas){
this.uniint=uniint;
this.ldas=ldas;
this.subh=new Array();
this.img = document.createElement('img');
this.img.src=lf_imgdir+'/72/'+uniint+'.gif';
this.cursix=cursix;
this.img.style.border='0';
this.imgfb = document.createElement('img');
this.imgfb.src=lf_imgdir+'/60/'+uniint+'.gif';
this.imgfb.style.border='0';
}
function getFullP(p,t){
fp='';
wt='';
if(p==''){
return '&nbsp;';
}
if(t==0){
fp = p;
}else if(p=='ng'){
if(t==2) wt+='&#225;';
else if(t==3) wt+='&#259;';
else if(t==4) wt+='&#224;';
}else if(p.indexOf('a')!=-1){
if(t==1) wt+='&#257;';
else if(t==2) wt+='&#225;';
else if(t==3) wt+='&#259;';
else if(t==4) wt+='&#224;';
fp = p.substr(0,p.indexOf('a'))+wt+p.substr(p.indexOf('a')+1);
}else if(p.indexOf('e')!=-1){
if(t==1) wt+='&#275;';
else if(t==2) wt+='&#233;';
else if(t==3) wt+='&#277;';
else if(t==4) wt+='&#232;';
fp = p.substr(0,p.indexOf('e'))+wt+p.substr(p.indexOf('e')+1);
}else if(p.indexOf('o')!=-1){
if(t==1) wt+='&#333;';
else if(t==2) wt+='&#243;';
else if(t==3) wt+='&#335;';
else if(t==4) wt+='&#242;';
fp = p.substr(0,p.indexOf('o'))+wt+p.substr(p.indexOf('o')+1);
}
else if(p.indexOf('ui')!=-1){
if(t==1) wt+='&#299;';
else if(t==2) wt+='&#237;';
else if(t==3) wt+='&#301;';
else if(t==4) wt+='&#236;';
fp = p.substr(0,p.indexOf('i'))+wt+p.substr(p.indexOf('i')+1);
}else if(p.indexOf('u')!=-1){
if(t==1) wt+='&#363;';
else if(t==2) wt+='&#250;';
else if(t==3) wt+='&#365;';
else if(t==4) wt+='&#249;';
fp = p.substr(0,p.indexOf('u'))+wt+p.substr(p.indexOf('u')+1);
}else if(p.indexOf('ü')!=-1){
if(t==1) wt+='&#470;';
else if(t==2) wt+='&#472;';
else if(t==3) wt+='&#474;';
else if(t==4) wt+='&#476;';
fp = p.substr(0,p.indexOf('ü'))+wt+p.substr(p.indexOf('ü')+1);
}else if(p.indexOf('i')!=-1){
if(t==1) wt+='&#299;';
else if(t==2) wt+='&#237;';
else if(t==3) wt+='&#301;';
else if(t==4) wt+='&#236;';
fp = p.substr(0,p.indexOf('i'))+wt+p.substr(p.indexOf('i')+1);
}else{
fp = p+t;
}
return fp;
}
lf_init();