var doload=false;var clock_help_td_id=null;var clock_help_array=new Object();var solution=new Object();var puzzle=new Object();var puzzle_highlight=new Array();var tds=document.getElementsByTagName("td");var blink_timeout=null;var blink_fields=null;var normal_bgcolor='transparent';var highlight_bgcolor='#ff0000';function examine(){var test=true;for(i in solution){if(document.getElementsByName("input"+i)[0].value!=solution[i]){test=false;}}if(test){alert("Die Lösung ist richtig.");}else{alert("Das Sudoku ist nicht richtig gelöst");}}function dosolve(){for(i in solution){document.getElementsByName("input"+i)[0].style.color="#000000";document.getElementsByName("input"+i)[0].value=solution[i];clock_help_show_none("cell"+i);}}function clear_background_color(fields){var test=0;if(fields!=null){for(i=0;i<fields.length;i++){for(j=0;j<puzzle_highlight.length;j++){if(puzzle_highlight[j]==fields[i]){test=1;}}if(test){tds['cell'+fields[i]].style.backgroundColor='#dfdfdf';}else{tds['cell'+fields[i]].style.backgroundColor=normal_bgcolor;};test=0;}}}function blinker(fields,timestoblink,blink){clear_background_color(blink_fields);window.clearTimeout(blink_timeout);if(fields!=null){blink_fields=fields;}if(blink){blink=false;}else{for(i=0;i<blink_fields.length;i++){tds['cell'+blink_fields[i]].style.backgroundColor=highlight_bgcolor;}blink=true;};timestoblink=timestoblink-1;if(timestoblink>0||blink){blink_timeout=window.setTimeout("blinker("+null+","+timestoblink+","+blink+")",200);}else{blink_timeout=null;}}function sushowsolve(name){var x=name.charAt(name.length-2);var y=name.charAt(name.length-1);var number=parseInt(document.getElementsByName(name)[0].value);if(number!=puzzle[x+y]){if(number==solution[x+y]){document.getElementsByName("input"+x+y)[0].style.color="#39cf39";}else{document.getElementsByName("input"+x+y)[0].style.color="#cb4141";}}}function sushowsolveclick(){if(document.getElementsByName("sushowsolve")[0].checked){for(i in solution){var number=parseInt(document.getElementsByName("input"+i)[0].value);if(number==solution[i]){document.getElementsByName("input"+i)[0].style.color="#39cf39";}else{document.getElementsByName("input"+i)[0].style.color="#cb4141";}}}else{for(i in solution){document.getElementsByName("input"+i)[0].style.color="#000000";}}}function suhelp(name){var x=name.charAt(name.length-2);var y=name.charAt(name.length-1);var number=parseInt(document.getElementsByName(name)[0].value);if(!isNaN(number)&&number!=0){var fields=new Array();for(i=0;i<9;i++){if(document.getElementsByName("input"+x+i)[0].value==number&&name!="input"+x+i){fields.push(""+x+i);}if(document.getElementsByName("input"+i+y)[0].value==number&&name!="input"+i+y){fields.push(""+i+y);}}var xblock,yblock,xfield,yfield;xblock=Math.floor(x/3);yblock=Math.floor(y/3);for(var i=0;i<3;i++){for(var j=0;j<3;j++){yfield=(yblock*3)+i;xfield=(xblock*3)+j;if(document.getElementsByName("input"+xfield+yfield)[0].value==number&&name!="input"+xfield+yfield){fields.push(""+xfield+yfield);}}}if(fields.length!=0){fields.sort();for(i=0;i<fields.length;i++){if(fields[i]==fields[i+1]){var cuta1=fields.slice(0,i);var cuta2=fields.slice(i+1,fields.length);fields=cuta1.concat(cuta2);}}blinker(fields,7,true);}}}function solver(name){if(blink_timeout!=null){window.clearTimeout(blink_timeout);clear_background_color(blink_fields);}var wert=document.getElementsByName(name)[0].value;if(wert!=" "&&wert!=""){id=name.substr(5);if(document.getElementById(id+""+1)){id="cell"+id;clock_help_show_none(id);}if(document.getElementsByName("suhelp")[0].checked){suhelp(name);}if(document.getElementsByName("sushowsolve")[0].checked){sushowsolve(name);}}else{id=name.substr(5);if(document.getElementById(id+""+1)){clock_help_td_id="cell"+id;clock_help_show_pics();}}}function make_clear(name,keycode){keycode=parseInt(keycode);if(keycode!=9&&keycode!=13&&!document.getElementsByName(name)[0].readOnly){document.getElementsByName(name)[0].value="";}}function restart(){for(i in solution){document.getElementsByName("input"+i)[0].value="";clock_help_show_none("cell"+i);}clock_help_reset();}function su_error(){alert("Konnte Spieldaten nicht laden.");}function make_game(ajaxreponse){restart();for(var i=0;i<9;i++){for(var j=0;j<9;j++){document.getElementsByName("input"+i+j)[0].value="";document.getElementsByName("input"+i+j)[0].style.color="#000000";document.getElementsByName("input"+i+j)[0].readOnly=false;tds['cell'+i+j].style.backgroundColor=normal_bgcolor;}}var sud0ku=eval('('+ajaxreponse+')');puzzle=sud0ku['sud0ku_puzzle'];solution=sud0ku['sud0ku_solution'];var level=document.getElementsByName("level")[0].value;var j=0;for(i in puzzle){document.getElementsByName("input"+i)[0].value=puzzle[i];document.getElementsByName("input"+i)[0].readOnly=true;document.getElementsByName("input"+i)[0].style.color="#666666";if(puzzle[i]%2==0){puzzle_highlight[j]=i;j++;}}for(i in solution){if(solution[i]%2==0){puzzle_highlight[j]=i;j++;}}doload=false;highlight();loader_hide();}function highlight(){for(i in puzzle_highlight){tds['cell'+puzzle_highlight[i]].style.backgroundColor='#dfdfdf';}}function loader_show(){if(document.getElementById("loader")){var div=document.getElementById("loader");var obj=document.getElementById("cell44");var x=y=0;do{x+=obj.offsetLeft;y+=obj.offsetTop;}while(obj=obj.offsetParent);x+=-32;y+=4;div.style.left=x+"px";div.style.top=y+"px";div.style.display="block";}else{var newdiv=document.createElement("div");newdiv.id="loader";var pic=new Image();pic.src="http://static.sudoku-space.de/images/even-odd-sudoku/loader_purple.gif";newdiv.appendChild(pic);var obj=document.getElementById("cell44");var x=y=0;do{x+=obj.offsetLeft;y+=obj.offsetTop;}while(obj=obj.offsetParent);x+=-32;y+=4;newdiv.style.position="absolute";newdiv.style.left=x+"px";newdiv.style.top=y+"px";newdiv.style.opacity=newdiv.style.MozOpacity=newdiv.style.KhtmlOpacity=60/100;newdiv.style.filter='alpha(opacity='+60+')';document.body.appendChild(newdiv);}}function loader_hide(){if(document.getElementById("loader")){var div=document.getElementById("loader");div.style.display="none";}}function new_game(){if(!doload){loader_show();doload=true;var level=document.getElementsByName("level")[0].value;AjaxRequest.get({'url':'get_sudoku.php?level='+level,'onSuccess':function(req){make_game(req.responseText);},'onError':function(req){su_error();}});}}function clock_help_reset(){clock_help_td_id=null;clock_help_array=new Object();}function clock_help_show_pics(){id=clock_help_td_id.substr(4);if(!document.getElementById(id+""+1)){create_background(clock_help_td_id);}for(var i=1;i<10;i++){if(clock_help_array[id][i]){document.getElementById(id+""+i).style.backgroundImage="url(http://static.sudoku-space.de/images/clock_help"+i+".gif)";}else{document.getElementById(id+""+i).style.backgroundImage="";}}}function clock_help_show_none(cellid){var id=cellid.substr(4);if(document.getElementById(id+""+1)){for(var i=1;i<10;i++){document.getElementById(id+""+i).style.backgroundImage="";}}}function clock_help_add_graynums(cellid){var thecell=document.getElementById(cellid);var id=thecell.id.substr(4);var Knoten=thecell.firstChild;var newdiv=document.createElement("div");newdiv.style.backgroundPosition="center";newdiv.style.backgroundRepeat="no-repeat";newdiv.style.position="relative";newdiv.style.padding="0px";newdiv.style.margin="0px";var div1=newdiv.cloneNode(true);var div2=newdiv.cloneNode(true);var div3=newdiv.cloneNode(true);var div4=newdiv.cloneNode(true);var div5=newdiv.cloneNode(true);var div6=newdiv.cloneNode(true);var div7=newdiv.cloneNode(true);var div8=newdiv.cloneNode(true);var div9=newdiv.cloneNode(true);div1.id=id+"1";div2.id=id+"2";div3.id=id+"3";div4.id=id+"4";div5.id=id+"5";div6.id=id+"6";div7.id=id+"7";div8.id=id+"8";div9.id=id+"9";div1.appendChild(div2);div2.appendChild(div3);div3.appendChild(div4);div4.appendChild(div5);div5.appendChild(div6);div6.appendChild(div7);div7.appendChild(div8);div8.appendChild(div9);var oldchilds=newdiv.cloneNode(true);while(thecell.hasChildNodes()){child=thecell.firstChild;thecell.removeChild(child);oldchilds.appendChild(child);}div9.appendChild(oldchilds);thecell.appendChild(div1);for(var i=1;i<10;i++){document.getElementById(id+""+i).style.backgroundImage="url(http://static.sudoku-space.de/images/clock_help"+i+"_light.gif)";}}function clockhelp_click(cellid,event){var id=cellid.substr(4);if(document.getElementsByName("input"+id)[0].value==""){if(clock_help_array[id]){var x=0,y=0,num;if(typeof event.offsetX!="undefined"){x=Math.ceil(event.offsetX/12);y=Math.ceil(event.offsetY/12);}else if(typeof event.layerX!="undefined"){x=Math.ceil(event.layerX/12);y=Math.ceil(event.layerY/12);}if(x!=0&&y!=0){if(y==1){if(x==1){num=1;}else if(x==2){num=2;}else if(x==3){num=3;}}else if(y==2){if(x==1){num=4;}else if(x==2){num=5;}else if(x==3){num=6;}}else if(y==3){if(x==1){num=7;}else if(x==2){num=8;}else if(x==3){num=9;}}if(num){if(clock_help_array[id][num]){clock_help_array[id][num]=false;document.getElementById(id+""+num).style.backgroundImage="url(http://static.sudoku-space.de/images/clock_help"+num+"_light.gif)";}else{clock_help_array[id][num]=true;document.getElementById(id+""+num).style.backgroundImage="url(http://static.sudoku-space.de/images/clock_help"+num+".gif)";}}}}}}function clockhelp_dblclick(cellid,event){var id=cellid.substr(4);clock_help_td_id=cellid;if(document.getElementsByName("input"+id)[0].value==""){if(!clock_help_array[id]){clock_help_array[id]=new Array();clock_help_add_graynums(cellid);}else{var x=0,y=0,num;if(typeof event.offsetX!="undefined"){x=Math.ceil(event.offsetX/12);y=Math.ceil(event.offsetY/12);}else if(typeof event.layerX!="undefined"){x=Math.ceil(event.layerX/12);y=Math.ceil(event.layerY/12);}if(x!=0&&y!=0){if(y==1){if(x==1){num=1;}else if(x==2){num=2;}else if(x==3){num=3;}}else if(y==2){if(x==1){num=4;}else if(x==2){num=5;}else if(x==3){num=6;}}else if(y==3){if(x==1){num=7;}else if(x==2){num=8;}else if(x==3){num=9;}}if(num){var name="input"+id;document.getElementsByName(name)[0].value=num;solver(name);}}}}else if(!document.getElementsByName("input"+id)[0].readOnly){document.getElementsByName("input"+id)[0].value="";for(var i=1;i<10;i++){if(clock_help_array[id][i]){document.getElementById(id+""+i).style.backgroundImage="url(http://static.sudoku-space.de/images/clock_help"+i+".gif)";}else{document.getElementById(id+""+i).style.backgroundImage="url(http://static.sudoku-space.de/images/clock_help"+i+"_light.gif)";}}}}function init(){new_game();}
