 function b_0() {
 var k_6__=false; if(typeof ActiveXObject !='undefined') {
 try {
 k_6__=new ActiveXObject("Msxml2.XMLHTTP"); }
 catch (e) {
 try {
 k_6__=new ActiveXObject("Microsoft.XMLHTTP"); }
 catch (e2) {}
 }
 }
 else {
 if (XMLHttpRequest) {
 try {
 k_6__=new XMLHttpRequest();
 }
 catch (e) {}
 }
 }
 return k_6__; }
 function ydp_() {
 this.action=''; this.prev_value=0; this.row=0; this.col=0;
 }
 function dxerx()
 {
 this.p=''; this.nrc=0; this.cs=new Array(); this.sld=false;
 }
 dxerx.prototype.x_37i=function(i_) {
 this.cs[this.nrc]=i_; this.nrc++; }
 dxerx.prototype.a5=function(vha) {
 this.p=vha; }
 dxerx.prototype.a7_7_=function(nep) {
 this.rt=nep; }
 function p8_(r6d,d01w5,xc) {
 this.nep=r6d; this.nc=d01w5; this.wpb=xc; this.ud=new Array(this.nep); for(var i=0; i < this.nep; i++) this.ud[i]=new Array(this.nc); this.vs=new Array(this.nep); this.cb=0; for(var i=0; i < this.nep; i++) {
 for(var j=0; j < this.nc; j++) {
 if (this.wpb) this.ud[i][j]=(j==0); else this.ud[i][j]=(i==j);
 }
 if (this.wpb) this.vs[i]=0; else this.vs[i]=i; }
 this.ft=1; }
 p8_.prototype.c_bl_=function() {
 var wi=1; var v_; var gs_=this.nc;
 for(var i=0; i < this.nep; i++) {
 v_=wi; wi *=gs_; if (wi < v_) console.log("permutation variable overflow"); if (this.wpb==0) gs_--; }
 if (this.cb) {
 var ie_7v=this.nep; var vboe=1; for(var i=2; i <=ie_7v; i++) vboe *=i; wi /=vboe; }
 return wi; }
 p8_.prototype.ew__j=function() {
 if (this.ft) {
 this.ft=0; return 1; }
 var j_c; var cj=this.nep - 1; do {
 j_c=1;
 this.vs[cj]=(this.vs[cj] + 1) % this.nc; if (this.ud[cj][this.vs[cj]]) {
 for(var i=0; i < this.nc; i++) this.ud[cj][i]=0; cj--; if (cj < 0) return 0; j_c=0; }
 else {
 if (!this.wpb) {
 for(var i=0; i < cj; i++) {
 if (this.vs[i]==this.vs[cj]) {
 j_c=0; break; }
 }
 }
 if (j_c) {
 this.ud[cj][this.vs[cj]]=1; if (cj < (this.nep - 1)) {
 cj++; j_c=0; }
 }
 }
 if (this.cb) {
 for(var i=0; (i < (this.nep - 1)) && j_c; i++) {
 if (this.vs[i + 1] < this.vs[i]) j_c=0; }
 }
 } while(!j_c); return 1; }
 var jc=1; var c__q=new Array(2); var q_=-1; var ori=new Array(2); var ifw2k=new Array(2); for(var i=0; i < 2; i++) {
 c__q[i]=new Array();
 ifw2k[i]=new Array(); }
 var ks=0; function se(ev__) {
 ks=ev__; q_=-1;
 ori[ev__]=0; }
 function deqrx() {
 q_++; ori[ks]++;
 c__q[ks][q_]=new dxerx(); c__q[ks][q_].sld=false; }
 function x_(oyh_s) {
 c__q[ks][q_].x_37i(oyh_s); ifw2k[ks][oyh_s]=q_;
 }
 function smagt(ti) {
 c__q[ks][q_].a5(ti); }
 function in2l_(x3ox_)
 {
 c__q[ks][q_].a7_7_(x3ox_); }
 var ezw1=100; function bv(vo2i)
 {
 ezw1=vo2i; }
 var i_lp_; var v8; var y8_; var faj=0; var j4vwf=0; function fz(z_) {
 for(var i=0; i < jc; i++) {
 var vr="p" + i + "r" + faj + "c" + j4vwf; if (z_) document.getElementById(vr).style.background="#ffbb4d"; else document.getElementById(vr).style.background="#ffffff"; }
 }
 function rr4gd(d_k,kyl,lf) {
 window.open(d_k,"solved",
 "toolbar=no,location=no,status=no,menubar=no," +
 "scrollbars=yes,resizable=yes,width=" + kyl + ",height=" + lf);
 }
 function zukql()
 {
 for(var k=0; k < jc; k++) {
 for(var i=0; i < y8_; i++) {
 for(var j=0; j < y8_; j++) {
 var l8x="p" + k + "r" + i + "c" + j; document.getElementById(l8x).style.background="#75ee3b"; }
 }
 }
 }
 var xm=false;
 function csw0001() {
 document.getElementById('solved').style.visibility="hidden"; xm=false; }
 var mc=false;
 var c__j='';
 function jjto7() {
 if (mc) return; mc=true;
 xm=true; var z9z_x=new Date(); var xv=z9z_x.getTime() / 1000; var vo=z9z_x.getTimezoneOffset(); var o_a=''; for(var i=0; i < y8_; i++) {
 for(var j=0; j < y8_; j++) {
 o_a +=v8[i][j]; }
 }
 var a9__=document.getElementById("ip").innerHTML; var tk3=document.getElementById("proxy").innerHTML; c__j=o_a + "," + xv + "," + vo + "," + a9__ + "," + tk3; var by6_=MD5(c__j); c__j +="," + by6_; document.getElementById('solved').style.visibility="visible"; var c124_=b_0();
 if (c124_) {
 var xlxy=escape(document.getElementById("lang").value); var y_=escape(document.getElementById("level").value); var tztj=escape(document.getElementById("date").value);
 var je_1w=escape(document.getElementById("today").value); var wrl=escape(document.getElementById("puzzle_id0").value); var l_3=''; if (jc==2) l_3=escape(document.getElementById("puzzle_id1").value); var vpna=escape(navigator.userAgent); var a_x9h=escape(navigator.appVersion); var h_fay=escape(navigator.platform); var ygy_t="http:/" + "/www.patrickmin.com/calcudoku/solved.php"; var t__="key=" + c__j + "&lang=" + xlxy; t__ +="&dim=" + y8_ + "&level=" + y_ + "&date=" + tztj + "&today=" + je_1w;
 t__ +="&ua=" + vpna + "&uv=" + a_x9h + "&os=" + h_fay +
 "&puzzle_id0=" + wrl + "&puzzle_id1=" + l_3 + "&nr_puzzles=" + jc; var r_=new Date();
 var vq8g6=(r_.getYear() + 1900) + "-" + (r_.getMonth() + 1) + "-" + r_.getDate() + " "
 + r_.getHours() + ":" + r_.getMinutes() + ":" + r_.getSeconds(); t__ +="&jstime=" + vq8g6; c124_.open("POST",ygy_t,true);
 c124_.setRequestHeader("Content-type","application/x-www-form-urlencoded"); c124_.setRequestHeader("Content-length",t__.length); c124_.onreadystatechange=function() {
 if((c124_.readyState==4) && (c124_.status==200)) {
 var mlq7u=c124_.responseText.split("#");
 document.getElementById('solved').innerHTML=mlq7u[2] +
 "<center><input id='ok_button' type=button value=' Ok ' onclick='csw0001();'></center>";
 if ((mlq7u[0]==0) && (mlq7u[1]==0)) mc=false;
 var u2j=document.getElementById('nr_points'); if (u2j) {
 u2j.innerHTML=mlq7u[1];
 }
 document.getElementById('ok_button').focus(); }
 }
 c124_.send(t__);
 }
 }
 var jjaoq=new Array(); var q_h=0; function h_o6(oh) {
 var hdd=new ydp_();
 if (oh=='') hdd.action='D';
 else hdd.action='I'; hdd.prev_value=v8[faj][j4vwf]; hdd.row=faj; hdd.col=j4vwf; jjaoq[q_h]=hdd;
 q_h++; v8[faj][j4vwf]=oh; for(var i=0; i < jc; i++) {
 var d_l04="p" + i + "r" + faj + "c" + j4vwf; var iz=x3ox_[i][faj][j4vwf] + "<br><center>" + v8[faj][j4vwf] + "</center>"; document.getElementById(d_l04).innerHTML=x3ox_[i][faj][j4vwf] + "<br><center>" + v8[faj][j4vwf] + "</center>"; }
 }
 function j_()
 {
 var u__c=1;
 var cqm=v8[faj][j4vwf]; if (cqm !='') u__c=cqm + 1;
 var mp_a=y8_ - (1 - ezw1); if (u__c > mp_a) u__c=mp_a; h_o6(u__c);
 }
 function ac_v() {
 if (q_h==0) return; var vpgri=jjaoq[q_h - 1]; fz(false); faj=vpgri.row;
 j4vwf=vpgri.col;
 v8[faj][j4vwf]=vpgri.prev_value; for(var i=0; i < jc; i++) {
 var iq15_="p" + i + "r" + faj + "c" + j4vwf; document.getElementById(iq15_).innerHTML=x3ox_[i][faj][j4vwf] + "<br><center>" + v8[faj][j4vwf] + "</center>"; }
 fz(true);
 q_h--; }
 var h_=true;
 function w_7q(qe,e_u,u4w) {
 for(var i=0; i < jc; i++) {
 var w9_="p" + i + "r" + qe + "c" + e_u; if (u4w && h_) document.getElementById(w9_).style.color="#ff0000";
 else
 document.getElementById(w9_).style.color="#000000"; }
 }
 function tv_o(o_xb,b_7c,cbfx_) {
 var s__=Math.floor(b_7c / y8_); var vcg=b_7c % y8_; var g3t_m="result_p" + o_xb + "r" + s__ + "c" + vcg; if (cbfx_ & h_) {
 document.getElementById(g3t_m).style.color="#ff0000";
 }
 else {
 document.getElementById(g3t_m).style.color="#000000";
 }
 }
 function mm_ux() {
 h_=document.getElementById('checking').checked; document.getElementById('check_button').disabled=h_;
 document.getElementById('checking').blur(); }
 var x1hu; var u__w=0; function w_() {
 var sye0_=new Date(); var gyle_=23 - sye0_.getHours(); var g_n=60 - sye0_.getMinutes(); gyle_ -=u__w; if (gyle_ < 0) {
 gyle_=0;
 g_n=0; }
 document.getElementById('hours').innerHTML=gyle_; document.getElementById('minutes').innerHTML=g_n;
 }
 function n_() {
 jc=document.getElementById('nr_puzz').value; y8_=document.getElementById("dim").value; v8=new Array(y8_); for(var i=0; i < y8_; i++) {
 v8[i]=new Array(y8_); }
 fz(true); x3ox_=new Array(jc); for(var i=0; i < jc; i++) {
 x3ox_[i]=new Array(y8_); for(var j=0; j < y8_; j++) {
 x3ox_[i][j]=new Array(y8_); for(var k=0; k < y8_; k++) {
 v8[j][k]=''; var xjqmx="p" + i + "r" + j + "c" + k; x3ox_[i][j][k]=document.getElementById(xjqmx).innerHTML;
 }
 }
 }
 var xa2=document.getElementById('server_hour').value; var eh_=new Date(); var xe__=eh_.getHours(); u__w=xa2 - xe__; w_(); x1hu=setInterval('w_();',30000); }
 function h5dy(y831j) {
 var j__p_=Math.floor(y831j / y8_); var l3=y831j % y8_;
 return v8[j__p_][l3]; }
 function f4(q6qd,dp7) {
 var h4_=true; var y_d7m=c__q[q6qd][dp7]; var m7ny=y_d7m.nrc; var y_d7_=y_d7m.cs[0]; var kg8=Math.floor(y_d7_ / y8_); var q_jf=y_d7_ % y8_; var fs__t=true; for(var j=0; j < m7ny; j++) {
 var t_9g=y_d7m.cs[j];
 var gjag='s' + h5dy(t_9g);
 if (gjag=='s') fs__t=false; }
 tv_o(q6qd,y_d7m.cs[0],false);
 if (fs__t) {
 var gexy=y_d7m.p; var yuqr=y_d7m.rt; if ((gexy=='+') || (gexy=='*')) {
 var rg_=0; if (gexy=='*') rg_=1; for(var j=0; j < m7ny; j++) {
 var vz72_=y_d7m.cs[j]; if (gexy=='+') rg_ +=h5dy(vz72_);
 else rg_ *=h5dy(vz72_); }
 tv_o(q6qd,y_d7m.cs[0],(rg_ !=yuqr));
 if (rg_==yuqr) h4_=false; }
 else if (gexy=='%') {
 var w_bt6=h5dy(y_d7m.cs[0]); var ya_2g=h5dy(y_d7m.cs[1]); if (((w_bt6 % ya_2g)==yuqr) ||
 ((ya_2g % w_bt6)==yuqr)) {
 h4_=false; }
 else
 tv_o(q6qd,y_d7m.cs[0],true);
 }
 else if ((gexy=='-') || (gexy=='/')) {
 var gyrf=new p8_(m7ny,m7ny,0); var f2=gyrf.c_bl_(); var m9zq9=0; for(var j=0; j < f2; j++) {
 if (gyrf.ew__j()) {
 var fwb=h5dy(y_d7m.cs[gyrf.vs[0]]); for(var k=1; k < m7ny; k++) {
 var bmz=h5dy(y_d7m.cs[gyrf.vs[k]]);
 if (gexy=='-') fwb -=bmz; else {
 if (bmz) fwb /=bmz; else {
 fwb=-1; k=m7ny;
 }
 }
 }
 if ((fwb >=0) && (Math.floor(fwb)==fwb)) {
 m9zq9=1; if (Math.floor(fwb)==yuqr) {
 c__q[q6qd][dp7].sld=true; return; }
 }
 }
 }
 tv_o(q6qd,y_d7m.cs[0],true); }
 }
 c__q[q6qd][dp7].sld=(fs__t && !h4_); }
 function z5e7()
 {
 var vlv1m=true; for(var i=0; (i < jc) && vlv1m; i++) {
 for(var j=0; (j < ori[i]) && vlv1m; j++) {
 if (!c__q[i][j].sld) vlv1m=false; }
 }
 return vlv1m; }
 function mxb() {
 var by6b=0; var b_8ze=false; for(var i=0; i < y8_; i++) {
 for(var j=0; j < y8_; j++) {
 w_7q(i,j,false); }
 for(var j=0; j < y8_; j++) {
 var e_='s' + v8[i][j]; if (e_ !='s') by6b++; for(var k=j+1; k < y8_; k++) {
 var za='s' + v8[i][k]; if ((e_ !='s') && (za !='s') && (e_==za)) {
 w_7q(i,j,true); w_7q(i,k,true);
 b_8ze=true;
 }
 }
 }
 }
 for(var i=0; i < y8_; i++) {
 for(var j=0; j < y8_; j++) {
 var ag='s' + v8[j][i]; for(var k=j+1; k < y8_; k++) {
 var gr2='s' + v8[k][i]; if ((ag !='s') && (gr2 !='s') && (ag==gr2)) {
 w_7q(j,i,true); w_7q(k,i,true); b_8ze=true; }
 }
 }
 }
 var e7_r=z5e7(); if (!b_8ze && (by6b==(y8_ * y8_)) && z5e7()) {
 zukql(); jjto7(); }
 }
 function r__8(qp__) {
 if (qp__) h_=true; for(var i=0; i < jc; i++) {
 for(var j=0; j < ori[i]; j++) f4(i,j); }
 mxb(); if (qp__) h_=false; document.getElementById('check_button').blur(); }
 var o5=false; function fl9h(hay)
 {
 if (xm) return; var ybuz=hay.keyCode;
 if (ybuz==18) {
 o5=true;
 return true;
 }
 if (o5) {
 o5=false; return true; }
 if ((ybuz >=37) && (ybuz <=40)) {
 fz(false); switch(ybuz) {
 case 37: {
 if (j4vwf > 0) j4vwf--;
 break;
 }
 case 39: {
 if (j4vwf < (y8_ - 1)) j4vwf++; break; }
 case 38: {
 if (faj > 0) faj--; break; }
 case 40: {
 if (faj < (y8_ - 1)) faj++; break; }
 }
 if ((ybuz==38) || (ybuz==40)) {
 var h____="p0r" + faj + "c" + j4vwf; var odq=document.getElementById(h____);
 var qh_=document.body.clientHeight; if ((odq.offsetTop + 440) > qh_) {
 window.scrollBy(0,75); }
 }
 fz(true);
 if (hay.preventDefault) hay.preventDefault(); else hay.returnValue=false; }
 else {
 var tjhs=48 + ezw1; var sz15g=tjhs + parseInt(y8_) - 1; if (y8_ >=10) {
 tjhs--;
 sz15g=tjhs + 9; }
 var g4__=false; if (((ybuz >=tjhs) && (ybuz <=sz15g)) ||
 ((ybuz >=(tjhs + 48) && (ybuz <=(sz15g + 48))))) {
 if (ybuz >=96) ybuz -=48; var r1_h5=v8[faj][j4vwf]; var p4g_6=ybuz - 48; if ((r1_h5==1) && (y8_ >=10) && (p4g_6 <=(y8_ - 10))) {
 p4g_6=10 + p4g_6;
 }
 if (p4g_6 >=ezw1) h_o6(p4g_6); if (hay.preventDefault) hay.preventDefault(); else hay.returnValue=false;
 g4__=true; }
 else if (ybuz==32) {
 h_o6(''); if (hay.preventDefault) hay.preventDefault(); else hay.returnValue=false; g4__=true;
 }
 else if (ybuz==8) {
 ac_v(); if (hay.preventDefault) hay.preventDefault(); else hay.returnValue=false; g4__=true; }
 if (g4__) {
 h_=document.getElementById('checking').checked; var ef=faj * y8_ + j4vwf; var e0k; for(var i=0; i < jc; i++) {
 var kf_c=ifw2k[i][ef]; e0k=f4(i,kf_c);
 }
 mxb(e0k); if (!h_) {
 for(var i=0; i < jc; i++) {
 for(var j=0; j < ori[i]; j++) tv_o(c__q[i][j].cs[0],false); }
 }
 }
 }
 }
 var cz_=false; function b9() {
 if (!cz_) {
 clearInterval(x1hu); var hl__=document.getElementById("page_title");
 var bn=document.getElementById("dim").value;
 if (bn==10) hl__.parentNode.removeChild(hl__); document.getElementById('back_from_print').style.display="inline"; var n_5b=document.getElementById("ad_cell"); n_5b.parentNode.removeChild(n_5b); var vz_p=document.getElementById('account_line'); vz_p.parentNode.removeChild(vz_p);
 var pt2d_=document.getElementById('languages'); pt2d_.parentNode.removeChild(pt2d_); var ae=document.getElementById('explanation');
 ae.parentNode.removeChild(ae);
 var e1e_1=document.getElementById('suggestions'); e1e_1.parentNode.removeChild(e1e_1); var be=document.getElementById("puzzle_info"); be.style.fontSize='small'; cz_=true; }
 fz(false); window.print(); }
