function Tapa(){var a=this;a.constructor();a.uis.puzzle=["Tapa"];var k=a.board.c,n=0,p=0,t=nil;a.cell.keys=["a",0,"s",1,"d",nil,"x",0,"c",1,"v",nil,",",0,".",1,"-",nil];a.cell.values=[0,1,t];a.enable.dragging=!0;a.keypad.left=nil;a.cell.nilalias=1;a.uic.arrowedge="#aaaaaa";a.uic.arrowfill="#dddddd";a.init=function(){Object.getPrototypeOf(a).init.call(a)};a.reset2=function(){try{n=a.size.x;p=a.size.y;if(a.level.problem){var b=0;var c=a.level.problem.replace(/\s+/g," ").trim().split(" ");for(var d=
0;d
").replace(/</gi,"<").trim().split(" "),d=0;dd;d++){var l=b+f[d],r=c+m[d];g[d]=0<=l&&ld;d++)g[d]&&b++;if(0==b)0!=e.label&&(e.error=2);else if(8==b)8!=e.label&&(e.error=2);else{c=0;for(d=1;16>d;d++)if(g[d]&&!g[d-1]){c=d;break}1==b&&g[0]&&(c=0);for(d=0;8>d;d++)g[d]=g[c+d];g[8]=!1;b=[];var h=e.label;b[0]=h%10;h=Math.floor(h/10);
b[1]=h%10;h=Math.floor(h/10);b[2]=h%10;h=Math.floor(h/10);b[3]=h;for(h=0;8>h;){for(c=0;g[h];)c++,h++;for(d=d=0;4>d;d++)if(b[d]==c){b[d]=0;break}if(4==d)for(d=d=0;4>d;d++)if(9==b[d]){b[d]=0;break}4==d&&(e.error=2);for(;!g[h]&&8>h;)h++}for(d=0;4>d;d++)0!=b[d]&&(e.error=2)}}catch(q){throw a.exception(q),q;}};a.cleanSolution=function(){for(var a=0;ab.label)a.paintText(9==e?"?":parseInt(e).toString(),b,{color:c.fillStyle});else{c.textAlign="center";c.textBaseline="middle";c.font="bold "+Math.floor(45*a.unit.x/100).toString()+"px sans-serif";var g=b.px,l=b.py+2,k=a.unit.x/4,h=a.unit.x/4;100>b.label?(c.fillText(9==f?"?":f.toString(),g+k,l+h),c.fillText(9==e?"?":e.toString(),g+a.unit.x-k,l+a.unit.x-h),a.drawSeperators&&c.drawLine(g,l+cellSize-gridWidth,g+cellSize-gridWidth,
l)):1E3>b.label?(c.fillText(9==m?"?":m.toString(),g+k,l+h),c.fillText(9==f?"?":f.toString(),g+a.unit.x-k,l+h),c.fillText(9==e?"?":e.toString(),g+a.unit.x/2,l+a.unit.y-h)):(c.fillText(9==d?"?":d.toString(),g+k,l+h),c.fillText(9==m?"?":m.toString(),g+a.unit.x-h,l+h),c.fillText(9==f?"?":f.toString(),g+k,l+a.unit.y-h),c.fillText(9==e?"?":e.toString(),g+a.unit.x-k,l+a.unit.x-h),a.drawSeperators&&(c.drawLine(g,l+cellSize-gridWidth,g+cellSize-gridWidth,l),c.drawLine(g,l,g+cellSize-gridWidth,l+cellSize-gridWidth)))}}b.error&&
b.label==nil&&a.display.errors&&a.paintErrorDot(b)}catch(q){throw a.exception(q),q;}};a.paintCellText=function(b){try{a.uie.value.getContext("2d");var c={scale:50,fill:a.uic.gray,stroke:a.uic.gray},d={scale:50,fill:a.uic.none,stroke:a.uic.gray},e=b.text;e.contains("$c;")&&(e=e.replace("$c;",""),a.paintCircle(b,c));e.contains("$C;")&&(e=e.replace("$C;",""),a.paintCircle(b,d));e.contains("$q;")&&(e=e.replace("$q;",""),a.paintSquare(b,c));e.contains("$Q;")&&(e=e.replace("$Q;",""),a.paintSquare(b,d));
e.contains("$n;")&&(e=e.replace("$n;",""),d.v=0,a.paintArrow(b,d));e.contains("$N;")&&(e=e.replace("$N;",""),c.v=0,a.paintArrow(b,c));e.contains("$s;")&&(e=e.replace("$s;",""),d.v=1,a.paintArrow(b,d));e.contains("$S;")&&(e=e.replace("$S;",""),c.v=1,a.paintArrow(b,c));e.contains("$e;")&&(e=e.replace("$e;",""),d.v=2,a.paintArrow(b,d));e.contains("$E;")&&(e=e.replace("$E;",""),c.v=2,a.paintArrow(b,c));e.contains("$w;")&&(e=e.replace("$w;",""),d.v=3,a.paintArrow(b,d));e.contains("$W;")&&(e=e.replace("$W;",
""),c.v=3,a.paintArrow(b,c));e.contains("$nw;")&&(e=e.replace("$nw;",""),d.v=4,a.paintArrow(b,d));e.contains("$NW;")&&(e=e.replace("$NW;",""),c.v=4,a.paintArrow(b,c));e.contains("$sw;")&&(e=e.replace("$sw;",""),d.v=5,a.paintArrow(b,d));e.contains("$SW;")&&(e=e.replace("$SW;",""),c.v=5,a.paintArrow(b,c));e.contains("$ne;")&&(e=e.replace("$ne;",""),d.v=7,a.paintArrow(b,d));e.contains("$NE;")&&(e=e.replace("$NE;",""),c.v=7,a.paintArrow(b,c));e.contains("$se;")&&(e=e.replace("$se;",""),d.v=6,a.paintArrow(b,
d));e.contains("$SE;")&&(e=e.replace("$SE;",""),c.v=6,a.paintArrow(b,c));e&&a.paintText(e,b,{color:0==b.value?a.uic.white:a.uic.black})}catch(f){throw a.exception(f),f;}};a.paintArrow=function(b,c){try{if(c=a.defaultParams(b,c)){b.px?(void 0===c.v&&(c.v=b.label),b=a.canvas.getContext("2d")):c.v||(c.v=0);c.scale||(c.scale=75);b.strokeStyle=c.stroke?c.stroke:a.uic.arrowedge;b.fillStyle=c.fill?c.fill:a.uic.arrowfill;b.lineWidth=c.width?c.width:1;var d=[[50,95,75,75,25,25,5],[50,95,75,75,25,25,5],[95,
50,50,5,5,50,50],[5,50,50,95,95,50,50],[5,75,60,95,55,20,5],[5,20,55,95,60,75,5],[45,80,95,95,25,40,5],[25,95,95,80,45,5,40]],e=[[5,50,50,95,95,50,50],[95,50,50,5,5,50,50],[50,95,75,75,25,25,5],[50,95,75,75,25,25,5],[5,5,20,55,95,60,75],[25,40,5,45,75,95,95],[5,40,25,95,95,80,45],[5,5,75,60,95,55,20]],f=Math.floor(c.w/6),k=c.w-f-f,g=c.x+f,l=c.y+f,n=d[c.v].length-1;b.beginPath();b.moveTo(g+d[c.v][n]*k/100,l+e[c.v][n]*k/100);for(f=0;f<=n;f++)b.lineTo(g+d[c.v][f]*k/100,l+e[c.v][f]*k/100);b.fillStyle!=
a.uic.none&&b.fill();b.strokeStyle!=a.uic.none&&b.stroke()}}catch(h){throw a.exception(h),h;}};a.paintCurrentValue=function(){try{var b=a.uie.value,c=b.getContext("2d");c.fillStyle=a.current.value==t?a.uic.gray:0==a.current.value?a.uic.black:a.uic.white;c.fillRect(0,0,b.width,b.height)}catch(d){throw a.exception(d),d;}}}Tapa.prototype=new Puzzle;