By Zikes
—
Last update
Mar 14, 2006
—
Installed
287 times.
// ==UserScript==
// @name IronSudoku Enhancer v.02
// @namespace http://www.thezikes.com/
// @description Adds extra functionality to IronSudoku
// @include http://www.ironsudoku.com/
// ==/UserScript==
var debug=true;
function $(id){
return document.getElementById(id);
}
function testgrid(){
if(typeof unsafeWindow.master_grid=='undefined'){
window.setTimeout(testgrid, 100);
}else{
init();
}
}
function init(){
GM_registerMenuCommand( "Clear the board", clearAll);
GM_registerMenuCommand( "Clear all pencilmarks", clearPencils);
GM_registerMenuCommand( "Clear all red pencilmarks", clearRed);
GM_registerMenuCommand( "Clear all green pencilmarks", clearGreen);
}
window.setTimeout(testgrid, .500);
function clearAll(){
for(var x=1;x<=9;x++){
for(var y=1;y<=9;y++){
if(!unsafeWindow.master_grid[x][y].value>0) unsafeWindow.ClearSquare(x,y);
}
}
}
function clearRed(){
for(var x=1;x<=9;x++){
for(var y=1;y<=9;y++){
for (i=1; i<=9; i++) {
var val=unsafeWindow.grid[x][y]['mini'][i];
if(val==-1){
unsafeWindow.grid[x][y]['mini'][i]=0;
if ($('r'+x+'c'+y+'n'+i)) $('puzzle').removeChild($('r'+x+'c'+y+'n'+i));
}
}
}
}
}
function clearGreen(){
for(var x=1;x<=9;x++){
for(var y=1;y<=9;y++){
for (i=1; i<=9; i++) {
var val=unsafeWindow.grid[x][y]['mini'][i];
if(val==1){
unsafeWindow.grid[x][y]['mini'][i]=0;
if ($('r'+x+'c'+y+'n'+i)) $('puzzle').removeChild($('r'+x+'c'+y+'n'+i));
}
}
}
}
}
function clearPencils(){
for(var x=1;x<=9;x++){
for(var y=1;y<=9;y++){
for (i=1; i<=9; i++) {
var val=unsafeWindow.grid[x][y]['mini'][i];
unsafeWindow.grid[x][y]['mini'][i]=0;
if ($('r'+x+'c'+y+'n'+i)) $('puzzle').removeChild($('r'+x+'c'+y+'n'+i));
}
}
}
}
unsafeWindow.ModKey=function(e) {
if (!e) var e = window.event;
if(e.shiftKey && e.ctrlKey) // Row/Col Green
return 'green';
else if (e.ctrlKey && e.altKey) // Row/Col Red
return 'red';
else if (e.shiftKey) // Single cell green
return 'shift';
else if (e.altKey) // Single cell red
return 'alt';
else
return false;
}
unsafeWindow.SetNumber=function(r,c,num,mod_key){
if ($('r'+r+'c'+c+'n'+num)) $('puzzle').removeChild($('r'+r+'c'+c+'n'+num));
if ((mod_key == 'shift' && unsafeWindow.grid[r][c]['mini'][num] == 1) || (mod_key == 'alt' && unsafeWindow.grid[r][c]['mini'][num] == -1)) { // toggle tiny number off
unsafeWindow.grid[r][c]['mini'][num] = 0;
unsafeWindow.CloseBigSquare();
}else if (mod_key == 'shift' || mod_key == 'alt') { // toggle tiny number on
if (mod_key == 'shift') {
unsafeWindow.grid[r][c]['mini'][num] = 1;
}
else if (mod_key == 'alt') {
unsafeWindow.grid[r][c]['mini'][num] = -1;
}
unsafeWindow.grid[r][c]['value'] = 0;
$('r'+r+'c'+c).innerHTML = '<img src="/tiles/blank.gif" height="40" width="40" onClick="PopUpSquare('+r+','+c+')" style="cursor:pointer" />';
unsafeWindow.CreateTinySquare(r,c,num,mod_key);
unsafeWindow.CloseBigSquare();
}else if(mod_key == 'red' || mod_key == 'green'){
var val=0;
if(mod_key == 'green'){val=1}
if(mod_key == 'red'){val=-1}
if(confirm('Ok for row, Cancel for column')){ // Current row
for(var x=1; x<=9; x++){
if(unsafeWindow.grid[r][x]['value']==0){
unsafeWindow.grid[r][x]['mini'][num] = val;
$('r'+r+'c'+x).innerHTML = '<img src="/tiles/blank.gif" height="40" width="40" onClick="PopUpSquare('+r+','+x+')" style="cursor:pointer" />';
unsafeWindow.CreateTinySquare(r,x,num, val==1 ? 'shift' : 'alt');
}
}
}else{ // Current column
for(var x=1; x<=9; x++){
if(unsafeWindow.grid[x][c]['value']==0){
unsafeWindow.grid[x][c]['mini'][num] = val;
$('r'+x+'c'+c).innerHTML = '<img src="/tiles/blank.gif" height="40" width="40" onClick="PopUpSquare('+x+','+c+')" style="cursor:pointer" />';
unsafeWindow.CreateTinySquare(x,c,num, val==1 ? 'shift' : 'alt');
}
}
}
unsafeWindow.CloseBigSquare();
}else{
if (unsafeWindow.grid[r][c]['value'] == num) { // toggle number off
unsafeWindow.grid[r][c]['value'] = 0;
$('r'+r+'c'+c).innerHTML = '<img src="/tiles/blank.gif" height="40" width="40" onClick="PopUpSquare('+r+','+c+')" style="cursor:pointer" />';
unsafeWindow.CloseBigSquare();
}
else { // toggle number on
unsafeWindow.grid[r][c]['value'] = num;
unsafeWindow.grid[r][c]['mini'][num] = 0;
$('r'+r+'c'+c).innerHTML = '<img src="/tiles/' + unsafeWindow.tile_type + '/' + num + '.gif" height="40" width="40" onClick="PopUpSquare('+r+','+c+')" style="cursor:pointer" />';
unsafeWindow.CloseBigSquare();
unsafeWindow.ClearTinySquares(r,c);
unsafeWindow.CheckMove(r,c);
unsafeWindow.CheckPuzzle();
}
unsafeWindow.Blink('r'+r+'c'+c,4);
}
}