
var levelData = new Array(
		/* Easy */
		"E_ao0300BAc00wi400wi400BAc00801-gee2513l",
		"E_98b8b09cbcbBAAAc99c9c08989-bb7aF",
		"E_ar3r3EAIAcEAAAc0BIA10819-ggcfb6jbz9a",
		"E_frrr3EAAAcEAAAc0xxx10888-a8dbfjcxF",
		"E_5or300BAc00BAc00Bc100Bs300BAc00BAc00891-rt95dceaa7hl",
		"E_bo_2rzr3EAAAcEAIAcEAIAc0c194-alg5k9gvafga",
		"E_br300UAs00BAA1EAxBc89889-9i5g48e6a-65a5b6na4",
		"E_bo3_2D400EA400EA4_2B4_281-ei9e9j8",
		"E_a8rb00EAc00EAc00EAc00EAc00899-gece9d5",
		"E_5b083EA1Bc8soocEAzDc0BAA10EAc_291-e8a48gec53ch8",
		"E_a3r338YAscEAAAc0x9x10808-48ae9cc3z",
		"E08r100EA100EA100EA100EA100EA100EA100EA100EA100891-DFge3acb26",
		"E_2b_2HA00UAc00Bc100Bc_2Bc_2Bc300EAc_2FA_39-5rb6ocfg25ad",
		"E_aprb00BAA00BAc00BAc00BAA00999-phrfjipq-fhlrsnjn",
		"E_6o_2rzr3EAAAcEAIAcEAIAc8c99c01001-eoni7h9Bi9n5",
		"E_for00oDAr0BAAA1BAAA199991-ech46ga7rv",
		"E_aprb00BAc00BAc00BAc00BAc00999-fjoggdkp",
		"E00o3_2D400EA400EA400EA400EA400EA400EA4_2B4_281-BFgtbhecf6b",
		"E00r900EAc00EA100EA3_2Bc_2Dc00EA100EA100EAc_291-cG7g9a67a78d",
		"E00p300EA4_2B4_2D400EA400EA4_2B4_2B400EA4_291-FDcb88jha76",
		"E_bo300oDs00BAA1EAAA109Bc_281-cr25d9rp9",

		/* Medium */
		"M_2b00rXA1EAAA1EAA40EA_2EArr3EAAAc0BAAc089x1_28-gnt9dbrmad9b5f8wo",
		"M0pb100BA100Bsb00BAc00BAc00BAc00BAc00Bc900BA100991-HFc9aimhdibm",
		"M_5o3r00BIA10DAA3EA3DcEAIAc0BIA10x1x10808-p95o95i69776eai8d",
		"M_aorr00BAA10DAA3EAAAcEAAAc8400c-henmdhrgiyx",
		"M_98b_28sb00EAsrbEAAAcEAAAcEAAAc89999-ecqc8gjmzFv",
		"M_br300UAs00DAA3EAAAcEAAAcEAAAc89999-sonhenufguvB",
		"M_78b8rrpcEAAAcEAADcEABAcEAFAc89899-uhlfbkzn974qae",
		"M_5rrr3EAAAcEAAAcEAAAcEAAAc0FAc10044-lcwkupkxFwyd",
		"M_5orr00BAA10BAA10BAA40BAA10BAA10EAc_29c-gCxssinzoqj",
		"M0rr30EAAs0EAAA10FAA10EAs30UAAc0BAAc0x991091-68yqxr5wf7a7m8v",
		"M00rp00EAA10EAx10UA900BA100BA100EAp00EAx10EAA10099-BE8g7cehf43ej",
		"M009100EAc00UAc00BAc00BAc00BAc00BAc00EAc00EAc_291-zEAc9ieqjddj",
		"M_ar3r3EAYAcEAAAcEAAAcEAAAc09991-hjmielibgDxs",
		"M_98rrr3EAAA4EAAA4EAAA0EAw00EA-elkhnh7uFx35",
		"M_7r_2UA100DA10EAz10EAA18XAA1BAAA1EA99009-dp9ialahk4j8v6",
		"M_5rr30EAAs0EAAA10BAA10oBA10BA900x9_2Bc_281-6cemiokqolgd9",
		"M0p300EAs_2BA300EAc00UAs00BAA10BAA30xBAc08EAc_299-bxinbqnamtmrcml",
		"M0op300BAc00xBc008Dc00EAc00EAc00oBc00xBc00BAc00891-eGHj7dak98c8i",
		"M_cr30oXA40DAA4EAAA4EAAA4EAAA4-pukslncsfvxC",
		"M0r3r3EAYAcEAAAc0BAA10EAc00EAc00EAc00EAc_291-5kABaaedvytgdef",
		"M_48rr00EAA30EAAs0EAAA1EAAAc0BA990EA1_2x1_281-fspzdgyetwg4",

		/* Hard */
		"H0or300DAc0UAAA1Bc9BcBc0BcBc0BcBsrDcEAAA10BAc00891-24689zki78g4e45gc8d8qt",
		"Hoorr0xBAA1BAAA18FAA10EAA10EAA10EAA10EAA100Bc_281-b2zHBwrujlhigc",
		"H_6r300EAc00UAs00DAA3EAAAcEAAAcEAAAcEAAAc09991-xBsdfhtelszEDB",
		"H_48rrrbEAAAcEAAAcEAAAcEAAAcEAAAc8cx9c89999-xwkzphnsuBDz",
		"H0orr00BAA10BAA10BAA10EAA10UAA10BAA10BAA10BAA10899-mEGFAsylin6jqg",
		"H8r100EA900EAcr1VAYA1BADA1BAAA1BAAA199BA100BA100991-xsa5rufd8qgfczAib",
		"H0rrr0EAAA1EAAA1EAA90EAA10EAx30EABc0EAAc08cBc00181-GxkC9auwanceedm2",
		"H_5rrr3EAAAcEAAAcEAAAcEAAAcEAIAc09191-rtknqnoCBAD9e",
		"H0orr00BAA10BAA10BAc00EAc00UAc00BAs00BAA10BAA10899-8GEH6qfgnidjdti",
		"H0r0r3EAVA4EAAAcEADAcEAA91EAA10EAc00EAc_2BA10089-rzfjh7flz8nknegbf-FBmb79bqr7nytjlgj",
		"H_5o1_2Dso3EAzDcEAAAcEAAAcEAAAcEAAAc09991-yggjns5n5pBzDx",
		"H_5orr00BAA10DAA3EAAAcEAAAcEAxBcEA9BcEA1Bc09081-vrhoyxiqotEcag35c",
		"H0or100BAc00BA100UAr00BAA10BAA30BAsc0BAAc0BAA10899-cHDmj5kgdomal3si-2BE9i7svcnucheAy",
		"H_48rrrbEAAAcEAAAcEAAAcEAAAc8IAcc8FAc90899-uevwrkrFAytcj",
		"H_6r300XAs0EAAA1EAAA3EAAAcEAAAcEAAA10999-zxotbumyC5xux",
		"H_5rrr3EAAAcEAAAcEAAAc0BABcEAAb10FAc_2Bc_281-cpnsnleFswbcj7d2",
		"H_5rrr3EAAAcEAAAcEAAAcEAAAcEAAAc0FAc10091-loyqzsmzBtExh",
		"H0orb00BAA10BAc00BAs00BAA10BAA10BAc00BAc00BAA10899-ECFBncrcpklfu",
		"H_5orr00BAA10BAA10XAs3EAAAcEAAAc0BAA10EAc_291-9Fszfskcdl5bAzuh",
		"H_5r3o1EAsDcEAAA3EAAAcEAAAcEAAA1EAcBc09181-zqyvdsgju2Axzi6",
		"HprrrrBAAAkBAAAkBAAAABAAAABAAAsBAAAkBAAAkBAAAAlyIiA-IIIIHIIIeI8I0IIEgI6I5Ic06l38"
	);

var activeBox = "";
var currentLevel = 1;
var currentMode = "E";

var TRUE = 1;
var FALSE = 0;

function main()
{
	var contentH = "";
	var contentM = "";
	var contentE = "";
	for (var i = 0; i < levelData.length; i++)
	{
		switch (levelData[i].substr(0, 1))
		{
			case "E":
				contentE += '<img id="level' + i + 'Img" class="levelIconDiv" src="images/puzzles/' + levelData[i].substr(1, levelData[i].indexOf("-") - 1) + '.gif" width="40" height="40" alt="" onmouseover="setOpacity(this, 0.8);" onmouseout="setOpacity(this, document.getElementById(\'level\' + currentLevel + \'Img\') == this ? 1.0 : 0.2);" onclick="loadLevel(' + i + ');" />';
				break;
			case "M":
				contentM += '<img id="level' + i + 'Img" class="levelIconDiv" src="images/puzzles/' + levelData[i].substr(1, levelData[i].indexOf("-") - 1) + '.gif" width="40" height="40" alt="" onmouseover="setOpacity(this, 0.8);" onmouseout="setOpacity(this, document.getElementById(\'level\' + currentLevel + \'Img\') == this ? 1.0 : 0.2);" onclick="loadLevel(' + i + ');" />';
				break;
			case "H":
				contentH += '<img id="level' + i + 'Img" class="levelIconDiv" src="images/puzzles/' + levelData[i].substr(1, levelData[i].indexOf("-") - 1) + '.gif" width="40" height="40" alt="" onmouseover="setOpacity(this, 0.8);" onmouseout="setOpacity(this, document.getElementById(\'level\' + currentLevel + \'Img\') == this ? 1.0 : 0.2);" onclick="loadLevel(' + i + ');" />';
				break;
		}
	}
	document.getElementById("levelListHDiv").innerHTML = contentH;
	document.getElementById("levelListMDiv").innerHTML = contentM;
	document.getElementById("levelListEDiv").innerHTML = contentE;

	showLevelList(currentMode);
	loadLevel(0);
}

function loadLevel(levelNo)
{
	if (levelNo != currentLevel)
	{
		setOpacity(document.getElementById("level" + currentLevel + "Img"), 0.2);
		currentLevel = levelNo;
		setOpacity(document.getElementById("level" + currentLevel + "Img"), 1.0);
	}

	document.getElementById("solvedImg").style.visibility = "hidden";
	document.getElementById("chooserImg").style.visibility = "hidden";
	activeBox = "";

	var content = "";
	for (var y = 0; y <= 9; y++)
	{
		for (var x = 0; x <= 9; x++)
		{
			content += '<div id="box' + x + 'x' + y + 'Div" style="position:absolute; width:60px; height:60px; left:' + ((x * 46) - 1) + 'px; top:' + ((y * 46) - 1) + 'px;"></div>';
		}
	}
	document.getElementById("contentDiv").innerHTML = content;

	var box;
	for (var y = 0; y <= 9; y++)
	{
		for (var x = 0; x <= 9; x++)
		{
			box = document.getElementById("box" + x + "x" + y + "Div");

			box.value = 0;
			box.vSum = 0;
			box.vSolved = FALSE;
			box.hSum = 0;
			box.hSolved = FALSE;
			box.className = "";
		}
	}

	// Decode Puzzle Data
	
	var levelMap = "";
	var levelMapComp = levelData[levelNo].substr(1, levelData[levelNo].indexOf("-") - 1);
	var levelVal = levelData[levelNo].substr(levelData[levelNo].indexOf("-") + 1);
	var compressLookup = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

	var i = 0;
	while (true)
	{
		i = levelMapComp.indexOf("_");
		if (i == -1)
		{
			break;
		}
		else if (i == 0)
		{
			levelMapComp = "0000000000000000000000000000000000000000000000000000000000000000".substr(0, compressLookup.indexOf(levelMapComp.charAt(i + 1)) + 1) + levelMapComp.substr(i + 2);
		}
		else
		{
			levelMapComp = levelMapComp.substr(0, i) + "0000000000000000000000000000000000000000000000000000000000000000".substr(0, compressLookup.indexOf(levelMapComp.charAt(i + 1)) + 1) + levelMapComp.substr(i + 2);
		}
	}

	levelMapComp += "000000";

	var decVal;
	for (var i = 0; i < levelMapComp.length; i++)
	{
		decVal = compressLookup.indexOf(levelMapComp.charAt(i));
		if (decVal & 1) { levelMap += "1" } else { levelMap += "0" }
		if (decVal & 2) { levelMap += "1" } else { levelMap += "0" }
		if (decVal & 4) { levelMap += "1" } else { levelMap += "0" }
		if (decVal & 8) { levelMap += "1" } else { levelMap += "0" }
		if (decVal & 16) { levelMap += "1" } else { levelMap += "0" }
		if (decVal & 32) { levelMap += "1" } else { levelMap += "0" }
	}

	var x = 0;
	var y = 0;
	var z = 0;

	for (var i = 0; i < levelMap.length; i += 3)
	{
		switch (levelMap.substr(i, 3))
		{
			case "000": // Empty
				break;
			case "001": // White
				document.getElementById("box" + x + "x" + y + "Div").className = "boxWhiteClass";
				break;
			case "010": // White with preset number
				document.getElementById("box" + x + "x" + y + "Div").className = "boxWhiteClass";
				document.getElementById("box" + x + "x" + y + "Div").value = compressLookup.indexOf(levelVal.charAt(z)) + 1;
				z++;
				break;
			case "011": // Reserved
				break;
			case "100": // Black, empty
				document.getElementById("box" + x + "x" + y + "Div").className = "boxBlackClass";
				break;
			case "101": // Black, horizontal
				document.getElementById("box" + x + "x" + y + "Div").className = "boxBlackClass";
				document.getElementById("box" + x + "x" + y + "Div").hSum = compressLookup.indexOf(levelVal.charAt(z)) + 1;
				z++;
				break;
			case "110": // Black, vertical
				document.getElementById("box" + x + "x" + y + "Div").className = "boxBlackClass";
				document.getElementById("box" + x + "x" + y + "Div").vSum = compressLookup.indexOf(levelVal.charAt(z)) + 1;
				z++;
				break;
			case "111": // Black, horizontal/vertical
				document.getElementById("box" + x + "x" + y + "Div").className = "boxBlackClass";
				document.getElementById("box" + x + "x" + y + "Div").hSum = compressLookup.indexOf(levelVal.charAt(z)) + 1;
				document.getElementById("box" + x + "x" + y + "Div").vSum = compressLookup.indexOf(levelVal.charAt(z + 1)) + 1;
				z += 2;
				break;
		}
		x++;
		if (x == 10) { x = 0; y++; }
	}

	// Build Puzzle
	
	for (var y = 0; y <= 9; y++)
	{
		for (var x = 0; x <= 9; x++)
		{
			box = document.getElementById("box" + x + "x" + y + "Div");

			if (box.className == "boxWhiteClass")
			{
				box.innerHTML = '<img id="box' + x + 'x' + y + 'Img" src="images/blank.gif" width="48" height="48" alt="" />';
				if (box.value > 0)
				{
					document.getElementById("box" + x + "x" + y + "Div").style.backgroundImage = "url(images/box_fixed.png)";
					document.getElementById("box" + x + "x" + y + "Img").style.backgroundImage = "url(images/box_" + box.value + ".png)";
				}
				else
				{
					box.style.cursor = "pointer";
					box.onclick = function() { boxActivate(this.id); }
				}
			}
			else if (box.className == "boxBlackClass")
			{
				if (box.vSum > 0 && box.hSum > 0)
				{
					box.innerHTML = '<div id="box' + x + 'x' + y + 'VSumDiv" class="vSumClass">' + box.vSum + '</div>' +
					                '<div id="box' + x + 'x' + y + 'VCurDiv" class="vCurClass"></div>' +
					                '<div id="box' + x + 'x' + y + 'HSumDiv" class="hSumClass">' + box.hSum + '</div>' +
					                '<div id="box' + x + 'x' + y + 'HCurDiv" class="hCurClass"></div>';
					box.style.backgroundImage = "url(images/black_hv.png)";
				}
				else if (box.vSum > 0)
				{
					box.innerHTML = '<div id="box' + x + 'x' + y + 'VSumDiv" class="vSumClass">' + box.vSum + '</div>' +
					                '<div id="box' + x + 'x' + y + 'VCurDiv" class="vCurClass"></div>';
					box.style.backgroundImage = "url(images/black_v.png)";
				}
				else if (box.hSum > 0)
				{
					box.innerHTML = '<div id="box' + x + 'x' + y + 'HSumDiv" class="hSumClass">' + box.hSum + '</div>' +
					                '<div id="box' + x + 'x' + y + 'HCurDiv" class="hCurClass"></div>';
					box.style.backgroundImage = "url(images/black_h.png)";
				}
				else
				{
					box.style.backgroundImage = "url(images/black.png)";
				}
			}
		}
	}
}

function boxActivate(id)
{
	if (activeBox != "")
	{
		document.getElementById(activeBox + "Div").style.backgroundImage = "url(images/white.png)";
	}

	var x = id.substr(3, 1);
	var y = id.substr(5, 1);
	activeBox = "box" + x + "x" + y;
	
	var chooserStyle = document.getElementById("chooserImg").style
	chooserStyle.left = ((x * 46) - 12) + "px";
	chooserStyle.top = ((y * 46) - 12) + "px";
	chooserStyle.visibility = "visible";
	
	document.getElementById(activeBox + "Div").style.backgroundImage = "url(images/box_marked.png)";
}

document.onkeypress = function(e)
{
	if (activeBox == "") return;

	var keyCode;
	
	if (window.event)
	{
		keyCode = window.event.keyCode;
	}
	else
	{
		keyCode = e.charCode;
	}

	if (keyCode >= 48 && keyCode <= 57)
	{
		setValue(keyCode - 48);
	}
}

function setValue(value)
{
	document.getElementById("chooserImg").style.visibility = "hidden";

	if (value == 0)
	{
		document.getElementById(activeBox + "Img").style.backgroundImage = "url(images/blank.gif)";
		document.getElementById(activeBox + "Div").value = 0;
		
		calc(activeBox.substr(3, 1), activeBox.substr(5, 1));
	}
	else
	{
		document.getElementById(activeBox + "Img").style.backgroundImage = "url(images/box_" + value + ".png)";
		document.getElementById(activeBox + "Div").value = value;
		
		calc(activeBox.substr(3, 1), activeBox.substr(5, 1));

		var box;
		for (var y = 0; y <= 9; y++)
		{
			for (var x = 0; x <= 9; x++)
			{
				box = document.getElementById("box" + x + "x" + y + "Div");
				if (!(
					((box.vSum == 0) || (box.vSum != 0 && box.vSolved == TRUE)) &&
					((box.hSum == 0) || (box.hSum != 0 && box.hSolved == TRUE))
				))
				{
					return;
				}
			}
		}
		
		document.getElementById("solvedImg").style.visibility = "visible";
	}
}

function calc(x, y)
{
	var i, j;
	var value;

	// Horizontal

	for (i = x; i >= 0; i--)
	{
		if (document.getElementById("box" + i + "x" + y + "Div").className != "boxWhiteClass")
		{
			if (document.getElementById("box" + i + "x" + y + "Div").className == "boxBlackClass")
			{
				if (document.getElementById("box" + i + "x" + y + "Div").hSum == 0)
				{
					break;
				}

				for (j = x; j <= 9; j++)
				{
					if (document.getElementById("box" + j + "x" + y + "Div").className != "boxWhiteClass")
					{
						break;
					}
				}
				j--;

				value = 0;
				for (var k = i + 1; k <= j; k++)
				{
					value += document.getElementById("box" + k + "x" + y + "Div").value;

					for (var l = k + 1; l <= j; l++)
					{
						if (document.getElementById("box" + k + "x" + y + "Div").value > 0 && document.getElementById("box" + l + "x" + y + "Div").value > 0)
						{
							if (document.getElementById("box" + k + "x" + y + "Div").value == document.getElementById("box" + l + "x" + y + "Div").value)
							{
								value += 1000;
								break;
							}
						}
					}
				}

				if (value == 0)
				{
					document.getElementById("box" + i + "x" + y + "HSumDiv").style.color = "#CCC6BC";
					document.getElementById("box" + i + "x" + y + "HSumDiv").style.fontWeight = "normal";
					document.getElementById("box" + i + "x" + y + "HCurDiv").innerHTML = "";
					document.getElementById("box" + i + "x" + y + "Div").hSolved = FALSE;
				}
				else if (value > 1000)
				{
					document.getElementById("box" + i + "x" + y + "HSumDiv").style.color = "#CCC600";
					document.getElementById("box" + i + "x" + y + "HSumDiv").style.fontWeight = "normal";
					document.getElementById("box" + i + "x" + y + "HCurDiv").innerHTML = "*";
					document.getElementById("box" + i + "x" + y + "Div").hSolved = FALSE;
				}
				else if (value == document.getElementById("box" + i + "x" + y + "Div").hSum)
				{
					document.getElementById("box" + i + "x" + y + "HSumDiv").style.color = "#00C600";
					document.getElementById("box" + i + "x" + y + "HSumDiv").style.fontWeight = "bold";
					document.getElementById("box" + i + "x" + y + "HCurDiv").innerHTML = "";
					document.getElementById("box" + i + "x" + y + "Div").hSolved = TRUE;
				}
				else
				{
					document.getElementById("box" + i + "x" + y + "HSumDiv").style.color = "#CC0000";
					document.getElementById("box" + i + "x" + y + "HSumDiv").style.fontWeight = "normal";
					document.getElementById("box" + i + "x" + y + "HCurDiv").innerHTML = value;
					document.getElementById("box" + i + "x" + y + "Div").hSolved = FALSE;
				}
			}

			break;
		}
	}
	
	// Vertical

	for (i = y; i >= 0; i--)
	{
		if (document.getElementById("box" + x + "x" + i + "Div").className != "boxWhiteClass")
		{
			if (document.getElementById("box" + x + "x" + i + "Div").className == "boxBlackClass")
			{
				if (document.getElementById("box" + x + "x" + i + "Div").vSum == 0)
				{
					break;
				}

				for (j = y; j <= 9; j++)
				{
					if (document.getElementById("box" + x + "x" + j + "Div").className != "boxWhiteClass")
					{
						break;
					}
				}
				j--;

				value = 0;
				for (var k = i + 1; k <= j; k++)
				{
					value += document.getElementById("box" + x + "x" + k + "Div").value;
					
					for (var l = k + 1; l <= j; l++)
					{
						if (document.getElementById("box" + x + "x" + k + "Div").value > 0 && document.getElementById("box" + x + "x" + l + "Div").value > 0)
						{
							if (document.getElementById("box" + x + "x" + k + "Div").value == document.getElementById("box" + x + "x" + l + "Div").value)
							{
								value += 1000;
								break;
							}
						}
					}
				}

				if (value == 0)
				{
					document.getElementById("box" + x + "x" + i + "VSumDiv").style.color = "#CCC6BC";
					document.getElementById("box" + x + "x" + i + "VSumDiv").style.fontWeight = "normal";
					document.getElementById("box" + x + "x" + i + "VCurDiv").innerHTML = "";
					document.getElementById("box" + x + "x" + i + "Div").vSolved = FALSE;
				}
				else if (value > 1000)
				{
					document.getElementById("box" + x + "x" + i + "VSumDiv").style.color = "#CCC600";
					document.getElementById("box" + x + "x" + i + "VSumDiv").style.fontWeight = "normal";
					document.getElementById("box" + x + "x" + i + "VCurDiv").innerHTML = "*";
					document.getElementById("box" + x + "x" + i + "Div").vSolved = FALSE;
				}
				else if (value == document.getElementById("box" + x + "x" + i + "Div").vSum)
				{
					document.getElementById("box" + x + "x" + i + "VSumDiv").style.color = "#00C600";
					document.getElementById("box" + x + "x" + i + "VSumDiv").style.fontWeight = "bold";
					document.getElementById("box" + x + "x" + i + "VCurDiv").innerHTML = "";
					document.getElementById("box" + x + "x" + i + "Div").vSolved = TRUE;
				}
				else
				{
					document.getElementById("box" + x + "x" + i + "VSumDiv").style.color = "#CC0000";
					document.getElementById("box" + x + "x" + i + "VSumDiv").style.fontWeight = "normal";
					document.getElementById("box" + x + "x" + i + "VCurDiv").innerHTML = value;
					document.getElementById("box" + x + "x" + i + "Div").vSolved = FALSE;
				}
			}

			break;
		}
	}
}

function setOpacity(element, opacity)
{
	element.style.opacity = opacity;
	element.style.MozOpacity = opacity;
	element.style.KhtmlOpacity = opacity;

	// IE does not support multiple opacities
	if (element.id == "levelDiv") return;

	element.style.filter = "Alpha(style=0, opacity=" + (opacity * 100) + ")";
}

function showLevelList(Mode)
{
	switch (Mode)
	{
		case "H":
			setOpacity(document.getElementById("levelHardImg"), 1.0);
			setOpacity(document.getElementById("levelMediumImg"), 0.3);
			setOpacity(document.getElementById("levelEasyImg"), 0.3);

			document.getElementById("levelListHDiv").style.visibility = "visible";
			document.getElementById("levelListMDiv").style.visibility = "hidden";
			document.getElementById("levelListEDiv").style.visibility = "hidden";
			break;
		case "M":
			setOpacity(document.getElementById("levelHardImg"), 0.3);
			setOpacity(document.getElementById("levelMediumImg"), 1.0);
			setOpacity(document.getElementById("levelEasyImg"), 0.3);

			document.getElementById("levelListHDiv").style.visibility = "hidden";
			document.getElementById("levelListMDiv").style.visibility = "visible";
			document.getElementById("levelListEDiv").style.visibility = "hidden";
			break;
		case "E":
			setOpacity(document.getElementById("levelHardImg"), 0.3);
			setOpacity(document.getElementById("levelMediumImg"), 0.3);
			setOpacity(document.getElementById("levelEasyImg"), 1.0);

			document.getElementById("levelListHDiv").style.visibility = "hidden";
			document.getElementById("levelListMDiv").style.visibility = "hidden";
			document.getElementById("levelListEDiv").style.visibility = "visible";
			break;
	}

	currentMode = Mode;
}