Sudoku=Class.create({initialize:function(){this.COLORS={item:"#fff",highlighted_item:"#FFFFDD",menu_item:"#F8FFEF",highlighted_menu_item:"#FFFFCC",highlighted_help_number:"#ddf",stressed_number:"#bfb",wrong_number:"#fdd",highlighted_number:"#FFFF88"};this.URLS={};this.sudoku_id="";this.use_highlighting=false;this.use_help_numbers=false;this.set_highlight_numbers=false;this.selected_item=null;this.selected_element=null;this.numbers=$H({});this.initial_numbers=$H({});this.stressed_numbers=$H({});this.complete_numbers=$H({});this.saved_numbers=$H({});load_numbers=false;this.steps=-1;this.time=0;this.init_numbers();this.is_user_logged=false;this.is_solved=false;this.is_solved_by_script=false;this.start_time=new Date();Event.observe(window,"load",this.load.bindAsEventListener(this))},load:function(){this.fill_initial_numbers();if(this.load_numbers){this.fill_saved_numbers()}this.left_click_menu=$("left_click_menu");this.left_click_menu_dimensions=this.left_click_menu.getDimensions();this.left_click_menu_tds=$$("div#left_click_menu table td");this.left_click_menu_tds.each(function(C){Event.observe(C,"mouseover",this.mouseover_left_click_menu_item.bindAsEventListener(this));Event.observe(C,"click",this.click_left_click_menu_item.bindAsEventListener(this))}.bindAsEventListener(this));Event.observe(this.left_click_menu,"mouseover",this.mouseover_left_click_menu.bindAsEventListener(this));Event.observe(this.left_click_menu,"mouseout",this.mouseout_left_click_menu.bindAsEventListener(this));this.right_click_menu=$("right_click_menu");this.right_click_menu_dimensions=this.right_click_menu.getDimensions();this.right_click_menu.oncontextmenu=function(){return false};this.right_click_menu_tds=$$("div#right_click_menu table td");this.right_click_menu_tds.each(function(C){Event.observe(C,"mouseover",this.mouseover_right_click_menu_item.bindAsEventListener(this));Event.observe(C,"click",this.click_right_click_menu_item.bindAsEventListener(this))}.bindAsEventListener(this));Event.observe(this.right_click_menu,"mouseover",this.mouseover_right_click_menu.bindAsEventListener(this));Event.observe(this.right_click_menu,"mouseout",this.mouseout_right_click_menu.bindAsEventListener(this));this.sudoku=$("sudoku");this.sudoku.oncontextmenu=function(){return false};this.sudoku_tds=$$("table#sudoku td");this.sudoku_tds.each(function(C){Event.observe(C,"mouseover",this.mouseover_sudoku_item.bindAsEventListener(this));if(!this.initial_numbers.get(C.id)){Event.observe(C,"mousedown",this.click_sudoku_item.bindAsEventListener(this))}}.bindAsEventListener(this));Event.observe(this.sudoku,"mouseout",this.mouseout_sudoku.bindAsEventListener(this));this.help_numbers=$$("table#sudoku td span.help_number");this.help_numbers.each(function(C){C.style.display="none";if(!this.initial_numbers.get(C.id.substr(0,6))){Event.observe(C,"mouseover",this.mouseover_help_number.bindAsEventListener(this));Event.observe(C,"mouseout",this.mouseout_help_number.bindAsEventListener(this))}}.bindAsEventListener(this));$$("table#sudoku td div span.number_bg_color").each(function(C){C.setOpacity(0.5)}.bindAsEventListener(this));this.use_help_numbers_button=$("_use_help_numbers_button");this.use_highlighting_button=$("_use_highlighting_button");this.highlight_numbers_button=$("_highlight_numbers_button");this.highlight_numbers_buttons=$$("#highlight-number a._highlight_numbers");this.highlight_none_numbers_button=$("_highlight_none_numbers");this.highlight_wrong_numbers_button=$("_highlight_wrong_numbers");this.highlight_numbers_radio_a=$("radiobutton-a");this.highlight_numbers_radio_p=$("radiobutton-p");this.highlight_numbers(this.highlight_none_numbers_button,-1);this.highlight_numbers_container=$("highlight-number");var A=this.highlight_numbers_button.positionedOffset();this.highlight_numbers_container.style.left=A.left-30+"px";this.highlight_numbers_container.style.top=A.top-40+"px";this.print_container=$("print");this.print_container.style.left=A.left+90+"px";this.print_container.style.top=A.top-90+"px";this.time_container=$("_time_container");this.steps_container=$("_steps_container");if(this.is_user_logged){this.saved_games_container=$("play-again");var B=$("_load_sudoku").positionedOffset();this.saved_games_container.style.left=B.left-314+"px";this.saved_games_container.style.top=B.top-0+"px"}this.show_steps();new PeriodicalExecuter(this.show_time.bindAsEventListener(this),1)},get_block:function(C,B){var A="X";if(C<3){if(B<3){A="A"}else{if(B>2&&B<6){A="B"}else{A="C"}}}else{if(C>2&&C<6){if(B<3){A="D"}else{if(B>2&&B<6){A="E"}else{A="F"}}}else{if(B<3){A="G"}else{if(B>2&&B<6){A="H"}else{A="I"}}}}return A},init_numbers:function(){var C="_A_0_0";for(var B=0;B<9;B++){for(var A=0;A<9;A++){C="_"+this.get_block(B,A)+"_"+B+"_"+A;this.numbers.set(C,0);this.complete_numbers.set(C,0);this.saved_numbers.set(C,0);this.initial_numbers.set(C,false);this.stressed_numbers.set(C,false)}}},fill_initial_numbers:function(){var A=null;this.numbers.each(function(B){if(B.value>0){A=$(B.key+"_number");A.innerHTML=B.value;A.addClassName("initial_number");this.initial_numbers.set(B.key,true)}}.bindAsEventListener(this))},fill_saved_numbers:function(){this.saved_numbers.each(function(A){this.set_and_show_number(A.key,A.value)}.bindAsEventListener(this))},set_start_time:function(B){var A=this.start_time.getTime()-(1000*B);this.start_time.setTime(A)},set_steps:function(A){this.steps=A-1},show_time:function(){var B=new Date();var D=B.getTime()-this.start_time.getTime();B.setTime(D);this.time=Math.floor(D/1000);var A=B.getHours()-1<10?"0"+(B.getHours()-1):B.getHours()-1;var C=B.getMinutes()<10?"0"+B.getMinutes():B.getMinutes();var E=B.getSeconds()<10?"0"+B.getSeconds():B.getSeconds();this.time_container.innerHTML=""+A+":"+C+":"+E},show_steps:function(){this.steps+=1;var A="";if(this.steps<10){A+="00"+this.steps}else{if(this.steps<100){A+="0"+this.steps}else{A=this.steps}}this.steps_container.innerHTML=A},highlight_sudoku_item:function(B){var D=B.id.substr(1,1);var C=B.id.substr(3,1);var A=B.id.substr(5,1);var E;if(this.use_highlighting){this.sudoku_tds.each(function(F){E=F.id;if(E.charAt(1)==D||E.charAt(3)==C||E.charAt(5)==A){F.style.backgroundColor=this.COLORS.highlighted_item}else{F.style.backgroundColor=this.COLORS.item}}.bindAsEventListener(this))}else{B.style.backgroundColor=this.COLORS.highlighted_item}},show_left_click_menu:function(){this.left_click_menu.show();this.highlight_sudoku_item(this.selected_item)},hide_left_click_menu:function(){this.left_click_menu.hide()},show_right_click_menu:function(){this.right_click_menu.show();this.highlight_sudoku_item(this.selected_item)},hide_right_click_menu:function(){this.right_click_menu.hide()},highlight_menu_item:function(A,B){B.each(function(C){C.style.backgroundColor=this.COLORS.menu_item}.bindAsEventListener(this));A.style.backgroundColor=this.COLORS.highlighted_menu_item},highlight_numbers:function(A,B){this.highlight_numbers_buttons.each(function(D){D.removeClassName("selected")});A.addClassName("selected");if(B>0){this.highlight_numbers_radio_a.show();this.highlight_numbers_radio_p.hide()}else{this.highlight_numbers_radio_a.hide();this.highlight_numbers_radio_p.show()}if(B==-1){this.highlight_numbers_button.removeClassName("selected")}else{this.highlight_numbers_button.addClassName("selected")}var C=null;this.numbers.each(function(D){C=$(D.key+"_number_bg_color");C.style.backgroundColor="transparent";if(this.stressed_numbers.get(D.key)){C.style.backgroundColor=this.COLORS.stressed_number}if(B<0){if(B==-2){if(D.value!=this.complete_numbers.get(D.key)){C.style.backgroundColor=this.COLORS.wrong_number}}}else{if(D.value==B){C.style.backgroundColor=this.COLORS.highlighted_number}}}.bindAsEventListener(this))},set_and_show_number:function(B,A){$(B+"_number").innerHTML=A==0?"":A;this.numbers.set(B,A)},show_highlight_numbers_container:function(){this.highlight_numbers_container.show()},open_print_clean:function(){$("print").hide();form="<form target='_blank' action='"+this.URLS.base+"tiskni-sudoku.html' method='post' id='generated_form_print' style='display:none;'>";form+="<input type='hidden' name='id' value='"+this.sudoku_id+"'/>";form+="<input type='hidden' name='clean' value='1'/>";form+="<input type='hidden' name='difficulty' value='"+this.difficulty+"'/>";form+="<input type='hidden' name='sudoku_count' value='"+this.print_sudoku_count+"'/>";new Insertion.After("print",form);$("generated_form_print").submit();$("generated_form_print").remove()},open_print_edited:function(){$("print").hide();var B="{";var A="{";this.numbers.each(function(C){B+='"'+C.key+'":"'+C.value+'",';A+='"'+C.key+'":"'+this.initial_numbers.get(C.key)+'",'}.bindAsEventListener(this));B=B.substr(0,B.length-1);B+="}";form="<form target='_blank' action='"+this.URLS.base+"tiskni-sudoku.html' method='post' id='generated_form_print' style='display:none;'>";form+="<input type='hidden' name='id' value='"+this.sudoku_id+"'/>";form+="<input type='hidden' name='difficulty' value='"+this.difficulty+"'/>";form+="<input type='hidden' name='numbers' value='"+B+"'/></form>";new Insertion.After("print",form);$("generated_form_print").submit();$("generated_form_print").remove()},change_help_numbers_status:function(){this.use_help_numbers=!this.use_help_numbers;if(this.use_help_numbers){this.help_numbers.each(function(A){A.style.display="block"});this.use_help_numbers_button.addClassName("selected")}else{this.help_numbers.each(function(A){A.style.display="none"});this.use_help_numbers_button.removeClassName("selected")}},change_highlighting_status:function(){this.use_highlighting=!this.use_highlighting;if(this.use_highlighting){this.use_highlighting_button.addClassName("selected")}else{this.use_highlighting_button.removeClassName("selected")}},reset_sudoku:function(){var A="Opravdu chcete Å™eÅ¡it sudoku znovu?";if(confirm(A)){this.is_solved=false;this.is_solved_by_script=false;this.initial_numbers.each(function(B){if(!B.value){this.set_and_show_number(B.key,0)}}.bindAsEventListener(this))}this.highlight_numbers(this.highlight_none_numbers_button,-1)},check_numbers:function(){this.highlight_numbers(this.highlight_wrong_numbers_button,-2);var A=true;this.numbers.each(function(B){if(B.value!=this.complete_numbers.get(B.key)){A=false}}.bindAsEventListener(this));if(A){this.is_solved=true;if(this.is_solved_by_script){alert("BohuÅ¾el sudoku bylo vyÅ™eÅ¡eno za vÃ¡s. MÅ¯Å¾ete hrÃ¡t znovu a vyÅ™eÅ¡it sudoku vlastnÃmi silami.")}else{if(this.is_user_logged){new Ajax.Request(this.URLS.complete_sudoku,{method:"post",parameters:{time:this.time,steps:this.steps}})}alert("Gratulujeme, sudoku bylo ÃºspÄ›Å¡nÄ› vyÅ™eÅ¡eno.")}}},solve_sudoku:function(){var A="Opravdu chcete vyÅ™eÅ¡it sudoku?";if(confirm(A)){this.is_solved_by_script=true;this.complete_numbers.each(function(B){this.set_and_show_number(B.key,B.value)}.bindAsEventListener(this));if(this.is_user_logged){new Ajax.Request(this.URLS.give_up_sudoku,{method:"post"})}}},save_sudoku:function(){var A="";this.numbers.each(function(B){A+=B.value+","});if(this.is_user_logged){new Ajax.Updater("pa-wrapper2",this.URLS.save,{method:"post",parameters:{current:A,time:this.time,steps:this.steps}})}else{alert("Hra bude uloÅ¾ena potÃ©, co se pÅ™ihlÃ¡sÃte nebo zaregistrujete.");new Ajax.Request(this.URLS.temporary_save,{method:"post",parameters:{current:A,time:this.time,steps:this.steps}})}},show_saved_sudoku:function(){this.saved_games_container.show()},new_sudoku:function(){if(this.is_user_logged&&!this.is_solved&&!this.is_solved_by_script){new Ajax.Request(this.URLS.give_up_sudoku,{method:"post"})}window.location=this.URLS.new_sudoku},print_sudoku:function(){this.print_container.show()},mouseout_sudoku:function(A){this.sudoku_tds.each(function(B){B.style.backgroundColor=this.COLORS.item}.bindAsEventListener(this))},mouseover_sudoku_item:function(A){var B=A.element().id.substr(0,6);this.selected_item=$(B);this.selected_element=A.element();this.highlight_sudoku_item(this.selected_item)},click_sudoku_item:function(B){var A=B.pointerX();var C=B.pointerY();if(B.isLeftClick()){this.left_click_menu.style.left=A-(this.left_click_menu_dimensions.width/2)+"px";this.left_click_menu.style.top=C-(this.left_click_menu_dimensions.height/2)+"px";this.show_left_click_menu()}else{this.right_click_menu.style.left=A-(this.right_click_menu_dimensions.width/2)+"px";this.right_click_menu.style.top=C-(this.right_click_menu_dimensions.height/2)+"px";this.show_right_click_menu()}},mouseover_help_number:function(A){A.element().style.backgroundColor=this.COLORS.highlighted_help_number},mouseout_help_number:function(A){A.element().style.backgroundColor="transparent"},mouseover_left_click_menu:function(A){this.show_left_click_menu()},mouseout_left_click_menu:function(A){this.hide_left_click_menu()},mouseover_left_click_menu_item:function(A){this.highlight_menu_item(A.element(),this.left_click_menu_tds)},click_left_click_menu_item:function(B){var A=parseInt(B.element().innerHTML);if(this.selected_element.match("span.help_number")){this.selected_element.innerHTML=A}else{this.set_and_show_number(this.selected_item.id,A);this.show_steps()}this.hide_left_click_menu()},mouseover_right_click_menu:function(A){this.show_right_click_menu()},mouseout_right_click_menu:function(A){this.hide_right_click_menu()},mouseover_right_click_menu_item:function(A){this.highlight_menu_item(A.element(),this.right_click_menu_tds)},click_right_click_menu_item:function(B){var C=B.element().id;if(C=="_remove_number"){if(this.selected_element.match("span.help_number")){this.selected_element.innerHTML=""}else{this.set_and_show_number(this.selected_item.id,0);this.show_steps()}}else{if(C=="_stress_number"){if(this.stressed_numbers.get(this.selected_item.id)){this.stressed_numbers.set(this.selected_item.id,false);$(this.selected_item.id+"_number_bg_color").style.backgroundColor="transparent"}else{this.stressed_numbers.set(this.selected_item.id,true);$(this.selected_item.id+"_number_bg_color").style.backgroundColor=this.COLORS.stressed_number}}else{if(C=="_suggest_number"){var A=this.complete_numbers.get(this.selected_item.id);this.set_and_show_number(this.selected_item.id,A);this.show_steps()}}}this.hide_right_click_menu()}});