function print_board(){
	document.getElementById("main_board_form").action = "/sudoku-print.php";
	document.getElementById("main_board_form").target = "_blank";
	document.getElementById("main_board_form").submit();
}

function submit_board(){
	document.getElementById("main_board_form").action = "/addhiscore.php";
	document.getElementById("main_board_form").target = "";
	document.getElementById("main_board_form").submit();
}

function change_board_size(size) {
	switch(size) {
		case '20': case 20:
			td_size = 20;
			td_font_size = 12;
			box_size = 20;
			box_font_size = 12;
		break;
		case '30': case 30:
			td_size = 30;
			td_font_size = 16;
			box_size = 30;
			box_font_size = 16;
		break;
		case '50': case 50:
			td_size = 50;
			td_font_size = 22;
			box_size = 50;
			box_font_size = 22;
		break;
		case '60': case 60:
			td_size = 60;
			td_font_size = 28;
			box_size = 60;
			box_font_size = 28;
		break;
		default: case '40': case 40:
			td_size = 40;
			td_font_size = 18;
			box_size = 40;
			box_font_size = 18;
		break;
	}
	for (i = 0; i < 81; i++) {
		tmp = document.getElementById('td'+i);
		tmp.style.height		= td_size;
		tmp.style.width			= td_size;
		tmp.style.fontSize	= td_font_size;

		tmp = document.getElementById('ubox'+i);
		tmp.style.width 		= box_size;
		tmp.style.fontSize	= box_font_size;
	}	
	setCookie("board_size", size, 64000);
}

function preload_images() {
	im				= new Array();
	im[0]			= new Image();
	im[0].src = '/images/b_1_p.gif';
	im[1]			= new Image();
	im[1].src = '/images/b_2_p.gif';
	im[2]			= new Image();
	im[2].src = '/images/b_3_p.gif';
	im[3]			= new Image();
	im[3].src = '/images/b_4_p.gif';
	im[4]			= new Image();
	im[4].src = '/images/b_5_p.gif';
	im[5]			= new Image();
	im[5].src = '/images/b_6_p.gif';
	im[6]			= new Image();
	im[6].src = '/images/b_7_p.gif';
	im[7]			= new Image();
	im[7].src = '/images/b_8_p.gif';
	im[8]			= new Image();
	im[8].src = '/images/b_9_p.gif';
	im[9]			= new Image();
	im[9].src = '/images/b_clearboard_p.gif';
	im[10]			= new Image();
	im[10].src = '/images/b_submitsolution_p.gif';
	im[11]			= new Image();
	im[11].src = '/images/b_printthisboard_p.gif';
	im[12]			= new Image();
	im[12].src = '/images/b_checkyourscore_p.gif';
	im[13]			= new Image();
	im[13].src = '/images/b_sendfeedback_p.gif';
	im[14]			= new Image();
	im[14].src = '/images/b_sudokuforums_p.gif';
	im[15]			= new Image();
	im[15].src = '/images/b_saveprogress_p.gif';
}

function update_board_color(color) {
	for (i = 0; i < 81; i++) {
		x = document.getElementById("ubox"+i);
		if (x.type == "hidden") {
			td = document.getElementById("td"+i);
			td.style.backgroundColor = color;
		}
	}
	setCookie("board_color", color, 64000);
}

function clear_board() {
	if (confirm("לנקות את הלוח?")) {
		for (i = 0; i < 81; i++) {
			x = document.getElementById("ubox"+i);
			if (x.type == "text") {
				x.value = "";
			}
		}
	}
}

function boxclick(myBox) {
	if (digit != 0) {
		myBox.value = digit;
	}
}

function set_board_from_cookie(saved_date, saved_data) {
	if (saved_data.length > 80) {
		if (confirm("לוח זה נשמע בעבר, בתאריך, "+saved_date+". האם אתה מעוניין בטעינת לוח שמור זה?")) {
			info = saved_data.split(',');
			for (i = 0; i < 81; i++) {
				x = document.getElementById("ubox"+i);
				if (x.type == "text" && info[i]) {
					x.value = info[i];
				}
			}
		}
	}
	relateColor('pick1', getObj('pick1field').value);
	
	board_size = getCookie('board_size');
	if (board_size == "") {
		board_size = '40';
	}
	change_board_size(board_size);

	document.getElementById("temp_span").style.visibility = "hidden";
	document.getElementById("main_span").style.visibility = "visible";
}

function check() {
	cells = new Array()
	cells[ 0] = new Array( 0, 1, 2, 3, 4, 5, 6, 7, 8);
	cells[ 1] = new Array( 9,10,11,12,13,14,15,16,17);
	cells[ 2] = new Array(18,19,20,21,22,23,24,25,26);
	cells[ 3] = new Array(27,28,29,30,31,32,33,34,35);
	cells[ 4] = new Array(36,37,38,39,40,41,42,43,44);
	cells[ 5] = new Array(45,46,47,48,49,50,51,52,53);
	cells[ 6] = new Array(54,55,56,57,58,59,60,61,62);
	cells[ 7] = new Array(63,64,65,66,67,68,69,70,71);
	cells[ 8] = new Array(72,73,74,75,76,77,78,79,80);

	cells[ 9] = new Array( 0, 1, 2, 9,10,11,18,19,20);
	cells[10] = new Array( 3, 4, 5,12,13,14,21,22,23);
	cells[11] = new Array( 6, 7, 8,15,16,17,24,25,26);
	cells[12] = new Array(27,28,29,36,37,38,45,46,47);
	cells[13] = new Array(30,31,32,39,40,41,48,49,50);
	cells[14] = new Array(33,34,35,42,43,44,51,52,53);
	cells[15] = new Array(54,55,56,63,64,65,72,73,74);
	cells[16] = new Array(57,58,59,66,67,68,75,76,77);
	cells[17] = new Array(60,61,62,69,70,71,78,79,80);

	cells[18] = new Array( 0, 3, 6,27,30,33,54,57,60);
	cells[19] = new Array( 1, 4, 7,28,31,34,55,58,61);
	cells[20] = new Array( 2, 5, 8,29,32,35,56,59,62);
	cells[21] = new Array( 9,12,15,36,39,42,63,66,69);
	cells[22] = new Array(10,13,16,37,40,43,64,67,70);
	cells[24] = new Array(11,14,17,38,41,44,65,68,71);
	cells[23] = new Array(18,21,24,45,48,51,72,75,78);
	cells[25] = new Array(19,22,25,46,49,52,73,76,79);
	cells[26] = new Array(20,23,26,47,50,53,74,77,80);

	temp = new Array();
	
	for (rule in cells) {

		for (i = 1; i < 10; i++) temp[i]=0;
		for (cell in cells[rule]) {
			c = document.getElementById("ubox" + cells[rule][cell]).value;
			temp[c] = 1;
		}
		for (i = 1; i < 10; i++) {
			if (temp[i] == 0) {
				uboxcolor = new Array();
				tdcolor = new Array();
				for (cell in cells[rule]) {
					uboxcolor[cell] = document.getElementById("ubox" + cells[rule][cell]).style.background;
					tdcolor[cell] = document.getElementById("td" + cells[rule][cell]).style.background;
					document.getElementById("ubox" + cells[rule][cell]).style.background = "#ff8888";
					document.getElementById("td" + cells[rule][cell]).style.background = "#ff8888";
				}
				alert("You have made a mistake in the cells marked red");
				for (cell in cells[rule]) {
					document.getElementById("ubox" + cells[rule][cell]).style.background = uboxcolor[cell];
					document.getElementById("td" + cells[rule][cell]).style.background = tdcolor[cell];
				}
				return false;
			}
		}
		
	}
	return true;
}

function digit_click(myImg, myDigit) {
	offSrc = 'http://www.sudoku-online.co.il/images/b_' + myDigit + '_u.gif';
	if (myImg.src == offSrc) {
		digit = myDigit;
		for (i = 1; i < 10; i++) {
			if (i != digit) {
				document.getElementById('digit1_' + i).src = 'http://www.sudoku-online.co.il/images/b_' + i + '_u.gif';
				document.getElementById('digit2_' + i).src = 'http://www.sudoku-online.co.il/images/b_' + i + '_u.gif';
			} else {
				document.getElementById('digit1_' + i).src = 'http://www.sudoku-online.co.il/images/b_' + i + '_p.gif';
				document.getElementById('digit2_' + i).src = 'http://www.sudoku-online.co.il/images/b_' + i + '_p.gif';
			}
		}
	} else {
		document.getElementById('digit1_' + myDigit).src = 'http://www.sudoku-online.co.il/images/b_' + myDigit + '_u.gif';
		document.getElementById('digit2_' + myDigit).src = 'http://www.sudoku-online.co.il/images/b_' + myDigit + '_u.gif';
		digit = 0;		
	}
}

// Color Picker Script from Flooble.com
// For more information, visit 
//	http://www.flooble.com/scripts/colorpicker.php
// Copyright 2003 Animus Pactum Consulting inc.
// You may use and distribute this code freely, as long as
// you keep this copyright notice and the link to flooble.com
// if you chose to remove them, you must link to the page
// listed above from every web page where you use the color
// picker code.
//---------------------------------------------------------
     var perline = 9;
     var divSet = false;
     var curId;
     var colorLevels = Array('0', '3', '6', '9', 'C', 'F');
     var colorArray = Array();
     var ie = false;
     var nocolor = 'none';
	 if (document.all) { ie = true; nocolor = ''; }
	 function getObj(id) {
		if (ie) { return document.all[id]; } 
		else {	return document.getElementById(id);	}
	 }

     function addColor(r, g, b) {
     	var red = colorLevels[r];
     	var green = colorLevels[g];
     	var blue = colorLevels[b];
     	addColorValue(red, green, blue);
     }

     function addColorValue(r, g, b) {
     	colorArray[colorArray.length] = '#' + r + r + g + g + b + b;
     }
     
     function setColor(color) {
     	var link = getObj(curId);
     	var field = getObj(curId + 'field');
     	var picker = getObj('colorpicker');
     	field.value = color;
     	if (color == '') {
	     	link.style.background = nocolor;
	     	link.style.color = nocolor;
	     	color = nocolor;
     	} else {
	     	link.style.background = color;
	     	link.style.color = color;
	    }
     	picker.style.display = 'none';
	    eval(getObj(curId + 'field').title);
     }
        
     function setDiv() {     
     	if (!document.createElement) { return; }
        var elemDiv = document.createElement('div');
        if (typeof(elemDiv.innerHTML) != 'string') { return; }
        genColors();
        elemDiv.id = 'colorpicker';
	    elemDiv.style.position = 'absolute';
        elemDiv.style.display = 'none';
        elemDiv.style.border = '#000000 1px solid';
        elemDiv.style.background = '#FFFFFF';
        elemDiv.innerHTML = '<span style="font-family:Verdana; font-size:11px;">Pick a color: ' 
          	+ '(<a href="javascript:setColor(\'\');">No color</a>)<br>' 
        	+ getColorTable() 
        	+ '<center><a href="http://www.flooble.com/scripts/colorpicker.php"'
        	+ ' target="_blank">color picker</a> by <a href="http://www.flooble.com" target="_blank"><b>flooble</b></a></center></span>';

        document.body.appendChild(elemDiv);
        divSet = true;
     }
     
     function pickColor(id) {
     	if (!divSet) { setDiv(); }
     	var picker = getObj('colorpicker');     	
		if (id == curId && picker.style.display == 'block') {
			picker.style.display = 'none';
			return;
		}
     	curId = id;
     	var thelink = getObj(id);
     	picker.style.top = getAbsoluteOffsetTop(thelink) + 20;
     	picker.style.left = getAbsoluteOffsetLeft(thelink);     
	picker.style.display = 'block';
     }
     
     function genColors() {
        addColorValue('0','0','0');
        addColorValue('3','3','3');
        addColorValue('6','6','6');
        addColorValue('8','8','8');
        addColorValue('9','9','9');                
        addColorValue('A','A','A');
        addColorValue('C','C','C');
        addColorValue('E','E','E');
        addColorValue('F','F','F');                                
			
        for (a = 1; a < colorLevels.length; a++)
			addColor(0,0,a);
        for (a = 1; a < colorLevels.length - 1; a++)
			addColor(a,a,5);

        for (a = 1; a < colorLevels.length; a++)
			addColor(0,a,0);
        for (a = 1; a < colorLevels.length - 1; a++)
			addColor(a,5,a);
			
        for (a = 1; a < colorLevels.length; a++)
			addColor(a,0,0);
        for (a = 1; a < colorLevels.length - 1; a++)
			addColor(5,a,a);
			
			
        for (a = 1; a < colorLevels.length; a++)
			addColor(a,a,0);
        for (a = 1; a < colorLevels.length - 1; a++)
			addColor(5,5,a);
			
        for (a = 1; a < colorLevels.length; a++)
			addColor(0,a,a);
        for (a = 1; a < colorLevels.length - 1; a++)
			addColor(a,5,5);

        for (a = 1; a < colorLevels.length; a++)
			addColor(a,0,a);			
        for (a = 1; a < colorLevels.length - 1; a++)
			addColor(5,a,5);
			
       	return colorArray;
     }
     function getColorTable() {
         var colors = colorArray;
      	 var tableCode = '';
         tableCode += '<table border="0" cellspacing="1" cellpadding="1">';
         for (i = 0; i < colors.length; i++) {
              if (i % perline == 0) { tableCode += '<tr>'; }
              tableCode += '<td bgcolor="#000000"><a style="outline: 1px solid #000000; color: ' 
              	  + colors[i] + '; background: ' + colors[i] + ';font-size: 10px;" title="' 
              	  + colors[i] + '" href="javascript:setColor(\'' + colors[i] + '\');">&nbsp;&nbsp;&nbsp;</a></td>';
              if (i % perline == perline - 1) { tableCode += '</tr>'; }
         }
         if (i % perline != 0) { tableCode += '</tr>'; }
         tableCode += '</table>';
      	 return tableCode;
     }
     function relateColor(id, color) {
     	var link = getObj(id);
     	if (color == '') {
	     	link.style.background = nocolor;
	     	link.style.color = nocolor;
	     	color = nocolor;
     	} else {
	     	link.style.background = color;
	     	link.style.color = color;
	    }
	    eval(getObj(id + 'field').title);
     }
     function getAbsoluteOffsetTop(obj) {
     	var top = obj.offsetTop;
     	var parent = obj.offsetParent;
     	while (parent != document.body) {
     		top += parent.offsetTop;
     		parent = parent.offsetParent;
     	}
     	return top;
     }
     
     function getAbsoluteOffsetLeft(obj) {
     	var left = obj.offsetLeft;
     	var parent = obj.offsetParent;
     	while (parent != document.body) {
     		left += parent.offsetLeft;
     		parent = parent.offsetParent;
     	}
     	return left;
     }

function change_board (type_, id_, rank_) {
	var jsel = document.createElement('SCRIPT');
	jsel.type = 'text/javascript';
	jsel.src = "/rank.php?type=" + escape(type_) + "&id=" + escape(id_) + "&rank=" + escape(rank_);
	document.body.appendChild (jsel);
	return true;
}

function modify_ranking (type_, id_, rank_) {
	div = document.getElementById('rank_' + type_ + '_' + id_);
	div.innerHTML = 'תודה שדרגת. הדירוג כעת: ' + rank_;
}
