var sa=function(){function ao(i){return document.getElementById(i)}function g(i,j){this.x=i;this.y=j}function aC(x){var j=0,i=0;if(x.offsetParent){while(1){j+=x.offsetLeft;i+=x.offsetTop;if(!x.offsetParent){break}x=x.offsetParent}}else{if(x.x){j+=x.x;i+=x.y}}return new g(j,i)}Array.prototype.inArray=function(x){for(var j=0;j<this.length;j++){if(this[j]===x){return j}}return false};Array.prototype.removeStr=function(x){for(var j=0;j<this.length;j++){if(x==this[j]){this.splice(j,1)}}};var H,G,D,C,ae="",at=0,aE=20,af=20,u=false,s=false,t=0,V,m,P,l,ab,J,al,aj,T,W,aa,ai=9,ag=9,aq,Z,ap,an,v,n,f,e,aB=new Array(),O=new Array(),k=new Array(),A=new Array(),K=new Array(),I=new Array(),B=new Array();function F(x,y,aJ,aI,aN,aL,aM,aH,aG,i,aK){V=aJ;m=aI;ab=aN;J=aL;al=aM;aj=aH;T=aG;W=i;aa=aK;P=Math.floor(V/2);l=Math.floor(m/2);for(C=0;C<ag;C++){O[C]=new Array();aB[C]=new Array();k[C]=new Array();for(D=0;D<ai;D++){O[C][D]=y.charAt(C*ag+D);aB[C][D]=y.charAt(C*ag+D+ai*ag);k[C][D]=(aB[C][D]>0)?0:""}}M();t=0;setTimeout(d,1000);setTimeout(Q,1000);var j=new Array(1,1,1,1,1,1,1,1,1);ao("tableplaypal").innerHTML="";for(C=0;C<ag;C++){for(D=0;D<ai;D++){if(O[C][D]!=aB[C][D]){A[A.length]="tableplaypal"+O[C][D]+"_"+(j[O[C][D]-1]++);K[K.length]=T;I[I.length]=W+aI*(O[C][D]-1);ao("tableplaypal").innerHTML+='\r\n<div id="'+A[A.length-1]+'" style="cursor:default;position:absolute;display:block;background:url('+x+") 0 -"+aJ*(O[C][D]-1)+"px no-repeat;width:"+aJ+"px;height:"+aI+"px;left:"+(K[K.length-1]+aq-al)+"px;top:"+(I[I.length-1]+Z-aj)+'px;z-index:3;"></div>'}}}for(H=0;H<A.length;H++){dragDrop.initElement(A[H],P,l)}dragDrop.addEventSimple(window,"resize",au);au();U("Use drag&amp;drop to play.%%Solve the puzzle by dragging numbers...%%from the palette to the board...%%correct errors by dragging numbers...%%out of the board.%%Play Sudoku Arena!")}function au(){setTimeout(av,200)}function av(){M();L()}function M(){aq=aC(ao("tableplay")).x+al;Z=aC(ao("tableplay")).y+aj;ap=aq-al+T;an=Z-aj+W;ao("statusbar").style.left=aq-al+"px";ao("statusbar").style.top=Z-aj+aa+"px";ao("tablesolved").style.left=aq-al+"px";ao("tablesolved").style.top=Z-aj+"px";ao("imagepaused").style.left=aq-al+"px";ao("imagepaused").style.top=Z-aj+"px";ao("imageendgame").style.left=aq-al+"px";ao("imageendgame").style.top=Z-aj+"px"}function L(){for(var j=0;j<A.length;j++){ao(A[j]).style.left=aq-al+K[j]+"px";ao(A[j]).style.top=Z-aj+I[j]+"px"}}function p(x,j){var i=j.id.charAt(j.id.indexOf("_")-1);if(x==-2){return ap}if(x==-1){return v}return x*V+aq}function o(x,j){var i=j.id.charAt(j.id.indexOf("_")-1);if(x==-2){return(an+m*(i-1))}if(x==-1){return n}return x*m+Z}function b(i){return Math.floor((i-aq+P)/V)}function a(i){return Math.floor((i-Z+l)/m)}function c(j,i){if(j<0||j>(ai-1)||i<0||i>(ag-1)){return false}return true}function aF(j){H=b(v);G=a(n);D=b(j.offsetLeft);C=a(j.offsetTop);var i=j.id.charAt(j.id.indexOf("_")-1);if(c(D,C)){if(aB[C][D]==0){aB[C][D]=i;k[C][D]=j.id;if(s){j.style.backgroundPosition="0px -"+((i-1)*m)+"px";if(aB[C][D]!=O[C][D]){j.style.backgroundPosition="-"+V+"px -"+((i-1)*m)+"px"}}f=D;e=C;if(c(H,G)){aB[G][H]=0;k[G][H]=""}}else{f=-1;e=-1}}else{j.style.backgroundPosition="0px -"+((i-1)*m)+"px";f=-2;e=-2;if(c(H,G)){aB[G][H]=0;k[G][H]=""}}}function ac(){R(0,"imageendgame");u=true}function r(){if(u){ay("tableplaypal",true);ay("tableplayinner",true);if(ao("button_solution_txt").innerHTML=="Hide solution"){ay("tablesolved",true)}u=false;h(aE,"imagepaused")}else{ay("tableplaypal",false);ay("tableplayinner",false);if(ao("button_solution_txt").innerHTML=="Hide solution"){ay("tablesolved",false)}R(0,"imagepaused");u=true}}function U(i){ae+=(ae=="")?i:"%%"+i;if(at==0){at=2}}function Q(){switch(at){case 0:setTimeout(Q,1000);break;case 1:var x=ae.indexOf("%%",2),i=(x>0)?ae.substr(0,x):ae,j=(x>0)?ae.substr(x+2):"";at=(x>0)?2:0;ao("su_status_display").innerHTML=i;ae=j;w(0,"su_status_display",false);setTimeout(Q,3000);break;case 2:ak(aE,"su_status_display",false);at=1;setTimeout(Q,1000);break}}function d(){if(!u){t++}var x=Math.floor(t/3600),i=Math.floor(t%3600/60),j=(t%60);ao("su_timer_display").innerHTML=((x<10)?"0":"")+x+":"+((i<10)?"0":"")+i+":"+((j<10)?"0":"")+j;setTimeout(d,1000)}function ay(j,i){if(i){ao(j).style.visibility="";ao(j).style.display="inline"}else{ao(j).style.visibility="hidden";ao(j).style.display="none"}}function w(j,y,i){function x(){if(j==0){S(y,j);ao(y).style.visibility="";if(i){ao(y).style.display="inline"}}S(y,j);if(j<aE){j++;setTimeout(x,af)}}if(j<aE){setTimeout(x,af)}}function ak(x,y,j){function i(){if(x==0){S(y,x);ao(y).style.visibility="hidden";if(j){ao(y).style.display="none"}}S(y,x);if(x>0){x--;setTimeout(i,af)}}if(x>0){setTimeout(i,af)}}function S(j,i){ao(j).style.opacity=i/aE;ao(j).style.filter="alpha(opacity="+Math.floor(i/aE*100)+")"}function R(i,x){function j(){if(i==0){ao(x).style.visibility="";ao(x).style.display="inline"}var aG=ao(x).offsetLeft,y=ao(x).offsetTop,aH=ao(x).offsetWidth,aI=ao(x).offsetHeight;aG=(aq-al+ab/2-(ab/aE/2)*i)+"px";y=(Z-aj+J/2-(J/aE/2)*i)+"px";aH=ab-(ab/aE)*(aE-i);aI=J-(J/aE)*(aE-i);ao(x).style.left=aG;ao(x).style.top=y;ao(x).setAttribute("width",aH);ao(x).setAttribute("height",aI);if(i<aE){i++;setTimeout(j,af)}}if(i<aE){setTimeout(j,af)}}function h(i,x){function j(){if(i==0){ao(x).style.visibility="hidden";ao(x).style.display="none"}var aG=ao(x).offsetLeft,y=ao(x).offsetTop,aH=ao(x).offsetWidth,aI=ao(x).offsetHeight;aG=(aq-al+ab/2-(ab/aE/2)*i)+"px";y=(Z-aj+J/2-(J/aE/2)*i)+"px";aH=ab-(ab/aE)*(aE-i);aI=J-(J/aE)*(aE-i);ao(x).style.left=aG;ao(x).style.top=y;ao(x).setAttribute("width",aH);ao(x).setAttribute("height",aI);if(i>0){i--;setTimeout(j,af)}}if(i>0){setTimeout(j,af)}}function N(i){if(B.inArray(i)!==false){return true}return false}function Y(i,j){if(j){B[B.length]=i}else{B.removeStr(i)}}function ax(i,j){if(j){i.style.marginTop="2px";i.style.marginLeft="2px";i.style.marginBottom="0";i.style.marginRight="0"}else{i.style.marginTop="1px";i.style.marginLeft="1px";i.style.marginBottom="1px";i.style.marginRight="1px"}}function aw(j,i,x){if(i){j.style.backgroundPosition="0 "+x+"px"}else{j.style.backgroundPosition="-32px "+x+"px";j.style.marginTop="1px";j.style.marginLeft="1px";j.style.marginBottom="1px";j.style.marginRight="1px"}}function E(){var j,aI,aH="",aG=0,i=ai*ag;for(aI=0;aI<ag;aI++){for(j=0;j<ai;j++){aH=aH+aB[aI][j];if(aB[aI][j]!=O[aI][j]&&aB[aI][j]!=0){aG++}if(aB[aI][j]!=0){i--}}}return[aG,i]}function ad(){var j=E(),i="You are doing well, "+j[1]+" more to go!";if(j[0]>0){i="You have "+j[0]+" error(s)"}U(i)}function ar(){var i;s=!s;if(s){for(C=0;C<ag;C++){for(D=0;D<ai;D++){if(O[C][D]!=aB[C][D]){if(k[C][D]!=""&&k[C][D]!=0){i=k[C][D].charAt(k[C][D].indexOf("_")-1);ao(k[C][D]).style.backgroundPosition="-"+V+"px -"+((i-1)*m)+"px"}}}}}else{for(C=0;C<ag;C++){for(D=0;D<ai;D++){if(k[C][D]!=""&&k[C][D]!=0){i=k[C][D].charAt(k[C][D].indexOf("_")-1);ao(k[C][D]).style.backgroundPosition="0px -"+((i-1)*m)+"px"}}}}}function q(i){v=i.offsetLeft;n=i.offsetTop}function aD(i){aF(i);K[A.inArray(i.id)]=p(f,i)-aq+al;I[A.inArray(i.id)]=o(e,i)-Z+aj;i.style.left=K[A.inArray(i.id)]+aq-al+"px";i.style.top=I[A.inArray(i.id)]+Z-aj+"px";var j=E();if(j[1]==0){if(j[0]==0){U("Well done! Puzzle solved in "+ao("su_timer_display").innerHTML);ac();Y("button_progress",true);Y("button_errors",true);Y("button_solution",true);Y("button_pause",true)}else{U("Sorry, but you still have "+j[0]+" errors!")}}}function X(){ao("formoptions").submitact.value="New puzzle";ao("formoptions").submit()}function am(){ao("formoptions").submitact.value="Restart puzzle";ao("formoptions").submit()}function az(){if(!N(ao("button_progress").id)){ad()}}function ah(){if(!N(ao("button_errors").id)){ar();ao("button_errors_txt").innerHTML=(s)?"Hide errors":"Show errors"}}function z(){if(!N(ao("button_solution").id)){if(ao("tablesolved").style.visibility==""){ak(aE,"tablesolved",true);ao("button_solution_txt").innerHTML="Show solution"}else{w(0,"tablesolved",true);ao("button_solution_txt").innerHTML="Hide solution"}}}function aA(){if(!N(ao("button_pause").id)){r();Y("button_solution",false);if(u){Y("button_solution",true)}ao("button_pause_txt").innerHTML=(u)?"Resume":"Pause"}}return{su_init:F,buttondown:ax,buttonover:aw,my_PickFunc:q,my_DropFunc:aD,button_new:X,button_restart:am,button_progress:az,button_errors:ah,button_solution:z,button_pause:aA,sudokuarena:"(c)sudokuarena.com"}}();