var game_id;var puzzle_id=null;var rackEditable=true;var boardEditable=true;var dictionaries;var langVar=0;var boardCache;var rackCache;var tileCache;var rackLength=7;var resultsScroller=null;var lastTileValue=null;var lastRackValue=null;var rack="";var board="";var lexicon="";var design="";var resultsArray=new Array();var historicArray=new Array();var currentTilesCounts;var currentUsedTilesCounts;var currentTilesScores;var currentRackLength;var currentBingos=new Array();var currentDirection=1;var KEY_BACKSPACE=8;var KEY_TAB=9;var KEY_RETURN=13;var KEY_ESC=27;var KEY_LEFT=37;var KEY_UP=38;var KEY_RIGHT=39;var KEY_DOWN=40;var KEY_DELETE=46;var KEY_HOME=36;var KEY_END=35;var KEY_PAGEUP=33;var KEY_PAGEDOWN=34;var KEY_INSERT=45;var boardDesign={Lexulous:{board:[{x:0,y:0,b:'3W'},{x:3,y:0,b:'2L'},{x:7,y:0,b:'3W'},{x:2,y:1,b:'2W'},{x:6,y:1,b:'2L'},{x:5,y:2,b:'3L'},{x:4,y:3,b:'2W'},{x:6,y:5,b:'2L'},{x:7,y:7,b:'2W'}]},Standard:{board:[{x:0,y:0,b:'3W'},{x:3,y:0,b:'2L'},{x:7,y:0,b:'3W'},{x:1,y:1,b:'2W'},{x:5,y:1,b:'3L'},{x:2,y:2,b:'2W'},{x:6,y:2,b:'2L'},{x:3,y:3,b:'2W'},{x:7,y:3,b:'2L'},{x:4,y:4,b:'2W'},{x:5,y:5,b:'3L'},{x:6,y:6,b:'2L'},{x:7,y:7,b:'2W'}]},Literati:{board:[{x:3,y:0,b:'3W'},{x:6,y:0,b:'3L'},{x:2,y:1,b:'2L'},{x:5,y:1,b:'2W'},{x:1,y:2,b:'2L'},{x:4,y:2,b:'2L'},{x:0,y:3,b:'3W'},{x:3,y:3,b:'3L'},{x:7,y:3,b:'2W'},{x:2,y:4,b:'2L'},{x:6,y:4,b:'2L'},{x:1,y:5,b:'2W'},{x:5,y:5,b:'3L'},{x:0,y:6,b:'3L'},{x:4,y:6,b:'2L'},{x:3,y:7,b:'2W'}]},Wordscraper:{board:[{x:3,y:0,b:'4W'},{x:2,y:1,b:'3W'},{x:6,y:1,b:'3L'},{x:5,y:2,b:'2L'},{x:4,y:3,b:'2W'},{x:6,y:5,b:'2L'}]}};var gameDesign={Standard:{en:{rackLength:7,bingos:{7:50},tileCounts:{A:9,B:2,C:2,D:4,E:12,F:2,G:3,H:2,I:9,J:1,K:1,L:4,M:2,N:6,O:8,P:2,Q:1,R:6,S:4,T:6,U:4,V:2,W:2,X:1,Y:2,Z:1,' ':2},tileScores:{A:1,B:3,C:3,D:2,E:1,F:4,G:2,H:4,I:1,J:8,K:5,L:1,M:3,N:1,O:1,P:3,Q:10,R:1,S:1,T:1,U:1,V:4,W:4,X:8,Y:4,Z:10}},fr:{rackLength:7,bingos:{7:50},tileCounts:{A:9,B:2,C:2,D:3,E:15,F:2,G:2,H:2,I:8,J:1,K:1,L:5,M:3,N:6,O:6,P:2,Q:1,R:6,S:6,T:6,U:6,V:2,W:1,X:1,Y:1,Z:1,' ':2},tileScores:{A:1,B:3,C:3,D:2,E:1,F:4,G:2,H:4,I:1,J:8,K:10,L:1,M:2,N:1,O:1,P:3,Q:8,R:1,S:1,T:1,U:1,V:4,W:10,X:10,Y:10,Z:10}}},Lexulous:{en:{rackLength:8,bingos:{7:40,8:50},tileCounts:{A:8,B:2,C:2,D:3,E:11,F:2,G:2,H:2,I:8,J:1,K:1,L:3,M:2,N:5,O:7,P:2,Q:1,R:5,S:3,T:5,U:3,V:2,W:2,X:1,Y:3,Z:1,' ':2},tileScores:{A:1,B:4,C:4,D:2,E:1,F:5,G:2,H:5,I:1,J:8,K:6,L:1,M:4,N:1,O:1,P:4,Q:12,R:1,S:1,T:2,U:1,V:5,W:5,X:8,Y:5,Z:12}},fr:{rackLength:8,bingos:{7:40,8:50},tileCounts:{A:8,B:2,C:2,D:3,E:15,F:2,G:2,H:2,I:8,J:1,K:1,L:5,M:3,N:5,O:6,P:2,Q:1,R:6,S:6,T:6,U:6,V:2,W:1,X:1,Y:1,Z:1,' ':2},tileScores:{A:1,B:4,C:4,D:2,E:1,F:5,G:2,H:5,I:1,J:10,K:12,L:1,M:2,N:1,O:1,P:3,Q:8,R:1,S:1,T:1,U:1,V:5,W:12,X:12,Y:12,Z:12}}},Literati:{en:{rackLength:7,bingos:{7:35},tileCounts:{A:0,B:0,C:0,D:0,E:0,F:0,G:0,H:0,I:0,J:0,K:0,L:0,M:0,N:0,O:0,P:0,Q:0,R:0,S:0,T:0,U:0,V:0,W:0,X:0,Y:0,Z:0,' ':0},tileScores:{A:1,B:2,C:1,D:2,E:1,F:3,G:2,H:2,I:1,J:5,K:3,L:1,M:2,N:1,O:1,P:2,Q:5,R:1,S:1,T:1,U:2,V:3,W:4,X:5,Y:3,Z:4}},fr:{rackLength:7,bingos:{7:35},tileCounts:{A:0,B:0,C:0,D:0,E:0,F:0,G:0,H:0,I:0,J:0,K:0,L:0,M:0,N:0,O:0,P:0,Q:0,R:0,S:0,T:0,U:0,V:0,W:0,X:0,Y:0,Z:0,' ':0},tileScores:{A:1,B:2,C:1,D:2,E:1,F:3,G:2,H:2,I:1,J:5,K:3,L:1,M:2,N:1,O:1,P:2,Q:5,R:1,S:1,T:1,U:2,V:3,W:4,X:5,Y:3,Z:4}}},Wordscraper:{en:{rackLength:8,bingos:{7:40,8:50},tileCounts:{A:11,B:2,C:2,D:3,E:9,F:2,G:2,H:2,I:8,J:1,K:1,L:3,M:2,N:5,O:9,P:2,Q:1,R:5,S:5,T:5,U:3,V:2,W:2,X:1,Y:3,Z:1,' ':2},tileScores:{A:1,B:4,C:4,D:2,E:1,F:5,G:2,H:5,I:1,J:10,K:6,L:1,M:4,N:1,O:1,P:4,Q:12,R:1,S:1,T:2,U:1,V:5,W:5,X:10,Y:5,Z:12}},fr:{rackLength:7,bingos:{7:50},tileCounts:{A:11,B:2,C:2,D:3,E:9,F:2,G:2,H:2,I:8,J:1,K:1,L:3,M:2,N:5,O:9,P:2,Q:1,R:5,S:5,T:5,U:3,V:2,W:2,X:1,Y:3,Z:1,' ':2},tileScores:{A:1,B:4,C:4,D:2,E:1,F:5,G:2,H:5,I:1,J:10,K:6,L:1,M:4,N:1,O:1,P:4,Q:12,R:1,S:1,T:2,U:1,V:5,W:5,X:10,Y:5,Z:12}}}};function updateScores(){$("#rackHolder").find("input").each(function(){if($(this).val()!==""){$(this).next().html(currentTilesScores[$(this).val()])}})}function updateAllTilesCount(){for(var a in currentUsedTilesCounts){currentUsedTilesCounts[a]=0}$("#board").find("input.tileValue").each(function(){if($(this).parent().hasClass("blank")===true){currentUsedTilesCounts[" "]++}else{currentUsedTilesCounts[$(this).val()]++}});$("#rackHolder").find("input").each(function(){if($(this).hasClass("rack")===true){currentUsedTilesCounts[$(this).val().toUpperCase()]++}});updateStats()}function updateTilesCount(a){a=a.toUpperCase();var b="";if(a==" "){b="#letter__"}else{b="#letter_"+a}var c=currentTilesCounts[a]-currentUsedTilesCounts[a];if(c<0)c=0;$(b).parent().next().children().html(c+"/"+currentTilesCounts[a])}function updateStats(){$("#gameDesign").find("span.remainingtile").each(function(){var a=$(this).attr("id");a=a.charAt(7);if((a!="")&&(a!="_")){$(this).next().html(currentTilesScores[a]);var b=currentTilesCounts[a]-currentUsedTilesCounts[a];if(b<0)b=0;$(this).parent().next().children().html(b+"/"+currentTilesCounts[a])}else if(a=="_"){var b=currentTilesCounts[" "]-currentUsedTilesCounts[" "];if(b<0)b=0;$(this).parent().next().children().html(b+"/"+currentTilesCounts[" "])}});$("#displayRackLength").children().html(currentRackLength);if(currentBingos[8]){$("#displayBingo8").css("display","block");$("#displayBingo7").children().html(currentBingos[7]);$("#displayBingo8").children().html(currentBingos[8])}else{$("#displayBingo8").css("display","none");$("#displayBingo7").children().html(currentBingos[7])}}function updateScoresAndCounts(){if((lexicon=="ODS4")||(lexicon=="ODS5")){currentTilesScores=gameDesign[design]["fr"]["tileScores"];currentTilesCounts=gameDesign[design]["fr"]["tileCounts"];currentBingos=gameDesign[design]["fr"]["bingos"];currentRackLength=gameDesign[design]["fr"]["rackLength"]}else{currentTilesScores=gameDesign[design]["en"]["tileScores"];currentTilesCounts=gameDesign[design]["en"]["tileCounts"];currentBingos=gameDesign[design]["en"]["bingos"];currentRackLength=gameDesign[design]["en"]["rackLength"]}updateScores();updateStats()}function updateRackLength(){var a;if((lexicon=="ODS4")||(lexicon=="ODS5")){a=gameDesign[design]["fr"]["rackLength"]}else{a=gameDesign[design]["en"]["rackLength"]}if(a==8){$("#rackContent").removeClass("rackLength7").addClass("rackLength8");$("#rack_7").css("display","inline").next().css("display","inline")}else{$("#rackContent").removeClass("rackLength8");$("#rack_7").css("display","none").removeClass("racktile").val("").next().html("").css("display","none")}}function updateDesign(){$("#board td").each(function(){$(this).removeClass("b2L b2W b3L b3W b4L b4W b5L b5W")});var a=boardDesign[design].board.length;var b;for(var c=0;c<a;c++){var d=boardDesign[design].board[c]["x"];var e=boardDesign[design].board[c]["y"];var f=boardDesign[design].board[c]["b"];f="b"+f;b="#s_"+d+"_"+e;$(b).parent().parent().addClass(f);b="#s_"+(14-d)+"_"+e;$(b).parent().parent().addClass(f);b="#s_"+d+"_"+(14-e);$(b).parent().parent().addClass(f);b="#s_"+(14-d)+"_"+(14-e);$(b).parent().parent().addClass(f);b="#s_"+e+"_"+d;$(b).parent().parent().addClass(f);b="#s_"+(14-e)+"_"+d;$(b).parent().parent().addClass(f);b="#s_"+e+"_"+(14-d);$(b).parent().parent().addClass(f);b="#s_"+(14-e)+"_"+(14-d);$(b).parent().parent().addClass(f)}}function changeDesign(a){if((a=="Standard")||(a=="Lexulous")||(a=="Literati")||(a=="Wordscraper")){design=a;updateDesign();updateScoresAndCounts();updateRackLength()}}function toggleGameStat(){if($("#gameDesign").css("display")=="none"){$("#gameResults").css("display","none");$("#gameDesign").css("display","block")}else{$("#gameDesign").css("display","none");$("#gameResults").css("display","block")}}function changeDictionary(a){lexicon=a;updateScoresAndCounts();updateRackLength()}function resetBoard(){$("#board input").each(function(a){$(this).val("");$(this).parent().removeClass("tile").removeClass("blank")});updateAllTilesCount()}function resetRack(){$("#rackHolder input").each(function(a){$(this).val("");$(this).removeClass("racktile");$(this).next().html("")});updateAllTilesCount()}function getResults(){rack=getRack();board=getBoard();if($("#gameDesign").css("display")=="block"){$("#gameDesign").css("display","none");$("#gameResults").css("display","block");$("#showGameStat").attr("checked",false)}$.ajax({url:"http://www.scrabblecheat.org/cgi-bin/MySpeedyScrabblerV3.cgi",data:"language=EN&rack="+rack+"&lexicon="+lexicon.toUpperCase()+"&design="+design.toUpperCase()+"&board="+board,dataType:'json',success:function(b){$("#resultsContent").empty();if(b.status=="error"){$("#resultsContent").append(b.msg)}else{var c=b.nb;var d="";if(c>50){d="<p>"+c+" solutions were found ! Showing the first 50.</p>";c=50}else if(c==0){d="<p>No results...</p>"}else{d="<p>"+c+" solutions were found !</p>"}$("#resultsContent").append(d);for(var e=0;e<c;e++){var d="<p class='result' id='result_"+e+"'>"+b.results.result[e].word+" - "+b.results.result[e].value+" points</p>";$("#resultsContent").append(d);resultsArray[e]=b.results.result[e]}$(".result").hover(function(){var a=$(this).attr("id").replace(/[a-z_]*/,"");showResult(a,false)},function(){var a=$(this).attr("id").replace(/[a-z_]*/,"");hideResult(a)});$(".result").click(function(){var a=$(this).attr("id").replace(/[a-z_]*/,"");$(this).addClass("selected");confirmMove(e)})}}})}function clearMove(){for(var a=0;a<historicArray.length;a++){var b=historicArray[a]["x"];var c=historicArray[a]["y"];var d=historicArray[a]["letter"];var e="#s_"+b+"_"+c;$(e).parent().removeClass("tile");$(e).parent().removeClass("blank");$(e).val("");var f=$("#rackHolder").find("input[value='']:first");if(d.match(/[a-z]/))f.val(" ");else{f.val(d);f.next().html(currentTilesScores[f.val()])}f.addClass("racktile")}$("#resultsContent").children().removeClass("hide");$("#resultsContent").children().removeClass("selected");historicArray.length=0;updateAllTilesCount()}function confirmMove(e){historicArray.length=0;$("#board").find(".movetile").each(function(a){$(this).removeClass("movetile");var b=$(this).children(":first");var c=b.attr("id").split("_");var d=new Array();d["letter"]=b.val();d["x"]=c[1];d["y"]=c[2];historicArray.push(d)});$("#resultsContent").children().addClass("hide");updateAllTilesCount()}function showResult(a){var b=resultsArray[a].word;var c=resultsArray[a].direction;var d=resultsArray[a].x;var e=resultsArray[a].y;for(var f=0;f<b.length;f++){var g="#s_"+d+"_"+e;if($(g).parent().hasClass("tile")){}else{$(g).parent().addClass("tile");$(g).parent().addClass("movetile");$(g).val(b.charAt(f));if(b.charAt(f).match(/[a-z]/))$(g).parent().addClass("blank");var i="";var h;if(b.charAt(f).match(/[a-z]/)){$("#rackHolder").find("input").each(function(){if($(this).val()==" ")h=$(this)})}else{i="input[value='"+b.charAt(f)+"']:first";var h=$("#rackHolder").find(i)}var j=h.next().next();while(j.hasClass("rack")&&j.val()!=""){h.val(j.val());h.next().html(j.next().html());h=j;j=h.next().next()}h.removeClass("racktile");h.val("");h.next().html("")}if(c==0)d++;else e++}}function hideResult(a){var b=resultsArray[a].word;var c=resultsArray[a].direction;var d=resultsArray[a].x;var e=resultsArray[a].y;for(var f=0;f<b.length;f++){var g="#s_"+d+"_"+e;if($(g).parent().hasClass("movetile")){$(g).parent().removeClass("tile");$(g).parent().removeClass("movetile");$(g).parent().removeClass("blank");$(g).val("");var i=$("#rackHolder").find("input[value='']:first");if(b.charAt(f).match(/[a-z]/))i.val(" ");else i.val(b.charAt(f));i.addClass("racktile");if(i.val()!=" ")i.next().html(currentTilesScores[i.val()])}if(c==0)d++;else e++}}function getRack(){var b="";$("#rackHolder").find("input").each(function(a){b+=$(this).val()});b=b.replace(/ /g,"*");return b}function getBoard(){var b="";$(".tileValue").each(function(a){if($(this).val()=="")b+="-";else b+=$(this).val()});return b}function setupObservers(){$(".tileValue").focus(function(a){$(this).parent().parent().addClass("selected");if(currentDirection==1)$(this).parent().parent().addClass("right");else $(this).parent().parent().addClass("down")});$(".tileValue").blur(function(a){$(this).parent().parent().removeClass("selected");$(this).parent().parent().removeClass("right");$(this).parent().parent().removeClass("down")});$(".tileValue").keyup(function(a){var b=a.which||a.keyCode;var c=$(this).attr("id").split("_");var d=parseInt(c[1]);var e=parseInt(c[2]);if((b==KEY_LEFT)||(b==KEY_RIGHT)||(b==KEY_UP)||(b==KEY_DOWN)){if(b==KEY_LEFT){if(d>0){$(this).parent().parent().removeClass("right");$(this).parent().parent().removeClass("down");$(this).parent().parent().removeClass("selected");c="#s_"+eval(d-1)+"_"+e;$(c).focus()}}else if(b==KEY_RIGHT){if(currentDirection==1){if(d<14){$(this).parent().parent().removeClass("right");$(this).parent().parent().removeClass("down");$(this).parent().parent().removeClass("selected");c="#s_"+eval(d+1)+"_"+e;$(c).focus()}}else{currentDirection=1;$(this).parent().parent().removeClass("down");$(this).parent().parent().addClass("right")}}else if(b==KEY_DOWN){if(currentDirection==0){if(e<14){$(this).parent().parent().removeClass("right");$(this).parent().parent().removeClass("down");$(this).parent().parent().removeClass("selected");c="#s_"+d+"_"+eval(e+1);$(c).focus()}}else{currentDirection=0;$(this).parent().parent().removeClass("right");$(this).parent().parent().addClass("down")}}else if(b==KEY_UP){if(e>0){$(this).parent().parent().removeClass("right");$(this).parent().parent().removeClass("down");$(this).parent().parent().removeClass("selected");c="#s_"+d+"_"+eval(e-1);$(c).focus()}}}if((65<=a.which&&a.which<=65+25)||(97<=a.which&&a.which<=97+25)){if($(this).hasClass("blank")==false){if($(this).val()!=""){currentUsedTilesCounts[$(this).val().toUpperCase()]--;updateTilesCount($(this).val().toUpperCase())}currentUsedTilesCounts[String.fromCharCode(a.keyCode).toUpperCase()]++;updateTilesCount(String.fromCharCode(a.keyCode).toUpperCase())}$(this).parent().addClass("tile");$(this).val(String.fromCharCode(a.keyCode));if((currentDirection==1)&&(d<14)){$(this).parent().parent().removeClass("right");$(this).parent().parent().removeClass("down");$(this).parent().parent().removeClass("selected");c="#s_"+eval(d+1)+"_"+e;$(c).focus()}else if((currentDirection==0)&&(e<14)){$(this).parent().parent().removeClass("right");$(this).parent().parent().removeClass("down");$(this).parent().parent().removeClass("selected");c="#s_"+d+"_"+eval(e+1);$(c).focus()}}else if((b==KEY_DELETE)||(b==KEY_BACKSPACE)){if($(this).val()!=""){if($(this).hasClass("blank")){currentUsedTilesCounts[" "]--;updateTilesCount(" ")}else{currentUsedTilesCounts[$(this).val().toUpperCase()]--;updateTilesCount($(this).val().toUpperCase())}$(this).val("");$(this).parent().removeClass("tile");$(this).parent().removeClass("blank")}if((currentDirection==1)&&(d>0)){$(this).parent().parent().removeClass("right");$(this).parent().parent().removeClass("down");$(this).parent().parent().removeClass("selected");c="#s_"+eval(d-1)+"_"+e;$(c).focus()}else if((currentDirection==0)&&(e>0)){$(this).parent().parent().removeClass("right");$(this).parent().parent().removeClass("down");$(this).parent().parent().removeClass("selected");c="#s_"+d+"_"+eval(e-1);$(c).focus()}}else if(b==32){var f=$(this).val();if(f!=""){if($(this).parent().hasClass("blank")==false){$(this).parent().addClass("blank");$(this).val(f.toLowerCase());currentUsedTilesCounts[$(this).val().toUpperCase()]--;updateTilesCount($(this).val().toUpperCase());currentUsedTilesCounts[" "]++;updateTilesCount(" ")}else{$(this).parent().removeClass("blank");$(this).val(f.toUpperCase());currentUsedTilesCounts[$(this).val().toUpperCase()]++;updateTilesCount($(this).val().toUpperCase());currentUsedTilesCounts[" "]--;updateTilesCount(" ")}}}});$("#rackHolder").find("input").click(function(a){var b=$(this);while(b.prev().prev().val()==""){b=b.prev().prev();if(b.attr("id")=="rack_0")break}b.focus()});$("#rackHolder").find("input").keyup(function(a){var b=a.which||a.keyCode;if((65<=a.which&&a.which<=65+25)||(97<=a.which&&a.which<=97+25)||(a.which==32)){$(this).addClass("racktile");if($(this).val()!=""){currentUsedTilesCounts[$(this).val().toUpperCase()]--;updateTilesCount($(this).val().toUpperCase())}currentUsedTilesCounts[String.fromCharCode(a.keyCode).toUpperCase()]++;updateTilesCount(String.fromCharCode(a.keyCode).toUpperCase());$(this).val(String.fromCharCode(a.keyCode));if(a.which!=32)$(this).next().html(currentTilesScores[String.fromCharCode(a.keyCode)]);else $(this).next().html("");if($(this).next().next().hasClass("rack"))$(this).next().next().focus()}else if((b==KEY_DELETE)||(b==KEY_BACKSPACE)){var c=$(this);var d=c.next().next();if($(this).val()!=""){currentUsedTilesCounts[c.val().toUpperCase()]--;updateTilesCount(c.val().toUpperCase());while(d.hasClass("rack")&&d.val()!=""){c.val(d.val());c.next().html(d.next().html());c=d;d=c.next().next()}c.removeClass("racktile");c.val("");c.next().html("")}else{var e=c.prev().prev();if(e.hasClass("rack")){currentUsedTilesCounts[e.val().toUpperCase()]--;updateTilesCount(e.val().toUpperCase());e.removeClass("racktile");e.val("");e.next().html("");e.focus()}}}})}function openDictionaryHelp(){$('#dialog_dictionary').dialog('open');return false}$(document).ready(function(){setupObservers();$("#rack_0").focus();$("#radio_dictionary").buttonset();$("#radio_design").buttonset();$("#clear_action").buttonset();$("#do_action").buttonset();$('#dialog_dictionary').dialog({autoOpen:false,modal:true,width:400});design="Standard";lexicon="TWL06";$("#radio_design").find("input").attr("checked",false);$("#radio_design").find("input").removeAttr("checked");$("#radio_dictionary").find("input").attr("checked",false);$("#radio_dictionary").find("input").removeAttr("checked");var a="#radio"+design;$(a).attr("checked","checked");$(a).attr("checked",true);a="#radio"+lexicon;$(a).attr("checked","checked");$(a).attr("checked",true);$("#showGameStat").attr("checked",false);$("#showGameStat").removeAttr("checked");currentTilesCounts=gameDesign["Lexulous"]["en"]["tileCounts"];currentUsedTilesCounts={A:0,B:0,C:0,D:0,E:0,F:0,G:0,H:0,I:0,J:0,K:0,L:0,M:0,N:0,O:0,P:0,Q:0,R:0,S:0,T:0,U:0,V:0,W:0,X:0,Y:0,Z:0,' ':0};currentTilesScores=gameDesign["Lexulous"]["en"]["tileScores"];resetBoard();resetRack();updateDesign();updateScoresAndCounts();$("#resultsContent").ajaxError(function(){$(this).empty();$(this).append("Erreur de communication avec le serveur. Merci de réessayer plus tard !")})});

