/* Copyright (c) 2005-8, killersudokuonline.com.  All Rights Reserved */
var ksover=4;var ksover4=true;function initPlayer(){ipv.initPlayer()}(function(){var x=0;var K=0;var W=0;var o=0;var p=0;var s=0;var t=0;var n=0;var N=0;rowsol=new Array(10);cellsol=new Array(10);hide=new Array(10);mysol=new Array(10);var z=new Array(10);var AB;var u;var j;function C(AL){var AO="";if(AL.hasChildNodes()){var AN=AL.childNodes;for(var AM=0;AM<AN.length;AM++){var AP=AN[AM];if(AP.nodeType==Node.TEXT_NODE){AO=AO+AP.nodeValue}}}if(AO.charCodeAt(0)==160){AO=""}return AO}function AA(AL){var AM=C(AL);undo.addChunk(AL,AM);if(AL.hasChildNodes()){removeAllChildren(AL)}return AM}var q=true;var y=0;var G=0;var a=new Array(32,32,32,32,32,16,16,14,14,14,10,10);function AK(AV,AT){if(hide[AV.prow][AV.pcol]){kui.alert("This cell cannot be changed.");return }var AM=AT.indexOf("?");if(AM!=-1){if(AT.length==1){AT=""}else{if(AM+1!=AT.length){AT=AT.substr(0,AM)+AT.substr(AM+1,AT.length)+"?"}}}while(AT.charCodeAt(0)==32){AT=AT.substr(1)}if(0){while((AT.length>1)&&((AT.charCodeAt(AT.length-1)==32)&&(AT.charCodeAt(AT.length-2)==32))){AT=AT.substr(0,AT.length-1)}}var AL=AV;var AW="10px";if(AT.length<10){AW=a[AT.length]+"px"}var AP=U(AT);AL.style.color="black";if(AT.length==0){AT=String.fromCharCode(160)}switch(AT.length){case 1:AL.style.fontSize="18px";if(AP==cellsol[AV.prow][AV.pcol]){y++}break;case 2:case 3:AL.style.fontSize="14px";break;case 4:case 5:case 6:case 7:case 8:case 9:AL.style.fontSize="12px";break;default:AL.style.fontSize="10px";break}AL.style.lineHeight=AW;mysol[AV.prow][AV.pcol]=AP;z[AV.prow][AV.pcol]=AT.indexOf("?")==-1?"s":"g";var AU;if(AT.length>4){AU=document.createTextNode(AT.slice(0,4));AL.appendChild(AU);AL.appendChild(document.createElement("BR"));AT=AT.slice(4)}AU=document.createTextNode(AT);AL.appendChild(AU);if(y>79){AD()}if(y==81){AI()}else{if(q){var AN=puzzleid.length.toString()+puzzleid+"-";var AR,AQ;for(AR=0;AR<9;AR++){for(AQ=0;AQ<9;AQ++){if(mysol[AR][AQ]!=0){var AO=B(mysol[AR][AQ]);var AS=AO.length.toString()+AO;AN=AN+AR.toString()+AQ.toString()+z[AR][AQ]+AS}}}setCookie("values",AN,0,0,0,0)}}}function H(AL){var AM=AA(AL);AM=AM+" ";AK(AB,AM)}function c(AL){var AN=AA(AL);var AM=AN.indexOf("?");if((AM==-1)&&(AN.length>0)){AN=AN+"?"}else{AN=AN.substr(0,AM)}AK(AB,AN)}function L(AL){ipv.replaceCellContents(AL,String.fromCharCode(160))}function e(AL){kui.setCursor(AL)}var E=0;function V(AL){if(AL==1){E=1}else{E=0}}var AG="0123456789";function U(AN){var AL=0;var AM;for(AM=1;AM<=9;AM++){if(AN.indexOf(AG.charAt(AM))!=-1){AL|=b(AM)}}return AL}function b(AL){return(1<<AL)}function B(AL){var AN="";var AM;for(AM=1;AM<=9;AM++){if(AL&(1<<AM)){AN=AN+String.fromCharCode(AM+48)}}return AN}function J(AL){var AN=0;var AM;for(AM=1;AM<=9;AM++){if((1<<AM)&AL){AN++}}return AN}var h;var M;var Z;function Y(){h=0;Z.src=M}var m;function I(){m=C(AB)}function R(){ipv.replaceCellContents(AB,m)}var f=0;function k(){f=!f;kui.showShiftState(f)}var w=false;var S=new Array(27,74,121,170,218,266,314,362,410,450);var P=new Array(10,58,106,154,202,250,298,346,394,440);function d(){if(w){return }h=0;y=0;w=true;var AN,AM;for(AN=0;AN<9;AN++){cellsol[AN]=new Array(10);for(AM=0;AM<9;AM++){cellsol[AN][AM]=U(rowsol[AN].slice(AM,AM+1))}}p=new Date();x=K=W=o=s=t=N=n=0;for(AN=0;AN<9;AN++){hide[AN]=new Array(10);for(AM=0;AM<9;AM++){hide[AN][AM]=0}}if(!window.initialHints){window.initialHints="00"}G=window.initialHints.slice(0,2);y=G;var AL=G;var AO=2;while(AL>0){AN=window.initialHints.charAt(AO++)-"0";AM=window.initialHints.charAt(AO++)-"0";hide[AN][AM]=1;AL--}}function D(){t=new Date();var AN=setupForm("stat","http://www.killersudokuonline.com/cgi-bin/recordStat.pl");addInput2Form(AN,"hidden","h",x);addInput2Form(AN,"hidden","c",K);addInput2Form(AN,"hidden","b",W);addInput2Form(AN,"hidden","sh",o);addInput2Form(AN,"hidden","se",t.getTime()-p.getTime());if(s!=0){addInput2Form(AN,"hidden","k",t.getTime()-s.getTime())}addInput2Form(AN,"hidden","p",puzzleid);addInput2Form(AN,"hidden","i",clientip);addInput2Form(AN,"hidden","a",n);var AM=navigator.userAgent;var AL=AM.indexOf("(iP");AM=AM.substr(AL+1,4);addInput2Form(AN,"hidden","cl",AM);AN.submit()}function AI(){Z.src="/images/bravo1.png";h=1;if(t==0){D()}deleteCookie("values",0,0)}function AD(){var AN=0;y=G;for(var AM=0;AM<9;AM++){for(var AL=0;AL<9;AL++){if(mysol[AM][AL]!=0){if(!(mysol[AM][AL]&cellsol[AM][AL])){if(z[AM][AL]!="g"){AN++}}else{if((J(mysol[AM][AL])==1)&&(z[AM][AL]!="g")){y++}}}}}return AN}function l(AL){if(AL==1){X();o++}}function v(){K++;d();var AL=AD();if(AL){W++;kui.confirm(Array("There "+(AL==1?"is":"are")+" "+AL+" Error"+(AL==1?"":"s")+".","Do you want to see the bad cells?"),"Yes","No",l)}else{if(y<81){kui.alert(Array("So far so good.","Keep up the good work!"))}else{AI()}}}function X(){for(var AM=0;AM<9;AM++){for(var AL=0;AL<9;AL++){if(mysol[AM][AL]!=0){if(!(mysol[AM][AL]&cellsol[AM][AL])){u[AM][AL].style.color="red"}}}}}function T(AO){var AL;if(document.all){AL="rules"}else{if(document.getElementById){AL="cssRules"}}for(var AM=0;AM<document.styleSheets.length;AM++){for(var AN=0;AN<document.styleSheets[AM][AL].length;AN++){if(document.styleSheets[AM][AL][AN].selectorText==AO){return document.styleSheets[AM][AL][AN].style}}}}function AJ(){var AN=100*Math.round(window.innerWidth/52)/10;var AM=T("input.sline");AM.setProperty("height",(0.3*AN)+"px","");var AL=document.getElementById("sumcalc-div");AL.style.fontSize=AN+"%";AL.style.width=window.innerWidth+"px";AL.style.position="absolute";AL.style.top=window.pageYOffset+"px";AL.style.left=window.pageXOffset+"px";AL.style.zIndex="1";AL.style.display="block"}function AF(){var AL=getCookie("values");if(!AL){kui.alert("Nothing to save yet.");return }setCookie("values",AL,365,0,0,0)}function AE(AL){if(AL){undo.turnOffUndo();for(var AN=0;AN<9;AN++){for(var AM=0;AM<9;AM++){ipv.replaceCellContents(u[AN][AM],"")}}undo.turnOnUndo();undo.resetUndoList()}}function F(){kui.confirm(Array("Do you really want to erase all your work and reset the board?","(This is not undoable)"),"Yes","No",AE)}function O(){var AP=0;d();var AN;var AM;for(AN=0;AN<9;AN++){for(AM=0;AM<9;AM++){if((mysol[AN][AM]==0)||(!(mysol[AN][AM]&cellsol[AN][AM]))){AP++}}}var AO=Math.random()*AP;AP=0;var AL=0;for(AN=0;AN<9;AN++){if(AL==1){break}for(AM=0;AM<9;AM++){if(AL==1){break}if(hide[AN][AM]){continue}if((mysol[AN][AM]==0)||(!(mysol[AN][AM]&cellsol[AN][AM]))){AP++;if(AP>=AO){ipv.replaceCellContents(u[AN][AM],B(cellsol[AN][AM]));e(u[AN][AM]);AL=1}}}}x++}var g;function Q(){var AL=document.getElementById("board-diva");for(var AN=0;AN<9;AN++){for(var AM=0;AM<9;AM++){var AR=document.createElement("div");j[AN][AM]=AR;AR.className="tablecell";var AQ=S[AN];var AP=P[AM];var AO=document.createElement("p");AO.className="tablecell";AO.appendChild(document.createTextNode(""));u[AN][AM]=AR;AR.prow=AN;AR.pcol=AM;AR.appendChild(AO);AL.appendChild(AR);kui.setItemPos(AR,AP,AQ)}}}var i=0;function r(AL){if(AL){window.location="/iphone/player.html?puzzle="+i}else{eraseCookie("values",0,0)}}function AH(AL){g=AL;defineNodeConstants();args=getArgs();if(args.puzzle){puzzleid=args.puzzle}else{}M="/puzzles/puzzle-"+puzzleid+".png";Z=getById("image");Z.onload=function(){getById("loading").style.zIndex=-1};Z.onerror=function(){alert("Puzzle not found, please try again.")};Z.src=M;dhtmlLoadScript("/puzzles/solution-"+puzzleid+".js");dhtmlLoadScript(jsversion+"panels.js");dhtmlLoadScript(jsversion+"undo.js")}function A(){if(!window.kui){setTimeout(A,400);return }Q();AB=u[0][0];e(AB);w=false;d();var AL=getCookie("values");q=false;if(AL){var AS=0;var AN=AL.length;var AO=AL.indexOf("-",AS);var AQ=AL.substr(AS+2,AO-AS-2);if(AQ!=puzzleid){i=AQ;kui.confirm(Array("You have a saved game for a different puzzle.","Do you want to restore your saved game?"),"Yes","No",r)}if(AQ==puzzleid){undo.turnOffUndo();AS=AO+1;while(AS<AN){var AU=AL.charCodeAt(AS)-48;if(AU<0){break}var AT=AL.charCodeAt(AS+1)-48;var AR=AL.substr(AS+2,1);var AP=AL.charCodeAt(AS+3)-48;var AM=AL.substr(AS+4,AP);AA(u[AU][AT]);if(AR=="g"){AM+="?"}AK(u[AU][AT],AM);AS+=(4+AP)}}}undo.turnOnUndo();undo.resetUndoList();q=true;dhtmlLoadScript(jsversion+"newsums.js")}var AC=20;window.ipv={finishLoading:function(){if((AC>0)&&!loadedPage){AC-=1;setTimeout("finishLoading()",500)}else{AH(window.document)}},initPlayer:function(){AB=0;var AN=getById("puzzlecontainer");AN=getById("puzzletable");trow=-1;tcol=0;j=new Array(10);u=new Array(10);var AM;for(AM=0;AM<10;AM++){u[AM]=new Array(10);j[AM]=new Array(10)}for(AM=0;AM<9;AM++){mysol[AM]=new Array(10);z[AM]=new Array(10);for(var AL=0;AL<9;AL++){mysol[AM][AL]=0;z[AM][AL]=0}}if(window.kui){A()}else{setTimeout(A,400)}},pickcell:function(AQ){if(!AQ){if(window.event){AQ=window.event}}if(h){Y()}var AU=AQ.pageX;var AS=AQ.pageY;var AO;var AM;for(AO=1;AO<10;AO++){if(P[AO]>(AU)){break}}for(AM=1;AM<10;AM++){if(S[AM]>(AS)){break}}if((AO==10)||(AM==10)){return }AO--;AM--;AB=u[AM][AO];e(AB);var AL=window.pageXOffset;var AX=window.pageYOffset;var AY=AL+window.innerWidth;var AW=AX+window.innerHeight;var AV=(AY-AL);var AP=(AW-AX);var AT=AV/2+AL;var AR=AP/2+AX;var AN;kui.scaleChooser(AV);if(AU>AT){AU=AL+AV/8;AN=P[AO]-5-(AU+document.ccw);if(AN<0){AU+=AN}}else{AU=AT;AN=AU-(P[AO]+45);if(AN<0){AU-=AN}}if(AS>AR){AS=AX+AP/8;AN=S[AM]-5-(AS+document.cch);if(AN<0){AS+=AN}}else{AS=AR;AN=AS-(S[AM]+45);if(AN<0){AS-=AN}}kui.showChooser(AU,AS)},buttonPress:function(AM){kui.unfade();if(!w){kui.alert("not inited");return }var AN=new Date();if(s==0){s=new Date();n=0}else{delay=AN.getTime()-N.getTime();if(delay>600000){n+=delay}}N=AN;if((AM>0)&&(AM<10)){var AQ=""+(AM);var AP=AA(AB);if(f){AP=AQ}else{if(E){var AO=mysol[AB.prow][AB.pcol];AO=AO^b(AM);AP=B(AO)}else{var AL=AP.indexOf(AQ);if(AL!=-1){AP=AP.substr(0,AL)+AP.substr(AL+1);while(AP.charCodeAt(AP.length-1)==32){AP=AP.substr(0,AP.length-1)}}else{AP=AP+AQ}}if(AP.length==0){AP=String.fromCharCode(160)}}AK(AB,AP);return }if(AM>=40){kui.swapChooserTo(AM-40)}else{switch(AM){case 11:v();break;case 12:O();break;case 13:undo.undo();break;case 14:L(AB);break;case 15:AJ();break;case 17:c(AB);break;case 18:k();break;case 19:H(AB);break;case 20:AF();break;case 21:F();break;case 22:V(0);break;case 23:V(1);break;case 24:I();break;case 25:R();break}}},replaceCellContents:function(AL,AM){AA(AL);AK(AL,AM)}}})()
