var jn='sudoku_difficulty';var rd='sudoku_solver_mode';var ro='sudoku_uid';function so(){var to;if(window.XMLHttpRequest){to=new XMLHttpRequest();}
else{try{to=new ActiveXObject("Msxml2.XMLHTTP");}
catch(e){to=new ActiveXObject("Microsoft.XMLHTTP");}
}
return to;}
function rk(nk,v){return nk.getElementsByTagName(v)[0].firstChild.nodeValue;}
function kn(nk){var id,jd;try{id=rk(nk,"grid");jd=rk(nk,"solution");hn=rk(nk,"tag");}
catch(un){alert('Error retrieving puzzle data from server.');id='    1     5 4 89  82  63 7       4 65       77 2       1 25  43  67 4 5     8    ';jd='349517682657428931821963574193875426564132897782649315918256743236794158475381269';hn=0;}
kg();td(id,jd,hn);}
function uo(to,ln){if(to.readyState==4){if(to.status==200){ln(to.responseXML);}
else{ln(null);}
}
}
function qj(name,$g,ln){$g.push(["action",name]);var vo=[];for(var a in $g){$g[a][0]=escape($g[a][0]);$g[a][1]=escape($g[a][1]);vo.push($g[a].join("="));}
var wo=vo.join("&");var to=so();if(ln!=null)to.onreadystatechange=function(){uo(to,ln)}
;to.open('GET','interact.fcgi?'+escape(wo),true);to.send('');}
function bn(kd){gh(jn,kd,300);}
function xo(s){var r=[];for(var i=0;i<s.length;i+=2){r.push([parseInt(s.charAt(i)),parseInt(s.charAt(i+1))]);}
return r;}
function yo(s){var zo=[];for(var i=0;i<s.length;i+=3){var r=parseInt(s.charAt(i));var c=parseInt(s.charAt(i+1));var pc=parseInt(s.charAt(i+2));zo.push([r,c,pc+1]);}
return zo;}
function $o(to,ln,_o){var fd=REQUEST_ERROR_CONTACTING_SERVER;if(to.readyState==4){try{if(to.status==200){var uc=to.responseXML.firstChild;var ij=uc.getAttribute('hl');var jj=uc.getAttribute('ll');var kj=uc.getAttribute('colors');var n=uc.getAttribute('n');var mj=uc.getAttribute('act');var nj=uc.getAttribute('kind');var lj=uc.firstChild.nodeValue;ul=to;if(ln)ln(xo(ij),xo(jj),yo(kj),parseInt(n),lj,mj,parseInt(nj));fd=REQUEST_SUCCESS;}
}
catch(e){fd=REQUEST_ERROR_AT_SERVER;}
if(fd!=REQUEST_SUCCESS&&_o){_o(fd);}
}
}
function yl(mn,ln,_o){if(ul!=null){$o(ul,ln,_o);return;}
var to=so();to.onreadystatechange=function(){$o(to,ln,_o);}
;to.open('GET','pboard.cgi?puzzle='+escape(mn),true);to.send('');}
function ap(to,ln){if(to.readyState==4){try{if(to.status==200){var uc=to.responseXML.firstChild;if(uc.nodeName=='nosolution'){ln(true,false,false,null,null,null);}
else if(uc.nodeName=='puzzle'){var id=rk(uc,"grid");var jd=rk(uc,"solution");var kd=rk(uc,"difficulty");var hd=parseInt(rk(uc,"hashints"));ln(true,true,hd,id,jd,kd);}
else{ln(false,false,false,null,null,null);}
}
else{ln(false,false,false,null,null,null);}
}
catch(e){ln(false,false,false,null,null,null);}
}
}
function wd(mn,ln){var to=so();to.onreadystatechange=function(){ap(to,ln);}
;to.open('GET','pboard.cgi?custom_puzzle='+escape(mn),true);to.send('');}
function xi(mn){ej='print.cgi?pagesize=letter&puzzle='+escape(mn);window.open(ej,'_blank');}
function gh(name,ch,bp){if(bp){var date=new Date();date.setTime(date.getTime()+(bp*24*60*60*1000));var cp="; expires="+date.toGMTString();}
else{var cp="";}
document.cookie=name+"="+ch+cp+"; path=/";}
function qd(name){var dp=name+"=";var ep=document.cookie.split(';');for(var i=0;i<ep.length;i++){var c=ep[i];while(c.charAt(0)==' '){c=c.substring(1,c.length);}
if(c.indexOf(dp)==0){return c.substring(dp.length,c.length);}
}
return null;}
function kh(name){gh(name,"",-1);}
function _j(){var fp=qd(ro);if(fp==null){fp=Math.random().toString().substring(2);gh(ro,fp,300);}
return fp;}
