IronSudoku Enhancer v.02

By Zikes Last update Mar 14, 2006 — Installed 287 times. Daily Installs: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
// ==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);
	}
}